<?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>131420</bug_id>
          
          <creation_ts>2014-04-08 20:18:22 -0700</creation_ts>
          <short_desc>Discern between NaNs that would be safe to tag and NaNs that need some purification before tagging</short_desc>
          <delta_ts>2014-04-16 15:44:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>131422</dependson>
          <blocked>131419</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>juergen</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>999038</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-08 20:18:22 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001085</commentid>
    <comment_count>1</comment_count>
      <attachid>229428</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-15 21:22:56 -0700</bug_when>
    <thetext>Created attachment 229428
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001258</commentid>
    <comment_count>2</comment_count>
      <attachid>229463</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-16 12:09:51 -0700</bug_when>
    <thetext>Created attachment 229463
almost done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001269</commentid>
    <comment_count>3</comment_count>
      <attachid>229465</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-16 12:44:06 -0700</bug_when>
    <thetext>Created attachment 229465
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001272</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-16 12:46:54 -0700</bug_when>
    <thetext>Attachment 229465 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCJSValue.h:27:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PureNaN.h:35:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/PureNaN.h:36:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/PureNaN.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 4 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001360</commentid>
    <comment_count>5</comment_count>
      <attachid>229487</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-16 15:25:03 -0700</bug_when>
    <thetext>Created attachment 229487
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001361</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-16 15:28:05 -0700</bug_when>
    <thetext>Attachment 229487 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCJSValue.h:27:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PureNaN.h:35:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/PureNaN.h:36:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/PureNaN.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 4 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001369</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-16 15:44:53 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/167394</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229428</attachid>
            <date>2014-04-15 21:22:56 -0700</date>
            <delta_ts>2014-04-16 12:09:51 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>37959</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkocmV2aXNpb24g
MTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAzLDEzICszMDMsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVt
YmVyKEpTQ29udGV4dFJlCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKLSAgICAvLyBPdXIgSlNWYWx1ZSByZXByZXNlbnRh
dGlvbiByZWxpZXMgb24gYSBzdGFuZGFyZCBiaXQgcGF0dGVybiBmb3IgTmFOLiBOYU5zCi0gICAg
Ly8gZ2VuZXJhdGVkIGludGVybmFsbHkgdG8gSmF2YVNjcmlwdENvcmUgbmF0dXJhbGx5IGhhdmUg
dGhhdCByZXByZXNlbnRhdGlvbiwKLSAgICAvLyBidXQgYW4gZXh0ZXJuYWwgTmFOIG1pZ2h0IG5v
dC4KLSAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCi0gICAgICAgIHZhbHVlID0gUU5hTjsKLQot
ICAgIHJldHVybiB0b1JlZihleGVjLCBqc051bWJlcih2YWx1ZSkpOworICAgIHJldHVybiB0b1Jl
ZihleGVjLCBqc051bWJlcihwdXJpZnlOYU4odmFsdWUpKSk7CiB9CiAKIEpTVmFsdWVSZWYgSlNW
YWx1ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKQpAQCAt
Mzg0LDcgKzM3OCw3IEBAIGRvdWJsZSBKU1ZhbHVlVG9OdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwK
IHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIFFOYU47CisgICAgICAgIHJldHVybiBQTmFOOwogICAgIH0KICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKQEAg
LTQwMCw3ICszOTQsNyBAQCBkb3VibGUgSlNWYWx1ZVRvTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgs
CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgICAgIGV4ZWMtPnZtRW50cnlHbG9i
YWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVj
LCBleGNlcHRpb25WYWx1ZSk7CiAjZW5kaWYKLSAgICAgICAgbnVtYmVyID0gUU5hTjsKKyAgICAg
ICAgbnVtYmVyID0gUE5hTjsKICAgICB9CiAgICAgcmV0dXJuIG51bWJlcjsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjg4LDYgKzI4OCw3IEBACiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJC
MSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjU2QTFEMTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTZBMUQ0MTUwMDFDRjIwMDI5
OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCAqLzsgfTsKIAkJMEY1NzJENEYxNjg3OUZERDAw
RTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjU3MkQ0RDE2ODc5RkRCMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjU3ODBBMjE4RkUxRTk4MDAxRTcyRDkgLyogUHVyZU5hTi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NzgwQTExOEZFMUU5ODAwMUU3MkQ5IC8qIFB1
cmVOYU4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjVBNTJEMDE3QURENzE3MDA4RUNCMkQgLyogQ29weVRva2VuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVBNTJDRjE3QURENzE3MDA4RUNCMkQg
LyogQ29weVRva2VuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY1QTYyODMxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QTYyODExODhD
OThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwICovOyB9OwogCQkwRjVBNjI4NDE4OEM5
OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QTYyODIxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVl
UmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMjA4NSw2ICsyMDg2LDcgQEAKIAkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1
dGlvbkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9u
Q291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2QTFENDE1MDAxQ0Yy
MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFeGVjdXRpb25Db3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1NzJENEQxNjg3OUZEQjAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRodW5rR2VuZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJlTmFO
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmVOYU4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QTUyQ0YxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tl
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5VG9rZW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QTYyODExODhDOThENDAwNzJDOURGIC8qIEZUTFZh
bHVlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMVmFs
dWVSYW5nZS5jcHA7IHBhdGggPSBmdGwvRlRMVmFsdWVSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNUE2MjgyMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFZhbHVlUmFuZ2UuaDsgcGF0
aCA9IGZ0bC9GVExWYWx1ZVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MTQzLDggKzQxNDUsNiBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMkFGNzM4MkEx
OEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovLAotCQkJCTJBRjczODJC
MThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8sCiAJCQkJQkNGNjA1MTEw
RTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgw
MEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZCNkM5IC8q
IEFyZ3VtZW50cy5jcHAgKi8sCkBAIC00MTk4LDggKzQxOTgsOCBAQAogCQkJCTk2OUEwOTIyMEVE
MUUwOUMwMEYxRjY4MSAvKiBDb21wbGV0aW9uLmNwcCAqLywKIAkJCQlGNUJCMkJDNTAzMEY3NzIx
MDFGQ0ZFMUQgLyogQ29tcGxldGlvbi5oICovLAogCQkJCTBGREIyQ0U5MTc0ODk2QzcwMDdCM0Mx
QiAvKiBDb25jdXJyZW50SklUTG9jay5oICovLAotCQkJCUE1M0NFMDg5MThCQzIxQzMwMEJFREY3
NiAvKiBDb25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTVCNkE3NEMxOEM2REJBNjAwRjExRTkxIC8q
IENvbnNvbGVDbGllbnQuY3BwICovLAorCQkJCUE1M0NFMDg5MThCQzIxQzMwMEJFREY3NiAvKiBD
b25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTUzQ0UwODExOEJDMUE1NjAwQkVERjc2IC8qIENvbnNv
bGVQcm90b3R5cGUuY3BwICovLAogCQkJCUE1M0NFMDgyMThCQzFBNTYwMEJFREY3NiAvKiBDb25z
b2xlUHJvdG90eXBlLmggKi8sCiAJCQkJQTVGRDAwNzExODlCMDM4QzAwNjMzMjMxIC8qIENvbnNv
bGVUeXBlcy5oICovLApAQCAtNDI4NCwxMiArNDI4NCwxMiBAQAogCQkJCUJDN0Y4RkJBMEUxOUQx
RUYwMDg2MzJDMCAvKiBKU0NlbGwuY3BwICovLAogCQkJCUJDMTE2N0Q4MEUxOUJDQzkwMDgwNjZE
RCAvKiBKU0NlbGwuaCAqLywKIAkJCQkwRjk3NDk2RjE2ODdBREUyMDBBNEZGNkEgLyogSlNDZWxs
SW5saW5lcy5oICovLAotCQkJCUE1M0NFMDgzMThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUu
Y3BwICovLAotCQkJCUE1M0NFMDg0MThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuaCAqLywK
IAkJCQkwRjFERDg0OTE4QTk0NUJFMDAyNkYzRkEgLyogSlNDSW5saW5lcy5oICovLAogCQkJCUY2
OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLywKIAkJCQkxNEFCQjM2
RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICovLAogCQkJCTg2NUEzMEYwMTM1MDA3
RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovLAorCQkJCUE1M0NFMDgzMThCQzFB
NTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuY3BwICovLAorCQkJCUE1M0NFMDg0MThCQzFBNTYwMEJF
REY3NiAvKiBKU0NvbnNvbGUuaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBBN0FFM0YgLyog
SlNEYXRhVmlldy5jcHAgKi8sCiAJCQkJMEYyQjY2QkUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0
YVZpZXcuaCAqLywKIAkJCQkwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1By
b3RvdHlwZS5jcHAgKi8sCkBAIC00NDQzLDYgKzQ0NDMsNyBAQAogCQkJCTY1QzAyRkJCMDYzNzQ2
MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8sCiAJCQkJMTREODQ0QTIxNkFBMkM3MDAwQTY1QUYw
IC8qIFByb3RvdHlwZU1hcC5jcHAgKi8sCiAJCQkJMTREODQ0QTMxNkFBMkM3MDAwQTY1QUYwIC8q
IFByb3RvdHlwZU1hcC5oICovLAorCQkJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJl
TmFOLmggKi8sCiAJCQkJMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4
TW9kZS5oICovLAogCQkJCTE0N0I4NDYyMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNs
b3QuaCAqLywKIAkJCQlGNjkyQTg3RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLywK
QEAgLTQ0OTMsNiArNDQ5NCw5IEBACiAJCQkJQkNERTNBQjEwRTZDODJDRjAwMTQ1M0E3IC8qIFN0
cnVjdHVyZS5oICovLAogCQkJCTdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVD
aGFpbi5jcHAgKi8sCiAJCQkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNo
YWluLmggKi8sCisJCQkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxv
Yi5oICovLAorCQkJCTJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmNwcCAqLywKKwkJCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJs
ZS5oICovLAogCQkJCTBGRDJDOTIzMTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVz
LmggKi8sCiAJCQkJQzJGMEYyRDAxNkJBRUVFOTAwMTg3QzE5IC8qIFN0cnVjdHVyZVJhcmVEYXRh
LmNwcCAqLywKIAkJCQlDMkZFMThBMzE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJlUmFyZURh
dGEuaCAqLywKQEAgLTQ1MzQsNyArNDUzOCw2IEBACiAJCQkJMTQyMEJFN0ExMEFBNkREQjAwRjQ1
NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyog
V3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRl
QmFycmllcklubGluZXMuaCAqLywKLQkJCQkyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3Ry
dWN0dXJlSURCbG9iLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNjA2OCw2ICs2MDcxLDcgQEAKIAkJCQlCQzE4QzQzRjBFMTZG
NUNEMDBCMzQ0NjAgLyogTm9kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTQ1QTI4MThBMUIy
NTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDQxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY1NzgwQTIxOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDQyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBO
dW1iZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQ0MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBOdW1iZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2NzMz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDg2LDcgKzE0ODYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBi
YXNpYyBibG9jayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgotICAgIFJlZlB0
cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQs
IG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUU5hTikpOworICAgIFJlZlB0cjxCYXNpY0Js
b2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJn
dW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOwogCiAgICAgLy8gTGluayB0aGUgZWFybHkgcmV0
dXJucyB0byB0aGUgYmFzaWMgYmxvY2sgd2UncmUgYWJvdXQgdG8gY3JlYXRlLgogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLnNpemUo
KTsgKytpKSB7CkBAIC0zNTc4LDcgKzM1NzgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFw
aC5sYXN0QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVj
b2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcg
QmFzaWNCbG9jayhtX2N1cnJlbnRJbmRleCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBR
TmFOKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFk
b3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG1fY3VycmVudEluZGV4LCBtX251bUFyZ3VtZW50cywgbV9u
dW1Mb2NhbHMsIFBOYU4pKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBi
bG9jay5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBhc3NlcnRpb24gY2hlY2tz
IHR3byB0aGluZ3M6CiAgICAgICAgICAgICAgICAgICAgIC8vIDEpIElmIHRoZSBieXRlY29kZUJl
Z2luIGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50SW5kZXgsIHRoZW4gc29tZXRoaW5nIGhhcyBnb25l
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5n
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3Jp
dGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIC8vIE5v
dGUgdGhhdCB3ZSBwYXNzIE5hTiBmb3IgdGhlIGNvdW50IG9mIHRoZSBjcml0aWNhbCBlZGdlIGJs
b2NrLCBiZWNhdXNlIHdlIGhvbmVzdGx5CiAgICAgICAgIC8vIGRvbid0IGtub3cgaXRzIGV4ZWN1
dGlvbiBmcmVxdWVuY3kuCi0gICAgICAgIEJhc2ljQmxvY2sqIHBhZCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydEJlZm9yZSgqc3VjY2Vzc29yLCBRTmFOKTsKKyAgICAgICAgQmFzaWNCbG9jayogcGFk
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKCpzdWNjZXNzb3IsIFBOYU4pOwogICAgICAg
ICBwYWQtPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwg
KCpzdWNjZXNzb3IpLT5hdCgwKS0+b3JpZ2luLCBPcEluZm8oKnN1Y2Nlc3NvcikpOwogICAgICAg
ICBwYWQtPnByZWRlY2Vzc29ycy5hcHBlbmQocHJlZGVjZXNzb3IpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIEJhc2ljQmxvY2sq
IGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgsIEJsb2NrSW5zZXJ0aW9uU2V0JiBpbnNlcnRp
b25TZXQsIEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIC8vIERvbid0IGJvdGhlciB0byBwcmVz
ZXJ2ZSBleGVjdXRpb24gZnJlcXVlbmNpZXMgZm9yIG5vdy4KLSAgICBCYXNpY0Jsb2NrKiBwcmVI
ZWFkZXIgPSBpbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKGJsb2NrLCBRTmFOKTsKKyAgICBCYXNp
Y0Jsb2NrKiBwcmVIZWFkZXIgPSBpbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKGJsb2NrLCBQTmFO
KTsKICAgICBwcmVIZWFkZXItPmFwcGVuZE5vZGUoCiAgICAgICAgIGdyYXBoLCBTcGVjTm9uZSwg
SnVtcCwgYmxvY2stPmF0KDApLT5vcmlnaW4sIE9wSW5mbyhibG9jaykpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyAr
ODksMTMgQEAgc3RydWN0IE5ld0FycmF5QnVmZmVyRGF0YSB7CiBzdHJ1Y3QgQnJhbmNoVGFyZ2V0
IHsKICAgICBCcmFuY2hUYXJnZXQoKQogICAgICAgICA6IGJsb2NrKDApCi0gICAgICAgICwgY291
bnQoUU5hTikKKyAgICAgICAgLCBjb3VudChQTmFOKQogICAgIHsKICAgICB9CiAgICAgCiAgICAg
ZXhwbGljaXQgQnJhbmNoVGFyZ2V0KEJhc2ljQmxvY2sqIGJsb2NrKQogICAgICAgICA6IGJsb2Nr
KGJsb2NrKQotICAgICAgICAsIGNvdW50KFFOYU4pCisgICAgICAgICwgY291bnQoUE5hTikKICAg
ICB7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2
NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgCiAgICAgICAgIEJsb2NrSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2dyYXBoKTsK
ICAgICAgICAgCi0gICAgICAgIEJhc2ljQmxvY2sqIG5ld1Jvb3QgPSBpbnNlcnRpb25TZXQuaW5z
ZXJ0KDAsIFFOYU4pOworICAgICAgICBCYXNpY0Jsb2NrKiBuZXdSb290ID0gaW5zZXJ0aW9uU2V0
Lmluc2VydCgwLCBQTmFOKTsKICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSB0YXJnZXQtPmF0
KDApLT5vcmlnaW47CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNl
bGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNjcz
MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODM0LDcgKzI4MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleChzdG9yYWdlR1BSLCB2YWx1ZVBheWxvYWRHUFIsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0KSwKICAgICAgICAgICAgICAgICB0ZW1wRlBSKTsKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1i
bGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCB0ZW1wRlBSLCB0ZW1wRlBSKTsKLSAgICAg
ICAgICAgIEpTVmFsdWUgbmFuID0gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgUU5h
Tik7CisgICAgICAgICAgICBKU1ZhbHVlIG5hbiA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNE
b3VibGUsIFBOYU4pOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5hbi51LmFzQml0cy50YWcpLAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgdmFsdWVQYXls
b2FkR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnRhZykpKTsKQEAgLTMyMjcsNyArMzIyNyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlZlY3Rvckxlbmd0aCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChoYXNE
b3VibGUobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBu
YW4gPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBRTmFOKTsKKyAgICAgICAgICAg
ICAgICBKU1ZhbHVlIG5hbiA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIFBOYU4p
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoc2l6ZUdQUiwg
c2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9
IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NTUsNyArMjk1NSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyB3b3VsZCBub3QgaGF2ZSB0byBiZSBoZXJlIGlmIGNoYW5naW5nIHRo
ZSBwdWJsaWNMZW5ndGggYWxzbyB6ZXJvZWQgdGhlIHZhbHVlcyBiZXR3ZWVuIHRoZSBvbGQKICAg
ICAgICAgICAgICAgICAvLyBsZW5ndGggYW5kIHRoZSBuZXcgbGVuZ3RoLgogICAgICAgICAgICAg
ICAgIG1faml0LnN0b3JlNjQoCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFFOYU4pKSwgTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCkpOworICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIE1hY3JvQXNzZW1ibGVyOjpCYXNl
SW5kZXgoc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVz
RWlnaHQpKTsKICAgICAgICAgICAgICAgICBzbG93Q2FzZSA9IG1faml0LmJyYW5jaERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgdGVtcEZQUiwgdGVtcEZQ
Uik7CiAgICAgICAgICAgICAgICAgYm94RG91YmxlKHRlbXBGUFIsIHZhbHVlR1BSKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CkBAIC0zMzI2LDcgKzMzMjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZW
ZWN0b3JMZW5ndGgoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaGFzRG91Ymxl
KG5vZGUtPmluZGV4aW5nVHlwZSgpKSkgewotICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihRTmFOKSksIHNjcmF0Y2hHUFIpOworICAg
ICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90
PihQTmFOKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoc2l6ZUdQ
Uiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRv
bmUgPSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2gyR1BS
KTsKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCA9IG1faml0Lmxh
YmVsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDEyICs4NCwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5CiAgICAgCiAgICAgaWYg
KGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSAmJiBudW1FbGVtZW50cyA8IHZl
Y3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihRTmFOKSksIHNjcmF0Y2hHUFIpOworICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikp
LCBzY3JhdGNoR1BSKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRWxlbWVudHM7IGkg
PCB2ZWN0b3JMZW5ndGg7ICsraSkKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoc2NyYXRjaEdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgc2l6ZW9mKGRvdWJsZSkgKiBp
KSk7CiAjZWxzZQogICAgICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIHZhbHVlOwotICAgICAg
ICB2YWx1ZS5hc0ludDY0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2Rl
QXNEb3VibGUsIFFOYU4pKTsKKyAgICAgICAgdmFsdWUuYXNJbnQ2NCA9IEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBQTmFOKSk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG51bUVsZW1lbnRzOyBpIDwgdmVjdG9yTGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZhbHVlLmFzQml0cy50YWcpLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIGkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkpOwogICAgICAgICAgICAgbV9qaXQu
c3RvcmUzMihUcnVzdGVkSW1tMzIodmFsdWUuYXNCaXRzLnBheWxvYWQpLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIGkgKyBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjczMzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEyOCw3ICsyMTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuc2VsZWN0
KAotICAgICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVFcXVhbChyZXN1bHQsIHJlc3VsdCks
IHJlc3VsdCwgbV9vdXQuY29uc3REb3VibGUoUU5hTikpOworICAgICAgICAgICAgICAgICAgICBt
X291dC5kb3VibGVFcXVhbChyZXN1bHQsIHJlc3VsdCksIHJlc3VsdCwgbV9vdXQuY29uc3REb3Vi
bGUoUE5hTikpOwogICAgICAgICAgICAgICAgIHNldERvdWJsZShyZXN1bHQpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTI0OTksNyArMjQ5OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm82NChyZXN1bHQpLCB1c3VhbGx5
KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQubG9hZERvdWJsZShwb2ludGVy
KTsKLSAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoYml0d2lz
ZV9jYXN0PGludDY0X3Q+KFFOYU4pKSwgcG9pbnRlcik7CisgICAgICAgICAgICAgICAgbV9vdXQu
c3RvcmU2NChtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHBv
aW50ZXIpOwogICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihib3hE
b3VibGUocmVzdWx0KSkpOwogICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuZG91YmxlRXF1YWwocmVzdWx0LCByZXN1bHQpLApAQCAtMjczMCw3
ICsyNzMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1f
b3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUU5hTikpLAorICAgICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksCiAg
ICAgICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlcihtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9w
ZXJ0aWVzLmF0QW55SW5kZXgoKSwgcG9pbnRlcikpOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5zdWIoaW5kZXgsIG1fb3V0LmludDMy
T25lKTsKQEAgLTQzODMsNyArNDM4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChoYXNEb3Vi
bGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG51bUVsZW1lbnRzOyBpIDwgdmVjdG9yTGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBtX291dC5zdG9yZTY0KAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0
KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihRTmFOKSksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKICAgICAgICAgICAgICAg
ICAgICAgYnV0dGVyZmx5LCBtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzW2ldKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw3IEBAIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBBc3NlbWIKIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZShGUFJSZWcgZnByKQogewogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG5vdE5hTiA9IGJyYW5jaERvdWJsZShEb3VibGVFcXVhbCwgZnByLCBm
cHIpOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0gUU5hTjsKKyAgICBzdGF0aWMgY29u
c3QgZG91YmxlIE5hTiA9IFBOYU47CiAgICAgbG9hZERvdWJsZSgmTmFOLCBmcHIpOwogICAgIG5v
dE5hTi5saW5rKHRoaXMpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjU4LDcgKzEyNTgsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdl
CiAgICAgfQogICAgIAogICAgIEp1bXAgbm90TmFOID0gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFs
LCBmcFJlZ1QwLCBmcFJlZ1QwKTsKLSAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFFOYU47
CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBQTmFOOwogICAgIGxvYWREb3VibGUoJk5h
TiwgZnBSZWdUMCk7CiAgICAgbm90TmFOLmxpbmsodGhpcyk7CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCBKU09iamVjdCogY29u
c3RydWN0RGF0ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgICAgICB8fCAobnVtQXJncyA+PSA1
ICYmICghc3RkOjppc2Zpbml0ZShkb3VibGVBcmd1bWVudHNbNF0pIHx8IChkb3VibGVBcmd1bWVu
dHNbNF0gPiBJTlRfTUFYKSB8fCAoZG91YmxlQXJndW1lbnRzWzRdIDwgSU5UX01JTikpKQogICAg
ICAgICAgICAgfHwgKG51bUFyZ3MgPj0gNiAmJiAoIXN0ZDo6aXNmaW5pdGUoZG91YmxlQXJndW1l
bnRzWzVdKSB8fCAoZG91YmxlQXJndW1lbnRzWzVdID4gSU5UX01BWCkgfHwgKGRvdWJsZUFyZ3Vt
ZW50c1s1XSA8IElOVF9NSU4pKSkKICAgICAgICAgICAgIHx8IChudW1BcmdzID49IDcgJiYgKCFz
dGQ6OmlzZmluaXRlKGRvdWJsZUFyZ3VtZW50c1s2XSkgfHwgKGRvdWJsZUFyZ3VtZW50c1s2XSA+
IElOVF9NQVgpIHx8IChkb3VibGVBcmd1bWVudHNbNl0gPCBJTlRfTUlOKSkpKQotICAgICAgICAg
ICAgdmFsdWUgPSBRTmFOOworICAgICAgICAgICAgdmFsdWUgPSBQTmFOOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7CiAgICAgICAgICAgICBpbnQgeWVh
ciA9IEpTQzo6dG9JbnQzMihkb3VibGVBcmd1bWVudHNbMF0pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCShyZXZpc2lvbiAx
NjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNo
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgRGF0ZUluc3RhbmNlRGF0YSgpCi0gICAgICAgICAgICA6IG1f
Z3JlZ29yaWFuRGF0ZVRpbWVDYWNoZWRGb3JNUyhRTmFOKQotICAgICAgICAgICAgLCBtX2dyZWdv
cmlhbkRhdGVUaW1lVVRDQ2FjaGVkRm9yTVMoUU5hTikKKyAgICAgICAgICAgIDogbV9ncmVnb3Jp
YW5EYXRlVGltZUNhY2hlZEZvck1TKFBOYU4pCisgICAgICAgICAgICAsIG1fZ3JlZ29yaWFuRGF0
ZVRpbWVVVENDYWNoZWRGb3JNUyhQTmFOKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICB9OwpA
QCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZXNldCgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FjaGVTaXplOyAr
K2kpCi0gICAgICAgICAgICAgICAgbV9jYWNoZVtpXS5rZXkgPSBRTmFOOworICAgICAgICAgICAg
ICAgIG1fY2FjaGVbaV0ua2V5ID0gUE5hTjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
RGF0ZUluc3RhbmNlRGF0YSogYWRkKGRvdWJsZSBkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHJldmlzaW9uIDE2NzMz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIEpTVmFsdWUgVGVybWluYXRlZEV4ZWN1
dGlvbkVycm9yOjpkZWZhdWwKIHsKICAgICBpZiAoaGludCA9PSBQcmVmZXJTdHJpbmcpCiAgICAg
ICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
SmF2YVNjcmlwdCBleGVjdXRpb24gdGVybWluYXRlZC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVl
KFFOYU4pOworICAgIHJldHVybiBKU1ZhbHVlKFBOYU4pOwogfQogCiBKU09iamVjdCogY3JlYXRl
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihWTSogdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
Miw3ICs0MjIsNyBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkg
ewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0
aCgpOyBpLS0gPiBuZXdMZW5ndGg7KQotICAgICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250
aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOworICAgICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5j
b250aWd1b3VzRG91YmxlKClbaV0gPSBQTmFOOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOyBpLS0gPiBu
ZXdMZW5ndGg7KQogICAgICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKClbaV0u
Y2xlYXIoKTsKQEAgLTQ3OCw3ICs0NzgsNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8IG1fYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IG1fYnV0dGVyZmx5LT5jb250
aWd1b3VzRG91YmxlKClbbGVuZ3RoXTsKICAgICAgICAgaWYgKHZhbHVlID09IHZhbHVlKSB7Ci0g
ICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2xlbmd0aF0gPSBRTmFO
OworICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtsZW5ndGhdID0g
UE5hTjsKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoKTsK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCB2YWx1
ZSk7CiAgICAgICAgIH0KQEAgLTgyMiw3ICs4MjIsNyBAQCBib29sIEpTQXJyYXk6OnNoaWZ0Q291
bnRXaXRoQW55SW5kZXhpbmdUCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpW2ldID0gdjsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBlbmQ7
IGkgPCBvbGRMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3Vz
RG91YmxlKClbaV0gPSBRTmFOOworICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNE
b3VibGUoKVtpXSA9IFBOYU47CiAgICAgICAgIAogICAgICAgICBtX2J1dHRlcmZseS0+c2V0UHVi
bGljTGVuZ3RoKG9sZExlbmd0aCAtIGNvdW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
NDQwLDcgKzE0NDAsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBleGVj
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gdW5kZWZpbmVkRWxlbWVudHNUaHJlc2hvbGQ7IGkgPCBj
bGVhckVsZW1lbnRzVGhyZXNob2xkOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkgPCBidXR0ZXJm
bHkoKS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICBpZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJy
YXlXaXRoRG91YmxlKQotICAgICAgICAgICAgYnV0dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3VibGUo
KVtpXSA9IFFOYU47CisgICAgICAgICAgICBidXR0ZXJmbHkoKS0+Y29udGlndW91c0RvdWJsZSgp
W2ldID0gUE5hTjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY3VycmVudEluZGV4aW5nRGF0
YSgpW2ldLmNsZWFyKCk7CiAgICAgfQpAQCAtMTY4NCw3ICsxNjg0LDcgQEAgdm9pZCBKU0FycmF5
Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAgIGZvciAodW5zaWduZWQgaSA9IG5ld1Jl
bGV2YW50TGVuZ3RoOyBpIDwgbXlSZWxldmFudExlbmd0aDsgKytpKSB7CiAgICAgICAgIEFTU0VS
VChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAgICAgaWYgKGFycmF5SW5k
ZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkKLSAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5j
b250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOworICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNv
bnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBOYU47CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlu
ZGV4aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKVtpXS5jbGVhcigpOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDE2NzMzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjE5LDcgKzIxOSw3IEBAIGlubGluZSBKU0FycmF5KiBKU0FycmF5OjpjcmVhdGUoVk0m
IHZtLCAKICAgICAgICAgQVNTRVJUKGluaXRpYWxMZW5ndGggPCBNSU5fU1BBUlNFX0FSUkFZX0lO
REVYKTsKICAgICAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkg
ewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlY3Rvckxlbmd0aDsgKytp
KQotICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5h
TjsKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBO
YU47CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoCkBAIC0yNTQsNyAr
MjU0LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdAogICAgICAg
ICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpbml0aWFsTGVuZ3RoKTsKICAgICAgICAgaWYg
KGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gaW5pdGlhbExlbmd0aDsgaSA8IHZlY3Rvckxlbmd0aDsgKytpKQotICAg
ICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKKyAg
ICAgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBOYU47CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICB2b2lkKiB0ZW1wOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE2NzMz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dD
YXNlKEV4ZWNTdGEKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b051bWJlcihleGVjKTsKICAg
ICBpZiAoaXNUcnVlKCkpCiAgICAgICAgIHJldHVybiAxLjA7Ci0gICAgcmV0dXJuIGlzVW5kZWZp
bmVkKCkgPyBRTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCisg
ICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90
aCBjb252ZXJ0IHRvIDAuCiB9CiAKIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9u
IDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBKU0NKU1ZhbHVlX2gKIAog
I2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlICJQdXJlTmFuLmgiCiAjaW5jbHVkZSA8c3RkZGVm
Lmg+IC8vIGZvciBzaXplX3QKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgpAQCAtMzYsMTAgKzM3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLS8vIFRo
aXMgaXMgdXNlZCBhIGxvdCB0aHJvdWdob3V0IEphdmFTY3JpcHRDb3JlIGZvciBldmVyeXRoaW5n
IGZyb20gdmFsdWUgYm94aW5nIHRvIG1hcmtpbmcKLS8vIHZhbHVlcyBhcyBiZWluZyBtaXNzaW5n
LCBzbyBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBpdCBhYmJyZXZpYXRlZC4KLSNkZWZpbmUgUU5hTiAo
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkKLQogY2xhc3MgQXNzZW1i
bHlIZWxwZXJzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNDZWxsOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZp
c2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIGlubGluZSBkb3VibGUg
SlNWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAogCiBpbmxpbmUgSlNWYWx1ZSBqc05hTigpCiB7Ci0g
ICAgcmV0dXJuIEpTVmFsdWUoUU5hTik7CisgICAgcmV0dXJuIEpTVmFsdWUoUE5hTik7CiB9CiAK
IGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNoYXIgaSkKQEAgLTMwMiw2ICszMDIsNyBAQCBBTFdB
WVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgCiAKIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCiB7CisgICAgQVNTRVJU
KCFsb29rc0xpa2VUYWdnZWRWYWx1ZShkKSk7CiAgICAgdS5hc0RvdWJsZSA9IGQ7CiB9CiAKQEAg
LTQ2OCw2ICs0NjksNyBAQCBpbmxpbmUgZG91YmxlIHJlaW50ZXJwcmV0SW50NjRUb0RvdWJsZShp
CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91
YmxlIGQpCiB7CisgICAgQVNTRVJUKCFsb29rc0xpa2VUYWdnZWRWYWx1ZShkKSk7CiAgICAgdS5h
c0ludDY0ID0gcmVpbnRlcnByZXREb3VibGVUb0ludDY0KGQpICsgRG91YmxlRW5jb2RlT2Zmc2V0
OwogfQogCkBAIC02MDksNyArNjExLDcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJpbWl0
aXZlTnVtYmVyKAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUKGlzVW5k
ZWZpbmVkKCkpOwotICAgIG51bWJlciA9IFFOYU47CisgICAgbnVtYmVyID0gUE5hTjsKICAgICB2
YWx1ZSA9ICp0aGlzOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyArMjgyLDcg
QEAgc3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBTdHJpbmcmIHMsIAogCiAgICAgLy8gOC5h
IElmIFIgPCAyIG9yIFIgPiAzNiwgdGhlbiByZXR1cm4gTmFOLgogICAgIGlmIChyYWRpeCA8IDIg
fHwgcmFkaXggPiAzNikKLSAgICAgICAgcmV0dXJuIFFOYU47CisgICAgICAgIHJldHVybiBQTmFO
OwogCiAgICAgLy8gMTMuIExldCBtYXRoSW50IGJlIHRoZSBtYXRoZW1hdGljYWwgaW50ZWdlciB2
YWx1ZSB0aGF0IGlzIHJlcHJlc2VudGVkIGJ5IFogaW4gcmFkaXgtUiBub3RhdGlvbiwgdXNpbmcg
dGhlIGxldHRlcnMKICAgICAvLyAgICAgQS1aIGFuZCBhLXogZm9yIGRpZ2l0cyB3aXRoIHZhbHVl
cyAxMCB0aHJvdWdoIDM1LiAoSG93ZXZlciwgaWYgUiBpcyAxMCBhbmQgWiBjb250YWlucyBtb3Jl
IHRoYW4gMjAgc2lnbmlmaWNhbnQKQEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgZG91YmxlIHBh
cnNlSW50KGNvbnN0IFN0cmluZyYgcywgCiAKICAgICAvLyAxMi4gSWYgWiBpcyBlbXB0eSwgcmV0
dXJuIE5hTi4KICAgICBpZiAoIXNhd0RpZ2l0KQotICAgICAgICByZXR1cm4gUU5hTjsKKyAgICAg
ICAgcmV0dXJuIFBOYU47CiAKICAgICAvLyBBbHRlcm5hdGUgY29kZSBwYXRoIGZvciBjZXJ0YWlu
IGxhcmdlIG51bWJlcnMuCiAgICAgaWYgKG51bWJlciA+PSBtYW50aXNzYU92ZXJmbG93TG93ZXJC
b3VuZCkgewpAQCAtNDAzLDcgKzQwMyw3IEBAIHN0YXRpYyBkb3VibGUganNTdHJEZWNpbWFsTGl0
ZXJhbChjb25zdCAKICAgICB9CiAKICAgICAvLyBOb3QgYSBudW1iZXIuCi0gICAgcmV0dXJuIFFO
YU47CisgICAgcmV0dXJuIFBOYU47CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4K
QEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgZG91YmxlIHRvRG91YmxlKGNvbnN0IENoYXJUeXBl
KiBjCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKGNoYXJhY3RlcnMgIT0gZW5k
Q2hhcmFjdGVycykKLSAgICAgICAgcmV0dXJuIFFOYU47CisgICAgICAgIHJldHVybiBQTmFOOwog
ICAgIAogICAgIHJldHVybiBudW1iZXI7CiB9CkBAIC00NDksNyArNDQ5LDcgQEAgZG91YmxlIGpz
VG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzKQogICAgICAgICAgICAgcmV0dXJuIGMgLSAnMCc7CiAg
ICAgICAgIGlmIChpc1N0cldoaXRlU3BhY2UoYykpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgcmV0dXJuIFFOYU47CisgICAgICAgIHJldHVybiBQTmFOOwogICAgIH0KIAogICAgIGlm
IChzLmlzOEJpdCgpKQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VGbG9h
dChjb25zdCBTdHJpbmcmIHMKICAgICAgICAgVUNoYXIgYyA9IHNbMF07CiAgICAgICAgIGlmIChp
c0FTQ0lJRGlnaXQoYykpCiAgICAgICAgICAgICByZXR1cm4gYyAtICcwJzsKLSAgICAgICAgcmV0
dXJuIFFOYU47CisgICAgICAgIHJldHVybiBQTmFOOwogICAgIH0KIAogICAgIGlmIChzLmlzOEJp
dCgpKSB7CkBAIC00ODAsNyArNDgwLDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KGNvbnN0
IFN0cmluZyYgcwogCiAgICAgICAgIC8vIEVtcHR5IHN0cmluZy4KICAgICAgICAgaWYgKGRhdGEg
PT0gZW5kKQotICAgICAgICAgICAgcmV0dXJuIFFOYU47CisgICAgICAgICAgICByZXR1cm4gUE5h
TjsKIAogICAgICAgICByZXR1cm4ganNTdHJEZWNpbWFsTGl0ZXJhbChkYXRhLCBlbmQpOwogICAg
IH0KQEAgLTQ5Niw3ICs0OTYsNyBAQCBzdGF0aWMgZG91YmxlIHBhcnNlRmxvYXQoY29uc3QgU3Ry
aW5nJiBzCiAKICAgICAvLyBFbXB0eSBzdHJpbmcuCiAgICAgaWYgKGRhdGEgPT0gZW5kKQotICAg
ICAgICByZXR1cm4gUU5hTjsKKyAgICAgICAgcmV0dXJuIFBOYU47CiAKICAgICByZXR1cm4ganNT
dHJEZWNpbWFsTGl0ZXJhbChkYXRhLCBlbmQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzYs
NyArNjM2LDcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNyZWF0ZUluaXRpYQogICAg
IERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9
IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3RoLCBzaXplb2YoZG91YmxlKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3QnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0t
OykKLSAgICAgICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwor
ICAgICAgICBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBOYU47CiAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3VibGUpOwogICAgIHNldFN0cnVjdHVyZUFu
ZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiBu
ZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKQEAgLTY5MCw3ICs2OTAsNyBAQCBDb250
aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydFVuZGVjCiAgICAgQVNTRVJUKGhhc1VuZGVj
aWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKLSAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3Vz
RG91YmxlKClbaV0gPSBQTmFOOwogICAgIAogICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJl
Ojpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRlRG91Ymxl
KSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCk7CkBAIC03NjAs
NyArNzYwLDcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNvbnZlcnRJbnQzMgogICAg
ICAgICBkb3VibGUqIGN1cnJlbnRBc0RvdWJsZSA9IGJpdHdpc2VfY2FzdDxkb3VibGUqPihjdXJy
ZW50KTsKICAgICAgICAgSlNWYWx1ZSB2ID0gY3VycmVudC0+Z2V0KCk7CiAgICAgICAgIGlmICgh
dikgewotICAgICAgICAgICAgKmN1cnJlbnRBc0RvdWJsZSA9IFFOYU47CisgICAgICAgICAgICAq
Y3VycmVudEFzRG91YmxlID0gUE5hTjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVCh2LmlzSW50MzIoKSk7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBib29s
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDCiAgICAgICAgIEJ1dHRlcmZseSog
YnV0dGVyZmx5ID0gdGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChpID49IGJ1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOworICAgICAgICBidXR0
ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBOYU47CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICAgICAgCkBAIC0yNDI5LDcgKzI0MjksNyBAQCB2b2lkIEpTT2JqZWN0Ojpl
bnN1cmVMZW5ndGhTbG93KFZNJiB2bSwgCiAKICAgICBpZiAoaGFzRG91YmxlKGluZGV4aW5nVHlw
ZSgpKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRWZWN0b3JMZW5ndGg7IGkgPCBu
ZXdWZWN0b3JMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3Vz
RG91YmxlKCkuZGF0YSgpW2ldID0gUU5hTjsKKyAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250
aWd1b3VzRG91YmxlKCkuZGF0YSgpW2ldID0gUE5hTjsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCShyZXZpc2lvbiAxNjcz
MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnUKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgYXJnc0NvdW50OyAr
K2spIHsKICAgICAgICAgZG91YmxlIHZhbCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGspLnRv
TnVtYmVyKGV4ZWMpOwogICAgICAgICBpZiAoc3RkOjppc25hbih2YWwpKSB7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBRTmFOOworICAgICAgICAgICAgcmVzdWx0ID0gUE5hTjsKICAgICAgICAgfSBl
bHNlIGlmICh2YWwgPiByZXN1bHQgfHwgKCF2YWwgJiYgIXJlc3VsdCAmJiAhc3RkOjpzaWduYml0
KHZhbCkpKQogICAgICAgICAgICAgcmVzdWx0ID0gdmFsOwogICAgIH0KQEAgLTIzMyw3ICsyMzMs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1CiAgICAgZm9yICh1
bnNpZ25lZCBrID0gMDsgayA8IGFyZ3NDb3VudDsgKytrKSB7CiAgICAgICAgIGRvdWJsZSB2YWwg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrKS50b051bWJlcihleGVjKTsKICAgICAgICAgaWYg
KHN0ZDo6aXNuYW4odmFsKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gUU5hTjsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IFBOYU47CiAgICAgICAgIH0gZWxzZSBpZiAodmFsIDwgcmVzdWx0IHx8ICgh
dmFsICYmICFyZXN1bHQgJiYgc3RkOjpzaWduYml0KHZhbCkpKQogICAgICAgICAgICAgcmVzdWx0
ID0gdmFsOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1cmVO
YU4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXJlTmFO
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXJlTmFO
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFB1cmVOYU5faAorI2RlZmluZSBQdXJl
TmFOX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gTmFOIChub3QtYS1udW1iZXIpIGRv
dWJsZSB2YWx1ZXMgYXJlIGNlbnRyYWwgdG8gaG93IEphdmFTY3JpcHRDb3JlIGVuY29kZXMgSmF2
YVNjcmlwdAorLy8gdmFsdWVzIChKU1ZhbHVlcykuICBBbGwgdmFsdWVzLCBpbmNsdWRpbmcgaW50
ZWdlcnMgYW5kIG5vbi1udW1lcmljIHZhbHVlcywgYXJlIGFsd2F5cworLy8gZW5jb2RlZCB1c2lu
ZyB0aGUgSUVFRSA4NTQgYmluYXJ5IGRvdWJsZSBmb3JtYXQuICBOb24tZG91YmxlIHZhbHVlcyBh
cmUgZW5jb2RlZCB1c2luZworLy8gYSBOYU4gd2l0aCB0aGUgc2lnbiBiaXQgc2V0LiAgVGhlIDUx
LWJpdCBwYXlsb2FkIGlzIHRoZW4gdXNlZCBmb3IgZW5jb2RpbmcgdGhlIGFjdHVhbAorLy8gdmFs
dWUgLSBiZSBpdCBhbiBpbnRlZ2VyIG9yIGEgcG9pbnRlciB0byBhbiBvYmplY3QsIG9yIHNvbWV0
aGluZyBlbHNlLiBCdXQgd2Ugb25seQorLy8gbWFrZSB1c2Ugb2YgdGhlIGxvdyA0OSBiaXRzIGFu
ZCB0aGUgdG9wIDE1IGJpdHMgYmVpbmcgYWxsIHNldCB0byAxIGlzIHRoZSBpbmRpY2F0b3IKKy8v
IHRoYXQgYSB2YWx1ZSBpcyBub3QgYSBkb3VibGUuIFRvcCAxNSBiaXRzIGJlaW5nIHNldCB0byAx
IGFsc28gaW5kaWNhdGUgYSBzaWduZWQKKy8vIHNpZ25hbGluZyBOYU4gd2l0aCBzb21lIGFkZGl0
aW9uYWwgTmFOIHBheWxvYWQgYml0cy4KKy8vCisvLyBPdXIgdXNlIG9mIE5hTiBlbmNvZGluZyBt
ZWFucyB0aGF0IHdlIGhhdmUgdG8gYmUgY2FyZWZ1bCB3aXRoIGhvdyB3ZSB1c2UgTmFOcyBmb3IK
Ky8vIG9yZGluYXJ5IGRvdWJsZXMuIEZvciBleGFtcGxlLCBpdCB3b3VsZCBiZSB3cm9uZyB0byBl
dmVyIHVzZSBhIE5hTiB0aGF0IGhhcyB0aGUgdG9wCisvLyAxNSBiaXRzIHNldCwgYXMgdGhhdCB3
b3VsZCBsb29rIGxpa2UgYSBub24tZG91YmxlIHZhbHVlIHRvIEpTQy4KKy8vCisvLyBXZSBjYW4g
dHJ1c3QgdGhhdCBvbiBhbGwgb2YgdGhlIGhhcmR3YXJlL09TIGNvbWJpbmF0aW9ucyB0aGF0IHdl
IGNhcmUgYWJvdXQsCisvLyBOYU4tcHJvZHVjaW5nIG1hdGggb3BlcmF0aW9ucyBuZXZlciBwcm9k
dWNlIGEgTmFOIHRoYXQgbG9va3MgbGlrZSBhIHRhZ2dlZCB2YWx1ZS4gQnV0CisvLyBpZiB3ZSdy
ZSBldmVyIGluIGEgc2l0dWF0aW9uIHdoZXJlIHdlIHdvcnJ5IGFib3V0IGl0LCB3ZSBjYW4gdXNl
IHB1cmlmeU5hTigpIHRvIGdldCBhCisvLyBOYU4gdGhhdCBkb2Vzbid0IGxvb2sgbGlrZSBhIHRh
Z2dlZCBub24tZG91YmxlIHZhbHVlLiBUaGUgSmF2YVNjcmlwdCBsYW5ndWFnZSBkb2Vzbid0Cisv
LyBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCBmbGF2b3JzIG9mIE5hTiBhbmQgdGhlcmUg
aXMgbm8gd2F5IHRvIGRldGVjdCB3aGF0IGtpbmQKKy8vIG9mIE5hTiB5b3UgaGF2ZSAtIGhlbmNl
IHNvIGxvbmcgYXMgYWxsIGRvdWJsZSBOYU5zIGFyZSBwdXJpZmllZCB0aGVuIG91ciB0YWdnaW5n
CisvLyBzY2hlbWUgcmVtYWlucyBzb3VuZC4KKy8vCisvLyBJdCdzIHdvcnRoIG5vdGluZyB0aGF0
IHRoZXJlIGFyZSBjYXNlcywgbGlrZSBzaW4oKSwgdGhhdCB3aWxsIGFsbW9zdCBwcm9kdWNlIGEg
TmFOCisvLyB0aGF0IGJyZWFrcyB1cy4gc2luKC1pbmYpIHJldHVybnMgMHhmZmY4MDAwMDAwMDAw
MDAwLiBUaGlzIGRvZXNuJ3QgYnJlYWsgdXMgYmVjYXVzZQorLy8gbm90IGFsbCBvZiB0aGUgdG9w
IDE1IGJpdHMgYXJlIHNldC4gQnV0IGl0J3MgdmVyeSBjbG9zZS4gSGVuY2Ugb3VyIGFzc3VtcHRp
b25zIGFib3V0CisvLyBOYU4gYXJlIGp1c3QgYWJvdXQgdGhlIG1vc3QgYWdncmVzc2l2ZSBhc3N1
bXB0aW9ucyB3ZSBjb3VsZCBwb3NzaWJseSBtYWtlIHdpdGhvdXQKKy8vIGhhdmluZyB0byBjYWxs
IHB1cmlmeU5hTigpIGluIHN1cnByaXNpbmcgcGxhY2VzLgorCitpbmxpbmUgZG91YmxlIHB1cmVO
YU4oKQoreworICAgIC8vIEJlIHN1cmUgdGhhdCB3ZSByZXR1cm4gZXhhY3RseSB0aGUga2luZCBv
ZiBOYU4gdGhhdCBpcyBzYWZlLiBXZSBlbmdpbmVlciB0aGUgYml0cworICAgIC8vIG91ciBzZWx2
ZXMgdG8gZW5zdXJlIHRoYXQgaXQncyAhbG9va3NMaWtlVGFnZ2VkVmFsdWUoKSBhbmQgc28gdGhh
dCBpdCB3aWxsIGJlCisgICAgLy8gZWFzaWx5IHJlY29nbml6YWJsZSB3aGVuIHdlIGxvb2sgYXQg
Yml0cy4gRldJVywgdGhpcyBpcyB3aGF0CisgICAgLy8gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCkgcmV0dXJucyBvbiBNYWMvWDg2XzY0LgorICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8ZG91YmxlPigweDdmZjgwMDAwMDAwMDAwMDBsbCk7Cit9CisKKyNkZWZpbmUgUE5hTiAocHVy
ZU5hTigpKQorCitpbmxpbmUgYm9vbCBsb29rc0xpa2VUYWdnZWRWYWx1ZShkb3VibGUgdmFsdWUp
Cit7CisgICAgLy8gVGVzdHMgaWYgdGhlIGRvdWJsZSB2YWx1ZSB3b3VsZCBicmVhayBKU1ZBTFVF
NjQgZW5jb2RpbmcsIHdoaWNoIGlzIHRoZSBtb3N0CisgICAgLy8gYWdncmVzc2l2ZSBraW5kIG9m
IGVuY29kaW5nIHRoYXQgd2UgY3VycmVudGx5IHVzZS4KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0
PHVpbnQ2NF90Pih2YWx1ZSkgPj0gMHhmZmZlMDAwMDAwMDAwMDAwbGx1OworfQorCitpbmxpbmUg
ZG91YmxlIHB1cmlmeU5hTihkb3VibGUgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlICE9IHZhbHVl
KQorICAgICAgICByZXR1cm4gUE5hTjsKKyAgICByZXR1cm4gdmFsdWU7Cit9ICAgCisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHVyZU5hTl9oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAkocmV2aXNpb24g
MTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0
b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDkgKzg5LDcgQEAgc3RydWN0IEZsb2F0VHlwZWRB
cnJheUFkYXB0b3IgewogICAgIAogICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShUeXBlIHZh
bHVlKQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKQotICAgICAgICAgICAgcmV0
dXJuIGpzRG91YmxlTnVtYmVyKFFOYU4pOwotICAgICAgICByZXR1cm4ganNEb3VibGVOdW1iZXIo
dmFsdWUpOworICAgICAgICByZXR1cm4ganNEb3VibGVOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSk7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBkb3VibGUgdG9Eb3VibGUoVHlwZSB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229463</attachid>
            <date>2014-04-16 12:09:51 -0700</date>
            <delta_ts>2014-04-16 12:44:06 -0700</delta_ts>
            <desc>almost done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>67270</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkocmV2aXNpb24g
MTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAzLDEzICszMDMsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVt
YmVyKEpTQ29udGV4dFJlCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKLSAgICAvLyBPdXIgSlNWYWx1ZSByZXByZXNlbnRh
dGlvbiByZWxpZXMgb24gYSBzdGFuZGFyZCBiaXQgcGF0dGVybiBmb3IgTmFOLiBOYU5zCi0gICAg
Ly8gZ2VuZXJhdGVkIGludGVybmFsbHkgdG8gSmF2YVNjcmlwdENvcmUgbmF0dXJhbGx5IGhhdmUg
dGhhdCByZXByZXNlbnRhdGlvbiwKLSAgICAvLyBidXQgYW4gZXh0ZXJuYWwgTmFOIG1pZ2h0IG5v
dC4KLSAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCi0gICAgICAgIHZhbHVlID0gUU5hTjsKLQot
ICAgIHJldHVybiB0b1JlZihleGVjLCBqc051bWJlcih2YWx1ZSkpOworICAgIHJldHVybiB0b1Jl
ZihleGVjLCBqc051bWJlcihwdXJpZnlOYU4odmFsdWUpKSk7CiB9CiAKIEpTVmFsdWVSZWYgSlNW
YWx1ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKQpAQCAt
Mzg0LDcgKzM3OCw3IEBAIGRvdWJsZSBKU1ZhbHVlVG9OdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwK
IHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIFFOYU47CisgICAgICAgIHJldHVybiBQTmFOOwogICAgIH0KICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKQEAg
LTQwMCw3ICszOTQsNyBAQCBkb3VibGUgSlNWYWx1ZVRvTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgs
CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgICAgIGV4ZWMtPnZtRW50cnlHbG9i
YWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVj
LCBleGNlcHRpb25WYWx1ZSk7CiAjZW5kaWYKLSAgICAgICAgbnVtYmVyID0gUU5hTjsKKyAgICAg
ICAgbnVtYmVyID0gUE5hTjsKICAgICB9CiAgICAgcmV0dXJuIG51bWJlcjsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjg4LDYgKzI4OCw3IEBACiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJC
MSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjU2QTFEMTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTZBMUQ0MTUwMDFDRjIwMDI5
OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCAqLzsgfTsKIAkJMEY1NzJENEYxNjg3OUZERDAw
RTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjU3MkQ0RDE2ODc5RkRCMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjU3ODBBMjE4RkUxRTk4MDAxRTcyRDkgLyogUHVyZU5hTi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NzgwQTExOEZFMUU5ODAwMUU3MkQ5IC8qIFB1
cmVOYU4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjVBNTJEMDE3QURENzE3MDA4RUNCMkQgLyogQ29weVRva2VuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVBNTJDRjE3QURENzE3MDA4RUNCMkQg
LyogQ29weVRva2VuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY1QTYyODMxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QTYyODExODhD
OThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwICovOyB9OwogCQkwRjVBNjI4NDE4OEM5
OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QTYyODIxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVl
UmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMjA4NSw2ICsyMDg2LDcgQEAKIAkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1
dGlvbkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9u
Q291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2QTFENDE1MDAxQ0Yy
MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFeGVjdXRpb25Db3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1NzJENEQxNjg3OUZEQjAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRodW5rR2VuZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJlTmFO
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmVOYU4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QTUyQ0YxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tl
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5VG9rZW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QTYyODExODhDOThENDAwNzJDOURGIC8qIEZUTFZh
bHVlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMVmFs
dWVSYW5nZS5jcHA7IHBhdGggPSBmdGwvRlRMVmFsdWVSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNUE2MjgyMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFZhbHVlUmFuZ2UuaDsgcGF0
aCA9IGZ0bC9GVExWYWx1ZVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MTQzLDggKzQxNDUsNiBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMkFGNzM4MkEx
OEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovLAotCQkJCTJBRjczODJC
MThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8sCiAJCQkJQkNGNjA1MTEw
RTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgw
MEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZCNkM5IC8q
IEFyZ3VtZW50cy5jcHAgKi8sCkBAIC00MTk4LDggKzQxOTgsOCBAQAogCQkJCTk2OUEwOTIyMEVE
MUUwOUMwMEYxRjY4MSAvKiBDb21wbGV0aW9uLmNwcCAqLywKIAkJCQlGNUJCMkJDNTAzMEY3NzIx
MDFGQ0ZFMUQgLyogQ29tcGxldGlvbi5oICovLAogCQkJCTBGREIyQ0U5MTc0ODk2QzcwMDdCM0Mx
QiAvKiBDb25jdXJyZW50SklUTG9jay5oICovLAotCQkJCUE1M0NFMDg5MThCQzIxQzMwMEJFREY3
NiAvKiBDb25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTVCNkE3NEMxOEM2REJBNjAwRjExRTkxIC8q
IENvbnNvbGVDbGllbnQuY3BwICovLAorCQkJCUE1M0NFMDg5MThCQzIxQzMwMEJFREY3NiAvKiBD
b25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTUzQ0UwODExOEJDMUE1NjAwQkVERjc2IC8qIENvbnNv
bGVQcm90b3R5cGUuY3BwICovLAogCQkJCUE1M0NFMDgyMThCQzFBNTYwMEJFREY3NiAvKiBDb25z
b2xlUHJvdG90eXBlLmggKi8sCiAJCQkJQTVGRDAwNzExODlCMDM4QzAwNjMzMjMxIC8qIENvbnNv
bGVUeXBlcy5oICovLApAQCAtNDI4NCwxMiArNDI4NCwxMiBAQAogCQkJCUJDN0Y4RkJBMEUxOUQx
RUYwMDg2MzJDMCAvKiBKU0NlbGwuY3BwICovLAogCQkJCUJDMTE2N0Q4MEUxOUJDQzkwMDgwNjZE
RCAvKiBKU0NlbGwuaCAqLywKIAkJCQkwRjk3NDk2RjE2ODdBREUyMDBBNEZGNkEgLyogSlNDZWxs
SW5saW5lcy5oICovLAotCQkJCUE1M0NFMDgzMThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUu
Y3BwICovLAotCQkJCUE1M0NFMDg0MThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuaCAqLywK
IAkJCQkwRjFERDg0OTE4QTk0NUJFMDAyNkYzRkEgLyogSlNDSW5saW5lcy5oICovLAogCQkJCUY2
OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLywKIAkJCQkxNEFCQjM2
RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICovLAogCQkJCTg2NUEzMEYwMTM1MDA3
RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovLAorCQkJCUE1M0NFMDgzMThCQzFB
NTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuY3BwICovLAorCQkJCUE1M0NFMDg0MThCQzFBNTYwMEJF
REY3NiAvKiBKU0NvbnNvbGUuaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBBN0FFM0YgLyog
SlNEYXRhVmlldy5jcHAgKi8sCiAJCQkJMEYyQjY2QkUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0
YVZpZXcuaCAqLywKIAkJCQkwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1By
b3RvdHlwZS5jcHAgKi8sCkBAIC00NDQzLDYgKzQ0NDMsNyBAQAogCQkJCTY1QzAyRkJCMDYzNzQ2
MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8sCiAJCQkJMTREODQ0QTIxNkFBMkM3MDAwQTY1QUYw
IC8qIFByb3RvdHlwZU1hcC5jcHAgKi8sCiAJCQkJMTREODQ0QTMxNkFBMkM3MDAwQTY1QUYwIC8q
IFByb3RvdHlwZU1hcC5oICovLAorCQkJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJl
TmFOLmggKi8sCiAJCQkJMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4
TW9kZS5oICovLAogCQkJCTE0N0I4NDYyMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNs
b3QuaCAqLywKIAkJCQlGNjkyQTg3RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLywK
QEAgLTQ0OTMsNiArNDQ5NCw5IEBACiAJCQkJQkNERTNBQjEwRTZDODJDRjAwMTQ1M0E3IC8qIFN0
cnVjdHVyZS5oICovLAogCQkJCTdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVD
aGFpbi5jcHAgKi8sCiAJCQkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNo
YWluLmggKi8sCisJCQkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxv
Yi5oICovLAorCQkJCTJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmNwcCAqLywKKwkJCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJs
ZS5oICovLAogCQkJCTBGRDJDOTIzMTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVz
LmggKi8sCiAJCQkJQzJGMEYyRDAxNkJBRUVFOTAwMTg3QzE5IC8qIFN0cnVjdHVyZVJhcmVEYXRh
LmNwcCAqLywKIAkJCQlDMkZFMThBMzE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJlUmFyZURh
dGEuaCAqLywKQEAgLTQ1MzQsNyArNDUzOCw2IEBACiAJCQkJMTQyMEJFN0ExMEFBNkREQjAwRjQ1
NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyog
V3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRl
QmFycmllcklubGluZXMuaCAqLywKLQkJCQkyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3Ry
dWN0dXJlSURCbG9iLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNjA2OCw2ICs2MDcxLDcgQEAKIAkJCQlCQzE4QzQzRjBFMTZG
NUNEMDBCMzQ0NjAgLyogTm9kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTQ1QTI4MThBMUIy
NTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDQxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY1NzgwQTIxOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDQyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBO
dW1iZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQ0MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBOdW1iZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lvbiAx
NjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsOCArMTYxLDggQEAgdm9pZCBkdW1wU3BlY3VsYXRp
b24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ1MikKICAgICAg
ICAgbXlPdXQucHJpbnQoIkludDUyIik7CiAgICAgICAgIAotICAgIGlmICgodmFsdWUgJiBTcGVj
RG91YmxlKSA9PSBTcGVjRG91YmxlKQotICAgICAgICBteU91dC5wcmludCgiRG91YmxlIik7Cisg
ICAgaWYgKCh2YWx1ZSAmIFNwZWNCeXRlY29kZURvdWJsZSkgPT0gU3BlY0J5dGVjb2RlRG91Ymxl
KQorICAgICAgICBteU91dC5wcmludCgiQnl0ZWNvZGVkb3VibGUiKTsKICAgICBlbHNlIHsKICAg
ICAgICAgaWYgKHZhbHVlICYgU3BlY0ludDUyQXNEb3VibGUpCiAgICAgICAgICAgICBteU91dC5w
cmludCgiSW50NTJhc2RvdWJsZSIpOwpAQCAtMTc0LDEyICsxNzQsMTUgQEAgdm9pZCBkdW1wU3Bl
Y3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBp
c1RvcCA9IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZU5h
TikKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJEb3VibGVuYW4iKTsKKyAgICAgICAgaWYgKHZh
bHVlICYgU3BlY0RvdWJsZVB1cmVOYU4pCisgICAgICAgICAgICBteU91dC5wcmludCgiRG91Ymxl
cHVyZW5hbiIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAg
IH0KICAgICAKKyAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICBv
dXQucHJpbnQoIkRvdWJsZWltcHVyZW5hbiIpOworICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNC
b29sZWFuKQogICAgICAgICBteU91dC5wcmludCgiQm9vbCIpOwogICAgIGVsc2UKQEAgLTM0OCw3
ICszNTEsNyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAg
aWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFz
TnVtYmVyKCk7CiAgICAgICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQotICAgICAgICAgICAgcmV0
dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAgICAgICByZXR1cm4gU3BlY0RvdWJsZVB1cmVOYU47
CiAgICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBT
cGVjSW50NTJBc0RvdWJsZTsKICAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKQEAg
LTQyOCw1ICs0MzEsOTIgQEAgYm9vbCB2YWx1ZXNDb3VsZEJlRXF1YWwoU3BlY3VsYXRlZFR5cGUg
YQogICAgIHJldHVybiAhIShhICYgYik7CiB9CiAKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJs
ZVN1bShTcGVjdWxhdGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQoreworICAgIFNwZWN1bGF0
ZWRUeXBlIHJlc3VsdCA9IGEgfCBiOworICAgIC8vIEltcHVyZSBOYU4gY291bGQgYmVjb21lIHB1
cmUgTmFOIGR1cmluZyBhZGRpdGlvbiBiZWNhdXNlIGFkZGl0aW9uIG1heSBjbGVhciBiaXRzLgor
ICAgIGlmIChyZXN1bHQgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICByZXN1bHQgfD0g
U3BlY0RvdWJsZVB1cmVOYU47CisgICAgLy8gVmFsdWVzIGNvdWxkIG92ZXJmbG93LCBvciBmcmFj
dGlvbnMgY291bGQgYmVjb21lIGludGVnZXJzLgorICAgIGlmIChyZXN1bHQgJiBTcGVjRG91Ymxl
UmVhbCkKKyAgICAgICAgcmVzdWx0IHw9IFNwZWNEb3VibGVSZWFsOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZURpZmZlcmVuY2UoU3BlY3VsYXRl
ZFR5cGUgYSwgU3BlY3VsYXRlZFR5cGUgYikKK3sKKyAgICByZXR1cm4gdHlwZU9mRG91YmxlU3Vt
KGEsIGIpOworfQorCitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVQcm9kdWN0KFNwZWN1bGF0
ZWRUeXBlIGEsIFNwZWN1bGF0ZWRUeXBlIGIpCit7CisgICAgcmV0dXJuIHR5cGVPZkRvdWJsZVN1
bShhLCBiKTsKK30KKworc3RhdGljIFNwZWN1bGF0ZWRUeXBlIHBvbGx1dGVEb3VibGUoU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpCit7CisgICAgLy8gSW1wdXJlIE5hTiBjb3VsZCBiZWNvbWUgcHVyZSBO
YU4gYmVjYXVzZSB0aGUgb3BlcmF0aW9uIGNvdWxkIGNsZWFyIHNvbWUgYml0cy4KKyAgICBpZiAo
dmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICB2YWx1ZSB8PSBTcGVjRG91Ymxl
TmFOOworICAgIC8vIFZhbHVlcyBjb3VsZCBvdmVyZmxvdywgZnJhY3Rpb25zIGNvdWxkIGJlY29t
ZSBpbnRlZ2Vycywgb3IgYW4gZXJyb3IgY291bGQgcHJvZHVjZQorICAgIC8vIFB1cmVOYU4uCisg
ICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZVJlYWwpCisgICAgICAgIHZhbHVlIHw9IFNwZWNEb3Vi
bGVSZWFsIHwgU3BlY0RvdWJsZVB1cmVOYU47CisgICAgcmV0dXJuIHZhbHVlOworfQorCitTcGVj
dWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVRdW90aWVudChTcGVjdWxhdGVkVHlwZSBhLCBTcGVjdWxh
dGVkVHlwZSBiKQoreworICAgIHJldHVybiBwb2xsdXRlRG91YmxlKGEgfCBiKTsKK30KKworU3Bl
Y3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlTWluTWF4KFNwZWN1bGF0ZWRUeXBlIGEsIFNwZWN1bGF0
ZWRUeXBlIGIpCit7CisgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gYSB8IGI7CisgICAgLy8g
SW1wdXJlIE5hTiBjb3VsZCBiZWNvbWUgcHVyZSBOYU4gZHVyaW5nIGFkZGl0aW9uIGJlY2F1c2Ug
YWRkaXRpb24gbWF5IGNsZWFyIGJpdHMuCisgICAgaWYgKHJlc3VsdCAmIFNwZWNEb3VibGVJbXB1
cmVOYU4pCisgICAgICAgIHJlc3VsdCB8PSBTcGVjRG91YmxlUHVyZU5hTjsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVOZWdhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKK3sKKyAgICAvLyBJbXB1cmUgTmFOIGNvdWxkIGJlY29tZSBwdXJlIE5h
TiBiZWNhdXNlIGJpdHMgbWlnaHQgZ2V0IGNsZWFyZWQuCisgICAgaWYgKHZhbHVlICYgU3BlY0Rv
dWJsZUltcHVyZU5hTikKKyAgICAgICAgdmFsdWUgfD0gU3BlY0RvdWJsZVB1cmVOYU47CisgICAg
Ly8gV2UgY291bGQgZ2V0IG5lZ2F0aXZlIHplcm8sIHdoaWNoIG1peGVzIFNwZWNJbnQ1MkFzRG91
YmxlIGFuZCBTcGVjTm90SW50QXNEb3VibGUuCisgICAgLy8gV2UgY291bGQgYWxzbyBvdmVyZmxv
dyBhIGxhcmdlIG5lZ2F0aXZlIGludCBpbnRvIHNvbWV0aGluZyB0aGF0IGlzIG5vIGxvbmdlcgor
ICAgIC8vIHJlcHJlc2VudGFibGUgYXMgYW4gaW50LgorICAgIGlmICh2YWx1ZSAmIFNwZWNEb3Vi
bGVSZWFsKQorICAgICAgICB2YWx1ZSB8PSBTcGVjRG91YmxlUmVhbDsKKyAgICByZXR1cm4gdmFs
dWU7Cit9CisKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZUFicyhTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdHlwZU9mRG91YmxlTmVnYXRpb24odmFsdWUpOworfQorCitT
cGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVGUm91bmQoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7
CisgICAgLy8gV2UgbWlnaHQgbG9zZSBiaXRzLCB3aGljaCBsZWFkcyB0byBhIE5hTiBiZWluZyBw
dXJpZmllZC4KKyAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICB2
YWx1ZSB8PSBTcGVjRG91YmxlUHVyZU5hTjsKKyAgICAvLyBXZSBtaWdodCBsb3NlIGJpdHMsIHdo
aWNoIGxlYWRzIHRvIGEgdmFsdWUgYmVjb21pbmcgaW50ZWdlci1yZXByZXNlbnRhYmxlLgorICAg
IGlmICh2YWx1ZSAmIFNwZWNOb3RJbnRBc0RvdWJsZSkKKyAgICAgICAgdmFsdWUgfD0gU3BlY0lu
dDUyQXNEb3VibGU7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitTcGVjdWxhdGVkVHlwZSB0eXBl
T2ZEb3VibGVCaW5hcnlPcChTcGVjdWxhdGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQorewor
ICAgIHJldHVybiBwb2xsdXRlRG91YmxlKGEgfCBiKTsKK30KKworU3BlY3VsYXRlZFR5cGUgdHlw
ZU9mRG91YmxlVW5hcnlPcChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gcG9s
bHV0ZURvdWJsZSh2YWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNp
b24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDE4ICs2OCwyMSBAQCBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludDUyQXNECiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0ludGVnZXIgICAgICAgICAgICA9IDB4MDBlMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21l
IGtpbmQgb2YgaW50ZWdlci4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uSW50
QXNEb3VibGUgICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vdCBhbiBJbnQ1
MiBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91YmxlLgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAweDAxODAwMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgID0gMHgwMjAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAg
ICAgICAgPSAweDAzODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91
YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVQdXJlTmFOICAgICAg
PSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBOYU4gdGhhdCBpcyBzYWUgdG8gdGFn
IChpLmUuIHB1cmUpLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVJbXB1
cmVOYU4gICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBOYU4gdGhhdCBpcyB1
bnNhZmUgdG8gdGFnIChpLmUuIGltcHVyZSkuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0RvdWJsZU5hTiAgICAgICAgICA9IDB4MDYwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBz
b21lIGtpbmQgb2YgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29k
ZURvdWJsZSAgICAgPSAweDAzODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBO
YU4gZG91YmxlLCBidXQgaXQncyBkZWZpbml0ZWx5IG5vdCBpbXB1cmUgTmFOLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAgICAgPSAweDA3ODAwMDAwOyAv
LyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLgogc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVJlYWxOdW1iZXIgPSAweDAxYTAwMDAwOyAvLyBJdCdz
IGVpdGhlciBhbiBJbnQzMiBvciBhIERvdWJsZVJlYWwuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0Z1bGxSZWFsTnVtYmVyICAgICA9IDB4MDFlMDAwMDA7IC8vIEl0J3MgZWl0aGVy
IGFuIEludDMyIG9yIGEgRG91YmxlUmVhbCwgb3IgYSBJbnQ1Mi4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVOdW1iZXIgICAgID0gMHgwM2EwMDAwMDsgLy8gSXQncyBl
aXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0Z1bGxOdW1iZXIgICAgICAgICA9IDB4MDNlMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIElu
dDMyLCBJbnQ1Miwgb3IgYSBEb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0J5dGVjb2RlTnVtYmVyICAgICA9IDB4MDNhMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMy
IG9yIGEgRG91YmxlLCBhbmQgdGhlIERvdWJsZSBjYW5ub3QgYmUgYW4gaW1wdXJlIE5hTi4KK3N0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbE51bWJlciAgICAgICAgID0gMHgwN2Uw
MDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIsIEludDUyLCBvciBhIERvdWJsZSwgYW5kIHRo
ZSBEb3VibGUgY2FuIGJlIGltcHVyZSBOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0Jvb2xlYW4gICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
IEJvb2xlYW4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAg
ICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRl
ZmluZWQuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAg
ICA9IDB4MzAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBOdWxs
LCBvciBVbmRlZmluZWQuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3Ag
ICAgICAgICAgICA9IDB4M2ZiZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBl
eGNlcHQgZm9yIFNwZWNJbnQ1Mi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSGVh
cFRvcCAgICAgICAgICAgID0gMHgzYmJmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJv
dmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4g
ZW1wdHkgdmFsdWUgbWFya2VyLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRl
Y29kZVRvcCAgICAgICAgPSAweDdmYmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92
ZSwgZXhjZXB0IGZvciBTcGVjSW50NTIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0J5dGVjb2RlVG9wICAgICAgICA9IDB4N2JiZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhl
IGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjRnVsbFRvcCAgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBv
ZiB0aGUgYWJvdmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCiAKIHR5cGVkZWYgYm9v
bCAoKlNwZWN1bGF0ZWRUeXBlQ2hlY2tlcikoU3BlY3VsYXRlZFR5cGUpOwpAQCAtMzk3LDYgKzQw
MCwyMiBAQCBTcGVjdWxhdGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5CiAKIGJvb2wg
dmFsdWVzQ291bGRCZUVxdWFsKFNwZWN1bGF0ZWRUeXBlLCBTcGVjdWxhdGVkVHlwZSk7CiAKKy8v
IFByZWNpc2UgY29tcHV0YXRpb24gb2YgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiBhIGRvdWJs
ZSBjb21wdXRhdGlvbiBhZnRlciB3ZQorLy8gYWxyZWFkeSBrbm93IHRoYXQgdGhlIGlucHV0cyBh
cmUgZG91YmxlcyBhbmQgdGhhdCB0aGUgcmVzdWx0IG11c3QgYmUgYSBkb3VibGUuIFVzZQorLy8g
dGhlIGNsb3Nlc3Qgb25lIG9mIHRoZXNlIHRoYXQgYXBwbGllcy4KK1NwZWN1bGF0ZWRUeXBlIHR5
cGVPZkRvdWJsZVN1bShTcGVjeWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRl
ZFR5cGUgdHlwZU9mRG91YmxlRGlmZmVyZW5jZShTcGVjeWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5
cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlUHJvZHVjdChTcGVjeWxhdGVkVHlwZSwg
U3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlUXVvdGllbnQoU3Bl
Y3lsYXRlZFR5cGUsIFNwZWN1bGF0ZWRUeXBlKTsKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJs
ZU1pbk1heChTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRlZFR5cGUg
dHlwZU9mRG91YmxlTmVnYXRpb24oU3BlY3lsYXRlZFR5cGUpOworU3BlY3VsYXRlZFR5cGUgdHlw
ZU9mRG91YmxlQWJzKFNwZWN5bGF0ZWRUeXBlKTsKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJs
ZUZSb3VuZChTcGVjeWxhdGVkVHlwZSk7CisKKy8vIFRoaXMgY29uc2VydmF0aXZlbHkgbW9kZWxz
IHRoZSBiZWhhdmlvciBvZiBhcmJpdHJhcnkgZG91YmxlIG9wZXJhdGlvbnMuCitTcGVjdWxhdGVk
VHlwZSB0eXBlT2ZEb3VibGVCaW5hcnlPcChTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUp
OworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlVW5hcnlPcChTcGVjdWxhdGVkVHlwZSk7CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3BlY3VsYXRlZFR5cGVfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTUsNyArMjU1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDUyQXNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzSW50MzIoKSkgewpAQCAtMzkwLDExICszOTAs
OSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJlcigpICsg
cmlnaHQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGlzRnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUpCi0gICAgICAgICAgICAgICAgJiYgaXNGdWxsUmVhbE51bWJl
clNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCi0gICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7
CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoCisgICAgICAgICAgICAgICAgdHlw
ZU9mRG91YmxlU3VtKAorICAgICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5tX3R5cGUsIGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNDQ2LDcgKzQ0NCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJs
ZU51bWJlcihsZWZ0LmFzTnVtYmVyKCkgLSByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoCisg
ICAgICAgICAgICAgICAgdHlwZU9mRG91YmxlRGlmZmVyZW5jZSgKKyAgICAgICAgICAgICAgICAg
ICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMigp
KS5tX3R5cGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUwMyw3ICs1MDMsOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoLWNoaWxkLmFzTnVtYmVyKCkpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZSgKKyAgICAgICAgICAgICAgICB0eXBlT2ZEb3VibGVOZWdhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC01NTQsMTEgKzU1Niw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJs
ZU51bWJlcihsZWZ0LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51
bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAg
ICAgICAgICB8fCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGls
ZDIoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y0RvdWJsZVJlYWwpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZSgKKyAgICAgICAgICAgICAgICB0eXBlT2ZEb3VibGVQcm9kdWN0KAorICAgICAgICAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUsIGZvck5vZGUobm9kZS0+Y2hp
bGQyKCkpLm1fdHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTkyLDcgKzU5Miw5
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0LmFzTnVtYmVyKCkgLyBy
aWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoCisgICAgICAgICAgICAgICAgdHlwZU9mRG91Ymxl
UXVvdGllbnQoCisgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSwgZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC02MjYsNyArNjI4LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVt
YmVyKGZtb2QobGVmdC5hc051bWJlcigpLCByaWdodC5hc051bWJlcigpKSkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKAor
ICAgICAgICAgICAgICAgIHR5cGVPZkRvdWJsZUJpbmFyeU9wKAorICAgICAgICAgICAgICAgICAg
ICBmb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSwgZm9yTm9kZShtX25vZGUtPmNoaWxk
MigpKS5tX3R5cGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY1NCw3ICs2NTgsOSBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoYSA8IGIgPyBhIDogKGIgPD0gYSA/
IGIgOiBhICsgYikpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZSgKKyAgICAgICAgICAgICAgICB0eXBlT2ZEb3VibGVNaW5N
YXgoCisgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkubV90eXBl
LCBmb3JOb2RlKG1fbm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNjgyLDcgKzY4OCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJl
cihhID4gYiA/IGEgOiAoYiA+PSBhID8gYiA6IGEgKyBiKSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNEb3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKAorICAgICAgICAg
ICAgICAgIHR5cGVPZkRvdWJsZU1pbk1heCgKKyAgICAgICAgICAgICAgICAgICAgZm9yTm9kZSht
X25vZGUtPmNoaWxkMSgpKS5tX3R5cGUsIGZvck5vZGUobV9ub2RlLT5jaGlsZDIoKSkubV90eXBl
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC03MTAsNyArNzE4LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSh0eXBl
T2ZEb3VibGVBYnMoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC03MjUsNyArNzMzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVO
dW1iZXIoc3FydChjaGlsZC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZU9mRG91YmxlVW5hcnlPcChmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAg
LTczNSw3ICs3NDMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihzdGF0aWNfY2Fz
dDxmbG9hdD4oY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGVPZkRvdWJsZUZSb3VuZChmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTc0
NSw3ICs3NTMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihzaW4oY2hpbGQuYXNO
dW1iZXIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKHR5cGVPZkRvdWJsZVVuYXJ5T3AoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKQEAgLTc1NSw3ICs3NjMsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0RvdWJsZU51bWJlcihjb3MoY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
RG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGVPZkRvdWJsZVVuYXJ5
T3AoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAgICAgICAgIApAQCAtMTA0NSw3ICsxMDUzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5hcnJh
eU1vZGUoKS5pc1NhbmVDaGFpbigpKQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0J5dGVjb2RlRG91YmxlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJlYWwpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMDgwLDEzICsxMDg4LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgICAgIGVsc2UgaWYgKGVuYWJsZUludDUyKCkgJiYgbm9kZS0+c2hv
dWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShTcGVjSW50NTIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0ludDUyQXNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjQnl0ZWNvZGVEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
QXJyYXk6OkZsb2F0NjRBcnJheToKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNv
ZGVEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2NzMzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDg2LDcgKzE0ODYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhOb2RlCiAgICAgCiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNp
YyBibG9jayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgotICAgIFJlZlB0cjxC
YXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1f
bnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUU5hTikpOworICAgIFJlZlB0cjxCYXNpY0Jsb2Nr
PiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2FscywgUE5hTikpOwogCiAgICAgLy8gTGluayB0aGUgZWFybHkgcmV0dXJu
cyB0byB0aGUgYmFzaWMgYmxvY2sgd2UncmUgYWJvdXQgdG8gY3JlYXRlLgogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLnNpemUoKTsg
KytpKSB7CkBAIC0zNTc4LDcgKzM1NzgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNv
ZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5s
YXN0QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2Rl
QmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFz
aWNCbG9jayhtX2N1cnJlbnRJbmRleCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBRTmFO
KSk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0
UmVmKG5ldyBCYXNpY0Jsb2NrKG1fY3VycmVudEluZGV4LCBtX251bUFyZ3VtZW50cywgbV9udW1M
b2NhbHMsIFBOYU4pKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9j
ay5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBhc3NlcnRpb24gY2hlY2tzIHR3
byB0aGluZ3M6CiAgICAgICAgICAgICAgICAgICAgIC8vIDEpIElmIHRoZSBieXRlY29kZUJlZ2lu
IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50SW5kZXgsIHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGlj
YWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIC8vIE5vdGUg
dGhhdCB3ZSBwYXNzIE5hTiBmb3IgdGhlIGNvdW50IG9mIHRoZSBjcml0aWNhbCBlZGdlIGJsb2Nr
LCBiZWNhdXNlIHdlIGhvbmVzdGx5CiAgICAgICAgIC8vIGRvbid0IGtub3cgaXRzIGV4ZWN1dGlv
biBmcmVxdWVuY3kuCi0gICAgICAgIEJhc2ljQmxvY2sqIHBhZCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydEJlZm9yZSgqc3VjY2Vzc29yLCBRTmFOKTsKKyAgICAgICAgQmFzaWNCbG9jayogcGFkID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKCpzdWNjZXNzb3IsIFBOYU4pOwogICAgICAgICBw
YWQtPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgKCpz
dWNjZXNzb3IpLT5hdCgwKS0+b3JpZ2luLCBPcEluZm8oKnN1Y2Nlc3NvcikpOwogICAgICAgICBw
YWQtPnByZWRlY2Vzc29ycy5hcHBlbmQocHJlZGVjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJl
dmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFi
c3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsMTQgKzI4Niw4IEBAIGJvb2wg
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAgICAgIC8vIFRoZSBi
bG9jayBzZXRzIHRoZSB2YXJpYWJsZSwgYW5kIHBvdGVudGlhbGx5IHJlZmluZXMgaXQsIGJvdGgK
ICAgICAgICAgICAgIC8vIGJlZm9yZSBhbmQgYWZ0ZXIgc2V0dGluZyBpdC4KICAgICAgICAgICAg
IHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgaWYgKG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpID09IEZsdXNoZWREb3VibGUpIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoIShzb3VyY2UubV90eXBlICYgflNwZWNGdWxsTnVtYmVy
KSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCEhKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0RvdWJs
ZSkgPT0gISEoc291cmNlLm1fdHlwZSAmIFNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSkgewotICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UubWVyZ2UoU3BlY0ludDUyQXNEb3VibGUpOwotICAgICAgICAgICAgICAgICAg
ICBzb3VyY2UuZmlsdGVyKFNwZWNEb3VibGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hG
b3JtYXQoKSA9PSBGbHVzaGVkRG91YmxlKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCEoc291cmNlX21fdHlwZSAmIH5TcGVjRG91YmxlKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVh
ZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVy
KEdyYXBoJiBncmFwaCwgQmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9j
ayogYmxvY2spCiB7CiAgICAgLy8gRG9uJ3QgYm90aGVyIHRvIHByZXNlcnZlIGV4ZWN1dGlvbiBm
cmVxdWVuY2llcyBmb3Igbm93LgotICAgIEJhc2ljQmxvY2sqIHByZUhlYWRlciA9IGluc2VydGlv
blNldC5pbnNlcnRCZWZvcmUoYmxvY2ssIFFOYU4pOworICAgIEJhc2ljQmxvY2sqIHByZUhlYWRl
ciA9IGluc2VydGlvblNldC5pbnNlcnRCZWZvcmUoYmxvY2ssIFBOYU4pOwogICAgIHByZUhlYWRl
ci0+YXBwZW5kTm9kZSgKICAgICAgICAgZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCBibG9jay0+YXQo
MCktPm9yaWdpbiwgT3BJbmZvKGJsb2NrKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDEzICs4OSwxMyBAQCBzdHJ1Y3Qg
TmV3QXJyYXlCdWZmZXJEYXRhIHsKIHN0cnVjdCBCcmFuY2hUYXJnZXQgewogICAgIEJyYW5jaFRh
cmdldCgpCiAgICAgICAgIDogYmxvY2soMCkKLSAgICAgICAgLCBjb3VudChRTmFOKQorICAgICAg
ICAsIGNvdW50KFBOYU4pCiAgICAgewogICAgIH0KICAgICAKICAgICBleHBsaWNpdCBCcmFuY2hU
YXJnZXQoQmFzaWNCbG9jayogYmxvY2spCiAgICAgICAgIDogYmxvY2soYmxvY2spCi0gICAgICAg
ICwgY291bnQoUU5hTikKKyAgICAgICAgLCBjb3VudChQTmFOKQogICAgIHsKICAgICB9CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAg
QmxvY2tJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICAKLSAgICAg
ICAgQmFzaWNCbG9jayogbmV3Um9vdCA9IGluc2VydGlvblNldC5pbnNlcnQoMCwgUU5hTik7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIG5ld1Jvb3QgPSBpbnNlcnRpb25TZXQuaW5zZXJ0KDAsIFBOYU4p
OwogICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAg
ICAgICAgCiAgICAgICAgIFZlY3RvcjxOb2RlKj4gbG9jYWxzKGJhc2VsaW5lLT5tX251bUNhbGxl
ZVJlZ2lzdGVycyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlcjMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4
aXQoY29uc3QgCiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCAr
IGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShH
UFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5zYW5p
dGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LnB1cmlmeU5h
TihGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKEZQUklu
Zm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAg
ICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNv
bnN0IAogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAg
IG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRl
eCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5m
bzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgbV9qaXQuc2FuaXRpemVE
b3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5wdXJpZnlOYU4oRlBS
SW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBS
ZWdUMCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZv
OjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2NzMzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTEgKzExMywxNCBAQCBwcml2YXRlOgogICAg
IAogICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWREb3VibGVUeXBlRm9yUHJlZGljdGlvbihT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICB7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3Vs
dCA9IFNwZWNEb3VibGVSZWFsOworICAgICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJl
TmFOKQorICAgICAgICAgICAgcmVzdWx0IHw9IFNwZWNEb3VibGVJbXB1cmVOYU47CisgICAgICAg
IGlmICh2YWx1ZSAmIFNwZWNEb3VibGVQdXJlTmFOKQorICAgICAgICAgICAgcmVzdWx0IHw9IFNw
ZWNEb3VibGVQdXJlTmFOOwogICAgICAgICBpZiAoIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZh
bHVlKSkKLSAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlOwotICAgICAgICBpZiAodmFsdWUg
JiBTcGVjRG91YmxlTmFOKQotICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGU7Ci0gICAgICAg
IHJldHVybiBTcGVjRG91YmxlUmVhbDsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBTcGVjRG91Ymxl
UHVyZU5hTjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb25zKFNwZWN1bGF0ZWRUeXBlIGxl
ZnQsIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0KQpAQCAtMjE2LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIC8vIGxlZnQgb3IgcmlnaHQgaXMgZGVmaW5pdGVseSBzb21ldGhp
bmcgb3RoZXIgdGhhbiBhIG51bWJlci4KICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmcgfCBT
cGVjSW50MzIgfCBTcGVjRG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZyB8IFNwZWNJbnQzMiB8IFNwZWNCeXRlY29kZWRvdWJs
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzAx
LDcgKzMwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGVDYW5TcGVj
dWxhdGVJbnQzMihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNE
b3VibGUpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjQnl0ZWNvZGVkb3VibGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTMxNSw3ICszMTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihTcGVjRG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY0J5dGVjb2RlZG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zMjQsNyArMzI3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBBcml0aEZSb3VuZDoKICAgICAgICAgY2FzZSBBcml0aFNpbjoKICAgICAgICAg
Y2FzZSBBcml0aENvczogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNEb3VibGUpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCeXRl
Y29kZWRvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MTgs
NyArMjcxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGls
ZDIoKSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCks
IG5vZGUtPmNoaWxkMigpLCBTcGVjRG91YmxlUmVhbCwKICAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZh
bHVlRlBSLCB2YWx1ZUZQUikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRP
ZlB1YmxpY0xlbmd0aCgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0yODM0LDcgKzI4MzQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCB2YWx1ZVBheWxvYWRHUFIs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwKICAgICAgICAgICAgICAgICB0ZW1wRlBSKTsK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNo
RG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCB0ZW1wRlBS
LCB0ZW1wRlBSKTsKLSAgICAgICAgICAgIEpTVmFsdWUgbmFuID0gSlNWYWx1ZShKU1ZhbHVlOjpF
bmNvZGVBc0RvdWJsZSwgUU5hTik7CisgICAgICAgICAgICBKU1ZhbHVlIG5hbiA9IEpTVmFsdWUo
SlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIFBOYU4pOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5hbi51LmFz
Qml0cy50YWcpLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZUdQUiwgdmFsdWVQYXlsb2FkR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKQEAgLTMwNjQsNyArMzA2NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIHVzZSk7CiAgICAg
ICAgICAgICAgICAgICAgIEZQUlJlZyBvcEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAg
ICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MoKSwgdXNlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNEb3VibGVSZWFsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9y
VW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlRG91YmxlKG9wRlBSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdl
R1BSLCBzaXplb2YoZG91YmxlKSAqIG9wZXJhbmRJZHgpKTsKQEAgLTMyMjcsNyArMzIyNyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChoYXNEb3VibGUobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgSlNWYWx1ZSBuYW4gPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBRTmFO
KTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIG5hbiA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2Rl
QXNEb3VibGUsIFBOYU4pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1faml0
Lm1vdmUoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywg
c2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
NjgsNyArMjg2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5j
aGlsZDIoKSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KCksIG5vZGUtPmNoaWxkMigpLCBTcGVjRG91YmxlUmVhbCwKICAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQs
IHZhbHVlRlBSLCB2YWx1ZUZQUikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0yOTU1LDcgKzI5NTUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgd291bGQgbm90IGhhdmUgdG8gYmUgaGVyZSBpZiBjaGFuZ2lu
ZyB0aGUgcHVibGljTGVuZ3RoIGFsc28gemVyb2VkIHRoZSB2YWx1ZXMgYmV0d2VlbiB0aGUgb2xk
CiAgICAgICAgICAgICAgICAgLy8gbGVuZ3RoIGFuZCB0aGUgbmV3IGxlbmd0aC4KICAgICAgICAg
ICAgICAgICBtX2ppdC5zdG9yZTY0KAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihRTmFOKSksIE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OlRpbWVzRWlnaHQpKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW02NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLCBNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0KSk7CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hEb3Vi
bGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHRlbXBGUFIsIHRl
bXBGUFIpOwogICAgICAgICAgICAgICAgIGJveERvdWJsZSh0ZW1wRlBSLCB2YWx1ZUdQUik7CiAg
ICAgICAgICAgICB9IGVsc2UgewpAQCAtMzE2MCw3ICszMTYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywgdXNlKTsKICAgICAgICAgICAgICAgICAgICAgRlBS
UmVnIG9wRlBSID0gb3BlcmFuZC5mcHIoKTsKICAgICAgICAgICAgICAgICAgICAgREZHX1RZUEVf
Q0hFQ0soCi0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNG
dWxsUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVz
ZSwgU3BlY0RvdWJsZVJlYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hE
b3VibGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9wRlBSLCBvcEZQUikpOwogICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5zdG9yZURvdWJsZShvcEZQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgc2l6ZW9mKGRvdWJsZSkgKiBvcGVyYW5kSWR4KSk7CkBAIC0zMjI1LDcgKzMyMjUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAg
ICAgRlBSUmVnIG9wRlBSID0gb3BlcmFuZC5mcHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFs
TnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNEb3Vi
bGVSZWFsLAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJl
ZCwgb3BGUFIsIG9wRlBSKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuYm94RG91YmxlKG9wRlBS
LCBzY3JhdGNoR1BSKTsKQEAgLTMzMjYsNyArMzMyNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZl
Y3Rvckxlbmd0aCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChoYXNEb3VibGUo
bm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tNjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFFOYU4pKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGludDY0X3Q+
KFBOYU4pKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShzaXplR1BS
LCBzY3JhdGNoMkdQUik7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9u
ZSA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaDJHUFIp
OwogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wID0gbV9qaXQubGFi
ZWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTIgKzg0LDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkKICAgICAKICAgICBpZiAo
aGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpICYmIG51bUVsZW1lbnRzIDwgdmVj
dG9yTGVuZ3RoKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tNjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFFOYU4pKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSks
IHNjcmF0Y2hHUFIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1FbGVtZW50czsgaSA8
IHZlY3Rvckxlbmd0aDsgKytpKQogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChzY3JhdGNoR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIGkp
KTsKICNlbHNlCiAgICAgICAgIEVuY29kZWRWYWx1ZURlc2NyaXB0b3IgdmFsdWU7Ci0gICAgICAg
IHZhbHVlLmFzSW50NjQgPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVB
c0RvdWJsZSwgUU5hTikpOworICAgICAgICB2YWx1ZS5hc0ludDY0ID0gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIFBOYU4pKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbnVtRWxlbWVudHM7IGkgPCB2ZWN0b3JMZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmFsdWUuYXNCaXRzLnRhZyksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihkb3VibGUpICogaSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKFRydXN0ZWRJbW0zMih2YWx1ZS5hc0JpdHMucGF5bG9hZCksIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihkb3VibGUpICogaSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOwpAQCAtMTg5MSw3ICsxODkxLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE51bWJlclVzZSkgewogICAgICAgICAgICAgICAg
IERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBu
b2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKGdwciksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gTnVtYmVyVXNlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICAgICAgb3AxLmpzVmFsdWVS
ZWdzKCksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG9wMS5qc1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVt
YmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RU
YWcpKSk7CkBAIC0yNTA3LDcgKzI1MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkZsCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogICAgIAotICAgIG1faml0LnNhbml0aXplRG91YmxlKHJlc3VsdFJlZyk7CisgICAgbV9qaXQu
cHVyaWZ5TmFOKHJlc3VsdFJlZyk7CiAgICAgCiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdFJlZywg
bm9kZSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNj
ZXNzRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVBY2Nlc3NEYXRhLmgJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3
ICszMTQsMTIgQEAgcHVibGljOgogICAgICAgICBpZiAobV9kb3VibGVGb3JtYXRTdGF0ZSAhPSBV
c2luZ0RvdWJsZUZvcm1hdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0g
ICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwgU3BlY0RvdWJsZSk7
CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX3ByZWRpY3Rpb247CisgICAgICAgIGlm
ICh0eXBlICYgflNwZWNOdW1iZXIpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNEb3VibGVQdXJl
TmFOOworICAgICAgICBpZiAodHlwZSAmIFNwZWNNYWNoaW5lSW50KQorICAgICAgICAgICAgdHlw
ZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKKyAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1fcHJl
ZGljdGlvbiwgdHlwZSk7CiAgICAgfQogICAgIAogICAgIE5vZGVGbGFncyBmbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3M7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEyOCw3ICsyMTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuc2VsZWN0KAotICAgICAgICAg
ICAgICAgICAgICBtX291dC5kb3VibGVFcXVhbChyZXN1bHQsIHJlc3VsdCksIHJlc3VsdCwgbV9v
dXQuY29uc3REb3VibGUoUU5hTikpOworICAgICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVF
cXVhbChyZXN1bHQsIHJlc3VsdCksIHJlc3VsdCwgbV9vdXQuY29uc3REb3VibGUoUE5hTikpOwog
ICAgICAgICAgICAgICAgIHNldERvdWJsZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KQEAgLTIyMTUsNyArMjIxNSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKGNoaWxkMyk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAg
IGRvdWJsZVZhbHVlKHZhbHVlKSwgY2hpbGQzLCBTcGVjRnVsbFJlYWxOdW1iZXIsCisgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgY2hpbGQzLCBTcGVjRG91YmxlUmVhbCwK
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCh2YWx1
ZSwgdmFsdWUpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBUeXBlZFBvaW50
ZXIgZWxlbWVudFBvaW50ZXIgPSBtX291dC5iYXNlSW5kZXgoCkBAIC0yNDE0LDcgKzI0MTQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWx1ZSA9
IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBGVExfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBtX25vZGUtPmNo
aWxkMigpLCBTcGVjRnVsbFJlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZVZh
bHVlKHZhbHVlKSwgbV9ub2RlLT5jaGlsZDIoKSwgU3BlY0RvdWJsZVJlYWwsCiAgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUsIHZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgcmVmVHlwZSA9IG1fb3V0LnJlZkRvdWJsZTsKICAgICAgICAgICAg
IH0KQEAgLTI0OTksNyArMjQ5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG1f
b3V0Lm5vdFplcm82NChyZXN1bHQpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93
Q2FzZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbV9vdXQubG9hZERvdWJsZShwb2ludGVyKTsKLSAgICAgICAgICAgICAgICBtX291dC5z
dG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFFOYU4pKSwgcG9p
bnRlcik7CisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KGJp
dHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHBvaW50ZXIpOwogICAgICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihib3hEb3VibGUocmVzdWx0KSkpOwogICAgICAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlRXF1
YWwocmVzdWx0LCByZXN1bHQpLApAQCAtMjczMCw3ICsyNzMwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdp
bmFsUG9pbnRlcik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmU2NCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8
aW50NjRfdD4oUU5hTikpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KGJp
dHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksCiAgICAgICAgICAgICAgICAgICAgIFR5cGVkUG9p
bnRlcihtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzLmF0QW55SW5kZXgoKSwgcG9pbnRl
cikpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExWYWx1ZSBuZXh0SW5kZXgg
PSBtX291dC5zdWIoaW5kZXgsIG1fb3V0LmludDMyT25lKTsKQEAgLTM5NzksNyArMzk3OSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAoZWRnZS51c2VLaW5kKCkgPT0gTnVtYmVy
VXNlKSB7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RJbnRDYXNlLCBjb250aW51YXRp
b24pOwotICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRn
ZSwgU3BlY0Z1bGxOdW1iZXIsIGlzQ2VsbE9yTWlzYyh2YWx1ZSkpOworICAgICAgICAgICAgRlRM
X1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVy
LCBpc0NlbGxPck1pc2ModmFsdWUpKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0
LmFuY2hvcihkb3VibGVUb0ludDMyKHVuYm94RG91YmxlKHZhbHVlKSkpKTsKICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQzODMsNyAr
NDM4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUVsZW1lbnRz
OyBpIDwgdmVjdG9yTGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0
KAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2
NF90PihRTmFOKSksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lz
ZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKICAgICAgICAgICAgICAgICAgICAgYnV0dGVyZmx5LCBt
X2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5j
cHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFs
dWVGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgcmVib3hB
Y2NvcmRpbmdUb0Zvcm1hdCgKICAgICBjYXNlIFZhbHVlRm9ybWF0RG91YmxlOiB7CiAgICAgICAg
IGppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNoMSk7CiAgICAgICAg
IGppdC5tb3ZlNjRUb0RvdWJsZSh2YWx1ZSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgIGpp
dC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgaml0LnB1cmlmeU5h
TihGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJl
Z1QwLCB2YWx1ZSk7CiAgICAgICAgIGppdC5tb3ZlNjRUb0RvdWJsZShzY3JhdGNoMSwgRlBSSW5m
bzo6ZnBSZWdUMCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCwxMCArNTQsMTAgQEAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2Vt
YgogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCi12b2lkIEFzc2VtYmx5
SGVscGVyczo6c2FuaXRpemVEb3VibGUoRlBSUmVnIGZwcikKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpwdXJpZnlOYU4oRlBSUmVnIGZwcikKIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RO
YU4gPSBicmFuY2hEb3VibGUoRG91YmxlRXF1YWwsIGZwciwgZnByKTsKLSAgICBzdGF0aWMgY29u
c3QgZG91YmxlIE5hTiA9IFFOYU47CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBQTmFO
OwogICAgIGxvYWREb3VibGUoJk5hTiwgZnByKTsKICAgICBub3ROYU4ubGluayh0aGlzKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2
aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKCkgeyB9CiAjZW5kaWYKICAgICAKLSAgICB2b2lk
IHNhbml0aXplRG91YmxlKEZQUlJlZyk7CisgICAgdm9pZCBwdXJpZnlOYU4oRlBSUmVnKTsKIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgY29udmVydCBiZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVz
IGJveGVkIGFuZCBKU1ZhbHVlcy4KICNpZiBVU0UoSlNWQUxVRTY0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE2
NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEZsb2F0VHlwZWRBcnJheUdlCiAgICAgfQogICAgIAogICAgIEp1bXAgbm90TmFOID0gYnJh
bmNoRG91YmxlKERvdWJsZUVxdWFsLCBmcFJlZ1QwLCBmcFJlZ1QwKTsKLSAgICBzdGF0aWMgY29u
c3QgZG91YmxlIE5hTiA9IFFOYU47CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBQTmFO
OwogICAgIGxvYWREb3VibGUoJk5hTiwgZnBSZWdUMCk7CiAgICAgbm90TmFOLmxpbmsodGhpcyk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsx
NTQsNyBAQCBKU09iamVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAg
ICAgICB8fCAobnVtQXJncyA+PSA1ICYmICghc3RkOjppc2Zpbml0ZShkb3VibGVBcmd1bWVudHNb
NF0pIHx8IChkb3VibGVBcmd1bWVudHNbNF0gPiBJTlRfTUFYKSB8fCAoZG91YmxlQXJndW1lbnRz
WzRdIDwgSU5UX01JTikpKQogICAgICAgICAgICAgfHwgKG51bUFyZ3MgPj0gNiAmJiAoIXN0ZDo6
aXNmaW5pdGUoZG91YmxlQXJndW1lbnRzWzVdKSB8fCAoZG91YmxlQXJndW1lbnRzWzVdID4gSU5U
X01BWCkgfHwgKGRvdWJsZUFyZ3VtZW50c1s1XSA8IElOVF9NSU4pKSkKICAgICAgICAgICAgIHx8
IChudW1BcmdzID49IDcgJiYgKCFzdGQ6OmlzZmluaXRlKGRvdWJsZUFyZ3VtZW50c1s2XSkgfHwg
KGRvdWJsZUFyZ3VtZW50c1s2XSA+IElOVF9NQVgpIHx8IChkb3VibGVBcmd1bWVudHNbNl0gPCBJ
TlRfTUlOKSkpKQotICAgICAgICAgICAgdmFsdWUgPSBRTmFOOworICAgICAgICAgICAgdmFsdWUg
PSBQTmFOOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7
CiAgICAgICAgICAgICBpbnQgeWVhciA9IEpTQzo6dG9JbnQzMihkb3VibGVBcmd1bWVudHNbMF0p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2VDYWNoZS5oCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRGF0ZUluc3RhbmNlRGF0
YSgpCi0gICAgICAgICAgICA6IG1fZ3JlZ29yaWFuRGF0ZVRpbWVDYWNoZWRGb3JNUyhRTmFOKQot
ICAgICAgICAgICAgLCBtX2dyZWdvcmlhbkRhdGVUaW1lVVRDQ2FjaGVkRm9yTVMoUU5hTikKKyAg
ICAgICAgICAgIDogbV9ncmVnb3JpYW5EYXRlVGltZUNhY2hlZEZvck1TKFBOYU4pCisgICAgICAg
ICAgICAsIG1fZ3JlZ29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyhQTmFOKQogICAgICAgICB7
CiAgICAgICAgIH0KICAgICB9OwpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCByZXNldCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY2FjaGVTaXplOyArK2kpCi0gICAgICAgICAgICAgICAgbV9jYWNoZVtpXS5rZXkg
PSBRTmFOOworICAgICAgICAgICAgICAgIG1fY2FjaGVbaV0ua2V5ID0gUE5hTjsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgRGF0ZUluc3RhbmNlRGF0YSogYWRkKGRvdWJsZSBkKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIEpT
VmFsdWUgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpkZWZhdWwKIHsKICAgICBpZiAoaGludCA9
PSBQcmVmZXJTdHJpbmcpCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiSmF2YVNjcmlwdCBleGVjdXRpb24gdGVybWluYXRlZC4iKSkp
OwotICAgIHJldHVybiBKU1ZhbHVlKFFOYU4pOworICAgIHJldHVybiBKU1ZhbHVlKFBOYU4pOwog
fQogCiBKU09iamVjdCogY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihWTSogdm0p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNp
b24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyMiw3ICs0MjIsNyBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0
aChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIH0KICAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgp
ID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9i
dXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOyBpLS0gPiBuZXdMZW5ndGg7KQotICAgICAgICAgICAg
ICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOworICAgICAgICAg
ICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBQTmFOOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1
YmxpY0xlbmd0aCgpOyBpLS0gPiBuZXdMZW5ndGg7KQogICAgICAgICAgICAgICAgIG1fYnV0dGVy
Zmx5LT5jb250aWd1b3VzKClbaV0uY2xlYXIoKTsKQEAgLTQ3OCw3ICs0NzgsNyBAQCBKU1ZhbHVl
IEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxl
bmd0aCA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgIGRvdWJsZSB2YWx1
ZSA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbbGVuZ3RoXTsKICAgICAgICAgaWYg
KHZhbHVlID09IHZhbHVlKSB7Ci0gICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpW2xlbmd0aF0gPSBRTmFOOworICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3Vv
dXNEb3VibGUoKVtsZW5ndGhdID0gUE5hTjsKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5zZXRQ
dWJsaWNMZW5ndGgobGVuZ3RoKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6
OkVuY29kZUFzRG91YmxlLCB2YWx1ZSk7CiAgICAgICAgIH0KQEAgLTgyMiw3ICs4MjIsNyBAQCBi
b29sIEpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUCiAgICAgICAgICAgICBtX2J1
dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gdjsKICAgICAgICAgfQogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBlbmQ7IGkgPCBvbGRMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOworICAgICAgICAgICAgbV9i
dXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBOYU47CiAgICAgICAgIAogICAgICAg
ICBtX2J1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKG9sZExlbmd0aCAtIGNvdW50KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xNDQwLDcgKzE0NDAsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRW
ZWN0b3IoRXhlY1N0YXRlKiBleGVjCiAgICAgZm9yICh1bnNpZ25lZCBpID0gdW5kZWZpbmVkRWxl
bWVudHNUaHJlc2hvbGQ7IGkgPCBjbGVhckVsZW1lbnRzVGhyZXNob2xkOyArK2kpIHsKICAgICAg
ICAgQVNTRVJUKGkgPCBidXR0ZXJmbHkoKS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICBpZiAo
aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQotICAgICAgICAgICAgYnV0dGVyZmx5
KCktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgICAgICBidXR0ZXJmbHko
KS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUE5hTjsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY3VycmVudEluZGV4aW5nRGF0YSgpW2ldLmNsZWFyKCk7CiAgICAgfQpAQCAtMTY4NCw3ICsx
Njg0LDcgQEAgdm9pZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAgIGZv
ciAodW5zaWduZWQgaSA9IG5ld1JlbGV2YW50TGVuZ3RoOyBpIDwgbXlSZWxldmFudExlbmd0aDsg
KytpKSB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsK
ICAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkKLSAgICAg
ICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOworICAgICAg
ICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBOYU47CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKVtpXS5j
bGVhcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw3IEBAIGlubGluZSBKU0FycmF5
KiBKU0FycmF5OjpjcmVhdGUoVk0mIHZtLCAKICAgICAgICAgQVNTRVJUKGluaXRpYWxMZW5ndGgg
PCBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKTsKICAgICAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1
cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHZlY3Rvckxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGln
dW91c0RvdWJsZSgpW2ldID0gUU5hTjsKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKVtpXSA9IFBOYU47CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAg
ICBBU1NFUlQoCkBAIC0yNTQsNyArMjU0LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdAogICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpbml0aWFs
TGVuZ3RoKTsKICAgICAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
KSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5pdGlhbExlbmd0aDsgaSA8IHZl
Y3Rvckxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpW2ldID0gUU5hTjsKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNE
b3VibGUoKVtpXSA9IFBOYU47CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICB2b2lk
KiB0ZW1wOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIGRvdWJsZSBK
U1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEV4ZWNTdGEKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgp
LT50b051bWJlcihleGVjKTsKICAgICBpZiAoaXNUcnVlKCkpCiAgICAgICAgIHJldHVybiAxLjA7
Ci0gICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBRTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2Ug
Ym90aCBjb252ZXJ0IHRvIDAuCisgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFOIDogMDsg
Ly8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCiB9CiAKIEpTT2JqZWN0KiBKU1Zh
bHVlOjp0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2Rl
ZmluZSBKU0NKU1ZhbHVlX2gKIAogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlICJQdXJlTmFu
LmgiCiAjaW5jbHVkZSA8c3RkZGVmLmg+IC8vIGZvciBzaXplX3QKICNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMzYsMTAgKzM3LDYgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLS8vIFRoaXMgaXMgdXNlZCBhIGxvdCB0aHJvdWdob3V0IEphdmFTY3Jp
cHRDb3JlIGZvciBldmVyeXRoaW5nIGZyb20gdmFsdWUgYm94aW5nIHRvIG1hcmtpbmcKLS8vIHZh
bHVlcyBhcyBiZWluZyBtaXNzaW5nLCBzbyBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBpdCBhYmJyZXZp
YXRlZC4KLSNkZWZpbmUgUU5hTiAoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKSkKLQogY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3Mg
SlNDZWxsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2
Niw3IEBAIGlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAogCiBpbmxpbmUg
SlNWYWx1ZSBqc05hTigpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWUoUU5hTik7CisgICAgcmV0dXJu
IEpTVmFsdWUoUE5hTik7CiB9CiAKIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNoYXIgaSkKQEAg
LTMwMiw2ICszMDIsNyBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkg
CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91
YmxlIGQpCiB7CisgICAgQVNTRVJUKCFsb29rc0xpa2VUYWdnZWRWYWx1ZShkKSk7CiAgICAgdS5h
c0RvdWJsZSA9IGQ7CiB9CiAKQEAgLTQ2OCw2ICs0NjksNyBAQCBpbmxpbmUgZG91YmxlIHJlaW50
ZXJwcmV0SW50NjRUb0RvdWJsZShpCiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShF
bmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCiB7CisgICAgQVNTRVJUKCFsb29rc0xpa2VUYWdn
ZWRWYWx1ZShkKSk7CiAgICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXREb3VibGVUb0ludDY0KGQp
ICsgRG91YmxlRW5jb2RlT2Zmc2V0OwogfQogCkBAIC02MDksNyArNjExLDcgQEAgaW5saW5lIGJv
b2wgSlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkpOwotICAgIG51bWJlciA9IFFOYU47CisgICAg
bnVtYmVyID0gUE5hTjsKICAgICB2YWx1ZSA9ICp0aGlzOwogICAgIHJldHVybiB0cnVlOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBTdHJp
bmcmIHMsIAogCiAgICAgLy8gOC5hIElmIFIgPCAyIG9yIFIgPiAzNiwgdGhlbiByZXR1cm4gTmFO
LgogICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikKLSAgICAgICAgcmV0dXJuIFFOYU47
CisgICAgICAgIHJldHVybiBQTmFOOwogCiAgICAgLy8gMTMuIExldCBtYXRoSW50IGJlIHRoZSBt
YXRoZW1hdGljYWwgaW50ZWdlciB2YWx1ZSB0aGF0IGlzIHJlcHJlc2VudGVkIGJ5IFogaW4gcmFk
aXgtUiBub3RhdGlvbiwgdXNpbmcgdGhlIGxldHRlcnMKICAgICAvLyAgICAgQS1aIGFuZCBhLXog
Zm9yIGRpZ2l0cyB3aXRoIHZhbHVlcyAxMCB0aHJvdWdoIDM1LiAoSG93ZXZlciwgaWYgUiBpcyAx
MCBhbmQgWiBjb250YWlucyBtb3JlIHRoYW4gMjAgc2lnbmlmaWNhbnQKQEAgLTMwNSw3ICszMDUs
NyBAQCBzdGF0aWMgZG91YmxlIHBhcnNlSW50KGNvbnN0IFN0cmluZyYgcywgCiAKICAgICAvLyAx
Mi4gSWYgWiBpcyBlbXB0eSwgcmV0dXJuIE5hTi4KICAgICBpZiAoIXNhd0RpZ2l0KQotICAgICAg
ICByZXR1cm4gUU5hTjsKKyAgICAgICAgcmV0dXJuIFBOYU47CiAKICAgICAvLyBBbHRlcm5hdGUg
Y29kZSBwYXRoIGZvciBjZXJ0YWluIGxhcmdlIG51bWJlcnMuCiAgICAgaWYgKG51bWJlciA+PSBt
YW50aXNzYU92ZXJmbG93TG93ZXJCb3VuZCkgewpAQCAtNDAzLDcgKzQwMyw3IEBAIHN0YXRpYyBk
b3VibGUganNTdHJEZWNpbWFsTGl0ZXJhbChjb25zdCAKICAgICB9CiAKICAgICAvLyBOb3QgYSBu
dW1iZXIuCi0gICAgcmV0dXJuIFFOYU47CisgICAgcmV0dXJuIFBOYU47CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyVHlwZT4KQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgZG91YmxlIHRv
RG91YmxlKGNvbnN0IENoYXJUeXBlKiBjCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAg
aWYgKGNoYXJhY3RlcnMgIT0gZW5kQ2hhcmFjdGVycykKLSAgICAgICAgcmV0dXJuIFFOYU47Cisg
ICAgICAgIHJldHVybiBQTmFOOwogICAgIAogICAgIHJldHVybiBudW1iZXI7CiB9CkBAIC00NDks
NyArNDQ5LDcgQEAgZG91YmxlIGpzVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzKQogICAgICAgICAg
ICAgcmV0dXJuIGMgLSAnMCc7CiAgICAgICAgIGlmIChpc1N0cldoaXRlU3BhY2UoYykpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIFFOYU47CisgICAgICAgIHJldHVybiBQ
TmFOOwogICAgIH0KIAogICAgIGlmIChzLmlzOEJpdCgpKQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHN0
YXRpYyBkb3VibGUgcGFyc2VGbG9hdChjb25zdCBTdHJpbmcmIHMKICAgICAgICAgVUNoYXIgYyA9
IHNbMF07CiAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoYykpCiAgICAgICAgICAgICByZXR1cm4g
YyAtICcwJzsKLSAgICAgICAgcmV0dXJuIFFOYU47CisgICAgICAgIHJldHVybiBQTmFOOwogICAg
IH0KIAogICAgIGlmIChzLmlzOEJpdCgpKSB7CkBAIC00ODAsNyArNDgwLDcgQEAgc3RhdGljIGRv
dWJsZSBwYXJzZUZsb2F0KGNvbnN0IFN0cmluZyYgcwogCiAgICAgICAgIC8vIEVtcHR5IHN0cmlu
Zy4KICAgICAgICAgaWYgKGRhdGEgPT0gZW5kKQotICAgICAgICAgICAgcmV0dXJuIFFOYU47Cisg
ICAgICAgICAgICByZXR1cm4gUE5hTjsKIAogICAgICAgICByZXR1cm4ganNTdHJEZWNpbWFsTGl0
ZXJhbChkYXRhLCBlbmQpOwogICAgIH0KQEAgLTQ5Niw3ICs0OTYsNyBAQCBzdGF0aWMgZG91Ymxl
IHBhcnNlRmxvYXQoY29uc3QgU3RyaW5nJiBzCiAKICAgICAvLyBFbXB0eSBzdHJpbmcuCiAgICAg
aWYgKGRhdGEgPT0gZW5kKQotICAgICAgICByZXR1cm4gUU5hTjsKKyAgICAgICAgcmV0dXJuIFBO
YU47CiAKICAgICByZXR1cm4ganNTdHJEZWNpbWFsTGl0ZXJhbChkYXRhLCBlbmQpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24g
MTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MzYsNyArNjM2LDcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNPYmpl
Y3Q6OmNyZWF0ZUluaXRpYQogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBCdXR0
ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVu
Z3RoLCBzaXplb2YoZG91YmxlKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3QnV0dGVyZmx5
LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKLSAgICAgICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3Vz
RG91YmxlKClbaV0gPSBRTmFOOworICAgICAgICBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3Vi
bGUoKVtpXSA9IFBOYU47CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6
Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3VibGUp
OwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0
ZXJmbHkpOwogICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKQEAg
LTY5MCw3ICs2OTAsNyBAQCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydFVuZGVj
CiAgICAgQVNTRVJUKGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKLSAgICAg
ICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgIG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBQTmFOOwogICAgIAogICAgIHNldFN0
cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSh2bSksIEFsbG9jYXRlRG91YmxlKSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKCk7CkBAIC03NjAsNyArNzYwLDcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNPYmpl
Y3Q6OmNvbnZlcnRJbnQzMgogICAgICAgICBkb3VibGUqIGN1cnJlbnRBc0RvdWJsZSA9IGJpdHdp
c2VfY2FzdDxkb3VibGUqPihjdXJyZW50KTsKICAgICAgICAgSlNWYWx1ZSB2ID0gY3VycmVudC0+
Z2V0KCk7CiAgICAgICAgIGlmICghdikgewotICAgICAgICAgICAgKmN1cnJlbnRBc0RvdWJsZSA9
IFFOYU47CisgICAgICAgICAgICAqY3VycmVudEFzRG91YmxlID0gUE5hTjsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVCh2LmlzSW50MzIoKSk7CkBAIC0x
MzE2LDcgKzEzMTYsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+YnV0dGVyZmx5KCk7
CiAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0g
PSBRTmFOOworICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBOYU47
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCkBAIC0yNDI5LDcgKzI0Mjks
NyBAQCB2b2lkIEpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KFZNJiB2bSwgCiAKICAgICBpZiAo
aGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBv
bGRWZWN0b3JMZW5ndGg7IGkgPCBuZXdWZWN0b3JMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpW2ldID0gUU5hTjsKKyAgICAgICAg
ICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpW2ldID0gUE5hTjsKICAg
ICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmpl
Y3QuY3BwCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnUKICAgICBmb3IgKHVuc2lnbmVkIGsg
PSAwOyBrIDwgYXJnc0NvdW50OyArK2spIHsKICAgICAgICAgZG91YmxlIHZhbCA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGV4ZWMpOwogICAgICAgICBpZiAoc3RkOjppc25h
bih2YWwpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBRTmFOOworICAgICAgICAgICAgcmVzdWx0
ID0gUE5hTjsKICAgICAgICAgfSBlbHNlIGlmICh2YWwgPiByZXN1bHQgfHwgKCF2YWwgJiYgIXJl
c3VsdCAmJiAhc3RkOjpzaWduYml0KHZhbCkpKQogICAgICAgICAgICAgcmVzdWx0ID0gdmFsOwog
ICAgIH0KQEAgLTIzMyw3ICsyMzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGFyZ3NDb3VudDsgKytrKSB7
CiAgICAgICAgIGRvdWJsZSB2YWwgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrKS50b051bWJl
cihleGVjKTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsKSkgewotICAgICAgICAgICAgcmVz
dWx0ID0gUU5hTjsKKyAgICAgICAgICAgIHJlc3VsdCA9IFBOYU47CiAgICAgICAgIH0gZWxzZSBp
ZiAodmFsIDwgcmVzdWx0IHx8ICghdmFsICYmICFyZXN1bHQgJiYgc3RkOjpzaWduYml0KHZhbCkp
KQogICAgICAgICAgICAgcmVzdWx0ID0gdmFsOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1B1cmVOYU4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9QdXJlTmFOLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9QdXJlTmFOLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFB1
cmVOYU5faAorI2RlZmluZSBQdXJlTmFOX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8g
TmFOIChub3QtYS1udW1iZXIpIGRvdWJsZSB2YWx1ZXMgYXJlIGNlbnRyYWwgdG8gaG93IEphdmFT
Y3JpcHRDb3JlIGVuY29kZXMgSmF2YVNjcmlwdAorLy8gdmFsdWVzIChKU1ZhbHVlcykuICBBbGwg
dmFsdWVzLCBpbmNsdWRpbmcgaW50ZWdlcnMgYW5kIG5vbi1udW1lcmljIHZhbHVlcywgYXJlIGFs
d2F5cworLy8gZW5jb2RlZCB1c2luZyB0aGUgSUVFRSA4NTQgYmluYXJ5IGRvdWJsZSBmb3JtYXQu
ICBOb24tZG91YmxlIHZhbHVlcyBhcmUgZW5jb2RlZCB1c2luZworLy8gYSBOYU4gd2l0aCB0aGUg
c2lnbiBiaXQgc2V0LiAgVGhlIDUxLWJpdCBwYXlsb2FkIGlzIHRoZW4gdXNlZCBmb3IgZW5jb2Rp
bmcgdGhlIGFjdHVhbAorLy8gdmFsdWUgLSBiZSBpdCBhbiBpbnRlZ2VyIG9yIGEgcG9pbnRlciB0
byBhbiBvYmplY3QsIG9yIHNvbWV0aGluZyBlbHNlLiBCdXQgd2Ugb25seQorLy8gbWFrZSB1c2Ug
b2YgdGhlIGxvdyA0OSBiaXRzIGFuZCB0aGUgdG9wIDE1IGJpdHMgYmVpbmcgYWxsIHNldCB0byAx
IGlzIHRoZSBpbmRpY2F0b3IKKy8vIHRoYXQgYSB2YWx1ZSBpcyBub3QgYSBkb3VibGUuIFRvcCAx
NSBiaXRzIGJlaW5nIHNldCB0byAxIGFsc28gaW5kaWNhdGUgYSBzaWduZWQKKy8vIHNpZ25hbGlu
ZyBOYU4gd2l0aCBzb21lIGFkZGl0aW9uYWwgTmFOIHBheWxvYWQgYml0cy4KKy8vCisvLyBPdXIg
dXNlIG9mIE5hTiBlbmNvZGluZyBtZWFucyB0aGF0IHdlIGhhdmUgdG8gYmUgY2FyZWZ1bCB3aXRo
IGhvdyB3ZSB1c2UgTmFOcyBmb3IKKy8vIG9yZGluYXJ5IGRvdWJsZXMuIEZvciBleGFtcGxlLCBp
dCB3b3VsZCBiZSB3cm9uZyB0byBldmVyIHVzZSBhIE5hTiB0aGF0IGhhcyB0aGUgdG9wCisvLyAx
NSBiaXRzIHNldCwgYXMgdGhhdCB3b3VsZCBsb29rIGxpa2UgYSBub24tZG91YmxlIHZhbHVlIHRv
IEpTQy4KKy8vCisvLyBXZSBjYW4gdHJ1c3QgdGhhdCBvbiBhbGwgb2YgdGhlIGhhcmR3YXJlL09T
IGNvbWJpbmF0aW9ucyB0aGF0IHdlIGNhcmUgYWJvdXQsCisvLyBOYU4tcHJvZHVjaW5nIG1hdGgg
b3BlcmF0aW9ucyBuZXZlciBwcm9kdWNlIGEgTmFOIHRoYXQgbG9va3MgbGlrZSBhIHRhZ2dlZCB2
YWx1ZS4gQnV0CisvLyBpZiB3ZSdyZSBldmVyIGluIGEgc2l0dWF0aW9uIHdoZXJlIHdlIHdvcnJ5
IGFib3V0IGl0LCB3ZSBjYW4gdXNlIHB1cmlmeU5hTigpIHRvIGdldCBhCisvLyBOYU4gdGhhdCBk
b2Vzbid0IGxvb2sgbGlrZSBhIHRhZ2dlZCBub24tZG91YmxlIHZhbHVlLiBUaGUgSmF2YVNjcmlw
dCBsYW5ndWFnZSBkb2Vzbid0CisvLyBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCBmbGF2
b3JzIG9mIE5hTiBhbmQgdGhlcmUgaXMgbm8gd2F5IHRvIGRldGVjdCB3aGF0IGtpbmQKKy8vIG9m
IE5hTiB5b3UgaGF2ZSAtIGhlbmNlIHNvIGxvbmcgYXMgYWxsIGRvdWJsZSBOYU5zIGFyZSBwdXJp
ZmllZCB0aGVuIG91ciB0YWdnaW5nCisvLyBzY2hlbWUgcmVtYWlucyBzb3VuZC4KKy8vCisvLyBJ
dCdzIHdvcnRoIG5vdGluZyB0aGF0IHRoZXJlIGFyZSBjYXNlcywgbGlrZSBzaW4oKSwgdGhhdCB3
aWxsIGFsbW9zdCBwcm9kdWNlIGEgTmFOCisvLyB0aGF0IGJyZWFrcyB1cy4gc2luKC1pbmYpIHJl
dHVybnMgMHhmZmY4MDAwMDAwMDAwMDAwLiBUaGlzIGRvZXNuJ3QgYnJlYWsgdXMgYmVjYXVzZQor
Ly8gbm90IGFsbCBvZiB0aGUgdG9wIDE1IGJpdHMgYXJlIHNldC4gQnV0IGl0J3MgdmVyeSBjbG9z
ZS4gSGVuY2Ugb3VyIGFzc3VtcHRpb25zIGFib3V0CisvLyBOYU4gYXJlIGp1c3QgYWJvdXQgdGhl
IG1vc3QgYWdncmVzc2l2ZSBhc3N1bXB0aW9ucyB3ZSBjb3VsZCBwb3NzaWJseSBtYWtlIHdpdGhv
dXQKKy8vIGhhdmluZyB0byBjYWxsIHB1cmlmeU5hTigpIGluIHN1cnByaXNpbmcgcGxhY2VzLgor
Ly8KKy8vIEZvciBuYW1pbmcgcHVycG9zZXMsIHdlIHNheSB0aGF0IGEgTmFOIGlzICJwdXJlIiBp
ZiBpdCBpcyBzYWZlIHRvIHRhZywgaW4gdGhlIHNlbnNlCisvLyB0aGF0IGRvaW5nIHNvIHdvdWxk
IHJlc3VsdCBpbiBhIHRhZ2dlZCB2YWx1ZSB0aGF0IHdvdWxkIGJhc2UgdGhlICJhcmUgeW91IGEg
ZG91YmxlIgorLy8gdGVzdC4gV2Ugc2F5IHRoYXQgYSBOYU4gaXMgImltcHVyZSIgaWYgYXR0ZW1w
dGluZyB0byB0YWcgaXQgd291bGQgcmVzdWx0IGluIGEgdmFsdWUKKy8vIHRoYXQgd291bGQgbG9v
ayBsaWtlIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgZG91YmxlLgorCisvLyBSZXR1cm5zIHNvbWUg
a2luZCBvZiBwdXJlIE5hTi4KK2lubGluZSBkb3VibGUgcHVyZU5hTigpCit7CisgICAgLy8gQmUg
c3VyZSB0aGF0IHdlIHJldHVybiBleGFjdGx5IHRoZSBraW5kIG9mIE5hTiB0aGF0IGlzIHNhZmUu
IFdlIGVuZ2luZWVyIHRoZSBiaXRzCisgICAgLy8gb3Vyc2VsdmVzIHRvIGVuc3VyZSB0aGF0IGl0
J3MgIWlzSW1wdXJlTmFOKCkuIEZXSVcsIHRoaXMgaXMgd2hhdAorICAgIC8vIG51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpIHJldHVybnMgb24gTWFjL1g4Nl82NC4gQnV0IEFGQUlD
VCB0aGVyZSBpcworICAgIC8vIG5vIGd1YXJhbnRlZSB0aGF0IHF1aWV0X05hTiB3b3VsZCByZXR1
cm4gYSBwdXJlTmFOIG9uIGFsbCBwbGF0Zm9ybXMuIEZvciBleGFtcGxlLAorICAgIC8vIHRoZSBk
b2NzIGFwcGVhciB0byBpbXBseSB0aGF0IHF1aWV0X05hTiBjb3VsZCBldmVuIHJldHVybiBhIGRv
dWJsZSB3aXRoIHRoZQorICAgIC8vIHNpZ25hbGluZyBiaXQgc2V0IG9uIGhhcmR3YXJlIHRoYXQg
ZG9lc24ndCBkbyBzaWduYWxpbmcuIFRoYXQgd291bGQgcHJvYmFibHkKKyAgICAvLyBuZXZlciBo
YXBwZW4sIGJ1dCBpdCdzIGhlYWx0aHkgdG8gYmUgcGFyYW5vaWQuCisgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxkb3VibGU+KDB4N2ZmODAwMDAwMDAwMDAwMGxsKTsKK30KKworI2RlZmluZSBQTmFO
IChwdXJlTmFOKCkpCisKK2lubGluZSBib29sIGlzSW1wdXJlTmFOKGRvdWJsZSB2YWx1ZSkKK3sK
KyAgICAvLyBUZXN0cyBpZiB0aGUgZG91YmxlIHZhbHVlIHdvdWxkIGJyZWFrIEpTVkFMVUU2NCBl
bmNvZGluZywgd2hpY2ggaXMgdGhlIG1vc3QKKyAgICAvLyBhZ2dyZXNzaXZlIGtpbmQgb2YgZW5j
b2RpbmcgdGhhdCB3ZSBjdXJyZW50bHkgdXNlLgorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWlu
dDY0X3Q+KHZhbHVlKSA+PSAweGZmZmUwMDAwMDAwMDAwMDBsbHU7Cit9CisKKy8vIElmIHRoZSBn
aXZlbiB2YWx1ZSBpcyBOYU4gdGhlbiByZXR1cm4gYSBOYU4gdGhhdCBpcyBrbm93biB0byBiZSBw
dXJlLgoraW5saW5lIGRvdWJsZSBwdXJpZnlOYU4oZG91YmxlIHZhbHVlKQoreworICAgIGlmICh2
YWx1ZSAhPSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIFBOYU47CisgICAgcmV0dXJuIHZhbHVlOwor
fSAgIAorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFB1cmVOYU5faApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3JzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3Jz
LmgJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVkQXJyYXlBZGFwdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw5ICs4OSw3IEBAIHN0cnVj
dCBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICAKICAgICBzdGF0aWMgSlNWYWx1ZSB0b0pT
VmFsdWUoVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybiBqc0RvdWJsZU51bWJlcihRTmFOKTsKLSAgICAgICAgcmV0dXJuIGpz
RG91YmxlTnVtYmVyKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGpzRG91YmxlTnVtYmVyKHB1cmlm
eU5hTih2YWx1ZSkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgZG91YmxlIHRvRG91YmxlKFR5
cGUgdmFsdWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229465</attachid>
            <date>2014-04-16 12:44:06 -0700</date>
            <delta_ts>2014-04-16 15:25:03 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>73620</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Mzc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOSBA
QAorMjAxNC0wNC0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERpc2Nlcm4gYmV0d2VlbiBOYU5zIHRoYXQgd291bGQgYmUgc2FmZSB0byB0YWcgYW5kIE5hTnMg
dGhhdCBuZWVkIHNvbWUgcHVyaWZpY2F0aW9uIGJlZm9yZSB0YWdnaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJhdGlvbmFsaXplcyBv
dXIgaGFuZGxpbmcgb2YgTmFOcy4gV2Ugbm93IGhhdmUgdGhlIG5vdGlvbiBvZiBwdXJlTmFOKCks
IG9yIFBOYU4sIHdoaWNoCisgICAgICAgIHJlcGxhY2VzIFFOYU4gYW5kIHJlcHJlc2VudHMgYSAi
c2FmZSIgTmFOIGZvciBvdXIgdGFnZ2luZyBwdXJwb3Nlcy4gTmFOIHB1cmlmaWNhdGlvbiBub3cK
KyAgICAgICAgZ29lcyB0aHJvdWdoIHRoZSBwdXJpZnlOYU4oKSBBUEkuCisgICAgICAgIAorICAg
ICAgICBTcGVjdWxhdGVkVHlwZSBhbmQgaXRzIGNsaWVudHMgY2FuIG5vdyBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIGEgUHVyZU5hTiBhbmQgYW4gSW1wdXJlTmFOLgorICAgICAgICAKKyAgICAgICAgUHJl
ZGljdGlvbiBwcm9wYWdhdG9yIGlzIG1hZGUgc2xpZ2h0bHkgbW9yZSBjYXV0aW91cyB3aGVuIGRl
YWxpbmcgd2l0aCBOYU5zLiBJdCBkb2Vzbid0CisgICAgICAgIGhhdmUgdG8gYmUgdG9vIGNhdXRp
b3VzIHNpbmNlIG1vc3QgcHJlZGljdGlvbi1iYXNlZCBsb2dpYyBvbmx5IGNhcmVzIGFib3V0IHdo
ZXRoZXIgb3Igbm90CisgICAgICAgIGEgdmFsdWUgY291bGQgYmUgYW4gaW50ZWdlci4KKyAgICAg
ICAgCisgICAgICAgIEFJIGlzIG1hZGUgbXVjaCBtb3JlIGNhdXRpb3VzIHdoZW4gZGVhbGluZyB3
aXRoIE5hTnMuIFdlIGRvbid0IHlldCBpbnRyb2R1Y2UgSW1wdXJlTmFOCisgICAgICAgIGFueXdo
ZXJlIGluIHRoZSBjb21waWxlciwgYnV0IHdoZW4gd2UgZG8sIHdlIG91Z2h0IHRvIGJlIGFibGUg
dG8gdHJ1c3QgQUkgdG8gcHJvcGFnYXRlIGl0CisgICAgICAgIHNvdW5kbHkgYW5kIHByZWNpc2Vs
eS4KKyAgICAgICAgCisgICAgICAgIE5vIHBlcmZvcm1hbmNlIGNoYW5nZSBiZWNhdXNlIHRoaXMg
anVzdCB1bmJsb2NrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMxNDE5LgorCisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAo
SlNWYWx1ZU1ha2VOdW1iZXIpOgorICAgICAgICAoSlNWYWx1ZVRvTnVtYmVyKToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoSlNDOjp0
eXBlT2ZEb3VibGVTdW0pOgorICAgICAgICAoSlNDOjp0eXBlT2ZEb3VibGVEaWZmZXJlbmNlKToK
KyAgICAgICAgKEpTQzo6dHlwZU9mRG91YmxlUHJvZHVjdCk6CisgICAgICAgIChKU0M6OnBvbGx1
dGVEb3VibGUpOgorICAgICAgICAoSlNDOjp0eXBlT2ZEb3VibGVRdW90aWVudCk6CisgICAgICAg
IChKU0M6OnR5cGVPZkRvdWJsZU1pbk1heCk6CisgICAgICAgIChKU0M6OnR5cGVPZkRvdWJsZU5l
Z2F0aW9uKToKKyAgICAgICAgKEpTQzo6dHlwZU9mRG91YmxlQWJzKToKKyAgICAgICAgKEpTQzo6
dHlwZU9mRG91YmxlRlJvdW5kKToKKyAgICAgICAgKEpTQzo6dHlwZU9mRG91YmxlQmluYXJ5T3Ap
OgorICAgICAgICAoSlNDOjp0eXBlT2ZEb3VibGVVbmFyeU9wKToKKyAgICAgICAgKiBieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkNyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2U6OmJyZWFrQ3JpdGljYWxF
ZGdlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKToKKyAg
ICAgICAgKiBkZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNyZWF0ZVByZUhlYWRlcik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCcmFuY2hUYXJnZXQ6OkJyYW5jaFRhcmdldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6c3BlY3VsYXRlZERvdWJsZVR5cGVG
b3JQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxv
YXRUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5o
OgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bWFrZVByZWRpY3Rpb25G
b3JEb3VibGVGb3JtYXQpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcnJheVB1c2gpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJyYXlQb3ApOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Om51bWJlck9yTm90Q2VsbFRvSW50MzIpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphbGxvY2F0ZUpTQXJyYXkpOgorICAgICAg
ICAqIGZ0bC9GVExWYWx1ZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6cmVib3hBY2Nv
cmRpbmdUb0Zvcm1hdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cHVyaWZ5TmFOKToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAg
KiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdERh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaDoKKyAgICAgICAgKEpT
Qzo6RGF0ZUluc3RhbmNlRGF0YTo6RGF0ZUluc3RhbmNlRGF0YSk6CisgICAgICAgIChKU0M6OkRh
dGVJbnN0YW5jZUNhY2hlOjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpkZWZhdWx0
VmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnBvcCk6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6c29ydFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBh
Y3RGb3JTb3J0aW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpqc05hTik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OkpTVmFsdWUpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwYXJzZUludCk6Cisg
ICAgICAgIChKU0M6OmpzU3RyRGVjaW1hbExpdGVyYWwpOgorICAgICAgICAoSlNDOjp0b0RvdWJs
ZSk6CisgICAgICAgIChKU0M6OmpzVG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpwYXJzZUZsb2F0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmNyZWF0ZUluaXRpYWxEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVy
dFVuZGVjaWRlZFRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQz
MlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRl
eCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAg
KiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTWF4
KToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY01pbik6CisgICAgICAgICogcnVudGltZS9Q
dXJlTmFOLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpwdXJlTmFOKToKKyAgICAgICAgKEpTQzo6
aXNJbXB1cmVOYU4pOgorICAgICAgICAoSlNDOjpwdXJpZnlOYU4pOgorICAgICAgICAqIHJ1bnRp
bWUvVHlwZWRBcnJheUFkYXB0b3JzLmg6CisgICAgICAgIChKU0M6OkZsb2F0VHlwZWRBcnJheUFk
YXB0b3I6OnRvSlNWYWx1ZSk6CisKIDIwMTQtMDQtMTYgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhu
ZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0XSBDbGVhbnVwIHRoZSBidWlsZCBm
cm9tIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaW4gSmF2YVNjcmlwdENvcmUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAzLDEzICszMDMsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4
dFJlCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIoZXhlYyk7CiAKLSAgICAvLyBPdXIgSlNWYWx1ZSByZXByZXNlbnRhdGlvbiByZWxpZXMg
b24gYSBzdGFuZGFyZCBiaXQgcGF0dGVybiBmb3IgTmFOLiBOYU5zCi0gICAgLy8gZ2VuZXJhdGVk
IGludGVybmFsbHkgdG8gSmF2YVNjcmlwdENvcmUgbmF0dXJhbGx5IGhhdmUgdGhhdCByZXByZXNl
bnRhdGlvbiwKLSAgICAvLyBidXQgYW4gZXh0ZXJuYWwgTmFOIG1pZ2h0IG5vdC4KLSAgICBpZiAo
c3RkOjppc25hbih2YWx1ZSkpCi0gICAgICAgIHZhbHVlID0gUU5hTjsKLQotICAgIHJldHVybiB0
b1JlZihleGVjLCBqc051bWJlcih2YWx1ZSkpOworICAgIHJldHVybiB0b1JlZihleGVjLCBqc051
bWJlcihwdXJpZnlOYU4odmFsdWUpKSk7CiB9CiAKIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJp
bmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKQpAQCAtMzg0LDcgKzM3OCw3
IEBAIGRvdWJsZSBKU1ZhbHVlVG9OdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwKIHsKICAgICBpZiAo
IWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFFO
YU47CisgICAgICAgIHJldHVybiBQTmFOOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKQEAgLTQwMCw3ICszOTQs
NyBAQCBkb3VibGUgSlNWYWx1ZVRvTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAgICAgICAgIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb25W
YWx1ZSk7CiAjZW5kaWYKLSAgICAgICAgbnVtYmVyID0gUU5hTjsKKyAgICAgICAgbnVtYmVyID0g
UE5hTjsKICAgICB9CiAgICAgcmV0dXJuIG51bWJlcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjg4LDYgKzI4OCw3IEBACiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRp
b25Db3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjU2QTFEMTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTZBMUQ1MTUwMDFD
RjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTZBMUQ0MTUwMDFDRjIwMDI5OTJCMSAvKiBFeGVj
dXRpb25Db3VudGVyLmNwcCAqLzsgfTsKIAkJMEY1NzJENEYxNjg3OUZERDAwRTU3RkJEIC8qIFRo
dW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjU3MkQ0RDE2ODc5RkRCMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjU3ODBBMjE4RkUx
RTk4MDAxRTcyRDkgLyogUHVyZU5hTi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1NzgwQTExOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVBNTJEMDE3
QURENzE3MDA4RUNCMkQgLyogQ29weVRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVBNTJDRjE3QURENzE3MDA4RUNCMkQgLyogQ29weVRva2Vu
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1
QTYyODMxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QTYyODExODhDOThENDAwNzJDOURG
IC8qIEZUTFZhbHVlUmFuZ2UuY3BwICovOyB9OwogCQkwRjVBNjI4NDE4OEM5OEQ0MDA3MkM5REYg
LyogRlRMVmFsdWVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1QTYyODIxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjA4NSw2ICsy
MDg2LDcgQEAKIAkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uQ291bnRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyog
RXhlY3V0aW9uQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFeGVjdXRpb25Db3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
NzJENEQxNjg3OUZEQjAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRodW5rR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJlTmFOLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmVOYU4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1QTUyQ0YxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5VG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY1QTYyODExODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMVmFsdWVSYW5nZS5jcHA7
IHBhdGggPSBmdGwvRlRMVmFsdWVSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNUE2MjgyMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFZhbHVlUmFuZ2UuaDsgcGF0aCA9IGZ0bC9GVExW
YWx1ZVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTQzLDggKzQxNDUs
NiBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMkFGNzM4MkExOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovLAotCQkJCTJBRjczODJCMThCQkJGOTIwMDhB
NUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBB
cmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5j
cHAgKi8sCkBAIC00MTk4LDggKzQxOTgsOCBAQAogCQkJCTk2OUEwOTIyMEVEMUUwOUMwMEYxRjY4
MSAvKiBDb21wbGV0aW9uLmNwcCAqLywKIAkJCQlGNUJCMkJDNTAzMEY3NzIxMDFGQ0ZFMUQgLyog
Q29tcGxldGlvbi5oICovLAogCQkJCTBGREIyQ0U5MTc0ODk2QzcwMDdCM0MxQiAvKiBDb25jdXJy
ZW50SklUTG9jay5oICovLAotCQkJCUE1M0NFMDg5MThCQzIxQzMwMEJFREY3NiAvKiBDb25zb2xl
Q2xpZW50LmggKi8sCiAJCQkJQTVCNkE3NEMxOEM2REJBNjAwRjExRTkxIC8qIENvbnNvbGVDbGll
bnQuY3BwICovLAorCQkJCUE1M0NFMDg5MThCQzIxQzMwMEJFREY3NiAvKiBDb25zb2xlQ2xpZW50
LmggKi8sCiAJCQkJQTUzQ0UwODExOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUu
Y3BwICovLAogCQkJCUE1M0NFMDgyMThCQzFBNTYwMEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBl
LmggKi8sCiAJCQkJQTVGRDAwNzExODlCMDM4QzAwNjMzMjMxIC8qIENvbnNvbGVUeXBlcy5oICov
LApAQCAtNDI4NCwxMiArNDI4NCwxMiBAQAogCQkJCUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAv
KiBKU0NlbGwuY3BwICovLAogCQkJCUJDMTE2N0Q4MEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwu
aCAqLywKIAkJCQkwRjk3NDk2RjE2ODdBREUyMDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oICov
LAotCQkJCUE1M0NFMDgzMThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuY3BwICovLAotCQkJ
CUE1M0NFMDg0MThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuaCAqLywKIAkJCQkwRjFERDg0
OTE4QTk0NUJFMDAyNkYzRkEgLyogSlNDSW5saW5lcy5oICovLAogCQkJCUY2OTJBODg3MDI1NTU5
N0QwMUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLywKIAkJCQkxNEFCQjM2RTA5OUMwNzY0MDBF
MkEyNEYgLyogSlNDSlNWYWx1ZS5oICovLAogCQkJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAv
KiBKU0NKU1ZhbHVlSW5saW5lcy5oICovLAorCQkJCUE1M0NFMDgzMThCQzFBNTYwMEJFREY3NiAv
KiBKU0NvbnNvbGUuY3BwICovLAorCQkJCUE1M0NFMDg0MThCQzFBNTYwMEJFREY3NiAvKiBKU0Nv
bnNvbGUuaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5j
cHAgKi8sCiAJCQkJMEYyQjY2QkUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuaCAqLywK
IAkJCQkwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAg
Ki8sCkBAIC00NDQzLDYgKzQ0NDMsNyBAQAogCQkJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAv
KiBQcm90ZWN0LmggKi8sCiAJCQkJMTREODQ0QTIxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlw
ZU1hcC5jcHAgKi8sCiAJCQkJMTREODQ0QTMxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1h
cC5oICovLAorCQkJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJlTmFOLmggKi8sCiAJ
CQkJMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oICovLAog
CQkJCTE0N0I4NDYyMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCAqLywKIAkJ
CQlGNjkyQTg3RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLywKQEAgLTQ0OTMsNiAr
NDQ5NCw5IEBACiAJCQkJQkNERTNBQjEwRTZDODJDRjAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oICov
LAogCQkJCTdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8s
CiAJCQkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggKi8sCisJ
CQkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovLAorCQkJ
CTJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLywKKwkJ
CQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovLAogCQkJ
CTBGRDJDOTIzMTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggKi8sCiAJCQkJ
QzJGMEYyRDAxNkJBRUVFOTAwMTg3QzE5IC8qIFN0cnVjdHVyZVJhcmVEYXRhLmNwcCAqLywKIAkJ
CQlDMkZFMThBMzE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJlUmFyZURhdGEuaCAqLywKQEAg
LTQ1MzQsNyArNDUzOCw2IEBACiAJCQkJMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtS
YW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVy
LmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmllcklubGlu
ZXMuaCAqLywKLQkJCQkyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9i
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtNjA2OCw2ICs2MDcxLDcgQEAKIAkJCQlCQzE4QzQzRjBFMTZGNUNEMDBCMzQ0NjAg
LyogTm9kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTQ1QTI4MThBMUIyNTkwMDI2RDg4RiAv
KiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQxMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY1NzgwQTIxOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDQyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDQzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQ0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lvbiAxNjczMzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjEsOCArMTYxLDggQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJl
YW0mIG91dCwgUwogICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ1MikKICAgICAgICAgbXlPdXQucHJp
bnQoIkludDUyIik7CiAgICAgICAgIAotICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBT
cGVjRG91YmxlKQotICAgICAgICBteU91dC5wcmludCgiRG91YmxlIik7CisgICAgaWYgKCh2YWx1
ZSAmIFNwZWNCeXRlY29kZURvdWJsZSkgPT0gU3BlY0J5dGVjb2RlRG91YmxlKQorICAgICAgICBt
eU91dC5wcmludCgiQnl0ZWNvZGVkb3VibGUiKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKHZh
bHVlICYgU3BlY0ludDUyQXNEb3VibGUpCiAgICAgICAgICAgICBteU91dC5wcmludCgiSW50NTJh
c2RvdWJsZSIpOwpAQCAtMTc0LDEyICsxNzQsMTUgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJp
bnRTdHJlYW0mIG91dCwgUwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNl
OwogICAgICAgICAKLSAgICAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZU5hTikKLSAgICAgICAg
ICAgIG15T3V0LnByaW50KCJEb3VibGVuYW4iKTsKKyAgICAgICAgaWYgKHZhbHVlICYgU3BlY0Rv
dWJsZVB1cmVOYU4pCisgICAgICAgICAgICBteU91dC5wcmludCgiRG91YmxlcHVyZW5hbiIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KICAgICAKKyAg
ICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICBvdXQucHJpbnQoIkRv
dWJsZWltcHVyZW5hbiIpOworICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNCb29sZWFuKQogICAg
ICAgICBteU91dC5wcmludCgiQm9vbCIpOwogICAgIGVsc2UKQEAgLTM0OCw3ICszNTEsNyBAQCBT
cGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgaWYgKHZhbHVlLmlz
RG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7CiAg
ICAgICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQotICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3Vi
bGVOYU47CisgICAgICAgICAgICByZXR1cm4gU3BlY0RvdWJsZVB1cmVOYU47CiAgICAgICAgIGlm
ICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NTJBc0Rv
dWJsZTsKICAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKQEAgLTQyOCw1ICs0MzEs
OTIgQEAgYm9vbCB2YWx1ZXNDb3VsZEJlRXF1YWwoU3BlY3VsYXRlZFR5cGUgYQogICAgIHJldHVy
biAhIShhICYgYik7CiB9CiAKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZVN1bShTcGVjdWxh
dGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQoreworICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3Vs
dCA9IGEgfCBiOworICAgIC8vIEltcHVyZSBOYU4gY291bGQgYmVjb21lIHB1cmUgTmFOIGR1cmlu
ZyBhZGRpdGlvbiBiZWNhdXNlIGFkZGl0aW9uIG1heSBjbGVhciBiaXRzLgorICAgIGlmIChyZXN1
bHQgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICByZXN1bHQgfD0gU3BlY0RvdWJsZVB1
cmVOYU47CisgICAgLy8gVmFsdWVzIGNvdWxkIG92ZXJmbG93LCBvciBmcmFjdGlvbnMgY291bGQg
YmVjb21lIGludGVnZXJzLgorICAgIGlmIChyZXN1bHQgJiBTcGVjRG91YmxlUmVhbCkKKyAgICAg
ICAgcmVzdWx0IHw9IFNwZWNEb3VibGVSZWFsOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Nw
ZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZURpZmZlcmVuY2UoU3BlY3VsYXRlZFR5cGUgYSwgU3Bl
Y3VsYXRlZFR5cGUgYikKK3sKKyAgICByZXR1cm4gdHlwZU9mRG91YmxlU3VtKGEsIGIpOworfQor
CitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVQcm9kdWN0KFNwZWN1bGF0ZWRUeXBlIGEsIFNw
ZWN1bGF0ZWRUeXBlIGIpCit7CisgICAgcmV0dXJuIHR5cGVPZkRvdWJsZVN1bShhLCBiKTsKK30K
Kworc3RhdGljIFNwZWN1bGF0ZWRUeXBlIHBvbGx1dGVEb3VibGUoU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCit7CisgICAgLy8gSW1wdXJlIE5hTiBjb3VsZCBiZWNvbWUgcHVyZSBOYU4gYmVjYXVzZSB0
aGUgb3BlcmF0aW9uIGNvdWxkIGNsZWFyIHNvbWUgYml0cy4KKyAgICBpZiAodmFsdWUgJiBTcGVj
RG91YmxlSW1wdXJlTmFOKQorICAgICAgICB2YWx1ZSB8PSBTcGVjRG91YmxlTmFOOworICAgIC8v
IFZhbHVlcyBjb3VsZCBvdmVyZmxvdywgZnJhY3Rpb25zIGNvdWxkIGJlY29tZSBpbnRlZ2Vycywg
b3IgYW4gZXJyb3IgY291bGQgcHJvZHVjZQorICAgIC8vIFB1cmVOYU4uCisgICAgaWYgKHZhbHVl
ICYgU3BlY0RvdWJsZVJlYWwpCisgICAgICAgIHZhbHVlIHw9IFNwZWNEb3VibGVSZWFsIHwgU3Bl
Y0RvdWJsZVB1cmVOYU47CisgICAgcmV0dXJuIHZhbHVlOworfQorCitTcGVjdWxhdGVkVHlwZSB0
eXBlT2ZEb3VibGVRdW90aWVudChTcGVjdWxhdGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQor
eworICAgIHJldHVybiBwb2xsdXRlRG91YmxlKGEgfCBiKTsKK30KKworU3BlY3VsYXRlZFR5cGUg
dHlwZU9mRG91YmxlTWluTWF4KFNwZWN1bGF0ZWRUeXBlIGEsIFNwZWN1bGF0ZWRUeXBlIGIpCit7
CisgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gYSB8IGI7CisgICAgLy8gSW1wdXJlIE5hTiBj
b3VsZCBiZWNvbWUgcHVyZSBOYU4gZHVyaW5nIGFkZGl0aW9uIGJlY2F1c2UgYWRkaXRpb24gbWF5
IGNsZWFyIGJpdHMuCisgICAgaWYgKHJlc3VsdCAmIFNwZWNEb3VibGVJbXB1cmVOYU4pCisgICAg
ICAgIHJlc3VsdCB8PSBTcGVjRG91YmxlUHVyZU5hTjsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVOZWdhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKK3sKKyAgICAvLyBJbXB1cmUgTmFOIGNvdWxkIGJlY29tZSBwdXJlIE5hTiBiZWNhdXNlIGJp
dHMgbWlnaHQgZ2V0IGNsZWFyZWQuCisgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZUltcHVyZU5h
TikKKyAgICAgICAgdmFsdWUgfD0gU3BlY0RvdWJsZVB1cmVOYU47CisgICAgLy8gV2UgY291bGQg
Z2V0IG5lZ2F0aXZlIHplcm8sIHdoaWNoIG1peGVzIFNwZWNJbnQ1MkFzRG91YmxlIGFuZCBTcGVj
Tm90SW50QXNEb3VibGUuCisgICAgLy8gV2UgY291bGQgYWxzbyBvdmVyZmxvdyBhIGxhcmdlIG5l
Z2F0aXZlIGludCBpbnRvIHNvbWV0aGluZyB0aGF0IGlzIG5vIGxvbmdlcgorICAgIC8vIHJlcHJl
c2VudGFibGUgYXMgYW4gaW50LgorICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVSZWFsKQorICAg
ICAgICB2YWx1ZSB8PSBTcGVjRG91YmxlUmVhbDsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1Nw
ZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZUFicyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gdHlwZU9mRG91YmxlTmVnYXRpb24odmFsdWUpOworfQorCitTcGVjdWxhdGVkVHlw
ZSB0eXBlT2ZEb3VibGVGUm91bmQoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgLy8gV2Ug
bWlnaHQgbG9zZSBiaXRzLCB3aGljaCBsZWFkcyB0byBhIE5hTiBiZWluZyBwdXJpZmllZC4KKyAg
ICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICB2YWx1ZSB8PSBTcGVj
RG91YmxlUHVyZU5hTjsKKyAgICAvLyBXZSBtaWdodCBsb3NlIGJpdHMsIHdoaWNoIGxlYWRzIHRv
IGEgdmFsdWUgYmVjb21pbmcgaW50ZWdlci1yZXByZXNlbnRhYmxlLgorICAgIGlmICh2YWx1ZSAm
IFNwZWNOb25JbnRBc0RvdWJsZSkKKyAgICAgICAgdmFsdWUgfD0gU3BlY0ludDUyQXNEb3VibGU7
CisgICAgcmV0dXJuIHZhbHVlOworfQorCitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVCaW5h
cnlPcChTcGVjdWxhdGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQoreworICAgIHJldHVybiBw
b2xsdXRlRG91YmxlKGEgfCBiKTsKK30KKworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlVW5h
cnlPcChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gcG9sbHV0ZURvdWJsZSh2
YWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTY3MzM1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDE4ICs2OCwyMSBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0ludDUyQXNECiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAg
ICAgICAgICA9IDB4MDBlMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21lIGtpbmQgb2YgaW50
ZWdlci4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uSW50QXNEb3VibGUgICAg
ID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vdCBhbiBJbnQ1MiBidXQgaXQncyBh
IHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91YmxlLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAweDAxODAwMDAwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYSBub24tTmFOIGRvdWJsZS4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91
YmxlTmFOICAgICAgICAgID0gMHgwMjAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAgICAgPSAweDAz
ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVQdXJlTmFOICAgICAgPSAweDAyMDAwMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBOYU4gdGhhdCBpcyBzYWUgdG8gdGFnIChpLmUuIHB1cmUp
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVJbXB1cmVOYU4gICAgPSAw
eDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBOYU4gdGhhdCBpcyB1bnNhZmUgdG8gdGFn
IChpLmUuIGltcHVyZSkuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZU5h
TiAgICAgICAgICA9IDB4MDYwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21lIGtpbmQgb2Yg
TmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZURvdWJsZSAgICAg
PSAweDAzODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLCBi
dXQgaXQncyBkZWZpbml0ZWx5IG5vdCBpbXB1cmUgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAgICAgPSAweDA3ODAwMDAwOyAvLyBJdCdzIGVpdGhl
ciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNCeXRlY29kZVJlYWxOdW1iZXIgPSAweDAxYTAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJ
bnQzMiBvciBhIERvdWJsZVJlYWwuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1
bGxSZWFsTnVtYmVyICAgICA9IDB4MDFlMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9y
IGEgRG91YmxlUmVhbCwgb3IgYSBJbnQ1Mi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjQnl0ZWNvZGVOdW1iZXIgICAgID0gMHgwM2EwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50
MzIgb3IgYSBEb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1i
ZXIgICAgICAgICA9IDB4MDNlMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ1Miwg
b3IgYSBEb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlTnVt
YmVyICAgICA9IDB4MDNhMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91Ymxl
LCBhbmQgdGhlIERvdWJsZSBjYW5ub3QgYmUgYW4gaW1wdXJlIE5hTi4KK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjRnVsbE51bWJlciAgICAgICAgID0gMHgwN2UwMDAwMDsgLy8gSXQn
cyBlaXRoZXIgYW4gSW50MzIsIEludDUyLCBvciBhIERvdWJsZSwgYW5kIHRoZSBEb3VibGUgY2Fu
IGJlIGltcHVyZSBOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4g
ICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCiBz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRlZmluZWQuCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICA9IDB4MzAwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBOdWxsLCBvciBVbmRlZmlu
ZWQuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICA9
IDB4M2ZiZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNw
ZWNJbnQ1Mi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAg
ICAgID0gMHgzYmJmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBm
b3IgU3BlY0ludDUyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAg
ICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUg
bWFya2VyLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAg
ICAgPSAweDdmYmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZv
ciBTcGVjSW50NTIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9w
ICAgICAgICA9IDB4N2JiZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNl
cHQgZm9yIFNwZWNJbnQ1Mi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFRv
cCAgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUg
cGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCiAKIHR5cGVkZWYgYm9vbCAoKlNwZWN1bGF0
ZWRUeXBlQ2hlY2tlcikoU3BlY3VsYXRlZFR5cGUpOwpAQCAtMzk3LDYgKzQwMCwyMiBAQCBTcGVj
dWxhdGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5CiAKIGJvb2wgdmFsdWVzQ291bGRC
ZUVxdWFsKFNwZWN1bGF0ZWRUeXBlLCBTcGVjdWxhdGVkVHlwZSk7CiAKKy8vIFByZWNpc2UgY29t
cHV0YXRpb24gb2YgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiBhIGRvdWJsZSBjb21wdXRhdGlv
biBhZnRlciB3ZQorLy8gYWxyZWFkeSBrbm93IHRoYXQgdGhlIGlucHV0cyBhcmUgZG91YmxlcyBh
bmQgdGhhdCB0aGUgcmVzdWx0IG11c3QgYmUgYSBkb3VibGUuIFVzZQorLy8gdGhlIGNsb3Nlc3Qg
b25lIG9mIHRoZXNlIHRoYXQgYXBwbGllcy4KK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZVN1
bShTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9m
RG91YmxlRGlmZmVyZW5jZShTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3Vs
YXRlZFR5cGUgdHlwZU9mRG91YmxlUHJvZHVjdChTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5
cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlUXVvdGllbnQoU3BlY3VsYXRlZFR5cGUs
IFNwZWN1bGF0ZWRUeXBlKTsKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZU1pbk1heChTcGVj
dWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91Ymxl
TmVnYXRpb24oU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlQWJz
KFNwZWN1bGF0ZWRUeXBlKTsKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZUZSb3VuZChTcGVj
dWxhdGVkVHlwZSk7CisKKy8vIFRoaXMgY29uc2VydmF0aXZlbHkgbW9kZWxzIHRoZSBiZWhhdmlv
ciBvZiBhcmJpdHJhcnkgZG91YmxlIG9wZXJhdGlvbnMuCitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZE
b3VibGVCaW5hcnlPcChTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRl
ZFR5cGUgdHlwZU9mRG91YmxlVW5hcnlPcChTcGVjdWxhdGVkVHlwZSk7CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gU3BlY3VsYXRlZFR5cGVfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0lu
dDUyQXNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGNoaWxkICYmIGNoaWxkLmlzSW50MzIoKSkgewpAQCAtMzkwLDExICszOTAsOSBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJlcigpICsgcmlnaHQuYXNOdW1i
ZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKGlzRnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5tX3R5cGUpCi0gICAgICAgICAgICAgICAgJiYgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9u
KGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoCisgICAgICAgICAgICAgICAgdHlwZU9mRG91YmxlU3Vt
KAorICAgICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUsIGZv
ck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtNDQ2LDcgKzQ0NCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0
LmFzTnVtYmVyKCkgLSByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Rv
dWJsZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoCisgICAgICAgICAgICAg
ICAgdHlwZU9mRG91YmxlRGlmZmVyZW5jZSgKKyAgICAgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV90eXBlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUwMyw3ICs1MDMsOSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNEb3VibGVOdW1iZXIoLWNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSgKKyAgICAg
ICAgICAgICAgICB0eXBlT2ZEb3VibGVOZWdhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01NTQsMTEgKzU1Niw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0
LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0
aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICB8fCBp
c0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBl
KSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJlYWwp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSgKKyAgICAg
ICAgICAgICAgICB0eXBlT2ZEb3VibGVQcm9kdWN0KAorICAgICAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUsIGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlw
ZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTkyLDcgKzU5Miw5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0LmFzTnVtYmVyKCkgLyByaWdodC5hc051bWJl
cigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoCisgICAgICAgICAgICAgICAgdHlwZU9mRG91YmxlUXVvdGllbnQoCisg
ICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSwgZm9yTm9k
ZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02
MjYsNyArNjI4LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGZtb2QobGVm
dC5hc051bWJlcigpLCByaWdodC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNE
b3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKAorICAgICAgICAgICAg
ICAgIHR5cGVPZkRvdWJsZUJpbmFyeU9wKAorICAgICAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUsIGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjU0LDcgKzY1OCw5IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0RvdWJsZU51bWJlcihhIDwgYiA/IGEgOiAoYiA8PSBhID8gYiA6IGEgKyBiKSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKAorICAgICAgICAgICAgICAgIHR5cGVPZkRvdWJsZU1pbk1heCgKKyAgICAgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlLCBmb3JOb2RlKG5vZGUtPmNo
aWxkMigpKS5tX3R5cGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY4Miw3ICs2ODgs
OSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoYSA+IGIgPyBhIDogKGIgPj0g
YSA/IGIgOiBhICsgYikpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSgKKyAgICAgICAgICAgICAgICB0eXBlT2ZEb3VibGVN
aW5NYXgoCisgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlw
ZSwgZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC03MTAsNyArNzE4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVy
KGNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSh0eXBlT2ZEb3VibGVBYnMoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC03MjUsNyAr
NzMzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoc3FydChjaGlsZC5hc051bWJl
cigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
dHlwZU9mRG91YmxlVW5hcnlPcChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTczNSw3ICs3NDMsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0RvdWJsZU51bWJlcihzdGF0aWNfY2FzdDxmbG9hdD4oY2hpbGQuYXNOdW1iZXIo
KSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5
cGVPZkRvdWJsZUZSb3VuZChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTc0NSw3ICs3NTMsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0RvdWJsZU51bWJlcihzaW4oY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91
YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGVPZkRvdWJsZVVuYXJ5T3Ao
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAKQEAgLTc1NSw3ICs3NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihj
b3MoY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKHR5cGVPZkRvdWJsZVVuYXJ5T3AoZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtMTA0
NSw3ICsxMDUzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2Ji
ZXJMaW1pdCk7CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQot
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0J5dGVjb2RlRG91YmxlKTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y0RvdWJsZVJlYWwpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDgwLDEzICsxMDg4LDEzIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGVs
c2UgaWYgKGVuYWJsZUludDUyKCkgJiYgbm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgp
KQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NTIpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
RG91YmxlKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDUy
QXNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0
MzJBcnJheToKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVEb3VibGUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVEb3VibGUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg2LDcgKzE0
ODYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAK
ICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3IgdGhlIGNvbnRpbnVh
dGlvbiBhdCB0aGUgY2FsbGVyLgotICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0
UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fs
cywgUU5hTikpOworICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBC
YXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikp
OwogCiAgICAgLy8gTGluayB0aGUgZWFybHkgcmV0dXJucyB0byB0aGUgYmFzaWMgYmxvY2sgd2Un
cmUgYWJvdXQgdG8gY3JlYXRlLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lU3Rh
Y2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLnNpemUoKTsgKytpKSB7CkBAIC0zNTc4LDcgKzM1Nzgs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5sYXN0QmxvY2soKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8QmFz
aWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhtX2N1cnJlbnRJbmRleCwg
bV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBRTmFOKSk7CisgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG1fY3Vy
cmVudEluZGV4LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBhc3NlcnRpb24gY2hlY2tzIHR3byB0aGluZ3M6CiAgICAgICAgICAgICAg
ICAgICAgIC8vIDEpIElmIHRoZSBieXRlY29kZUJlZ2luIGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50
SW5kZXgsIHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJ
KHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGlj
YWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBwYXNzIE5hTiBmb3IgdGhl
IGNvdW50IG9mIHRoZSBjcml0aWNhbCBlZGdlIGJsb2NrLCBiZWNhdXNlIHdlIGhvbmVzdGx5CiAg
ICAgICAgIC8vIGRvbid0IGtub3cgaXRzIGV4ZWN1dGlvbiBmcmVxdWVuY3kuCi0gICAgICAgIEJh
c2ljQmxvY2sqIHBhZCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZSgqc3VjY2Vzc29yLCBR
TmFOKTsKKyAgICAgICAgQmFzaWNCbG9jayogcGFkID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0QmVm
b3JlKCpzdWNjZXNzb3IsIFBOYU4pOwogICAgICAgICBwYWQtPmFwcGVuZE5vZGUoCiAgICAgICAg
ICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgKCpzdWNjZXNzb3IpLT5hdCgwKS0+b3JpZ2lu
LCBPcEluZm8oKnN1Y2Nlc3NvcikpOwogICAgICAgICBwYWQtPnByZWRlY2Vzc29ycy5hcHBlbmQo
cHJlZGVjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODYsMTQgKzI4Niw4IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1l
cmdlU3RhdGVBdFQKICAgICAgICAgICAgIC8vIFRoZSBibG9jayBzZXRzIHRoZSB2YXJpYWJsZSwg
YW5kIHBvdGVudGlhbGx5IHJlZmluZXMgaXQsIGJvdGgKICAgICAgICAgICAgIC8vIGJlZm9yZSBh
bmQgYWZ0ZXIgc2V0dGluZyBpdC4KICAgICAgICAgICAgIHNvdXJjZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgaWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5m
bHVzaEZvcm1hdCgpID09IEZsdXNoZWREb3VibGUpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
IShzb3VyY2UubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKSk7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKCEhKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0RvdWJsZSkgPT0gISEoc291cmNlLm1fdHlwZSAm
IFNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCEoc291cmNlLm1fdHlwZSAm
IH5TcGVjRG91YmxlKSkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UubWVyZ2UoU3BlY0lu
dDUyQXNEb3VibGUpOwotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuZmlsdGVyKFNwZWNEb3Vi
bGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSA9PSBGbHVzaGVkRG91Ymxl
KQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoc291cmNlLm1fdHlwZSAmIH5TcGVj
RG91YmxlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xv
b3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaCwgQmxvY2tJbnNl
cnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgLy8gRG9u
J3QgYm90aGVyIHRvIHByZXNlcnZlIGV4ZWN1dGlvbiBmcmVxdWVuY2llcyBmb3Igbm93LgotICAg
IEJhc2ljQmxvY2sqIHByZUhlYWRlciA9IGluc2VydGlvblNldC5pbnNlcnRCZWZvcmUoYmxvY2ss
IFFOYU4pOworICAgIEJhc2ljQmxvY2sqIHByZUhlYWRlciA9IGluc2VydGlvblNldC5pbnNlcnRC
ZWZvcmUoYmxvY2ssIFBOYU4pOwogICAgIHByZUhlYWRlci0+YXBwZW5kTm9kZSgKICAgICAgICAg
Z3JhcGgsIFNwZWNOb25lLCBKdW1wLCBibG9jay0+YXQoMCktPm9yaWdpbiwgT3BJbmZvKGJsb2Nr
KSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24g
MTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDEzICs4OSwxMyBAQCBzdHJ1Y3QgTmV3QXJyYXlCdWZmZXJEYXRhIHsKIHN0
cnVjdCBCcmFuY2hUYXJnZXQgewogICAgIEJyYW5jaFRhcmdldCgpCiAgICAgICAgIDogYmxvY2so
MCkKLSAgICAgICAgLCBjb3VudChRTmFOKQorICAgICAgICAsIGNvdW50KFBOYU4pCiAgICAgewog
ICAgIH0KICAgICAKICAgICBleHBsaWNpdCBCcmFuY2hUYXJnZXQoQmFzaWNCbG9jayogYmxvY2sp
CiAgICAgICAgIDogYmxvY2soYmxvY2spCi0gICAgICAgICwgY291bnQoUU5hTikKKyAgICAgICAg
LCBjb3VudChQTmFOKQogICAgIHsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgQmxvY2tJbnNlcnRpb25TZXQgaW5zZXJ0
aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICAKLSAgICAgICAgQmFzaWNCbG9jayogbmV3Um9vdCA9
IGluc2VydGlvblNldC5pbnNlcnQoMCwgUU5hTik7CisgICAgICAgIEJhc2ljQmxvY2sqIG5ld1Jv
b3QgPSBpbnNlcnRpb25TZXQuaW5zZXJ0KDAsIFBOYU4pOwogICAgICAgICBOb2RlT3JpZ2luIG9y
aWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxO
b2RlKj4gbG9jYWxzKGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2Ug
RG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDAp
OwogICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6
ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJl
Z1QwKTsKKyAgICAgICAgICAgIG1faml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKICAg
ICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9p
ZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICBjYXNlIERvdWJs
ZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVn
VDApOwotICAgICAgICAgICAgbV9qaXQuc2FuaXRpemVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7
CisgICAgICAgICAgICBtX2ppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAg
ICAgICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwog
ICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTMsMTEgKzExMywxNCBAQCBwcml2YXRlOgogICAgIAogICAgIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0ZWREb3VibGVUeXBlRm9yUHJlZGljdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAg
ICB7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCA9IFNwZWNEb3VibGVSZWFsOworICAg
ICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICAgICAgcmVzdWx0
IHw9IFNwZWNEb3VibGVJbXB1cmVOYU47CisgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVQ
dXJlTmFOKQorICAgICAgICAgICAgcmVzdWx0IHw9IFNwZWNEb3VibGVQdXJlTmFOOwogICAgICAg
ICBpZiAoIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVy
biBTcGVjRG91YmxlOwotICAgICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlTmFOKQotICAgICAg
ICAgICAgcmV0dXJuIFNwZWNEb3VibGU7Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlUmVhbDsK
KyAgICAgICAgICAgIHJlc3VsdCB8PSBTcGVjRG91YmxlUHVyZU5hTjsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKICAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkRG91YmxlVHlw
ZUZvclByZWRpY3Rpb25zKFNwZWN1bGF0ZWRUeXBlIGxlZnQsIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0
KQpAQCAtMjE2LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIC8vIGxl
ZnQgb3IgcmlnaHQgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIG51bWJlci4K
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmlu
Zyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmcgfCBTcGVjSW50MzIgfCBTcGVjRG91YmxlKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmlu
ZyB8IFNwZWNJbnQzMiB8IFNwZWNCeXRlY29kZURvdWJsZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzAxLDcgKzMwNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICYmIG5vZGVDYW5TcGVjdWxhdGVJbnQzMihub2RlLT5hcml0aE5v
ZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oU3BlY0ludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNEb3VibGUpOworICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0ZWNvZGVEb3VibGUpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMxNSw3ICszMTgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50
MzIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0J5dGVj
b2RlRG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0zMjQsNyArMzI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0aEZSb3VuZDoK
ICAgICAgICAgY2FzZSBBcml0aFNpbjoKICAgICAgICAgY2FzZSBBcml0aENvczogewotICAgICAg
ICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNEb3VibGUpOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCeXRlY29kZURvdWJsZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9u
IDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MTgsNyArMjcxOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEZQUlJlZyB2YWx1ZUZQ
UiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY0Z1bGxSZWFsTnVtYmVy
LAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMigpLCBTcGVjRG91
YmxlUmVhbCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1ZUZQUikpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3RvcmFn
ZUxlbmd0aEdQUik7CkBAIC0yODM0LDcgKzI4MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleChzdG9yYWdlR1BSLCB2YWx1ZVBheWxvYWRHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0Vp
Z2h0KSwKICAgICAgICAgICAgICAgICB0ZW1wRlBSKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCB0ZW1wRlBSLCB0ZW1wRlBSKTsKLSAgICAgICAgICAg
IEpTVmFsdWUgbmFuID0gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgUU5hTik7Cisg
ICAgICAgICAgICBKU1ZhbHVlIG5hbiA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUs
IFBOYU4pOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5hbi51LmFzQml0cy50YWcpLAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgdmFsdWVQYXlsb2FkR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUu
YXNCaXRzLnRhZykpKTsKQEAgLTMwNjQsNyArMzA2NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcGVyYW5kKHRoaXMsIHVzZSk7CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBv
cEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNL
KAotICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjRnVsbFJl
YWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNw
ZWNEb3VibGVSZWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIp
KTsKICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKG9wRlBS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIG9w
ZXJhbmRJZHgpKTsKQEAgLTMyMjcsNyArMzIyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rv
ckxlbmd0aCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChoYXNEb3VibGUobm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBuYW4gPSBKU1Zh
bHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBRTmFOKTsKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlIG5hbiA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIFBOYU4pOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoc2l6ZUdQUiwgc2NyYXRjaEdQ
Uik7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NjgsNyArMjg2OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEZQUlJlZyB2YWx1
ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY0Z1bGxSZWFsTnVt
YmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMigpLCBTcGVj
RG91YmxlUmVhbCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1ZUZQUikpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3Rv
cmFnZUxlbmd0aEdQUik7CkBAIC0yOTU1LDcgKzI5NTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgd291
bGQgbm90IGhhdmUgdG8gYmUgaGVyZSBpZiBjaGFuZ2luZyB0aGUgcHVibGljTGVuZ3RoIGFsc28g
emVyb2VkIHRoZSB2YWx1ZXMgYmV0d2VlbiB0aGUgb2xkCiAgICAgICAgICAgICAgICAgLy8gbGVu
Z3RoIGFuZCB0aGUgbmV3IGxlbmd0aC4KICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KAot
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KGJpdHdpc2Vf
Y2FzdDxpbnQ2NF90PihRTmFOKSksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQ
Uiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChiaXR3aXNlX2Nhc3Q8
aW50NjRfdD4oUE5hTikpLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHN0
b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSk7CiAgICAgICAgICAg
ICAgICAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHRlbXBGUFIsIHRlbXBGUFIpOwogICAgICAgICAgICAgICAg
IGJveERvdWJsZSh0ZW1wRlBSLCB2YWx1ZUdQUik7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAt
MzE2MCw3ICszMTYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhp
cywgdXNlKTsKICAgICAgICAgICAgICAgICAgICAgRlBSUmVnIG9wRlBSID0gb3BlcmFuZC5mcHIo
KTsKICAgICAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0RvdWJsZVJlYWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9w
RlBSLCBvcEZQUikpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShvcEZQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgc2l6ZW9mKGRvdWJsZSkgKiBv
cGVyYW5kSWR4KSk7CkBAIC0zMjI1LDcgKzMyMjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgRlBSUmVnIG9wRlBSID0gb3BlcmFu
ZC5mcHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3By
KCk7CiAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNEb3VibGVSZWFsLAogICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgb3BGUFIsIG9wRlBSKSk7CiAgICAg
ICAgICAgICAgICAgbV9qaXQuYm94RG91YmxlKG9wRlBSLCBzY3JhdGNoR1BSKTsKQEAgLTMzMjYs
NyArMzMyNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmIChoYXNEb3VibGUobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGlu
dDY0X3Q+KFFOYU4pKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwgc2NyYXRjaEdQUik7CiAg
ICAgICAgICAgICAgICAgbV9qaXQubW92ZShzaXplR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaDJHUFIpOwogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBsb29wID0gbV9qaXQubGFiZWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNjcz
MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODQsMTIgKzg0LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRBbGxvY2F0ZUpTQXJyYXkKICAgICAKICAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpICYmIG51bUVsZW1lbnRzIDwgdmVjdG9yTGVuZ3RoKSB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGlu
dDY0X3Q+KFFOYU4pKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1FbGVtZW50czsgaSA8IHZlY3Rvckxlbmd0aDsgKytpKQogICAg
ICAgICAgICAgbV9qaXQuc3RvcmU2NChzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIGkpKTsKICNlbHNlCiAgICAgICAgIEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IgdmFsdWU7Ci0gICAgICAgIHZhbHVlLmFzSW50NjQgPSBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgUU5hTikpOworICAgICAg
ICB2YWx1ZS5hc0ludDY0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2Rl
QXNEb3VibGUsIFBOYU4pKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRWxlbWVudHM7
IGkgPCB2ZWN0b3JMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVz
dGVkSW1tMzIodmFsdWUuYXNCaXRzLnRhZyksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3Jh
Z2VHUFIsIHNpemVvZihkb3VibGUpICogaSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy50YWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMih2YWx1
ZS5hc0JpdHMucGF5bG9hZCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNp
emVvZihkb3VibGUpICogaSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKSkpOwpAQCAtMTg5MSw3ICsxODkxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IE51bWJlclVzZSkgewogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxO
dW1iZXIsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGdwciksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aFRlc3Q2NCgKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBn
cHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICAgICAgfSBlbHNl
IHsKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZVRvSW50MzIKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gTnVtYmVyVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAg
ICAgICAgICAgICAgICAgICAgICAgb3AxLmpzVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjRnVsbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wMS5qc1ZhbHVlUmVncygp
LCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CkBAIC0yNTA3LDcgKzI1MDcs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIG1faml0LnNhbml0
aXplRG91YmxlKHJlc3VsdFJlZyk7CisgICAgbV9qaXQucHVyaWZ5TmFOKHJlc3VsdFJlZyk7CiAg
ICAgCiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdFJlZywgbm9kZSk7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJldmlz
aW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nl
c3NEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsMTIgQEAgcHVibGljOgogICAg
ICAgICBpZiAobV9kb3VibGVGb3JtYXRTdGF0ZSAhPSBVc2luZ0RvdWJsZUZvcm1hdCkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBtZXJnZVNwZWN1
bGF0aW9uKG1fcHJlZGljdGlvbiwgU3BlY0RvdWJsZSk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSBtX3ByZWRpY3Rpb247CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCeXRlY29kZU51
bWJlcikKKyAgICAgICAgICAgIHR5cGUgfD0gU3BlY0RvdWJsZVB1cmVOYU47CisgICAgICAgIGlm
ICh0eXBlICYgU3BlY01hY2hpbmVJbnQpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ1MkFz
RG91YmxlOworICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9wcmVkaWN0aW9uLCB0eXBlKTsK
ICAgICB9CiAgICAgCiAgICAgTm9kZUZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFn
czsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTI4LDcgKzIxMjgsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtX291dC5zZWxlY3QoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0
LmRvdWJsZUVxdWFsKHJlc3VsdCwgcmVzdWx0KSwgcmVzdWx0LCBtX291dC5jb25zdERvdWJsZShR
TmFOKSk7CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKHJlc3VsdCwgcmVz
dWx0KSwgcmVzdWx0LCBtX291dC5jb25zdERvdWJsZShQTmFOKSk7CiAgICAgICAgICAgICAgICAg
c2V0RG91YmxlKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dEb3VibGUoY2hpbGQzKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBGVExfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFs
dWUpLCBjaGlsZDMsIFNwZWNGdWxsUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgZG91
YmxlVmFsdWUodmFsdWUpLCBjaGlsZDMsIFNwZWNEb3VibGVSZWFsLAogICAgICAgICAgICAgICAg
ICAgICBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVlLCB2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlciBlbGVtZW50UG9pbnRl
ciA9IG1fb3V0LmJhc2VJbmRleCgKQEAgLTI0MTQsNyArMjQxNCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhbHVlID0gbG93RG91YmxlKG1fbm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIG1fbm9kZS0+Y2hpbGQyKCksIFNwZWNGdWxs
UmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBtX25v
ZGUtPmNoaWxkMigpLCBTcGVjRG91YmxlUmVhbCwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICByZWZUeXBlID0gbV9vdXQucmVmRG91YmxlOwogICAgICAgICAgICAgfQpAQCAtMjQ5OSw3ICsy
NDk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90WmVybzY0KHJl
c3VsdCksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2Fk
RG91YmxlKHBvaW50ZXIpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29u
c3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUU5hTikpLCBwb2ludGVyKTsKKyAgICAgICAg
ICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0
X3Q+KFBOYU4pKSwgcG9pbnRlcik7CiAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9v
dXQuYW5jaG9yKGJveERvdWJsZShyZXN1bHQpKSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKAogICAgICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVFcXVhbChyZXN1bHQsIHJlc3Vs
dCksCkBAIC0yNzMwLDcgKzI3MzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExWYWx1
ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQb2ludGVyKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KAotICAgICAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihRTmFOKSks
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0
X3Q+KFBOYU4pKSwKICAgICAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5k
ZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgTFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRl
eCwgbV9vdXQuaW50MzJPbmUpOwpAQCAtMzk3OSw3ICszOTc5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIGlmIChlZGdlLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdEludENhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAg
ICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjRnVsbE51bWJl
ciwgaXNDZWxsT3JNaXNjKHZhbHVlKSk7CisgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1Zh
bHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsIGlzQ2VsbE9yTWlzYyh2
YWx1ZSkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGRvdWJsZVRv
SW50MzIodW5ib3hEb3VibGUodmFsdWUpKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogICAgICAgICB9IGVsc2UgewpAQCAtNDM4Myw3ICs0MzgzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRWxlbWVudHM7IGkgPCB2ZWN0b3JMZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCi0gICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFFOYU4pKSwKKyAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4o
UE5hTikpLAogICAgICAgICAgICAgICAgICAgICBidXR0ZXJmbHksIG1faGVhcHMuaW5kZXhlZERv
dWJsZVByb3BlcnRpZXNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAkocmV2aXNpb24gMTY3
MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCByZWJveEFjY29yZGluZ1RvRm9ybWF0
KAogICAgIGNhc2UgVmFsdWVGb3JtYXREb3VibGU6IHsKICAgICAgICAgaml0Lm1vdmVEb3VibGVU
bzY0KEZQUkluZm86OmZwUmVnVDAsIHNjcmF0Y2gxKTsKICAgICAgICAgaml0Lm1vdmU2NFRvRG91
YmxlKHZhbHVlLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgaml0LnNhbml0aXplRG91Ymxl
KEZQUkluZm86OmZwUmVnVDApOworICAgICAgICBqaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVn
VDApOwogICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIHZhbHVlKTsKICAg
ICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKHNjcmF0Y2gxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAg
ICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEwICs1NCwxMCBA
QCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1iCiAgICAgcmV0dXJuIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6
ZURvdWJsZShGUFJSZWcgZnByKQordm9pZCBBc3NlbWJseUhlbHBlcnM6OnB1cmlmeU5hTihGUFJS
ZWcgZnByKQogewogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE5hTiA9IGJyYW5jaERvdWJs
ZShEb3VibGVFcXVhbCwgZnByLCBmcHIpOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0g
UU5hTjsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFBOYU47CiAgICAgbG9hZERvdWJs
ZSgmTmFOLCBmcHIpOwogICAgIG5vdE5hTi5saW5rKHRoaXMpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNjczMzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MTgsNyArNDE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaml0QXNzZXJ0QXJndW1l
bnRDb3VudFNhbmUoKSB7IH0KICNlbmRpZgogICAgIAotICAgIHZvaWQgc2FuaXRpemVEb3VibGUo
RlBSUmVnKTsKKyAgICB2b2lkIHB1cmlmeU5hTihGUFJSZWcpOwogCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyBjb252ZXJ0IGJldHdlZW4gZG91YmxlcywgYW5kIGRvdWJsZXMgYm94ZWQgYW5kIEpTVmFs
dWVzLgogI2lmIFVTRShKU1ZBTFVFNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNTgsNyArMTI1OCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFy
cmF5R2UKICAgICB9CiAgICAgCiAgICAgSnVtcCBub3ROYU4gPSBicmFuY2hEb3VibGUoRG91Ymxl
RXF1YWwsIGZwUmVnVDAsIGZwUmVnVDApOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0g
UU5hTjsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFBOYU47CiAgICAgbG9hZERvdWJs
ZSgmTmFOLCBmcFJlZ1QwKTsKICAgICBub3ROYU4ubGluayh0aGlzKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgICAgIHx8IChudW1Bcmdz
ID49IDUgJiYgKCFzdGQ6OmlzZmluaXRlKGRvdWJsZUFyZ3VtZW50c1s0XSkgfHwgKGRvdWJsZUFy
Z3VtZW50c1s0XSA+IElOVF9NQVgpIHx8IChkb3VibGVBcmd1bWVudHNbNF0gPCBJTlRfTUlOKSkp
CiAgICAgICAgICAgICB8fCAobnVtQXJncyA+PSA2ICYmICghc3RkOjppc2Zpbml0ZShkb3VibGVB
cmd1bWVudHNbNV0pIHx8IChkb3VibGVBcmd1bWVudHNbNV0gPiBJTlRfTUFYKSB8fCAoZG91Ymxl
QXJndW1lbnRzWzVdIDwgSU5UX01JTikpKQogICAgICAgICAgICAgfHwgKG51bUFyZ3MgPj0gNyAm
JiAoIXN0ZDo6aXNmaW5pdGUoZG91YmxlQXJndW1lbnRzWzZdKSB8fCAoZG91YmxlQXJndW1lbnRz
WzZdID4gSU5UX01BWCkgfHwgKGRvdWJsZUFyZ3VtZW50c1s2XSA8IElOVF9NSU4pKSkpCi0gICAg
ICAgICAgICB2YWx1ZSA9IFFOYU47CisgICAgICAgICAgICB2YWx1ZSA9IFBOYU47CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKICAgICAgICAgICAgIGlu
dCB5ZWFyID0gSlNDOjp0b0ludDMyKGRvdWJsZUFyZ3VtZW50c1swXSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgJKHJldmlz
aW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5j
ZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBEYXRlSW5zdGFuY2VEYXRhKCkKLSAgICAgICAgICAg
IDogbV9ncmVnb3JpYW5EYXRlVGltZUNhY2hlZEZvck1TKFFOYU4pCi0gICAgICAgICAgICAsIG1f
Z3JlZ29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyhRTmFOKQorICAgICAgICAgICAgOiBtX2dy
ZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVMoUE5hTikKKyAgICAgICAgICAgICwgbV9ncmVnb3Jp
YW5EYXRlVGltZVVUQ0NhY2hlZEZvck1TKFBOYU4pCiAgICAgICAgIHsKICAgICAgICAgfQogICAg
IH07CkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlc2V0
KCkKICAgICAgICAgewogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWNoZVNp
emU7ICsraSkKLSAgICAgICAgICAgICAgICBtX2NhY2hlW2ldLmtleSA9IFFOYU47CisgICAgICAg
ICAgICAgICAgbV9jYWNoZVtpXS5rZXkgPSBQTmFOOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBEYXRlSW5zdGFuY2VEYXRhKiBhZGQoZG91YmxlIGQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNpb24g
MTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgSlNWYWx1ZSBUZXJtaW5hdGVk
RXhlY3V0aW9uRXJyb3I6OmRlZmF1bAogewogICAgIGlmIChoaW50ID09IFByZWZlclN0cmluZykK
ICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRl
cmFsKCJKYXZhU2NyaXB0IGV4ZWN1dGlvbiB0ZXJtaW5hdGVkLiIpKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWUoUU5hTik7CisgICAgcmV0dXJuIEpTVmFsdWUoUE5hTik7CiB9CiAKIEpTT2JqZWN0KiBj
cmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAxNjczMzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIyLDcgKzQyMiw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhl
YywKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91
YmxlKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGlj
TGVuZ3RoKCk7IGktLSA+IG5ld0xlbmd0aDspCi0gICAgICAgICAgICAgICAgbV9idXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgICAgICAgICAgbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBOYU47CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGkt
LSA+IG5ld0xlbmd0aDspCiAgICAgICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMo
KVtpXS5jbGVhcigpOwpAQCAtNDc4LDcgKzQ3OCw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDwgbV9idXR0ZXJm
bHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAgICAgZG91YmxlIHZhbHVlID0gbV9idXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKVtsZW5ndGhdOwogICAgICAgICBpZiAodmFsdWUgPT0gdmFsdWUp
IHsKLSAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbbGVuZ3RoXSA9
IFFOYU47CisgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2xlbmd0
aF0gPSBQTmFOOwogICAgICAgICAgICAgbV9idXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5n
dGgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUs
IHZhbHVlKTsKICAgICAgICAgfQpAQCAtODIyLDcgKzgyMiw3IEBAIGJvb2wgSlNBcnJheTo6c2hp
ZnRDb3VudFdpdGhBbnlJbmRleGluZ1QKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKClbaV0gPSB2OwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGVuZDsgaSA8IG9sZExlbmd0aDsgKytpKQotICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGln
dW91c0RvdWJsZSgpW2ldID0gUE5hTjsKICAgICAgICAgCiAgICAgICAgIG1fYnV0dGVyZmx5LT5z
ZXRQdWJsaWNMZW5ndGgob2xkTGVuZ3RoIC0gY291bnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE0NDAsNyArMTQ0MCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUq
IGV4ZWMKICAgICBmb3IgKHVuc2lnbmVkIGkgPSB1bmRlZmluZWRFbGVtZW50c1RocmVzaG9sZDsg
aSA8IGNsZWFyRWxlbWVudHNUaHJlc2hvbGQ7ICsraSkgewogICAgICAgICBBU1NFUlQoaSA8IGJ1
dHRlcmZseSgpLT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgIGlmIChpbmRleGluZ1R5cGUoKSA9
PSBBcnJheVdpdGhEb3VibGUpCi0gICAgICAgICAgICBidXR0ZXJmbHkoKS0+Y29udGlndW91c0Rv
dWJsZSgpW2ldID0gUU5hTjsKKyAgICAgICAgICAgIGJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91
YmxlKClbaV0gPSBQTmFOOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50SW5kZXhp
bmdEYXRhKClbaV0uY2xlYXIoKTsKICAgICB9CkBAIC0xNjg0LDcgKzE2ODQsNyBAQCB2b2lkIEpT
QXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bmV3UmVsZXZhbnRMZW5ndGg7IGkgPCBteVJlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAgICAgICAg
QVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICBpZiAoYXJy
YXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKQotICAgICAgICAgICAgbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgICAgICBtX2J1dHRlcmZs
eS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUE5hTjsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW2ldLmNsZWFyKCk7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMTY3
MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTksNyArMjE5LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OmNyZWF0
ZShWTSYgdm0sIAogICAgICAgICBBU1NFUlQoaW5pdGlhbExlbmd0aCA8IE1JTl9TUEFSU0VfQVJS
QVlfSU5ERVgpOwogICAgICAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjdG9yTGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0g
PSBRTmFOOworICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ld
ID0gUE5hTjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCgKQEAgLTI1
NCw3ICsyNTQsNyBAQCBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0CiAg
ICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGluaXRpYWxMZW5ndGgpOwogICAgICAg
ICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBpbml0aWFsTGVuZ3RoOyBpIDwgdmVjdG9yTGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFO
OworICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUE5h
TjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHZvaWQqIHRlbXA7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNpb24g
MTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVy
U2xvd0Nhc2UoRXhlY1N0YQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGV4ZWMp
OwogICAgIGlmIChpc1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsKLSAgICByZXR1cm4gaXNV
bmRlZmluZWQoKSA/IFFOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8g
MC4KKyAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxz
ZSBib3RoIGNvbnZlcnQgdG8gMC4KIH0KIAogSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xv
d0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2
aXNpb24gMTY3MzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIEpTQ0pTVmFsdWVf
aAogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgIlB1cmVOYW4uaCIKICNpbmNsdWRlIDxz
dGRkZWYuaD4gLy8gZm9yIHNpemVfdAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CkBAIC0zNiwxMCArMzcsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
Ly8gVGhpcyBpcyB1c2VkIGEgbG90IHRocm91Z2hvdXQgSmF2YVNjcmlwdENvcmUgZm9yIGV2ZXJ5
dGhpbmcgZnJvbSB2YWx1ZSBib3hpbmcgdG8gbWFya2luZwotLy8gdmFsdWVzIGFzIGJlaW5nIG1p
c3NpbmcsIHNvIGl0IGlzIHVzZWZ1bCB0byBoYXZlIGl0IGFiYnJldmlhdGVkLgotI2RlZmluZSBR
TmFOIChzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKQotCiBjbGFzcyBB
c3NlbWJseUhlbHBlcnM7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0NlbGw7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJ
KHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgaW5saW5lIGRv
dWJsZSBKU1ZhbHVlOjphc051bWJlcigpIGNvbnN0CiAKIGlubGluZSBKU1ZhbHVlIGpzTmFOKCkK
IHsKLSAgICByZXR1cm4gSlNWYWx1ZShRTmFOKTsKKyAgICByZXR1cm4gSlNWYWx1ZShQTmFOKTsK
IH0KIAogaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY2hhciBpKQpAQCAtMzAyLDYgKzMwMiw3IEBA
IEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSAKIAogQUxXQVlTX0lOTElO
RSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUgZCkKIHsKKyAgICBB
U1NFUlQoIWlzSW1wdXJlTmFOKGQpKTsKICAgICB1LmFzRG91YmxlID0gZDsKIH0KIApAQCAtNDY4
LDYgKzQ2OSw3IEBAIGlubGluZSBkb3VibGUgcmVpbnRlcnByZXRJbnQ2NFRvRG91YmxlKGkKIAog
QUxXQVlTX0lOTElORSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUg
ZCkKIHsKKyAgICBBU1NFUlQoIWlzSW1wdXJlTmFOKGQpKTsKICAgICB1LmFzSW50NjQgPSByZWlu
dGVycHJldERvdWJsZVRvSW50NjQoZCkgKyBEb3VibGVFbmNvZGVPZmZzZXQ7CiB9CiAKQEAgLTYw
OSw3ICs2MTEsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7Ci0g
ICAgbnVtYmVyID0gUU5hTjsKKyAgICBudW1iZXIgPSBQTmFOOwogICAgIHZhbHVlID0gKnRoaXM7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAx
NjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgZG91
YmxlIHBhcnNlSW50KGNvbnN0IFN0cmluZyYgcywgCiAKICAgICAvLyA4LmEgSWYgUiA8IDIgb3Ig
UiA+IDM2LCB0aGVuIHJldHVybiBOYU4uCiAgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2
KQotICAgICAgICByZXR1cm4gUU5hTjsKKyAgICAgICAgcmV0dXJuIFBOYU47CiAKICAgICAvLyAx
My4gTGV0IG1hdGhJbnQgYmUgdGhlIG1hdGhlbWF0aWNhbCBpbnRlZ2VyIHZhbHVlIHRoYXQgaXMg
cmVwcmVzZW50ZWQgYnkgWiBpbiByYWRpeC1SIG5vdGF0aW9uLCB1c2luZyB0aGUgbGV0dGVycwog
ICAgIC8vICAgICBBLVogYW5kIGEteiBmb3IgZGlnaXRzIHdpdGggdmFsdWVzIDEwIHRocm91Z2gg
MzUuIChIb3dldmVyLCBpZiBSIGlzIDEwIGFuZCBaIGNvbnRhaW5zIG1vcmUgdGhhbiAyMCBzaWdu
aWZpY2FudApAQCAtMzA1LDcgKzMwNSw3IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VJbnQoY29uc3Qg
U3RyaW5nJiBzLCAKIAogICAgIC8vIDEyLiBJZiBaIGlzIGVtcHR5LCByZXR1cm4gTmFOLgogICAg
IGlmICghc2F3RGlnaXQpCi0gICAgICAgIHJldHVybiBRTmFOOworICAgICAgICByZXR1cm4gUE5h
TjsKIAogICAgIC8vIEFsdGVybmF0ZSBjb2RlIHBhdGggZm9yIGNlcnRhaW4gbGFyZ2UgbnVtYmVy
cy4KICAgICBpZiAobnVtYmVyID49IG1hbnRpc3NhT3ZlcmZsb3dMb3dlckJvdW5kKSB7CkBAIC00
MDMsNyArNDAzLDcgQEAgc3RhdGljIGRvdWJsZSBqc1N0ckRlY2ltYWxMaXRlcmFsKGNvbnN0IAog
ICAgIH0KIAogICAgIC8vIE5vdCBhIG51bWJlci4KLSAgICByZXR1cm4gUU5hTjsKKyAgICByZXR1
cm4gUE5hTjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgpAQCAtNDMzLDcgKzQz
Myw3IEBAIHN0YXRpYyBkb3VibGUgdG9Eb3VibGUoY29uc3QgQ2hhclR5cGUqIGMKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAoY2hhcmFjdGVycyAhPSBlbmRDaGFyYWN0ZXJzKQot
ICAgICAgICByZXR1cm4gUU5hTjsKKyAgICAgICAgcmV0dXJuIFBOYU47CiAgICAgCiAgICAgcmV0
dXJuIG51bWJlcjsKIH0KQEAgLTQ0OSw3ICs0NDksNyBAQCBkb3VibGUganNUb051bWJlcihjb25z
dCBTdHJpbmcmIHMpCiAgICAgICAgICAgICByZXR1cm4gYyAtICcwJzsKICAgICAgICAgaWYgKGlz
U3RyV2hpdGVTcGFjZShjKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4g
UU5hTjsKKyAgICAgICAgcmV0dXJuIFBOYU47CiAgICAgfQogCiAgICAgaWYgKHMuaXM4Qml0KCkp
CkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KGNvbnN0IFN0cmlu
ZyYgcwogICAgICAgICBVQ2hhciBjID0gc1swXTsKICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChj
KSkKICAgICAgICAgICAgIHJldHVybiBjIC0gJzAnOwotICAgICAgICByZXR1cm4gUU5hTjsKKyAg
ICAgICAgcmV0dXJuIFBOYU47CiAgICAgfQogCiAgICAgaWYgKHMuaXM4Qml0KCkpIHsKQEAgLTQ4
MCw3ICs0ODAsNyBAQCBzdGF0aWMgZG91YmxlIHBhcnNlRmxvYXQoY29uc3QgU3RyaW5nJiBzCiAK
ICAgICAgICAgLy8gRW1wdHkgc3RyaW5nLgogICAgICAgICBpZiAoZGF0YSA9PSBlbmQpCi0gICAg
ICAgICAgICByZXR1cm4gUU5hTjsKKyAgICAgICAgICAgIHJldHVybiBQTmFOOwogCiAgICAgICAg
IHJldHVybiBqc1N0ckRlY2ltYWxMaXRlcmFsKGRhdGEsIGVuZCk7CiAgICAgfQpAQCAtNDk2LDcg
KzQ5Niw3IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VGbG9hdChjb25zdCBTdHJpbmcmIHMKIAogICAg
IC8vIEVtcHR5IHN0cmluZy4KICAgICBpZiAoZGF0YSA9PSBlbmQpCi0gICAgICAgIHJldHVybiBR
TmFOOworICAgICAgICByZXR1cm4gUE5hTjsKIAogICAgIHJldHVybiBqc1N0ckRlY2ltYWxMaXRl
cmFsKGRhdGEsIGVuZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCShyZXZpc2lvbiAxNjczMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3ICs2MzYsNyBAQCBD
b250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGlhCiAgICAgRGVmZXJHQyBkZWZl
ckdDKHZtLmhlYXApOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlSW5pdGlh
bEluZGV4ZWRTdG9yYWdlKHZtLCBsZW5ndGgsIHNpemVvZihkb3VibGUpKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBuZXdCdXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KQotICAgICAgICBu
ZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgIG5ld0J1
dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUE5hTjsKICAgICBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUodm0pLCBBbGxvY2F0ZURvdWJsZSk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZt
LCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpOwpAQCAtNjkwLDcgKzY5MCw3IEBAIENvbnRpZ3VvdXNEb3VibGVz
IEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWMKICAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4aW5n
VHlwZSgpKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnZlY3Rv
ckxlbmd0aCgpOyBpLS07KQotICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgp
W2ldID0gUU5hTjsKKyAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9
IFBOYU47CiAgICAgCiAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3VibGUpKTsKICAgICByZXR1
cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKQEAgLTc2MCw3ICs3NjAsNyBAQCBD
b250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydEludDMyCiAgICAgICAgIGRvdWJsZSog
Y3VycmVudEFzRG91YmxlID0gYml0d2lzZV9jYXN0PGRvdWJsZSo+KGN1cnJlbnQpOwogICAgICAg
ICBKU1ZhbHVlIHYgPSBjdXJyZW50LT5nZXQoKTsKICAgICAgICAgaWYgKCF2KSB7Ci0gICAgICAg
ICAgICAqY3VycmVudEFzRG91YmxlID0gUU5hTjsKKyAgICAgICAgICAgICpjdXJyZW50QXNEb3Vi
bGUgPSBQTmFOOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgQVNT
RVJUKHYuaXNJbnQzMigpKTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIGJvb2wgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0MKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0
aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0
b3JMZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBidXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgIGJ1dHRlcmZseS0+Y29udGln
dW91c0RvdWJsZSgpW2ldID0gUE5hTjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
ICAgICAKQEAgLTI0MjksNyArMjQyOSw3IEBAIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNs
b3coVk0mIHZtLCAKIAogICAgIGlmIChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKSB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFZlY3Rvckxlbmd0aDsgaSA8IG5ld1ZlY3Rvckxlbmd0
aDsgKytpKQotICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5kYXRh
KClbaV0gPSBRTmFOOworICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUo
KS5kYXRhKClbaV0gPSBQTmFOOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHJldmlzaW9uIDE2NzMzNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTksNyArMjE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dQogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBhcmdzQ291bnQ7ICsraykgewogICAgICAg
ICBkb3VibGUgdmFsID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaykudG9OdW1iZXIoZXhlYyk7
CiAgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFFO
YU47CisgICAgICAgICAgICByZXN1bHQgPSBQTmFOOwogICAgICAgICB9IGVsc2UgaWYgKHZhbCA+
IHJlc3VsdCB8fCAoIXZhbCAmJiAhcmVzdWx0ICYmICFzdGQ6OnNpZ25iaXQodmFsKSkpCiAgICAg
ICAgICAgICByZXN1bHQgPSB2YWw7CiAgICAgfQpAQCAtMjMzLDcgKzIzMyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnUKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAw
OyBrIDwgYXJnc0NvdW50OyArK2spIHsKICAgICAgICAgZG91YmxlIHZhbCA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGV4ZWMpOwogICAgICAgICBpZiAoc3RkOjppc25hbih2
YWwpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBRTmFOOworICAgICAgICAgICAgcmVzdWx0ID0g
UE5hTjsKICAgICAgICAgfSBlbHNlIGlmICh2YWwgPCByZXN1bHQgfHwgKCF2YWwgJiYgIXJlc3Vs
dCAmJiBzdGQ6OnNpZ25iaXQodmFsKSkpCiAgICAgICAgICAgICByZXN1bHQgPSB2YWw7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHVyZU5hTi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1cmVOYU4uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1cmVOYU4uaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgUHVyZU5hTl9oCisjZGVmaW5lIFB1cmVOYU5faAorCisjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCisvLyBOYU4gKG5vdC1hLW51bWJlcikgZG91YmxlIHZhbHVlcyBh
cmUgY2VudHJhbCB0byBob3cgSmF2YVNjcmlwdENvcmUgZW5jb2RlcyBKYXZhU2NyaXB0CisvLyB2
YWx1ZXMgKEpTVmFsdWVzKS4gIEFsbCB2YWx1ZXMsIGluY2x1ZGluZyBpbnRlZ2VycyBhbmQgbm9u
LW51bWVyaWMgdmFsdWVzLCBhcmUgYWx3YXlzCisvLyBlbmNvZGVkIHVzaW5nIHRoZSBJRUVFIDg1
NCBiaW5hcnkgZG91YmxlIGZvcm1hdC4gIE5vbi1kb3VibGUgdmFsdWVzIGFyZSBlbmNvZGVkIHVz
aW5nCisvLyBhIE5hTiB3aXRoIHRoZSBzaWduIGJpdCBzZXQuICBUaGUgNTEtYml0IHBheWxvYWQg
aXMgdGhlbiB1c2VkIGZvciBlbmNvZGluZyB0aGUgYWN0dWFsCisvLyB2YWx1ZSAtIGJlIGl0IGFu
IGludGVnZXIgb3IgYSBwb2ludGVyIHRvIGFuIG9iamVjdCwgb3Igc29tZXRoaW5nIGVsc2UuIEJ1
dCB3ZSBvbmx5CisvLyBtYWtlIHVzZSBvZiB0aGUgbG93IDQ5IGJpdHMgYW5kIHRoZSB0b3AgMTUg
Yml0cyBiZWluZyBhbGwgc2V0IHRvIDEgaXMgdGhlIGluZGljYXRvcgorLy8gdGhhdCBhIHZhbHVl
IGlzIG5vdCBhIGRvdWJsZS4gVG9wIDE1IGJpdHMgYmVpbmcgc2V0IHRvIDEgYWxzbyBpbmRpY2F0
ZSBhIHNpZ25lZAorLy8gc2lnbmFsaW5nIE5hTiB3aXRoIHNvbWUgYWRkaXRpb25hbCBOYU4gcGF5
bG9hZCBiaXRzLgorLy8KKy8vIE91ciB1c2Ugb2YgTmFOIGVuY29kaW5nIG1lYW5zIHRoYXQgd2Ug
aGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggaG93IHdlIHVzZSBOYU5zIGZvcgorLy8gb3JkaW5hcnkg
ZG91Ymxlcy4gRm9yIGV4YW1wbGUsIGl0IHdvdWxkIGJlIHdyb25nIHRvIGV2ZXIgdXNlIGEgTmFO
IHRoYXQgaGFzIHRoZSB0b3AKKy8vIDE1IGJpdHMgc2V0LCBhcyB0aGF0IHdvdWxkIGxvb2sgbGlr
ZSBhIG5vbi1kb3VibGUgdmFsdWUgdG8gSlNDLgorLy8KKy8vIFdlIGNhbiB0cnVzdCB0aGF0IG9u
IGFsbCBvZiB0aGUgaGFyZHdhcmUvT1MgY29tYmluYXRpb25zIHRoYXQgd2UgY2FyZSBhYm91dCwK
Ky8vIE5hTi1wcm9kdWNpbmcgbWF0aCBvcGVyYXRpb25zIG5ldmVyIHByb2R1Y2UgYSBOYU4gdGhh
dCBsb29rcyBsaWtlIGEgdGFnZ2VkIHZhbHVlLiBCdXQKKy8vIGlmIHdlJ3JlIGV2ZXIgaW4gYSBz
aXR1YXRpb24gd2hlcmUgd2Ugd29ycnkgYWJvdXQgaXQsIHdlIGNhbiB1c2UgcHVyaWZ5TmFOKCkg
dG8gZ2V0IGEKKy8vIE5hTiB0aGF0IGRvZXNuJ3QgbG9vayBsaWtlIGEgdGFnZ2VkIG5vbi1kb3Vi
bGUgdmFsdWUuIFRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlIGRvZXNuJ3QKKy8vIGRpc3Rpbmd1aXNo
IGJldHdlZW4gZGlmZmVyZW50IGZsYXZvcnMgb2YgTmFOIGFuZCB0aGVyZSBpcyBubyB3YXkgdG8g
ZGV0ZWN0IHdoYXQga2luZAorLy8gb2YgTmFOIHlvdSBoYXZlIC0gaGVuY2Ugc28gbG9uZyBhcyBh
bGwgZG91YmxlIE5hTnMgYXJlIHB1cmlmaWVkIHRoZW4gb3VyIHRhZ2dpbmcKKy8vIHNjaGVtZSBy
ZW1haW5zIHNvdW5kLgorLy8KKy8vIEl0J3Mgd29ydGggbm90aW5nIHRoYXQgdGhlcmUgYXJlIGNh
c2VzLCBsaWtlIHNpbigpLCB0aGF0IHdpbGwgYWxtb3N0IHByb2R1Y2UgYSBOYU4KKy8vIHRoYXQg
YnJlYWtzIHVzLiBzaW4oLWluZikgcmV0dXJucyAweGZmZjgwMDAwMDAwMDAwMDAuIFRoaXMgZG9l
c24ndCBicmVhayB1cyBiZWNhdXNlCisvLyBub3QgYWxsIG9mIHRoZSB0b3AgMTUgYml0cyBhcmUg
c2V0LiBCdXQgaXQncyB2ZXJ5IGNsb3NlLiBIZW5jZSBvdXIgYXNzdW1wdGlvbnMgYWJvdXQKKy8v
IE5hTiBhcmUganVzdCBhYm91dCB0aGUgbW9zdCBhZ2dyZXNzaXZlIGFzc3VtcHRpb25zIHdlIGNv
dWxkIHBvc3NpYmx5IG1ha2Ugd2l0aG91dAorLy8gaGF2aW5nIHRvIGNhbGwgcHVyaWZ5TmFOKCkg
aW4gc3VycHJpc2luZyBwbGFjZXMuCisvLworLy8gRm9yIG5hbWluZyBwdXJwb3Nlcywgd2Ugc2F5
IHRoYXQgYSBOYU4gaXMgInB1cmUiIGlmIGl0IGlzIHNhZmUgdG8gdGFnLCBpbiB0aGUgc2Vuc2UK
Ky8vIHRoYXQgZG9pbmcgc28gd291bGQgcmVzdWx0IGluIGEgdGFnZ2VkIHZhbHVlIHRoYXQgd291
bGQgYmFzZSB0aGUgImFyZSB5b3UgYSBkb3VibGUiCisvLyB0ZXN0LiBXZSBzYXkgdGhhdCBhIE5h
TiBpcyAiaW1wdXJlIiBpZiBhdHRlbXB0aW5nIHRvIHRhZyBpdCB3b3VsZCByZXN1bHQgaW4gYSB2
YWx1ZQorLy8gdGhhdCB3b3VsZCBsb29rIGxpa2Ugc29tZXRoaW5nIG90aGVyIHRoYW4gYSBkb3Vi
bGUuCisKKy8vIFJldHVybnMgc29tZSBraW5kIG9mIHB1cmUgTmFOLgoraW5saW5lIGRvdWJsZSBw
dXJlTmFOKCkKK3sKKyAgICAvLyBCZSBzdXJlIHRoYXQgd2UgcmV0dXJuIGV4YWN0bHkgdGhlIGtp
bmQgb2YgTmFOIHRoYXQgaXMgc2FmZS4gV2UgZW5naW5lZXIgdGhlIGJpdHMKKyAgICAvLyBvdXJz
ZWx2ZXMgdG8gZW5zdXJlIHRoYXQgaXQncyAhaXNJbXB1cmVOYU4oKS4gRldJVywgdGhpcyBpcyB3
aGF0CisgICAgLy8gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgcmV0dXJucyBv
biBNYWMvWDg2XzY0LiBCdXQgQUZBSUNUIHRoZXJlIGlzCisgICAgLy8gbm8gZ3VhcmFudGVlIHRo
YXQgcXVpZXRfTmFOIHdvdWxkIHJldHVybiBhIHB1cmVOYU4gb24gYWxsIHBsYXRmb3Jtcy4gRm9y
IGV4YW1wbGUsCisgICAgLy8gdGhlIGRvY3MgYXBwZWFyIHRvIGltcGx5IHRoYXQgcXVpZXRfTmFO
IGNvdWxkIGV2ZW4gcmV0dXJuIGEgZG91YmxlIHdpdGggdGhlCisgICAgLy8gc2lnbmFsaW5nIGJp
dCBzZXQgb24gaGFyZHdhcmUgdGhhdCBkb2Vzbid0IGRvIHNpZ25hbGluZy4gVGhhdCB3b3VsZCBw
cm9iYWJseQorICAgIC8vIG5ldmVyIGhhcHBlbiwgYnV0IGl0J3MgaGVhbHRoeSB0byBiZSBwYXJh
bm9pZC4KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4oMHg3ZmY4MDAwMDAwMDAwMDAw
bGwpOworfQorCisjZGVmaW5lIFBOYU4gKHB1cmVOYU4oKSkKKworaW5saW5lIGJvb2wgaXNJbXB1
cmVOYU4oZG91YmxlIHZhbHVlKQoreworICAgIC8vIFRlc3RzIGlmIHRoZSBkb3VibGUgdmFsdWUg
d291bGQgYnJlYWsgSlNWQUxVRTY0IGVuY29kaW5nLCB3aGljaCBpcyB0aGUgbW9zdAorICAgIC8v
IGFnZ3Jlc3NpdmUga2luZCBvZiBlbmNvZGluZyB0aGF0IHdlIGN1cnJlbnRseSB1c2UuCisgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4odmFsdWUpID49IDB4ZmZmZTAwMDAwMDAwMDAw
MGxsdTsKK30KKworLy8gSWYgdGhlIGdpdmVuIHZhbHVlIGlzIE5hTiB0aGVuIHJldHVybiBhIE5h
TiB0aGF0IGlzIGtub3duIHRvIGJlIHB1cmUuCitpbmxpbmUgZG91YmxlIHB1cmlmeU5hTihkb3Vi
bGUgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlICE9IHZhbHVlKQorICAgICAgICByZXR1cm4gUE5h
TjsKKyAgICByZXR1cm4gdmFsdWU7Cit9ICAgCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gUHVyZU5hTl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
ZEFycmF5QWRhcHRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAkocmV2aXNpb24gMTY3MzM1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3JzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDkgKzg5LDcgQEAgc3RydWN0IEZsb2F0VHlwZWRBcnJheUFkYXB0b3IgewogICAgIAog
ICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAg
aWYgKHZhbHVlICE9IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGpzRG91YmxlTnVtYmVyKFFO
YU4pOwotICAgICAgICByZXR1cm4ganNEb3VibGVOdW1iZXIodmFsdWUpOworICAgICAgICByZXR1
cm4ganNEb3VibGVOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSk7CiAgICAgfQogICAgIAogICAgIHN0
YXRpYyBkb3VibGUgdG9Eb3VibGUoVHlwZSB2YWx1ZSkK
</data>
<flag name="review"
          id="253839"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229487</attachid>
            <date>2014-04-16 15:25:03 -0700</date>
            <delta_ts>2014-04-16 15:25:03 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>73620</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Mzc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOSBA
QAorMjAxNC0wNC0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERpc2Nlcm4gYmV0d2VlbiBOYU5zIHRoYXQgd291bGQgYmUgc2FmZSB0byB0YWcgYW5kIE5hTnMg
dGhhdCBuZWVkIHNvbWUgcHVyaWZpY2F0aW9uIGJlZm9yZSB0YWdnaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJhdGlvbmFsaXplcyBv
dXIgaGFuZGxpbmcgb2YgTmFOcy4gV2Ugbm93IGhhdmUgdGhlIG5vdGlvbiBvZiBwdXJlTmFOKCks
IG9yIFBOYU4sIHdoaWNoCisgICAgICAgIHJlcGxhY2VzIFFOYU4gYW5kIHJlcHJlc2VudHMgYSAi
c2FmZSIgTmFOIGZvciBvdXIgdGFnZ2luZyBwdXJwb3Nlcy4gTmFOIHB1cmlmaWNhdGlvbiBub3cK
KyAgICAgICAgZ29lcyB0aHJvdWdoIHRoZSBwdXJpZnlOYU4oKSBBUEkuCisgICAgICAgIAorICAg
ICAgICBTcGVjdWxhdGVkVHlwZSBhbmQgaXRzIGNsaWVudHMgY2FuIG5vdyBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIGEgUHVyZU5hTiBhbmQgYW4gSW1wdXJlTmFOLgorICAgICAgICAKKyAgICAgICAgUHJl
ZGljdGlvbiBwcm9wYWdhdG9yIGlzIG1hZGUgc2xpZ2h0bHkgbW9yZSBjYXV0aW91cyB3aGVuIGRl
YWxpbmcgd2l0aCBOYU5zLiBJdCBkb2Vzbid0CisgICAgICAgIGhhdmUgdG8gYmUgdG9vIGNhdXRp
b3VzIHNpbmNlIG1vc3QgcHJlZGljdGlvbi1iYXNlZCBsb2dpYyBvbmx5IGNhcmVzIGFib3V0IHdo
ZXRoZXIgb3Igbm90CisgICAgICAgIGEgdmFsdWUgY291bGQgYmUgYW4gaW50ZWdlci4KKyAgICAg
ICAgCisgICAgICAgIEFJIGlzIG1hZGUgbXVjaCBtb3JlIGNhdXRpb3VzIHdoZW4gZGVhbGluZyB3
aXRoIE5hTnMuIFdlIGRvbid0IHlldCBpbnRyb2R1Y2UgSW1wdXJlTmFOCisgICAgICAgIGFueXdo
ZXJlIGluIHRoZSBjb21waWxlciwgYnV0IHdoZW4gd2UgZG8sIHdlIG91Z2h0IHRvIGJlIGFibGUg
dG8gdHJ1c3QgQUkgdG8gcHJvcGFnYXRlIGl0CisgICAgICAgIHNvdW5kbHkgYW5kIHByZWNpc2Vs
eS4KKyAgICAgICAgCisgICAgICAgIE5vIHBlcmZvcm1hbmNlIGNoYW5nZSBiZWNhdXNlIHRoaXMg
anVzdCB1bmJsb2NrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMxNDE5LgorCisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAo
SlNWYWx1ZU1ha2VOdW1iZXIpOgorICAgICAgICAoSlNWYWx1ZVRvTnVtYmVyKToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoSlNDOjp0
eXBlT2ZEb3VibGVTdW0pOgorICAgICAgICAoSlNDOjp0eXBlT2ZEb3VibGVEaWZmZXJlbmNlKToK
KyAgICAgICAgKEpTQzo6dHlwZU9mRG91YmxlUHJvZHVjdCk6CisgICAgICAgIChKU0M6OnBvbGx1
dGVEb3VibGUpOgorICAgICAgICAoSlNDOjp0eXBlT2ZEb3VibGVRdW90aWVudCk6CisgICAgICAg
IChKU0M6OnR5cGVPZkRvdWJsZU1pbk1heCk6CisgICAgICAgIChKU0M6OnR5cGVPZkRvdWJsZU5l
Z2F0aW9uKToKKyAgICAgICAgKEpTQzo6dHlwZU9mRG91YmxlQWJzKToKKyAgICAgICAgKEpTQzo6
dHlwZU9mRG91YmxlRlJvdW5kKToKKyAgICAgICAgKEpTQzo6dHlwZU9mRG91YmxlQmluYXJ5T3Ap
OgorICAgICAgICAoSlNDOjp0eXBlT2ZEb3VibGVVbmFyeU9wKToKKyAgICAgICAgKiBieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkNyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2U6OmJyZWFrQ3JpdGljYWxF
ZGdlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKToKKyAg
ICAgICAgKiBkZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNyZWF0ZVByZUhlYWRlcik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCcmFuY2hUYXJnZXQ6OkJyYW5jaFRhcmdldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6c3BlY3VsYXRlZERvdWJsZVR5cGVG
b3JQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxv
YXRUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5o
OgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bWFrZVByZWRpY3Rpb25G
b3JEb3VibGVGb3JtYXQpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcnJheVB1c2gpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJyYXlQb3ApOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Om51bWJlck9yTm90Q2VsbFRvSW50MzIpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphbGxvY2F0ZUpTQXJyYXkpOgorICAgICAg
ICAqIGZ0bC9GVExWYWx1ZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6cmVib3hBY2Nv
cmRpbmdUb0Zvcm1hdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cHVyaWZ5TmFOKToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAg
KiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdERh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaDoKKyAgICAgICAgKEpT
Qzo6RGF0ZUluc3RhbmNlRGF0YTo6RGF0ZUluc3RhbmNlRGF0YSk6CisgICAgICAgIChKU0M6OkRh
dGVJbnN0YW5jZUNhY2hlOjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpkZWZhdWx0
VmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnBvcCk6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6c29ydFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBh
Y3RGb3JTb3J0aW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpqc05hTik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OkpTVmFsdWUpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwYXJzZUludCk6Cisg
ICAgICAgIChKU0M6OmpzU3RyRGVjaW1hbExpdGVyYWwpOgorICAgICAgICAoSlNDOjp0b0RvdWJs
ZSk6CisgICAgICAgIChKU0M6OmpzVG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpwYXJzZUZsb2F0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmNyZWF0ZUluaXRpYWxEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVy
dFVuZGVjaWRlZFRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQz
MlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRl
eCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAg
KiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTWF4
KToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY01pbik6CisgICAgICAgICogcnVudGltZS9Q
dXJlTmFOLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpwdXJlTmFOKToKKyAgICAgICAgKEpTQzo6
aXNJbXB1cmVOYU4pOgorICAgICAgICAoSlNDOjpwdXJpZnlOYU4pOgorICAgICAgICAqIHJ1bnRp
bWUvVHlwZWRBcnJheUFkYXB0b3JzLmg6CisgICAgICAgIChKU0M6OkZsb2F0VHlwZWRBcnJheUFk
YXB0b3I6OnRvSlNWYWx1ZSk6CisKIDIwMTQtMDQtMTYgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhu
ZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0XSBDbGVhbnVwIHRoZSBidWlsZCBm
cm9tIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaW4gSmF2YVNjcmlwdENvcmUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkocmV2aXNpb24gMTY3Mzc1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAzLDEzICszMDMsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4
dFJlCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIoZXhlYyk7CiAKLSAgICAvLyBPdXIgSlNWYWx1ZSByZXByZXNlbnRhdGlvbiByZWxpZXMg
b24gYSBzdGFuZGFyZCBiaXQgcGF0dGVybiBmb3IgTmFOLiBOYU5zCi0gICAgLy8gZ2VuZXJhdGVk
IGludGVybmFsbHkgdG8gSmF2YVNjcmlwdENvcmUgbmF0dXJhbGx5IGhhdmUgdGhhdCByZXByZXNl
bnRhdGlvbiwKLSAgICAvLyBidXQgYW4gZXh0ZXJuYWwgTmFOIG1pZ2h0IG5vdC4KLSAgICBpZiAo
c3RkOjppc25hbih2YWx1ZSkpCi0gICAgICAgIHZhbHVlID0gUU5hTjsKLQotICAgIHJldHVybiB0
b1JlZihleGVjLCBqc051bWJlcih2YWx1ZSkpOworICAgIHJldHVybiB0b1JlZihleGVjLCBqc051
bWJlcihwdXJpZnlOYU4odmFsdWUpKSk7CiB9CiAKIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJp
bmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKQpAQCAtMzg0LDcgKzM3OCw3
IEBAIGRvdWJsZSBKU1ZhbHVlVG9OdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwKIHsKICAgICBpZiAo
IWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFFO
YU47CisgICAgICAgIHJldHVybiBQTmFOOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKQEAgLTQwMCw3ICszOTQs
NyBAQCBkb3VibGUgSlNWYWx1ZVRvTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAgICAgICAgIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb25W
YWx1ZSk7CiAjZW5kaWYKLSAgICAgICAgbnVtYmVyID0gUU5hTjsKKyAgICAgICAgbnVtYmVyID0g
UE5hTjsKICAgICB9CiAgICAgcmV0dXJuIG51bWJlcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjczNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjg4LDYgKzI4OCw3IEBACiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRp
b25Db3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjU2QTFEMTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTZBMUQ1MTUwMDFD
RjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTZBMUQ0MTUwMDFDRjIwMDI5OTJCMSAvKiBFeGVj
dXRpb25Db3VudGVyLmNwcCAqLzsgfTsKIAkJMEY1NzJENEYxNjg3OUZERDAwRTU3RkJEIC8qIFRo
dW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjU3MkQ0RDE2ODc5RkRCMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjU3ODBBMjE4RkUx
RTk4MDAxRTcyRDkgLyogUHVyZU5hTi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1NzgwQTExOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVBNTJEMDE3
QURENzE3MDA4RUNCMkQgLyogQ29weVRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVBNTJDRjE3QURENzE3MDA4RUNCMkQgLyogQ29weVRva2Vu
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1
QTYyODMxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QTYyODExODhDOThENDAwNzJDOURG
IC8qIEZUTFZhbHVlUmFuZ2UuY3BwICovOyB9OwogCQkwRjVBNjI4NDE4OEM5OEQ0MDA3MkM5REYg
LyogRlRMVmFsdWVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1QTYyODIxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjA4NSw2ICsy
MDg2LDcgQEAKIAkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uQ291bnRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyog
RXhlY3V0aW9uQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFeGVjdXRpb25Db3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
NzJENEQxNjg3OUZEQjAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRodW5rR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJlTmFOLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmVOYU4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1QTUyQ0YxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5VG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY1QTYyODExODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMVmFsdWVSYW5nZS5jcHA7
IHBhdGggPSBmdGwvRlRMVmFsdWVSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNUE2MjgyMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFZhbHVlUmFuZ2UuaDsgcGF0aCA9IGZ0bC9GVExW
YWx1ZVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTQzLDggKzQxNDUs
NiBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMkFGNzM4MkExOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovLAotCQkJCTJBRjczODJCMThCQkJGOTIwMDhB
NUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBB
cmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5j
cHAgKi8sCkBAIC00MTk4LDggKzQxOTgsOCBAQAogCQkJCTk2OUEwOTIyMEVEMUUwOUMwMEYxRjY4
MSAvKiBDb21wbGV0aW9uLmNwcCAqLywKIAkJCQlGNUJCMkJDNTAzMEY3NzIxMDFGQ0ZFMUQgLyog
Q29tcGxldGlvbi5oICovLAogCQkJCTBGREIyQ0U5MTc0ODk2QzcwMDdCM0MxQiAvKiBDb25jdXJy
ZW50SklUTG9jay5oICovLAotCQkJCUE1M0NFMDg5MThCQzIxQzMwMEJFREY3NiAvKiBDb25zb2xl
Q2xpZW50LmggKi8sCiAJCQkJQTVCNkE3NEMxOEM2REJBNjAwRjExRTkxIC8qIENvbnNvbGVDbGll
bnQuY3BwICovLAorCQkJCUE1M0NFMDg5MThCQzIxQzMwMEJFREY3NiAvKiBDb25zb2xlQ2xpZW50
LmggKi8sCiAJCQkJQTUzQ0UwODExOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUu
Y3BwICovLAogCQkJCUE1M0NFMDgyMThCQzFBNTYwMEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBl
LmggKi8sCiAJCQkJQTVGRDAwNzExODlCMDM4QzAwNjMzMjMxIC8qIENvbnNvbGVUeXBlcy5oICov
LApAQCAtNDI4NCwxMiArNDI4NCwxMiBAQAogCQkJCUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAv
KiBKU0NlbGwuY3BwICovLAogCQkJCUJDMTE2N0Q4MEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwu
aCAqLywKIAkJCQkwRjk3NDk2RjE2ODdBREUyMDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oICov
LAotCQkJCUE1M0NFMDgzMThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuY3BwICovLAotCQkJ
CUE1M0NFMDg0MThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuaCAqLywKIAkJCQkwRjFERDg0
OTE4QTk0NUJFMDAyNkYzRkEgLyogSlNDSW5saW5lcy5oICovLAogCQkJCUY2OTJBODg3MDI1NTU5
N0QwMUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLywKIAkJCQkxNEFCQjM2RTA5OUMwNzY0MDBF
MkEyNEYgLyogSlNDSlNWYWx1ZS5oICovLAogCQkJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAv
KiBKU0NKU1ZhbHVlSW5saW5lcy5oICovLAorCQkJCUE1M0NFMDgzMThCQzFBNTYwMEJFREY3NiAv
KiBKU0NvbnNvbGUuY3BwICovLAorCQkJCUE1M0NFMDg0MThCQzFBNTYwMEJFREY3NiAvKiBKU0Nv
bnNvbGUuaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5j
cHAgKi8sCiAJCQkJMEYyQjY2QkUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuaCAqLywK
IAkJCQkwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAg
Ki8sCkBAIC00NDQzLDYgKzQ0NDMsNyBAQAogCQkJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAv
KiBQcm90ZWN0LmggKi8sCiAJCQkJMTREODQ0QTIxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlw
ZU1hcC5jcHAgKi8sCiAJCQkJMTREODQ0QTMxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1h
cC5oICovLAorCQkJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJlTmFOLmggKi8sCiAJ
CQkJMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oICovLAog
CQkJCTE0N0I4NDYyMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCAqLywKIAkJ
CQlGNjkyQTg3RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLywKQEAgLTQ0OTMsNiAr
NDQ5NCw5IEBACiAJCQkJQkNERTNBQjEwRTZDODJDRjAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oICov
LAogCQkJCTdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8s
CiAJCQkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggKi8sCisJ
CQkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovLAorCQkJ
CTJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLywKKwkJ
CQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovLAogCQkJ
CTBGRDJDOTIzMTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggKi8sCiAJCQkJ
QzJGMEYyRDAxNkJBRUVFOTAwMTg3QzE5IC8qIFN0cnVjdHVyZVJhcmVEYXRhLmNwcCAqLywKIAkJ
CQlDMkZFMThBMzE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJlUmFyZURhdGEuaCAqLywKQEAg
LTQ1MzQsNyArNDUzOCw2IEBACiAJCQkJMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtS
YW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVy
LmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmllcklubGlu
ZXMuaCAqLywKLQkJCQkyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9i
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtNjA2OCw2ICs2MDcxLDcgQEAKIAkJCQlCQzE4QzQzRjBFMTZGNUNEMDBCMzQ0NjAg
LyogTm9kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTQ1QTI4MThBMUIyNTkwMDI2RDg4RiAv
KiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQxMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY1NzgwQTIxOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDQyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDQzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQ0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lvbiAxNjczNzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjEsOCArMTYxLDggQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJl
YW0mIG91dCwgUwogICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ1MikKICAgICAgICAgbXlPdXQucHJp
bnQoIkludDUyIik7CiAgICAgICAgIAotICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBT
cGVjRG91YmxlKQotICAgICAgICBteU91dC5wcmludCgiRG91YmxlIik7CisgICAgaWYgKCh2YWx1
ZSAmIFNwZWNCeXRlY29kZURvdWJsZSkgPT0gU3BlY0J5dGVjb2RlRG91YmxlKQorICAgICAgICBt
eU91dC5wcmludCgiQnl0ZWNvZGVkb3VibGUiKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKHZh
bHVlICYgU3BlY0ludDUyQXNEb3VibGUpCiAgICAgICAgICAgICBteU91dC5wcmludCgiSW50NTJh
c2RvdWJsZSIpOwpAQCAtMTc0LDEyICsxNzQsMTUgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJp
bnRTdHJlYW0mIG91dCwgUwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNl
OwogICAgICAgICAKLSAgICAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZU5hTikKLSAgICAgICAg
ICAgIG15T3V0LnByaW50KCJEb3VibGVuYW4iKTsKKyAgICAgICAgaWYgKHZhbHVlICYgU3BlY0Rv
dWJsZVB1cmVOYU4pCisgICAgICAgICAgICBteU91dC5wcmludCgiRG91YmxlcHVyZW5hbiIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KICAgICAKKyAg
ICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICBvdXQucHJpbnQoIkRv
dWJsZWltcHVyZW5hbiIpOworICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNCb29sZWFuKQogICAg
ICAgICBteU91dC5wcmludCgiQm9vbCIpOwogICAgIGVsc2UKQEAgLTM0OCw3ICszNTEsNyBAQCBT
cGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgaWYgKHZhbHVlLmlz
RG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7CiAg
ICAgICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQotICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3Vi
bGVOYU47CisgICAgICAgICAgICByZXR1cm4gU3BlY0RvdWJsZVB1cmVOYU47CiAgICAgICAgIGlm
ICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NTJBc0Rv
dWJsZTsKICAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKQEAgLTQyOCw1ICs0MzEs
OTIgQEAgYm9vbCB2YWx1ZXNDb3VsZEJlRXF1YWwoU3BlY3VsYXRlZFR5cGUgYQogICAgIHJldHVy
biAhIShhICYgYik7CiB9CiAKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZVN1bShTcGVjdWxh
dGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQoreworICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3Vs
dCA9IGEgfCBiOworICAgIC8vIEltcHVyZSBOYU4gY291bGQgYmVjb21lIHB1cmUgTmFOIGR1cmlu
ZyBhZGRpdGlvbiBiZWNhdXNlIGFkZGl0aW9uIG1heSBjbGVhciBiaXRzLgorICAgIGlmIChyZXN1
bHQgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICByZXN1bHQgfD0gU3BlY0RvdWJsZVB1
cmVOYU47CisgICAgLy8gVmFsdWVzIGNvdWxkIG92ZXJmbG93LCBvciBmcmFjdGlvbnMgY291bGQg
YmVjb21lIGludGVnZXJzLgorICAgIGlmIChyZXN1bHQgJiBTcGVjRG91YmxlUmVhbCkKKyAgICAg
ICAgcmVzdWx0IHw9IFNwZWNEb3VibGVSZWFsOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Nw
ZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZURpZmZlcmVuY2UoU3BlY3VsYXRlZFR5cGUgYSwgU3Bl
Y3VsYXRlZFR5cGUgYikKK3sKKyAgICByZXR1cm4gdHlwZU9mRG91YmxlU3VtKGEsIGIpOworfQor
CitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVQcm9kdWN0KFNwZWN1bGF0ZWRUeXBlIGEsIFNw
ZWN1bGF0ZWRUeXBlIGIpCit7CisgICAgcmV0dXJuIHR5cGVPZkRvdWJsZVN1bShhLCBiKTsKK30K
Kworc3RhdGljIFNwZWN1bGF0ZWRUeXBlIHBvbGx1dGVEb3VibGUoU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCit7CisgICAgLy8gSW1wdXJlIE5hTiBjb3VsZCBiZWNvbWUgcHVyZSBOYU4gYmVjYXVzZSB0
aGUgb3BlcmF0aW9uIGNvdWxkIGNsZWFyIHNvbWUgYml0cy4KKyAgICBpZiAodmFsdWUgJiBTcGVj
RG91YmxlSW1wdXJlTmFOKQorICAgICAgICB2YWx1ZSB8PSBTcGVjRG91YmxlTmFOOworICAgIC8v
IFZhbHVlcyBjb3VsZCBvdmVyZmxvdywgZnJhY3Rpb25zIGNvdWxkIGJlY29tZSBpbnRlZ2Vycywg
b3IgYW4gZXJyb3IgY291bGQgcHJvZHVjZQorICAgIC8vIFB1cmVOYU4uCisgICAgaWYgKHZhbHVl
ICYgU3BlY0RvdWJsZVJlYWwpCisgICAgICAgIHZhbHVlIHw9IFNwZWNEb3VibGVSZWFsIHwgU3Bl
Y0RvdWJsZVB1cmVOYU47CisgICAgcmV0dXJuIHZhbHVlOworfQorCitTcGVjdWxhdGVkVHlwZSB0
eXBlT2ZEb3VibGVRdW90aWVudChTcGVjdWxhdGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQor
eworICAgIHJldHVybiBwb2xsdXRlRG91YmxlKGEgfCBiKTsKK30KKworU3BlY3VsYXRlZFR5cGUg
dHlwZU9mRG91YmxlTWluTWF4KFNwZWN1bGF0ZWRUeXBlIGEsIFNwZWN1bGF0ZWRUeXBlIGIpCit7
CisgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gYSB8IGI7CisgICAgLy8gSW1wdXJlIE5hTiBj
b3VsZCBiZWNvbWUgcHVyZSBOYU4gZHVyaW5nIGFkZGl0aW9uIGJlY2F1c2UgYWRkaXRpb24gbWF5
IGNsZWFyIGJpdHMuCisgICAgaWYgKHJlc3VsdCAmIFNwZWNEb3VibGVJbXB1cmVOYU4pCisgICAg
ICAgIHJlc3VsdCB8PSBTcGVjRG91YmxlUHVyZU5hTjsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVOZWdhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKK3sKKyAgICAvLyBJbXB1cmUgTmFOIGNvdWxkIGJlY29tZSBwdXJlIE5hTiBiZWNhdXNlIGJp
dHMgbWlnaHQgZ2V0IGNsZWFyZWQuCisgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZUltcHVyZU5h
TikKKyAgICAgICAgdmFsdWUgfD0gU3BlY0RvdWJsZVB1cmVOYU47CisgICAgLy8gV2UgY291bGQg
Z2V0IG5lZ2F0aXZlIHplcm8sIHdoaWNoIG1peGVzIFNwZWNJbnQ1MkFzRG91YmxlIGFuZCBTcGVj
Tm90SW50QXNEb3VibGUuCisgICAgLy8gV2UgY291bGQgYWxzbyBvdmVyZmxvdyBhIGxhcmdlIG5l
Z2F0aXZlIGludCBpbnRvIHNvbWV0aGluZyB0aGF0IGlzIG5vIGxvbmdlcgorICAgIC8vIHJlcHJl
c2VudGFibGUgYXMgYW4gaW50LgorICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVSZWFsKQorICAg
ICAgICB2YWx1ZSB8PSBTcGVjRG91YmxlUmVhbDsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1Nw
ZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZUFicyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gdHlwZU9mRG91YmxlTmVnYXRpb24odmFsdWUpOworfQorCitTcGVjdWxhdGVkVHlw
ZSB0eXBlT2ZEb3VibGVGUm91bmQoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgLy8gV2Ug
bWlnaHQgbG9zZSBiaXRzLCB3aGljaCBsZWFkcyB0byBhIE5hTiBiZWluZyBwdXJpZmllZC4KKyAg
ICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICB2YWx1ZSB8PSBTcGVj
RG91YmxlUHVyZU5hTjsKKyAgICAvLyBXZSBtaWdodCBsb3NlIGJpdHMsIHdoaWNoIGxlYWRzIHRv
IGEgdmFsdWUgYmVjb21pbmcgaW50ZWdlci1yZXByZXNlbnRhYmxlLgorICAgIGlmICh2YWx1ZSAm
IFNwZWNOb25JbnRBc0RvdWJsZSkKKyAgICAgICAgdmFsdWUgfD0gU3BlY0ludDUyQXNEb3VibGU7
CisgICAgcmV0dXJuIHZhbHVlOworfQorCitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVCaW5h
cnlPcChTcGVjdWxhdGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQoreworICAgIHJldHVybiBw
b2xsdXRlRG91YmxlKGEgfCBiKTsKK30KKworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlVW5h
cnlPcChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gcG9sbHV0ZURvdWJsZSh2
YWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTY3Mzc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDE4ICs2OCwyMSBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0ludDUyQXNECiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAg
ICAgICAgICA9IDB4MDBlMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21lIGtpbmQgb2YgaW50
ZWdlci4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uSW50QXNEb3VibGUgICAg
ID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vdCBhbiBJbnQ1MiBidXQgaXQncyBh
IHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91YmxlLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAweDAxODAwMDAwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYSBub24tTmFOIGRvdWJsZS4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91
YmxlTmFOICAgICAgICAgID0gMHgwMjAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAgICAgPSAweDAz
ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVQdXJlTmFOICAgICAgPSAweDAyMDAwMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBOYU4gdGhhdCBpcyBzYWUgdG8gdGFnIChpLmUuIHB1cmUp
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVJbXB1cmVOYU4gICAgPSAw
eDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBOYU4gdGhhdCBpcyB1bnNhZmUgdG8gdGFn
IChpLmUuIGltcHVyZSkuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZU5h
TiAgICAgICAgICA9IDB4MDYwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21lIGtpbmQgb2Yg
TmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZURvdWJsZSAgICAg
PSAweDAzODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLCBi
dXQgaXQncyBkZWZpbml0ZWx5IG5vdCBpbXB1cmUgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAgICAgPSAweDA3ODAwMDAwOyAvLyBJdCdzIGVpdGhl
ciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNCeXRlY29kZVJlYWxOdW1iZXIgPSAweDAxYTAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJ
bnQzMiBvciBhIERvdWJsZVJlYWwuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1
bGxSZWFsTnVtYmVyICAgICA9IDB4MDFlMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9y
IGEgRG91YmxlUmVhbCwgb3IgYSBJbnQ1Mi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjQnl0ZWNvZGVOdW1iZXIgICAgID0gMHgwM2EwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50
MzIgb3IgYSBEb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1i
ZXIgICAgICAgICA9IDB4MDNlMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ1Miwg
b3IgYSBEb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlTnVt
YmVyICAgICA9IDB4MDNhMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91Ymxl
LCBhbmQgdGhlIERvdWJsZSBjYW5ub3QgYmUgYW4gaW1wdXJlIE5hTi4KK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjRnVsbE51bWJlciAgICAgICAgID0gMHgwN2UwMDAwMDsgLy8gSXQn
cyBlaXRoZXIgYW4gSW50MzIsIEludDUyLCBvciBhIERvdWJsZSwgYW5kIHRoZSBEb3VibGUgY2Fu
IGJlIGltcHVyZSBOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4g
ICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCiBz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRlZmluZWQuCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICA9IDB4MzAwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBOdWxsLCBvciBVbmRlZmlu
ZWQuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICA9
IDB4M2ZiZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNw
ZWNJbnQ1Mi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAg
ICAgID0gMHgzYmJmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBm
b3IgU3BlY0ludDUyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAg
ICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUg
bWFya2VyLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAg
ICAgPSAweDdmYmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZv
ciBTcGVjSW50NTIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9w
ICAgICAgICA9IDB4N2JiZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNl
cHQgZm9yIFNwZWNJbnQ1Mi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFRv
cCAgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUg
cGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCiAKIHR5cGVkZWYgYm9vbCAoKlNwZWN1bGF0
ZWRUeXBlQ2hlY2tlcikoU3BlY3VsYXRlZFR5cGUpOwpAQCAtMzk3LDYgKzQwMCwyMiBAQCBTcGVj
dWxhdGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5CiAKIGJvb2wgdmFsdWVzQ291bGRC
ZUVxdWFsKFNwZWN1bGF0ZWRUeXBlLCBTcGVjdWxhdGVkVHlwZSk7CiAKKy8vIFByZWNpc2UgY29t
cHV0YXRpb24gb2YgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiBhIGRvdWJsZSBjb21wdXRhdGlv
biBhZnRlciB3ZQorLy8gYWxyZWFkeSBrbm93IHRoYXQgdGhlIGlucHV0cyBhcmUgZG91YmxlcyBh
bmQgdGhhdCB0aGUgcmVzdWx0IG11c3QgYmUgYSBkb3VibGUuIFVzZQorLy8gdGhlIGNsb3Nlc3Qg
b25lIG9mIHRoZXNlIHRoYXQgYXBwbGllcy4KK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZVN1
bShTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9m
RG91YmxlRGlmZmVyZW5jZShTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3Vs
YXRlZFR5cGUgdHlwZU9mRG91YmxlUHJvZHVjdChTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5
cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlUXVvdGllbnQoU3BlY3VsYXRlZFR5cGUs
IFNwZWN1bGF0ZWRUeXBlKTsKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZU1pbk1heChTcGVj
dWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91Ymxl
TmVnYXRpb24oU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlQWJz
KFNwZWN1bGF0ZWRUeXBlKTsKK1NwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZUZSb3VuZChTcGVj
dWxhdGVkVHlwZSk7CisKKy8vIFRoaXMgY29uc2VydmF0aXZlbHkgbW9kZWxzIHRoZSBiZWhhdmlv
ciBvZiBhcmJpdHJhcnkgZG91YmxlIG9wZXJhdGlvbnMuCitTcGVjdWxhdGVkVHlwZSB0eXBlT2ZE
b3VibGVCaW5hcnlPcChTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOworU3BlY3VsYXRl
ZFR5cGUgdHlwZU9mRG91YmxlVW5hcnlPcChTcGVjdWxhdGVkVHlwZSk7CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gU3BlY3VsYXRlZFR5cGVfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAkocmV2aXNpb24gMTY3Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0lu
dDUyQXNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGNoaWxkICYmIGNoaWxkLmlzSW50MzIoKSkgewpAQCAtMzkwLDExICszOTAsOSBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJlcigpICsgcmlnaHQuYXNOdW1i
ZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKGlzRnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5tX3R5cGUpCi0gICAgICAgICAgICAgICAgJiYgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9u
KGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoCisgICAgICAgICAgICAgICAgdHlwZU9mRG91YmxlU3Vt
KAorICAgICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUsIGZv
ck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtNDQ3LDcgKzQ0NSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0
LmFzTnVtYmVyKCkgLSByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Rv
dWJsZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoCisgICAgICAgICAgICAg
ICAgdHlwZU9mRG91YmxlRGlmZmVyZW5jZSgKKyAgICAgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV90eXBlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUwNCw3ICs1MDQsOSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNEb3VibGVOdW1iZXIoLWNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSgKKyAgICAg
ICAgICAgICAgICB0eXBlT2ZEb3VibGVOZWdhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01NTUsMTEgKzU1Nyw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0
LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0
aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICB8fCBp
c0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBl
KSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJlYWwp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSgKKyAgICAg
ICAgICAgICAgICB0eXBlT2ZEb3VibGVQcm9kdWN0KAorICAgICAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUsIGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlw
ZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTkzLDcgKzU5Myw5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0LmFzTnVtYmVyKCkgLyByaWdodC5hc051bWJl
cigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoCisgICAgICAgICAgICAgICAgdHlwZU9mRG91YmxlUXVvdGllbnQoCisg
ICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSwgZm9yTm9k
ZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02
MjcsNyArNjI5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGZtb2QobGVm
dC5hc051bWJlcigpLCByaWdodC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNE
b3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKAorICAgICAgICAgICAg
ICAgIHR5cGVPZkRvdWJsZUJpbmFyeU9wKAorICAgICAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUsIGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjU1LDcgKzY1OSw5IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0RvdWJsZU51bWJlcihhIDwgYiA/IGEgOiAoYiA8PSBhID8gYiA6IGEgKyBiKSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKAorICAgICAgICAgICAgICAgIHR5cGVPZkRvdWJsZU1pbk1heCgKKyAgICAgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlLCBmb3JOb2RlKG5vZGUtPmNo
aWxkMigpKS5tX3R5cGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY4Myw3ICs2ODks
OSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoYSA+IGIgPyBhIDogKGIgPj0g
YSA/IGIgOiBhICsgYikpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSgKKyAgICAgICAgICAgICAgICB0eXBlT2ZEb3VibGVN
aW5NYXgoCisgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlw
ZSwgZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC03MTEsNyArNzE5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVy
KGNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSh0eXBlT2ZEb3VibGVBYnMoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC03MjYsNyAr
NzM0LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoc3FydChjaGlsZC5hc051bWJl
cigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
dHlwZU9mRG91YmxlVW5hcnlPcChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTczNiw3ICs3NDQsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0RvdWJsZU51bWJlcihzdGF0aWNfY2FzdDxmbG9hdD4oY2hpbGQuYXNOdW1iZXIo
KSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5
cGVPZkRvdWJsZUZSb3VuZChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTc0Niw3ICs3NTQsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0RvdWJsZU51bWJlcihzaW4oY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91
YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGVPZkRvdWJsZVVuYXJ5T3Ao
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAKQEAgLTc1Niw3ICs3NjQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihj
b3MoY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKHR5cGVPZkRvdWJsZVVuYXJ5T3AoZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtMTA0
Niw3ICsxMDU0LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2Ji
ZXJMaW1pdCk7CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQot
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0J5dGVjb2RlRG91YmxlKTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y0RvdWJsZVJlYWwpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDgxLDEzICsxMDg5LDEzIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGVs
c2UgaWYgKGVuYWJsZUludDUyKCkgJiYgbm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgp
KQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NTIpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
RG91YmxlKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDUy
QXNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0
MzJBcnJheToKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVEb3VibGUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVEb3VibGUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg2LDcgKzE0
ODYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAK
ICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3IgdGhlIGNvbnRpbnVh
dGlvbiBhdCB0aGUgY2FsbGVyLgotICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0
UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fs
cywgUU5hTikpOworICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBC
YXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikp
OwogCiAgICAgLy8gTGluayB0aGUgZWFybHkgcmV0dXJucyB0byB0aGUgYmFzaWMgYmxvY2sgd2Un
cmUgYWJvdXQgdG8gY3JlYXRlLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lU3Rh
Y2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLnNpemUoKTsgKytpKSB7CkBAIC0zNTc4LDcgKzM1Nzgs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5sYXN0QmxvY2soKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8QmFz
aWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhtX2N1cnJlbnRJbmRleCwg
bV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBRTmFOKSk7CisgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG1fY3Vy
cmVudEluZGV4LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBhc3NlcnRpb24gY2hlY2tzIHR3byB0aGluZ3M6CiAgICAgICAgICAgICAg
ICAgICAgIC8vIDEpIElmIHRoZSBieXRlY29kZUJlZ2luIGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50
SW5kZXgsIHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJ
KHJldmlzaW9uIDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGlj
YWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBwYXNzIE5hTiBmb3IgdGhl
IGNvdW50IG9mIHRoZSBjcml0aWNhbCBlZGdlIGJsb2NrLCBiZWNhdXNlIHdlIGhvbmVzdGx5CiAg
ICAgICAgIC8vIGRvbid0IGtub3cgaXRzIGV4ZWN1dGlvbiBmcmVxdWVuY3kuCi0gICAgICAgIEJh
c2ljQmxvY2sqIHBhZCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZSgqc3VjY2Vzc29yLCBR
TmFOKTsKKyAgICAgICAgQmFzaWNCbG9jayogcGFkID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0QmVm
b3JlKCpzdWNjZXNzb3IsIFBOYU4pOwogICAgICAgICBwYWQtPmFwcGVuZE5vZGUoCiAgICAgICAg
ICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgKCpzdWNjZXNzb3IpLT5hdCgwKS0+b3JpZ2lu
LCBPcEluZm8oKnN1Y2Nlc3NvcikpOwogICAgICAgICBwYWQtPnByZWRlY2Vzc29ycy5hcHBlbmQo
cHJlZGVjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE2NzM3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODYsMTQgKzI4Niw4IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1l
cmdlU3RhdGVBdFQKICAgICAgICAgICAgIC8vIFRoZSBibG9jayBzZXRzIHRoZSB2YXJpYWJsZSwg
YW5kIHBvdGVudGlhbGx5IHJlZmluZXMgaXQsIGJvdGgKICAgICAgICAgICAgIC8vIGJlZm9yZSBh
bmQgYWZ0ZXIgc2V0dGluZyBpdC4KICAgICAgICAgICAgIHNvdXJjZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgaWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5m
bHVzaEZvcm1hdCgpID09IEZsdXNoZWREb3VibGUpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
IShzb3VyY2UubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKSk7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKCEhKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0RvdWJsZSkgPT0gISEoc291cmNlLm1fdHlwZSAm
IFNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCEoc291cmNlLm1fdHlwZSAm
IH5TcGVjRG91YmxlKSkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UubWVyZ2UoU3BlY0lu
dDUyQXNEb3VibGUpOwotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuZmlsdGVyKFNwZWNEb3Vi
bGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSA9PSBGbHVzaGVkRG91Ymxl
KQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoc291cmNlLm1fdHlwZSAmIH5TcGVj
RG91YmxlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xv
b3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3Mzc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaCwgQmxvY2tJbnNl
cnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgLy8gRG9u
J3QgYm90aGVyIHRvIHByZXNlcnZlIGV4ZWN1dGlvbiBmcmVxdWVuY2llcyBmb3Igbm93LgotICAg
IEJhc2ljQmxvY2sqIHByZUhlYWRlciA9IGluc2VydGlvblNldC5pbnNlcnRCZWZvcmUoYmxvY2ss
IFFOYU4pOworICAgIEJhc2ljQmxvY2sqIHByZUhlYWRlciA9IGluc2VydGlvblNldC5pbnNlcnRC
ZWZvcmUoYmxvY2ssIFBOYU4pOwogICAgIHByZUhlYWRlci0+YXBwZW5kTm9kZSgKICAgICAgICAg
Z3JhcGgsIFNwZWNOb25lLCBKdW1wLCBibG9jay0+YXQoMCktPm9yaWdpbiwgT3BJbmZvKGJsb2Nr
KSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24g
MTY3Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDEzICs4OSwxMyBAQCBzdHJ1Y3QgTmV3QXJyYXlCdWZmZXJEYXRhIHsKIHN0
cnVjdCBCcmFuY2hUYXJnZXQgewogICAgIEJyYW5jaFRhcmdldCgpCiAgICAgICAgIDogYmxvY2so
MCkKLSAgICAgICAgLCBjb3VudChRTmFOKQorICAgICAgICAsIGNvdW50KFBOYU4pCiAgICAgewog
ICAgIH0KICAgICAKICAgICBleHBsaWNpdCBCcmFuY2hUYXJnZXQoQmFzaWNCbG9jayogYmxvY2sp
CiAgICAgICAgIDogYmxvY2soYmxvY2spCi0gICAgICAgICwgY291bnQoUU5hTikKKyAgICAgICAg
LCBjb3VudChQTmFOKQogICAgIHsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTY3Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgQmxvY2tJbnNlcnRpb25TZXQgaW5zZXJ0
aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICAKLSAgICAgICAgQmFzaWNCbG9jayogbmV3Um9vdCA9
IGluc2VydGlvblNldC5pbnNlcnQoMCwgUU5hTik7CisgICAgICAgIEJhc2ljQmxvY2sqIG5ld1Jv
b3QgPSBpbnNlcnRpb25TZXQuaW5zZXJ0KDAsIFBOYU4pOwogICAgICAgICBOb2RlT3JpZ2luIG9y
aWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxO
b2RlKj4gbG9jYWxzKGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcAkocmV2aXNpb24gMTY3Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2Ug
RG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDAp
OwogICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6
ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJl
Z1QwKTsKKyAgICAgICAgICAgIG1faml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKICAg
ICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHAJKHJldmlzaW9uIDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9p
ZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICBjYXNlIERvdWJs
ZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVn
VDApOwotICAgICAgICAgICAgbV9qaXQuc2FuaXRpemVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7
CisgICAgICAgICAgICBtX2ppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAg
ICAgICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwog
ICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTMsMTEgKzExMywxNCBAQCBwcml2YXRlOgogICAgIAogICAgIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0ZWREb3VibGVUeXBlRm9yUHJlZGljdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAg
ICB7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCA9IFNwZWNEb3VibGVSZWFsOworICAg
ICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQorICAgICAgICAgICAgcmVzdWx0
IHw9IFNwZWNEb3VibGVJbXB1cmVOYU47CisgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVQ
dXJlTmFOKQorICAgICAgICAgICAgcmVzdWx0IHw9IFNwZWNEb3VibGVQdXJlTmFOOwogICAgICAg
ICBpZiAoIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVy
biBTcGVjRG91YmxlOwotICAgICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlTmFOKQotICAgICAg
ICAgICAgcmV0dXJuIFNwZWNEb3VibGU7Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlUmVhbDsK
KyAgICAgICAgICAgIHJlc3VsdCB8PSBTcGVjRG91YmxlUHVyZU5hTjsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKICAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkRG91YmxlVHlw
ZUZvclByZWRpY3Rpb25zKFNwZWN1bGF0ZWRUeXBlIGxlZnQsIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0
KQpAQCAtMjE2LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIC8vIGxl
ZnQgb3IgcmlnaHQgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIG51bWJlci4K
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmlu
Zyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmcgfCBTcGVjSW50MzIgfCBTcGVjRG91YmxlKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmlu
ZyB8IFNwZWNJbnQzMiB8IFNwZWNCeXRlY29kZURvdWJsZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzAxLDcgKzMwNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICYmIG5vZGVDYW5TcGVjdWxhdGVJbnQzMihub2RlLT5hcml0aE5v
ZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oU3BlY0ludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNEb3VibGUpOworICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0ZWNvZGVEb3VibGUpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMxNSw3ICszMTgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50
MzIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0J5dGVj
b2RlRG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0zMjQsNyArMzI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0aEZSb3VuZDoK
ICAgICAgICAgY2FzZSBBcml0aFNpbjoKICAgICAgICAgY2FzZSBBcml0aENvczogewotICAgICAg
ICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNEb3VibGUpOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCeXRlY29kZURvdWJsZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9u
IDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MTgsNyArMjcxOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEZQUlJlZyB2YWx1ZUZQ
UiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY0Z1bGxSZWFsTnVtYmVy
LAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMigpLCBTcGVjRG91
YmxlUmVhbCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1ZUZQUikpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3RvcmFn
ZUxlbmd0aEdQUik7CkBAIC0yODM0LDcgKzI4MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleChzdG9yYWdlR1BSLCB2YWx1ZVBheWxvYWRHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0Vp
Z2h0KSwKICAgICAgICAgICAgICAgICB0ZW1wRlBSKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCB0ZW1wRlBSLCB0ZW1wRlBSKTsKLSAgICAgICAgICAg
IEpTVmFsdWUgbmFuID0gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgUU5hTik7Cisg
ICAgICAgICAgICBKU1ZhbHVlIG5hbiA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUs
IFBOYU4pOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5hbi51LmFzQml0cy50YWcpLAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgdmFsdWVQYXlsb2FkR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUu
YXNCaXRzLnRhZykpKTsKQEAgLTMwNjQsNyArMzA2NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcGVyYW5kKHRoaXMsIHVzZSk7CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBv
cEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNL
KAotICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjRnVsbFJl
YWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNw
ZWNEb3VibGVSZWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIp
KTsKICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKG9wRlBS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIG9w
ZXJhbmRJZHgpKTsKQEAgLTMyMjcsNyArMzIyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rv
ckxlbmd0aCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChoYXNEb3VibGUobm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBuYW4gPSBKU1Zh
bHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBRTmFOKTsKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlIG5hbiA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIFBOYU4pOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoc2l6ZUdQUiwgc2NyYXRjaEdQ
Uik7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NjgsNyArMjg2OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEZQUlJlZyB2YWx1
ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY0Z1bGxSZWFsTnVt
YmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMigpLCBTcGVj
RG91YmxlUmVhbCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1ZUZQUikpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3Rv
cmFnZUxlbmd0aEdQUik7CkBAIC0yOTU1LDcgKzI5NTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgd291
bGQgbm90IGhhdmUgdG8gYmUgaGVyZSBpZiBjaGFuZ2luZyB0aGUgcHVibGljTGVuZ3RoIGFsc28g
emVyb2VkIHRoZSB2YWx1ZXMgYmV0d2VlbiB0aGUgb2xkCiAgICAgICAgICAgICAgICAgLy8gbGVu
Z3RoIGFuZCB0aGUgbmV3IGxlbmd0aC4KICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KAot
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KGJpdHdpc2Vf
Y2FzdDxpbnQ2NF90PihRTmFOKSksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQ
Uiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChiaXR3aXNlX2Nhc3Q8
aW50NjRfdD4oUE5hTikpLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHN0
b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSk7CiAgICAgICAgICAg
ICAgICAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHRlbXBGUFIsIHRlbXBGUFIpOwogICAgICAgICAgICAgICAg
IGJveERvdWJsZSh0ZW1wRlBSLCB2YWx1ZUdQUik7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAt
MzE2MCw3ICszMTYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhp
cywgdXNlKTsKICAgICAgICAgICAgICAgICAgICAgRlBSUmVnIG9wRlBSID0gb3BlcmFuZC5mcHIo
KTsKICAgICAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0RvdWJsZVJlYWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9w
RlBSLCBvcEZQUikpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShvcEZQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgc2l6ZW9mKGRvdWJsZSkgKiBv
cGVyYW5kSWR4KSk7CkBAIC0zMjI1LDcgKzMyMjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgRlBSUmVnIG9wRlBSID0gb3BlcmFu
ZC5mcHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3By
KCk7CiAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNEb3VibGVSZWFsLAogICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgb3BGUFIsIG9wRlBSKSk7CiAgICAg
ICAgICAgICAgICAgbV9qaXQuYm94RG91YmxlKG9wRlBSLCBzY3JhdGNoR1BSKTsKQEAgLTMzMjYs
NyArMzMyNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmIChoYXNEb3VibGUobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGlu
dDY0X3Q+KFFOYU4pKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwgc2NyYXRjaEdQUik7CiAg
ICAgICAgICAgICAgICAgbV9qaXQubW92ZShzaXplR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaDJHUFIpOwogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBsb29wID0gbV9qaXQubGFiZWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNjcz
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODQsMTIgKzg0LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRBbGxvY2F0ZUpTQXJyYXkKICAgICAKICAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpICYmIG51bUVsZW1lbnRzIDwgdmVjdG9yTGVuZ3RoKSB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGlu
dDY0X3Q+KFFOYU4pKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1FbGVtZW50czsgaSA8IHZlY3Rvckxlbmd0aDsgKytpKQogICAg
ICAgICAgICAgbV9qaXQuc3RvcmU2NChzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIGkpKTsKICNlbHNlCiAgICAgICAgIEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IgdmFsdWU7Ci0gICAgICAgIHZhbHVlLmFzSW50NjQgPSBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgUU5hTikpOworICAgICAg
ICB2YWx1ZS5hc0ludDY0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2Rl
QXNEb3VibGUsIFBOYU4pKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRWxlbWVudHM7
IGkgPCB2ZWN0b3JMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVz
dGVkSW1tMzIodmFsdWUuYXNCaXRzLnRhZyksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3Jh
Z2VHUFIsIHNpemVvZihkb3VibGUpICogaSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy50YWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMih2YWx1
ZS5hc0JpdHMucGF5bG9hZCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNp
emVvZihkb3VibGUpICogaSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKSkpOwpAQCAtMTg5MSw3ICsxODkxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IE51bWJlclVzZSkgewogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxO
dW1iZXIsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGdwciksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aFRlc3Q2NCgKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBn
cHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICAgICAgfSBlbHNl
IHsKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZVRvSW50MzIKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gTnVtYmVyVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAg
ICAgICAgICAgICAgICAgICAgICAgb3AxLmpzVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjRnVsbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wMS5qc1ZhbHVlUmVncygp
LCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CkBAIC0yNTA3LDcgKzI1MDcs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIG1faml0LnNhbml0
aXplRG91YmxlKHJlc3VsdFJlZyk7CisgICAgbV9qaXQucHVyaWZ5TmFOKHJlc3VsdFJlZyk7CiAg
ICAgCiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdFJlZywgbm9kZSk7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJldmlz
aW9uIDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nl
c3NEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsMTIgQEAgcHVibGljOgogICAg
ICAgICBpZiAobV9kb3VibGVGb3JtYXRTdGF0ZSAhPSBVc2luZ0RvdWJsZUZvcm1hdCkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBtZXJnZVNwZWN1
bGF0aW9uKG1fcHJlZGljdGlvbiwgU3BlY0RvdWJsZSk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSBtX3ByZWRpY3Rpb247CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCeXRlY29kZU51
bWJlcikKKyAgICAgICAgICAgIHR5cGUgfD0gU3BlY0RvdWJsZVB1cmVOYU47CisgICAgICAgIGlm
ICh0eXBlICYgU3BlY01hY2hpbmVJbnQpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ1MkFz
RG91YmxlOworICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9wcmVkaWN0aW9uLCB0eXBlKTsK
ICAgICB9CiAgICAgCiAgICAgTm9kZUZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFn
czsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAJKHJldmlzaW9uIDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTI4LDcgKzIxMjgsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtX291dC5zZWxlY3QoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0
LmRvdWJsZUVxdWFsKHJlc3VsdCwgcmVzdWx0KSwgcmVzdWx0LCBtX291dC5jb25zdERvdWJsZShR
TmFOKSk7CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKHJlc3VsdCwgcmVz
dWx0KSwgcmVzdWx0LCBtX291dC5jb25zdERvdWJsZShQTmFOKSk7CiAgICAgICAgICAgICAgICAg
c2V0RG91YmxlKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dEb3VibGUoY2hpbGQzKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBGVExfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFs
dWUpLCBjaGlsZDMsIFNwZWNGdWxsUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgZG91
YmxlVmFsdWUodmFsdWUpLCBjaGlsZDMsIFNwZWNEb3VibGVSZWFsLAogICAgICAgICAgICAgICAg
ICAgICBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVlLCB2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlciBlbGVtZW50UG9pbnRl
ciA9IG1fb3V0LmJhc2VJbmRleCgKQEAgLTI0MTQsNyArMjQxNCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhbHVlID0gbG93RG91YmxlKG1fbm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIG1fbm9kZS0+Y2hpbGQyKCksIFNwZWNGdWxs
UmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBtX25v
ZGUtPmNoaWxkMigpLCBTcGVjRG91YmxlUmVhbCwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICByZWZUeXBlID0gbV9vdXQucmVmRG91YmxlOwogICAgICAgICAgICAgfQpAQCAtMjQ5OSw3ICsy
NDk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90WmVybzY0KHJl
c3VsdCksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2Fk
RG91YmxlKHBvaW50ZXIpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29u
c3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUU5hTikpLCBwb2ludGVyKTsKKyAgICAgICAg
ICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0
X3Q+KFBOYU4pKSwgcG9pbnRlcik7CiAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9v
dXQuYW5jaG9yKGJveERvdWJsZShyZXN1bHQpKSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKAogICAgICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVFcXVhbChyZXN1bHQsIHJlc3Vs
dCksCkBAIC0yNzMwLDcgKzI3MzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExWYWx1
ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQb2ludGVyKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KAotICAgICAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihRTmFOKSks
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0
X3Q+KFBOYU4pKSwKICAgICAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5k
ZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgTFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRl
eCwgbV9vdXQuaW50MzJPbmUpOwpAQCAtMzk4Miw3ICszOTgyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIGlmIChlZGdlLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdEludENhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAg
ICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjRnVsbE51bWJl
ciwgaXNDZWxsT3JNaXNjKHZhbHVlKSk7CisgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1Zh
bHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsIGlzQ2VsbE9yTWlzYyh2
YWx1ZSkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGRvdWJsZVRv
SW50MzIodW5ib3hEb3VibGUodmFsdWUpKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogICAgICAgICB9IGVsc2UgewpAQCAtNDM4Niw3ICs0Mzg2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRWxlbWVudHM7IGkgPCB2ZWN0b3JMZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCi0gICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFFOYU4pKSwKKyAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4o
UE5hTikpLAogICAgICAgICAgICAgICAgICAgICBidXR0ZXJmbHksIG1faGVhcHMuaW5kZXhlZERv
dWJsZVByb3BlcnRpZXNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAkocmV2aXNpb24gMTY3
Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCByZWJveEFjY29yZGluZ1RvRm9ybWF0
KAogICAgIGNhc2UgVmFsdWVGb3JtYXREb3VibGU6IHsKICAgICAgICAgaml0Lm1vdmVEb3VibGVU
bzY0KEZQUkluZm86OmZwUmVnVDAsIHNjcmF0Y2gxKTsKICAgICAgICAgaml0Lm1vdmU2NFRvRG91
YmxlKHZhbHVlLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgaml0LnNhbml0aXplRG91Ymxl
KEZQUkluZm86OmZwUmVnVDApOworICAgICAgICBqaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVn
VDApOwogICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIHZhbHVlKTsKICAg
ICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKHNjcmF0Y2gxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAg
ICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCShyZXZpc2lvbiAxNjczNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEwICs1NCwxMCBA
QCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1iCiAgICAgcmV0dXJuIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6
ZURvdWJsZShGUFJSZWcgZnByKQordm9pZCBBc3NlbWJseUhlbHBlcnM6OnB1cmlmeU5hTihGUFJS
ZWcgZnByKQogewogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE5hTiA9IGJyYW5jaERvdWJs
ZShEb3VibGVFcXVhbCwgZnByLCBmcHIpOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0g
UU5hTjsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFBOYU47CiAgICAgbG9hZERvdWJs
ZSgmTmFOLCBmcHIpOwogICAgIG5vdE5hTi5saW5rKHRoaXMpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNjczNzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MTgsNyArNDE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaml0QXNzZXJ0QXJndW1l
bnRDb3VudFNhbmUoKSB7IH0KICNlbmRpZgogICAgIAotICAgIHZvaWQgc2FuaXRpemVEb3VibGUo
RlBSUmVnKTsKKyAgICB2b2lkIHB1cmlmeU5hTihGUFJSZWcpOwogCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyBjb252ZXJ0IGJldHdlZW4gZG91YmxlcywgYW5kIGRvdWJsZXMgYm94ZWQgYW5kIEpTVmFs
dWVzLgogI2lmIFVTRShKU1ZBTFVFNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTY3Mzc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNTgsNyArMTI1OCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFy
cmF5R2UKICAgICB9CiAgICAgCiAgICAgSnVtcCBub3ROYU4gPSBicmFuY2hEb3VibGUoRG91Ymxl
RXF1YWwsIGZwUmVnVDAsIGZwUmVnVDApOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0g
UU5hTjsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFBOYU47CiAgICAgbG9hZERvdWJs
ZSgmTmFOLCBmcFJlZ1QwKTsKICAgICBub3ROYU4ubGluayh0aGlzKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMTY3Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgICAgIHx8IChudW1Bcmdz
ID49IDUgJiYgKCFzdGQ6OmlzZmluaXRlKGRvdWJsZUFyZ3VtZW50c1s0XSkgfHwgKGRvdWJsZUFy
Z3VtZW50c1s0XSA+IElOVF9NQVgpIHx8IChkb3VibGVBcmd1bWVudHNbNF0gPCBJTlRfTUlOKSkp
CiAgICAgICAgICAgICB8fCAobnVtQXJncyA+PSA2ICYmICghc3RkOjppc2Zpbml0ZShkb3VibGVB
cmd1bWVudHNbNV0pIHx8IChkb3VibGVBcmd1bWVudHNbNV0gPiBJTlRfTUFYKSB8fCAoZG91Ymxl
QXJndW1lbnRzWzVdIDwgSU5UX01JTikpKQogICAgICAgICAgICAgfHwgKG51bUFyZ3MgPj0gNyAm
JiAoIXN0ZDo6aXNmaW5pdGUoZG91YmxlQXJndW1lbnRzWzZdKSB8fCAoZG91YmxlQXJndW1lbnRz
WzZdID4gSU5UX01BWCkgfHwgKGRvdWJsZUFyZ3VtZW50c1s2XSA8IElOVF9NSU4pKSkpCi0gICAg
ICAgICAgICB2YWx1ZSA9IFFOYU47CisgICAgICAgICAgICB2YWx1ZSA9IFBOYU47CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKICAgICAgICAgICAgIGlu
dCB5ZWFyID0gSlNDOjp0b0ludDMyKGRvdWJsZUFyZ3VtZW50c1swXSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgJKHJldmlz
aW9uIDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5j
ZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBEYXRlSW5zdGFuY2VEYXRhKCkKLSAgICAgICAgICAg
IDogbV9ncmVnb3JpYW5EYXRlVGltZUNhY2hlZEZvck1TKFFOYU4pCi0gICAgICAgICAgICAsIG1f
Z3JlZ29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyhRTmFOKQorICAgICAgICAgICAgOiBtX2dy
ZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVMoUE5hTikKKyAgICAgICAgICAgICwgbV9ncmVnb3Jp
YW5EYXRlVGltZVVUQ0NhY2hlZEZvck1TKFBOYU4pCiAgICAgICAgIHsKICAgICAgICAgfQogICAg
IH07CkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlc2V0
KCkKICAgICAgICAgewogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWNoZVNp
emU7ICsraSkKLSAgICAgICAgICAgICAgICBtX2NhY2hlW2ldLmtleSA9IFFOYU47CisgICAgICAg
ICAgICAgICAgbV9jYWNoZVtpXS5rZXkgPSBQTmFOOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBEYXRlSW5zdGFuY2VEYXRhKiBhZGQoZG91YmxlIGQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNpb24g
MTY3Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgSlNWYWx1ZSBUZXJtaW5hdGVk
RXhlY3V0aW9uRXJyb3I6OmRlZmF1bAogewogICAgIGlmIChoaW50ID09IFByZWZlclN0cmluZykK
ICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRl
cmFsKCJKYXZhU2NyaXB0IGV4ZWN1dGlvbiB0ZXJtaW5hdGVkLiIpKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWUoUU5hTik7CisgICAgcmV0dXJuIEpTVmFsdWUoUE5hTik7CiB9CiAKIEpTT2JqZWN0KiBj
cmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAxNjczNzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIyLDcgKzQyMiw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhl
YywKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91
YmxlKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGlj
TGVuZ3RoKCk7IGktLSA+IG5ld0xlbmd0aDspCi0gICAgICAgICAgICAgICAgbV9idXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgICAgICAgICAgbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBOYU47CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGkt
LSA+IG5ld0xlbmd0aDspCiAgICAgICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMo
KVtpXS5jbGVhcigpOwpAQCAtNDc4LDcgKzQ3OCw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDwgbV9idXR0ZXJm
bHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAgICAgZG91YmxlIHZhbHVlID0gbV9idXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKVtsZW5ndGhdOwogICAgICAgICBpZiAodmFsdWUgPT0gdmFsdWUp
IHsKLSAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbbGVuZ3RoXSA9
IFFOYU47CisgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2xlbmd0
aF0gPSBQTmFOOwogICAgICAgICAgICAgbV9idXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5n
dGgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUs
IHZhbHVlKTsKICAgICAgICAgfQpAQCAtODIyLDcgKzgyMiw3IEBAIGJvb2wgSlNBcnJheTo6c2hp
ZnRDb3VudFdpdGhBbnlJbmRleGluZ1QKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKClbaV0gPSB2OwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGVuZDsgaSA8IG9sZExlbmd0aDsgKytpKQotICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGln
dW91c0RvdWJsZSgpW2ldID0gUE5hTjsKICAgICAgICAgCiAgICAgICAgIG1fYnV0dGVyZmx5LT5z
ZXRQdWJsaWNMZW5ndGgob2xkTGVuZ3RoIC0gY291bnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE0NDAsNyArMTQ0MCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUq
IGV4ZWMKICAgICBmb3IgKHVuc2lnbmVkIGkgPSB1bmRlZmluZWRFbGVtZW50c1RocmVzaG9sZDsg
aSA8IGNsZWFyRWxlbWVudHNUaHJlc2hvbGQ7ICsraSkgewogICAgICAgICBBU1NFUlQoaSA8IGJ1
dHRlcmZseSgpLT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgIGlmIChpbmRleGluZ1R5cGUoKSA9
PSBBcnJheVdpdGhEb3VibGUpCi0gICAgICAgICAgICBidXR0ZXJmbHkoKS0+Y29udGlndW91c0Rv
dWJsZSgpW2ldID0gUU5hTjsKKyAgICAgICAgICAgIGJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91
YmxlKClbaV0gPSBQTmFOOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50SW5kZXhp
bmdEYXRhKClbaV0uY2xlYXIoKTsKICAgICB9CkBAIC0xNjg0LDcgKzE2ODQsNyBAQCB2b2lkIEpT
QXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bmV3UmVsZXZhbnRMZW5ndGg7IGkgPCBteVJlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAgICAgICAg
QVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICBpZiAoYXJy
YXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKQotICAgICAgICAgICAgbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgICAgICBtX2J1dHRlcmZs
eS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUE5hTjsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW2ldLmNsZWFyKCk7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMTY3
Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTksNyArMjE5LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OmNyZWF0
ZShWTSYgdm0sIAogICAgICAgICBBU1NFUlQoaW5pdGlhbExlbmd0aCA8IE1JTl9TUEFSU0VfQVJS
QVlfSU5ERVgpOwogICAgICAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjdG9yTGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0g
PSBRTmFOOworICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ld
ID0gUE5hTjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCgKQEAgLTI1
NCw3ICsyNTQsNyBAQCBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0CiAg
ICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGluaXRpYWxMZW5ndGgpOwogICAgICAg
ICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBpbml0aWFsTGVuZ3RoOyBpIDwgdmVjdG9yTGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFO
OworICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUE5h
TjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHZvaWQqIHRlbXA7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNpb24g
MTY3Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVy
U2xvd0Nhc2UoRXhlY1N0YQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGV4ZWMp
OwogICAgIGlmIChpc1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsKLSAgICByZXR1cm4gaXNV
bmRlZmluZWQoKSA/IFFOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8g
MC4KKyAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxz
ZSBib3RoIGNvbnZlcnQgdG8gMC4KIH0KIAogSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xv
d0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2
aXNpb24gMTY3Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIEpTQ0pTVmFsdWVf
aAogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgIlB1cmVOYU4uaCIKICNpbmNsdWRlIDxz
dGRkZWYuaD4gLy8gZm9yIHNpemVfdAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CkBAIC0zNiwxMCArMzcsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
Ly8gVGhpcyBpcyB1c2VkIGEgbG90IHRocm91Z2hvdXQgSmF2YVNjcmlwdENvcmUgZm9yIGV2ZXJ5
dGhpbmcgZnJvbSB2YWx1ZSBib3hpbmcgdG8gbWFya2luZwotLy8gdmFsdWVzIGFzIGJlaW5nIG1p
c3NpbmcsIHNvIGl0IGlzIHVzZWZ1bCB0byBoYXZlIGl0IGFiYnJldmlhdGVkLgotI2RlZmluZSBR
TmFOIChzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKQotCiBjbGFzcyBB
c3NlbWJseUhlbHBlcnM7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0NlbGw7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJ
KHJldmlzaW9uIDE2NzM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgaW5saW5lIGRv
dWJsZSBKU1ZhbHVlOjphc051bWJlcigpIGNvbnN0CiAKIGlubGluZSBKU1ZhbHVlIGpzTmFOKCkK
IHsKLSAgICByZXR1cm4gSlNWYWx1ZShRTmFOKTsKKyAgICByZXR1cm4gSlNWYWx1ZShQTmFOKTsK
IH0KIAogaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY2hhciBpKQpAQCAtMzAyLDYgKzMwMiw3IEBA
IEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSAKIAogQUxXQVlTX0lOTElO
RSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUgZCkKIHsKKyAgICBB
U1NFUlQoIWlzSW1wdXJlTmFOKGQpKTsKICAgICB1LmFzRG91YmxlID0gZDsKIH0KIApAQCAtNDY4
LDYgKzQ2OSw3IEBAIGlubGluZSBkb3VibGUgcmVpbnRlcnByZXRJbnQ2NFRvRG91YmxlKGkKIAog
QUxXQVlTX0lOTElORSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUg
ZCkKIHsKKyAgICBBU1NFUlQoIWlzSW1wdXJlTmFOKGQpKTsKICAgICB1LmFzSW50NjQgPSByZWlu
dGVycHJldERvdWJsZVRvSW50NjQoZCkgKyBEb3VibGVFbmNvZGVPZmZzZXQ7CiB9CiAKQEAgLTYw
OSw3ICs2MTEsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7Ci0g
ICAgbnVtYmVyID0gUU5hTjsKKyAgICBudW1iZXIgPSBQTmFOOwogICAgIHZhbHVlID0gKnRoaXM7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAx
NjczNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgZG91
YmxlIHBhcnNlSW50KGNvbnN0IFN0cmluZyYgcywgCiAKICAgICAvLyA4LmEgSWYgUiA8IDIgb3Ig
UiA+IDM2LCB0aGVuIHJldHVybiBOYU4uCiAgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2
KQotICAgICAgICByZXR1cm4gUU5hTjsKKyAgICAgICAgcmV0dXJuIFBOYU47CiAKICAgICAvLyAx
My4gTGV0IG1hdGhJbnQgYmUgdGhlIG1hdGhlbWF0aWNhbCBpbnRlZ2VyIHZhbHVlIHRoYXQgaXMg
cmVwcmVzZW50ZWQgYnkgWiBpbiByYWRpeC1SIG5vdGF0aW9uLCB1c2luZyB0aGUgbGV0dGVycwog
ICAgIC8vICAgICBBLVogYW5kIGEteiBmb3IgZGlnaXRzIHdpdGggdmFsdWVzIDEwIHRocm91Z2gg
MzUuIChIb3dldmVyLCBpZiBSIGlzIDEwIGFuZCBaIGNvbnRhaW5zIG1vcmUgdGhhbiAyMCBzaWdu
aWZpY2FudApAQCAtMzA1LDcgKzMwNSw3IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VJbnQoY29uc3Qg
U3RyaW5nJiBzLCAKIAogICAgIC8vIDEyLiBJZiBaIGlzIGVtcHR5LCByZXR1cm4gTmFOLgogICAg
IGlmICghc2F3RGlnaXQpCi0gICAgICAgIHJldHVybiBRTmFOOworICAgICAgICByZXR1cm4gUE5h
TjsKIAogICAgIC8vIEFsdGVybmF0ZSBjb2RlIHBhdGggZm9yIGNlcnRhaW4gbGFyZ2UgbnVtYmVy
cy4KICAgICBpZiAobnVtYmVyID49IG1hbnRpc3NhT3ZlcmZsb3dMb3dlckJvdW5kKSB7CkBAIC00
MDMsNyArNDAzLDcgQEAgc3RhdGljIGRvdWJsZSBqc1N0ckRlY2ltYWxMaXRlcmFsKGNvbnN0IAog
ICAgIH0KIAogICAgIC8vIE5vdCBhIG51bWJlci4KLSAgICByZXR1cm4gUU5hTjsKKyAgICByZXR1
cm4gUE5hTjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgpAQCAtNDMzLDcgKzQz
Myw3IEBAIHN0YXRpYyBkb3VibGUgdG9Eb3VibGUoY29uc3QgQ2hhclR5cGUqIGMKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAoY2hhcmFjdGVycyAhPSBlbmRDaGFyYWN0ZXJzKQot
ICAgICAgICByZXR1cm4gUU5hTjsKKyAgICAgICAgcmV0dXJuIFBOYU47CiAgICAgCiAgICAgcmV0
dXJuIG51bWJlcjsKIH0KQEAgLTQ0OSw3ICs0NDksNyBAQCBkb3VibGUganNUb051bWJlcihjb25z
dCBTdHJpbmcmIHMpCiAgICAgICAgICAgICByZXR1cm4gYyAtICcwJzsKICAgICAgICAgaWYgKGlz
U3RyV2hpdGVTcGFjZShjKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4g
UU5hTjsKKyAgICAgICAgcmV0dXJuIFBOYU47CiAgICAgfQogCiAgICAgaWYgKHMuaXM4Qml0KCkp
CkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KGNvbnN0IFN0cmlu
ZyYgcwogICAgICAgICBVQ2hhciBjID0gc1swXTsKICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChj
KSkKICAgICAgICAgICAgIHJldHVybiBjIC0gJzAnOwotICAgICAgICByZXR1cm4gUU5hTjsKKyAg
ICAgICAgcmV0dXJuIFBOYU47CiAgICAgfQogCiAgICAgaWYgKHMuaXM4Qml0KCkpIHsKQEAgLTQ4
MCw3ICs0ODAsNyBAQCBzdGF0aWMgZG91YmxlIHBhcnNlRmxvYXQoY29uc3QgU3RyaW5nJiBzCiAK
ICAgICAgICAgLy8gRW1wdHkgc3RyaW5nLgogICAgICAgICBpZiAoZGF0YSA9PSBlbmQpCi0gICAg
ICAgICAgICByZXR1cm4gUU5hTjsKKyAgICAgICAgICAgIHJldHVybiBQTmFOOwogCiAgICAgICAg
IHJldHVybiBqc1N0ckRlY2ltYWxMaXRlcmFsKGRhdGEsIGVuZCk7CiAgICAgfQpAQCAtNDk2LDcg
KzQ5Niw3IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VGbG9hdChjb25zdCBTdHJpbmcmIHMKIAogICAg
IC8vIEVtcHR5IHN0cmluZy4KICAgICBpZiAoZGF0YSA9PSBlbmQpCi0gICAgICAgIHJldHVybiBR
TmFOOworICAgICAgICByZXR1cm4gUE5hTjsKIAogICAgIHJldHVybiBqc1N0ckRlY2ltYWxMaXRl
cmFsKGRhdGEsIGVuZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCShyZXZpc2lvbiAxNjczNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3ICs2MzYsNyBAQCBD
b250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGlhCiAgICAgRGVmZXJHQyBkZWZl
ckdDKHZtLmhlYXApOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlSW5pdGlh
bEluZGV4ZWRTdG9yYWdlKHZtLCBsZW5ndGgsIHNpemVvZihkb3VibGUpKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBuZXdCdXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KQotICAgICAgICBu
ZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgIG5ld0J1
dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUE5hTjsKICAgICBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUodm0pLCBBbGxvY2F0ZURvdWJsZSk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZt
LCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpOwpAQCAtNjkwLDcgKzY5MCw3IEBAIENvbnRpZ3VvdXNEb3VibGVz
IEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWMKICAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4aW5n
VHlwZSgpKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnZlY3Rv
ckxlbmd0aCgpOyBpLS07KQotICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgp
W2ldID0gUU5hTjsKKyAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9
IFBOYU47CiAgICAgCiAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3VibGUpKTsKICAgICByZXR1
cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKQEAgLTc2MCw3ICs3NjAsNyBAQCBD
b250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydEludDMyCiAgICAgICAgIGRvdWJsZSog
Y3VycmVudEFzRG91YmxlID0gYml0d2lzZV9jYXN0PGRvdWJsZSo+KGN1cnJlbnQpOwogICAgICAg
ICBKU1ZhbHVlIHYgPSBjdXJyZW50LT5nZXQoKTsKICAgICAgICAgaWYgKCF2KSB7Ci0gICAgICAg
ICAgICAqY3VycmVudEFzRG91YmxlID0gUU5hTjsKKyAgICAgICAgICAgICpjdXJyZW50QXNEb3Vi
bGUgPSBQTmFOOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgQVNT
RVJUKHYuaXNJbnQzMigpKTsKQEAgLTEzMjAsNyArMTMyMCw3IEBAIGJvb2wgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0MKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0
aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0
b3JMZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBidXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CisgICAgICAgIGJ1dHRlcmZseS0+Y29udGln
dW91c0RvdWJsZSgpW2ldID0gUE5hTjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
ICAgICAKQEAgLTI0MzMsNyArMjQzMyw3IEBAIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNs
b3coVk0mIHZtLCAKIAogICAgIGlmIChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKSB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFZlY3Rvckxlbmd0aDsgaSA8IG5ld1ZlY3Rvckxlbmd0
aDsgKytpKQotICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5kYXRh
KClbaV0gPSBRTmFOOworICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUo
KS5kYXRhKClbaV0gPSBQTmFOOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHJldmlzaW9uIDE2NzM3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTksNyArMjE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dQogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBhcmdzQ291bnQ7ICsraykgewogICAgICAg
ICBkb3VibGUgdmFsID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaykudG9OdW1iZXIoZXhlYyk7
CiAgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFFO
YU47CisgICAgICAgICAgICByZXN1bHQgPSBQTmFOOwogICAgICAgICB9IGVsc2UgaWYgKHZhbCA+
IHJlc3VsdCB8fCAoIXZhbCAmJiAhcmVzdWx0ICYmICFzdGQ6OnNpZ25iaXQodmFsKSkpCiAgICAg
ICAgICAgICByZXN1bHQgPSB2YWw7CiAgICAgfQpAQCAtMjMzLDcgKzIzMyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnUKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAw
OyBrIDwgYXJnc0NvdW50OyArK2spIHsKICAgICAgICAgZG91YmxlIHZhbCA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGV4ZWMpOwogICAgICAgICBpZiAoc3RkOjppc25hbih2
YWwpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBRTmFOOworICAgICAgICAgICAgcmVzdWx0ID0g
UE5hTjsKICAgICAgICAgfSBlbHNlIGlmICh2YWwgPCByZXN1bHQgfHwgKCF2YWwgJiYgIXJlc3Vs
dCAmJiBzdGQ6OnNpZ25iaXQodmFsKSkpCiAgICAgICAgICAgICByZXN1bHQgPSB2YWw7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHVyZU5hTi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1cmVOYU4uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1cmVOYU4uaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgUHVyZU5hTl9oCisjZGVmaW5lIFB1cmVOYU5faAorCisjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCisvLyBOYU4gKG5vdC1hLW51bWJlcikgZG91YmxlIHZhbHVlcyBh
cmUgY2VudHJhbCB0byBob3cgSmF2YVNjcmlwdENvcmUgZW5jb2RlcyBKYXZhU2NyaXB0CisvLyB2
YWx1ZXMgKEpTVmFsdWVzKS4gIEFsbCB2YWx1ZXMsIGluY2x1ZGluZyBpbnRlZ2VycyBhbmQgbm9u
LW51bWVyaWMgdmFsdWVzLCBhcmUgYWx3YXlzCisvLyBlbmNvZGVkIHVzaW5nIHRoZSBJRUVFIDg1
NCBiaW5hcnkgZG91YmxlIGZvcm1hdC4gIE5vbi1kb3VibGUgdmFsdWVzIGFyZSBlbmNvZGVkIHVz
aW5nCisvLyBhIE5hTiB3aXRoIHRoZSBzaWduIGJpdCBzZXQuICBUaGUgNTEtYml0IHBheWxvYWQg
aXMgdGhlbiB1c2VkIGZvciBlbmNvZGluZyB0aGUgYWN0dWFsCisvLyB2YWx1ZSAtIGJlIGl0IGFu
IGludGVnZXIgb3IgYSBwb2ludGVyIHRvIGFuIG9iamVjdCwgb3Igc29tZXRoaW5nIGVsc2UuIEJ1
dCB3ZSBvbmx5CisvLyBtYWtlIHVzZSBvZiB0aGUgbG93IDQ5IGJpdHMgYW5kIHRoZSB0b3AgMTUg
Yml0cyBiZWluZyBhbGwgc2V0IHRvIDEgaXMgdGhlIGluZGljYXRvcgorLy8gdGhhdCBhIHZhbHVl
IGlzIG5vdCBhIGRvdWJsZS4gVG9wIDE1IGJpdHMgYmVpbmcgc2V0IHRvIDEgYWxzbyBpbmRpY2F0
ZSBhIHNpZ25lZAorLy8gc2lnbmFsaW5nIE5hTiB3aXRoIHNvbWUgYWRkaXRpb25hbCBOYU4gcGF5
bG9hZCBiaXRzLgorLy8KKy8vIE91ciB1c2Ugb2YgTmFOIGVuY29kaW5nIG1lYW5zIHRoYXQgd2Ug
aGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggaG93IHdlIHVzZSBOYU5zIGZvcgorLy8gb3JkaW5hcnkg
ZG91Ymxlcy4gRm9yIGV4YW1wbGUsIGl0IHdvdWxkIGJlIHdyb25nIHRvIGV2ZXIgdXNlIGEgTmFO
IHRoYXQgaGFzIHRoZSB0b3AKKy8vIDE1IGJpdHMgc2V0LCBhcyB0aGF0IHdvdWxkIGxvb2sgbGlr
ZSBhIG5vbi1kb3VibGUgdmFsdWUgdG8gSlNDLgorLy8KKy8vIFdlIGNhbiB0cnVzdCB0aGF0IG9u
IGFsbCBvZiB0aGUgaGFyZHdhcmUvT1MgY29tYmluYXRpb25zIHRoYXQgd2UgY2FyZSBhYm91dCwK
Ky8vIE5hTi1wcm9kdWNpbmcgbWF0aCBvcGVyYXRpb25zIG5ldmVyIHByb2R1Y2UgYSBOYU4gdGhh
dCBsb29rcyBsaWtlIGEgdGFnZ2VkIHZhbHVlLiBCdXQKKy8vIGlmIHdlJ3JlIGV2ZXIgaW4gYSBz
aXR1YXRpb24gd2hlcmUgd2Ugd29ycnkgYWJvdXQgaXQsIHdlIGNhbiB1c2UgcHVyaWZ5TmFOKCkg
dG8gZ2V0IGEKKy8vIE5hTiB0aGF0IGRvZXNuJ3QgbG9vayBsaWtlIGEgdGFnZ2VkIG5vbi1kb3Vi
bGUgdmFsdWUuIFRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlIGRvZXNuJ3QKKy8vIGRpc3Rpbmd1aXNo
IGJldHdlZW4gZGlmZmVyZW50IGZsYXZvcnMgb2YgTmFOIGFuZCB0aGVyZSBpcyBubyB3YXkgdG8g
ZGV0ZWN0IHdoYXQga2luZAorLy8gb2YgTmFOIHlvdSBoYXZlIC0gaGVuY2Ugc28gbG9uZyBhcyBh
bGwgZG91YmxlIE5hTnMgYXJlIHB1cmlmaWVkIHRoZW4gb3VyIHRhZ2dpbmcKKy8vIHNjaGVtZSBy
ZW1haW5zIHNvdW5kLgorLy8KKy8vIEl0J3Mgd29ydGggbm90aW5nIHRoYXQgdGhlcmUgYXJlIGNh
c2VzLCBsaWtlIHNpbigpLCB0aGF0IHdpbGwgYWxtb3N0IHByb2R1Y2UgYSBOYU4KKy8vIHRoYXQg
YnJlYWtzIHVzLiBzaW4oLWluZikgcmV0dXJucyAweGZmZjgwMDAwMDAwMDAwMDAuIFRoaXMgZG9l
c24ndCBicmVhayB1cyBiZWNhdXNlCisvLyBub3QgYWxsIG9mIHRoZSB0b3AgMTUgYml0cyBhcmUg
c2V0LiBCdXQgaXQncyB2ZXJ5IGNsb3NlLiBIZW5jZSBvdXIgYXNzdW1wdGlvbnMgYWJvdXQKKy8v
IE5hTiBhcmUganVzdCBhYm91dCB0aGUgbW9zdCBhZ2dyZXNzaXZlIGFzc3VtcHRpb25zIHdlIGNv
dWxkIHBvc3NpYmx5IG1ha2Ugd2l0aG91dAorLy8gaGF2aW5nIHRvIGNhbGwgcHVyaWZ5TmFOKCkg
aW4gc3VycHJpc2luZyBwbGFjZXMuCisvLworLy8gRm9yIG5hbWluZyBwdXJwb3Nlcywgd2Ugc2F5
IHRoYXQgYSBOYU4gaXMgInB1cmUiIGlmIGl0IGlzIHNhZmUgdG8gdGFnLCBpbiB0aGUgc2Vuc2UK
Ky8vIHRoYXQgZG9pbmcgc28gd291bGQgcmVzdWx0IGluIGEgdGFnZ2VkIHZhbHVlIHRoYXQgd291
bGQgYmFzZSB0aGUgImFyZSB5b3UgYSBkb3VibGUiCisvLyB0ZXN0LiBXZSBzYXkgdGhhdCBhIE5h
TiBpcyAiaW1wdXJlIiBpZiBhdHRlbXB0aW5nIHRvIHRhZyBpdCB3b3VsZCByZXN1bHQgaW4gYSB2
YWx1ZQorLy8gdGhhdCB3b3VsZCBsb29rIGxpa2Ugc29tZXRoaW5nIG90aGVyIHRoYW4gYSBkb3Vi
bGUuCisKKy8vIFJldHVybnMgc29tZSBraW5kIG9mIHB1cmUgTmFOLgoraW5saW5lIGRvdWJsZSBw
dXJlTmFOKCkKK3sKKyAgICAvLyBCZSBzdXJlIHRoYXQgd2UgcmV0dXJuIGV4YWN0bHkgdGhlIGtp
bmQgb2YgTmFOIHRoYXQgaXMgc2FmZS4gV2UgZW5naW5lZXIgdGhlIGJpdHMKKyAgICAvLyBvdXJz
ZWx2ZXMgdG8gZW5zdXJlIHRoYXQgaXQncyAhaXNJbXB1cmVOYU4oKS4gRldJVywgdGhpcyBpcyB3
aGF0CisgICAgLy8gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgcmV0dXJucyBv
biBNYWMvWDg2XzY0LiBCdXQgQUZBSUNUIHRoZXJlIGlzCisgICAgLy8gbm8gZ3VhcmFudGVlIHRo
YXQgcXVpZXRfTmFOIHdvdWxkIHJldHVybiBhIHB1cmVOYU4gb24gYWxsIHBsYXRmb3Jtcy4gRm9y
IGV4YW1wbGUsCisgICAgLy8gdGhlIGRvY3MgYXBwZWFyIHRvIGltcGx5IHRoYXQgcXVpZXRfTmFO
IGNvdWxkIGV2ZW4gcmV0dXJuIGEgZG91YmxlIHdpdGggdGhlCisgICAgLy8gc2lnbmFsaW5nIGJp
dCBzZXQgb24gaGFyZHdhcmUgdGhhdCBkb2Vzbid0IGRvIHNpZ25hbGluZy4gVGhhdCB3b3VsZCBw
cm9iYWJseQorICAgIC8vIG5ldmVyIGhhcHBlbiwgYnV0IGl0J3MgaGVhbHRoeSB0byBiZSBwYXJh
bm9pZC4KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4oMHg3ZmY4MDAwMDAwMDAwMDAw
bGwpOworfQorCisjZGVmaW5lIFBOYU4gKHB1cmVOYU4oKSkKKworaW5saW5lIGJvb2wgaXNJbXB1
cmVOYU4oZG91YmxlIHZhbHVlKQoreworICAgIC8vIFRlc3RzIGlmIHRoZSBkb3VibGUgdmFsdWUg
d291bGQgYnJlYWsgSlNWQUxVRTY0IGVuY29kaW5nLCB3aGljaCBpcyB0aGUgbW9zdAorICAgIC8v
IGFnZ3Jlc3NpdmUga2luZCBvZiBlbmNvZGluZyB0aGF0IHdlIGN1cnJlbnRseSB1c2UuCisgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4odmFsdWUpID49IDB4ZmZmZTAwMDAwMDAwMDAw
MGxsdTsKK30KKworLy8gSWYgdGhlIGdpdmVuIHZhbHVlIGlzIE5hTiB0aGVuIHJldHVybiBhIE5h
TiB0aGF0IGlzIGtub3duIHRvIGJlIHB1cmUuCitpbmxpbmUgZG91YmxlIHB1cmlmeU5hTihkb3Vi
bGUgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlICE9IHZhbHVlKQorICAgICAgICByZXR1cm4gUE5h
TjsKKyAgICByZXR1cm4gdmFsdWU7Cit9ICAgCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gUHVyZU5hTl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
ZEFycmF5QWRhcHRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAkocmV2aXNpb24gMTY3Mzc1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3JzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDkgKzg5LDcgQEAgc3RydWN0IEZsb2F0VHlwZWRBcnJheUFkYXB0b3IgewogICAgIAog
ICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAg
aWYgKHZhbHVlICE9IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGpzRG91YmxlTnVtYmVyKFFO
YU4pOwotICAgICAgICByZXR1cm4ganNEb3VibGVOdW1iZXIodmFsdWUpOworICAgICAgICByZXR1
cm4ganNEb3VibGVOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSk7CiAgICAgfQogICAgIAogICAgIHN0
YXRpYyBkb3VibGUgdG9Eb3VibGUoVHlwZSB2YWx1ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>