<?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>221105</bug_id>
          
          <creation_ts>2021-01-28 14:30:24 -0800</creation_ts>
          <short_desc>Extract color model and transfer functions into their own files</short_desc>
          <delta_ts>2021-01-29 10:49:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1723502</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-28 14:30:24 -0800</bug_when>
    <thetext>Extract color model and transfer functions into their own files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723503</commentid>
    <comment_count>1</comment_count>
      <attachid>418670</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-28 14:32:48 -0800</bug_when>
    <thetext>Created attachment 418670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723507</commentid>
    <comment_count>2</comment_count>
      <attachid>418671</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-28 14:34:46 -0800</bug_when>
    <thetext>Created attachment 418671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723537</commentid>
    <comment_count>3</comment_count>
      <attachid>418678</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-28 16:16:38 -0800</bug_when>
    <thetext>Created attachment 418678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723539</commentid>
    <comment_count>4</comment_count>
      <attachid>418679</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-28 16:28:12 -0800</bug_when>
    <thetext>Created attachment 418679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723587</commentid>
    <comment_count>5</comment_count>
      <attachid>418693</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-28 19:00:27 -0800</bug_when>
    <thetext>Created attachment 418693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723611</commentid>
    <comment_count>6</comment_count>
      <attachid>418693</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-28 20:14:35 -0800</bug_when>
    <thetext>Comment on attachment 418693
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Things are getting a bit cramped in ColorTypes.h and ColorConversions.
&gt; +        This extracts the color models into ColorModel.h and gamma transfer 
&gt; +        functions into ColorTransferFunction.h and generalized the transfer
&gt; +        functions a bit to reduce the code size.

Should the new filenames be pluralized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723734</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-29 08:57:48 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; Comment on attachment 418693 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418693&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        Things are getting a bit cramped in ColorTypes.h and ColorConversions.
&gt; &gt; +        This extracts the color models into ColorModel.h and gamma transfer 
&gt; &gt; +        functions into ColorTransferFunction.h and generalized the transfer
&gt; &gt; +        functions a bit to reduce the code size.
&gt; 
&gt; Should the new filenames be pluralized?

Yeah, that would be more consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723735</commentid>
    <comment_count>8</comment_count>
      <attachid>418732</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-29 08:59:30 -0800</bug_when>
    <thetext>Created attachment 418732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723783</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-29 10:48:20 -0800</bug_when>
    <thetext>Committed r272066: &lt;https://trac.webkit.org/changeset/272066&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418732.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723784</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-29 10:49:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/73761809&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418670</attachid>
            <date>2021-01-28 14:32:48 -0800</date>
            <delta_ts>2021-01-28 14:34:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221105-20210128143247.patch</filename>
            <type>text/plain</type>
            <size>30926</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAxLTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IGNvbG9yIG1vZGVsIGFu
ZCB0cmFuc2ZlciBmdW5jdGlvbnMgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaW5ncyBhcmUgZ2V0dGluZyBhIGJp
dCBjcmFtcGVkIGluIENvbG9yVHlwZXMuaCBhbmQgQ29sb3JDb252ZXJzaW9ucy4KKyAgICAgICAg
VGhpcyBleHRyYWN0cyB0aGUgY29sb3IgbW9kZWxzIGludG8gQ29sb3JNb2RlbC5oIGFuZCBnYW1t
YSB0cmFuc2ZlciAKKyAgICAgICAgZnVuY3Rpb25zIGludG8gQ29sb3JUcmFuc2ZlckZ1bmN0aW9u
LmggYW5kIGdlbmVyYWxpemVkIHRoZSB0cmFuc2ZlcgorICAgICAgICBmdW5jdGlvbnMgYSBiaXQg
dG8gcmVkdWNlIHRoZSBjb2RlIHNpemUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaDoKKyAgICAgICAgTW92ZSBjb2RlIHRvIG5ldyBmaWxlcy4KKwogMjAyMS0wMS0yOCAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGxvZ2ljYWwgdmFyaWFudHMgb2YgJ3Njcm9sbC1wYWRkaW5nJyBhbmQgJ3Njcm9s
bC1tYXJnaW4nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3MjAzMykKKysrIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNTQsOCArMTE1
NCwxMCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckhhc2guaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvck1vZGVsLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlh
bGl6YXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JUeXBlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5MDgsNiArMzkwOCw4IEBACiAJCUJDMDZFREU0
MEJGRDZEMEQwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNlbGxFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RURFMjBCRkQ2RDBEMDA4NTZF
OUQgLyogSlNIVE1MVGFibGVDZWxsRWxlbWVudC5oICovOyB9OwogCQlCQzA2RUUwNTBCRkQ3MUFB
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RUUwMzBCRkQ3MUFBMDA4NTZFOUQgLyogSlNIVE1M
VGFibGVFbGVtZW50LmggKi87IH07CiAJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9h
dENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEwMTM3QzI1QzM2
MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMxMDEzN0IyNUMzNjI0QjAwREM3NzNDIC8qIENvbG9yTW9kZWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEw
MTM3RjI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEwMTM3RTI1QzM2MzE2MDBE
Qzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxMEQ3NjgxN0Q4RUU3MTAwNUUyNjI2IC8qIFJl
bmRlckJsb2NrRmxvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGQjQ1RjMxN0Q4RTM5MjAwNDQ0NDQ2IC8qIFJlbmRlckJsb2NrRmxvdy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMTI0RUU4MEMy
NjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVFNTBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oICov
OyB9OwogCQlCQzEyNEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJQcm9wLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVGRTBDMjY0NDdBMDA5
RTIzNDkgLyogSlNCYXJQcm9wLmggKi87IH07CkBAIC0xMzg5Miw2ICsxMzg5NCw4IEBACiAJCUJD
MDZGMjRDMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFRQcm9jZXNzb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJD
MDZGMjREMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252
ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdENvbnZlcnNp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxMDEzN0IyNUMzNjI0QjAwREM3
NzNDIC8qIENvbG9yTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNb2RlbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQzEwMTM3RTI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JU
cmFuc2ZlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yVHJhbnNmZXJGdW5jdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzEyNEVFNDBDMjY0MUNEMDA5RTIzNDkg
LyogQmFyUHJvcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFy
UHJvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU1MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
YXJQcm9wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU2MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmFyUHJvcC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTkxMCw4ICsyMTkxNCw4IEBACiAJ
CQkJNDQ1Nzc1RTQyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaCAqLywKIAkJCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZS5tbSAqLywKIAkJCQkxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9n
Z2luZ01hYy5tbSAqLywKLQkJCQlDRDhBQ0E4QzFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFSZW1v
dGVTb2Z0TGluay5tbSAqLywKIAkJCQlDRDhBQ0E4RDFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFS
ZW1vdGVTb2Z0TGluay5oICovLAorCQkJCUNEOEFDQThDMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRp
YVJlbW90ZVNvZnRMaW5rLm1tICovLAogCQkJCTkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBO
U1Njcm9sbGVySW1wRGV0YWlscy5oICovLAogCQkJCTUyRjUyRTEwMTRBMDEzNEYwMEFDQzM5NyAv
KiBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSAqLywKIAkJCQk0QjI3MDk4MTBBRjJFNUUwMDA2NTEy
N0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLywKQEAgLTI2NTY5LDEwICsyNjU3MywxMiBAQAogCQkJ
CTdDNTE0RTAwMjRBRjgwNTgwMDUwNzEwRiAvKiBDb2xvckNvbnZlcnNpb24uaCAqLywKIAkJCQkz
MTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCiAJCQkJN0NBQzZBRTgy
NDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmggKi8sCisJCQkJQkMxMDEzN0IyNUMzNjI0
QjAwREM3NzNDIC8qIENvbG9yTW9kZWwuaCAqLywKIAkJCQk3Q0QxRTY5MjI0QUJGNjI0MDA4OUM0
MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmNwcCAqLywKIAkJCQk3Q0QxRTY5MTI0QUJGNjI0MDA4
OUM0MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmggKi8sCiAJCQkJQkNBRkVEQUYyNTk2NkQwNTAw
MzBFNkFBIC8qIENvbG9yU3BhY2UuY3BwICovLAogCQkJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1
MiAvKiBDb2xvclNwYWNlLmggKi8sCisJCQkJQkMxMDEzN0UyNUMzNjMxNjAwREM3NzNDIC8qIENv
bG9yVHJhbnNmZXJGdW5jdGlvbi5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAv
KiBDb2xvclR5cGVzLmggKi8sCiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9y
VXRpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkU2Qzc2QzFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JV
dGlsaXRpZXMuaCAqLywKQEAgLTI3NDAwLDkgKzI3NDA2LDkgQEAKIAkJCQlDQkI2QjJEMjFDQjdB
REQwMDA5RURFMUEgLyogTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaCAqLywKIAkJCQk1MUFC
RjY0QzE2MzkyRTI4MDAxMzJBN0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwICovLAogCQkJCTUxRTY4
MjBGMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oICovLAorCQkJCUU0N0ZDOEEx
MjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLywKIAkJCQk4NjFDMkVB
MzEzRkI0RkREMDAwNjJBQkIgLyogTG9hZFRpbWluZy5jcHAgKi8sCiAJCQkJOEExMkUzNUMxMUZB
MzMyODAwMjU4MzZBIC8qIExvYWRUaW1pbmcuaCAqLywKLQkJCQlFNDdGQzhBMTI1Qjg0RDcxMDA1
NDk1RkMgLyogTG9hZFNjaGVkdWxpbmdNb2RlLmggKi8sCiAJCQkJQ0VFRkNENzcxOURCMzFGNzAw
Mzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCUNFRUZDRDc4MTlEQjMx
RjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJNTJGMTA4NjIxNjJC
NkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuY3BwICovLApAQCAtMzE0ODYsOSAr
MzE0OTIsMTEgQEAKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBp
biBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8qIENvbG9yTWF0
cml4LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzEwMTM3QzI1QzM2MjRCMDBEQzc3M0MgLyogQ29s
b3JNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMUU2OTMyNEFCRjYyNDAwODlDNDE5IC8q
IENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkRGNTgxMEE4RDVD
OTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUZFREI0MjU5
NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTAx
MzdGMjVDMzYzMTYwMERDNzczQyAvKiBDb2xvclRyYW5zZmVyRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBRjY2QjIzQkZDMzlFMDA0MDMwREEgLyogQ29sb3JVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5J
bmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjM3LDYgKzMzNjQ1LDcgQEAKIAkJCQk5NzU5RTk0
OTE0RUYxRDQ5MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1NkQzNzMyMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFFNjgyMTAxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyogTG9hZFNj
aGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTEyRTM1RDExRkEzMzI4MDAyNTgz
NkEgLyogTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDZFODFFRDcwQUI1RDVFOTAw
Qzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUM0M0RFNkIyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDMzNCw3ICszNDM0Myw2IEBACiAJCQkJNDM2NzA4RDUx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MzY3MDhENzEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RDkxMkQ5Q0E0QjAwMDQ0
MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENSdGNwUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM2NzA4REIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291
cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhERDEyRDlDQTRCMDAwNDQyMzQg
LyogUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOERG
MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzQ0NDgsNiArMzQ0NTYsNyBAQAogCQkJCTA3OEUwOTQyMTdEMTZFMUMwMDQyMEFB
MSAvKiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxOUU2RUM5MjU2NkQyNzgwMDJCNTAxMCAvKiBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI0MTdEMTREMUMwMDQyMEFBMSAvKiBSVENQ
ZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTE0RkUzMjI1QkVC
RDE5MDA5RDlGMjAgLyogUlRDUnRjcFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MkRFNEI4MjE5Mjg1QzAwMDc1RjNBNyAvKiBSVENSdHBDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVFMkM0MzYzMUJDRUUzMkIwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzQzhCMzUyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFJlY2Vp
dmVyV2l0aFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDk0OSw3ICszNDk1OCw2IEBA
CiAJCQkJNzFBNTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNW
R1BvaW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyog
TG9hZFNjaGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4QzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4RjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTkxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNv
bG9yTWF0cml4LmgiCisjaW5jbHVkZSAiQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAwLDEzNiAr
MTAxLDY0IEBAIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8g
TUFSSzogR2FtbWEgY29udmVyc2lvbnMuCiAKLWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246
OmZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCBjKQotewotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0
Pihmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBBOThSR0JUcmFu
c2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGZsb2F0IGMpCi17Ci0gICAgcmV0dXJuIGNs
YW1wVG88ZmxvYXQ+KHRvTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBB
OThSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKLXsK
LSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwotICAgIHJl
dHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgMjU2LjBmIC8gNTYzLjBmKSAqIHNpZ247Ci19Ci0K
LWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQg
YykKLXsKLSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwot
ICAgIHJldHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgNTYzLjBmIC8gMjU2LjBmKSAqIHNpZ247
Ci19Ci0KLWZsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyQ2xhbXBpbmcoZmxv
YXQgYykKLXsKLSAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
eDxmbG9hdD4oMTIuOTJmICogYywgMCk7Ci0KLSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oMS4w
NTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKLX0KLQotZmxv
YXQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKLXsKLSAg
ICBpZiAoYyA8PSAwLjA0MDQ1ZikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihjIC8g
MTIuOTJmLCAwKTsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAu
MDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQotZmxvYXQgU1JHQlRyYW5zZmVyRnVu
Y3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24g
PSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwot
Ci0gICAgaWYgKGMgPCAwLjAwMzEzMDhmKQotICAgICAgICByZXR1cm4gMTIuOTJmICogYyAqIHNp
Z247Ci0KLSAgICByZXR1cm4gKDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAu
MDU1ZikgKiBzaWduOwotfQotCi1mbG9hdCBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykg
PyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwotCi0gICAgaWYgKGMgPD0gMC4w
NDA0NWYpCi0gICAgICAgIHJldHVybiBjIC8gMTIuOTJmICogc2lnbjsKLQotICAgIHJldHVybiBz
dGQ6OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpICogc2lnbjsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gdG9M
aW5lYXJDbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4gdHlwZW5hbWUgVDo6TGluZWFyQ291bnRl
cnBhcnQKLXsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsKLSAgICByZXR1
cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5j
dGlvbjo6dG9MaW5lYXJDbGFtcGluZyhjMiksIFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xh
bXBpbmcoYzMpLCBhbHBoYSB9OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0
aW9uLCB0eXBlbmFtZSBUPiBzdGF0aWMgYXV0byBmcm9tTGluZWFyQ2xhbXBpbmcoY29uc3QgVCYg
Y29sb3IpIC0+IHR5cGVuYW1lIFQ6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0Ci17Ci0gICAgYXV0
byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5j
dGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ckNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMzKSwg
YWxwaGEgfTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5h
bWUgVD4gc3RhdGljIGF1dG8gdG9MaW5lYXJOb25DbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4g
dHlwZW5hbWUgVDo6TGluZWFyQ291bnRlcnBhcnQKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYW5zZmVy
RnVuY3Rpb24sIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGF1dG8gdG9MaW5lYXIoY29uc3Qg
Q29sb3JUeXBlJiBjb2xvcikgLT4gdHlwZW5hbWUgQ29sb3JUeXBlOjpMaW5lYXJDb3VudGVycGFy
dAogewogICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbG9yOwotICAgIHJldHVybiB7
IFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0
aW9uOjp0b0xpbmVhck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhjMyksIGFscGhhIH07CisgICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6
dG9MaW5lYXIoYzEpLCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhcihjMiksIFRyYW5zZmVyRnVu
Y3Rpb246OnRvTGluZWFyKGMzKSwgYWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVHJh
bnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gZnJvbUxpbmVhck5vbkNsYW1w
aW5nKGNvbnN0IFQmIGNvbG9yKSAtPiB0eXBlbmFtZSBUOjpHYW1tYUVuY29kZWRDb3VudGVycGFy
dAordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgQ29sb3JUeXBl
PiBzdGF0aWMgYXV0byB0b0dhbW1hRW5jb2RlZChjb25zdCBDb2xvclR5cGUmIGNvbG9yKSAtPiB0
eXBlbmFtZSBDb2xvclR5cGU6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0CiB7CiAgICAgYXV0byBb
YzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlv
bjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5n
KGMzKSwgYWxwaGEgfTsKKyAgICByZXR1cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0dhbW1hRW5j
b2RlZChjMSksIFRyYW5zZmVyRnVuY3Rpb246OnRvR2FtbWFFbmNvZGVkKGMyKSwgVHJhbnNmZXJG
dW5jdGlvbjo6dG9HYW1tYUVuY29kZWQoYzMpLCBhbHBoYSB9OwogfQogCiAvLyBBOThSR0IgPC0+
IExpbmVhckE5OFJHQiBjb252ZXJzaW9ucy4KIAogTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVh
ckE5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9MaW5l
YXJDbGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CisgICAgcmV0dXJuIHRv
TGluZWFyPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2Rl
OjpDbGFtcGVkPj4oY29sb3IpOwogfQogCiBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IExp
bmVhckE5OFJHQjxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8QTk4UkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6
Q2xhbXBlZD4+KGNvbG9yKTsKIH0KIAogLy8gRGlzcGxheVAzIDwtPiBMaW5lYXJEaXNwbGF5UDMg
Y29udmVyc2lvbnMuCiAKIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyQ2xh
bXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9MaW5lYXI8
U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVk
Pj4oY29sb3IpOwogfQogCiBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29k
ZWQ8U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFt
cGVkPj4oY29sb3IpOwogfQogCiAvLyBFeHRlbmRlZFNSR0JBIDwtPiBMaW5lYXJFeHRlbmRlZFNS
R0JBIGNvbnZlcnNpb25zLgogCiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4
dGVuZGVkU1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJl
dHVybiB0b0xpbmVhck5vbkNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7Cisg
ICAgcmV0dXJuIHRvTGluZWFyPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1
bmN0aW9uTW9kZTo6VW5jbGFtcGVkPj4oY29sb3IpOwogfQogCiBFeHRlbmRlZFNSR0JBPGZsb2F0
PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9y
KQogewotICAgIHJldHVybiBmcm9tTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rp
b24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29kZWQ8U1JHQlRyYW5zZmVyRnVuY3Rp
b248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpVbmNsYW1wZWQ+Pihjb2xvcik7CiB9CiAK
IC8vIFNSR0JBIDwtPiBMaW5lYXJTUkdCQSBjb252ZXJzaW9ucy4KIAogTGluZWFyU1JHQkE8Zmxv
YXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1
cm4gdG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJl
dHVybiB0b0xpbmVhcjxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlv
bk1vZGU6OkNsYW1wZWQ+Pihjb2xvcik7CiB9CiAKIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGZyb21MaW5lYXJDbGFt
cGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNs
YW1wZWQ+Pihjb2xvcik7CiB9CiAKIC8vIE1BUks6IE1hdHJpeCBjb252ZXJzaW9ucyAodG8gYW5k
IGZyb20gWFlaIGZvciBhbGwgbGluZWFyIGNvbG9yIHR5cGVzKS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lv
biAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZl
cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjIgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9yIGNvbG9ycyB0aGF0IGNhbiBiZSBn
YW1tYSBlbmNvZGVkLgotCi1zdHJ1Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3Rh
dGljIGZsb2F0IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRv
TGluZWFyQ2xhbXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0
KTsKLX07Ci0KLXN0cnVjdCBTUkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3RhdGljIGZsb2F0
IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRvTGluZWFyQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxv
YXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0KTsKLX07Ci0K
IC8vIEFsbCBjb2xvciB0eXBlcyBtdXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5n
IGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgogLy8gICAgWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKIC8vICAgIENvbG9yVHlw
ZTxmbG9hdD4gdG9Db2xvclR5cGUoY29uc3QgWFlaQTxmbG9hdD4mKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNb2RlbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBbHBoYVRyYWl0
czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRSYW5nZTsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgSFNMTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSE1vZGVsOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWJNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgUkdCTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFhZWk1vZGVsOworCisK
K3RlbXBsYXRlPD4gc3RydWN0IEFscGhhVHJhaXRzPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBmbG9hdCB0cmFuc3BhcmVudCA9IDAuMGY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dCBvcGFxdWUgPSAxLjBmOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8dWlu
dDhfdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cmFuc3BhcmVudCA9IDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IG9wYXF1ZSA9IDI1NTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvckNvbXBvbmVudFJhbmdlIHsKKyAgICBUIG1pbjsKKyAg
ICBUIG1heDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0s
CisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
bnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIU0xNb2RlbDxmbG9h
dD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdl
PGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDM2MCB9LAorICAgICAgICB7IDAs
IDEwMCB9LAorICAgICAgICB7IDAsIDEwMCB9CisgICAgfSB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTGFi
TW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21w
b25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KKyAgICB9IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTENITW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAg
ICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAg
ICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCisgICAg
ICAgIHsgMCwgMzYwIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52
ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAxIH0sCisgICAgICAgIHsgMCwgMSB9
LAorICAgICAgICB7IDAsIDEgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFJHQk1vZGVsPHVp
bnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRS
YW5nZTx1aW50OF90PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDI1NSB9LAorICAgICAg
ICB7IDAsIDI1NSB9LAorICAgICAgICB7IDAsIDI1NSB9CisgICAgfSB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgWFlaTW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29s
b3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjppbmZpbml0eSgpIH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAor
ICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVy
RnVuY3Rpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9y
IGNvbG9ycyB0aGF0IGNhbiBiZSBnYW1tYSBlbmNvZGVkLgorCitlbnVtIGNsYXNzIFRyYW5zZmVy
RnVuY3Rpb25Nb2RlIDogdWludDhfdCB7CisgICAgQ2xhbXBlZCwKKyAgICBVbmNsYW1wZWQKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1vZGU+CitzdHJ1
Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7CisgICAgc3RhdGljIFQgdG9HYW1tYUVuY29kZWQo
VCk7CisgICAgc3RhdGljIFQgdG9MaW5lYXIoVCk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2RlPgorc3RydWN0IFNSR0JUcmFuc2ZlckZ1bmN0aW9u
IHsKKyAgICBzdGF0aWMgVCB0b0dhbW1hRW5jb2RlZChUKTsKKyAgICBzdGF0aWMgVCB0b0xpbmVh
cihUKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1v
ZGU+IFQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9HYW1tYUVuY29kZWQoVCBjKQoreworICAg
IGF1dG8gc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICBhdXRvIHJl
c3VsdCA9IHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCAyNTYuMGYgLyA1NjMuMGYpICogc2lnbjsKKyAg
ICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQpCisg
ICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihyZXN1bHQsIDAsIDEpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1v
ZGU+IFQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXIoVCBjKQoreworICAgIGF1dG8g
c2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICBhdXRvIHN0ZDo6cG93
KHN0ZDo6YWJzKGMpLCA1NjMuMGYgLyAyNTYuMGYpICogc2lnbjsKKyAgICBpZiBjb25zdGV4cHIg
KG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQpCisgICAgICAgIHJldHVybiBj
bGFtcFRvPGZsb2F0PihyZXN1bHQsIDAsIDEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1vZGU+IFQgU1JHQlRyYW5z
ZmVyRnVuY3Rpb246OnRvR2FtbWFFbmNvZGVkKFQgYykKK3sKKyAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQpIHsKKyAgICAgICAgaWYgKGMgPCAw
LjAwMzEzMDhmKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PFQ+KDEyLjkyZiAqIGMsIDAp
OworCisgICAgICAgIHJldHVybiBjbGFtcFRvPFQ+KDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYg
LyAyLjRmKSAtIDAuMDU1ZiwgMCwgMSk7CisgICAgfQorCisgICAgZmxvYXQgc2lnbiA9IHN0ZDo6
c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICBjID0gc3RkOjphYnMoYyk7CisKKyAgICBp
ZiAoYyA8IDAuMDAzMTMwOGYpCisgICAgICAgIHJldHVybiAxMi45MmYgKiBjICogc2lnbjsKKwor
ICAgIHJldHVybiAoMS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmKSAq
IHNpZ247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1v
ZGU+IFQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyKFQgYykKK3sKKyAgICBpZiBjb25z
dGV4cHIgKG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQpIHsKKyAgICAgICAg
aWYgKGMgPD0gMC4wNDA0NWYpCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KGMg
LyAxMi45MmYsIDApOworCisgICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygo
YyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKKyAgICB9CisKKyAgICBmbG9hdCBz
aWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOworICAgIGMgPSBzdGQ6OmFicyhj
KTsKKworICAgIGlmIChjIDw9IDAuMDQwNDVmKQorICAgICAgICByZXR1cm4gYyAvIDEyLjkyZiAq
IHNpZ247CisKKyAgICByZXR1cm4gc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRm
KSAqIHNpZ247Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMzIgKzI2
LDIzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgorI2lu
Y2x1ZGUgIkNvbG9yTW9kZWwuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IEE5OFJHQjsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQWxwaGFUcmFpdHM7Ci10
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yQ29tcG9uZW50UmFuZ2U7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IERpc3BsYXlQMzsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0
ZW5kZWRSR0JNb2RlbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQTsK
IHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSFNMQTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1
Y3QgSFNMTW9kZWw7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSEE7Ci10ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IExDSE1vZGVsOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWI7
Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExhYk1vZGVsOwogdGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBMaW5lYXJBOThSR0I7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckRp
c3BsYXlQMzsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyRXh0ZW5kZWRTUkdCQTsK
IHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyU1JHQkE7Ci10ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IFJHQk1vZGVsOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdCQTsKIHRl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgWFlaOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBY
WVpNb2RlbDsKLQogCiAvLyBNQVJLOiBNYWtlIGZ1bmN0aW9ucy4KIApAQCAtMTI5LDg2ICsxMjAs
NiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQsCiAgICAgcmV0dXJu
IG1ha2VGcm9tQ29tcG9uZW50czxDb2xvclR5cGU+KENvbG9yQ29tcG9uZW50cyB7IGNsYW1wZWRD
b21wb25lbnQ8Q29sb3JUeXBlLCAwPihjMSksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAx
PihjMiksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAyPihjMyksIGFscGhhIH0pOwogfQog
Ci0vLyBNQVJLOiAtIE1vZGVscwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBbHBoYVRyYWl0czxmbG9h
dD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgdHJhbnNwYXJlbnQgPSAwLjBmOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgb3BhcXVlID0gMS4wZjsKLX07Ci0KLXRlbXBsYXRlPD4g
c3RydWN0IEFscGhhVHJhaXRzPHVpbnQ4X3Q+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4
X3QgdHJhbnNwYXJlbnQgPSAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBvcGFxdWUg
PSAyNTU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRS
YW5nZSB7Ci0gICAgVCBtaW47Ci0gICAgVCBtYXg7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBF
eHRlbmRlZFJHQk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5
PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkg
fSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KLSAgICB9IH07Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOwotfTsKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgSFNMTW9kZWw8ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJy
YXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKLSAgICAgICAgeyAw
LCAzNjAgfSwKLSAgICAgICAgeyAwLCAxMDAgfSwKLSAgICAgICAgeyAwLCAxMDAgfQotICAgIH0g
fTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gdHJ1ZTsKLX07Ci0K
LXRlbXBsYXRlPD4gc3RydWN0IExhYk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0g
ICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAg
ICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVy
dGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IExDSE1vZGVsPGZsb2F0PiB7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8Zmxv
YXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IDAsIDM2MCB9Ci0gICAgfSB9OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4g
c3RydWN0IFJHQk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5
PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwg
MSB9LAotICAgICAgICB7IDAsIDEgfSwKLSAgICAgICAgeyAwLCAxIH0KLSAgICB9IH07Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBSR0JNb2RlbDx1aW50OF90PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8dWludDhfdD4sIDM+IHJhbmdlcyB7IHsKLSAgICAg
ICAgeyAwLCAyNTUgfSwKLSAgICAgICAgeyAwLCAyNTUgfSwKLSAgICAgICAgeyAwLCAyNTUgfQot
ICAgIH0gfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gdHJ1ZTsK
LX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFhZWk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMg
eyB7Ci0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0K
LSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNl
OwotfTsKLQogI2lmIEFTU0VSVF9FTkFCTEVECiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0
ZXhwciB2b2lkIGFzc2VydEluUmFuZ2UoVCBjb2xvcikKQEAgLTMxNCw2ICsyMjUsMTMgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEE5OFJHQiA6IFJHQgogfTsKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IEE5OFJHQihULCBULCBULCBUKSAtPiBBOThSR0I8VD47CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBSR0JBVHlwZTxEaXNwbGF5UDMsIFQsIFJHQk1vZGVs
PFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj46OlJH
QkFUeXBlOworICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyRGlzcGxheVAzPFQ+
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6RGlz
cGxheVAzOworfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBULCBULCBUKSAt
PiBEaXNwbGF5UDM8VD47CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBFeHRlbmRlZFNS
R0JBIDogUkdCQVR5cGU8RXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj4gewog
ICAgIHVzaW5nIFJHQkFUeXBlPEV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8VD4+
OjpSR0JBVHlwZTsKICAgICB1c2luZyBMaW5lYXJDb3VudGVycGFydCA9IExpbmVhckV4dGVuZGVk
U1JHQkE8VD47CkBAIC0zNTIsMTMgKzI3MCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBTUkdCQSA6IFJHQkEKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQShULCBULCBULCBU
KSAtPiBTUkdCQTxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERpc3BsYXlQMyA6
IFJHQkFUeXBlPERpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+IHsKLSAgICB1c2luZyBSR0JBVHlw
ZTxEaXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7Ci0gICAgdXNpbmcgTGluZWFy
Q291bnRlcnBhcnQgPSBMaW5lYXJEaXNwbGF5UDM8VD47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpEaXNwbGF5UDM7Ci19OwotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gRGlzcGxheVAzKFQsIFQsIFQsIFQpIC0+IERpc3BsYXlQMzxUPjsKLQogLy8gTUFS
SzogLSBMYWIgQ29sb3IgVHlwZS4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExhYiA6
IENvbG9yV2l0aEFscGhhSGVscGVyPExhYjxUPj4gewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418671</attachid>
            <date>2021-01-28 14:34:46 -0800</date>
            <delta_ts>2021-01-28 16:19:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221105-20210128143445.patch</filename>
            <type>text/plain</type>
            <size>32221</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAxLTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IGNvbG9yIG1vZGVsIGFu
ZCB0cmFuc2ZlciBmdW5jdGlvbnMgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaW5ncyBhcmUgZ2V0dGluZyBhIGJp
dCBjcmFtcGVkIGluIENvbG9yVHlwZXMuaCBhbmQgQ29sb3JDb252ZXJzaW9ucy4KKyAgICAgICAg
VGhpcyBleHRyYWN0cyB0aGUgY29sb3IgbW9kZWxzIGludG8gQ29sb3JNb2RlbC5oIGFuZCBnYW1t
YSB0cmFuc2ZlciAKKyAgICAgICAgZnVuY3Rpb25zIGludG8gQ29sb3JUcmFuc2ZlckZ1bmN0aW9u
LmggYW5kIGdlbmVyYWxpemVkIHRoZSB0cmFuc2ZlcgorICAgICAgICBmdW5jdGlvbnMgYSBiaXQg
dG8gcmVkdWNlIHRoZSBjb2RlIHNpemUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaDoKKyAgICAgICAgTW92ZSBjb2RlIHRvIG5ldyBmaWxlcy4KKwogMjAyMS0wMS0yOCAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGxvZ2ljYWwgdmFyaWFudHMgb2YgJ3Njcm9sbC1wYWRkaW5nJyBhbmQgJ3Njcm9s
bC1tYXJnaW4nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3MjAzMykKKysrIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNTQsOCArMTE1
NCwxMCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckhhc2guaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvck1vZGVsLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlh
bGl6YXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JUeXBlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5MDgsNiArMzkwOCw4IEBACiAJCUJDMDZFREU0
MEJGRDZEMEQwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNlbGxFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RURFMjBCRkQ2RDBEMDA4NTZF
OUQgLyogSlNIVE1MVGFibGVDZWxsRWxlbWVudC5oICovOyB9OwogCQlCQzA2RUUwNTBCRkQ3MUFB
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RUUwMzBCRkQ3MUFBMDA4NTZFOUQgLyogSlNIVE1M
VGFibGVFbGVtZW50LmggKi87IH07CiAJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9h
dENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEwMTM3QzI1QzM2
MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMxMDEzN0IyNUMzNjI0QjAwREM3NzNDIC8qIENvbG9yTW9kZWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEw
MTM3RjI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEwMTM3RTI1QzM2MzE2MDBE
Qzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxMEQ3NjgxN0Q4RUU3MTAwNUUyNjI2IC8qIFJl
bmRlckJsb2NrRmxvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGQjQ1RjMxN0Q4RTM5MjAwNDQ0NDQ2IC8qIFJlbmRlckJsb2NrRmxvdy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMTI0RUU4MEMy
NjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVFNTBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oICov
OyB9OwogCQlCQzEyNEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJQcm9wLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVGRTBDMjY0NDdBMDA5
RTIzNDkgLyogSlNCYXJQcm9wLmggKi87IH07CkBAIC0xMzg5Miw2ICsxMzg5NCw4IEBACiAJCUJD
MDZGMjRDMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFRQcm9jZXNzb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJD
MDZGMjREMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252
ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdENvbnZlcnNp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxMDEzN0IyNUMzNjI0QjAwREM3
NzNDIC8qIENvbG9yTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNb2RlbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQzEwMTM3RTI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JU
cmFuc2ZlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yVHJhbnNmZXJGdW5jdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzEyNEVFNDBDMjY0MUNEMDA5RTIzNDkg
LyogQmFyUHJvcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFy
UHJvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU1MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
YXJQcm9wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU2MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmFyUHJvcC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTkxMCw4ICsyMTkxNCw4IEBACiAJ
CQkJNDQ1Nzc1RTQyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaCAqLywKIAkJCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZS5tbSAqLywKIAkJCQkxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9n
Z2luZ01hYy5tbSAqLywKLQkJCQlDRDhBQ0E4QzFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFSZW1v
dGVTb2Z0TGluay5tbSAqLywKIAkJCQlDRDhBQ0E4RDFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFS
ZW1vdGVTb2Z0TGluay5oICovLAorCQkJCUNEOEFDQThDMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRp
YVJlbW90ZVNvZnRMaW5rLm1tICovLAogCQkJCTkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBO
U1Njcm9sbGVySW1wRGV0YWlscy5oICovLAogCQkJCTUyRjUyRTEwMTRBMDEzNEYwMEFDQzM5NyAv
KiBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSAqLywKIAkJCQk0QjI3MDk4MTBBRjJFNUUwMDA2NTEy
N0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLywKQEAgLTI2NTY5LDEwICsyNjU3MywxMiBAQAogCQkJ
CTdDNTE0RTAwMjRBRjgwNTgwMDUwNzEwRiAvKiBDb2xvckNvbnZlcnNpb24uaCAqLywKIAkJCQkz
MTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCiAJCQkJN0NBQzZBRTgy
NDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmggKi8sCisJCQkJQkMxMDEzN0IyNUMzNjI0
QjAwREM3NzNDIC8qIENvbG9yTW9kZWwuaCAqLywKIAkJCQk3Q0QxRTY5MjI0QUJGNjI0MDA4OUM0
MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmNwcCAqLywKIAkJCQk3Q0QxRTY5MTI0QUJGNjI0MDA4
OUM0MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmggKi8sCiAJCQkJQkNBRkVEQUYyNTk2NkQwNTAw
MzBFNkFBIC8qIENvbG9yU3BhY2UuY3BwICovLAogCQkJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1
MiAvKiBDb2xvclNwYWNlLmggKi8sCisJCQkJQkMxMDEzN0UyNUMzNjMxNjAwREM3NzNDIC8qIENv
bG9yVHJhbnNmZXJGdW5jdGlvbi5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAv
KiBDb2xvclR5cGVzLmggKi8sCiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9y
VXRpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkU2Qzc2QzFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JV
dGlsaXRpZXMuaCAqLywKQEAgLTI3NDAwLDkgKzI3NDA2LDkgQEAKIAkJCQlDQkI2QjJEMjFDQjdB
REQwMDA5RURFMUEgLyogTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaCAqLywKIAkJCQk1MUFC
RjY0QzE2MzkyRTI4MDAxMzJBN0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwICovLAogCQkJCTUxRTY4
MjBGMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oICovLAorCQkJCUU0N0ZDOEEx
MjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLywKIAkJCQk4NjFDMkVB
MzEzRkI0RkREMDAwNjJBQkIgLyogTG9hZFRpbWluZy5jcHAgKi8sCiAJCQkJOEExMkUzNUMxMUZB
MzMyODAwMjU4MzZBIC8qIExvYWRUaW1pbmcuaCAqLywKLQkJCQlFNDdGQzhBMTI1Qjg0RDcxMDA1
NDk1RkMgLyogTG9hZFNjaGVkdWxpbmdNb2RlLmggKi8sCiAJCQkJQ0VFRkNENzcxOURCMzFGNzAw
Mzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCUNFRUZDRDc4MTlEQjMx
RjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJNTJGMTA4NjIxNjJC
NkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuY3BwICovLApAQCAtMzE0ODYsOSAr
MzE0OTIsMTEgQEAKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBp
biBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8qIENvbG9yTWF0
cml4LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzEwMTM3QzI1QzM2MjRCMDBEQzc3M0MgLyogQ29s
b3JNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMUU2OTMyNEFCRjYyNDAwODlDNDE5IC8q
IENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkRGNTgxMEE4RDVD
OTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUZFREI0MjU5
NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTAx
MzdGMjVDMzYzMTYwMERDNzczQyAvKiBDb2xvclRyYW5zZmVyRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBRjY2QjIzQkZDMzlFMDA0MDMwREEgLyogQ29sb3JVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5J
bmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjM3LDYgKzMzNjQ1LDcgQEAKIAkJCQk5NzU5RTk0
OTE0RUYxRDQ5MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1NkQzNzMyMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFFNjgyMTAxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyogTG9hZFNj
aGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTEyRTM1RDExRkEzMzI4MDAyNTgz
NkEgLyogTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDZFODFFRDcwQUI1RDVFOTAw
Qzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUM0M0RFNkIyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDMzNCw3ICszNDM0Myw2IEBACiAJCQkJNDM2NzA4RDUx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MzY3MDhENzEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RDkxMkQ5Q0E0QjAwMDQ0
MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENSdGNwUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM2NzA4REIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291
cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhERDEyRDlDQTRCMDAwNDQyMzQg
LyogUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOERG
MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzQ0NDgsNiArMzQ0NTYsNyBAQAogCQkJCTA3OEUwOTQyMTdEMTZFMUMwMDQyMEFB
MSAvKiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxOUU2RUM5MjU2NkQyNzgwMDJCNTAxMCAvKiBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI0MTdEMTREMUMwMDQyMEFBMSAvKiBSVENQ
ZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTE0RkUzMjI1QkVC
RDE5MDA5RDlGMjAgLyogUlRDUnRjcFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MkRFNEI4MjE5Mjg1QzAwMDc1RjNBNyAvKiBSVENSdHBDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVFMkM0MzYzMUJDRUUzMkIwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzQzhCMzUyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFJlY2Vp
dmVyV2l0aFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDk0OSw3ICszNDk1OCw2IEBA
CiAJCQkJNzFBNTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNW
R1BvaW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyog
TG9hZFNjaGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4QzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4RjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTkxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNv
bG9yTWF0cml4LmgiCisjaW5jbHVkZSAiQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAwLDEzNiAr
MTAxLDY0IEBAIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8g
TUFSSzogR2FtbWEgY29udmVyc2lvbnMuCiAKLWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246
OmZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCBjKQotewotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0
Pihmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBBOThSR0JUcmFu
c2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGZsb2F0IGMpCi17Ci0gICAgcmV0dXJuIGNs
YW1wVG88ZmxvYXQ+KHRvTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBB
OThSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKLXsK
LSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwotICAgIHJl
dHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgMjU2LjBmIC8gNTYzLjBmKSAqIHNpZ247Ci19Ci0K
LWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQg
YykKLXsKLSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwot
ICAgIHJldHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgNTYzLjBmIC8gMjU2LjBmKSAqIHNpZ247
Ci19Ci0KLWZsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyQ2xhbXBpbmcoZmxv
YXQgYykKLXsKLSAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
eDxmbG9hdD4oMTIuOTJmICogYywgMCk7Ci0KLSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oMS4w
NTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKLX0KLQotZmxv
YXQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKLXsKLSAg
ICBpZiAoYyA8PSAwLjA0MDQ1ZikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihjIC8g
MTIuOTJmLCAwKTsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAu
MDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQotZmxvYXQgU1JHQlRyYW5zZmVyRnVu
Y3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24g
PSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwot
Ci0gICAgaWYgKGMgPCAwLjAwMzEzMDhmKQotICAgICAgICByZXR1cm4gMTIuOTJmICogYyAqIHNp
Z247Ci0KLSAgICByZXR1cm4gKDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAu
MDU1ZikgKiBzaWduOwotfQotCi1mbG9hdCBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykg
PyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwotCi0gICAgaWYgKGMgPD0gMC4w
NDA0NWYpCi0gICAgICAgIHJldHVybiBjIC8gMTIuOTJmICogc2lnbjsKLQotICAgIHJldHVybiBz
dGQ6OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpICogc2lnbjsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gdG9M
aW5lYXJDbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4gdHlwZW5hbWUgVDo6TGluZWFyQ291bnRl
cnBhcnQKLXsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsKLSAgICByZXR1
cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5j
dGlvbjo6dG9MaW5lYXJDbGFtcGluZyhjMiksIFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xh
bXBpbmcoYzMpLCBhbHBoYSB9OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0
aW9uLCB0eXBlbmFtZSBUPiBzdGF0aWMgYXV0byBmcm9tTGluZWFyQ2xhbXBpbmcoY29uc3QgVCYg
Y29sb3IpIC0+IHR5cGVuYW1lIFQ6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0Ci17Ci0gICAgYXV0
byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5j
dGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ckNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMzKSwg
YWxwaGEgfTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5h
bWUgVD4gc3RhdGljIGF1dG8gdG9MaW5lYXJOb25DbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4g
dHlwZW5hbWUgVDo6TGluZWFyQ291bnRlcnBhcnQKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYW5zZmVy
RnVuY3Rpb24sIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGF1dG8gdG9MaW5lYXIoY29uc3Qg
Q29sb3JUeXBlJiBjb2xvcikgLT4gdHlwZW5hbWUgQ29sb3JUeXBlOjpMaW5lYXJDb3VudGVycGFy
dAogewogICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbG9yOwotICAgIHJldHVybiB7
IFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0
aW9uOjp0b0xpbmVhck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhjMyksIGFscGhhIH07CisgICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6
dG9MaW5lYXIoYzEpLCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhcihjMiksIFRyYW5zZmVyRnVu
Y3Rpb246OnRvTGluZWFyKGMzKSwgYWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVHJh
bnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gZnJvbUxpbmVhck5vbkNsYW1w
aW5nKGNvbnN0IFQmIGNvbG9yKSAtPiB0eXBlbmFtZSBUOjpHYW1tYUVuY29kZWRDb3VudGVycGFy
dAordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgQ29sb3JUeXBl
PiBzdGF0aWMgYXV0byB0b0dhbW1hRW5jb2RlZChjb25zdCBDb2xvclR5cGUmIGNvbG9yKSAtPiB0
eXBlbmFtZSBDb2xvclR5cGU6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0CiB7CiAgICAgYXV0byBb
YzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlv
bjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5n
KGMzKSwgYWxwaGEgfTsKKyAgICByZXR1cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0dhbW1hRW5j
b2RlZChjMSksIFRyYW5zZmVyRnVuY3Rpb246OnRvR2FtbWFFbmNvZGVkKGMyKSwgVHJhbnNmZXJG
dW5jdGlvbjo6dG9HYW1tYUVuY29kZWQoYzMpLCBhbHBoYSB9OwogfQogCiAvLyBBOThSR0IgPC0+
IExpbmVhckE5OFJHQiBjb252ZXJzaW9ucy4KIAogTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVh
ckE5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9MaW5l
YXJDbGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CisgICAgcmV0dXJuIHRv
TGluZWFyPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2Rl
OjpDbGFtcGVkPj4oY29sb3IpOwogfQogCiBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IExp
bmVhckE5OFJHQjxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8QTk4UkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6
Q2xhbXBlZD4+KGNvbG9yKTsKIH0KIAogLy8gRGlzcGxheVAzIDwtPiBMaW5lYXJEaXNwbGF5UDMg
Y29udmVyc2lvbnMuCiAKIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyQ2xh
bXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9MaW5lYXI8
U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVk
Pj4oY29sb3IpOwogfQogCiBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29k
ZWQ8U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFt
cGVkPj4oY29sb3IpOwogfQogCiAvLyBFeHRlbmRlZFNSR0JBIDwtPiBMaW5lYXJFeHRlbmRlZFNS
R0JBIGNvbnZlcnNpb25zLgogCiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4
dGVuZGVkU1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJl
dHVybiB0b0xpbmVhck5vbkNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7Cisg
ICAgcmV0dXJuIHRvTGluZWFyPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1
bmN0aW9uTW9kZTo6VW5jbGFtcGVkPj4oY29sb3IpOwogfQogCiBFeHRlbmRlZFNSR0JBPGZsb2F0
PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9y
KQogewotICAgIHJldHVybiBmcm9tTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rp
b24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29kZWQ8U1JHQlRyYW5zZmVyRnVuY3Rp
b248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpVbmNsYW1wZWQ+Pihjb2xvcik7CiB9CiAK
IC8vIFNSR0JBIDwtPiBMaW5lYXJTUkdCQSBjb252ZXJzaW9ucy4KIAogTGluZWFyU1JHQkE8Zmxv
YXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1
cm4gdG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJl
dHVybiB0b0xpbmVhcjxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlv
bk1vZGU6OkNsYW1wZWQ+Pihjb2xvcik7CiB9CiAKIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGZyb21MaW5lYXJDbGFt
cGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNs
YW1wZWQ+Pihjb2xvcik7CiB9CiAKIC8vIE1BUks6IE1hdHJpeCBjb252ZXJzaW9ucyAodG8gYW5k
IGZyb20gWFlaIGZvciBhbGwgbGluZWFyIGNvbG9yIHR5cGVzKS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lv
biAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZl
cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjIgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9yIGNvbG9ycyB0aGF0IGNhbiBiZSBn
YW1tYSBlbmNvZGVkLgotCi1zdHJ1Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3Rh
dGljIGZsb2F0IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRv
TGluZWFyQ2xhbXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0
KTsKLX07Ci0KLXN0cnVjdCBTUkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3RhdGljIGZsb2F0
IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRvTGluZWFyQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxv
YXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0KTsKLX07Ci0K
IC8vIEFsbCBjb2xvciB0eXBlcyBtdXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5n
IGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgogLy8gICAgWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKIC8vICAgIENvbG9yVHlw
ZTxmbG9hdD4gdG9Db2xvclR5cGUoY29uc3QgWFlaQTxmbG9hdD4mKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNb2RlbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBbHBoYVRyYWl0
czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRSYW5nZTsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgSFNMTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSE1vZGVsOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWJNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgUkdCTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFhZWk1vZGVsOworCisK
K3RlbXBsYXRlPD4gc3RydWN0IEFscGhhVHJhaXRzPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBmbG9hdCB0cmFuc3BhcmVudCA9IDAuMGY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dCBvcGFxdWUgPSAxLjBmOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8dWlu
dDhfdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cmFuc3BhcmVudCA9IDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IG9wYXF1ZSA9IDI1NTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvckNvbXBvbmVudFJhbmdlIHsKKyAgICBUIG1pbjsKKyAg
ICBUIG1heDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0s
CisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
bnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIU0xNb2RlbDxmbG9h
dD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdl
PGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDM2MCB9LAorICAgICAgICB7IDAs
IDEwMCB9LAorICAgICAgICB7IDAsIDEwMCB9CisgICAgfSB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTGFi
TW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21w
b25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KKyAgICB9IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTENITW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAg
ICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAg
ICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCisgICAg
ICAgIHsgMCwgMzYwIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52
ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAxIH0sCisgICAgICAgIHsgMCwgMSB9
LAorICAgICAgICB7IDAsIDEgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFJHQk1vZGVsPHVp
bnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRS
YW5nZTx1aW50OF90PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDI1NSB9LAorICAgICAg
ICB7IDAsIDI1NSB9LAorICAgICAgICB7IDAsIDI1NSB9CisgICAgfSB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgWFlaTW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29s
b3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjppbmZpbml0eSgpIH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAor
ICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVy
RnVuY3Rpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9y
IGNvbG9ycyB0aGF0IGNhbiBiZSBnYW1tYSBlbmNvZGVkLgorCitlbnVtIGNsYXNzIFRyYW5zZmVy
RnVuY3Rpb25Nb2RlIDogdWludDhfdCB7CisgICAgQ2xhbXBlZCwKKyAgICBVbmNsYW1wZWQKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1vZGU+CitzdHJ1
Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7CisgICAgc3RhdGljIFQgdG9HYW1tYUVuY29kZWQo
VCk7CisgICAgc3RhdGljIFQgdG9MaW5lYXIoVCk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2RlPgorc3RydWN0IFNSR0JUcmFuc2ZlckZ1bmN0aW9u
IHsKKyAgICBzdGF0aWMgVCB0b0dhbW1hRW5jb2RlZChUKTsKKyAgICBzdGF0aWMgVCB0b0xpbmVh
cihUKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1v
ZGU+IFQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9HYW1tYUVuY29kZWQoVCBjKQoreworICAg
IGF1dG8gc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICBhdXRvIHJl
c3VsdCA9IHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCAyNTYuMGYgLyA1NjMuMGYpICogc2lnbjsKKyAg
ICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQpCisg
ICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihyZXN1bHQsIDAsIDEpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1v
ZGU+IFQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXIoVCBjKQoreworICAgIGF1dG8g
c2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICBhdXRvIHN0ZDo6cG93
KHN0ZDo6YWJzKGMpLCA1NjMuMGYgLyAyNTYuMGYpICogc2lnbjsKKyAgICBpZiBjb25zdGV4cHIg
KG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQpCisgICAgICAgIHJldHVybiBj
bGFtcFRvPGZsb2F0PihyZXN1bHQsIDAsIDEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1vZGU+IFQgU1JHQlRyYW5z
ZmVyRnVuY3Rpb246OnRvR2FtbWFFbmNvZGVkKFQgYykKK3sKKyAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQpIHsKKyAgICAgICAgaWYgKGMgPCAw
LjAwMzEzMDhmKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PFQ+KDEyLjkyZiAqIGMsIDAp
OworCisgICAgICAgIHJldHVybiBjbGFtcFRvPFQ+KDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYg
LyAyLjRmKSAtIDAuMDU1ZiwgMCwgMSk7CisgICAgfQorCisgICAgZmxvYXQgc2lnbiA9IHN0ZDo6
c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICBjID0gc3RkOjphYnMoYyk7CisKKyAgICBp
ZiAoYyA8IDAuMDAzMTMwOGYpCisgICAgICAgIHJldHVybiAxMi45MmYgKiBjICogc2lnbjsKKwor
ICAgIHJldHVybiAoMS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmKSAq
IHNpZ247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1v
ZGU+IFQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyKFQgYykKK3sKKyAgICBpZiBjb25z
dGV4cHIgKG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQpIHsKKyAgICAgICAg
aWYgKGMgPD0gMC4wNDA0NWYpCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KGMg
LyAxMi45MmYsIDApOworCisgICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygo
YyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKKyAgICB9CisKKyAgICBmbG9hdCBz
aWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOworICAgIGMgPSBzdGQ6OmFicyhj
KTsKKworICAgIGlmIChjIDw9IDAuMDQwNDVmKQorICAgICAgICByZXR1cm4gYyAvIDEyLjkyZiAq
IHNpZ247CisKKyAgICByZXR1cm4gc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRm
KSAqIHNpZ247Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMzIgKzI2
LDIzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgorI2lu
Y2x1ZGUgIkNvbG9yTW9kZWwuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IEE5OFJHQjsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQWxwaGFUcmFpdHM7Ci10
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yQ29tcG9uZW50UmFuZ2U7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IERpc3BsYXlQMzsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0
ZW5kZWRSR0JNb2RlbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQTsK
IHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSFNMQTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1
Y3QgSFNMTW9kZWw7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSEE7Ci10ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IExDSE1vZGVsOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWI7
Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExhYk1vZGVsOwogdGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBMaW5lYXJBOThSR0I7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckRp
c3BsYXlQMzsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyRXh0ZW5kZWRTUkdCQTsK
IHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyU1JHQkE7Ci10ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IFJHQk1vZGVsOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdCQTsKIHRl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgWFlaOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBY
WVpNb2RlbDsKLQogCiAvLyBNQVJLOiBNYWtlIGZ1bmN0aW9ucy4KIApAQCAtMTI5LDg2ICsxMjAs
NiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQsCiAgICAgcmV0dXJu
IG1ha2VGcm9tQ29tcG9uZW50czxDb2xvclR5cGU+KENvbG9yQ29tcG9uZW50cyB7IGNsYW1wZWRD
b21wb25lbnQ8Q29sb3JUeXBlLCAwPihjMSksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAx
PihjMiksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAyPihjMyksIGFscGhhIH0pOwogfQog
Ci0vLyBNQVJLOiAtIE1vZGVscwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBbHBoYVRyYWl0czxmbG9h
dD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgdHJhbnNwYXJlbnQgPSAwLjBmOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgb3BhcXVlID0gMS4wZjsKLX07Ci0KLXRlbXBsYXRlPD4g
c3RydWN0IEFscGhhVHJhaXRzPHVpbnQ4X3Q+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4
X3QgdHJhbnNwYXJlbnQgPSAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBvcGFxdWUg
PSAyNTU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRS
YW5nZSB7Ci0gICAgVCBtaW47Ci0gICAgVCBtYXg7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBF
eHRlbmRlZFJHQk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5
PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkg
fSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KLSAgICB9IH07Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOwotfTsKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgSFNMTW9kZWw8ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJy
YXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKLSAgICAgICAgeyAw
LCAzNjAgfSwKLSAgICAgICAgeyAwLCAxMDAgfSwKLSAgICAgICAgeyAwLCAxMDAgfQotICAgIH0g
fTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gdHJ1ZTsKLX07Ci0K
LXRlbXBsYXRlPD4gc3RydWN0IExhYk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0g
ICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAg
ICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVy
dGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IExDSE1vZGVsPGZsb2F0PiB7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8Zmxv
YXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IDAsIDM2MCB9Ci0gICAgfSB9OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4g
c3RydWN0IFJHQk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5
PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwg
MSB9LAotICAgICAgICB7IDAsIDEgfSwKLSAgICAgICAgeyAwLCAxIH0KLSAgICB9IH07Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBSR0JNb2RlbDx1aW50OF90PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8dWludDhfdD4sIDM+IHJhbmdlcyB7IHsKLSAgICAg
ICAgeyAwLCAyNTUgfSwKLSAgICAgICAgeyAwLCAyNTUgfSwKLSAgICAgICAgeyAwLCAyNTUgfQot
ICAgIH0gfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gdHJ1ZTsK
LX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFhZWk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMg
eyB7Ci0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0K
LSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNl
OwotfTsKLQogI2lmIEFTU0VSVF9FTkFCTEVECiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0
ZXhwciB2b2lkIGFzc2VydEluUmFuZ2UoVCBjb2xvcikKQEAgLTMxNCw2ICsyMjUsMTMgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEE5OFJHQiA6IFJHQgogfTsKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IEE5OFJHQihULCBULCBULCBUKSAtPiBBOThSR0I8VD47CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBSR0JBVHlwZTxEaXNwbGF5UDMsIFQsIFJHQk1vZGVs
PFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj46OlJH
QkFUeXBlOworICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyRGlzcGxheVAzPFQ+
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6RGlz
cGxheVAzOworfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBULCBULCBUKSAt
PiBEaXNwbGF5UDM8VD47CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBFeHRlbmRlZFNS
R0JBIDogUkdCQVR5cGU8RXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj4gewog
ICAgIHVzaW5nIFJHQkFUeXBlPEV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8VD4+
OjpSR0JBVHlwZTsKICAgICB1c2luZyBMaW5lYXJDb3VudGVycGFydCA9IExpbmVhckV4dGVuZGVk
U1JHQkE8VD47CkBAIC0zNTIsMTMgKzI3MCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBTUkdCQSA6IFJHQkEKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQShULCBULCBULCBU
KSAtPiBTUkdCQTxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERpc3BsYXlQMyA6
IFJHQkFUeXBlPERpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+IHsKLSAgICB1c2luZyBSR0JBVHlw
ZTxEaXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7Ci0gICAgdXNpbmcgTGluZWFy
Q291bnRlcnBhcnQgPSBMaW5lYXJEaXNwbGF5UDM8VD47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpEaXNwbGF5UDM7Ci19OwotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gRGlzcGxheVAzKFQsIFQsIFQsIFQpIC0+IERpc3BsYXlQMzxUPjsKLQogLy8gTUFS
SzogLSBMYWIgQ29sb3IgVHlwZS4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExhYiA6
IENvbG9yV2l0aEFscGhhSGVscGVyPExhYjxUPj4gewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNpb24gMjcyMDMzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
dHJhbnNmb3JtQwogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5Owog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwotICAgICAgICAgICAgICAgIGNvbG9y
ID0gU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoY29sb3IpOworICAgICAg
ICAgICAgICAgIGNvbG9yID0gU1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVu
Y3Rpb25Nb2RlOjpDbGFtcGVkPjo6dG9MaW5lYXIoY29sb3IpOwogICAgICAgICAgICAgICAgIGFy
cmF5W2ldID0gc3RhdGljX2Nhc3Q8dWludDhfdD4ocm91bmQoY29sb3IgKiAyNTUpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBhcnJheTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2
b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1DCiAgICAgICAgICAgICBzdGQ6
OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvciA9IGkgLyAy
NTUuMGY7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJv
bUxpbmVhckNsYW1waW5nKGNvbG9yKTsKKyAgICAgICAgICAgICAgICBjb2xvciA9IFNSR0JUcmFu
c2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6Q2xhbXBlZD46OnRvR2Ft
bWFFbmNvZGVkKGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7Cg==
</data>
<flag name="commit-queue"
          id="436711"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418678</attachid>
            <date>2021-01-28 16:16:38 -0800</date>
            <delta_ts>2021-01-28 16:28:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221105-20210128161637.patch</filename>
            <type>text/plain</type>
            <size>32303</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAxLTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IGNvbG9yIG1vZGVsIGFu
ZCB0cmFuc2ZlciBmdW5jdGlvbnMgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaW5ncyBhcmUgZ2V0dGluZyBhIGJp
dCBjcmFtcGVkIGluIENvbG9yVHlwZXMuaCBhbmQgQ29sb3JDb252ZXJzaW9ucy4KKyAgICAgICAg
VGhpcyBleHRyYWN0cyB0aGUgY29sb3IgbW9kZWxzIGludG8gQ29sb3JNb2RlbC5oIGFuZCBnYW1t
YSB0cmFuc2ZlciAKKyAgICAgICAgZnVuY3Rpb25zIGludG8gQ29sb3JUcmFuc2ZlckZ1bmN0aW9u
LmggYW5kIGdlbmVyYWxpemVkIHRoZSB0cmFuc2ZlcgorICAgICAgICBmdW5jdGlvbnMgYSBiaXQg
dG8gcmVkdWNlIHRoZSBjb2RlIHNpemUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaDoKKyAgICAgICAgTW92ZSBjb2RlIHRvIG5ldyBmaWxlcy4KKwogMjAyMS0wMS0yOCAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGxvZ2ljYWwgdmFyaWFudHMgb2YgJ3Njcm9sbC1wYWRkaW5nJyBhbmQgJ3Njcm9s
bC1tYXJnaW4nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3MjAzMykKKysrIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNTQsOCArMTE1
NCwxMCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckhhc2guaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvck1vZGVsLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlh
bGl6YXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JUeXBlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5MDgsNiArMzkwOCw4IEBACiAJCUJDMDZFREU0
MEJGRDZEMEQwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNlbGxFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RURFMjBCRkQ2RDBEMDA4NTZF
OUQgLyogSlNIVE1MVGFibGVDZWxsRWxlbWVudC5oICovOyB9OwogCQlCQzA2RUUwNTBCRkQ3MUFB
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RUUwMzBCRkQ3MUFBMDA4NTZFOUQgLyogSlNIVE1M
VGFibGVFbGVtZW50LmggKi87IH07CiAJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9h
dENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEwMTM3QzI1QzM2
MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMxMDEzN0IyNUMzNjI0QjAwREM3NzNDIC8qIENvbG9yTW9kZWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEw
MTM3RjI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEwMTM3RTI1QzM2MzE2MDBE
Qzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxMEQ3NjgxN0Q4RUU3MTAwNUUyNjI2IC8qIFJl
bmRlckJsb2NrRmxvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGQjQ1RjMxN0Q4RTM5MjAwNDQ0NDQ2IC8qIFJlbmRlckJsb2NrRmxvdy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMTI0RUU4MEMy
NjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVFNTBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oICov
OyB9OwogCQlCQzEyNEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJQcm9wLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVGRTBDMjY0NDdBMDA5
RTIzNDkgLyogSlNCYXJQcm9wLmggKi87IH07CkBAIC0xMzg5Miw2ICsxMzg5NCw4IEBACiAJCUJD
MDZGMjRDMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFRQcm9jZXNzb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJD
MDZGMjREMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252
ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdENvbnZlcnNp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxMDEzN0IyNUMzNjI0QjAwREM3
NzNDIC8qIENvbG9yTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNb2RlbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQzEwMTM3RTI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JU
cmFuc2ZlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yVHJhbnNmZXJGdW5jdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzEyNEVFNDBDMjY0MUNEMDA5RTIzNDkg
LyogQmFyUHJvcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFy
UHJvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU1MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
YXJQcm9wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU2MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmFyUHJvcC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTkxMCw4ICsyMTkxNCw4IEBACiAJ
CQkJNDQ1Nzc1RTQyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaCAqLywKIAkJCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZS5tbSAqLywKIAkJCQkxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9n
Z2luZ01hYy5tbSAqLywKLQkJCQlDRDhBQ0E4QzFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFSZW1v
dGVTb2Z0TGluay5tbSAqLywKIAkJCQlDRDhBQ0E4RDFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFS
ZW1vdGVTb2Z0TGluay5oICovLAorCQkJCUNEOEFDQThDMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRp
YVJlbW90ZVNvZnRMaW5rLm1tICovLAogCQkJCTkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBO
U1Njcm9sbGVySW1wRGV0YWlscy5oICovLAogCQkJCTUyRjUyRTEwMTRBMDEzNEYwMEFDQzM5NyAv
KiBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSAqLywKIAkJCQk0QjI3MDk4MTBBRjJFNUUwMDA2NTEy
N0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLywKQEAgLTI2NTY5LDEwICsyNjU3MywxMiBAQAogCQkJ
CTdDNTE0RTAwMjRBRjgwNTgwMDUwNzEwRiAvKiBDb2xvckNvbnZlcnNpb24uaCAqLywKIAkJCQkz
MTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCiAJCQkJN0NBQzZBRTgy
NDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmggKi8sCisJCQkJQkMxMDEzN0IyNUMzNjI0
QjAwREM3NzNDIC8qIENvbG9yTW9kZWwuaCAqLywKIAkJCQk3Q0QxRTY5MjI0QUJGNjI0MDA4OUM0
MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmNwcCAqLywKIAkJCQk3Q0QxRTY5MTI0QUJGNjI0MDA4
OUM0MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmggKi8sCiAJCQkJQkNBRkVEQUYyNTk2NkQwNTAw
MzBFNkFBIC8qIENvbG9yU3BhY2UuY3BwICovLAogCQkJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1
MiAvKiBDb2xvclNwYWNlLmggKi8sCisJCQkJQkMxMDEzN0UyNUMzNjMxNjAwREM3NzNDIC8qIENv
bG9yVHJhbnNmZXJGdW5jdGlvbi5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAv
KiBDb2xvclR5cGVzLmggKi8sCiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9y
VXRpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkU2Qzc2QzFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JV
dGlsaXRpZXMuaCAqLywKQEAgLTI3NDAwLDkgKzI3NDA2LDkgQEAKIAkJCQlDQkI2QjJEMjFDQjdB
REQwMDA5RURFMUEgLyogTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaCAqLywKIAkJCQk1MUFC
RjY0QzE2MzkyRTI4MDAxMzJBN0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwICovLAogCQkJCTUxRTY4
MjBGMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oICovLAorCQkJCUU0N0ZDOEEx
MjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLywKIAkJCQk4NjFDMkVB
MzEzRkI0RkREMDAwNjJBQkIgLyogTG9hZFRpbWluZy5jcHAgKi8sCiAJCQkJOEExMkUzNUMxMUZB
MzMyODAwMjU4MzZBIC8qIExvYWRUaW1pbmcuaCAqLywKLQkJCQlFNDdGQzhBMTI1Qjg0RDcxMDA1
NDk1RkMgLyogTG9hZFNjaGVkdWxpbmdNb2RlLmggKi8sCiAJCQkJQ0VFRkNENzcxOURCMzFGNzAw
Mzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCUNFRUZDRDc4MTlEQjMx
RjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJNTJGMTA4NjIxNjJC
NkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuY3BwICovLApAQCAtMzE0ODYsOSAr
MzE0OTIsMTEgQEAKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBp
biBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8qIENvbG9yTWF0
cml4LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzEwMTM3QzI1QzM2MjRCMDBEQzc3M0MgLyogQ29s
b3JNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMUU2OTMyNEFCRjYyNDAwODlDNDE5IC8q
IENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkRGNTgxMEE4RDVD
OTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUZFREI0MjU5
NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTAx
MzdGMjVDMzYzMTYwMERDNzczQyAvKiBDb2xvclRyYW5zZmVyRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBRjY2QjIzQkZDMzlFMDA0MDMwREEgLyogQ29sb3JVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5J
bmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjM3LDYgKzMzNjQ1LDcgQEAKIAkJCQk5NzU5RTk0
OTE0RUYxRDQ5MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1NkQzNzMyMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFFNjgyMTAxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyogTG9hZFNj
aGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTEyRTM1RDExRkEzMzI4MDAyNTgz
NkEgLyogTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDZFODFFRDcwQUI1RDVFOTAw
Qzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUM0M0RFNkIyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDMzNCw3ICszNDM0Myw2IEBACiAJCQkJNDM2NzA4RDUx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MzY3MDhENzEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RDkxMkQ5Q0E0QjAwMDQ0
MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENSdGNwUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM2NzA4REIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291
cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhERDEyRDlDQTRCMDAwNDQyMzQg
LyogUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOERG
MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzQ0NDgsNiArMzQ0NTYsNyBAQAogCQkJCTA3OEUwOTQyMTdEMTZFMUMwMDQyMEFB
MSAvKiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxOUU2RUM5MjU2NkQyNzgwMDJCNTAxMCAvKiBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI0MTdEMTREMUMwMDQyMEFBMSAvKiBSVENQ
ZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTE0RkUzMjI1QkVC
RDE5MDA5RDlGMjAgLyogUlRDUnRjcFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MkRFNEI4MjE5Mjg1QzAwMDc1RjNBNyAvKiBSVENSdHBDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVFMkM0MzYzMUJDRUUzMkIwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzQzhCMzUyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFJlY2Vp
dmVyV2l0aFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDk0OSw3ICszNDk1OCw2IEBA
CiAJCQkJNzFBNTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNW
R1BvaW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyog
TG9hZFNjaGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4QzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4RjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTkxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNv
bG9yTWF0cml4LmgiCisjaW5jbHVkZSAiQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAwLDEzNiAr
MTAxLDY0IEBAIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8g
TUFSSzogR2FtbWEgY29udmVyc2lvbnMuCiAKLWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246
OmZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCBjKQotewotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0
Pihmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBBOThSR0JUcmFu
c2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGZsb2F0IGMpCi17Ci0gICAgcmV0dXJuIGNs
YW1wVG88ZmxvYXQ+KHRvTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBB
OThSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKLXsK
LSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwotICAgIHJl
dHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgMjU2LjBmIC8gNTYzLjBmKSAqIHNpZ247Ci19Ci0K
LWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQg
YykKLXsKLSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwot
ICAgIHJldHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgNTYzLjBmIC8gMjU2LjBmKSAqIHNpZ247
Ci19Ci0KLWZsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyQ2xhbXBpbmcoZmxv
YXQgYykKLXsKLSAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
eDxmbG9hdD4oMTIuOTJmICogYywgMCk7Ci0KLSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oMS4w
NTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKLX0KLQotZmxv
YXQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKLXsKLSAg
ICBpZiAoYyA8PSAwLjA0MDQ1ZikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihjIC8g
MTIuOTJmLCAwKTsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAu
MDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQotZmxvYXQgU1JHQlRyYW5zZmVyRnVu
Y3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24g
PSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwot
Ci0gICAgaWYgKGMgPCAwLjAwMzEzMDhmKQotICAgICAgICByZXR1cm4gMTIuOTJmICogYyAqIHNp
Z247Ci0KLSAgICByZXR1cm4gKDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAu
MDU1ZikgKiBzaWduOwotfQotCi1mbG9hdCBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykg
PyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwotCi0gICAgaWYgKGMgPD0gMC4w
NDA0NWYpCi0gICAgICAgIHJldHVybiBjIC8gMTIuOTJmICogc2lnbjsKLQotICAgIHJldHVybiBz
dGQ6OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpICogc2lnbjsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gdG9M
aW5lYXJDbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4gdHlwZW5hbWUgVDo6TGluZWFyQ291bnRl
cnBhcnQKLXsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsKLSAgICByZXR1
cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5j
dGlvbjo6dG9MaW5lYXJDbGFtcGluZyhjMiksIFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xh
bXBpbmcoYzMpLCBhbHBoYSB9OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0
aW9uLCB0eXBlbmFtZSBUPiBzdGF0aWMgYXV0byBmcm9tTGluZWFyQ2xhbXBpbmcoY29uc3QgVCYg
Y29sb3IpIC0+IHR5cGVuYW1lIFQ6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0Ci17Ci0gICAgYXV0
byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5j
dGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ckNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMzKSwg
YWxwaGEgfTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5h
bWUgVD4gc3RhdGljIGF1dG8gdG9MaW5lYXJOb25DbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4g
dHlwZW5hbWUgVDo6TGluZWFyQ291bnRlcnBhcnQKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYW5zZmVy
RnVuY3Rpb24sIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGF1dG8gdG9MaW5lYXIoY29uc3Qg
Q29sb3JUeXBlJiBjb2xvcikgLT4gdHlwZW5hbWUgQ29sb3JUeXBlOjpMaW5lYXJDb3VudGVycGFy
dAogewogICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbG9yOwotICAgIHJldHVybiB7
IFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0
aW9uOjp0b0xpbmVhck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhjMyksIGFscGhhIH07CisgICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6
dG9MaW5lYXIoYzEpLCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhcihjMiksIFRyYW5zZmVyRnVu
Y3Rpb246OnRvTGluZWFyKGMzKSwgYWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVHJh
bnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gZnJvbUxpbmVhck5vbkNsYW1w
aW5nKGNvbnN0IFQmIGNvbG9yKSAtPiB0eXBlbmFtZSBUOjpHYW1tYUVuY29kZWRDb3VudGVycGFy
dAordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgQ29sb3JUeXBl
PiBzdGF0aWMgYXV0byB0b0dhbW1hRW5jb2RlZChjb25zdCBDb2xvclR5cGUmIGNvbG9yKSAtPiB0
eXBlbmFtZSBDb2xvclR5cGU6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0CiB7CiAgICAgYXV0byBb
YzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlv
bjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5n
KGMzKSwgYWxwaGEgfTsKKyAgICByZXR1cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0dhbW1hRW5j
b2RlZChjMSksIFRyYW5zZmVyRnVuY3Rpb246OnRvR2FtbWFFbmNvZGVkKGMyKSwgVHJhbnNmZXJG
dW5jdGlvbjo6dG9HYW1tYUVuY29kZWQoYzMpLCBhbHBoYSB9OwogfQogCiAvLyBBOThSR0IgPC0+
IExpbmVhckE5OFJHQiBjb252ZXJzaW9ucy4KIAogTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVh
ckE5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9MaW5l
YXJDbGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CisgICAgcmV0dXJuIHRv
TGluZWFyPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2Rl
OjpDbGFtcGVkPj4oY29sb3IpOwogfQogCiBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IExp
bmVhckE5OFJHQjxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8QTk4UkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6
Q2xhbXBlZD4+KGNvbG9yKTsKIH0KIAogLy8gRGlzcGxheVAzIDwtPiBMaW5lYXJEaXNwbGF5UDMg
Y29udmVyc2lvbnMuCiAKIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyQ2xh
bXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9MaW5lYXI8
U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVk
Pj4oY29sb3IpOwogfQogCiBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29k
ZWQ8U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFt
cGVkPj4oY29sb3IpOwogfQogCiAvLyBFeHRlbmRlZFNSR0JBIDwtPiBMaW5lYXJFeHRlbmRlZFNS
R0JBIGNvbnZlcnNpb25zLgogCiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4
dGVuZGVkU1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJl
dHVybiB0b0xpbmVhck5vbkNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7Cisg
ICAgcmV0dXJuIHRvTGluZWFyPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1
bmN0aW9uTW9kZTo6VW5jbGFtcGVkPj4oY29sb3IpOwogfQogCiBFeHRlbmRlZFNSR0JBPGZsb2F0
PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9y
KQogewotICAgIHJldHVybiBmcm9tTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rp
b24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29kZWQ8U1JHQlRyYW5zZmVyRnVuY3Rp
b248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpVbmNsYW1wZWQ+Pihjb2xvcik7CiB9CiAK
IC8vIFNSR0JBIDwtPiBMaW5lYXJTUkdCQSBjb252ZXJzaW9ucy4KIAogTGluZWFyU1JHQkE8Zmxv
YXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1
cm4gdG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJl
dHVybiB0b0xpbmVhcjxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlv
bk1vZGU6OkNsYW1wZWQ+Pihjb2xvcik7CiB9CiAKIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGZyb21MaW5lYXJDbGFt
cGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNs
YW1wZWQ+Pihjb2xvcik7CiB9CiAKIC8vIE1BUks6IE1hdHJpeCBjb252ZXJzaW9ucyAodG8gYW5k
IGZyb20gWFlaIGZvciBhbGwgbGluZWFyIGNvbG9yIHR5cGVzKS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lv
biAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZl
cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjIgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9yIGNvbG9ycyB0aGF0IGNhbiBiZSBn
YW1tYSBlbmNvZGVkLgotCi1zdHJ1Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3Rh
dGljIGZsb2F0IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRv
TGluZWFyQ2xhbXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0
KTsKLX07Ci0KLXN0cnVjdCBTUkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3RhdGljIGZsb2F0
IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRvTGluZWFyQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxv
YXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0KTsKLX07Ci0K
IC8vIEFsbCBjb2xvciB0eXBlcyBtdXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5n
IGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgogLy8gICAgWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKIC8vICAgIENvbG9yVHlw
ZTxmbG9hdD4gdG9Db2xvclR5cGUoY29uc3QgWFlaQTxmbG9hdD4mKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNb2RlbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBbHBoYVRyYWl0
czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRSYW5nZTsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgSFNMTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSE1vZGVsOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWJNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgUkdCTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFhZWk1vZGVsOworCisK
K3RlbXBsYXRlPD4gc3RydWN0IEFscGhhVHJhaXRzPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBmbG9hdCB0cmFuc3BhcmVudCA9IDAuMGY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dCBvcGFxdWUgPSAxLjBmOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8dWlu
dDhfdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cmFuc3BhcmVudCA9IDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IG9wYXF1ZSA9IDI1NTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvckNvbXBvbmVudFJhbmdlIHsKKyAgICBUIG1pbjsKKyAg
ICBUIG1heDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0s
CisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
bnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIU0xNb2RlbDxmbG9h
dD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdl
PGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDM2MCB9LAorICAgICAgICB7IDAs
IDEwMCB9LAorICAgICAgICB7IDAsIDEwMCB9CisgICAgfSB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTGFi
TW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21w
b25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KKyAgICB9IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTENITW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAg
ICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAg
ICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCisgICAg
ICAgIHsgMCwgMzYwIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52
ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAxIH0sCisgICAgICAgIHsgMCwgMSB9
LAorICAgICAgICB7IDAsIDEgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFJHQk1vZGVsPHVp
bnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRS
YW5nZTx1aW50OF90PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDI1NSB9LAorICAgICAg
ICB7IDAsIDI1NSB9LAorICAgICAgICB7IDAsIDI1NSB9CisgICAgfSB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgWFlaTW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29s
b3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjppbmZpbml0eSgpIH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAor
ICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVy
RnVuY3Rpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9y
IGNvbG9ycyB0aGF0IGNhbiBiZSBnYW1tYSBlbmNvZGVkLgorCitlbnVtIGNsYXNzIFRyYW5zZmVy
RnVuY3Rpb25Nb2RlIDogdWludDhfdCB7CisgICAgQ2xhbXBlZCwKKyAgICBVbmNsYW1wZWQKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1vZGU+CitzdHJ1
Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7CisgICAgc3RhdGljIFQgdG9HYW1tYUVuY29kZWQo
VCk7CisgICAgc3RhdGljIFQgdG9MaW5lYXIoVCk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2RlPgorc3RydWN0IFNSR0JUcmFuc2ZlckZ1bmN0aW9u
IHsKKyAgICBzdGF0aWMgVCB0b0dhbW1hRW5jb2RlZChUKTsKKyAgICBzdGF0aWMgVCB0b0xpbmVh
cihUKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1v
ZGU+IFQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjxULCBtb2RlPjo6dG9HYW1tYUVuY29kZWQoVCBj
KQoreworICAgIGF1dG8gc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAg
ICBhdXRvIHJlc3VsdCA9IHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCAyNTYuMGYgLyA1NjMuMGYpICog
c2lnbjsKKyAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNs
YW1wZWQpCisgICAgICAgIHJldHVybiBjbGFtcFRvPFQ+KHJlc3VsdCwgMCwgMSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgVHJhbnNmZXJGdW5jdGlvbk1v
ZGUgbW9kZT4gVCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0b0xpbmVhcihUIGMp
Cit7CisgICAgYXV0byBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOworICAg
IGF1dG8gc3RkOjpwb3coc3RkOjphYnMoYyksIDU2My4wZiAvIDI1Ni4wZikgKiBzaWduOworICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6Q2xhbXBlZCkKKyAg
ICAgICAgcmV0dXJuIGNsYW1wVG88VD4ocmVzdWx0LCAwLCAxKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUcmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2RlPiBU
IFNSR0JUcmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0b0dhbW1hRW5jb2RlZChUIGMpCit7Cisg
ICAgaWYgY29uc3RleHByIChtb2RlID09IFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVkKSB7
CisgICAgICAgIGlmIChjIDwgMC4wMDMxMzA4ZikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
eDxUPigxMi45MmYgKiBjLCAwKTsKKyAgICAgICAgcmV0dXJuIGNsYW1wVG88VD4oMS4wNTVmICog
c3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBhdXRvIHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEuMGY7CisgICAg
ICAgIGMgPSBzdGQ6OmFicyhjKTsKKworICAgICAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCisgICAg
ICAgICAgICByZXR1cm4gMTIuOTJmICogYyAqIHNpZ247CisgICAgICAgIHJldHVybiAoMS4wNTVm
ICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmKSAqIHNpZ247CisgICAgfQorfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUcmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2RlPiBUIFNSR0JU
cmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0b0xpbmVhcihUIGMpCit7CisgICAgaWYgY29uc3Rl
eHByIChtb2RlID09IFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVkKSB7CisgICAgICAgIGlm
IChjIDw9IDAuMDQwNDVmKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihjIC8g
MTIuOTJmLCAwKTsKKyAgICAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0ZDo6cG93KChjICsg
MC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAsIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGF1
dG8gc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICAgICAgYyA9IHN0
ZDo6YWJzKGMpOworCisgICAgICAgIGlmIChjIDw9IDAuMDQwNDVmKQorICAgICAgICAgICAgcmV0
dXJuIGMgLyAxMi45MmYgKiBzaWduOworICAgICAgICByZXR1cm4gc3RkOjpwb3coKGMgKyAwLjA1
NWYpIC8gMS4wNTVmLCAyLjRmKSAqIHNpZ247CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZpc2lvbiAyNzIw
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDMyICsyNiwyMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDb2xvckNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJDb2xvck1vZGVsLmgiCiAjaW5jbHVkZSAi
Q29sb3JTcGFjZS5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBOThSR0I7Ci10ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IEFscGhhVHJhaXRzOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNv
bXBvbmVudFJhbmdlOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEaXNwbGF5UDM7Ci10ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IEV4dGVuZGVkU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhTTEE7
Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhTTE1vZGVsOwogdGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBMQ0hBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMQ0hNb2RlbDsKIHRlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGFiOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWJN
b2RlbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyQTk4UkdCOwogdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDM7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IExpbmVhckV4dGVuZGVkU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVh
clNSR0JBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBSR0JNb2RlbDsKIHRlbXBsYXRlPHR5
cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFhZWjsKLXRl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgWFlaTW9kZWw7Ci0KIAogLy8gTUFSSzogTWFrZSBmdW5j
dGlvbnMuCiAKQEAgLTEyOSw4NiArMTIwLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
LCB0eXBlbmFtZSBULAogICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHM8Q29sb3JUeXBlPihD
b2xvckNvbXBvbmVudHMgeyBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMD4oYzEpLCBjbGFt
cGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMT4oYzIpLCBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlw
ZSwgMj4oYzMpLCBhbHBoYSB9KTsKIH0KIAotLy8gTUFSSzogLSBNb2RlbHMKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0
IHRyYW5zcGFyZW50ID0gMC4wZjsKLSAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0IG9wYXF1ZSA9
IDEuMGY7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBbHBoYVRyYWl0czx1aW50OF90PiB7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHRyYW5zcGFyZW50ID0gMDsKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQ4X3Qgb3BhcXVlID0gMjU1OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IENvbG9yQ29tcG9uZW50UmFuZ2UgewotICAgIFQgbWluOwotICAgIFQgbWF4Owot
fTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDxmbG9hdD4gewotICAgIHN0
YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4g
cmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAgICAg
eyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUg
PSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhTTE1vZGVsPGZsb2F0PiB7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAz
PiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMzYwIH0sCi0gICAgICAgIHsgMCwgMTAwIH0sCi0g
ICAgICAgIHsgMCwgMTAwIH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
SW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBMYWJNb2RlbDxmbG9h
dD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdl
PGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9
LAotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQotICAgIH0gfTsKLSAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTw+
IHN0cnVjdCBMQ0hNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJh
eTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IDAs
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgMCwg
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAwLCAz
NjAgfQotICAgIH0gfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0g
ZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBSR0JNb2RlbDxmbG9hdD4gewotICAgIHN0
YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4g
cmFuZ2VzIHsgewotICAgICAgICB7IDAsIDEgfSwKLSAgICAgICAgeyAwLCAxIH0sCi0gICAgICAg
IHsgMCwgMSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGli
bGUgPSB0cnVlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgUkdCTW9kZWw8dWludDhfdD4gewot
ICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPHVpbnQ4
X3Q+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMjU1IH0sCi0gICAgICAgIHsgMCwgMjU1
IH0sCi0gICAgICAgIHsgMCwgMjU1IH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBYWVpNb2Rl
bDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVu
dFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5
KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsg
LXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKLX07Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgdm9pZCBhc3NlcnRJblJhbmdlKFQgY29sb3Ip
CkBAIC0zMTQsNiArMjI1LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBOThSR0Ig
OiBSR0IKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBOThSR0IoVCwgVCwgVCwgVCkgLT4gQTk4
UkdCPFQ+OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGlzcGxheVAzIDogUkdCQVR5
cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj4geworICAgIHVzaW5nIFJHQkFUeXBlPERpc3Bs
YXlQMywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICB1c2luZyBMaW5lYXJDb3VudGVy
cGFydCA9IExpbmVhckRpc3BsYXlQMzxUPjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29s
b3JTcGFjZSA9IENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBEaXNwbGF5UDMoVCwgVCwgVCwgVCkgLT4gRGlzcGxheVAzPFQ+OworCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQSA6IFJHQkFUeXBlPEV4dGVuZGVkU1JHQkEsIFQs
IEV4dGVuZGVkUkdCTW9kZWw8VD4+IHsKICAgICB1c2luZyBSR0JBVHlwZTxFeHRlbmRlZFNSR0JB
LCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CiAgICAgdXNpbmcgTGluZWFyQ291
bnRlcnBhcnQgPSBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+OwpAQCAtMzUyLDEzICsyNzAsNiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU1JHQkEgOiBSR0JBCiB9OwogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4gU1JHQkE8VD47CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBSR0JBVHlwZTxEaXNwbGF5UDMsIFQsIFJHQk1vZGVs
PFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj46OlJH
QkFUeXBlOwotICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyRGlzcGxheVAzPFQ+
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6RGlz
cGxheVAzOwotfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBULCBULCBUKSAt
PiBEaXNwbGF5UDM8VD47Ci0KIC8vIE1BUks6IC0gTGFiIENvbG9yIFR5cGUuCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBMYWIgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMYWI8VD4+IHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3MjAz
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHN0ZDo6YXJy
YXk8dWludDhfdCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCAyNTY7IGkrKykgewogICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yID0gaSAvIDI1NS4w
ZjsKLSAgICAgICAgICAgICAgICBjb2xvciA9IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVh
ckNsYW1waW5nKGNvbG9yKTsKKyAgICAgICAgICAgICAgICBjb2xvciA9IFNSR0JUcmFuc2ZlckZ1
bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6Q2xhbXBlZD46OnRvTGluZWFyKGNv
bG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJv
dW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gYXJy
YXk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJh
bnNmb3JtQwogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAgICAg
ICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwotICAgICAgICAgICAgICAgIGNvbG9yID0g
U1JHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJDbGFtcGluZyhjb2xvcik7CisgICAgICAg
ICAgICAgICAgY29sb3IgPSBTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5j
dGlvbk1vZGU6OkNsYW1wZWQ+Ojp0b0dhbW1hRW5jb2RlZChjb2xvcik7CiAgICAgICAgICAgICAg
ICAgYXJyYXlbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZChjb2xvciAqIDI1NSkpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFycmF5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418679</attachid>
            <date>2021-01-28 16:28:12 -0800</date>
            <delta_ts>2021-01-28 19:00:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221105-20210128162812.patch</filename>
            <type>text/plain</type>
            <size>32312</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAxLTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IGNvbG9yIG1vZGVsIGFu
ZCB0cmFuc2ZlciBmdW5jdGlvbnMgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaW5ncyBhcmUgZ2V0dGluZyBhIGJp
dCBjcmFtcGVkIGluIENvbG9yVHlwZXMuaCBhbmQgQ29sb3JDb252ZXJzaW9ucy4KKyAgICAgICAg
VGhpcyBleHRyYWN0cyB0aGUgY29sb3IgbW9kZWxzIGludG8gQ29sb3JNb2RlbC5oIGFuZCBnYW1t
YSB0cmFuc2ZlciAKKyAgICAgICAgZnVuY3Rpb25zIGludG8gQ29sb3JUcmFuc2ZlckZ1bmN0aW9u
LmggYW5kIGdlbmVyYWxpemVkIHRoZSB0cmFuc2ZlcgorICAgICAgICBmdW5jdGlvbnMgYSBiaXQg
dG8gcmVkdWNlIHRoZSBjb2RlIHNpemUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaDoKKyAgICAgICAgTW92ZSBjb2RlIHRvIG5ldyBmaWxlcy4KKwogMjAyMS0wMS0yOCAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGxvZ2ljYWwgdmFyaWFudHMgb2YgJ3Njcm9sbC1wYWRkaW5nJyBhbmQgJ3Njcm9s
bC1tYXJnaW4nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3MjAzMykKKysrIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNTQsOCArMTE1
NCwxMCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckhhc2guaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvck1vZGVsLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlh
bGl6YXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JUeXBlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5MDgsNiArMzkwOCw4IEBACiAJCUJDMDZFREU0
MEJGRDZEMEQwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNlbGxFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RURFMjBCRkQ2RDBEMDA4NTZF
OUQgLyogSlNIVE1MVGFibGVDZWxsRWxlbWVudC5oICovOyB9OwogCQlCQzA2RUUwNTBCRkQ3MUFB
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RUUwMzBCRkQ3MUFBMDA4NTZFOUQgLyogSlNIVE1M
VGFibGVFbGVtZW50LmggKi87IH07CiAJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9h
dENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEwMTM3QzI1QzM2
MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMxMDEzN0IyNUMzNjI0QjAwREM3NzNDIC8qIENvbG9yTW9kZWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEw
MTM3RjI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEwMTM3RTI1QzM2MzE2MDBE
Qzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxMEQ3NjgxN0Q4RUU3MTAwNUUyNjI2IC8qIFJl
bmRlckJsb2NrRmxvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGQjQ1RjMxN0Q4RTM5MjAwNDQ0NDQ2IC8qIFJlbmRlckJsb2NrRmxvdy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMTI0RUU4MEMy
NjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVFNTBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oICov
OyB9OwogCQlCQzEyNEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJQcm9wLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVGRTBDMjY0NDdBMDA5
RTIzNDkgLyogSlNCYXJQcm9wLmggKi87IH07CkBAIC0xMzg5Miw2ICsxMzg5NCw4IEBACiAJCUJD
MDZGMjRDMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFRQcm9jZXNzb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJD
MDZGMjREMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252
ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdENvbnZlcnNp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxMDEzN0IyNUMzNjI0QjAwREM3
NzNDIC8qIENvbG9yTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNb2RlbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQzEwMTM3RTI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JU
cmFuc2ZlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yVHJhbnNmZXJGdW5jdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzEyNEVFNDBDMjY0MUNEMDA5RTIzNDkg
LyogQmFyUHJvcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFy
UHJvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU1MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
YXJQcm9wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU2MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmFyUHJvcC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTkxMCw4ICsyMTkxNCw4IEBACiAJ
CQkJNDQ1Nzc1RTQyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaCAqLywKIAkJCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZS5tbSAqLywKIAkJCQkxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9n
Z2luZ01hYy5tbSAqLywKLQkJCQlDRDhBQ0E4QzFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFSZW1v
dGVTb2Z0TGluay5tbSAqLywKIAkJCQlDRDhBQ0E4RDFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFS
ZW1vdGVTb2Z0TGluay5oICovLAorCQkJCUNEOEFDQThDMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRp
YVJlbW90ZVNvZnRMaW5rLm1tICovLAogCQkJCTkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBO
U1Njcm9sbGVySW1wRGV0YWlscy5oICovLAogCQkJCTUyRjUyRTEwMTRBMDEzNEYwMEFDQzM5NyAv
KiBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSAqLywKIAkJCQk0QjI3MDk4MTBBRjJFNUUwMDA2NTEy
N0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLywKQEAgLTI2NTY5LDEwICsyNjU3MywxMiBAQAogCQkJ
CTdDNTE0RTAwMjRBRjgwNTgwMDUwNzEwRiAvKiBDb2xvckNvbnZlcnNpb24uaCAqLywKIAkJCQkz
MTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCiAJCQkJN0NBQzZBRTgy
NDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmggKi8sCisJCQkJQkMxMDEzN0IyNUMzNjI0
QjAwREM3NzNDIC8qIENvbG9yTW9kZWwuaCAqLywKIAkJCQk3Q0QxRTY5MjI0QUJGNjI0MDA4OUM0
MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmNwcCAqLywKIAkJCQk3Q0QxRTY5MTI0QUJGNjI0MDA4
OUM0MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmggKi8sCiAJCQkJQkNBRkVEQUYyNTk2NkQwNTAw
MzBFNkFBIC8qIENvbG9yU3BhY2UuY3BwICovLAogCQkJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1
MiAvKiBDb2xvclNwYWNlLmggKi8sCisJCQkJQkMxMDEzN0UyNUMzNjMxNjAwREM3NzNDIC8qIENv
bG9yVHJhbnNmZXJGdW5jdGlvbi5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAv
KiBDb2xvclR5cGVzLmggKi8sCiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9y
VXRpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkU2Qzc2QzFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JV
dGlsaXRpZXMuaCAqLywKQEAgLTI3NDAwLDkgKzI3NDA2LDkgQEAKIAkJCQlDQkI2QjJEMjFDQjdB
REQwMDA5RURFMUEgLyogTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaCAqLywKIAkJCQk1MUFC
RjY0QzE2MzkyRTI4MDAxMzJBN0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwICovLAogCQkJCTUxRTY4
MjBGMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oICovLAorCQkJCUU0N0ZDOEEx
MjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLywKIAkJCQk4NjFDMkVB
MzEzRkI0RkREMDAwNjJBQkIgLyogTG9hZFRpbWluZy5jcHAgKi8sCiAJCQkJOEExMkUzNUMxMUZB
MzMyODAwMjU4MzZBIC8qIExvYWRUaW1pbmcuaCAqLywKLQkJCQlFNDdGQzhBMTI1Qjg0RDcxMDA1
NDk1RkMgLyogTG9hZFNjaGVkdWxpbmdNb2RlLmggKi8sCiAJCQkJQ0VFRkNENzcxOURCMzFGNzAw
Mzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCUNFRUZDRDc4MTlEQjMx
RjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJNTJGMTA4NjIxNjJC
NkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuY3BwICovLApAQCAtMzE0ODYsOSAr
MzE0OTIsMTEgQEAKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBp
biBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8qIENvbG9yTWF0
cml4LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzEwMTM3QzI1QzM2MjRCMDBEQzc3M0MgLyogQ29s
b3JNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMUU2OTMyNEFCRjYyNDAwODlDNDE5IC8q
IENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkRGNTgxMEE4RDVD
OTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUZFREI0MjU5
NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTAx
MzdGMjVDMzYzMTYwMERDNzczQyAvKiBDb2xvclRyYW5zZmVyRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBRjY2QjIzQkZDMzlFMDA0MDMwREEgLyogQ29sb3JVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5J
bmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjM3LDYgKzMzNjQ1LDcgQEAKIAkJCQk5NzU5RTk0
OTE0RUYxRDQ5MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1NkQzNzMyMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFFNjgyMTAxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyogTG9hZFNj
aGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTEyRTM1RDExRkEzMzI4MDAyNTgz
NkEgLyogTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDZFODFFRDcwQUI1RDVFOTAw
Qzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUM0M0RFNkIyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDMzNCw3ICszNDM0Myw2IEBACiAJCQkJNDM2NzA4RDUx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MzY3MDhENzEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RDkxMkQ5Q0E0QjAwMDQ0
MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENSdGNwUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM2NzA4REIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291
cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhERDEyRDlDQTRCMDAwNDQyMzQg
LyogUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOERG
MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzQ0NDgsNiArMzQ0NTYsNyBAQAogCQkJCTA3OEUwOTQyMTdEMTZFMUMwMDQyMEFB
MSAvKiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxOUU2RUM5MjU2NkQyNzgwMDJCNTAxMCAvKiBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI0MTdEMTREMUMwMDQyMEFBMSAvKiBSVENQ
ZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTE0RkUzMjI1QkVC
RDE5MDA5RDlGMjAgLyogUlRDUnRjcFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MkRFNEI4MjE5Mjg1QzAwMDc1RjNBNyAvKiBSVENSdHBDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVFMkM0MzYzMUJDRUUzMkIwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzQzhCMzUyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFJlY2Vp
dmVyV2l0aFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDk0OSw3ICszNDk1OCw2IEBA
CiAJCQkJNzFBNTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNW
R1BvaW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyog
TG9hZFNjaGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4QzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4RjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTkxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNv
bG9yTWF0cml4LmgiCisjaW5jbHVkZSAiQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAwLDEzNiAr
MTAxLDY0IEBAIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8g
TUFSSzogR2FtbWEgY29udmVyc2lvbnMuCiAKLWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246
OmZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCBjKQotewotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0
Pihmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBBOThSR0JUcmFu
c2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGZsb2F0IGMpCi17Ci0gICAgcmV0dXJuIGNs
YW1wVG88ZmxvYXQ+KHRvTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBB
OThSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKLXsK
LSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwotICAgIHJl
dHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgMjU2LjBmIC8gNTYzLjBmKSAqIHNpZ247Ci19Ci0K
LWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQg
YykKLXsKLSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwot
ICAgIHJldHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgNTYzLjBmIC8gMjU2LjBmKSAqIHNpZ247
Ci19Ci0KLWZsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyQ2xhbXBpbmcoZmxv
YXQgYykKLXsKLSAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
eDxmbG9hdD4oMTIuOTJmICogYywgMCk7Ci0KLSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oMS4w
NTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKLX0KLQotZmxv
YXQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKLXsKLSAg
ICBpZiAoYyA8PSAwLjA0MDQ1ZikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihjIC8g
MTIuOTJmLCAwKTsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAu
MDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQotZmxvYXQgU1JHQlRyYW5zZmVyRnVu
Y3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24g
PSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwot
Ci0gICAgaWYgKGMgPCAwLjAwMzEzMDhmKQotICAgICAgICByZXR1cm4gMTIuOTJmICogYyAqIHNp
Z247Ci0KLSAgICByZXR1cm4gKDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAu
MDU1ZikgKiBzaWduOwotfQotCi1mbG9hdCBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykg
PyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwotCi0gICAgaWYgKGMgPD0gMC4w
NDA0NWYpCi0gICAgICAgIHJldHVybiBjIC8gMTIuOTJmICogc2lnbjsKLQotICAgIHJldHVybiBz
dGQ6OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpICogc2lnbjsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gdG9M
aW5lYXJDbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4gdHlwZW5hbWUgVDo6TGluZWFyQ291bnRl
cnBhcnQKLXsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsKLSAgICByZXR1
cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5j
dGlvbjo6dG9MaW5lYXJDbGFtcGluZyhjMiksIFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xh
bXBpbmcoYzMpLCBhbHBoYSB9OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0
aW9uLCB0eXBlbmFtZSBUPiBzdGF0aWMgYXV0byBmcm9tTGluZWFyQ2xhbXBpbmcoY29uc3QgVCYg
Y29sb3IpIC0+IHR5cGVuYW1lIFQ6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0Ci17Ci0gICAgYXV0
byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5j
dGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ckNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMzKSwg
YWxwaGEgfTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5h
bWUgVD4gc3RhdGljIGF1dG8gdG9MaW5lYXJOb25DbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4g
dHlwZW5hbWUgVDo6TGluZWFyQ291bnRlcnBhcnQKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYW5zZmVy
RnVuY3Rpb24sIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGF1dG8gdG9MaW5lYXIoY29uc3Qg
Q29sb3JUeXBlJiBjb2xvcikgLT4gdHlwZW5hbWUgQ29sb3JUeXBlOjpMaW5lYXJDb3VudGVycGFy
dAogewogICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbG9yOwotICAgIHJldHVybiB7
IFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0
aW9uOjp0b0xpbmVhck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhjMyksIGFscGhhIH07CisgICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6
dG9MaW5lYXIoYzEpLCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhcihjMiksIFRyYW5zZmVyRnVu
Y3Rpb246OnRvTGluZWFyKGMzKSwgYWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVHJh
bnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gZnJvbUxpbmVhck5vbkNsYW1w
aW5nKGNvbnN0IFQmIGNvbG9yKSAtPiB0eXBlbmFtZSBUOjpHYW1tYUVuY29kZWRDb3VudGVycGFy
dAordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgQ29sb3JUeXBl
PiBzdGF0aWMgYXV0byB0b0dhbW1hRW5jb2RlZChjb25zdCBDb2xvclR5cGUmIGNvbG9yKSAtPiB0
eXBlbmFtZSBDb2xvclR5cGU6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0CiB7CiAgICAgYXV0byBb
YzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlv
bjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5n
KGMzKSwgYWxwaGEgfTsKKyAgICByZXR1cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0dhbW1hRW5j
b2RlZChjMSksIFRyYW5zZmVyRnVuY3Rpb246OnRvR2FtbWFFbmNvZGVkKGMyKSwgVHJhbnNmZXJG
dW5jdGlvbjo6dG9HYW1tYUVuY29kZWQoYzMpLCBhbHBoYSB9OwogfQogCiAvLyBBOThSR0IgPC0+
IExpbmVhckE5OFJHQiBjb252ZXJzaW9ucy4KIAogTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVh
ckE5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9MaW5l
YXJDbGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CisgICAgcmV0dXJuIHRv
TGluZWFyPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2Rl
OjpDbGFtcGVkPj4oY29sb3IpOwogfQogCiBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IExp
bmVhckE5OFJHQjxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8QTk4UkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6
Q2xhbXBlZD4+KGNvbG9yKTsKIH0KIAogLy8gRGlzcGxheVAzIDwtPiBMaW5lYXJEaXNwbGF5UDMg
Y29udmVyc2lvbnMuCiAKIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyQ2xh
bXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9MaW5lYXI8
U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVk
Pj4oY29sb3IpOwogfQogCiBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29k
ZWQ8U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFt
cGVkPj4oY29sb3IpOwogfQogCiAvLyBFeHRlbmRlZFNSR0JBIDwtPiBMaW5lYXJFeHRlbmRlZFNS
R0JBIGNvbnZlcnNpb25zLgogCiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4
dGVuZGVkU1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJl
dHVybiB0b0xpbmVhck5vbkNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7Cisg
ICAgcmV0dXJuIHRvTGluZWFyPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1
bmN0aW9uTW9kZTo6VW5jbGFtcGVkPj4oY29sb3IpOwogfQogCiBFeHRlbmRlZFNSR0JBPGZsb2F0
PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9y
KQogewotICAgIHJldHVybiBmcm9tTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rp
b24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29kZWQ8U1JHQlRyYW5zZmVyRnVuY3Rp
b248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpVbmNsYW1wZWQ+Pihjb2xvcik7CiB9CiAK
IC8vIFNSR0JBIDwtPiBMaW5lYXJTUkdCQSBjb252ZXJzaW9ucy4KIAogTGluZWFyU1JHQkE8Zmxv
YXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1
cm4gdG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJl
dHVybiB0b0xpbmVhcjxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlv
bk1vZGU6OkNsYW1wZWQ+Pihjb2xvcik7CiB9CiAKIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGZyb21MaW5lYXJDbGFt
cGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNs
YW1wZWQ+Pihjb2xvcik7CiB9CiAKIC8vIE1BUks6IE1hdHJpeCBjb252ZXJzaW9ucyAodG8gYW5k
IGZyb20gWFlaIGZvciBhbGwgbGluZWFyIGNvbG9yIHR5cGVzKS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lv
biAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZl
cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjIgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9yIGNvbG9ycyB0aGF0IGNhbiBiZSBn
YW1tYSBlbmNvZGVkLgotCi1zdHJ1Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3Rh
dGljIGZsb2F0IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRv
TGluZWFyQ2xhbXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0
KTsKLX07Ci0KLXN0cnVjdCBTUkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3RhdGljIGZsb2F0
IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRvTGluZWFyQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxv
YXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0KTsKLX07Ci0K
IC8vIEFsbCBjb2xvciB0eXBlcyBtdXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5n
IGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgogLy8gICAgWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKIC8vICAgIENvbG9yVHlw
ZTxmbG9hdD4gdG9Db2xvclR5cGUoY29uc3QgWFlaQTxmbG9hdD4mKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNb2RlbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBbHBoYVRyYWl0
czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRSYW5nZTsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgSFNMTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSE1vZGVsOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWJNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgUkdCTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFhZWk1vZGVsOworCisK
K3RlbXBsYXRlPD4gc3RydWN0IEFscGhhVHJhaXRzPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBmbG9hdCB0cmFuc3BhcmVudCA9IDAuMGY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dCBvcGFxdWUgPSAxLjBmOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8dWlu
dDhfdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cmFuc3BhcmVudCA9IDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IG9wYXF1ZSA9IDI1NTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvckNvbXBvbmVudFJhbmdlIHsKKyAgICBUIG1pbjsKKyAg
ICBUIG1heDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0s
CisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
bnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIU0xNb2RlbDxmbG9h
dD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdl
PGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDM2MCB9LAorICAgICAgICB7IDAs
IDEwMCB9LAorICAgICAgICB7IDAsIDEwMCB9CisgICAgfSB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTGFi
TW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21w
b25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KKyAgICB9IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTENITW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAg
ICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAg
ICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCisgICAg
ICAgIHsgMCwgMzYwIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52
ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAxIH0sCisgICAgICAgIHsgMCwgMSB9
LAorICAgICAgICB7IDAsIDEgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFJHQk1vZGVsPHVp
bnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRS
YW5nZTx1aW50OF90PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDI1NSB9LAorICAgICAg
ICB7IDAsIDI1NSB9LAorICAgICAgICB7IDAsIDI1NSB9CisgICAgfSB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgWFlaTW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29s
b3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjppbmZpbml0eSgpIH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAor
ICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVy
RnVuY3Rpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9y
IGNvbG9ycyB0aGF0IGNhbiBiZSBnYW1tYSBlbmNvZGVkLgorCitlbnVtIGNsYXNzIFRyYW5zZmVy
RnVuY3Rpb25Nb2RlIDogdWludDhfdCB7CisgICAgQ2xhbXBlZCwKKyAgICBVbmNsYW1wZWQKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1vZGU+CitzdHJ1
Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7CisgICAgc3RhdGljIFQgdG9HYW1tYUVuY29kZWQo
VCk7CisgICAgc3RhdGljIFQgdG9MaW5lYXIoVCk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2RlPgorc3RydWN0IFNSR0JUcmFuc2ZlckZ1bmN0aW9u
IHsKKyAgICBzdGF0aWMgVCB0b0dhbW1hRW5jb2RlZChUKTsKKyAgICBzdGF0aWMgVCB0b0xpbmVh
cihUKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1v
ZGU+IFQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjxULCBtb2RlPjo6dG9HYW1tYUVuY29kZWQoVCBj
KQoreworICAgIGF1dG8gc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAg
ICBhdXRvIHJlc3VsdCA9IHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCAyNTYuMGYgLyA1NjMuMGYpICog
c2lnbjsKKyAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNs
YW1wZWQpCisgICAgICAgIHJldHVybiBjbGFtcFRvPFQ+KHJlc3VsdCwgMCwgMSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgVHJhbnNmZXJGdW5jdGlvbk1v
ZGUgbW9kZT4gVCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0b0xpbmVhcihUIGMp
Cit7CisgICAgYXV0byBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOworICAg
IGF1dG8gcmVzdWx0ID0gc3RkOjpwb3coc3RkOjphYnMoYyksIDU2My4wZiAvIDI1Ni4wZikgKiBz
aWduOworICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6Q2xh
bXBlZCkKKyAgICAgICAgcmV0dXJuIGNsYW1wVG88VD4ocmVzdWx0LCAwLCAxKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUcmFuc2ZlckZ1bmN0aW9uTW9k
ZSBtb2RlPiBUIFNSR0JUcmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0b0dhbW1hRW5jb2RlZChU
IGMpCit7CisgICAgaWYgY29uc3RleHByIChtb2RlID09IFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpD
bGFtcGVkKSB7CisgICAgICAgIGlmIChjIDwgMC4wMDMxMzA4ZikKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1heDxUPigxMi45MmYgKiBjLCAwKTsKKyAgICAgICAgcmV0dXJuIGNsYW1wVG88VD4o
MS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBhdXRvIHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEu
MGY7CisgICAgICAgIGMgPSBzdGQ6OmFicyhjKTsKKworICAgICAgICBpZiAoYyA8IDAuMDAzMTMw
OGYpCisgICAgICAgICAgICByZXR1cm4gMTIuOTJmICogYyAqIHNpZ247CisgICAgICAgIHJldHVy
biAoMS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmKSAqIHNpZ247Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUcmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2Rl
PiBUIFNSR0JUcmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0b0xpbmVhcihUIGMpCit7CisgICAg
aWYgY29uc3RleHByIChtb2RlID09IFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVkKSB7Cisg
ICAgICAgIGlmIChjIDw9IDAuMDQwNDVmKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZs
b2F0PihjIC8gMTIuOTJmLCAwKTsKKyAgICAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0ZDo6
cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAsIDEpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGF1dG8gc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICAg
ICAgYyA9IHN0ZDo6YWJzKGMpOworCisgICAgICAgIGlmIChjIDw9IDAuMDQwNDVmKQorICAgICAg
ICAgICAgcmV0dXJuIGMgLyAxMi45MmYgKiBzaWduOworICAgICAgICByZXR1cm4gc3RkOjpwb3co
KGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRmKSAqIHNpZ247CisgICAgfQorfQorCit9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZp
c2lvbiAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5
cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMyICsyNiwyMyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJDb2xvck1vZGVsLmgiCiAj
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBOThSR0I7Ci10ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IEFscGhhVHJhaXRzOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBDb2xvckNvbXBvbmVudFJhbmdlOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEaXNwbGF5
UDM7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw7CiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVkU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IEhTTEE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhTTE1vZGVsOwogdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBMQ0hBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMQ0hNb2Rl
bDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGFiOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBMYWJNb2RlbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyQTk4UkdCOwog
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDM7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IExpbmVhckV4dGVuZGVkU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IExpbmVhclNSR0JBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBSR0JNb2RlbDsKIHRl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IFhZWjsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgWFlaTW9kZWw7Ci0KIAogLy8gTUFSSzog
TWFrZSBmdW5jdGlvbnMuCiAKQEAgLTEyOSw4NiArMTIwLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29sb3JUeXBlLCB0eXBlbmFtZSBULAogICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHM8Q29s
b3JUeXBlPihDb2xvckNvbXBvbmVudHMgeyBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMD4o
YzEpLCBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMT4oYzIpLCBjbGFtcGVkQ29tcG9uZW50
PENvbG9yVHlwZSwgMj4oYzMpLCBhbHBoYSB9KTsKIH0KIAotLy8gTUFSSzogLSBNb2RlbHMKLQot
dGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIGZsb2F0IHRyYW5zcGFyZW50ID0gMC4wZjsKLSAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0
IG9wYXF1ZSA9IDEuMGY7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBbHBoYVRyYWl0czx1aW50
OF90PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHRyYW5zcGFyZW50ID0gMDsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qgb3BhcXVlID0gMjU1OwotfTsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yQ29tcG9uZW50UmFuZ2UgewotICAgIFQgbWluOwotICAg
IFQgbWF4OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDxmbG9hdD4g
ewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZs
b2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwK
LSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lu
dmVydGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhTTE1vZGVsPGZsb2F0
PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8
ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMzYwIH0sCi0gICAgICAgIHsgMCwg
MTAwIH0sCi0gICAgICAgIHsgMCwgMTAwIH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBMYWJN
b2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBv
bmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IDAsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQotICAgIH0gfTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBMQ0hNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIg
c3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAg
ICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAg
ICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAg
ICAgeyAwLCAzNjAgfQotICAgIH0gfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZl
cnRpYmxlID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBSR0JNb2RlbDxmbG9hdD4g
ewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZs
b2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IDAsIDEgfSwKLSAgICAgICAgeyAwLCAxIH0s
Ci0gICAgICAgIHsgMCwgMSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0ludmVydGlibGUgPSB0cnVlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgUkdCTW9kZWw8dWlu
dDhfdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJh
bmdlPHVpbnQ4X3Q+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMjU1IH0sCi0gICAgICAg
IHsgMCwgMjU1IH0sCi0gICAgICAgIHsgMCwgMjU1IH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVj
dCBYWVpNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xv
ckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0g
ICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKLX07Ci0KICNpZiBBU1NFUlRfRU5B
QkxFRAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgdm9pZCBhc3NlcnRJblJhbmdl
KFQgY29sb3IpCkBAIC0zMTQsNiArMjI1LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBBOThSR0IgOiBSR0IKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBOThSR0IoVCwgVCwgVCwg
VCkgLT4gQTk4UkdCPFQ+OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGlzcGxheVAz
IDogUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj4geworICAgIHVzaW5nIFJHQkFU
eXBlPERpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICB1c2luZyBMaW5l
YXJDb3VudGVycGFydCA9IExpbmVhckRpc3BsYXlQMzxUPjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKK307Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBEaXNwbGF5UDMoVCwgVCwgVCwgVCkgLT4gRGlzcGxheVAzPFQ+OworCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQSA6IFJHQkFUeXBlPEV4dGVuZGVk
U1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8VD4+IHsKICAgICB1c2luZyBSR0JBVHlwZTxFeHRl
bmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CiAgICAgdXNpbmcg
TGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+OwpAQCAtMzUyLDEzICsy
NzAsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU1JHQkEgOiBSR0JBCiB9OwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4gU1JHQkE8VD47CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBSR0JBVHlwZTxEaXNwbGF5UDMsIFQs
IFJHQk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2Rl
bDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyRGlz
cGxheVAzPFQ+OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JT
cGFjZTo6RGlzcGxheVAzOwotfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBU
LCBULCBUKSAtPiBEaXNwbGF5UDM8VD47Ci0KIC8vIE1BUks6IC0gTGFiIENvbG9yIFR5cGUuCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMYWIgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxM
YWI8VD4+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHJldmlz
aW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUMKICAgICAgICAgICAg
IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yID0g
aSAvIDI1NS4wZjsKLSAgICAgICAgICAgICAgICBjb2xvciA9IFNSR0JUcmFuc2ZlckZ1bmN0aW9u
Ojp0b0xpbmVhckNsYW1waW5nKGNvbG9yKTsKKyAgICAgICAgICAgICAgICBjb2xvciA9IFNSR0JU
cmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6Q2xhbXBlZD46OnRv
TGluZWFyKGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gYXJyYXk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6dHJhbnNmb3JtQwogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFy
cmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAg
ICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwotICAgICAgICAgICAgICAg
IGNvbG9yID0gU1JHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJDbGFtcGluZyhjb2xvcik7
CisgICAgICAgICAgICAgICAgY29sb3IgPSBTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJh
bnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQ+Ojp0b0dhbW1hRW5jb2RlZChjb2xvcik7CiAgICAg
ICAgICAgICAgICAgYXJyYXlbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZChjb2xvciAq
IDI1NSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFycmF5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418693</attachid>
            <date>2021-01-28 19:00:27 -0800</date>
            <delta_ts>2021-01-29 08:59:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221105-20210128190026.patch</filename>
            <type>text/plain</type>
            <size>32581</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAxLTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IGNvbG9yIG1vZGVsIGFu
ZCB0cmFuc2ZlciBmdW5jdGlvbnMgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaW5ncyBhcmUgZ2V0dGluZyBhIGJp
dCBjcmFtcGVkIGluIENvbG9yVHlwZXMuaCBhbmQgQ29sb3JDb252ZXJzaW9ucy4KKyAgICAgICAg
VGhpcyBleHRyYWN0cyB0aGUgY29sb3IgbW9kZWxzIGludG8gQ29sb3JNb2RlbC5oIGFuZCBnYW1t
YSB0cmFuc2ZlciAKKyAgICAgICAgZnVuY3Rpb25zIGludG8gQ29sb3JUcmFuc2ZlckZ1bmN0aW9u
LmggYW5kIGdlbmVyYWxpemVkIHRoZSB0cmFuc2ZlcgorICAgICAgICBmdW5jdGlvbnMgYSBiaXQg
dG8gcmVkdWNlIHRoZSBjb2RlIHNpemUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaDoKKyAgICAgICAgTW92ZSBjb2RlIHRvIG5ldyBmaWxlcy4KKwogMjAyMS0wMS0yOCAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGxvZ2ljYWwgdmFyaWFudHMgb2YgJ3Njcm9sbC1wYWRkaW5nJyBhbmQgJ3Njcm9s
bC1tYXJnaW4nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3MjAzMykKKysrIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNTQsOCArMTE1
NCwxMCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckhhc2guaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvck1vZGVsLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlh
bGl6YXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JUeXBlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5MDgsNiArMzkwOCw4IEBACiAJCUJDMDZFREU0
MEJGRDZEMEQwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNlbGxFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RURFMjBCRkQ2RDBEMDA4NTZF
OUQgLyogSlNIVE1MVGFibGVDZWxsRWxlbWVudC5oICovOyB9OwogCQlCQzA2RUUwNTBCRkQ3MUFB
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RUUwMzBCRkQ3MUFBMDA4NTZFOUQgLyogSlNIVE1M
VGFibGVFbGVtZW50LmggKi87IH07CiAJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9h
dENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEwMTM3QzI1QzM2
MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMxMDEzN0IyNUMzNjI0QjAwREM3NzNDIC8qIENvbG9yTW9kZWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEw
MTM3RjI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEwMTM3RTI1QzM2MzE2MDBE
Qzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxMEQ3NjgxN0Q4RUU3MTAwNUUyNjI2IC8qIFJl
bmRlckJsb2NrRmxvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGQjQ1RjMxN0Q4RTM5MjAwNDQ0NDQ2IC8qIFJlbmRlckJsb2NrRmxvdy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMTI0RUU4MEMy
NjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVFNTBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oICov
OyB9OwogCQlCQzEyNEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJQcm9wLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVGRTBDMjY0NDdBMDA5
RTIzNDkgLyogSlNCYXJQcm9wLmggKi87IH07CkBAIC0xMzg5Miw2ICsxMzg5NCw4IEBACiAJCUJD
MDZGMjRDMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFRQcm9jZXNzb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJD
MDZGMjREMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252
ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdENvbnZlcnNp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxMDEzN0IyNUMzNjI0QjAwREM3
NzNDIC8qIENvbG9yTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNb2RlbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQzEwMTM3RTI1QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JU
cmFuc2ZlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yVHJhbnNmZXJGdW5jdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzEyNEVFNDBDMjY0MUNEMDA5RTIzNDkg
LyogQmFyUHJvcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFy
UHJvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU1MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
YXJQcm9wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU2MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJQcm9wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmFyUHJvcC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTkxMCw4ICsyMTkxNCw4IEBACiAJ
CQkJNDQ1Nzc1RTQyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaCAqLywKIAkJCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZS5tbSAqLywKIAkJCQkxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9n
Z2luZ01hYy5tbSAqLywKLQkJCQlDRDhBQ0E4QzFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFSZW1v
dGVTb2Z0TGluay5tbSAqLywKIAkJCQlDRDhBQ0E4RDFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFS
ZW1vdGVTb2Z0TGluay5oICovLAorCQkJCUNEOEFDQThDMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRp
YVJlbW90ZVNvZnRMaW5rLm1tICovLAogCQkJCTkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBO
U1Njcm9sbGVySW1wRGV0YWlscy5oICovLAogCQkJCTUyRjUyRTEwMTRBMDEzNEYwMEFDQzM5NyAv
KiBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSAqLywKIAkJCQk0QjI3MDk4MTBBRjJFNUUwMDA2NTEy
N0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLywKQEAgLTI2NTY5LDEwICsyNjU3MywxMiBAQAogCQkJ
CTdDNTE0RTAwMjRBRjgwNTgwMDUwNzEwRiAvKiBDb2xvckNvbnZlcnNpb24uaCAqLywKIAkJCQkz
MTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCiAJCQkJN0NBQzZBRTgy
NDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmggKi8sCisJCQkJQkMxMDEzN0IyNUMzNjI0
QjAwREM3NzNDIC8qIENvbG9yTW9kZWwuaCAqLywKIAkJCQk3Q0QxRTY5MjI0QUJGNjI0MDA4OUM0
MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmNwcCAqLywKIAkJCQk3Q0QxRTY5MTI0QUJGNjI0MDA4
OUM0MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmggKi8sCiAJCQkJQkNBRkVEQUYyNTk2NkQwNTAw
MzBFNkFBIC8qIENvbG9yU3BhY2UuY3BwICovLAogCQkJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1
MiAvKiBDb2xvclNwYWNlLmggKi8sCisJCQkJQkMxMDEzN0UyNUMzNjMxNjAwREM3NzNDIC8qIENv
bG9yVHJhbnNmZXJGdW5jdGlvbi5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAv
KiBDb2xvclR5cGVzLmggKi8sCiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9y
VXRpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkU2Qzc2QzFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JV
dGlsaXRpZXMuaCAqLywKQEAgLTI3NDAwLDkgKzI3NDA2LDkgQEAKIAkJCQlDQkI2QjJEMjFDQjdB
REQwMDA5RURFMUEgLyogTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaCAqLywKIAkJCQk1MUFC
RjY0QzE2MzkyRTI4MDAxMzJBN0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwICovLAogCQkJCTUxRTY4
MjBGMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oICovLAorCQkJCUU0N0ZDOEEx
MjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLywKIAkJCQk4NjFDMkVB
MzEzRkI0RkREMDAwNjJBQkIgLyogTG9hZFRpbWluZy5jcHAgKi8sCiAJCQkJOEExMkUzNUMxMUZB
MzMyODAwMjU4MzZBIC8qIExvYWRUaW1pbmcuaCAqLywKLQkJCQlFNDdGQzhBMTI1Qjg0RDcxMDA1
NDk1RkMgLyogTG9hZFNjaGVkdWxpbmdNb2RlLmggKi8sCiAJCQkJQ0VFRkNENzcxOURCMzFGNzAw
Mzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCUNFRUZDRDc4MTlEQjMx
RjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJNTJGMTA4NjIxNjJC
NkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuY3BwICovLApAQCAtMzE0ODYsOSAr
MzE0OTIsMTEgQEAKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBp
biBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8qIENvbG9yTWF0
cml4LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzEwMTM3QzI1QzM2MjRCMDBEQzc3M0MgLyogQ29s
b3JNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMUU2OTMyNEFCRjYyNDAwODlDNDE5IC8q
IENvbG9yU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkRGNTgxMEE4RDVD
OTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUZFREI0MjU5
NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTAx
MzdGMjVDMzYzMTYwMERDNzczQyAvKiBDb2xvclRyYW5zZmVyRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBRjY2QjIzQkZDMzlFMDA0MDMwREEgLyogQ29sb3JVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5J
bmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjM3LDYgKzMzNjQ1LDcgQEAKIAkJCQk5NzU5RTk0
OTE0RUYxRDQ5MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1NkQzNzMyMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFFNjgyMTAxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyogTG9hZFNj
aGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTEyRTM1RDExRkEzMzI4MDAyNTgz
NkEgLyogTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDZFODFFRDcwQUI1RDVFOTAw
Qzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUM0M0RFNkIyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDMzNCw3ICszNDM0Myw2IEBACiAJCQkJNDM2NzA4RDUx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MzY3MDhENzEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RDkxMkQ5Q0E0QjAwMDQ0
MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENSdGNwUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM2NzA4REIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291
cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhERDEyRDlDQTRCMDAwNDQyMzQg
LyogUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOERG
MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzQ0NDgsNiArMzQ0NTYsNyBAQAogCQkJCTA3OEUwOTQyMTdEMTZFMUMwMDQyMEFB
MSAvKiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxOUU2RUM5MjU2NkQyNzgwMDJCNTAxMCAvKiBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI0MTdEMTREMUMwMDQyMEFBMSAvKiBSVENQ
ZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTE0RkUzMjI1QkVC
RDE5MDA5RDlGMjAgLyogUlRDUnRjcFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MkRFNEI4MjE5Mjg1QzAwMDc1RjNBNyAvKiBSVENSdHBDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVFMkM0MzYzMUJDRUUzMkIwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzQzhCMzUyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFJlY2Vp
dmVyV2l0aFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDk0OSw3ICszNDk1OCw2IEBA
CiAJCQkJNzFBNTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNW
R1BvaW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyog
TG9hZFNjaGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4QzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4RjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTkxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNv
bG9yTWF0cml4LmgiCisjaW5jbHVkZSAiQ29sb3JUcmFuc2ZlckZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAwLDEzNiAr
MTAxLDY0IEBAIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8g
TUFSSzogR2FtbWEgY29udmVyc2lvbnMuCiAKLWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246
OmZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCBjKQotewotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0
Pihmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBBOThSR0JUcmFu
c2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGZsb2F0IGMpCi17Ci0gICAgcmV0dXJuIGNs
YW1wVG88ZmxvYXQ+KHRvTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOwotfQotCi1mbG9hdCBB
OThSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKLXsK
LSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwotICAgIHJl
dHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgMjU2LjBmIC8gNTYzLjBmKSAqIHNpZ247Ci19Ci0K
LWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQg
YykKLXsKLSAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOwot
ICAgIHJldHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgNTYzLjBmIC8gMjU2LjBmKSAqIHNpZ247
Ci19Ci0KLWZsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyQ2xhbXBpbmcoZmxv
YXQgYykKLXsKLSAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
eDxmbG9hdD4oMTIuOTJmICogYywgMCk7Ci0KLSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oMS4w
NTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKLX0KLQotZmxv
YXQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKLXsKLSAg
ICBpZiAoYyA8PSAwLjA0MDQ1ZikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihjIC8g
MTIuOTJmLCAwKTsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAu
MDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQotZmxvYXQgU1JHQlRyYW5zZmVyRnVu
Y3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24g
PSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwot
Ci0gICAgaWYgKGMgPCAwLjAwMzEzMDhmKQotICAgICAgICByZXR1cm4gMTIuOTJmICogYyAqIHNp
Z247Ci0KLSAgICByZXR1cm4gKDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAu
MDU1ZikgKiBzaWduOwotfQotCi1mbG9hdCBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykg
PyAtMS4wZiA6IDEuMGY7Ci0gICAgYyA9IHN0ZDo6YWJzKGMpOwotCi0gICAgaWYgKGMgPD0gMC4w
NDA0NWYpCi0gICAgICAgIHJldHVybiBjIC8gMTIuOTJmICogc2lnbjsKLQotICAgIHJldHVybiBz
dGQ6OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpICogc2lnbjsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gdG9M
aW5lYXJDbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4gdHlwZW5hbWUgVDo6TGluZWFyQ291bnRl
cnBhcnQKLXsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsKLSAgICByZXR1
cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5j
dGlvbjo6dG9MaW5lYXJDbGFtcGluZyhjMiksIFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xh
bXBpbmcoYzMpLCBhbHBoYSB9OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0
aW9uLCB0eXBlbmFtZSBUPiBzdGF0aWMgYXV0byBmcm9tTGluZWFyQ2xhbXBpbmcoY29uc3QgVCYg
Y29sb3IpIC0+IHR5cGVuYW1lIFQ6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0Ci17Ci0gICAgYXV0
byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5j
dGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ckNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMzKSwg
YWxwaGEgfTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5h
bWUgVD4gc3RhdGljIGF1dG8gdG9MaW5lYXJOb25DbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4g
dHlwZW5hbWUgVDo6TGluZWFyQ291bnRlcnBhcnQKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYW5zZmVy
RnVuY3Rpb24sIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGF1dG8gdG9MaW5lYXIoY29uc3Qg
Q29sb3JUeXBlJiBjb2xvcikgLT4gdHlwZW5hbWUgQ29sb3JUeXBlOjpMaW5lYXJDb3VudGVycGFy
dAogewogICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbG9yOwotICAgIHJldHVybiB7
IFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0
aW9uOjp0b0xpbmVhck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhjMyksIGFscGhhIH07CisgICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6
dG9MaW5lYXIoYzEpLCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhcihjMiksIFRyYW5zZmVyRnVu
Y3Rpb246OnRvTGluZWFyKGMzKSwgYWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVHJh
bnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gZnJvbUxpbmVhck5vbkNsYW1w
aW5nKGNvbnN0IFQmIGNvbG9yKSAtPiB0eXBlbmFtZSBUOjpHYW1tYUVuY29kZWRDb3VudGVycGFy
dAordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgQ29sb3JUeXBl
PiBzdGF0aWMgYXV0byB0b0dhbW1hRW5jb2RlZChjb25zdCBDb2xvclR5cGUmIGNvbG9yKSAtPiB0
eXBlbmFtZSBDb2xvclR5cGU6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0CiB7CiAgICAgYXV0byBb
YzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0gICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlv
bjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5n
KGMzKSwgYWxwaGEgfTsKKyAgICByZXR1cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0dhbW1hRW5j
b2RlZChjMSksIFRyYW5zZmVyRnVuY3Rpb246OnRvR2FtbWFFbmNvZGVkKGMyKSwgVHJhbnNmZXJG
dW5jdGlvbjo6dG9HYW1tYUVuY29kZWQoYzMpLCBhbHBoYSB9OwogfQogCiAvLyBBOThSR0IgPC0+
IExpbmVhckE5OFJHQiBjb252ZXJzaW9ucy4KIAogTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVh
ckE5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9MaW5l
YXJDbGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CisgICAgcmV0dXJuIHRv
TGluZWFyPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2Rl
OjpDbGFtcGVkPj4oY29sb3IpOwogfQogCiBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IExp
bmVhckE5OFJHQjxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8QTk4UkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6
Q2xhbXBlZD4+KGNvbG9yKTsKIH0KIAogLy8gRGlzcGxheVAzIDwtPiBMaW5lYXJEaXNwbGF5UDMg
Y29udmVyc2lvbnMuCiAKIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyQ2xh
bXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9MaW5lYXI8
U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVk
Pj4oY29sb3IpOwogfQogCiBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBp
bmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29k
ZWQ8U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFt
cGVkPj4oY29sb3IpOwogfQogCiAvLyBFeHRlbmRlZFNSR0JBIDwtPiBMaW5lYXJFeHRlbmRlZFNS
R0JBIGNvbnZlcnNpb25zLgogCiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4
dGVuZGVkU1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJl
dHVybiB0b0xpbmVhck5vbkNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7Cisg
ICAgcmV0dXJuIHRvTGluZWFyPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1
bmN0aW9uTW9kZTo6VW5jbGFtcGVkPj4oY29sb3IpOwogfQogCiBFeHRlbmRlZFNSR0JBPGZsb2F0
PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9y
KQogewotICAgIHJldHVybiBmcm9tTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rp
b24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9HYW1tYUVuY29kZWQ8U1JHQlRyYW5zZmVyRnVuY3Rp
b248ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpVbmNsYW1wZWQ+Pihjb2xvcik7CiB9CiAK
IC8vIFNSR0JBIDwtPiBMaW5lYXJTUkdCQSBjb252ZXJzaW9ucy4KIAogTGluZWFyU1JHQkE8Zmxv
YXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1
cm4gdG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJl
dHVybiB0b0xpbmVhcjxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlv
bk1vZGU6OkNsYW1wZWQ+Pihjb2xvcik7CiB9CiAKIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGZyb21MaW5lYXJDbGFt
cGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5j
b2RlZDxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNs
YW1wZWQ+Pihjb2xvcik7CiB9CiAKIC8vIE1BUks6IE1hdHJpeCBjb252ZXJzaW9ucyAodG8gYW5k
IGZyb20gWFlaIGZvciBhbGwgbGluZWFyIGNvbG9yIHR5cGVzKS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lv
biAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZl
cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjIgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9yIGNvbG9ycyB0aGF0IGNhbiBiZSBn
YW1tYSBlbmNvZGVkLgotCi1zdHJ1Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3Rh
dGljIGZsb2F0IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRv
TGluZWFyQ2xhbXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0
KTsKLX07Ci0KLXN0cnVjdCBTUkdCVHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgc3RhdGljIGZsb2F0
IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRvTGluZWFyQ2xh
bXBpbmcoZmxvYXQpOwotICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxv
YXQpOwotICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0KTsKLX07Ci0K
IC8vIEFsbCBjb2xvciB0eXBlcyBtdXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5n
IGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgogLy8gICAgWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKIC8vICAgIENvbG9yVHlw
ZTxmbG9hdD4gdG9Db2xvclR5cGUoY29uc3QgWFlaQTxmbG9hdD4mKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVsLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNb2RlbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBbHBoYVRyYWl0
czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRSYW5nZTsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgSFNMTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSE1vZGVsOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWJNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgUkdCTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFhZWk1vZGVsOworCisK
K3RlbXBsYXRlPD4gc3RydWN0IEFscGhhVHJhaXRzPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBmbG9hdCB0cmFuc3BhcmVudCA9IDAuMGY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dCBvcGFxdWUgPSAxLjBmOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8dWlu
dDhfdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cmFuc3BhcmVudCA9IDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IG9wYXF1ZSA9IDI1NTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvckNvbXBvbmVudFJhbmdlIHsKKyAgICBUIG1pbjsKKyAg
ICBUIG1heDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0s
CisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
bnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIU0xNb2RlbDxmbG9h
dD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdl
PGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDM2MCB9LAorICAgICAgICB7IDAs
IDEwMCB9LAorICAgICAgICB7IDAsIDEwMCB9CisgICAgfSB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTGFi
TW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21w
b25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KKyAgICB9IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTENITW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAg
ICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAg
ICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCisgICAg
ICAgIHsgMCwgMzYwIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52
ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgUkdCTW9kZWw8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxm
bG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAxIH0sCisgICAgICAgIHsgMCwgMSB9
LAorICAgICAgICB7IDAsIDEgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFJHQk1vZGVsPHVp
bnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRS
YW5nZTx1aW50OF90PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDI1NSB9LAorICAgICAg
ICB7IDAsIDI1NSB9LAorICAgICAgICB7IDAsIDI1NSB9CisgICAgfSB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgWFlaTW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29s
b3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjppbmZpbml0eSgpIH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAor
ICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclRyYW5zZmVy
RnVuY3Rpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclRyYW5zZmVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUcmFuc2ZlciBmdW5jdGlvbnMgZm9y
IGNvbG9ycyB0aGF0IGNhbiBiZSBnYW1tYSBlbmNvZGVkLgorCitlbnVtIGNsYXNzIFRyYW5zZmVy
RnVuY3Rpb25Nb2RlIDogdWludDhfdCB7CisgICAgQ2xhbXBlZCwKKyAgICBVbmNsYW1wZWQKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1vZGU+CitzdHJ1
Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7CisgICAgc3RhdGljIFQgdG9HYW1tYUVuY29kZWQo
VCk7CisgICAgc3RhdGljIFQgdG9MaW5lYXIoVCk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2RlPgorc3RydWN0IFNSR0JUcmFuc2ZlckZ1bmN0aW9u
IHsKKyAgICBzdGF0aWMgVCB0b0dhbW1hRW5jb2RlZChUKTsKKyAgICBzdGF0aWMgVCB0b0xpbmVh
cihUKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1v
ZGU+IFQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjxULCBtb2RlPjo6dG9HYW1tYUVuY29kZWQoVCBj
KQoreworICAgIGF1dG8gc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAg
ICBhdXRvIHJlc3VsdCA9IHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCAyNTYuMGYgLyA1NjMuMGYpICog
c2lnbjsKKyAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNs
YW1wZWQpCisgICAgICAgIHJldHVybiBjbGFtcFRvPFQ+KHJlc3VsdCwgMCwgMSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgVHJhbnNmZXJGdW5jdGlvbk1v
ZGUgbW9kZT4gVCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0b0xpbmVhcihUIGMp
Cit7CisgICAgYXV0byBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOworICAg
IGF1dG8gcmVzdWx0ID0gc3RkOjpwb3coc3RkOjphYnMoYyksIDU2My4wZiAvIDI1Ni4wZikgKiBz
aWduOworICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6Q2xh
bXBlZCkKKyAgICAgICAgcmV0dXJuIGNsYW1wVG88VD4ocmVzdWx0LCAwLCAxKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUcmFuc2ZlckZ1bmN0aW9uTW9k
ZSBtb2RlPiBUIFNSR0JUcmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0b0dhbW1hRW5jb2RlZChU
IGMpCit7CisgICAgaWYgY29uc3RleHByIChtb2RlID09IFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpD
bGFtcGVkKSB7CisgICAgICAgIGlmIChjIDwgMC4wMDMxMzA4ZikKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1heDxUPigxMi45MmYgKiBjLCAwKTsKKyAgICAgICAgcmV0dXJuIGNsYW1wVG88VD4o
MS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBhdXRvIHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEu
MGY7CisgICAgICAgIGMgPSBzdGQ6OmFicyhjKTsKKworICAgICAgICBpZiAoYyA8IDAuMDAzMTMw
OGYpCisgICAgICAgICAgICByZXR1cm4gMTIuOTJmICogYyAqIHNpZ247CisgICAgICAgIHJldHVy
biAoMS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmKSAqIHNpZ247Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUcmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2Rl
PiBUIFNSR0JUcmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0b0xpbmVhcihUIGMpCit7CisgICAg
aWYgY29uc3RleHByIChtb2RlID09IFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVkKSB7Cisg
ICAgICAgIGlmIChjIDw9IDAuMDQwNDVmKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZs
b2F0PihjIC8gMTIuOTJmLCAwKTsKKyAgICAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0ZDo6
cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAsIDEpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGF1dG8gc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICAg
ICAgYyA9IHN0ZDo6YWJzKGMpOworCisgICAgICAgIGlmIChjIDw9IDAuMDQwNDVmKQorICAgICAg
ICAgICAgcmV0dXJuIGMgLyAxMi45MmYgKiBzaWduOworICAgICAgICByZXR1cm4gc3RkOjpwb3co
KGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRmKSAqIHNpZ247CisgICAgfQorfQorCit9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZp
c2lvbiAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5
cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMyICsyNiwyMyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJDb2xvck1vZGVsLmgiCiAj
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBOThSR0I7Ci10ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IEFscGhhVHJhaXRzOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBDb2xvckNvbXBvbmVudFJhbmdlOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEaXNwbGF5
UDM7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw7CiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVkU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IEhTTEE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhTTE1vZGVsOwogdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBMQ0hBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMQ0hNb2Rl
bDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGFiOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBMYWJNb2RlbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyQTk4UkdCOwog
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDM7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IExpbmVhckV4dGVuZGVkU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IExpbmVhclNSR0JBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBSR0JNb2RlbDsKIHRl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IFhZWjsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgWFlaTW9kZWw7Ci0KIAogLy8gTUFSSzog
TWFrZSBmdW5jdGlvbnMuCiAKQEAgLTEyOSw4NiArMTIwLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29sb3JUeXBlLCB0eXBlbmFtZSBULAogICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHM8Q29s
b3JUeXBlPihDb2xvckNvbXBvbmVudHMgeyBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMD4o
YzEpLCBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMT4oYzIpLCBjbGFtcGVkQ29tcG9uZW50
PENvbG9yVHlwZSwgMj4oYzMpLCBhbHBoYSB9KTsKIH0KIAotLy8gTUFSSzogLSBNb2RlbHMKLQot
dGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIGZsb2F0IHRyYW5zcGFyZW50ID0gMC4wZjsKLSAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0
IG9wYXF1ZSA9IDEuMGY7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBbHBoYVRyYWl0czx1aW50
OF90PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHRyYW5zcGFyZW50ID0gMDsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qgb3BhcXVlID0gMjU1OwotfTsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yQ29tcG9uZW50UmFuZ2UgewotICAgIFQgbWluOwotICAg
IFQgbWF4OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDxmbG9hdD4g
ewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZs
b2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwK
LSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lu
dmVydGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhTTE1vZGVsPGZsb2F0
PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8
ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMzYwIH0sCi0gICAgICAgIHsgMCwg
MTAwIH0sCi0gICAgICAgIHsgMCwgMTAwIH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBMYWJN
b2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBv
bmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IDAsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQotICAgIH0gfTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBMQ0hNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIg
c3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAg
ICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAg
ICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAg
ICAgeyAwLCAzNjAgfQotICAgIH0gfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZl
cnRpYmxlID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBSR0JNb2RlbDxmbG9hdD4g
ewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZs
b2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IDAsIDEgfSwKLSAgICAgICAgeyAwLCAxIH0s
Ci0gICAgICAgIHsgMCwgMSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0ludmVydGlibGUgPSB0cnVlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgUkdCTW9kZWw8dWlu
dDhfdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJh
bmdlPHVpbnQ4X3Q+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMjU1IH0sCi0gICAgICAg
IHsgMCwgMjU1IH0sCi0gICAgICAgIHsgMCwgMjU1IH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVj
dCBYWVpNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xv
ckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0g
ICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKLX07Ci0KICNpZiBBU1NFUlRfRU5B
QkxFRAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgdm9pZCBhc3NlcnRJblJhbmdl
KFQgY29sb3IpCkBAIC0zMTQsNiArMjI1LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBBOThSR0IgOiBSR0IKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBOThSR0IoVCwgVCwgVCwg
VCkgLT4gQTk4UkdCPFQ+OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGlzcGxheVAz
IDogUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj4geworICAgIHVzaW5nIFJHQkFU
eXBlPERpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICB1c2luZyBMaW5l
YXJDb3VudGVycGFydCA9IExpbmVhckRpc3BsYXlQMzxUPjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKK307Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBEaXNwbGF5UDMoVCwgVCwgVCwgVCkgLT4gRGlzcGxheVAzPFQ+OworCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQSA6IFJHQkFUeXBlPEV4dGVuZGVk
U1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8VD4+IHsKICAgICB1c2luZyBSR0JBVHlwZTxFeHRl
bmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CiAgICAgdXNpbmcg
TGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+OwpAQCAtMzUyLDEzICsy
NzAsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU1JHQkEgOiBSR0JBCiB9OwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4gU1JHQkE8VD47CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBSR0JBVHlwZTxEaXNwbGF5UDMsIFQs
IFJHQk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2Rl
bDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyRGlz
cGxheVAzPFQ+OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JT
cGFjZTo6RGlzcGxheVAzOwotfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBU
LCBULCBUKSAtPiBEaXNwbGF5UDM8VD47Ci0KIC8vIE1BUks6IC0gTGFiIENvbG9yIFR5cGUuCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMYWIgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxM
YWI8VD4+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHJldmlz
aW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBA
QAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKKyNpbmNs
dWRlICJDb2xvclRyYW5zZmVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmgiCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBJbWFnZUJ1
ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQwogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50
OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1
NjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwotICAg
ICAgICAgICAgICAgIGNvbG9yID0gU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBp
bmcoY29sb3IpOworICAgICAgICAgICAgICAgIGNvbG9yID0gU1JHQlRyYW5zZmVyRnVuY3Rpb248
ZmxvYXQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpDbGFtcGVkPjo6dG9MaW5lYXIoY29sb3IpOwog
ICAgICAgICAgICAgICAgIGFycmF5W2ldID0gc3RhdGljX2Nhc3Q8dWludDhfdD4ocm91bmQoY29s
b3IgKiAyNTUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBhcnJheTsKQEAg
LTExNSw3ICsxMTUsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1D
CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgICAgICAgICBm
bG9hdCBjb2xvciA9IGkgLyAyNTUuMGY7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBTUkdCVHJh
bnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGNvbG9yKTsKKyAgICAgICAgICAgICAg
ICBjb2xvciA9IFNSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9k
ZTo6Q2xhbXBlZD46OnRvR2FtbWFFbmNvZGVkKGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJh
eVtpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7Cg==
</data>
<flag name="commit-queue"
          id="436725"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418732</attachid>
            <date>2021-01-29 08:59:30 -0800</date>
            <delta_ts>2021-01-29 10:48:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221105-20210128190026.patch</filename>
            <type>text/plain</type>
            <size>29351</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAxLTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IGNvbG9yIG1vZGVsIGFu
ZCB0cmFuc2ZlciBmdW5jdGlvbnMgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaW5ncyBhcmUgZ2V0dGluZyBhIGJp
dCBjcmFtcGVkIGluIENvbG9yVHlwZXMuaCBhbmQgQ29sb3JDb252ZXJzaW9ucy4KKyAgICAgICAg
VGhpcyBleHRyYWN0cyB0aGUgY29sb3IgbW9kZWxzIGludG8gQ29sb3JNb2RlbHMuaCBhbmQgZ2Ft
bWEgdHJhbnNmZXIgCisgICAgICAgIGZ1bmN0aW9ucyBpbnRvIENvbG9yVHJhbnNmZXJGdW5jdGlv
bnMuaCBhbmQgZ2VuZXJhbGl6ZWQgdGhlIHRyYW5zZmVyCisgICAgICAgIGZ1bmN0aW9ucyBhIGJp
dCB0byByZWR1Y2UgdGhlIGNvZGUgc2l6ZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yTW9kZWxzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVHJhbnNmZXJGdW5jdGlvbnMuaDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclR5cGVzLmg6CisgICAgICAgIE1vdmUgY29kZSB0byBuZXcgZmlsZXMuCisKIDIwMjEtMDEt
MjggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBsb2dpY2FsIHZhcmlhbnRzIG9mICdzY3JvbGwtcGFkZGluZycgYW5kICdz
Y3JvbGwtbWFyZ2luJwpJbmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNzIwMzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU0LDgg
KzExNTQsMTAgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JIYXNoLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JNb2RlbHMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
U2VyaWFsaXphdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUcmFuc2ZlckZ1bmN0aW9ucy5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JUeXBlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRp
ZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNzIwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5MDgsNiArMzkwOCw4IEBACiAJCUJD
MDZFREU0MEJGRDZEMEQwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNlbGxFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RURFMjBCRkQ2RDBE
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVDZWxsRWxlbWVudC5oICovOyB9OwogCQlCQzA2RUUwNTBC
RkQ3MUFBMDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RUUwMzBCRkQ3MUFBMDA4NTZFOUQgLyog
SlNIVE1MVGFibGVFbGVtZW50LmggKi87IH07CiAJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAv
KiBGbG9hdENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzEwMTM3
QzI1QzM2MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTAxMzdCMjVDMzYyNEIwMERDNzczQyAvKiBDb2xv
ck1vZGVscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUJDMTAxMzdGMjVDMzYzMTYwMERDNzczQyAvKiBDb2xvclRyYW5zZmVyRnVuY3Rpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEwMTM3RTI1
QzM2MzE2MDBEQzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMTBENzY4MTdEOEVFNzEwMDVF
MjYyNiAvKiBSZW5kZXJCbG9ja0Zsb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRkI0NUYzMTdEOEUzOTIwMDQ0NDQ0NiAvKiBSZW5kZXJCbG9ja0Zs
b3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
QzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjRFRTUwQzI2NDFDRDAwOUUyMzQ5IC8qIEJh
clByb3AuaCAqLzsgfTsKIAkJQkMxMjRGMDAwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjRFRkUw
QzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5oICovOyB9OwpAQCAtMTM4OTIsNiArMTM4OTQs
OCBAQAogCQlCQzA2RjI0QzA2RDE4QTdFMDA0QTZGQTMgLyogWFNMVFByb2Nlc3Nvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU0xUUHJvY2Vz
c29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQlCQzA2RjI0RDA2RDE4QTdFMDA0QTZGQTMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkMwNzNCQTkwQzM5OUIxRjAwMEY1OTc5IC8q
IEZsb2F0Q29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxv
YXRDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTAxMzdCMjVD
MzYyNEIwMERDNzczQyAvKiBDb2xvck1vZGVscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvck1vZGVs
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzEwMTM3RTI1QzM2MzE2MDBEQzc3
M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvclRyYW5z
ZmVyRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTI0RUU0MEMy
NjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCYXJQcm9wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMx
MjRFRTUwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJhclByb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMx
MjRFRTYwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBCYXJQcm9wLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NTY5LDEw
ICsyNjU3MywxMiBAQAogCQkJCTdDNTE0RTAwMjRBRjgwNTgwMDUwNzEwRiAvKiBDb2xvckNvbnZl
cnNpb24uaCAqLywKIAkJCQkzMTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmgg
Ki8sCiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmggKi8sCisJ
CQkJQkMxMDEzN0IyNUMzNjI0QjAwREM3NzNDIC8qIENvbG9yTW9kZWxzLmggKi8sCiAJCQkJN0NE
MUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2VyaWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJ
N0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2VyaWFsaXphdGlvbi5oICovLAogCQkJ
CUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNwYWNlLmNwcCAqLywKIAkJCQk5Mzgy
REY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oICovLAorCQkJCUJDMTAxMzdFMjVD
MzYzMTYwMERDNzczQyAvKiBDb2xvclRyYW5zZmVyRnVuY3Rpb25zLmggKi8sCiAJCQkJN0MwMjlD
NkQyNDkzQzhGODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCAqLywKIAkJCQkwRkU2Qzc2QjFGQkZC
N0E2MDAyNUMwNTMgLyogQ29sb3JVdGlsaXRpZXMuY3BwICovLAogCQkJCTBGRTZDNzZDMUZCRkI3
QTYwMDI1QzA1MyAvKiBDb2xvclV0aWxpdGllcy5oICovLApAQCAtMzE0ODYsOSArMzE0OTIsMTEg
QEAKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzEwMTM3QzI1QzM2MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDFFNjkzMjRBQkY2MjQwMDg5QzQxOSAvKiBDb2xvclNl
cmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODJERjU4MTBBOEQ1QzkwMDkyNTY1
MiAvKiBDb2xvclNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FGRURCNDI1OTY4RDBCMDAz
MEU2QUEgLyogQ29sb3JTcGFjZUNHLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzEwMTM3RjI1QzM2
MzE2MDBEQzc3M0MgLyogQ29sb3JUcmFuc2ZlckZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0MwMjlDNkUyNDkzQzhGODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUFGNjZCMjNCRkMzOUUwMDQwMzBEQSAvKiBDb2xvclV0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNERDQ1NEUxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVtbkluZm8uaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzIwMzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKICNp
bmNsdWRlICJDb2xvck1hdHJpeC5oIgorI2luY2x1ZGUgIkNvbG9yVHJhbnNmZXJGdW5jdGlvbnMu
aCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMDAsMTM2ICsxMDEsNjQgQEAgc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBE
NjVUbwogCiAvLyBNQVJLOiBHYW1tYSBjb252ZXJzaW9ucy4KIAotZmxvYXQgQTk4UkdCVHJhbnNm
ZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGZsb2F0IGMpCi17Ci0gICAgcmV0dXJuIGNs
YW1wVG88ZmxvYXQ+KGZyb21MaW5lYXJOb25DbGFtcGluZyhjKSwgMCwgMSk7Ci19Ci0KLWZsb2F0
IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKLXsKLSAg
ICByZXR1cm4gY2xhbXBUbzxmbG9hdD4odG9MaW5lYXJOb25DbGFtcGluZyhjKSwgMCwgMSk7Ci19
Ci0KLWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhm
bG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEu
MGY7Ci0gICAgcmV0dXJuIHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCAyNTYuMGYgLyA1NjMuMGYpICog
c2lnbjsKLX0KLQotZmxvYXQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJOb25DbGFt
cGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4w
ZiA6IDEuMGY7Ci0gICAgcmV0dXJuIHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCA1NjMuMGYgLyAyNTYu
MGYpICogc2lnbjsKLX0KLQotZmxvYXQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJD
bGFtcGluZyhmbG9hdCBjKQotewotICAgIGlmIChjIDwgMC4wMDMxMzA4ZikKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWF4PGZsb2F0PigxMi45MmYgKiBjLCAwKTsKLQotICAgIHJldHVybiBjbGFtcFRv
PGZsb2F0PigxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAwLjA1NWYsIDAsIDEp
OwotfQotCi1mbG9hdCBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJDbGFtcGluZyhmbG9h
dCBjKQotewotICAgIGlmIChjIDw9IDAuMDQwNDVmKQotICAgICAgICByZXR1cm4gc3RkOjptYXg8
ZmxvYXQ+KGMgLyAxMi45MmYsIDApOwotCi0gICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0ZDo6
cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAsIDEpOwotfQotCi1mbG9hdCBTUkdC
VHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGZsb2F0IGMpCi17Ci0gICAg
ZmxvYXQgc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKLSAgICBjID0gc3Rk
OjphYnMoYyk7Ci0KLSAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCi0gICAgICAgIHJldHVybiAxMi45
MmYgKiBjICogc2lnbjsKLQotICAgIHJldHVybiAoMS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAv
IDIuNGYpIC0gMC4wNTVmKSAqIHNpZ247Ci19Ci0KLWZsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9u
Ojp0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0IGMpCi17Ci0gICAgZmxvYXQgc2lnbiA9IHN0ZDo6
c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKLSAgICBjID0gc3RkOjphYnMoYyk7Ci0KLSAgICBp
ZiAoYyA8PSAwLjA0MDQ1ZikKLSAgICAgICAgcmV0dXJuIGMgLyAxMi45MmYgKiBzaWduOwotCi0g
ICAgcmV0dXJuIHN0ZDo6cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZikgKiBzaWduOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0aW9uLCB0eXBlbmFtZSBUPiBzdGF0
aWMgYXV0byB0b0xpbmVhckNsYW1waW5nKGNvbnN0IFQmIGNvbG9yKSAtPiB0eXBlbmFtZSBUOjpM
aW5lYXJDb3VudGVycGFydAotewotICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbG9y
OwotICAgIHJldHVybiB7IFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoYzEpLCBU
cmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6
dG9MaW5lYXJDbGFtcGluZyhjMyksIGFscGhhIH07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFRy
YW5zZmVyRnVuY3Rpb24sIHR5cGVuYW1lIFQ+IHN0YXRpYyBhdXRvIGZyb21MaW5lYXJDbGFtcGlu
Zyhjb25zdCBUJiBjb2xvcikgLT4gdHlwZW5hbWUgVDo6R2FtbWFFbmNvZGVkQ291bnRlcnBhcnQK
LXsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsKLSAgICByZXR1cm4geyBU
cmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0aW9u
Ojpmcm9tTGluZWFyQ2xhbXBpbmcoYzIpLCBUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyQ2xh
bXBpbmcoYzMpLCBhbHBoYSB9OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0
aW9uLCB0eXBlbmFtZSBUPiBzdGF0aWMgYXV0byB0b0xpbmVhck5vbkNsYW1waW5nKGNvbnN0IFQm
IGNvbG9yKSAtPiB0eXBlbmFtZSBUOjpMaW5lYXJDb3VudGVycGFydAordGVtcGxhdGU8dHlwZW5h
bWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgYXV0byB0b0xp
bmVhcihjb25zdCBDb2xvclR5cGUmIGNvbG9yKSAtPiB0eXBlbmFtZSBDb2xvclR5cGU6OkxpbmVh
ckNvdW50ZXJwYXJ0CiB7CiAgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7Ci0g
ICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJOb25DbGFtcGluZyhjMSksIFRy
YW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoYzIpLCBUcmFuc2ZlckZ1bmN0aW9u
Ojp0b0xpbmVhck5vbkNsYW1waW5nKGMzKSwgYWxwaGEgfTsKKyAgICByZXR1cm4geyBUcmFuc2Zl
ckZ1bmN0aW9uOjp0b0xpbmVhcihjMSksIFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyKGMyKSwg
VHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXIoYzMpLCBhbHBoYSB9OwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFuc2ZlckZ1bmN0aW9uLCB0eXBlbmFtZSBUPiBzdGF0aWMgYXV0byBmcm9tTGlu
ZWFyTm9uQ2xhbXBpbmcoY29uc3QgVCYgY29sb3IpIC0+IHR5cGVuYW1lIFQ6OkdhbW1hRW5jb2Rl
ZENvdW50ZXJwYXJ0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0aW9uLCB0eXBlbmFt
ZSBDb2xvclR5cGU+IHN0YXRpYyBhdXRvIHRvR2FtbWFFbmNvZGVkKGNvbnN0IENvbG9yVHlwZSYg
Y29sb3IpIC0+IHR5cGVuYW1lIENvbG9yVHlwZTo6R2FtbWFFbmNvZGVkQ291bnRlcnBhcnQKIHsK
ICAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsKLSAgICByZXR1cm4geyBUcmFu
c2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0aW9u
Ojpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYzIpLCBUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFy
Tm9uQ2xhbXBpbmcoYzMpLCBhbHBoYSB9OworICAgIHJldHVybiB7IFRyYW5zZmVyRnVuY3Rpb246
OnRvR2FtbWFFbmNvZGVkKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6dG9HYW1tYUVuY29kZWQoYzIp
LCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0dhbW1hRW5jb2RlZChjMyksIGFscGhhIH07CiB9CiAKIC8v
IEE5OFJHQiA8LT4gTGluZWFyQTk4UkdCIGNvbnZlcnNpb25zLgogCiBMaW5lYXJBOThSR0I8Zmxv
YXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IEE5OFJHQjxmbG9hdD4mIGNvbG9yKQogewotICAgIHJl
dHVybiB0b0xpbmVhckNsYW1waW5nPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAg
ICByZXR1cm4gdG9MaW5lYXI8QTk4UkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJG
dW5jdGlvbk1vZGU6OkNsYW1wZWQ+Pihjb2xvcik7CiB9CiAKIEE5OFJHQjxmbG9hdD4gdG9BOThS
R0IoY29uc3QgTGluZWFyQTk4UkdCPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGZyb21M
aW5lYXJDbGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CisgICAgcmV0dXJu
IHRvR2FtbWFFbmNvZGVkPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQsIFRyYW5zZmVyRnVu
Y3Rpb25Nb2RlOjpDbGFtcGVkPj4oY29sb3IpOwogfQogCiAvLyBEaXNwbGF5UDMgPC0+IExpbmVh
ckRpc3BsYXlQMyBjb252ZXJzaW9ucy4KIAogTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVh
ckRpc3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4g
dG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVy
biB0b0xpbmVhcjxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlvbk1v
ZGU6OkNsYW1wZWQ+Pihjb2xvcik7CiB9CiAKIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGZyb21M
aW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0
b0dhbW1hRW5jb2RlZDxTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlv
bk1vZGU6OkNsYW1wZWQ+Pihjb2xvcik7CiB9CiAKIC8vIEV4dGVuZGVkU1JHQkEgPC0+IExpbmVh
ckV4dGVuZGVkU1JHQkEgY29udmVyc2lvbnMuCiAKIExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+
IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYgY29sb3Ip
CiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+
KGNvbG9yKTsKKyAgICByZXR1cm4gdG9MaW5lYXI8U1JHQlRyYW5zZmVyRnVuY3Rpb248ZmxvYXQs
IFRyYW5zZmVyRnVuY3Rpb25Nb2RlOjpVbmNsYW1wZWQ+Pihjb2xvcik7CiB9CiAKIEV4dGVuZGVk
U1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPGZs
b2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGZyb21MaW5lYXJOb25DbGFtcGluZzxTUkdCVHJh
bnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiB0b0dhbW1hRW5jb2RlZDxTUkdCVHJh
bnNmZXJGdW5jdGlvbjxmbG9hdCwgVHJhbnNmZXJGdW5jdGlvbk1vZGU6OlVuY2xhbXBlZD4+KGNv
bG9yKTsKIH0KIAogLy8gU1JHQkEgPC0+IExpbmVhclNSR0JBIGNvbnZlcnNpb25zLgogCiBMaW5l
YXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQog
ewotICAgIHJldHVybiB0b0xpbmVhckNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xv
cik7CisgICAgcmV0dXJuIHRvTGluZWFyPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFu
c2ZlckZ1bmN0aW9uTW9kZTo6Q2xhbXBlZD4+KGNvbG9yKTsKIH0KIAogU1JHQkE8ZmxvYXQ+IHRv
U1JHQkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gZnJv
bUxpbmVhckNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CisgICAgcmV0dXJu
IHRvR2FtbWFFbmNvZGVkPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0
aW9uTW9kZTo6Q2xhbXBlZD4+KGNvbG9yKTsKIH0KIAogLy8gTUFSSzogTWF0cml4IGNvbnZlcnNp
b25zICh0byBhbmQgZnJvbSBYWVogZm9yIGFsbCBsaW5lYXIgY29sb3IgdHlwZXMpLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
LmgJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yQ29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyMiArMjksNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRyYW5zZmVyIGZ1bmN0aW9ucyBmb3IgY29sb3JzIHRo
YXQgY2FuIGJlIGdhbW1hIGVuY29kZWQuCi0KLXN0cnVjdCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9u
IHsKLSAgICBzdGF0aWMgZmxvYXQgZnJvbUxpbmVhckNsYW1waW5nKGZsb2F0KTsKLSAgICBzdGF0
aWMgZmxvYXQgdG9MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IGZyb21M
aW5lYXJOb25DbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRvTGluZWFyTm9uQ2xh
bXBpbmcoZmxvYXQpOwotfTsKLQotc3RydWN0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uIHsKLSAgICBz
dGF0aWMgZmxvYXQgZnJvbUxpbmVhckNsYW1waW5nKGZsb2F0KTsKLSAgICBzdGF0aWMgZmxvYXQg
dG9MaW5lYXJDbGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IGZyb21MaW5lYXJOb25D
bGFtcGluZyhmbG9hdCk7Ci0gICAgc3RhdGljIGZsb2F0IHRvTGluZWFyTm9uQ2xhbXBpbmcoZmxv
YXQpOwotfTsKLQogLy8gQWxsIGNvbG9yIHR5cGVzIG11c3QgYXQgbGVhc3QgaW1wbGVtZW50IHRo
ZSBmb2xsb3dpbmcgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gdGhlIFhZWkEgY29sb3Igc3BhY2U6
CiAvLyAgICBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOwogLy8g
ICAgQ29sb3JUeXBlPGZsb2F0PiB0b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNb2RlbHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVscy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTW9k
ZWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IEFscGhhVHJhaXRzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVu
dFJhbmdlOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBFeHRlbmRlZFJHQk1vZGVsOwordGVt
cGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIU0xNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1
Y3QgTENITW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExhYk1vZGVsOwordGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBSR0JNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3Qg
WFlaTW9kZWw7CisKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8ZmxvYXQ+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGZsb2F0IHRyYW5zcGFyZW50ID0gMC4wZjsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGZsb2F0IG9wYXF1ZSA9IDEuMGY7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBB
bHBoYVRyYWl0czx1aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHRyYW5z
cGFyZW50ID0gMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qgb3BhcXVlID0gMjU1Owor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yQ29tcG9uZW50UmFuZ2Ugewor
ICAgIFQgbWluOworICAgIFQgbWF4OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRXh0ZW5kZWRS
R0JNb2RlbDxmbG9hdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNv
bXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IC1zdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
OmluZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCisgICAg
ICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9CisgICAgfSB9OworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IEhTTE1vZGVsPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9y
Q29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7CisgICAgICAgIHsgMCwgMzYwIH0s
CisgICAgICAgIHsgMCwgMTAwIH0sCisgICAgICAgIHsgMCwgMTAwIH0KKyAgICB9IH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBMYWJNb2RlbDxmbG9hdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjph
cnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7
IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCisgICAgICAgIHsg
LXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5
KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0g
ZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBMQ0hNb2RlbDxmbG9hdD4geworICAgIHN0
YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4g
cmFuZ2VzIHsgeworICAgICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpIH0sCisgICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCkgfSwKKyAgICAgICAgeyAwLCAzNjAgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBS
R0JNb2RlbDxmbG9hdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNv
bXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDEgfSwKKyAg
ICAgICAgeyAwLCAxIH0sCisgICAgICAgIHsgMCwgMSB9CisgICAgfSB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgUkdCTW9kZWw8dWludDhfdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxD
b2xvckNvbXBvbmVudFJhbmdlPHVpbnQ4X3Q+LCAzPiByYW5nZXMgeyB7CisgICAgICAgIHsgMCwg
MjU1IH0sCisgICAgICAgIHsgMCwgMjU1IH0sCisgICAgICAgIHsgMCwgMjU1IH0KKyAgICB9IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBYWVpNb2RlbDxmbG9hdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIg
c3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAg
ICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpIH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9CisgICAgfSB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKK307CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHJhbnNmZXJG
dW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclRyYW5zZmVyRnVuY3Rpb25zLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUcmFuc2ZlckZ1bmN0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRyYW5z
ZmVyIGZ1bmN0aW9ucyBmb3IgY29sb3JzIHRoYXQgY2FuIGJlIGdhbW1hIGVuY29kZWQuCisKK2Vu
dW0gY2xhc3MgVHJhbnNmZXJGdW5jdGlvbk1vZGUgOiB1aW50OF90IHsKKyAgICBDbGFtcGVkLAor
ICAgIFVuY2xhbXBlZAorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgVHJhbnNmZXJGdW5jdGlv
bk1vZGUgbW9kZT4KK3N0cnVjdCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uIHsKKyAgICBzdGF0aWMg
VCB0b0dhbW1hRW5jb2RlZChUKTsKKyAgICBzdGF0aWMgVCB0b0xpbmVhcihUKTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVyRnVuY3Rpb25Nb2RlIG1vZGU+CitzdHJ1Y3QgU1JH
QlRyYW5zZmVyRnVuY3Rpb24geworICAgIHN0YXRpYyBUIHRvR2FtbWFFbmNvZGVkKFQpOworICAg
IHN0YXRpYyBUIHRvTGluZWFyKFQpOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgVHJhbnNm
ZXJGdW5jdGlvbk1vZGUgbW9kZT4gVCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPFQsIG1vZGU+Ojp0
b0dhbW1hRW5jb2RlZChUIGMpCit7CisgICAgYXV0byBzaWduID0gc3RkOjpzaWduYml0KGMpID8g
LTEuMGYgOiAxLjBmOworICAgIGF1dG8gcmVzdWx0ID0gc3RkOjpwb3coc3RkOjphYnMoYyksIDI1
Ni4wZiAvIDU2My4wZikgKiBzaWduOworICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBUcmFuc2Zl
ckZ1bmN0aW9uTW9kZTo6Q2xhbXBlZCkKKyAgICAgICAgcmV0dXJuIGNsYW1wVG88VD4ocmVzdWx0
LCAwLCAxKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBU
cmFuc2ZlckZ1bmN0aW9uTW9kZSBtb2RlPiBUIEE5OFJHQlRyYW5zZmVyRnVuY3Rpb248VCwgbW9k
ZT46OnRvTGluZWFyKFQgYykKK3sKKyAgICBhdXRvIHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykgPyAt
MS4wZiA6IDEuMGY7CisgICAgYXV0byByZXN1bHQgPSBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgNTYz
LjBmIC8gMjU2LjBmKSAqIHNpZ247CisgICAgaWYgY29uc3RleHByIChtb2RlID09IFRyYW5zZmVy
RnVuY3Rpb25Nb2RlOjpDbGFtcGVkKQorICAgICAgICByZXR1cm4gY2xhbXBUbzxUPihyZXN1bHQs
IDAsIDEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRy
YW5zZmVyRnVuY3Rpb25Nb2RlIG1vZGU+IFQgU1JHQlRyYW5zZmVyRnVuY3Rpb248VCwgbW9kZT46
OnRvR2FtbWFFbmNvZGVkKFQgYykKK3sKKyAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gVHJhbnNm
ZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQpIHsKKyAgICAgICAgaWYgKGMgPCAwLjAwMzEzMDhmKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PFQ+KDEyLjkyZiAqIGMsIDApOworICAgICAgICBy
ZXR1cm4gY2xhbXBUbzxUPigxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAwLjA1
NWYsIDAsIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gc2lnbiA9IHN0ZDo6c2lnbmJp
dChjKSA/IC0xLjBmIDogMS4wZjsKKyAgICAgICAgYyA9IHN0ZDo6YWJzKGMpOworCisgICAgICAg
IGlmIChjIDwgMC4wMDMxMzA4ZikKKyAgICAgICAgICAgIHJldHVybiAxMi45MmYgKiBjICogc2ln
bjsKKyAgICAgICAgcmV0dXJuICgxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAw
LjA1NWYpICogc2lnbjsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFRyYW5zZmVy
RnVuY3Rpb25Nb2RlIG1vZGU+IFQgU1JHQlRyYW5zZmVyRnVuY3Rpb248VCwgbW9kZT46OnRvTGlu
ZWFyKFQgYykKK3sKKyAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gVHJhbnNmZXJGdW5jdGlvbk1v
ZGU6OkNsYW1wZWQpIHsKKyAgICAgICAgaWYgKGMgPD0gMC4wNDA0NWYpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KGMgLyAxMi45MmYsIDApOworICAgICAgICByZXR1cm4gY2xh
bXBUbzxmbG9hdD4oc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRmKSwgMCwgMSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEu
MGYgOiAxLjBmOworICAgICAgICBjID0gc3RkOjphYnMoYyk7CisKKyAgICAgICAgaWYgKGMgPD0g
MC4wNDA0NWYpCisgICAgICAgICAgICByZXR1cm4gYyAvIDEyLjkyZiAqIHNpZ247CisgICAgICAg
IHJldHVybiBzdGQ6OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpICogc2lnbjsKKyAg
ICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclR5cGVzLmgJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMzIgKzI2LDIzIEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgorI2luY2x1ZGUg
IkNvbG9yTW9kZWxzLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgotI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBBOThSR0I7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEFscGhhVHJhaXRzOwotdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVudFJhbmdlOwogdGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBEaXNwbGF5UDM7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVk
UkdCTW9kZWw7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVkU1JHQkE7CiB0ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhTTEE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhT
TE1vZGVsOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMQ0hBOwotdGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBMQ0hNb2RlbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGFiOwotdGVt
cGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWJNb2RlbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1
Y3QgTGluZWFyQTk4UkdCOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJEaXNwbGF5
UDM7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckV4dGVuZGVkU1JHQkE7CiB0ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhclNSR0JBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBSR0JNb2RlbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7CiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IFhZWjsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgWFlaTW9k
ZWw7Ci0KIAogLy8gTUFSSzogTWFrZSBmdW5jdGlvbnMuCiAKQEAgLTEyOSw4NiArMTIwLDYgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBULAogICAgIHJldHVybiBtYWtl
RnJvbUNvbXBvbmVudHM8Q29sb3JUeXBlPihDb2xvckNvbXBvbmVudHMgeyBjbGFtcGVkQ29tcG9u
ZW50PENvbG9yVHlwZSwgMD4oYzEpLCBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMT4oYzIp
LCBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMj4oYzMpLCBhbHBoYSB9KTsKIH0KIAotLy8g
TUFSSzogLSBNb2RlbHMKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8ZmxvYXQ+IHsK
LSAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0IHRyYW5zcGFyZW50ID0gMC4wZjsKLSAgICBzdGF0
aWMgY29uc3RleHByIGZsb2F0IG9wYXF1ZSA9IDEuMGY7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVj
dCBBbHBoYVRyYWl0czx1aW50OF90PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHRy
YW5zcGFyZW50ID0gMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qgb3BhcXVlID0gMjU1
OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yQ29tcG9uZW50UmFuZ2Ug
ewotICAgIFQgbWluOwotICAgIFQgbWF4OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRXh0ZW5k
ZWRSR0JNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xv
ckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0g
ICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IEhTTE1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENv
bG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMzYw
IH0sCi0gICAgICAgIHsgMCwgMTAwIH0sCi0gICAgICAgIHsgMCwgMTAwIH0KLSAgICB9IH07Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1w
bGF0ZTw+IHN0cnVjdCBMYWJNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAg
ICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAg
IHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCkgfQotICAgIH0gfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxl
ID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBMQ0hNb2RlbDxmbG9hdD4gewotICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0Piwg
Mz4gcmFuZ2VzIHsgewotICAgICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpIH0sCi0gICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCkgfSwKLSAgICAgICAgeyAwLCAzNjAgfQotICAgIH0gfTsKLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVj
dCBSR0JNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xv
ckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IDAsIDEgfSwK
LSAgICAgICAgeyAwLCAxIH0sCi0gICAgICAgIHsgMCwgMSB9Ci0gICAgfSB9OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOwotfTsKLQotdGVtcGxhdGU8PiBz
dHJ1Y3QgUkdCTW9kZWw8dWludDhfdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJh
eTxDb2xvckNvbXBvbmVudFJhbmdlPHVpbnQ4X3Q+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsg
MCwgMjU1IH0sCi0gICAgICAgIHsgMCwgMjU1IH0sCi0gICAgICAgIHsgMCwgMjU1IH0KLSAgICB9
IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19Owot
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBYWVpNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewot
ICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9Ci0gICAg
fSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKLX07
Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIg
dm9pZCBhc3NlcnRJblJhbmdlKFQgY29sb3IpCkBAIC0zMTQsNiArMjI1LDEzIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBBOThSR0IgOiBSR0IKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBBOThSR0IoVCwgVCwgVCwgVCkgLT4gQTk4UkdCPFQ+OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgRGlzcGxheVAzIDogUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj4g
eworICAgIHVzaW5nIFJHQkFUeXBlPERpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlw
ZTsKKyAgICB1c2luZyBMaW5lYXJDb3VudGVycGFydCA9IExpbmVhckRpc3BsYXlQMzxUPjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkRpc3BsYXlQ
MzsKK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBEaXNwbGF5UDMoVCwgVCwgVCwgVCkgLT4gRGlz
cGxheVAzPFQ+OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQSA6
IFJHQkFUeXBlPEV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8VD4+IHsKICAgICB1
c2luZyBSR0JBVHlwZTxFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+Pjo6UkdC
QVR5cGU7CiAgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJFeHRlbmRlZFNSR0JB
PFQ+OwpAQCAtMzUyLDEzICsyNzAsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU1JH
QkEgOiBSR0JBCiB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4g
U1JHQkE8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBSR0JB
VHlwZTxEaXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8RGlz
cGxheVAzLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIExpbmVhckNvdW50
ZXJwYXJ0ID0gTGluZWFyRGlzcGxheVAzPFQ+OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBj
b2xvclNwYWNlID0gQ29sb3JTcGFjZTo6RGlzcGxheVAzOwotfTsKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IERpc3BsYXlQMyhULCBULCBULCBUKSAtPiBEaXNwbGF5UDM8VD47Ci0KIC8vIE1BUks6IC0g
TGFiIENvbG9yIFR5cGUuCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMYWIgOiBDb2xv
cldpdGhBbHBoYUhlbHBlcjxMYWI8VD4+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAJKHJldmlzaW9uIDI3MjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAi
Q2Fpcm9PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJDb2xvckNv
bnZlcnNpb24uaCIKKyNpbmNsdWRlICJDb2xvclRyYW5zZmVyRnVuY3Rpb25zLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oIgpAQCAtMTA0LDcgKzEw
NCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUMKICAgICAgICAg
ICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9y
ID0gaSAvIDI1NS4wZjsKLSAgICAgICAgICAgICAgICBjb2xvciA9IFNSR0JUcmFuc2ZlckZ1bmN0
aW9uOjp0b0xpbmVhckNsYW1waW5nKGNvbG9yKTsKKyAgICAgICAgICAgICAgICBjb2xvciA9IFNS
R0JUcmFuc2ZlckZ1bmN0aW9uPGZsb2F0LCBUcmFuc2ZlckZ1bmN0aW9uTW9kZTo6Q2xhbXBlZD46
OnRvTGluZWFyKGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZDo6dHJhbnNmb3JtQwogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+
IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7
CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwotICAgICAgICAgICAg
ICAgIGNvbG9yID0gU1JHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJDbGFtcGluZyhjb2xv
cik7CisgICAgICAgICAgICAgICAgY29sb3IgPSBTUkdCVHJhbnNmZXJGdW5jdGlvbjxmbG9hdCwg
VHJhbnNmZXJGdW5jdGlvbk1vZGU6OkNsYW1wZWQ+Ojp0b0dhbW1hRW5jb2RlZChjb2xvcik7CiAg
ICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZChjb2xv
ciAqIDI1NSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFycmF5Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>