<?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>192315</bug_id>
          
          <creation_ts>2018-12-03 11:24:08 -0800</creation_ts>
          <short_desc>Get rid of old, dead Mac video fullscreen code.</short_desc>
          <delta_ts>2019-01-18 12:26:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=193586</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1484420</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-03 11:24:08 -0800</bug_when>
    <thetext>Get rid of old, dead Mac video fullscreen code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484422</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-03 11:27:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/46383932&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484423</commentid>
    <comment_count>2</comment_count>
      <attachid>356388</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-03 11:27:51 -0800</bug_when>
    <thetext>Created attachment 356388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484443</commentid>
    <comment_count>3</comment_count>
      <attachid>356392</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-03 12:22:40 -0800</bug_when>
    <thetext>Created attachment 356392
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484462</commentid>
    <comment_count>4</comment_count>
      <attachid>356392</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-03 13:06:43 -0800</bug_when>
    <thetext>Comment on attachment 356392
Patch for landing

Clearing flags on attachment: 356392

Committed r238815: &lt;https://trac.webkit.org/changeset/238815&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484463</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-03 13:06:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356388</attachid>
            <date>2018-12-03 11:27:51 -0800</date>
            <delta_ts>2018-12-03 12:22:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192315-20181203112750.patch</filename>
            <type>text/plain</type>
            <size>59224</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY4MTliOGVlZWM5MzYx
ZDY1MTY0NDIzNmE3Njg5ZDMzZDViNTI1MS4uODYxNDk5ZjA4M2RhMjhjNTczMDE4YTYzMGY2M2Yz
YjNlYjliYzIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTEyLTAzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2Ygb2xkLCBk
ZWFkIE1hYyB2aWRlbyBmdWxsc2NyZWVuIGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
OjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorCiAyMDE4LTExLTI1ICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBVc2UgZmxvYXQgYm94J3Mg
bWFyZ2luIGJveCB0byBhZGp1c3QgdGhlIGxpbmUgY29uc3RyYWludHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCmluZGV4IDIwOWQ2MjU0NWM4MzcwYjllMzNmOGQ1YTNiZjA1NmFlYjAyMTI3YTIuLjY2MjM4
MDA4MzJjNDY4ZmFkMjFmM2M0YzRmMDFhMDliZjgzMzgwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTItMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBvbGQsIGRlYWQgTWFjIHZpZGVvIGZ1bGxzY3Jl
ZW4gY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MjMxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMTEtMTcg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE5ldHdvcms6IGFkZCBidXR0b24gdG8gc2hvdyBzeXN0ZW0gY2VydGlmaWNhdGUgZGlhbG9n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmRhYzYwOWEwNzZhZjZhMTFlOWYwODI2
ZTU1MTg4NWU4Y2IzOTczNS4uZjQ4ODg1ODFjMjZiNTRkMWY5ZTUzYWQ0MzA2ZDc0YjU4NzY2YjY5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4LTEy
LTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQg
b2Ygb2xkLCBkZWFkIE1hYyB2aWRlbyBmdWxsc2NyZWVuIGNvZGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgTWFjLW9ubHkgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlciBhbmQgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxl
ciBkZXBlbmQgdXBvbiBRVEtpdCwgd2hpY2gKKyAgICAgICAgaXMgbm8gbG9uZ2VyIHN1cHBvcnRl
ZCBpbiB0aGUgTWFjIHBvcnQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfZW50ZXJWaWRl
b0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQ6bW9kZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZXhpdFZpZGVvRnVsbHNjcmVlbl0pOgorCiAyMDE4LTExLTI1ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW5zZXJ0
IGVkaXRhYmxlIGltYWdlcyB3aXRoIGEgZ2VzdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpp
bmRleCA1YjAzOTg3OGY2YWI5MTBjZjZhODYzNTA2OWVmYjBiYjRkN2M4OWIyLi41ZDE2YzY2ZGFl
ZTMyY2I2NTA2NmM0MDExZGZmNThlN2Q0N2I3MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQpAQCAtNDA3LDggKzQwNyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbQogICAgIHBsYXRmb3JtL21hYy9XZWJHTEJs
YWNrbGlzdC5tbQogICAgIHBsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMu
bW0KLSAgICBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQotICAg
IHBsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCiAg
ICAgcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQogICAgIHBsYXRmb3JtL21hYy9X
aWRnZXRNYWMubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA0Njg5YTU1MTM3YjcyMzRiMjYxOTZiYjRmYTA1ZDQ2
YjA4MDNmODkzLi40ZTYxOTc1NmMzOGI5OGY4ZTJiNWU4MTk4YzMzMmQ5Y2VjYzNlY2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcApAQCAtNDY4LDE0ICs0NjgsMTMgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICAvLyBGSVhNRTogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlciBhc3N1bWVzIGEgUVRLaXQvUXVpY2tUaW1lIG1lZGlhIGVuZ2lu
ZQorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OmF2S2l0RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbjo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMjM0YTY3ODVjZjNmNzRhY2Y2NWU4OGRlY2RlMmZhYmY4NzNmODVj
Mi4uNTdkN2JkNzZmMmM3ZDQxN2Y1ZmQ0N2U2MjBlOWIyOWE5NzA2Njk1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC03NzQsOCArNzc0LDYgQEAKIAkJQzBDNUIzRUYxMTc3QTRBMDAwMkIwQUVG
IC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQzVCM0VEMTE3N0E0QTAwMDJCMEFFRiAvKiBXZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4ubW0gKi87IH07CiAJCUMxMUVCRjQxMjE0MTlDQ0UwMEQ2NTlFNyAv
KiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzExRUJGM0YyMTQxOUNDRTAwRDY1OUU3IC8qIFdlYlN3aXRjaGlu
Z0dQVUNsaWVudC5jcHAgKi87IH07CiAJCUMxMUVCRjQyMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJT
d2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxMUVCRjQwMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGll
bnQuaCAqLzsgfTsKLQkJQzFEODExMjgyMDJDRDgwMDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlci5tbSAqLzsgfTsKLQkJQzFEODExMkIyMDJDRENDNDAwRUU3NEY5IC8qIFdlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4MTEyOTIwMkNEQ0MyMDBFRTc0RjkgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJQzFEODExMkUyMDJD
RUQwODAwRUU3NEY5IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRDgxMTJEMjAyQ0VEMDcwMEVFNzRGOSAvKiBX
ZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CiAJCUNEOEJGQ0U3MTU1MzEyMjQwMDVBRkIyNSAv
KiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCRkNFNTE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVs
bFNjcmVlbkxpc3RlbmVyLm1tICovOyB9OwogCQlDRDhCRkNFODE1NTMxMjI0MDA1QUZCMjUgLyog
V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDhCRkNFNjE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNj
cmVlbkxpc3RlbmVyLmggKi87IH07CkBAIC0xNTMwLDEwICsxNTI4LDYgQEAKIAkJQzBDNUIzRUQx
MTc3QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRUJGM0YyMTQxOUNDRTAwRDY1OUU3
IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTd2l0
Y2hpbmdHUFVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTFFQkY0
MDIxNDE5Q0NFMDBENjU5RTcgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMUQ4MTEyNjIwMkNEN0ZFMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMxRDgxMTI3MjAyQ0Q4
MDAwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzFEODExMjkyMDJDRENDMjAwRUU3
NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMUQ4MTEyQTIw
MkNEQ0MzMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDgxMTJD
MjAyQ0VEMDYwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMxRDgxMTJEMjAyQ0VEMDcwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dB
bmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEJGQ0U1MTU1MzEy
MjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDgzLDEwICsyMDc3LDYgQEAKIAkJCQlGODM0
QUFENjBFNjRCMUM3MDBFMjczN0MgLyogV2ViVGV4dEl0ZXJhdG9yLm1tICovLAogCQkJCTUxNUUy
N0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8sCiAJCQkJNjVBN0Q0NEEw
NTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRlLmggKi8sCi0JCQkJQzFEODEx
MjYyMDJDRDdGRTAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLywK
LQkJCQlDMUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbSAqLywKLQkJCQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLAotCQkJCUMxRDgxMTI5MjAyQ0RDQzIwMEVF
NzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovLAogCQkJ
CTUxQThCNTc5MDQyODM0RjcwMENBMkQzQSAvKiBXZWJWaWV3LmggKi8sCiAJCQkJNTFBOEI1N0Ew
NDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi8sCiAJCQkJQkMyRTQ2NEIwRkQ4QTk2ODAw
QTlEOURFIC8qIFdlYlZpZXdEYXRhLmggKi8sCkBAIC0yNzg1LDcgKzI3NzUsNiBAQAogCQkJCTkz
RDQzNkFCMUQ1N0FCRUUwMEFCODVFQSAvKiBET01FeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzRDQzNkFDMUQ1N0FCRUUwMEFCODVFQSAvKiBET01FeHRlbnNpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0Q0MzZBRDFENTdBQkVFMDBBQjg1RUEgLyogRE9NRmlsZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJRTE1MzFCRDgyMTg3Qjk1NDAwMkUzRjgxIC8qIE5TVVJMRG93bmxvYWRTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzNkFGMUQ1N0FCRUUwMEFCODVFQSAvKiBET01GaWxl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzNkIwMUQ1N0FCRUUwMEFCODVFQSAv
KiBET01GaWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM2QjIxRDU3QUJFRTAwQUI4
NUVBIC8qIERPTUZpbGVMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0Miw2ICsy
OTMxLDcgQEAKIAkJCQkxQUFGNUNFQTBFRERFMUZFMDA4RDg4M0QgLyogTmV0c2NhcGVQbHVnaW5I
b3N0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjVDRUMwRURERTFGRTAwOEQ4ODNE
IC8qIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGNUNF
RTBFRERFMUZFMDA4RDg4M0QgLyogTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMTUzMUJEODIxODdCOTU0MDAyRTNGODEgLyogTlNVUkxEb3dubG9hZFNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3OUIxRDU3QUJFRjAwQUI4NUVBIC8qIE9iakNF
dmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0Mzc5RDFENTdBQkVGMDBBQjg1
RUEgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRTQ0
RjRBMjA2RDcwRUEwMDNFRkQwMSAvKiBQaW5nSGFuZGxlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2
ODksOCArMzY3OSw2IEBACiAJCQkJOTM5ODEwQkUwODI0QkYwMTAwOERGMDM4IC8qIFdlYlVSTHNX
aXRoVGl0bGVzLm0gaW4gU291cmNlcyAqLywKIAkJCQlDMEM1QjNFRjExNzdBNEEwMDAyQjBBRUYg
LyogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDYxOERG
RjkxREVGNzYwQTAwMzNDM0FBIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJQzFEODExMjgyMDJDRDgwMDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQlDMUQ4MTEyQjIwMkNEQ0M0MDBF
RTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzOTgxMTA3MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJWaWV3Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMyRTQ2NEUwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzMEMxMkMxQjJDNURGNzAwREVBMDFEIC8qIFdlYlZpZXdH
cm91cC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NzU3OGJmYzAwMjY0ZTRmNDFiNWVlOWY2ODhhMjZj
MjhhZDQ0YTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU8pCi0KLSNpbXBvcnQgPEFwcEtpdC9OU1dp
bmRvd0NvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLX0KLQotQGNsYXNzIFdlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXI7Ci1AY2xhc3MgV2ViV2luZG93RmFkZUFuaW1hdGlv
bjsKLQotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIDogTlNXaW5kb3dD
b250cm9sbGVyIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudD4gX3ZpZGVv
RWxlbWVudDsKLQotICAgIE5TV2luZG93ICpfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3c7IC8v
IChyZXRhaW4pCi0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAqX2h1
ZENvbnRyb2xsZXI7IC8vIChyZXRhaW4pCi0KLSAgICBXZWJXaW5kb3dGYWRlQW5pbWF0aW9uICpf
ZmFkZUFuaW1hdGlvbjsgLy8gKHJldGFpbikKLQotICAgIEJPT0wgX2lzRW5kaW5nRnVsbHNjcmVl
bjsKLSAgICBCT09MIF9mb3JjZURpc2FibGVBbmltYXRpb247Ci19Ci0KLS0gKHZvaWQpc2V0Vmlk
ZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50ICopdmlkZW9FbGVtZW50OwotLSAo
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCAqKXZpZGVvRWxlbWVudDsKLQotLSAodm9pZCllbnRl
ckZ1bGxzY3JlZW46KE5TU2NyZWVuICopc2NyZWVuOwotLSAodm9pZClleGl0RnVsbHNjcmVlbjsK
LQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzZlMDcxNjRjYWYwNWNhNDgxOWUzMGE3ODZkY2M4YWQ4M2Q2
MDUzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw1MTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIgotCi0jaWYgRU5BQkxFKFZJREVP
KSAmJiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYldpbmRvd0FuaW1hdGlvbi5oIgotI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJM
YXllci5oPgotI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1M
VmlkZW9FbGVtZW50Lmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHBhbC9z
eXN0ZW0vU2xlZXBEaXNhYmxlci5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCi0KLVNPRlRfTElOS19GUkFNRVdPUksoQVZGb3VuZGF0aW9uKQotU09GVF9MSU5LX0NMQVNT
KEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXllcikKLQotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxz
Y3JlZW5XaW5kb3cgOiBOU1dpbmRvdzxOU0FuaW1hdGlvbkRlbGVnYXRlPiB7Ci0gICAgU0VMIF9j
b250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQ7Ci0gICAgV2ViV2luZG93U2NhbGVBbmltYXRp
b24gKl9mdWxsc2NyZWVuQW5pbWF0aW9uOyAvLyAocmV0YWluKQotfQotLSAodm9pZClhbmltYXRl
RnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1JlY3QpZW5kUmVjdCB3aXRoU3Vi
QW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBjb250cm9sbGVyQWN0aW9uOihT
RUwpY29udHJvbGxlckFjdGlvbjsKLUBlbmQKLQotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyICgpIDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVs
ZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyCi0KLS0gKGlkKWluaXQKLXsKLSAgICAvLyBEbyBub3QgZGVmZXIgd2luZG93IGNyZWF0aW9u
LCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChuZWVkZWQgYnkgV2ViV2lu
ZG93U2NhbGVBbmltYXRpb24pLgotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYlZpZGVvRnVs
bHNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU1plcm9SZWN0IHN0eWxl
TWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJl
ZCBkZWZlcjpOT107Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRvdzp3aW5kb3ddOwot
ICAgIFt3aW5kb3cgcmVsZWFzZV07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmls
OwotICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOwotICAgIHJldHVybiBzZWxmOwotICAgIAotfQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKCFfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5k
b3cpOwotICAgIEFTU0VSVCghX2ZhZGVBbmltYXRpb24pOwotICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07Ci0gICAgW3N1cGVyIGRl
YWxsb2NdOwotfQotCi0tIChXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKilmdWxsc2NyZWVuV2lu
ZG93Ci17Ci0gICAgcmV0dXJuIChXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKilbc3VwZXIgd2lu
ZG93XTsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRMb2FkCi17Ci0gICAgYXV0byB3aW5kb3cgPSBb
c2VsZiBmdWxsc2NyZWVuV2luZG93XTsKLSAgICBhdXRvIGNvbnRlbnRWaWV3ID0gW3dpbmRvdyBj
b250ZW50Vmlld107Ci0KLSAgICBbd2luZG93IHNldEhhc1NoYWRvdzpZRVNdOyAvLyBUaGlzIGlz
IG5pY2VyIHdpdGggYSBzaGFkb3cuCi0gICAgW3dpbmRvdyBzZXRMZXZlbDpOU1BvcFVwTWVudVdp
bmRvd0xldmVsLTFdOwotCi0gICAgW2NvbnRlbnRWaWV3IHNldExheWVyOltDQUxheWVyIGxheWVy
XV07Ci0gICAgW2NvbnRlbnRWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsKLQotICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IoYXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6KSBuYW1lOk5TQXBwbGljYXRpb25E
aWRSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKLSAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKGFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczopIG5hbWU6TlNBcHBs
aWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBw
XTsKLX0KLQotLSAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCAqKXZpZGVvRWxlbWVudAotewot
ICAgIHJldHVybiBfdmlkZW9FbGVtZW50LmdldCgpOwotfQotCi0vLyBGSVhNRTogVGhpcyBtZXRo
b2QgaXMgbm90IHJlYWxseSBhIHNldHRlci4gVGhlIGNhbGxlciByZWxpZXMgb24gaXRzIHNpZGUg
ZWZmZWN0cywgYW5kIGl0J3MKLS8vIGNhbGxlZCBvbmNlIGVhY2ggdGltZSB3ZSBlbnRlciBmdWxs
IHNjcmVlbi4gU28gaXQgc2hvdWxkIGhhdmUgYSBkaWZmZXJlbnQgbmFtZS4KLS0gKHZvaWQpc2V0
VmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50ICopdmlkZW9FbGVtZW50Ci17
Ci0gICAgQVNTRVJUKHZpZGVvRWxlbWVudCk7Ci0gICAgX3ZpZGVvRWxlbWVudCA9IHZpZGVvRWxl
bWVudDsKLQotICAgIGlmICghW3NlbGYgaXNXaW5kb3dMb2FkZWRdKQotICAgICAgICByZXR1cm47
Ci0gICAgYXV0byBjb3JlUGxheWVyID0gdmlkZW9FbGVtZW50LT5wbGF5ZXIoKTsKLSAgICBpZiAo
IWNvcmVQbGF5ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHBsYXllciA9IGNvcmVQbGF5
ZXItPm9iakNBVkZvdW5kYXRpb25BVlBsYXllcigpOwotICAgIGlmICghcGxheWVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIGNvbnRlbnRWaWV3ID0gW1tzZWxmIGZ1bGxzY3JlZW5XaW5k
b3ddIGNvbnRlbnRWaWV3XTsKLQotICAgIGF1dG8gbGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxh
eWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbbGF5ZXIgc2V0UGxheWVyOnBsYXllcl07
Ci0KLSAgICBbY29udGVudFZpZXcgc2V0TGF5ZXI6bGF5ZXIuZ2V0KCldOwotCi0gICAgLy8gRklY
TUU6IFRoZSB3aW5kb3dEaWRMb2FkIG1ldGhvZCBhbHJlYWR5IGNhbGxlZCB0aGlzLCBzbyBpdCBz
aG91bGQKLSAgICAvLyBub3QgYmUgbmVjZXNzYXJ5IHRvIGRvIGl0IGFnYWluIGhlcmUuCi0gICAg
W2NvbnRlbnRWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGNh
biBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIGFuZCB3b24ndCBuZWNlc3NhcmlseSBiZQotICAg
IC8vIGJhbGFuY2VkIGJ5IGNhbGxzIHRvIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuIGluIHNvbWUg
Y2FzZXMsIHNvIGl0Ci0gICAgLy8gd291bGQgYmUgYmV0dGVyIHRvIGNoYW5nZSB0aGluZ3Mgc28g
dGhlIG9ic2VydmVyIGlzIHJlbGlhYmx5IGFkZGVkCi0gICAgLy8gb25seSBvbmNlIGFuZCBndWFy
YW50ZWVkIHJlbW92ZWQgZXZlbiBpbiB1bnVzdWFsIGVkZ2UgY2FzZXMuCi0gICAgW3BsYXllciBh
ZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOjAgY29udGV4dDpudWxs
cHRyXTsKLX0KLQotLSAoQ0dGbG9hdCljbGVhckZhZGVBbmltYXRpb24KLXsKLSAgICBbX2ZhZGVB
bmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0gICAgQ0dGbG9hdCBwcmV2aW91c0FscGhhID0gW19m
YWRlQW5pbWF0aW9uIGN1cnJlbnRBbHBoYV07Ci0gICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRv
dzpuaWxdOwotICAgIFtfZmFkZUFuaW1hdGlvbiByZWxlYXNlXTsKLSAgICBfZmFkZUFuaW1hdGlv
biA9IG5pbDsKLSAgICByZXR1cm4gcHJldmlvdXNBbHBoYTsKLX0KLQotLSAodm9pZCl3aW5kb3dE
aWRFeGl0RnVsbHNjcmVlbgotewotICAgIENBTGF5ZXIgKmxheWVyID0gW1tbc2VsZiB3aW5kb3dd
IGNvbnRlbnRWaWV3XSBsYXllcl07Ci0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOmdldEFW
UGxheWVyTGF5ZXJDbGFzcygpXSkKLSAgICAgICAgW1soQVZQbGF5ZXJMYXllciAqKWxheWVyIHBs
YXllcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAicmF0ZSJdOwotCi0gICAgW3Nl
bGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKLSAgICBbW3NlbGYgd2luZG93XSBjbG9zZV07Ci0gICAg
W3NlbGYgc2V0V2luZG93Om5pbF07Ci0gICAgW3NlbGYgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxs
c2NyZWVuXTsgICAKLSAgICBbX2h1ZENvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBb
X2h1ZENvbnRyb2xsZXIgcmVsZWFzZV07Ci0gICAgX2h1ZENvbnRyb2xsZXIgPSBuaWw7Ci0gICAg
W19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBjbG9zZV07Ci0gICAgW19iYWNrZ3JvdW5kRnVs
bHNjcmVlbldpbmRvdyByZWxlYXNlXTsKLSAgICBfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cg
PSBuaWw7Ci0gICAgCi0gICAgW3NlbGYgYXV0b3JlbGVhc2VdOyAvLyBBc3NvY2lhdGVkIC1yZXRh
aW4gaXMgaW4gLWV4aXRGdWxsc2NyZWVuLgotICAgIF9pc0VuZGluZ0Z1bGxzY3JlZW4gPSBOTzsK
LX0KLQotLSAodm9pZCl3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW4KLXsKLSAgICBbc2VsZiBjbGVh
ckZhZGVBbmltYXRpb25dOwotCi0gICAgQVNTRVJUKCFfaHVkQ29udHJvbGxlcik7Ci0gICAgX2h1
ZENvbnRyb2xsZXIgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgYWxs
b2NdIGluaXRdOwotICAgIFtfaHVkQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpzZWxmXTsKLQotICAg
IFtzZWxmIHVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbl07Ci0gICAgW05TQ3Vyc29yIHNl
dEhpZGRlblVudGlsTW91c2VNb3ZlczpZRVNdOwotICAgIAotICAgIC8vIEdpdmUgdGhlIEhVRCBr
ZXlib2FyZCBmb2N1cyBpbml0aWFsbHkKLSAgICBbX2h1ZENvbnRyb2xsZXIgZmFkZVdpbmRvd0lu
XTsKLX0KLQotLSAoTlNSZWN0KXZpZGVvRWxlbWVudFJlY3QKLXsKLSAgICByZXR1cm4gX3ZpZGVv
RWxlbWVudC0+c2NyZWVuUmVjdCgpOwotfQotCi0tICh2b2lkKWFwcGxpY2F0aW9uRGlkUmVzaWdu
QWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCi17ICAgCi0gICAgVU5VU0VEX1BB
UkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgTlNXaW5kb3cqIGZ1bGxzY3JlZW5XaW5kb3cgPSBbc2Vs
ZiBmdWxsc2NyZWVuV2luZG93XTsKLQotICAgIC8vIFJlcGxpY2F0ZSB0aGUgUXVpY2tUaW1lIFBs
YXllciAoWCkgYmVoYXZpb3Igd2hlbiBsb3NpbmcgYWN0aXZlIGFwcGxpY2F0aW9uIHN0YXR1czoK
LSAgICAvLyBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gdGhlIG1haW4gc2NyZWVuPyAoTm90ZTog
dGhpcyBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgb25seSBhIAotICAgIC8vIHNpbmdsZSBzY3JlZW4g
aXMgYXZhaWxhYmxlLikgIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiBvbiB0aGUgY3VycmVudCBz
cGFjZT8gSUZGIHNvLCAKLSAgICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBtb2RlLiAgICAKLSAg
ICBpZiAoZnVsbHNjcmVlbldpbmRvdy5zY3JlZW4gPT0gW05TU2NyZWVuIHNjcmVlbnNdWzBdICYm
IGZ1bGxzY3JlZW5XaW5kb3cub25BY3RpdmVTcGFjZSkKLSAgICAgICAgW3NlbGYgcmVxdWVzdEV4
aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjpOT107Ci19Ci0KLQotLy8gTUFSSzogLQotLy8gTUFS
SzogRXhwb3NlZCBJbnRlcmZhY2UKLQotc3RhdGljIE5TUmVjdCBmcmFtZUV4cGFuZGVkVG9SYXRp
b09mRnJhbWUoTlNSZWN0IGZyYW1lVG9FeHBhbmQsIE5TUmVjdCBmcmFtZSkKLXsKLSAgICAvLyBL
ZWVwIGEgY29uc3RyYWluZWQgYXNwZWN0IHJhdGlvIGZvciB0aGUgZGVzdGluYXRpb24gd2luZG93
Ci0gICAgTlNSZWN0IHJlc3VsdCA9IGZyYW1lVG9FeHBhbmQ7Ci0gICAgQ0dGbG9hdCBuZXdSYXRp
byA9IGZyYW1lLnNpemUud2lkdGggLyBmcmFtZS5zaXplLmhlaWdodDsKLSAgICBDR0Zsb2F0IG9y
aWdpbmFsUmF0aW8gPSBmcmFtZVRvRXhwYW5kLnNpemUud2lkdGggLyBmcmFtZVRvRXhwYW5kLnNp
emUuaGVpZ2h0OwotICAgIGlmIChuZXdSYXRpbyA+IG9yaWdpbmFsUmF0aW8pIHsKLSAgICAgICAg
Q0dGbG9hdCBuZXdXaWR0aCA9IG5ld1JhdGlvICogZnJhbWVUb0V4cGFuZC5zaXplLmhlaWdodDsK
LSAgICAgICAgQ0dGbG9hdCBkaWZmID0gbmV3V2lkdGggLSBmcmFtZVRvRXhwYW5kLnNpemUud2lk
dGg7Ci0gICAgICAgIHJlc3VsdC5zaXplLndpZHRoID0gbmV3V2lkdGg7Ci0gICAgICAgIHJlc3Vs
dC5vcmlnaW4ueCAtPSBkaWZmIC8gMjsKLSAgICB9IGVsc2UgewotICAgICAgICBDR0Zsb2F0IG5l
d0hlaWdodCA9IGZyYW1lVG9FeHBhbmQuc2l6ZS53aWR0aCAvIG5ld1JhdGlvOwotICAgICAgICBD
R0Zsb2F0IGRpZmYgPSBuZXdIZWlnaHQgLSBmcmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0OwotICAg
ICAgICByZXN1bHQuc2l6ZS5oZWlnaHQgPSBuZXdIZWlnaHQ7Ci0gICAgICAgIHJlc3VsdC5vcmln
aW4ueSAtPSBkaWZmIC8gMjsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGlj
IE5TV2luZG93ICpjcmVhdGVCYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhOU1JlY3QgZnJhbWUs
IGludCBsZXZlbCkKLXsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpmcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFz
ayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOwotICAgIFt3aW5kb3cg
c2V0T3BhcXVlOllFU107Ci0gICAgW3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3Ig
YmxhY2tDb2xvcl1dOwotICAgIFt3aW5kb3cgc2V0TGV2ZWw6bGV2ZWxdOwotICAgIFt3aW5kb3cg
c2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKLSAgICByZXR1cm4gd2luZG93OwotfQotCi0tICh2
b2lkKXNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOihCT09MKWZhZGVJbgotewot
ICAgIENHRmxvYXQgaW5pdGlhbEFscGhhID0gZmFkZUluID8gMCA6IDE7Ci0gICAgaWYgKF9mYWRl
QW5pbWF0aW9uKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzdXBwb3J0IHF1ZXVpbmcgYW5p
bWF0aW9uIGlmIHRoZSBwcmV2aW91cyBvbmUgaXNuJ3Qgb3ZlciB5ZXQKLSAgICAgICAgaW5pdGlh
bEFscGhhID0gW3NlbGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKLSAgICB9Ci0gICAgaWYgKCFfZm9y
Y2VEaXNhYmxlQW5pbWF0aW9uKQotICAgICAgICBfZmFkZUFuaW1hdGlvbiA9IFtbV2ViV2luZG93
RmFkZUFuaW1hdGlvbiBhbGxvY10gaW5pdFdpdGhEdXJhdGlvbjowLjIgd2luZG93Ol9iYWNrZ3Jv
dW5kRnVsbHNjcmVlbldpbmRvdyBpbml0aWFsQWxwaGE6aW5pdGlhbEFscGhhIGZpbmFsQWxwaGE6
ZmFkZUluID8gMSA6IDBdOwotfQotCi0tICh2b2lkKWVudGVyRnVsbHNjcmVlbjooTlNTY3JlZW4g
KilzY3JlZW4KLXsKLSAgICBpZiAoIXNjcmVlbikKLSAgICAgICAgc2NyZWVuID0gW05TU2NyZWVu
IG1haW5TY3JlZW5dOwotCi0gICAgTlNSZWN0IGVuZEZyYW1lID0gW3NjcmVlbiBmcmFtZV07Ci0g
ICAgTlNSZWN0IGZyYW1lID0gZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZyYW1lKFtzZWxmIHZpZGVv
RWxlbWVudFJlY3RdLCBlbmRGcmFtZSk7Ci0KLSAgICAvLyBDcmVhdGUgYSBibGFjayB3aW5kb3cg
aWYgbmVlZGVkCi0gICAgaWYgKCFfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpCi0gICAgICAg
IF9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyA9IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVu
V2luZG93KFtzY3JlZW4gZnJhbWVdLCBbW3NlbGYgd2luZG93XSBsZXZlbF0tMSk7Ci0gICAgZWxz
ZQotICAgICAgICBbX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93IHNldEZyYW1lOltzY3JlZW4g
ZnJhbWVdIGRpc3BsYXk6Tk9dOwotCi0gICAgW3NlbGYgc2V0dXBGYWRlQW5pbWF0aW9uSWZOZWVk
ZWRBbmRGYWRlSW46WUVTXTsKLSAgICBpZiAoX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikgewotICAg
ICAgICAvLyBUaGlzIHdpbGwgZGlzYWJsZSBzY2FsZSBhbmltYXRpb24KLSAgICAgICAgZnJhbWUg
PSBOU1plcm9SZWN0OwotICAgIH0KLSAgICBbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5pbWF0
ZUZyb21SZWN0OmZyYW1lIHRvUmVjdDplbmRGcmFtZSB3aXRoU3ViQW5pbWF0aW9uOl9mYWRlQW5p
bWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246QHNlbGVjdG9yKHdpbmRvd0RpZEVudGVyRnVsbHNjcmVl
bildOwotCi0gICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBvcmRlcldpbmRvdzpOU1dp
bmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIHdpbmRvd051bWJl
cl1dOwotfQotCi0tICh2b2lkKWV4aXRGdWxsc2NyZWVuCi17Ci0gICAgaWYgKF9pc0VuZGluZ0Z1
bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLSAgICBfaXNFbmRpbmdGdWxsc2NyZWVuID0gWUVT
OwotICAgIFtfaHVkQ29udHJvbGxlciBjbG9zZVdpbmRvd107Ci0KLSAgICBOU1JlY3QgZW5kRnJh
bWUgPSBbc2VsZiB2aWRlb0VsZW1lbnRSZWN0XTsKLQotICAgIFtzZWxmIHNldHVwRmFkZUFuaW1h
dGlvbklmTmVlZGVkQW5kRmFkZUluOk5PXTsKLSAgICBpZiAoX2ZvcmNlRGlzYWJsZUFuaW1hdGlv
bikgewotICAgICAgICAvLyBUaGlzIHdpbGwgZGlzYWJsZSBzY2FsZSBhbmltYXRpb24KLSAgICAg
ICAgZW5kRnJhbWUgPSBOU1plcm9SZWN0OwotICAgIH0KLSAgICAKLSAgICAvLyBXZSBoYXZlIHRv
IHJldGFpbiBvdXJzZWx2ZXMgYmVjYXVzZSB3ZSB3YW50IHRvIGJlIGFsaXZlIGZvciB0aGUgZW5k
IG9mIHRoZSBhbmltYXRpb24uCi0gICAgLy8gSWYgb3VyIG93bmVyIHJlbGVhc2VzIHVzIHdlIGNv
dWxkIGNyYXNoIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLgotICAgIC8vIEJhbGFuY2VkIGluIHdp
bmRvd0RpZEV4aXRGdWxsc2NyZWVuCi0gICAgW3NlbGYgcmV0YWluXTsgICAgCi0KLSAgICBOU1Jl
Y3Qgc3RhcnRGcmFtZSA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKLSAgICBlbmRGcmFtZSA9IGZy
YW1lRXhwYW5kZWRUb1JhdGlvT2ZGcmFtZShlbmRGcmFtZSwgc3RhcnRGcmFtZSk7Ci0KLSAgICBb
W3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5pbWF0ZUZyb21SZWN0OnN0YXJ0RnJhbWUgdG9SZWN0
OmVuZEZyYW1lIHdpdGhTdWJBbmltYXRpb246X2ZhZGVBbmltYXRpb24gY29udHJvbGxlckFjdGlv
bjpAc2VsZWN0b3Iod2luZG93RGlkRXhpdEZ1bGxzY3JlZW4pXTsKLX0KLQotLSAodm9pZClhcHBs
aWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6KE5TTm90aWZpY2F0aW9uKilub3RpZmlj
YXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICAvLyBUaGUgdXNl
ciBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBtYWluIHNjcmVlbiBieSBtb3ZpbmcgdGhlIG1lbnUgYmFy
LCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQKLSAgICAvLyB0aGUgRG9jaydzIHNpemUgb3IgbG9j
YXRpb24sIG9yIHRoZXkgbWF5IGhhdmUgY2hhbmdlZCB0aGUgZnVsbHNjcmVlbiBzY3JlZW4ncyBk
aW1lbnNpb25zLiAgCi0gICAgLy8gVXBkYXRlIG91ciBwcmVzZW50YXRpb24gcGFyYW1ldGVycywg
YW5kIGVuc3VyZSB0aGF0IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgb2NjdXBpZXMgdGhlIAotICAg
IC8vIGVudGlyZSBzY3JlZW46Ci0gICAgW3NlbGYgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2Ny
ZWVuXTsKLSAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpbW1tzZWxmIHdpbmRvd10gc2NyZWVu
XSBmcmFtZV0gZGlzcGxheTpZRVNdOwotfQotCi0tICh2b2lkKXVwZGF0ZU1lbnVBbmREb2NrRm9y
RnVsbHNjcmVlbgotewotICAgIC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIGlz
IGF2YWlsYWJsZSBvbiA+IDEwLjYgb25seToKLSAgICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9u
T3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkRlZmF1bHQ7Ci0gICAg
TlNTY3JlZW4qIGZ1bGxzY3JlZW5TY3JlZW4gPSBbW3NlbGYgd2luZG93XSBzY3JlZW5dOwotCi0g
ICAgaWYgKCFfaXNFbmRpbmdGdWxsc2NyZWVuKSB7Ci0gICAgICAgIC8vIEF1dG8taGlkZSB0aGUg
bWVudSBiYXIgaWYgdGhlIGZ1bGxzY3JlZW5TY3JlZW4gY29udGFpbnMgdGhlIG1lbnUgYmFyOgot
ICAgICAgICAvLyBOT1RFOiBpZiB0aGUgZnVsbHNjcmVlblNjcmVlbiBjb250YWlucyB0aGUgbWVu
dSBiYXIgYnV0IG5vdCB0aGUgZG9jaywgd2UgbXVzdCBzdGlsbCAKLSAgICAgICAgLy8gYXV0by1o
aWRlIHRoZSBkb2NrLCBvciBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCi0gICAgICAgIGlm
IChbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gPT0gZnVsbHNjcmVlblNjcmVl
bikKLSAgICAgICAgICAgIG9wdGlvbnMgfD0gKE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRv
SGlkZU1lbnVCYXIgfCBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrKTsKLSAg
ICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgc2NyZWVuIGNvbnRhaW5zIHRoZSBkb2NrIGJ5
IGNvbXBhcmluZyB0aGUgc2NyZWVuJ3MgZnJhbWUgdG8gaXRzCi0gICAgICAgIC8vIHZpc2libGVG
cmFtZTsgaWYgYSBkb2NrIGlzIHByZXNlbnQsIHRoZSB2aXNpYmxlRnJhbWUgd2lsbCBkaWZmZXIu
IElmIHRoZSBjdXJyZW50IHNjcmVlbgotICAgICAgICAvLyBjb250YWlucyB0aGUgZG9jaywgaGlk
ZSBpdC4KLSAgICAgICAgZWxzZSBpZiAoIU5TRXF1YWxSZWN0cyhbZnVsbHNjcmVlblNjcmVlbiBm
cmFtZV0sIFtmdWxsc2NyZWVuU2NyZWVuIHZpc2libGVGcmFtZV0pKQotICAgICAgICAgICAgb3B0
aW9ucyB8PSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrOwotICAgIH0KLQot
ICAgIE5TQXBwLnByZXNlbnRhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwotfQotCi0vLyBNQVJLOiAt
Ci0vLyBNQVJLOiBXaW5kb3cgY2FsbGJhY2sKLQotLSAodm9pZClfcmVxdWVzdEV4aXQKLXsKLSAg
ICBpZiAoX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgX3ZpZGVvRWxlbWVudC0+ZXhpdEZ1bGxzY3Jl
ZW4oKTsKLSAgICBfZm9yY2VEaXNhYmxlQW5pbWF0aW9uID0gTk87Ci19Ci0KLS0gKHZvaWQpcmVx
dWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjooQk9PTClhbmltYXRpb24KLXsKLSAgICBp
ZiAoX2lzRW5kaW5nRnVsbHNjcmVlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2ZvcmNlRGlz
YWJsZUFuaW1hdGlvbiA9ICFhbmltYXRpb247Ci0gICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBz
ZWxlY3RvcihfcmVxdWVzdEV4aXQpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6MF07Ci0KLX0K
LQotLSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4KLXsKLSAgICBbc2VsZiByZXF1ZXN0RXhp
dEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOllFU107Ci19Ci0KLS0gKHZvaWQpZmFkZUhVREluCi17
Ci0gICAgW19odWRDb250cm9sbGVyIGZhZGVXaW5kb3dJbl07Ci19Ci0KLS0gKHZvaWQpb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3Qg
Y2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKLXsK
LSAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKLSAgICBVTlVTRURfUEFSQU0oY2hhbmdlKTsKLSAg
ICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0KLSAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAi
cmF0ZSJdKQotICAgICAgICBbc2VsZiByYXRlQ2hhbmdlZDpuaWxdOwotfQotCi0tICh2b2lkKXJh
dGVDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAqKXVudXNlZE5vdGlmaWNhdGlvbgotewotICAgIFVO
VVNFRF9QQVJBTSh1bnVzZWROb3RpZmljYXRpb24pOwotICAgIFtfaHVkQ29udHJvbGxlciB1cGRh
dGVSYXRlXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVu
V2luZG93Ci0KLS0gKGlkKWluaXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW50UmVjdCBz
dHlsZU1hc2s6KE5TVUludGVnZXIpYVN0eWxlIGJhY2tpbmc6KE5TQmFja2luZ1N0b3JlVHlwZSli
dWZmZXJpbmdUeXBlIGRlZmVyOihCT09MKWZsYWcKLXsKLSAgICBVTlVTRURfUEFSQU0oYVN0eWxl
KTsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoQ29udGVudFJlY3Q6Y29udGVudFJlY3Qgc3R5
bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpidWZmZXJpbmdUeXBlIGRlZmVy
OmZsYWddOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBbc2VsZiBz
ZXRPcGFxdWU6Tk9dOwotICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVh
ckNvbG9yXV07Ci0gICAgW3NlbGYgc2V0SWdub3Jlc01vdXNlRXZlbnRzOk5PXTsKLSAgICBbc2Vs
ZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZRVNdOwotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBBU1NFUlQoIV9mdWxsc2NyZWVuQW5pbWF0aW9uKTsK
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXIK
LXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKEJPT0wpY2FuQmVjb21lS2V5V2luZG93Ci17Ci0g
ICAgcmV0dXJuIE5POwotfQotCi0tICh2b2lkKW1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50Ci17
Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKLX0KLQotLSAodm9pZCljYW5jZWxPcGVyYXRpb246
KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtbc2VsZiB3aW5k
b3dDb250cm9sbGVyXSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dOwotfQotCi0tICh2b2lkKWFuaW1h
dGVkUmVzaXplRGlkRW5kCi17Ci0gICAgaWYgKF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25F
bmQpCi0gICAgICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSBwZXJmb3JtU2VsZWN0b3I6X2Nv
bnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZF07Ci0gICAgX2NvbnRyb2xsZXJBY3Rpb25PbkFu
aW1hdGlvbkVuZCA9IE5VTEw7Ci19Ci0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYW5pbWF0
ZSBhIGNoYW5nZSBvZiBmcmFtZSByZWN0YW5nbGUKLS8vIFdlIHN1cHBvcnQgcXVldWluZyBhbmlt
YXRpb24sIHRoYXQgbWVhbnMgdGhhdCB3ZSdsbCBjb3JyZWN0bHkKLS8vIGludGVycnVwdCB0aGUg
cnVubmluZyBhbmltYXRpb24sIGFuZCBxdWV1ZSB0aGUgbmV4dCBvbmUuCi0vLwotLSAodm9pZClh
bmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1JlY3QpZW5kUmVjdCB3
aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBjb250cm9sbGVyQWN0
aW9uOihTRUwpY29udHJvbGxlckFjdGlvbgotewotICAgIF9jb250cm9sbGVyQWN0aW9uT25Bbmlt
YXRpb25FbmQgPSBjb250cm9sbGVyQWN0aW9uOwotCi0gICAgQk9PTCB3YXNBbmltYXRpbmcgPSBO
TzsKLSAgICBpZiAoX2Z1bGxzY3JlZW5BbmltYXRpb24pIHsKLSAgICAgICAgd2FzQW5pbWF0aW5n
ID0gWUVTOwotCi0gICAgICAgIC8vIEludGVycnVwdCBhbnkgcnVubmluZyBhbmltYXRpb24uCi0g
ICAgICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKLQotICAgICAgICAv
LyBTYXZlIHRoZSBjdXJyZW50IHJlY3QgdG8gZW5zdXJlIGEgc21vb3RoIHRyYW5zaXRpb24uCi0g
ICAgICAgIHN0YXJ0UmVjdCA9IFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBjdXJyZW50RnJhbWVdOwot
ICAgICAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gcmVsZWFzZV07Ci0gICAgICAgIF9mdWxsc2Ny
ZWVuQW5pbWF0aW9uID0gbmlsOwotICAgIH0KLSAgICAKLSAgICBpZiAoTlNJc0VtcHR5UmVjdChz
dGFydFJlY3QpIHx8IE5TSXNFbXB0eVJlY3QoZW5kUmVjdCkpIHsKLSAgICAgICAgLy8gRmFrZWx5
IGVuZCB0aGUgc3ViYW5pbWF0aW9uLgotICAgICAgICBbc3ViQW5pbWF0aW9uIHNldEN1cnJlbnRQ
cm9ncmVzczoxXTsKLSAgICAgICAgLy8gQW5kIHJlbW92ZSB0aGUgd2VhayBsaW5rIHRvIHRoZSB3
aW5kb3cuCi0gICAgICAgIFtzdWJBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0KLSAgICAgICAg
W3NlbGYgc2V0RnJhbWU6ZW5kUmVjdCBkaXNwbGF5Ok5PXTsKLSAgICAgICAgW3NlbGYgbWFrZUtl
eUFuZE9yZGVyRnJvbnQ6c2VsZl07Ci0gICAgICAgIFtzZWxmIGFuaW1hdGVkUmVzaXplRGlkRW5k
XTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghd2FzQW5pbWF0aW5nKSB7Ci0g
ICAgICAgIC8vIFdlJ2xsIGRvd25zY2FsZSB0aGUgd2luZG93IGR1cmluZyB0aGUgYW5pbWF0aW9u
IGJhc2VkIG9uIHRoZSBoaWdoZXIgcmVzb2x1dGlvbiByZWN0Ci0gICAgICAgIEJPT0wgaGlnaGVy
UmVzb2x1dGlvbklzRW5kUmVjdCA9IHN0YXJ0UmVjdC5zaXplLndpZHRoIDwgZW5kUmVjdC5zaXpl
LndpZHRoICYmIHN0YXJ0UmVjdC5zaXplLmhlaWdodCA8IGVuZFJlY3Quc2l6ZS5oZWlnaHQ7Ci0g
ICAgICAgIFtzZWxmIHNldEZyYW1lOmhpZ2hlclJlc29sdXRpb25Jc0VuZFJlY3QgPyBlbmRSZWN0
IDogc3RhcnRSZWN0IGRpc3BsYXk6Tk9dOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoIV9mdWxs
c2NyZWVuQW5pbWF0aW9uKTsKLSAgICBfZnVsbHNjcmVlbkFuaW1hdGlvbiA9IFtbV2ViV2luZG93
U2NhbGVBbmltYXRpb24gYWxsb2NdIGluaXRXaXRoSGludGVkRHVyYXRpb246MC4yIHdpbmRvdzpz
ZWxmIGluaXRhbEZyYW1lOnN0YXJ0UmVjdCBmaW5hbEZyYW1lOmVuZFJlY3RdOwotICAgIFtfZnVs
bHNjcmVlbkFuaW1hdGlvbiBzZXRTdWJBbmltYXRpb246c3ViQW5pbWF0aW9uXTsKLSAgICBbX2Z1
bGxzY3JlZW5BbmltYXRpb24gc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgCi0gICAgLy8gTWFrZSBz
dXJlIHRoZSBhbmltYXRpb24gaGFzIHNjYWxlZCB0aGUgd2luZG93IGJlZm9yZSBzaG93aW5nIGl0
LgotICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07Ci0gICAg
W3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07Ci0KLSAgICBbX2Z1bGxzY3JlZW5Bbmlt
YXRpb24gc3RhcnRBbmltYXRpb25dOwotfQotCi0tICh2b2lkKWFuaW1hdGlvbkRpZEVuZDooTlNB
bmltYXRpb24gKilhbmltYXRpb24KLXsKLSAgICBpZiAoIVtOU1RocmVhZCBpc01haW5UaHJlYWRd
KSB7Ci0gICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3Io
YW5pbWF0aW9uRGlkRW5kOikgd2l0aE9iamVjdDphbmltYXRpb24gd2FpdFVudGlsRG9uZTpOT107
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGFuaW1hdGlvbiAhPSBfZnVsbHNjcmVl
bkFuaW1hdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhlIGFuaW1hdGlvbiBpcyBu
b3QgcmVhbGx5IG92ZXIgYW5kIHdhcyBpbnRlcnJ1cHRlZAotICAgIC8vIERvbid0IHNlbmQgY29t
cGxldGlvbiBldmVudHMuCi0gICAgaWYgKFthbmltYXRpb24gY3VycmVudFByb2dyZXNzXSA8IDEu
MCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRW5zdXJlIHRoYXQgYW5pbWF0aW9uIChhbmQg
c3ViYW5pbWF0aW9uKSBkb24ndCBrZWVwCi0gICAgLy8gdGhlIHdlYWsgcmVmZXJlbmNlIHRvIHRo
ZSB3aW5kb3cgaXZhciB0aGF0IG1heSBiZSBkZXN0cm95ZWQgZnJvbQotICAgIC8vIG5vdyBvbi4K
LSAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0V2luZG93Om5pbF07Ci0KLSAgICBbX2Z1bGxz
Y3JlZW5BbmltYXRpb24gYXV0b3JlbGVhc2VdOwotICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0g
bmlsOwotCi0gICAgW3NlbGYgYW5pbWF0ZWRSZXNpemVEaWRFbmRdOwotfQotCi0tICh2b2lkKW1v
dXNlTW92ZWQ6KE5TRXZlbnQgKilldmVudAotewotICAgIFVOVVNFRF9QQVJBTShldmVudCk7Ci0g
ICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIGZhZGVIVURJbl07Ci19Ci0KLUBlbmQKLQotQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjY3ZmVhZTEzNDJlNmE5NzdjNTZmYjFmNWM1MDQ0MjEyMDBkZDIxOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFZJREVPKQot
Ci0jaW1wb3J0IDxBcHBLaXQvTlNCdXR0b24uaD4KLSNpbXBvcnQgPEFwcEtpdC9OU0NvbnRyb2wu
aD4KLSNpbXBvcnQgPEFwcEtpdC9OU1RleHRGaWVsZC5oPgotI2ltcG9ydCA8QXBwS2l0L05TVHJh
Y2tpbmdBcmVhLmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNXaW5kb3cuaD4KLSNpbXBvcnQgPEFwcEtp
dC9OU1dpbmRvd0NvbnRyb2xsZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSFRN
TFZpZGVvRWxlbWVudDsKLX0KLQotQHByb3RvY29sIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXJEZWxlZ2F0ZTsKLQotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyIHsKLSAgICBpZCA8V2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPiBfZGVsZWdhdGU7Ci0gICAgTlNU
aW1lciAqX3RpbWVsaW5lVXBkYXRlVGltZXI7Ci0gICAgTlNUcmFja2luZ0FyZWEgKl9hcmVhOwot
ICAgIEJPT0wgX21vdXNlSXNJbkhVRDsKLSAgICBCT09MIF9pc0VuZGluZ0Z1bGxzY3JlZW47Ci0g
ICAgQk9PTCBfaXNTY3J1YmJpbmc7Ci0KLSAgICBOU0NvbnRyb2wgKl90aW1lbGluZTsKLSAgICBO
U1RleHRGaWVsZCAqX3JlbWFpbmluZ1RpbWVUZXh0OwotICAgIE5TVGV4dEZpZWxkICpfZWxhcHNl
ZFRpbWVUZXh0OwotICAgIE5TQ29udHJvbCAqX3ZvbHVtZVNsaWRlcjsKLSAgICBOU0J1dHRvbiAq
X3BsYXlCdXR0b247Ci19Ci0KLS0gKGlkIDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlOwotLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdlYlZp
ZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7Ci0tICh2
b2lkKWZhZGVXaW5kb3dJbjsKLS0gKHZvaWQpZmFkZVdpbmRvd091dDsKLS0gKHZvaWQpY2xvc2VX
aW5kb3c7Ci0tICh2b2lkKXVwZGF0ZVJhdGU7Ci0KLUBlbmQKLQotQHByb3RvY29sIFdlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+Ci0tICh2b2lk
KXJlcXVlc3RFeGl0RnVsbHNjcmVlbjsKLS0gKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqKXZp
ZGVvRWxlbWVudDsKLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjM2Y1MDZl
MDZkOTdiZmRlOGVhNGNiMDk1NjBhOGM3MGIxMjNmMTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsNzMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShWSURFTykgJiYgUExBVEZP
Uk0oTUFDKQotCi0jaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
LmgiCi0KLSNpbXBvcnQgPFdlYkNvcmUvRmxvYXRDb252ZXJzaW9uLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL21hYy9RVEtpdFNQSS5oPgotI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoUVRLaXQpCi0KLVNPRlRfTElOS19D
TEFTUyhRVEtpdCwgUVRIVURCYWNrZ3JvdW5kVmlldykKLVNPRlRfTElOS19DTEFTUyhRVEtpdCwg
UVRIVURCdXR0b24pCi1TT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVEU2xpZGVyKQotU09GVF9M
SU5LX0NMQVNTKFFUS2l0LCBRVEhVRFRpbWVsaW5lKQotCi0jZGVmaW5lIFFUSFVEQmFja2dyb3Vu
ZFZpZXcgZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkKLSNkZWZpbmUgUVRIVURCdXR0b24g
Z2V0UVRIVURCdXR0b25DbGFzcygpCi0jZGVmaW5lIFFUSFVEU2xpZGVyIGdldFFUSFVEU2xpZGVy
Q2xhc3MoKQotI2RlZmluZSBRVEhVRFRpbWVsaW5lIGdldFFUSFVEVGltZWxpbmVDbGFzcygpCi0K
LWVudW0gY2xhc3MgTWVkaWFVSUNvbnRyb2wgewotICAgIFRpbWVsaW5lLAotICAgIFNsaWRlciwK
LSAgICBQbGF5UGF1c2VCdXR0b24sCi0gICAgRXhpdEZ1bGxzY3JlZW5CdXR0b24sCi0gICAgUmV3
aW5kQnV0dG9uLAotICAgIEZhc3RGb3J3YXJkQnV0dG9uLAotICAgIFZvbHVtZVVwQnV0dG9uLAot
ICAgIFZvbHVtZURvd25CdXR0b24sCi19OwotCi11c2luZyBXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OwotdXNpbmcgV2ViQ29yZTo6bmFycm93UHJlY2lzaW9uVG9GbG9hdDsKLQotQGludGVyZmFj
ZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIChQcml2YXRlKSA8TlNXaW5k
b3dEZWxlZ2F0ZT4KLQotLSAodm9pZCl1cGRhdGVUaW1lOwotLSAodm9pZCl0aW1lbGluZVBvc2l0
aW9uQ2hhbmdlZDooaWQpc2VuZGVyOwotLSAoZmxvYXQpY3VycmVudFRpbWU7Ci0tICh2b2lkKXNl
dEN1cnJlbnRUaW1lOihmbG9hdCljdXJyZW50VGltZTsKLS0gKGRvdWJsZSlkdXJhdGlvbjsKLQot
LSAodm9pZCl2b2x1bWVDaGFuZ2VkOihpZClzZW5kZXI7Ci0tIChmbG9hdCltYXhWb2x1bWU7Ci0t
IChmbG9hdCl2b2x1bWU7Ci0tICh2b2lkKXNldFZvbHVtZTooZmxvYXQpdm9sdW1lOwotLSAodm9p
ZClkZWNyZW1lbnRWb2x1bWU7Ci0tICh2b2lkKWluY3JlbWVudFZvbHVtZTsKLQotLSAodm9pZCl1
cGRhdGVQbGF5QnV0dG9uOwotLSAodm9pZCl0b2dnbGVQbGF5aW5nOihpZClzZW5kZXI7Ci0tIChC
T09MKXBsYXlpbmc7Ci0tICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZzsKLQotLSAodm9p
ZClyZXdpbmQ6KGlkKXNlbmRlcjsKLS0gKHZvaWQpZmFzdEZvcndhcmQ6KGlkKXNlbmRlcjsKLQot
LSAoTlNTdHJpbmcgKilyZW1haW5pbmdUaW1lVGV4dDsKLS0gKE5TU3RyaW5nICopZWxhcHNlZFRp
bWVUZXh0OwotCi0tICh2b2lkKWV4aXRGdWxsc2NyZWVuOihpZClzZW5kZXI7Ci1AZW5kCi0KLUBp
bnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IDogTlNXaW5kb3cKLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdwotCi0tIChpZClpbml0
V2l0aENvbnRlbnRSZWN0OihOU1JlY3QpY29udGVudFJlY3Qgc3R5bGVNYXNrOihOU1VJbnRlZ2Vy
KWFTdHlsZSBiYWNraW5nOihOU0JhY2tpbmdTdG9yZVR5cGUpYnVmZmVyaW5nVHlwZSBkZWZlcjoo
Qk9PTClmbGFnCi17Ci0gICAgVU5VU0VEX1BBUkFNKGFTdHlsZSk7Ci0gICAgc2VsZiA9IFtzdXBl
ciBpbml0V2l0aENvbnRlbnRSZWN0OmNvbnRlbnRSZWN0IHN0eWxlTWFzazpOU1dpbmRvd1N0eWxl
TWFza0JvcmRlcmxlc3MgYmFja2luZzpidWZmZXJpbmdUeXBlIGRlZmVyOmZsYWddOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFtzZWxmIHNldE9wYXF1ZTpOT107
Ci0gICAgW3NlbGYgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGNsZWFyQ29sb3JdXTsKLSAg
ICBbc2VsZiBzZXRMZXZlbDpOU1BvcFVwTWVudVdpbmRvd0xldmVsXTsKLSAgICBbc2VsZiBzZXRB
Y2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZRVNdOwotICAgIFtzZWxmIHNldElnbm9yZXNNb3VzZUV2
ZW50czpOT107Ci0gICAgW3NlbGYgc2V0TW92YWJsZUJ5V2luZG93QmFja2dyb3VuZDpZRVNdOwot
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEJPT0wpY2FuQmVjb21lS2V5V2luZG93Ci17Ci0g
ICAgcmV0dXJuIFlFUzsKLX0KLQotLSAodm9pZCljYW5jZWxPcGVyYXRpb246KGlkKXNlbmRlcgot
ewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVy
XSBleGl0RnVsbHNjcmVlbjpzZWxmXTsKLX0KLQotLSAodm9pZCljZW50ZXIKLXsKLSAgICBOU1Jl
Y3QgaHVkRnJhbWUgPSBbc2VsZiBmcmFtZV07Ci0gICAgTlNSZWN0IHNjcmVlbkZyYW1lID0gW1tO
U1NjcmVlbiBtYWluU2NyZWVuXSBmcmFtZV07Ci0gICAgW3NlbGYgc2V0RnJhbWVUb3BMZWZ0UG9p
bnQ6TlNNYWtlUG9pbnQoc2NyZWVuRnJhbWUub3JpZ2luLnggKyAoc2NyZWVuRnJhbWUuc2l6ZS53
aWR0aCAtIGh1ZEZyYW1lLnNpemUud2lkdGgpIC8gMiwgc2NyZWVuRnJhbWUub3JpZ2luLnkgKyAo
c2NyZWVuRnJhbWUuc2l6ZS5oZWlnaHQgLSBodWRGcmFtZS5zaXplLmhlaWdodCkgLyA2KV07Ci19
Ci0KLS0gKHZvaWQpa2V5RG93bjooTlNFdmVudCAqKWV2ZW50Ci17Ci0gICAgW3N1cGVyIGtleURv
d246ZXZlbnRdOwotICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSBmYWRlV2luZG93SW5dOwot
fQotCi0tIChCT09MKXJlc2lnbkZpcnN0UmVzcG9uZGVyCi17Ci0gICAgcmV0dXJuIE5POwotfQot
Ci0tIChCT09MKXBlcmZvcm1LZXlFcXVpdmFsZW50OihOU0V2ZW50ICopZXZlbnQKLXsKLSAgICAv
LyBCbG9jayBhbGwgY29tbWFuZCBrZXkgZXZlbnRzIHdoaWxlIHRoZSBmdWxsc2NyZWVuIHdpbmRv
dyBpcyB1cC4KLSAgICBpZiAoW2V2ZW50IHR5cGVdICE9IE5TRXZlbnRUeXBlS2V5RG93bikKLSAg
ICAgICAgcmV0dXJuIE5POwotICAgIAotICAgIGlmICghKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5kKSkKLSAgICAgICAgcmV0dXJuIE5POwotICAgIHJl
dHVybiBZRVM7Ci19Ci0KLUBlbmQKLQotc3RhdGljIGNvbnN0IENHRmxvYXQgd2luZG93SGVpZ2h0
ID0gNTk7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCB3aW5kb3dXaWR0aCA9IDQzODsKLQotc3RhdGlj
IGNvbnN0IE5TVGltZUludGVydmFsIEhVRFdpbmRvd0ZhZGVPdXREZWxheSA9IDM7Ci0KLUBpbXBs
ZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyCi0KLS0gKGlk
KWluaXQKLXsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCB3aW5kb3dX
aWR0aCwgd2luZG93SGVpZ2h0KSBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNz
IGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107Ci0gICAgc2VsZiA9IFtz
dXBlciBpbml0V2l0aFdpbmRvdzp3aW5kb3ddOwotICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6c2Vs
Zl07Ci0gICAgW3dpbmRvdyByZWxlYXNlXTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgW3NlbGYgd2luZG93RGlkTG9hZF07Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0K
LS0gKHZvaWQpZGVhbGxvYwotewotICAgIEFTU0VSVCghX3RpbWVsaW5lVXBkYXRlVGltZXIpOwot
ICAgIEFTU0VSVCghX2FyZWEpOwotICAgIEFTU0VSVCghX2lzU2NydWJiaW5nKTsKLSAgICBbX3Rp
bWVsaW5lIHJlbGVhc2VdOwotICAgIFtfcmVtYWluaW5nVGltZVRleHQgcmVsZWFzZV07Ci0gICAg
W19lbGFwc2VkVGltZVRleHQgcmVsZWFzZV07Ci0gICAgW192b2x1bWVTbGlkZXIgcmVsZWFzZV07
Ci0gICAgW19wbGF5QnV0dG9uIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQot
LSAodm9pZClzZXRBcmVhOihOU1RyYWNraW5nQXJlYSAqKWFyZWEKLXsKLSAgICBpZiAoYXJlYSA9
PSBfYXJlYSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtfYXJlYSByZWxlYXNlXTsKLSAgICBfYXJl
YSA9IFthcmVhIHJldGFpbl07Ci19Ci0KLS0gKHZvaWQpa2V5RG93bjooTlNFdmVudCAqKWV2ZW50
Ci17Ci0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtldmVudCBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzIGxlbmd0aF0gPT0gMSkgewotICAgICAgICBzd2l0Y2ggKFtjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMgY2hhcmFjdGVyQXRJbmRleDowXSkgewotICAgICAgICBjYXNlICcgJzoK
LSAgICAgICAgICAgIFtzZWxmIHRvZ2dsZVBsYXlpbmc6bmlsXTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgY2FzZSBOU1VwQXJyb3dGdW5jdGlvbktleToKLSAgICAgICAgICAgIGlmIChb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0aW9uKQotICAgICAg
ICAgICAgICAgIFtzZWxmIHNldFZvbHVtZTpbc2VsZiBtYXhWb2x1bWVdXTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBbc2VsZiBpbmNyZW1lbnRWb2x1bWVdOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAg
ICAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlv
bikKLSAgICAgICAgICAgICAgICBbc2VsZiBzZXRWb2x1bWU6MF07Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgW3NlbGYgZGVjcmVtZW50Vm9sdW1lXTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgW3N1cGVyIGtleURvd246ZXZlbnRdOwotfQotCi0tIChpZCA8V2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQotewotICAgIHJl
dHVybiBfZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCi17Ci0gICAgX2Rl
bGVnYXRlID0gZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2NoZWR1bGVUaW1lVXBkYXRlCi17Ci0g
ICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxm
IHNlbGVjdG9yOkBzZWxlY3Rvcih1bnNjaGVkdWxlVGltZVVwZGF0ZSkgb2JqZWN0OnNlbGZdOwot
Ci0gICAgLy8gRmlyc3QsIHVwZGF0ZSByaWdodCBhd2F5LCB0aGVuIHNjaGVkdWxlIGZ1dHVyZSB1
cGRhdGUKLSAgICBbc2VsZiB1cGRhdGVUaW1lXTsKLSAgICBbc2VsZiB1cGRhdGVQbGF5QnV0dG9u
XTsKLQotICAgIFtfdGltZWxpbmVVcGRhdGVUaW1lciBpbnZhbGlkYXRlXTsKLSAgICBbX3RpbWVs
aW5lVXBkYXRlVGltZXIgcmVsZWFzZV07Ci0KLSAgICAvLyBOb3RlIHRoYXQgdGhpcyBjcmVhdGVz
IGEgcmV0YWluIGN5Y2xlIGJldHdlZW4gdGhlIHdpbmRvdyBhbmQgdXMuCi0gICAgX3RpbWVsaW5l
VXBkYXRlVGltZXIgPSBbW05TVGltZXIgdGltZXJXaXRoVGltZUludGVydmFsOjAuMjUgdGFyZ2V0
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZVRpbWUpIHVzZXJJbmZvOm5pbCByZXBlYXRz
OllFU10gcmV0YWluXTsKLSAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gYWRkVGltZXI6
X3RpbWVsaW5lVXBkYXRlVGltZXIgZm9yTW9kZTpOU1J1bkxvb3BDb21tb25Nb2Rlc107Ci19Ci0K
LS0gKHZvaWQpdW5zY2hlZHVsZVRpbWVVcGRhdGUKLXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJl
dmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHVu
c2NoZWR1bGVUaW1lVXBkYXRlKSBvYmplY3Q6bmlsXTsKLQotICAgIFtfdGltZWxpbmVVcGRhdGVU
aW1lciBpbnZhbGlkYXRlXTsKLSAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgcmVsZWFzZV07Ci0g
ICAgX3RpbWVsaW5lVXBkYXRlVGltZXIgPSBuaWw7Ci19Ci0KLS0gKHZvaWQpZmFkZVdpbmRvd0lu
Ci17Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107Ci0gICAgaWYgKCFbd2lu
ZG93IGlzVmlzaWJsZV0pCi0gICAgICAgIFt3aW5kb3cgc2V0QWxwaGFWYWx1ZTowXTsKLQotICAg
IFt3aW5kb3cgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07Ci0gICAgW1t3aW5kb3cgYW5pbWF0
b3JdIHNldEFscGhhVmFsdWU6MV07Ci0gICAgW3NlbGYgc2NoZWR1bGVUaW1lVXBkYXRlXTsKLQot
ICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2Vs
ZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgb2JqZWN0Om5pbF07Ci0gICAgaWYg
KCFfbW91c2VJc0luSFVEICYmIFtzZWxmIHBsYXlpbmddKSAvLyBEb24ndCBmYWRlIG91dCB3aGVu
IHBhdXNlZC4KLSAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihmYWRlV2lu
ZG93T3V0KSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OkhVRFdpbmRvd0ZhZGVPdXREZWxheV07
Ci19Ci0KLS0gKHZvaWQpZmFkZVdpbmRvd091dAotewotICAgIFtOU0N1cnNvciBzZXRIaWRkZW5V
bnRpbE1vdXNlTW92ZXM6WUVTXTsKLSAgICBbW1tzZWxmIHdpbmRvd10gYW5pbWF0b3JdIHNldEFs
cGhhVmFsdWU6MF07Ci0gICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcih1bnNjaGVk
dWxlVGltZVVwZGF0ZSkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheToxXTsKLX0KLQotLSAodm9p
ZCljbG9zZVdpbmRvdwotewotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1
ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgb2Jq
ZWN0Om5pbF07Ci0gICAgW3NlbGYgdW5zY2hlZHVsZVRpbWVVcGRhdGVdOwotICAgIE5TV2luZG93
ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSByZW1v
dmVUcmFja2luZ0FyZWE6X2FyZWFdOwotICAgIFtzZWxmIHNldEFyZWE6bmlsXTsKLSAgICBbd2lu
ZG93IGNsb3NlXTsKLSAgICBbd2luZG93IHNldERlbGVnYXRlOm5pbF07Ci0gICAgW3NlbGYgc2V0
V2luZG93Om5pbF07Ci19Ci0KLXN0YXRpYyBOU0NvbnRyb2wgKmNyZWF0ZU1lZGlhVUlDb250cm9s
KE1lZGlhVUlDb250cm9sIGNvbnRyb2xUeXBlKQotewotICAgIHN3aXRjaCAoY29udHJvbFR5cGUp
IHsKLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpUaW1lbGluZTogewotICAgICAgICBOU1NsaWRl
ciAqc2xpZGVyID0gW1tRVEhVRFRpbWVsaW5lIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW1tzbGlk
ZXIgY2VsbF0gc2V0Q29udGludW91czpZRVNdOwotICAgICAgICByZXR1cm4gc2xpZGVyOwotICAg
IH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpTbGlkZXI6IHsKLSAgICAgICAgTlNCdXR0b24g
KnNsaWRlciA9IFtbUVRIVURTbGlkZXIgYWxsb2NdIGluaXRdOwotICAgICAgICBbW3NsaWRlciBj
ZWxsXSBzZXRDb250aW51b3VzOllFU107Ci0gICAgICAgIHJldHVybiBzbGlkZXI7Ci0gICAgfQot
ICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRvbjogewotICAgICAgICBOU0J1
dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtidXR0
b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUGxheVRlbXBsYXRlIl1dOwotICAg
ICAgICBbYnV0dG9uIHNldEFsdGVybmF0ZUltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Bh
dXNlUVRQcml2YXRlVGVtcGxhdGUiXV07Ci0KLSAgICAgICAgW1tidXR0b24gY2VsbF0gc2V0U2hv
d3NTdGF0ZUJ5Ok5TQ29udGVudHNDZWxsTWFza107Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVy
ZWQ6Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlD
b250cm9sOjpFeGl0RnVsbHNjcmVlbkJ1dHRvbjogewotICAgICAgICBOU0J1dHRvbiAqYnV0dG9u
ID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtidXR0b24gc2V0SW1hZ2U6
W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRXhpdEZ1bGxTY3JlZW5UZW1wbGF0ZSJdXTsKLSAgICAg
ICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247Ci0gICAg
fQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlJld2luZEJ1dHRvbjogewotICAgICAgICBOU0J1
dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtidXR0
b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUmV3aW5kVGVtcGxhdGUiXV07Ci0g
ICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwot
ICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpGYXN0Rm9yd2FyZEJ1dHRvbjogewotICAg
ICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAg
ICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRmFzdEZvcndhcmRU
ZW1wbGF0ZSJdXTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJl
dHVybiBidXR0b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZVVwQnV0
dG9uOiB7Ci0gICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBp
bml0XTsKLSAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNB
dWRpb091dHB1dFZvbHVtZUhpZ2hUZW1wbGF0ZSJdXTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3Jk
ZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFV
SUNvbnRyb2w6OlZvbHVtZURvd25CdXR0b246IHsKLSAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9
IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBbYnV0dG9uIHNldEltYWdlOltO
U0ltYWdlIGltYWdlTmFtZWQ6QCJOU0F1ZGlvT3V0cHV0Vm9sdW1lTG93VGVtcGxhdGUiXV07Ci0g
ICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwot
ICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbmls
OwotfQotCi1zdGF0aWMgTlNDb250cm9sICpjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9s
VHlwZShNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSwgTlNSZWN0IGZyYW1lKQotewotICAgIE5T
Q29udHJvbCAqY29udHJvbCA9IGNyZWF0ZU1lZGlhVUlDb250cm9sKGNvbnRyb2xUeXBlKTsKLSAg
ICBjb250cm9sLmZyYW1lID0gZnJhbWU7Ci0gICAgcmV0dXJuIGNvbnRyb2w7Ci19Ci0KLXN0YXRp
YyBOU1RleHRGaWVsZCAqY3JlYXRlVGltZVRleHRGaWVsZChOU1JlY3QgZnJhbWUpCi17Ci0gICAg
TlNUZXh0RmllbGQgKnRleHRGaWVsZCA9IFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJh
bWU6ZnJhbWVdOwotICAgIFt0ZXh0RmllbGQgc2V0VGV4dENvbG9yOltOU0NvbG9yIHdoaXRlQ29s
b3JdXTsKLSAgICBbdGV4dEZpZWxkIHNldEJvcmRlcmVkOk5PXTsKLSAgICBbdGV4dEZpZWxkIHNl
dEZvbnQ6W05TRm9udCBib2xkU3lzdGVtRm9udE9mU2l6ZToxMF1dOwotICAgIFt0ZXh0RmllbGQg
c2V0RHJhd3NCYWNrZ3JvdW5kOk5PXTsKLSAgICBbdGV4dEZpZWxkIHNldEJlemVsZWQ6Tk9dOwot
ICAgIFt0ZXh0RmllbGQgc2V0RWRpdGFibGU6Tk9dOwotICAgIFt0ZXh0RmllbGQgc2V0U2VsZWN0
YWJsZTpOT107Ci0gICAgcmV0dXJuIHRleHRGaWVsZDsKLX0KLQotc3RhdGljIE5TVmlldyAqY3Jl
YXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCkKLXsKLSAgICBpZCB2aWV3ID0gW1tRVEhVREJhY2tn
cm91bmRWaWV3IGFsbG9jXSBpbml0XTsKLQotICAgIGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxh
eWVySFVESGVpZ2h0ID0gNTk7Ci0gICAgY29uc3QgQ0dGbG9hdCBxdWlja1RpbWVQbGF5ZXJIVURD
b250ZW50Qm9yZGVyUG9zaXRpb24gPSAzODsKLQotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgW3ZpZXcgc2V0Q29udGVudEJvcmRlclBvc2l0aW9uOnF1aWNrVGlt
ZVBsYXllckhVRENvbnRlbnRCb3JkZXJQb3NpdGlvbiAvIHF1aWNrVGltZVBsYXllckhVREhlaWdo
dF07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KLSAgICByZXR1cm4g
dmlldzsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRMb2FkCi17Ci0gICAgc3RhdGljIGNvbnN0IENH
RmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDEwOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHBs
YXlCdXR0b25XaWR0aCA9IDQxOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHBsYXlCdXR0b25I
ZWlnaHQgPSAzNTsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0dG9uVG9wTWFyZ2lu
ID0gNDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVTbGlkZXJXaWR0aCA9IDUwOwot
ICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZVNsaWRlckhlaWdodCA9IDEzOwotICAgIHN0
YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZUJ1dHRvbldpZHRoID0gMTg7Ci0gICAgc3RhdGljIGNv
bnN0IENHRmxvYXQgdm9sdW1lQnV0dG9uSGVpZ2h0ID0gMTY7Ci0gICAgc3RhdGljIGNvbnN0IENH
RmxvYXQgdm9sdW1lVXBCdXR0b25MZWZ0TWFyZ2luID0gNDsKLSAgICBzdGF0aWMgY29uc3QgQ0dG
bG9hdCB2b2x1bWVDb250cm9sc1RvcE1hcmdpbiA9IDEzOwotICAgIHN0YXRpYyBjb25zdCBDR0Zs
b2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGggPSAyNTsKLSAgICBzdGF0aWMgY29uc3QgQ0dG
bG9hdCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCA9IDIxOwotICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2luID0gMTE7Ci0gICAgc3RhdGljIGNv
bnN0IENHRmxvYXQgdGltZWxpbmVXaWR0aCA9IDMxNTsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9h
dCB0aW1lbGluZUhlaWdodCA9IDE0OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVsaW5l
Qm90dG9tTWFyZ2luID0gNzsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lVGV4dEZpZWxk
V2lkdGggPSA1NDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lVGV4dEZpZWxkSGVpZ2h0
ID0gMTM7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVsZEhvcml6b250YWxN
YXJnaW4gPSA3OwotCi0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107Ci0gICAg
QVNTRVJUKHdpbmRvdyk7Ci0KLSAgICBOU1ZpZXcgKmJhY2tncm91bmQgPSBjcmVhdGVNZWRpYVVJ
QmFja2dyb3VuZFZpZXcoKTsKLQotICAgIFt3aW5kb3cgc2V0Q29udGVudFZpZXc6YmFja2dyb3Vu
ZF07Ci0gICAgX2FyZWEgPSBbW05TVHJhY2tpbmdBcmVhIGFsbG9jXSBpbml0V2l0aFJlY3Q6W2Jh
Y2tncm91bmQgYm91bmRzXSBvcHRpb25zOk5TVHJhY2tpbmdNb3VzZUVudGVyZWRBbmRFeGl0ZWQg
fCBOU1RyYWNraW5nQWN0aXZlQWx3YXlzIG93bmVyOnNlbGYgdXNlckluZm86bmlsXTsKLSAgICBb
YmFja2dyb3VuZCBhZGRUcmFja2luZ0FyZWE6X2FyZWFdOwotICAgIFtiYWNrZ3JvdW5kIHJlbGVh
c2VdOyAgICAKLQotICAgIE5TVmlldyAqY29udGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3
XTsKLQotICAgIENHRmxvYXQgY2VudGVyID0gQ0dGbG9vcigod2luZG93V2lkdGggLSBwbGF5QnV0
dG9uV2lkdGgpIC8gMik7Ci0gICAgX3BsYXlCdXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250
cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9u
LCBOU01ha2VSZWN0KGNlbnRlciwgd2luZG93SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAt
IHBsYXlCdXR0b25IZWlnaHQsIHBsYXlCdXR0b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOwot
ICAgIEFTU0VSVChbX3BsYXlCdXR0b24gaXNLaW5kT2ZDbGFzczpbTlNCdXR0b24gY2xhc3NdXSk7
Ci0gICAgW19wbGF5QnV0dG9uIHNldFRhcmdldDpzZWxmXTsKLSAgICBbX3BsYXlCdXR0b24gc2V0
QWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVQbGF5aW5nOildOwotICAgIFtjb250ZW50VmlldyBhZGRT
dWJ2aWV3Ol9wbGF5QnV0dG9uXTsKLQotICAgIENHRmxvYXQgY2xvc2VUb1JpZ2h0ID0gd2luZG93
V2lkdGggLSBob3Jpem9udGFsTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aDsKLSAg
ICBOU0NvbnRyb2wgKmV4aXRGdWxsc2NyZWVuQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRp
YVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OkV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01h
a2VSZWN0KGNsb3NlVG9SaWdodCwgd2luZG93SGVpZ2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25U
b3BNYXJnaW4gLSBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0
b25XaWR0aCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQpKTsKLSAgICBbZXhpdEZ1bGxzY3Jl
ZW5CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihleGl0RnVsbHNjcmVlbjopXTsKLSAgICBbZXhp
dEZ1bGxzY3JlZW5CdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwotICAgIFtjb250ZW50VmlldyBhZGRT
dWJ2aWV3OmV4aXRGdWxsc2NyZWVuQnV0dG9uXTsKLSAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24g
cmVsZWFzZV07Ci0gICAgCi0gICAgQ0dGbG9hdCB2b2x1bWVDb250cm9sc0JvdHRvbSA9IHdpbmRv
d0hlaWdodCAtIHZvbHVtZUNvbnRyb2xzVG9wTWFyZ2luIC0gdm9sdW1lQnV0dG9uSGVpZ2h0Owot
ICAgIENHRmxvYXQgbGVmdCA9IGhvcml6b250YWxNYXJnaW47Ci0gICAgTlNDb250cm9sICp2b2x1
bWVEb3duQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFV
SUNvbnRyb2w6OlZvbHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJv
bHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKLSAgICBb
Y29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVEb3duQnV0dG9uXTsKLSAgICBbdm9sdW1lRG93
bkJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07Ci0gICAgW3ZvbHVtZURvd25CdXR0b24gc2V0QWN0aW9u
OkBzZWxlY3RvcihzZXRWb2x1bWVUb1plcm86KV07Ci0gICAgW3ZvbHVtZURvd25CdXR0b24gcmVs
ZWFzZV07Ci0KLSAgICBsZWZ0ICs9IHZvbHVtZUJ1dHRvbldpZHRoOwotICAgIF92b2x1bWVTbGlk
ZXIgPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6
U2xpZGVyLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tICsgQ0dGbG9vcigo
dm9sdW1lQnV0dG9uSGVpZ2h0IC0gdm9sdW1lU2xpZGVySGVpZ2h0KSAvIDIpLCB2b2x1bWVTbGlk
ZXJXaWR0aCwgdm9sdW1lU2xpZGVySGVpZ2h0KSk7Ci0gICAgW192b2x1bWVTbGlkZXIgc2V0VmFs
dWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6W3NlbGYgbWF4Vm9sdW1lXV0gZm9yS2V5OkAi
bWF4VmFsdWUiXTsKLSAgICBbX3ZvbHVtZVNsaWRlciBzZXRUYXJnZXQ6c2VsZl07Ci0gICAgW192
b2x1bWVTbGlkZXIgc2V0QWN0aW9uOkBzZWxlY3Rvcih2b2x1bWVDaGFuZ2VkOildOwotICAgIFtj
b250ZW50VmlldyBhZGRTdWJ2aWV3Ol92b2x1bWVTbGlkZXJdOwotCi0gICAgbGVmdCArPSB2b2x1
bWVTbGlkZXJXaWR0aCArIHZvbHVtZVVwQnV0dG9uTGVmdE1hcmdpbjsKLSAgICBOU0NvbnRyb2wg
KnZvbHVtZVVwQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVk
aWFVSUNvbnRyb2w6OlZvbHVtZVVwQnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRy
b2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7Ci0gICAg
W3ZvbHVtZVVwQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKLSAgICBbdm9sdW1lVXBCdXR0b24gc2V0
QWN0aW9uOkBzZWxlY3RvcihzZXRWb2x1bWVUb01heGltdW06KV07Ci0gICAgW2NvbnRlbnRWaWV3
IGFkZFN1YnZpZXc6dm9sdW1lVXBCdXR0b25dOwotICAgIFt2b2x1bWVVcEJ1dHRvbiByZWxlYXNl
XTsKLQotICAgIF90aW1lbGluZSA9IGNyZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9s
OjpUaW1lbGluZSk7Ci0KLSAgICBbX3RpbWVsaW5lIHNldFRhcmdldDpzZWxmXTsKLSAgICBbX3Rp
bWVsaW5lIHNldEFjdGlvbjpAc2VsZWN0b3IodGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KV07Ci0g
ICAgW190aW1lbGluZSBzZXRGcmFtZTpOU01ha2VSZWN0KENHRmxvb3IoKHdpbmRvd1dpZHRoIC0g
dGltZWxpbmVXaWR0aCkgLyAyKSwgdGltZWxpbmVCb3R0b21NYXJnaW4sIHRpbWVsaW5lV2lkdGgs
IHRpbWVsaW5lSGVpZ2h0KV07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3RpbWVsaW5l
XTsKLQotICAgIF9lbGFwc2VkVGltZVRleHQgPSBjcmVhdGVUaW1lVGV4dEZpZWxkKE5TTWFrZVJl
Y3QodGltZVRleHRGaWVsZEhvcml6b250YWxNYXJnaW4sIHRpbWVsaW5lQm90dG9tTWFyZ2luLCB0
aW1lVGV4dEZpZWxkV2lkdGgsIHRpbWVUZXh0RmllbGRIZWlnaHQpKTsKLSAgICBbX2VsYXBzZWRU
aW1lVGV4dCBzZXRBbGlnbm1lbnQ6TlNUZXh0QWxpZ25tZW50TGVmdF07Ci0gICAgW2NvbnRlbnRW
aWV3IGFkZFN1YnZpZXc6X2VsYXBzZWRUaW1lVGV4dF07Ci0KLSAgICBfcmVtYWluaW5nVGltZVRl
eHQgPSBjcmVhdGVUaW1lVGV4dEZpZWxkKE5TTWFrZVJlY3Qod2luZG93V2lkdGggLSB0aW1lVGV4
dEZpZWxkSG9yaXpvbnRhbE1hcmdpbiAtIHRpbWVUZXh0RmllbGRXaWR0aCwgdGltZWxpbmVCb3R0
b21NYXJnaW4sIHRpbWVUZXh0RmllbGRXaWR0aCwgdGltZVRleHRGaWVsZEhlaWdodCkpOwotICAg
IFtfcmVtYWluaW5nVGltZVRleHQgc2V0QWxpZ25tZW50Ok5TVGV4dEFsaWdubWVudFJpZ2h0XTsK
LSAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfcmVtYWluaW5nVGltZVRleHRdOwotCi0gICAg
W3dpbmRvdyByZWNhbGN1bGF0ZUtleVZpZXdMb29wXTsKLSAgICBbd2luZG93IHNldEluaXRpYWxG
aXJzdFJlc3BvbmRlcjpfcGxheUJ1dHRvbl07Ci0gICAgW3dpbmRvdyBjZW50ZXJdOwotfQotCi0t
ICh2b2lkKXVwZGF0ZVZvbHVtZQotewotICAgIFtfdm9sdW1lU2xpZGVyIHNldEZsb2F0VmFsdWU6
W3NlbGYgdm9sdW1lXV07Ci19Ci0KLS0gKHZvaWQpdXBkYXRlVGltZQotewotICAgIFtzZWxmIHVw
ZGF0ZVZvbHVtZV07Ci0KLSAgICBbX3RpbWVsaW5lIHNldEZsb2F0VmFsdWU6W3NlbGYgY3VycmVu
dFRpbWVdXTsKLSAgICBbX3RpbWVsaW5lIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOltzZWxmIGR1cmF0aW9uXV0gZm9yS2V5OkAibWF4VmFsdWUiXTsKLQotICAgIFtfcmVtYWlu
aW5nVGltZVRleHQgc2V0U3RyaW5nVmFsdWU6W3NlbGYgcmVtYWluaW5nVGltZVRleHRdXTsKLSAg
ICBbX2VsYXBzZWRUaW1lVGV4dCBzZXRTdHJpbmdWYWx1ZTpbc2VsZiBlbGFwc2VkVGltZVRleHRd
XTsKLX0KLQotLSAodm9pZCllbmRTY3J1YmJpbmcKLXsKLSAgICBBU1NFUlQoX2lzU2NydWJiaW5n
KTsKLSAgICBfaXNTY3J1YmJpbmcgPSBOTzsKLSAgICBpZiAoSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICB2aWRlb0VsZW1l
bnQtPmVuZFNjcnViYmluZygpOwotfQotCi0tICh2b2lkKXRpbWVsaW5lUG9zaXRpb25DaGFuZ2Vk
OihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRD
dXJyZW50VGltZTpbX3RpbWVsaW5lIGZsb2F0VmFsdWVdXTsKLSAgICBpZiAoIV9pc1NjcnViYmlu
ZykgewotICAgICAgICBfaXNTY3J1YmJpbmcgPSBZRVM7Ci0gICAgICAgIGlmIChIVE1MVmlkZW9F
bGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAg
ICAgICB2aWRlb0VsZW1lbnQtPmJlZ2luU2NydWJiaW5nKCk7Ci0gICAgICAgIHN0YXRpYyBOU0Fy
cmF5ICplbmRTY3J1YmJpbmdNb2RlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
Ok5TRGVmYXVsdFJ1bkxvb3BNb2RlLCBOU01vZGFsUGFuZWxSdW5Mb29wTW9kZSwgbmlsXTsKLSAg
ICAgICAgLy8gU2NoZWR1bGUgLWVuZFNjcnViYmluZyBmb3Igd2hlbiBsZWF2aW5nIG1vdXNlIHRy
YWNraW5nIG1vZGUuCi0gICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBwZXJmb3Jt
U2VsZWN0b3I6QHNlbGVjdG9yKGVuZFNjcnViYmluZykgdGFyZ2V0OnNlbGYgYXJndW1lbnQ6bmls
IG9yZGVyOjAgbW9kZXM6ZW5kU2NydWJiaW5nTW9kZXNdOwotICAgIH0KLX0KLQotLSAoZmxvYXQp
Y3VycmVudFRpbWUKLXsKLSAgICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8gW19k
ZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5jdXJyZW50VGltZSgpIDogMDsKLX0KLQotLSAodm9pZClz
ZXRDdXJyZW50VGltZTooZmxvYXQpY3VycmVudFRpbWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUg
dmlkZW9FbGVtZW50XSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVt
ZW50XS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUpOwotICAgIFtzZWxmIHVwZGF0ZVRpbWVd
OwotfQotCi0tIChkb3VibGUpZHVyYXRpb24KLXsKLSAgICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRl
b0VsZW1lbnRdID8gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5kdXJhdGlvbigpIDogMDsKLX0K
LQotLSAoZmxvYXQpbWF4Vm9sdW1lCi17Ci0gICAgLy8gU2V0IHRoZSB2b2x1bWUgc2xpZGVyIHJl
c29sdXRpb24KLSAgICByZXR1cm4gMTAwOwotfQotCi0tICh2b2lkKXZvbHVtZUNoYW5nZWQ6KGlk
KXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtzZWxmIHNldFZvbHVt
ZTpbX3ZvbHVtZVNsaWRlciBmbG9hdFZhbHVlXV07Ci19Ci0KLS0gKHZvaWQpc2V0Vm9sdW1lVG9a
ZXJvOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBz
ZXRWb2x1bWU6MF07Ci19Ci0KLS0gKHZvaWQpc2V0Vm9sdW1lVG9NYXhpbXVtOihpZClzZW5kZXIK
LXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRWb2x1bWU6W3NlbGYg
bWF4Vm9sdW1lXV07Ci19Ci0KLS0gKHZvaWQpZGVjcmVtZW50Vm9sdW1lCi17Ci0gICAgaWYgKCFb
X2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0IHZv
bHVtZSA9IFtzZWxmIHZvbHVtZV0gLSAxMDsKLSAgICBbc2VsZiBzZXRWb2x1bWU6c3RkOjptYXgo
dm9sdW1lLCAwLjBmKV07Ci19Ci0KLS0gKHZvaWQpaW5jcmVtZW50Vm9sdW1lCi17Ci0gICAgaWYg
KCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0
IHZvbHVtZSA9IFtzZWxmIHZvbHVtZV0gKyAxMDsKLSAgICBbc2VsZiBzZXRWb2x1bWU6c3RkOjpt
aW4odm9sdW1lLCBbc2VsZiBtYXhWb2x1bWVdKV07Ci19Ci0KLS0gKGZsb2F0KXZvbHVtZQotewot
ICAgIHJldHVybiBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0gPyBbX2RlbGVnYXRlIHZpZGVvRWxl
bWVudF0tPnZvbHVtZSgpICogW3NlbGYgbWF4Vm9sdW1lXSA6IDA7Ci19Ci0KLS0gKHZvaWQpc2V0
Vm9sdW1lOihmbG9hdCl2b2x1bWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50
XSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPm11
dGVkKCkpCi0gICAgICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+c2V0TXV0ZWQoZmFsc2Up
OwotICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+c2V0Vm9sdW1lKHZvbHVtZSAvIFtzZWxm
IG1heFZvbHVtZV0pOwotICAgIFtzZWxmIHVwZGF0ZVZvbHVtZV07Ci19Ci0KLS0gKHZvaWQpdXBk
YXRlUGxheUJ1dHRvbgotewotICAgIFtfcGxheUJ1dHRvbiBzZXRJbnRWYWx1ZTpbc2VsZiBwbGF5
aW5nXV07Ci19Ci0KLS0gKHZvaWQpdXBkYXRlUmF0ZQotewotICAgIEJPT0wgcGxheWluZyA9IFtz
ZWxmIHBsYXlpbmddOwotCi0gICAgLy8gS2VlcCB0aGUgSFVEIHZpc2libGUgd2hlbiBwYXVzZWQu
Ci0gICAgaWYgKCFwbGF5aW5nKQotICAgICAgICBbc2VsZiBmYWRlV2luZG93SW5dOwotICAgIGVs
c2UgaWYgKCFfbW91c2VJc0luSFVEKSB7Ci0gICAgICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91
c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdp
bmRvd091dCkgb2JqZWN0Om5pbF07Ci0gICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2Vs
ZWN0b3IoZmFkZVdpbmRvd091dCkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpIVURXaW5kb3dG
YWRlT3V0RGVsYXldOwotICAgIH0KLSAgICBbc2VsZiB1cGRhdGVQbGF5QnV0dG9uXTsKLX0KLQot
LSAodm9pZCl0b2dnbGVQbGF5aW5nOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2Vu
ZGVyKTsKLSAgICBbc2VsZiBzZXRQbGF5aW5nOiFbc2VsZiBwbGF5aW5nXV07Ci19Ci0KLS0gKEJP
T0wpcGxheWluZwotewotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVs
ZWdhdGUgdmlkZW9FbGVtZW50XTsKLSAgICBpZiAoIXZpZGVvRWxlbWVudCkKLSAgICAgICAgcmV0
dXJuIE5POwotCi0gICAgcmV0dXJuICF2aWRlb0VsZW1lbnQtPmNhblBsYXkoKTsKLX0KLQotLSAo
dm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmcKLXsKLSAgICBIVE1MVmlkZW9FbGVtZW50KiB2
aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF07Ci0KLSAgICBpZiAoIXZpZGVv
RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHBsYXlpbmcpCi0gICAgICAgIHZp
ZGVvRWxlbWVudC0+cGxheSgpOwotICAgIGVsc2UKLSAgICAgICAgdmlkZW9FbGVtZW50LT5wYXVz
ZSgpOwotfQotCi1zdGF0aWMgTlNTdHJpbmcgKnRpbWVUb1N0cmluZyhkb3VibGUgdGltZSkKLXsK
LSAgICBBU1NFUlRfQVJHKHRpbWUsIHRpbWUgPj0gMCk7Ci0KLSAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUodGltZSkpCi0gICAgICAgIHRpbWUgPSAwOwotCi0gICAgaW50IHNlY29uZHMgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHN0ZDo6YWJzKHRpbWUpKTsKLSAgICBpbnQgaG91cnMgPSBzZWNvbmRz
IC8gKDYwICogNjApOwotICAgIGludCBtaW51dGVzID0gKHNlY29uZHMgLyA2MCkgJSA2MDsKLSAg
ICBzZWNvbmRzICU9IDYwOwotCi0gICAgaWYgKGhvdXJzKQotICAgICAgICByZXR1cm4gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZDolMDJkOiUwMmQiLCBob3VycywgbWludXRlcywgc2Vj
b25kc107Ci0KLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlMDJkOiUw
MmQiLCBtaW51dGVzLCBzZWNvbmRzXTsgICAgCi19Ci0KLS0gKE5TU3RyaW5nICopcmVtYWluaW5n
VGltZVRleHQKLXsKLSAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVn
YXRlIHZpZGVvRWxlbWVudF07Ci0gICAgaWYgKCF2aWRlb0VsZW1lbnQpCi0gICAgICAgIHJldHVy
biBAIiI7Ci0KLSAgICBkb3VibGUgcmVtYWluaW5nVGltZSA9IDA7Ci0KLSAgICBpZiAoc3RkOjpp
c2Zpbml0ZSh2aWRlb0VsZW1lbnQtPmR1cmF0aW9uKCkpICYmIHN0ZDo6aXNmaW5pdGUodmlkZW9F
bGVtZW50LT5jdXJyZW50VGltZSgpKSkKLSAgICAgICAgcmVtYWluaW5nVGltZSA9IHZpZGVvRWxl
bWVudC0+ZHVyYXRpb24oKSAtIHZpZGVvRWxlbWVudC0+Y3VycmVudFRpbWUoKTsKLQotICAgIHJl
dHVybiBbQCItIiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzp0aW1lVG9TdHJpbmcocmVtYWluaW5n
VGltZSldOwotfQotCi0tIChOU1N0cmluZyAqKWVsYXBzZWRUaW1lVGV4dAotewotICAgIGlmICgh
W19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICByZXR1cm4gQCIiOwotCi0gICAgcmV0
dXJuIHRpbWVUb1N0cmluZyhbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPmN1cnJlbnRUaW1lKCkp
OwotfQotCi0vLyBNQVJLOiBOU1Jlc3BvbmRlcgotCi0tICh2b2lkKW1vdXNlRW50ZXJlZDooTlNF
dmVudCAqKXRoZUV2ZW50Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHRoZUV2ZW50KTsKLSAgICAvLyBN
YWtlIHN1cmUgdGhlIEhVRCB3b24ndCBiZSBoaWRkZW4gZnJvbSBub3cKLSAgICBfbW91c2VJc0lu
SFVEID0gWUVTOwotICAgIFtzZWxmIGZhZGVXaW5kb3dJbl07Ci19Ci0KLS0gKHZvaWQpbW91c2VF
eGl0ZWQ6KE5TRXZlbnQgKil0aGVFdmVudAotewotICAgIFVOVVNFRF9QQVJBTSh0aGVFdmVudCk7
Ci0gICAgX21vdXNlSXNJbkhVRCA9IE5POwotICAgIFtzZWxmIGZhZGVXaW5kb3dJbl07Ci19Ci0K
LS0gKHZvaWQpcmV3aW5kOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsK
LSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAgcmV0dXJuOwotICAg
IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+cmV3aW5kKDMwKTsKLX0KLQotLSAodm9pZClmYXN0
Rm9yd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYg
KCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLX0KLQotLSAodm9p
ZClleGl0RnVsbHNjcmVlbjooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7
Ci0gICAgaWYgKF9pc0VuZGluZ0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLSAgICBfaXNF
bmRpbmdGdWxsc2NyZWVuID0gWUVTOwotICAgIFtfZGVsZWdhdGUgcmVxdWVzdEV4aXRGdWxsc2Ny
ZWVuXTsgCi19Ci0KLS8vIE1BUks6IE5TV2luZG93RGVsZWdhdGUKLQotLSAodm9pZCl3aW5kb3dE
aWRFeHBvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgVU5VU0VEX1BB
UkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgW3NlbGYgc2NoZWR1bGVUaW1lVXBkYXRlXTsKLX0KLQot
LSAodm9pZCl3aW5kb3dEaWRDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KLXsK
LSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICBbc2VsZiB1bnNjaGVkdWxlVGlt
ZVVwZGF0ZV07Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggODkzZmEwOGNjZjkwNjU4YjQ0N2JiNjViYzM5YmZhMzU5
YjdiZTAwMy4uNWViOTU3NTI4MmMxYjY1M2RjYmM5YWE2YTQ3ZWQ3MGMwNWU3ZDVlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjUzLDcgKzI1Myw2
IEBACiAjaW1wb3J0ICJXZWJOU1ByaW50T3BlcmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJQ
REZWaWV3LmgiCiAjaW1wb3J0ICJXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCIKLSNpbXBvcnQgIldl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGlj
YXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yV2luZG93Lmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CkBAIC05MzUxLDYgKzkzNTAsNyBAQCAtICh2b2lk
KV9zY2hlZHVsZUxheWVyRmx1c2hGb3JQZW5kaW5nVGlsZUNhY2hlUmVwYWludAogI2lmIEVOQUJM
RShWSURFTykKIC0gKHZvaWQpX2VudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50OihX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kil2aWRlb0VsZW1lbnQgbW9kZTooV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKW1vZGUKIHsKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIp
IHsKICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgdmlkZW9FbGVt
ZW50XSA9PSB2aWRlb0VsZW1lbnQpIHsKICAgICAgICAgICAgIC8vIFRoZSBiYWNrZW5kIG1heSBq
dXN0IHdhcm4gdXMgdGhhdCB0aGUgdW5kZXJsYXlpbmcgcGxhZnRvcm1Nb3ZpZSgpCkBAIC05MzY4
LDIzICs5MzY4LDIyIEBAIC0gKHZvaWQpX2VudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kil2aWRlb0VsCiAgICAgaWYgKCFfcHJpdmF0
ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAgICAgX3ByaXZhdGUtPmZ1bGxzY3JlZW5D
b250cm9sbGVyID0gW1tXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGFsbG9jXSBpbml0XTsK
ICAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6
dmlkZW9FbGVtZW50XTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbX3ByaXZh
dGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjooVUlWaWV3ICopW1tbc2Vs
ZiB3aW5kb3ddIGhvc3RMYXllcl0gZGVsZWdhdGVdIG1vZGU6bW9kZV07Ci0jZWxzZQotICAgICAg
ICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpbW3NlbGYg
d2luZG93XSBzY3JlZW5dXTsKLSNlbmRpZgogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFtfcHJp
dmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0VmlkZW9FbGVtZW50OnZpZGVvRWxlbWVudF07
CisjZW5kaWYKIH0KIAogLSAodm9pZClfZXhpdFZpZGVvRnVsbHNjcmVlbgogeworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIp
CiAgICAgICAgIHJldHVybjsKICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIGV4
aXRGdWxsc2NyZWVuXTsKICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIHJlbGVh
c2VdOwogICAgIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciA9IG5pbDsKKyNlbmRpZgog
fQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356392</attachid>
            <date>2018-12-03 12:22:40 -0800</date>
            <delta_ts>2018-12-03 13:06:43 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192315-20181203122239.patch</filename>
            <type>text/plain</type>
            <size>59236</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY4MTliOGVlZWM5MzYx
ZDY1MTY0NDIzNmE3Njg5ZDMzZDViNTI1MS4uODBlZDA0MWZkYzI1NGQzZGVhZjNhNDRjYTliZjVm
YWYyMmE1YzNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTEyLTAzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2Ygb2xkLCBk
ZWFkIE1hYyB2aWRlbyBmdWxsc2NyZWVuIGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMTUKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
c3VwcG9ydHNGdWxsc2NyZWVuIGNvbnN0KToKKwogMjAxOC0xMS0yNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gVXNlIGZsb2F0IGJveCdzIG1h
cmdpbiBib3ggdG8gYWRqdXN0IHRoZSBsaW5lIGNvbnN0cmFpbnRzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCAyMDlkNjI1NDVjODM3MGI5ZTMzZjhkNWEzYmYwNTZhZWIwMjEyN2EyLi40ODJmMTRi
NDUzNDE1ZmQ2Y2Y5MDRiYjY5NWI4NzUwOGJlMTE2NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDE4LTEyLTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgorCisgICAgICAgIEdldCByaWQgb2Ygb2xkLCBkZWFkIE1hYyB2aWRlbyBmdWxsc2NyZWVu
IGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTIzMTUKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBX
ZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMS0xNyAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
TmV0d29yazogYWRkIGJ1dHRvbiB0byBzaG93IHN5c3RlbSBjZXJ0aWZpY2F0ZSBkaWFsb2cKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA2ZGFjNjA5YTA3NmFmNmExMWU5ZjA4MjZlNTUx
ODg1ZThjYjM5NzM1Li5mNjE1NTcxNDM4YThjZjU5MzJhYTFmN2IwZjNmNGVjODkzMzZlY2Y1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTItMDMg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBv
bGQsIGRlYWQgTWFjIHZpZGVvIGZ1bGxzY3JlZW4gY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBUaGUgTWFjLW9ubHkgV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlciBhbmQgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBkZXBl
bmQgdXBvbiBRVEtpdCwgd2hpY2gKKyAgICAgICAgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBpbiB0
aGUgTWFjIHBvcnQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfZW50ZXJWaWRlb0Z1bGxz
Y3JlZW5Gb3JWaWRlb0VsZW1lbnQ6bW9kZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZXhpdFZp
ZGVvRnVsbHNjcmVlbl0pOgorCiAyMDE4LTExLTI1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW5zZXJ0IGVkaXRh
YmxlIGltYWdlcyB3aXRoIGEgZ2VzdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA1
YjAzOTg3OGY2YWI5MTBjZjZhODYzNTA2OWVmYjBiYjRkN2M4OWIyLi41ZDE2YzY2ZGFlZTMyY2I2
NTA2NmM0MDExZGZmNThlN2Q0N2I3MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAt
NDA3LDggKzQwNyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbQogICAgIHBsYXRmb3JtL21hYy9XZWJHTEJsYWNrbGlz
dC5tbQogICAgIHBsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0KLSAg
ICBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQotICAgIHBsYXRm
b3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCiAgICAgcGxh
dGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQogICAgIHBsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAppbmRleCA0Njg5YTU1MTM3YjcyMzRiMjYxOTZiYjRmYTA1ZDQ2YjA4MDNm
ODkzLi5hZGYyODYyZjg4ZTQyYmE5MTFkNTA1YjQ5Y2I1MjhlYjU3ZGVlMzU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApA
QCAtNDY4LDE0ICs0NjgsMTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICAvLyBGSVhNRTogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlciBhc3N1bWVzIGEgUVRLaXQvUXVpY2tUaW1lIG1lZGlhIGVuZ2luZQotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmF2S2l0RW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjM0YTY3ODVjZjNmNzRhY2Y2NWU4OGRlY2Rl
MmZhYmY4NzNmODVjMi4uNTdkN2JkNzZmMmM3ZDQxN2Y1ZmQ0N2U2MjBlOWIyOWE5NzA2Njk1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NzQsOCArNzc0LDYgQEAKIAkJQzBDNUIzRUYxMTc3
QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQzVCM0VEMTE3N0E0QTAwMDJCMEFF
RiAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gKi87IH07CiAJCUMxMUVCRjQxMjE0MTlD
Q0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExRUJGM0YyMTQxOUNDRTAwRDY1OUU3IC8q
IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi87IH07CiAJCUMxMUVCRjQyMjE0MTlDQ0UwMEQ2
NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUVCRjQwMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0
Y2hpbmdHUFVDbGllbnQuaCAqLzsgfTsKLQkJQzFEODExMjgyMDJDRDgwMDAwRUU3NEY5IC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgfTsKLQkJQzFEODExMkIyMDJDRENDNDAwRUU3NEY5
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4MTEyOTIwMkNEQ0MyMDBFRTc0
RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJ
QzFEODExMkUyMDJDRUQwODAwRUU3NEY5IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRDgxMTJEMjAyQ0VEMDcw
MEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CiAJCUNEOEJGQ0U3MTU1MzEy
MjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCRkNFNTE1NTMxMjI0MDA1QUZCMjUg
LyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLm1tICovOyB9OwogCQlDRDhCRkNFODE1NTMxMjI0
MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCRkNFNjE1NTMxMjI0MDA1QUZCMjUgLyog
V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggKi87IH07CkBAIC0xNTMwLDEwICsxNTI4LDYgQEAK
IAkJQzBDNUIzRUQxMTc3QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRUJGM0YyMTQx
OUNDRTAwRDY1OUU3IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMTFFQkY0MDIxNDE5Q0NFMDBENjU5RTcgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMUQ4MTEyNjIwMkNEN0ZFMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMx
RDgxMTI3MjAyQ0Q4MDAwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzFEODExMjky
MDJDRENDMjAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMxRDgxMTJDMjAyQ0VEMDYwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDgxMTJEMjAyQ0VEMDcwMEVFNzRGOSAvKiBXZWJX
aW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
OEJGQ0U1MTU1MzEyMjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuTGlz
dGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDgzLDEwICsyMDc3LDYg
QEAKIAkJCQlGODM0QUFENjBFNjRCMUM3MDBFMjczN0MgLyogV2ViVGV4dEl0ZXJhdG9yLm1tICov
LAogCQkJCTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8sCiAJ
CQkJNjVBN0Q0NEEwNTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRlLmggKi8s
Ci0JCQkJQzFEODExMjYyMDJDRDdGRTAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLywKLQkJCQlDMUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbSAqLywKLQkJCQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0RjkgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLAotCQkJCUMxRDgxMTI5
MjAyQ0RDQzIwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
Lm1tICovLAogCQkJCTUxQThCNTc5MDQyODM0RjcwMENBMkQzQSAvKiBXZWJWaWV3LmggKi8sCiAJ
CQkJNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi8sCiAJCQkJQkMyRTQ2
NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLmggKi8sCkBAIC0yNzg1LDcgKzI3NzUs
NiBAQAogCQkJCTkzRDQzNkFCMUQ1N0FCRUUwMEFCODVFQSAvKiBET01FeGNlcHRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzRDQzNkFDMUQ1N0FCRUUwMEFCODVFQSAvKiBET01FeHRlbnNpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0MzZBRDFENTdBQkVFMDBBQjg1RUEgLyogRE9NRmls
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTE1MzFCRDgyMTg3Qjk1NDAwMkUzRjgxIC8qIE5TVVJM
RG93bmxvYWRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzNkFGMUQ1N0FCRUUwMEFCODVF
QSAvKiBET01GaWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzNkIwMUQ1N0FC
RUUwMEFCODVFQSAvKiBET01GaWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM2QjIx
RDU3QUJFRTAwQUI4NUVBIC8qIERPTUZpbGVMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApA
QCAtMjk0Miw2ICsyOTMxLDcgQEAKIAkJCQkxQUFGNUNFQTBFRERFMUZFMDA4RDg4M0QgLyogTmV0
c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjVDRUMwRURE
RTFGRTAwOEQ4ODNEIC8qIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUFGNUNFRTBFRERFMUZFMDA4RDg4M0QgLyogTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTUzMUJEODIxODdCOTU0MDAyRTNGODEgLyogTlNV
UkxEb3dubG9hZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3OUIxRDU3QUJFRjAwQUI4
NUVBIC8qIE9iakNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0Mzc5RDFE
NTdBQkVGMDBBQjg1RUEgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDRTQ0RjRBMjA2RDcwRUEwMDNFRkQwMSAvKiBQaW5nSGFuZGxlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTM2ODksOCArMzY3OSw2IEBACiAJCQkJOTM5ODEwQkUwODI0QkYwMTAwOERGMDM4
IC8qIFdlYlVSTHNXaXRoVGl0bGVzLm0gaW4gU291cmNlcyAqLywKIAkJCQlDMEM1QjNFRjExNzdB
NEEwMDAyQjBBRUYgLyogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDYxOERGRjkxREVGNzYwQTAwMzNDM0FBIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQzFEODExMjgyMDJDRDgwMDAwRUU3NEY5IC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQlDMUQ4MTEy
QjIwMkNEQ0M0MDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMTA3MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJW
aWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyRTQ2NEUwRkQ4QTk2ODAwQTlEOURFIC8qIFdl
YlZpZXdEYXRhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzMEMxMkMxQjJDNURGNzAwREVBMDFE
IC8qIFdlYlZpZXdHcm91cC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NzU3OGJmYzAwMjY0ZTRmNDFi
NWVlOWY2ODhhMjZjMjhhZDQ0YTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU8pCi0KLSNpbXBvcnQg
PEFwcEtpdC9OU1dpbmRvd0NvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLX0KLQotQGNsYXNz
IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXI7Ci1AY2xhc3MgV2ViV2luZG93
RmFkZUFuaW1hdGlvbjsKLQotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
IDogTlNXaW5kb3dDb250cm9sbGVyIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudD4gX3ZpZGVvRWxlbWVudDsKLQotICAgIE5TV2luZG93ICpfYmFja2dyb3VuZEZ1bGxzY3Jl
ZW5XaW5kb3c7IC8vIChyZXRhaW4pCi0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlciAqX2h1ZENvbnRyb2xsZXI7IC8vIChyZXRhaW4pCi0KLSAgICBXZWJXaW5kb3dGYWRl
QW5pbWF0aW9uICpfZmFkZUFuaW1hdGlvbjsgLy8gKHJldGFpbikKLQotICAgIEJPT0wgX2lzRW5k
aW5nRnVsbHNjcmVlbjsKLSAgICBCT09MIF9mb3JjZURpc2FibGVBbmltYXRpb247Ci19Ci0KLS0g
KHZvaWQpc2V0VmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50ICopdmlkZW9F
bGVtZW50OwotLSAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCAqKXZpZGVvRWxlbWVudDsKLQot
LSAodm9pZCllbnRlckZ1bGxzY3JlZW46KE5TU2NyZWVuICopc2NyZWVuOwotLSAodm9pZClleGl0
RnVsbHNjcmVlbjsKLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZlMDcxNjRjYWYwNWNhNDgxOWUzMGE3
ODZkY2M4YWQ4M2Q2MDUzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1MTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIgotCi0jaWYg
RU5BQkxFKFZJREVPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgIldlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYldpbmRvd0FuaW1hdGlvbi5o
IgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRp
b24vQVZQbGF5ZXJMYXllci5oPgotI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgotI2ltcG9ydCA8
V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNp
bXBvcnQgPHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCi0KLVNPRlRfTElOS19GUkFNRVdPUksoQVZGb3VuZGF0aW9uKQotU09G
VF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXllcikKLQotQGludGVyZmFjZSBX
ZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgOiBOU1dpbmRvdzxOU0FuaW1hdGlvbkRlbGVnYXRlPiB7
Ci0gICAgU0VMIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQ7Ci0gICAgV2ViV2luZG93
U2NhbGVBbmltYXRpb24gKl9mdWxsc2NyZWVuQW5pbWF0aW9uOyAvLyAocmV0YWluKQotfQotLSAo
dm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1JlY3QpZW5k
UmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBjb250cm9s
bGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbjsKLUBlbmQKLQotQGludGVyZmFjZSBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICgpIDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dD
b250cm9sbGVyRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyCi0KLS0gKGlkKWluaXQKLXsKLSAgICAvLyBEbyBub3QgZGVmZXIgd2lu
ZG93IGNyZWF0aW9uLCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChuZWVk
ZWQgYnkgV2ViV2luZG93U2NhbGVBbmltYXRpb24pLgotICAgIE5TV2luZG93ICp3aW5kb3cgPSBb
W1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU1pl
cm9SZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5n
U3RvcmVCdWZmZXJlZCBkZWZlcjpOT107Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRv
dzp3aW5kb3ddOwotICAgIFt3aW5kb3cgcmVsZWFzZV07Ci0gICAgaWYgKCFzZWxmKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOwotICAgIHJldHVybiBzZWxm
OwotICAgIAotfQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKCFfYmFja2dyb3VuZEZ1
bGxzY3JlZW5XaW5kb3cpOwotICAgIEFTU0VSVCghX2ZhZGVBbmltYXRpb24pOwotICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07Ci0g
ICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKilm
dWxsc2NyZWVuV2luZG93Ci17Ci0gICAgcmV0dXJuIChXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cg
Kilbc3VwZXIgd2luZG93XTsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRMb2FkCi17Ci0gICAgYXV0
byB3aW5kb3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKLSAgICBhdXRvIGNvbnRlbnRWaWV3
ID0gW3dpbmRvdyBjb250ZW50Vmlld107Ci0KLSAgICBbd2luZG93IHNldEhhc1NoYWRvdzpZRVNd
OyAvLyBUaGlzIGlzIG5pY2VyIHdpdGggYSBzaGFkb3cuCi0gICAgW3dpbmRvdyBzZXRMZXZlbDpO
U1BvcFVwTWVudVdpbmRvd0xldmVsLTFdOwotCi0gICAgW2NvbnRlbnRWaWV3IHNldExheWVyOltD
QUxheWVyIGxheWVyXV07Ci0gICAgW2NvbnRlbnRWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsKLQot
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2Vs
ZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6KSBuYW1lOk5T
QXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKLSAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczop
IG5hbWU6TlNBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNOb3RpZmljYXRpb24g
b2JqZWN0Ok5TQXBwXTsKLX0KLQotLSAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCAqKXZpZGVv
RWxlbWVudAotewotICAgIHJldHVybiBfdmlkZW9FbGVtZW50LmdldCgpOwotfQotCi0vLyBGSVhN
RTogVGhpcyBtZXRob2QgaXMgbm90IHJlYWxseSBhIHNldHRlci4gVGhlIGNhbGxlciByZWxpZXMg
b24gaXRzIHNpZGUgZWZmZWN0cywgYW5kIGl0J3MKLS8vIGNhbGxlZCBvbmNlIGVhY2ggdGltZSB3
ZSBlbnRlciBmdWxsIHNjcmVlbi4gU28gaXQgc2hvdWxkIGhhdmUgYSBkaWZmZXJlbnQgbmFtZS4K
LS0gKHZvaWQpc2V0VmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50ICopdmlk
ZW9FbGVtZW50Ci17Ci0gICAgQVNTRVJUKHZpZGVvRWxlbWVudCk7Ci0gICAgX3ZpZGVvRWxlbWVu
dCA9IHZpZGVvRWxlbWVudDsKLQotICAgIGlmICghW3NlbGYgaXNXaW5kb3dMb2FkZWRdKQotICAg
ICAgICByZXR1cm47Ci0gICAgYXV0byBjb3JlUGxheWVyID0gdmlkZW9FbGVtZW50LT5wbGF5ZXIo
KTsKLSAgICBpZiAoIWNvcmVQbGF5ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHBsYXll
ciA9IGNvcmVQbGF5ZXItPm9iakNBVkZvdW5kYXRpb25BVlBsYXllcigpOwotICAgIGlmICghcGxh
eWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNvbnRlbnRWaWV3ID0gW1tzZWxmIGZ1
bGxzY3JlZW5XaW5kb3ddIGNvbnRlbnRWaWV3XTsKLQotICAgIGF1dG8gbGF5ZXIgPSBhZG9wdE5T
KFthbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbbGF5ZXIgc2V0UGxh
eWVyOnBsYXllcl07Ci0KLSAgICBbY29udGVudFZpZXcgc2V0TGF5ZXI6bGF5ZXIuZ2V0KCldOwot
Ci0gICAgLy8gRklYTUU6IFRoZSB3aW5kb3dEaWRMb2FkIG1ldGhvZCBhbHJlYWR5IGNhbGxlZCB0
aGlzLCBzbyBpdCBzaG91bGQKLSAgICAvLyBub3QgYmUgbmVjZXNzYXJ5IHRvIGRvIGl0IGFnYWlu
IGhlcmUuCi0gICAgW2NvbnRlbnRWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsKLQotICAgIC8vIEZJ
WE1FOiBUaGlzIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIGFuZCB3b24ndCBuZWNlc3Nh
cmlseSBiZQotICAgIC8vIGJhbGFuY2VkIGJ5IGNhbGxzIHRvIHdpbmRvd0RpZEV4aXRGdWxsc2Ny
ZWVuIGluIHNvbWUgY2FzZXMsIHNvIGl0Ci0gICAgLy8gd291bGQgYmUgYmV0dGVyIHRvIGNoYW5n
ZSB0aGluZ3Mgc28gdGhlIG9ic2VydmVyIGlzIHJlbGlhYmx5IGFkZGVkCi0gICAgLy8gb25seSBv
bmNlIGFuZCBndWFyYW50ZWVkIHJlbW92ZWQgZXZlbiBpbiB1bnVzdWFsIGVkZ2UgY2FzZXMuCi0g
ICAgW3BsYXllciBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOjAg
Y29udGV4dDpudWxscHRyXTsKLX0KLQotLSAoQ0dGbG9hdCljbGVhckZhZGVBbmltYXRpb24KLXsK
LSAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0gICAgQ0dGbG9hdCBwcmV2aW91
c0FscGhhID0gW19mYWRlQW5pbWF0aW9uIGN1cnJlbnRBbHBoYV07Ci0gICAgW19mYWRlQW5pbWF0
aW9uIHNldFdpbmRvdzpuaWxdOwotICAgIFtfZmFkZUFuaW1hdGlvbiByZWxlYXNlXTsKLSAgICBf
ZmFkZUFuaW1hdGlvbiA9IG5pbDsKLSAgICByZXR1cm4gcHJldmlvdXNBbHBoYTsKLX0KLQotLSAo
dm9pZCl3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbgotewotICAgIENBTGF5ZXIgKmxheWVyID0gW1tb
c2VsZiB3aW5kb3ddIGNvbnRlbnRWaWV3XSBsYXllcl07Ci0gICAgaWYgKFtsYXllciBpc0tpbmRP
ZkNsYXNzOmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSkKLSAgICAgICAgW1soQVZQbGF5ZXJMYXll
ciAqKWxheWVyIHBsYXllcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAicmF0ZSJd
OwotCi0gICAgW3NlbGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKLSAgICBbW3NlbGYgd2luZG93XSBj
bG9zZV07Ci0gICAgW3NlbGYgc2V0V2luZG93Om5pbF07Ci0gICAgW3NlbGYgdXBkYXRlTWVudUFu
ZERvY2tGb3JGdWxsc2NyZWVuXTsgICAKLSAgICBbX2h1ZENvbnRyb2xsZXIgc2V0RGVsZWdhdGU6
bmlsXTsKLSAgICBbX2h1ZENvbnRyb2xsZXIgcmVsZWFzZV07Ci0gICAgX2h1ZENvbnRyb2xsZXIg
PSBuaWw7Ci0gICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBjbG9zZV07Ci0gICAgW19i
YWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyByZWxlYXNlXTsKLSAgICBfYmFja2dyb3VuZEZ1bGxz
Y3JlZW5XaW5kb3cgPSBuaWw7Ci0gICAgCi0gICAgW3NlbGYgYXV0b3JlbGVhc2VdOyAvLyBBc3Nv
Y2lhdGVkIC1yZXRhaW4gaXMgaW4gLWV4aXRGdWxsc2NyZWVuLgotICAgIF9pc0VuZGluZ0Z1bGxz
Y3JlZW4gPSBOTzsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW4KLXsKLSAg
ICBbc2VsZiBjbGVhckZhZGVBbmltYXRpb25dOwotCi0gICAgQVNTRVJUKCFfaHVkQ29udHJvbGxl
cik7Ci0gICAgX2h1ZENvbnRyb2xsZXIgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIgYWxsb2NdIGluaXRdOwotICAgIFtfaHVkQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpz
ZWxmXTsKLQotICAgIFtzZWxmIHVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbl07Ci0gICAg
W05TQ3Vyc29yIHNldEhpZGRlblVudGlsTW91c2VNb3ZlczpZRVNdOwotICAgIAotICAgIC8vIEdp
dmUgdGhlIEhVRCBrZXlib2FyZCBmb2N1cyBpbml0aWFsbHkKLSAgICBbX2h1ZENvbnRyb2xsZXIg
ZmFkZVdpbmRvd0luXTsKLX0KLQotLSAoTlNSZWN0KXZpZGVvRWxlbWVudFJlY3QKLXsKLSAgICBy
ZXR1cm4gX3ZpZGVvRWxlbWVudC0+c2NyZWVuUmVjdCgpOwotfQotCi0tICh2b2lkKWFwcGxpY2F0
aW9uRGlkUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCi17ICAgCi0g
ICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgTlNXaW5kb3cqIGZ1bGxzY3JlZW5X
aW5kb3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKLQotICAgIC8vIFJlcGxpY2F0ZSB0aGUg
UXVpY2tUaW1lIFBsYXllciAoWCkgYmVoYXZpb3Igd2hlbiBsb3NpbmcgYWN0aXZlIGFwcGxpY2F0
aW9uIHN0YXR1czoKLSAgICAvLyBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gdGhlIG1haW4gc2Ny
ZWVuPyAoTm90ZTogdGhpcyBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgb25seSBhIAotICAgIC8vIHNp
bmdsZSBzY3JlZW4gaXMgYXZhaWxhYmxlLikgIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiBvbiB0
aGUgY3VycmVudCBzcGFjZT8gSUZGIHNvLCAKLSAgICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBt
b2RlLiAgICAKLSAgICBpZiAoZnVsbHNjcmVlbldpbmRvdy5zY3JlZW4gPT0gW05TU2NyZWVuIHNj
cmVlbnNdWzBdICYmIGZ1bGxzY3JlZW5XaW5kb3cub25BY3RpdmVTcGFjZSkKLSAgICAgICAgW3Nl
bGYgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjpOT107Ci19Ci0KLQotLy8gTUFS
SzogLQotLy8gTUFSSzogRXhwb3NlZCBJbnRlcmZhY2UKLQotc3RhdGljIE5TUmVjdCBmcmFtZUV4
cGFuZGVkVG9SYXRpb09mRnJhbWUoTlNSZWN0IGZyYW1lVG9FeHBhbmQsIE5TUmVjdCBmcmFtZSkK
LXsKLSAgICAvLyBLZWVwIGEgY29uc3RyYWluZWQgYXNwZWN0IHJhdGlvIGZvciB0aGUgZGVzdGlu
YXRpb24gd2luZG93Ci0gICAgTlNSZWN0IHJlc3VsdCA9IGZyYW1lVG9FeHBhbmQ7Ci0gICAgQ0dG
bG9hdCBuZXdSYXRpbyA9IGZyYW1lLnNpemUud2lkdGggLyBmcmFtZS5zaXplLmhlaWdodDsKLSAg
ICBDR0Zsb2F0IG9yaWdpbmFsUmF0aW8gPSBmcmFtZVRvRXhwYW5kLnNpemUud2lkdGggLyBmcmFt
ZVRvRXhwYW5kLnNpemUuaGVpZ2h0OwotICAgIGlmIChuZXdSYXRpbyA+IG9yaWdpbmFsUmF0aW8p
IHsKLSAgICAgICAgQ0dGbG9hdCBuZXdXaWR0aCA9IG5ld1JhdGlvICogZnJhbWVUb0V4cGFuZC5z
aXplLmhlaWdodDsKLSAgICAgICAgQ0dGbG9hdCBkaWZmID0gbmV3V2lkdGggLSBmcmFtZVRvRXhw
YW5kLnNpemUud2lkdGg7Ci0gICAgICAgIHJlc3VsdC5zaXplLndpZHRoID0gbmV3V2lkdGg7Ci0g
ICAgICAgIHJlc3VsdC5vcmlnaW4ueCAtPSBkaWZmIC8gMjsKLSAgICB9IGVsc2UgewotICAgICAg
ICBDR0Zsb2F0IG5ld0hlaWdodCA9IGZyYW1lVG9FeHBhbmQuc2l6ZS53aWR0aCAvIG5ld1JhdGlv
OwotICAgICAgICBDR0Zsb2F0IGRpZmYgPSBuZXdIZWlnaHQgLSBmcmFtZVRvRXhwYW5kLnNpemUu
aGVpZ2h0OwotICAgICAgICByZXN1bHQuc2l6ZS5oZWlnaHQgPSBuZXdIZWlnaHQ7Ci0gICAgICAg
IHJlc3VsdC5vcmlnaW4ueSAtPSBkaWZmIC8gMjsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotc3RhdGljIE5TV2luZG93ICpjcmVhdGVCYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhO
U1JlY3QgZnJhbWUsIGludCBsZXZlbCkKLXsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tOU1dp
bmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpmcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJs
ZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOwot
ICAgIFt3aW5kb3cgc2V0T3BhcXVlOllFU107Ci0gICAgW3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29s
b3I6W05TQ29sb3IgYmxhY2tDb2xvcl1dOwotICAgIFt3aW5kb3cgc2V0TGV2ZWw6bGV2ZWxdOwot
ICAgIFt3aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKLSAgICByZXR1cm4gd2luZG93
OwotfQotCi0tICh2b2lkKXNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOihCT09M
KWZhZGVJbgotewotICAgIENHRmxvYXQgaW5pdGlhbEFscGhhID0gZmFkZUluID8gMCA6IDE7Ci0g
ICAgaWYgKF9mYWRlQW5pbWF0aW9uKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzdXBwb3J0
IHF1ZXVpbmcgYW5pbWF0aW9uIGlmIHRoZSBwcmV2aW91cyBvbmUgaXNuJ3Qgb3ZlciB5ZXQKLSAg
ICAgICAgaW5pdGlhbEFscGhhID0gW3NlbGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKLSAgICB9Ci0g
ICAgaWYgKCFfZm9yY2VEaXNhYmxlQW5pbWF0aW9uKQotICAgICAgICBfZmFkZUFuaW1hdGlvbiA9
IFtbV2ViV2luZG93RmFkZUFuaW1hdGlvbiBhbGxvY10gaW5pdFdpdGhEdXJhdGlvbjowLjIgd2lu
ZG93Ol9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBpbml0aWFsQWxwaGE6aW5pdGlhbEFscGhh
IGZpbmFsQWxwaGE6ZmFkZUluID8gMSA6IDBdOwotfQotCi0tICh2b2lkKWVudGVyRnVsbHNjcmVl
bjooTlNTY3JlZW4gKilzY3JlZW4KLXsKLSAgICBpZiAoIXNjcmVlbikKLSAgICAgICAgc2NyZWVu
ID0gW05TU2NyZWVuIG1haW5TY3JlZW5dOwotCi0gICAgTlNSZWN0IGVuZEZyYW1lID0gW3NjcmVl
biBmcmFtZV07Ci0gICAgTlNSZWN0IGZyYW1lID0gZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZyYW1l
KFtzZWxmIHZpZGVvRWxlbWVudFJlY3RdLCBlbmRGcmFtZSk7Ci0KLSAgICAvLyBDcmVhdGUgYSBi
bGFjayB3aW5kb3cgaWYgbmVlZGVkCi0gICAgaWYgKCFfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5k
b3cpCi0gICAgICAgIF9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyA9IGNyZWF0ZUJhY2tncm91
bmRGdWxsc2NyZWVuV2luZG93KFtzY3JlZW4gZnJhbWVdLCBbW3NlbGYgd2luZG93XSBsZXZlbF0t
MSk7Ci0gICAgZWxzZQotICAgICAgICBbX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93IHNldEZy
YW1lOltzY3JlZW4gZnJhbWVdIGRpc3BsYXk6Tk9dOwotCi0gICAgW3NlbGYgc2V0dXBGYWRlQW5p
bWF0aW9uSWZOZWVkZWRBbmRGYWRlSW46WUVTXTsKLSAgICBpZiAoX2ZvcmNlRGlzYWJsZUFuaW1h
dGlvbikgewotICAgICAgICAvLyBUaGlzIHdpbGwgZGlzYWJsZSBzY2FsZSBhbmltYXRpb24KLSAg
ICAgICAgZnJhbWUgPSBOU1plcm9SZWN0OwotICAgIH0KLSAgICBbW3NlbGYgZnVsbHNjcmVlbldp
bmRvd10gYW5pbWF0ZUZyb21SZWN0OmZyYW1lIHRvUmVjdDplbmRGcmFtZSB3aXRoU3ViQW5pbWF0
aW9uOl9mYWRlQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246QHNlbGVjdG9yKHdpbmRvd0RpZEVu
dGVyRnVsbHNjcmVlbildOwotCi0gICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBvcmRl
cldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3dd
IHdpbmRvd051bWJlcl1dOwotfQotCi0tICh2b2lkKWV4aXRGdWxsc2NyZWVuCi17Ci0gICAgaWYg
KF9pc0VuZGluZ0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLSAgICBfaXNFbmRpbmdGdWxs
c2NyZWVuID0gWUVTOwotICAgIFtfaHVkQ29udHJvbGxlciBjbG9zZVdpbmRvd107Ci0KLSAgICBO
U1JlY3QgZW5kRnJhbWUgPSBbc2VsZiB2aWRlb0VsZW1lbnRSZWN0XTsKLQotICAgIFtzZWxmIHNl
dHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOk5PXTsKLSAgICBpZiAoX2ZvcmNlRGlz
YWJsZUFuaW1hdGlvbikgewotICAgICAgICAvLyBUaGlzIHdpbGwgZGlzYWJsZSBzY2FsZSBhbmlt
YXRpb24KLSAgICAgICAgZW5kRnJhbWUgPSBOU1plcm9SZWN0OwotICAgIH0KLSAgICAKLSAgICAv
LyBXZSBoYXZlIHRvIHJldGFpbiBvdXJzZWx2ZXMgYmVjYXVzZSB3ZSB3YW50IHRvIGJlIGFsaXZl
IGZvciB0aGUgZW5kIG9mIHRoZSBhbmltYXRpb24uCi0gICAgLy8gSWYgb3VyIG93bmVyIHJlbGVh
c2VzIHVzIHdlIGNvdWxkIGNyYXNoIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLgotICAgIC8vIEJh
bGFuY2VkIGluIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuCi0gICAgW3NlbGYgcmV0YWluXTsgICAg
Ci0KLSAgICBOU1JlY3Qgc3RhcnRGcmFtZSA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKLSAgICBl
bmRGcmFtZSA9IGZyYW1lRXhwYW5kZWRUb1JhdGlvT2ZGcmFtZShlbmRGcmFtZSwgc3RhcnRGcmFt
ZSk7Ci0KLSAgICBbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5pbWF0ZUZyb21SZWN0OnN0YXJ0
RnJhbWUgdG9SZWN0OmVuZEZyYW1lIHdpdGhTdWJBbmltYXRpb246X2ZhZGVBbmltYXRpb24gY29u
dHJvbGxlckFjdGlvbjpAc2VsZWN0b3Iod2luZG93RGlkRXhpdEZ1bGxzY3JlZW4pXTsKLX0KLQot
LSAodm9pZClhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6KE5TTm90aWZpY2F0
aW9uKilub3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAg
ICAvLyBUaGUgdXNlciBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBtYWluIHNjcmVlbiBieSBtb3Zpbmcg
dGhlIG1lbnUgYmFyLCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQKLSAgICAvLyB0aGUgRG9jaydz
IHNpemUgb3IgbG9jYXRpb24sIG9yIHRoZXkgbWF5IGhhdmUgY2hhbmdlZCB0aGUgZnVsbHNjcmVl
biBzY3JlZW4ncyBkaW1lbnNpb25zLiAgCi0gICAgLy8gVXBkYXRlIG91ciBwcmVzZW50YXRpb24g
cGFyYW1ldGVycywgYW5kIGVuc3VyZSB0aGF0IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgb2NjdXBp
ZXMgdGhlIAotICAgIC8vIGVudGlyZSBzY3JlZW46Ci0gICAgW3NlbGYgdXBkYXRlTWVudUFuZERv
Y2tGb3JGdWxsc2NyZWVuXTsKLSAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpbW1tzZWxmIHdp
bmRvd10gc2NyZWVuXSBmcmFtZV0gZGlzcGxheTpZRVNdOwotfQotCi0tICh2b2lkKXVwZGF0ZU1l
bnVBbmREb2NrRm9yRnVsbHNjcmVlbgotewotICAgIC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRp
b25PcHRpb25zIGlzIGF2YWlsYWJsZSBvbiA+IDEwLjYgb25seToKLSAgICBOU0FwcGxpY2F0aW9u
UHJlc2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkRl
ZmF1bHQ7Ci0gICAgTlNTY3JlZW4qIGZ1bGxzY3JlZW5TY3JlZW4gPSBbW3NlbGYgd2luZG93XSBz
Y3JlZW5dOwotCi0gICAgaWYgKCFfaXNFbmRpbmdGdWxsc2NyZWVuKSB7Ci0gICAgICAgIC8vIEF1
dG8taGlkZSB0aGUgbWVudSBiYXIgaWYgdGhlIGZ1bGxzY3JlZW5TY3JlZW4gY29udGFpbnMgdGhl
IG1lbnUgYmFyOgotICAgICAgICAvLyBOT1RFOiBpZiB0aGUgZnVsbHNjcmVlblNjcmVlbiBjb250
YWlucyB0aGUgbWVudSBiYXIgYnV0IG5vdCB0aGUgZG9jaywgd2UgbXVzdCBzdGlsbCAKLSAgICAg
ICAgLy8gYXV0by1oaWRlIHRoZSBkb2NrLCBvciBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24u
Ci0gICAgICAgIGlmIChbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gPT0gZnVs
bHNjcmVlblNjcmVlbikKLSAgICAgICAgICAgIG9wdGlvbnMgfD0gKE5TQXBwbGljYXRpb25QcmVz
ZW50YXRpb25BdXRvSGlkZU1lbnVCYXIgfCBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hp
ZGVEb2NrKTsKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgc2NyZWVuIGNvbnRhaW5z
IHRoZSBkb2NrIGJ5IGNvbXBhcmluZyB0aGUgc2NyZWVuJ3MgZnJhbWUgdG8gaXRzCi0gICAgICAg
IC8vIHZpc2libGVGcmFtZTsgaWYgYSBkb2NrIGlzIHByZXNlbnQsIHRoZSB2aXNpYmxlRnJhbWUg
d2lsbCBkaWZmZXIuIElmIHRoZSBjdXJyZW50IHNjcmVlbgotICAgICAgICAvLyBjb250YWlucyB0
aGUgZG9jaywgaGlkZSBpdC4KLSAgICAgICAgZWxzZSBpZiAoIU5TRXF1YWxSZWN0cyhbZnVsbHNj
cmVlblNjcmVlbiBmcmFtZV0sIFtmdWxsc2NyZWVuU2NyZWVuIHZpc2libGVGcmFtZV0pKQotICAg
ICAgICAgICAgb3B0aW9ucyB8PSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2Nr
OwotICAgIH0KLQotICAgIE5TQXBwLnByZXNlbnRhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwotfQot
Ci0vLyBNQVJLOiAtCi0vLyBNQVJLOiBXaW5kb3cgY2FsbGJhY2sKLQotLSAodm9pZClfcmVxdWVz
dEV4aXQKLXsKLSAgICBpZiAoX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgX3ZpZGVvRWxlbWVudC0+
ZXhpdEZ1bGxzY3JlZW4oKTsKLSAgICBfZm9yY2VEaXNhYmxlQW5pbWF0aW9uID0gTk87Ci19Ci0K
LS0gKHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjooQk9PTClhbmltYXRp
b24KLXsKLSAgICBpZiAoX2lzRW5kaW5nRnVsbHNjcmVlbikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbiA9ICFhbmltYXRpb247Ci0gICAgW3NlbGYgcGVyZm9y
bVNlbGVjdG9yOkBzZWxlY3RvcihfcmVxdWVzdEV4aXQpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVs
YXk6MF07Ci0KLX0KLQotLSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4KLXsKLSAgICBbc2Vs
ZiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOllFU107Ci19Ci0KLS0gKHZvaWQp
ZmFkZUhVREluCi17Ci0gICAgW19odWRDb250cm9sbGVyIGZhZGVXaW5kb3dJbl07Ci19Ci0KLS0g
KHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0
OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAq
KWNvbnRleHQKLXsKLSAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKLSAgICBVTlVTRURfUEFSQU0o
Y2hhbmdlKTsKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0KLSAgICBpZiAoW2tleVBhdGgg
aXNFcXVhbFRvOkAicmF0ZSJdKQotICAgICAgICBbc2VsZiByYXRlQ2hhbmdlZDpuaWxdOwotfQot
Ci0tICh2b2lkKXJhdGVDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAqKXVudXNlZE5vdGlmaWNhdGlv
bgotewotICAgIFVOVVNFRF9QQVJBTSh1bnVzZWROb3RpZmljYXRpb24pOwotICAgIFtfaHVkQ29u
dHJvbGxlciB1cGRhdGVSYXRlXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViVmlk
ZW9GdWxsc2NyZWVuV2luZG93Ci0KLS0gKGlkKWluaXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdClj
b250ZW50UmVjdCBzdHlsZU1hc2s6KE5TVUludGVnZXIpYVN0eWxlIGJhY2tpbmc6KE5TQmFja2lu
Z1N0b3JlVHlwZSlidWZmZXJpbmdUeXBlIGRlZmVyOihCT09MKWZsYWcKLXsKLSAgICBVTlVTRURf
UEFSQU0oYVN0eWxlKTsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoQ29udGVudFJlY3Q6Y29u
dGVudFJlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpidWZmZXJp
bmdUeXBlIGRlZmVyOmZsYWddOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICBbc2VsZiBzZXRPcGFxdWU6Tk9dOwotICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpb
TlNDb2xvciBjbGVhckNvbG9yXV07Ci0gICAgW3NlbGYgc2V0SWdub3Jlc01vdXNlRXZlbnRzOk5P
XTsKLSAgICBbc2VsZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZRVNdOwotICAgIHJldHVy
biBzZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBBU1NFUlQoIV9mdWxsc2NyZWVu
QW5pbWF0aW9uKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKEJPT0wpcmVzaWduRmly
c3RSZXNwb25kZXIKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKEJPT0wpY2FuQmVjb21lS2V5
V2luZG93Ci17Ci0gICAgcmV0dXJuIE5POwotfQotCi0tICh2b2lkKW1vdXNlRG93bjooTlNFdmVu
dCAqKWV2ZW50Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKLX0KLQotLSAodm9pZCljYW5j
ZWxPcGVyYXRpb246KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAg
IFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dOwotfQotCi0t
ICh2b2lkKWFuaW1hdGVkUmVzaXplRGlkRW5kCi17Ci0gICAgaWYgKF9jb250cm9sbGVyQWN0aW9u
T25BbmltYXRpb25FbmQpCi0gICAgICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSBwZXJmb3Jt
U2VsZWN0b3I6X2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZF07Ci0gICAgX2NvbnRyb2xs
ZXJBY3Rpb25PbkFuaW1hdGlvbkVuZCA9IE5VTEw7Ci19Ci0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9u
IHdpbGwgYW5pbWF0ZSBhIGNoYW5nZSBvZiBmcmFtZSByZWN0YW5nbGUKLS8vIFdlIHN1cHBvcnQg
cXVldWluZyBhbmltYXRpb24sIHRoYXQgbWVhbnMgdGhhdCB3ZSdsbCBjb3JyZWN0bHkKLS8vIGlu
dGVycnVwdCB0aGUgcnVubmluZyBhbmltYXRpb24sIGFuZCBxdWV1ZSB0aGUgbmV4dCBvbmUuCi0v
LwotLSAodm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1Jl
Y3QpZW5kUmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBj
b250cm9sbGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbgotewotICAgIF9jb250cm9sbGVy
QWN0aW9uT25BbmltYXRpb25FbmQgPSBjb250cm9sbGVyQWN0aW9uOwotCi0gICAgQk9PTCB3YXNB
bmltYXRpbmcgPSBOTzsKLSAgICBpZiAoX2Z1bGxzY3JlZW5BbmltYXRpb24pIHsKLSAgICAgICAg
d2FzQW5pbWF0aW5nID0gWUVTOwotCi0gICAgICAgIC8vIEludGVycnVwdCBhbnkgcnVubmluZyBh
bmltYXRpb24uCi0gICAgICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsK
LQotICAgICAgICAvLyBTYXZlIHRoZSBjdXJyZW50IHJlY3QgdG8gZW5zdXJlIGEgc21vb3RoIHRy
YW5zaXRpb24uCi0gICAgICAgIHN0YXJ0UmVjdCA9IFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBjdXJy
ZW50RnJhbWVdOwotICAgICAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gcmVsZWFzZV07Ci0gICAg
ICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gbmlsOwotICAgIH0KLSAgICAKLSAgICBpZiAoTlNJ
c0VtcHR5UmVjdChzdGFydFJlY3QpIHx8IE5TSXNFbXB0eVJlY3QoZW5kUmVjdCkpIHsKLSAgICAg
ICAgLy8gRmFrZWx5IGVuZCB0aGUgc3ViYW5pbWF0aW9uLgotICAgICAgICBbc3ViQW5pbWF0aW9u
IHNldEN1cnJlbnRQcm9ncmVzczoxXTsKLSAgICAgICAgLy8gQW5kIHJlbW92ZSB0aGUgd2VhayBs
aW5rIHRvIHRoZSB3aW5kb3cuCi0gICAgICAgIFtzdWJBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07
Ci0KLSAgICAgICAgW3NlbGYgc2V0RnJhbWU6ZW5kUmVjdCBkaXNwbGF5Ok5PXTsKLSAgICAgICAg
W3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07Ci0gICAgICAgIFtzZWxmIGFuaW1hdGVk
UmVzaXplRGlkRW5kXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghd2FzQW5p
bWF0aW5nKSB7Ci0gICAgICAgIC8vIFdlJ2xsIGRvd25zY2FsZSB0aGUgd2luZG93IGR1cmluZyB0
aGUgYW5pbWF0aW9uIGJhc2VkIG9uIHRoZSBoaWdoZXIgcmVzb2x1dGlvbiByZWN0Ci0gICAgICAg
IEJPT0wgaGlnaGVyUmVzb2x1dGlvbklzRW5kUmVjdCA9IHN0YXJ0UmVjdC5zaXplLndpZHRoIDwg
ZW5kUmVjdC5zaXplLndpZHRoICYmIHN0YXJ0UmVjdC5zaXplLmhlaWdodCA8IGVuZFJlY3Quc2l6
ZS5oZWlnaHQ7Ci0gICAgICAgIFtzZWxmIHNldEZyYW1lOmhpZ2hlclJlc29sdXRpb25Jc0VuZFJl
Y3QgPyBlbmRSZWN0IDogc3RhcnRSZWN0IGRpc3BsYXk6Tk9dOwotICAgIH0KLSAgICAKLSAgICBB
U1NFUlQoIV9mdWxsc2NyZWVuQW5pbWF0aW9uKTsKLSAgICBfZnVsbHNjcmVlbkFuaW1hdGlvbiA9
IFtbV2ViV2luZG93U2NhbGVBbmltYXRpb24gYWxsb2NdIGluaXRXaXRoSGludGVkRHVyYXRpb246
MC4yIHdpbmRvdzpzZWxmIGluaXRhbEZyYW1lOnN0YXJ0UmVjdCBmaW5hbEZyYW1lOmVuZFJlY3Rd
OwotICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRTdWJBbmltYXRpb246c3ViQW5pbWF0aW9u
XTsKLSAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgCi0g
ICAgLy8gTWFrZSBzdXJlIHRoZSBhbmltYXRpb24gaGFzIHNjYWxlZCB0aGUgd2luZG93IGJlZm9y
ZSBzaG93aW5nIGl0LgotICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jl
c3M6MF07Ci0gICAgW3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07Ci0KLSAgICBbX2Z1
bGxzY3JlZW5BbmltYXRpb24gc3RhcnRBbmltYXRpb25dOwotfQotCi0tICh2b2lkKWFuaW1hdGlv
bkRpZEVuZDooTlNBbmltYXRpb24gKilhbmltYXRpb24KLXsKLSAgICBpZiAoIVtOU1RocmVhZCBp
c01haW5UaHJlYWRdKSB7Ci0gICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVh
ZDpAc2VsZWN0b3IoYW5pbWF0aW9uRGlkRW5kOikgd2l0aE9iamVjdDphbmltYXRpb24gd2FpdFVu
dGlsRG9uZTpOT107Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGFuaW1hdGlvbiAh
PSBfZnVsbHNjcmVlbkFuaW1hdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhlIGFu
aW1hdGlvbiBpcyBub3QgcmVhbGx5IG92ZXIgYW5kIHdhcyBpbnRlcnJ1cHRlZAotICAgIC8vIERv
bid0IHNlbmQgY29tcGxldGlvbiBldmVudHMuCi0gICAgaWYgKFthbmltYXRpb24gY3VycmVudFBy
b2dyZXNzXSA8IDEuMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRW5zdXJlIHRoYXQgYW5p
bWF0aW9uIChhbmQgc3ViYW5pbWF0aW9uKSBkb24ndCBrZWVwCi0gICAgLy8gdGhlIHdlYWsgcmVm
ZXJlbmNlIHRvIHRoZSB3aW5kb3cgaXZhciB0aGF0IG1heSBiZSBkZXN0cm95ZWQgZnJvbQotICAg
IC8vIG5vdyBvbi4KLSAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0V2luZG93Om5pbF07Ci0K
LSAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gYXV0b3JlbGVhc2VdOwotICAgIF9mdWxsc2NyZWVu
QW5pbWF0aW9uID0gbmlsOwotCi0gICAgW3NlbGYgYW5pbWF0ZWRSZXNpemVEaWRFbmRdOwotfQot
Ci0tICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVudAotewotICAgIFVOVVNFRF9QQVJB
TShldmVudCk7Ci0gICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIGZhZGVIVURJbl07Ci19Ci0K
LUBlbmQKLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjY3ZmVhZTEzNDJlNmE5NzdjNTZmYjFmNWM1MDQ0MjEyMDBkZDIxOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xs
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5B
QkxFKFZJREVPKQotCi0jaW1wb3J0IDxBcHBLaXQvTlNCdXR0b24uaD4KLSNpbXBvcnQgPEFwcEtp
dC9OU0NvbnRyb2wuaD4KLSNpbXBvcnQgPEFwcEtpdC9OU1RleHRGaWVsZC5oPgotI2ltcG9ydCA8
QXBwS2l0L05TVHJhY2tpbmdBcmVhLmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNXaW5kb3cuaD4KLSNp
bXBvcnQgPEFwcEtpdC9OU1dpbmRvd0NvbnRyb2xsZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLX0KLQotQHByb3RvY29sIFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZTsKLQotQGludGVyZmFjZSBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyIHsKLSAgICBp
ZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPiBfZGVsZWdh
dGU7Ci0gICAgTlNUaW1lciAqX3RpbWVsaW5lVXBkYXRlVGltZXI7Ci0gICAgTlNUcmFja2luZ0Fy
ZWEgKl9hcmVhOwotICAgIEJPT0wgX21vdXNlSXNJbkhVRDsKLSAgICBCT09MIF9pc0VuZGluZ0Z1
bGxzY3JlZW47Ci0gICAgQk9PTCBfaXNTY3J1YmJpbmc7Ci0KLSAgICBOU0NvbnRyb2wgKl90aW1l
bGluZTsKLSAgICBOU1RleHRGaWVsZCAqX3JlbWFpbmluZ1RpbWVUZXh0OwotICAgIE5TVGV4dEZp
ZWxkICpfZWxhcHNlZFRpbWVUZXh0OwotICAgIE5TQ29udHJvbCAqX3ZvbHVtZVNsaWRlcjsKLSAg
ICBOU0J1dHRvbiAqX3BsYXlCdXR0b247Ci19Ci0KLS0gKGlkIDxXZWJWaWRlb0Z1bGxzY3JlZW5I
VURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlOwotLSAodm9pZClzZXREZWxlZ2F0
ZTooaWQgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVs
ZWdhdGU7Ci0tICh2b2lkKWZhZGVXaW5kb3dJbjsKLS0gKHZvaWQpZmFkZVdpbmRvd091dDsKLS0g
KHZvaWQpY2xvc2VXaW5kb3c7Ci0tICh2b2lkKXVwZGF0ZVJhdGU7Ci0KLUBlbmQKLQotQHByb3Rv
Y29sIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZSA8TlNPYmpl
Y3Q+Ci0tICh2b2lkKXJlcXVlc3RFeGl0RnVsbHNjcmVlbjsKLS0gKFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQqKXZpZGVvRWxlbWVudDsKLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdjM2Y1MDZlMDZkOTdiZmRlOGVhNGNiMDk1NjBhOGM3MGIxMjNmMTIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNzMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShWSURF
TykgJiYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLmgiCi0KLSNpbXBvcnQgPFdlYkNvcmUvRmxvYXRDb252ZXJzaW9uLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL21hYy9RVEtpdFNQSS5oPgotI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoUVRLaXQpCi0K
LVNPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURCYWNrZ3JvdW5kVmlldykKLVNPRlRfTElOS19D
TEFTUyhRVEtpdCwgUVRIVURCdXR0b24pCi1TT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVEU2xp
ZGVyKQotU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFRpbWVsaW5lKQotCi0jZGVmaW5lIFFU
SFVEQmFja2dyb3VuZFZpZXcgZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkKLSNkZWZpbmUg
UVRIVURCdXR0b24gZ2V0UVRIVURCdXR0b25DbGFzcygpCi0jZGVmaW5lIFFUSFVEU2xpZGVyIGdl
dFFUSFVEU2xpZGVyQ2xhc3MoKQotI2RlZmluZSBRVEhVRFRpbWVsaW5lIGdldFFUSFVEVGltZWxp
bmVDbGFzcygpCi0KLWVudW0gY2xhc3MgTWVkaWFVSUNvbnRyb2wgewotICAgIFRpbWVsaW5lLAot
ICAgIFNsaWRlciwKLSAgICBQbGF5UGF1c2VCdXR0b24sCi0gICAgRXhpdEZ1bGxzY3JlZW5CdXR0
b24sCi0gICAgUmV3aW5kQnV0dG9uLAotICAgIEZhc3RGb3J3YXJkQnV0dG9uLAotICAgIFZvbHVt
ZVVwQnV0dG9uLAotICAgIFZvbHVtZURvd25CdXR0b24sCi19OwotCi11c2luZyBXZWJDb3JlOjpI
VE1MVmlkZW9FbGVtZW50OwotdXNpbmcgV2ViQ29yZTo6bmFycm93UHJlY2lzaW9uVG9GbG9hdDsK
LQotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIChQcml2
YXRlKSA8TlNXaW5kb3dEZWxlZ2F0ZT4KLQotLSAodm9pZCl1cGRhdGVUaW1lOwotLSAodm9pZCl0
aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDooaWQpc2VuZGVyOwotLSAoZmxvYXQpY3VycmVudFRpbWU7
Ci0tICh2b2lkKXNldEN1cnJlbnRUaW1lOihmbG9hdCljdXJyZW50VGltZTsKLS0gKGRvdWJsZSlk
dXJhdGlvbjsKLQotLSAodm9pZCl2b2x1bWVDaGFuZ2VkOihpZClzZW5kZXI7Ci0tIChmbG9hdClt
YXhWb2x1bWU7Ci0tIChmbG9hdCl2b2x1bWU7Ci0tICh2b2lkKXNldFZvbHVtZTooZmxvYXQpdm9s
dW1lOwotLSAodm9pZClkZWNyZW1lbnRWb2x1bWU7Ci0tICh2b2lkKWluY3JlbWVudFZvbHVtZTsK
LQotLSAodm9pZCl1cGRhdGVQbGF5QnV0dG9uOwotLSAodm9pZCl0b2dnbGVQbGF5aW5nOihpZClz
ZW5kZXI7Ci0tIChCT09MKXBsYXlpbmc7Ci0tICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWlu
ZzsKLQotLSAodm9pZClyZXdpbmQ6KGlkKXNlbmRlcjsKLS0gKHZvaWQpZmFzdEZvcndhcmQ6KGlk
KXNlbmRlcjsKLQotLSAoTlNTdHJpbmcgKilyZW1haW5pbmdUaW1lVGV4dDsKLS0gKE5TU3RyaW5n
ICopZWxhcHNlZFRpbWVUZXh0OwotCi0tICh2b2lkKWV4aXRGdWxsc2NyZWVuOihpZClzZW5kZXI7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IDogTlNXaW5k
b3cKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdwot
Ci0tIChpZClpbml0V2l0aENvbnRlbnRSZWN0OihOU1JlY3QpY29udGVudFJlY3Qgc3R5bGVNYXNr
OihOU1VJbnRlZ2VyKWFTdHlsZSBiYWNraW5nOihOU0JhY2tpbmdTdG9yZVR5cGUpYnVmZmVyaW5n
VHlwZSBkZWZlcjooQk9PTClmbGFnCi17Ci0gICAgVU5VU0VEX1BBUkFNKGFTdHlsZSk7Ci0gICAg
c2VsZiA9IFtzdXBlciBpbml0V2l0aENvbnRlbnRSZWN0OmNvbnRlbnRSZWN0IHN0eWxlTWFzazpO
U1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpidWZmZXJpbmdUeXBlIGRlZmVyOmZs
YWddOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFtzZWxmIHNl
dE9wYXF1ZTpOT107Ci0gICAgW3NlbGYgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGNsZWFy
Q29sb3JdXTsKLSAgICBbc2VsZiBzZXRMZXZlbDpOU1BvcFVwTWVudVdpbmRvd0xldmVsXTsKLSAg
ICBbc2VsZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZRVNdOwotICAgIFtzZWxmIHNldEln
bm9yZXNNb3VzZUV2ZW50czpOT107Ci0gICAgW3NlbGYgc2V0TW92YWJsZUJ5V2luZG93QmFja2dy
b3VuZDpZRVNdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEJPT0wpY2FuQmVjb21lS2V5
V2luZG93Ci17Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotLSAodm9pZCljYW5jZWxPcGVyYXRpb246
KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtbc2VsZiB3aW5k
b3dDb250cm9sbGVyXSBleGl0RnVsbHNjcmVlbjpzZWxmXTsKLX0KLQotLSAodm9pZCljZW50ZXIK
LXsKLSAgICBOU1JlY3QgaHVkRnJhbWUgPSBbc2VsZiBmcmFtZV07Ci0gICAgTlNSZWN0IHNjcmVl
bkZyYW1lID0gW1tOU1NjcmVlbiBtYWluU2NyZWVuXSBmcmFtZV07Ci0gICAgW3NlbGYgc2V0RnJh
bWVUb3BMZWZ0UG9pbnQ6TlNNYWtlUG9pbnQoc2NyZWVuRnJhbWUub3JpZ2luLnggKyAoc2NyZWVu
RnJhbWUuc2l6ZS53aWR0aCAtIGh1ZEZyYW1lLnNpemUud2lkdGgpIC8gMiwgc2NyZWVuRnJhbWUu
b3JpZ2luLnkgKyAoc2NyZWVuRnJhbWUuc2l6ZS5oZWlnaHQgLSBodWRGcmFtZS5zaXplLmhlaWdo
dCkgLyA2KV07Ci19Ci0KLS0gKHZvaWQpa2V5RG93bjooTlNFdmVudCAqKWV2ZW50Ci17Ci0gICAg
W3N1cGVyIGtleURvd246ZXZlbnRdOwotICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSBmYWRl
V2luZG93SW5dOwotfQotCi0tIChCT09MKXJlc2lnbkZpcnN0UmVzcG9uZGVyCi17Ci0gICAgcmV0
dXJuIE5POwotfQotCi0tIChCT09MKXBlcmZvcm1LZXlFcXVpdmFsZW50OihOU0V2ZW50ICopZXZl
bnQKLXsKLSAgICAvLyBCbG9jayBhbGwgY29tbWFuZCBrZXkgZXZlbnRzIHdoaWxlIHRoZSBmdWxs
c2NyZWVuIHdpbmRvdyBpcyB1cC4KLSAgICBpZiAoW2V2ZW50IHR5cGVdICE9IE5TRXZlbnRUeXBl
S2V5RG93bikKLSAgICAgICAgcmV0dXJuIE5POwotICAgIAotICAgIGlmICghKFtldmVudCBtb2Rp
ZmllckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5kKSkKLSAgICAgICAgcmV0dXJu
IE5POwotICAgIHJldHVybiBZRVM7Ci19Ci0KLUBlbmQKLQotc3RhdGljIGNvbnN0IENHRmxvYXQg
d2luZG93SGVpZ2h0ID0gNTk7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCB3aW5kb3dXaWR0aCA9IDQz
ODsKLQotc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIEhVRFdpbmRvd0ZhZGVPdXREZWxheSA9
IDM7Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyCi0KLS0gKGlkKWluaXQKLXsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgw
LCAwLCB3aW5kb3dXaWR0aCwgd2luZG93SGVpZ2h0KSBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1h
c2tCb3JkZXJsZXNzIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107Ci0g
ICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRvdzp3aW5kb3ddOwotICAgIFt3aW5kb3cgc2V0
RGVsZWdhdGU6c2VsZl07Ci0gICAgW3dpbmRvdyByZWxlYXNlXTsKLSAgICBpZiAoIXNlbGYpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgW3NlbGYgd2luZG93RGlkTG9hZF07Ci0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIEFTU0VSVCghX3RpbWVsaW5lVXBk
YXRlVGltZXIpOwotICAgIEFTU0VSVCghX2FyZWEpOwotICAgIEFTU0VSVCghX2lzU2NydWJiaW5n
KTsKLSAgICBbX3RpbWVsaW5lIHJlbGVhc2VdOwotICAgIFtfcmVtYWluaW5nVGltZVRleHQgcmVs
ZWFzZV07Ci0gICAgW19lbGFwc2VkVGltZVRleHQgcmVsZWFzZV07Ci0gICAgW192b2x1bWVTbGlk
ZXIgcmVsZWFzZV07Ci0gICAgW19wbGF5QnV0dG9uIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFs
bG9jXTsKLX0KLQotLSAodm9pZClzZXRBcmVhOihOU1RyYWNraW5nQXJlYSAqKWFyZWEKLXsKLSAg
ICBpZiAoYXJlYSA9PSBfYXJlYSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtfYXJlYSByZWxlYXNl
XTsKLSAgICBfYXJlYSA9IFthcmVhIHJldGFpbl07Ci19Ci0KLS0gKHZvaWQpa2V5RG93bjooTlNF
dmVudCAqKWV2ZW50Ci17Ci0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlmIChbY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzIGxlbmd0aF0gPT0gMSkgewotICAgICAgICBzd2l0Y2ggKFtj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgY2hhcmFjdGVyQXRJbmRleDowXSkgewotICAgICAg
ICBjYXNlICcgJzoKLSAgICAgICAgICAgIFtzZWxmIHRvZ2dsZVBsYXlpbmc6bmlsXTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBOU1VwQXJyb3dGdW5jdGlvbktleToKLSAgICAg
ICAgICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0
aW9uKQotICAgICAgICAgICAgICAgIFtzZWxmIHNldFZvbHVtZTpbc2VsZiBtYXhWb2x1bWVdXTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBbc2VsZiBpbmNyZW1lbnRWb2x1bWVd
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25L
ZXk6Ci0gICAgICAgICAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNFdmVudE1vZGlm
aWVyRmxhZ09wdGlvbikKLSAgICAgICAgICAgICAgICBbc2VsZiBzZXRWb2x1bWU6MF07Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgW3NlbGYgZGVjcmVtZW50Vm9sdW1lXTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgW3N1cGVyIGtleURvd246ZXZlbnRdOwotfQotCi0tIChp
ZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0
ZQotewotICAgIHJldHVybiBfZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2V0RGVsZWdhdGU6KGlk
IDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRl
Ci17Ci0gICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2NoZWR1bGVUaW1l
VXBkYXRlCi17Ci0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0
aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1bnNjaGVkdWxlVGltZVVwZGF0ZSkgb2Jq
ZWN0OnNlbGZdOwotCi0gICAgLy8gRmlyc3QsIHVwZGF0ZSByaWdodCBhd2F5LCB0aGVuIHNjaGVk
dWxlIGZ1dHVyZSB1cGRhdGUKLSAgICBbc2VsZiB1cGRhdGVUaW1lXTsKLSAgICBbc2VsZiB1cGRh
dGVQbGF5QnV0dG9uXTsKLQotICAgIFtfdGltZWxpbmVVcGRhdGVUaW1lciBpbnZhbGlkYXRlXTsK
LSAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgcmVsZWFzZV07Ci0KLSAgICAvLyBOb3RlIHRoYXQg
dGhpcyBjcmVhdGVzIGEgcmV0YWluIGN5Y2xlIGJldHdlZW4gdGhlIHdpbmRvdyBhbmQgdXMuCi0g
ICAgX3RpbWVsaW5lVXBkYXRlVGltZXIgPSBbW05TVGltZXIgdGltZXJXaXRoVGltZUludGVydmFs
OjAuMjUgdGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZVRpbWUpIHVzZXJJbmZv
Om5pbCByZXBlYXRzOllFU10gcmV0YWluXTsKLSAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9v
cF0gYWRkVGltZXI6X3RpbWVsaW5lVXBkYXRlVGltZXIgZm9yTW9kZTpOU1J1bkxvb3BDb21tb25N
b2Rlc107Ci19Ci0KLS0gKHZvaWQpdW5zY2hlZHVsZVRpbWVVcGRhdGUKLXsKLSAgICBbTlNPYmpl
Y3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKHVuc2NoZWR1bGVUaW1lVXBkYXRlKSBvYmplY3Q6bmlsXTsKLQotICAgIFtfdGlt
ZWxpbmVVcGRhdGVUaW1lciBpbnZhbGlkYXRlXTsKLSAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIg
cmVsZWFzZV07Ci0gICAgX3RpbWVsaW5lVXBkYXRlVGltZXIgPSBuaWw7Ci19Ci0KLS0gKHZvaWQp
ZmFkZVdpbmRvd0luCi17Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107Ci0g
ICAgaWYgKCFbd2luZG93IGlzVmlzaWJsZV0pCi0gICAgICAgIFt3aW5kb3cgc2V0QWxwaGFWYWx1
ZTowXTsKLQotICAgIFt3aW5kb3cgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07Ci0gICAgW1t3
aW5kb3cgYW5pbWF0b3JdIHNldEFscGhhVmFsdWU6MV07Ci0gICAgW3NlbGYgc2NoZWR1bGVUaW1l
VXBkYXRlXTsKLQotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dp
dGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgb2JqZWN0Om5p
bF07Ci0gICAgaWYgKCFfbW91c2VJc0luSFVEICYmIFtzZWxmIHBsYXlpbmddKSAvLyBEb24ndCBm
YWRlIG91dCB3aGVuIHBhdXNlZC4KLSAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxl
Y3RvcihmYWRlV2luZG93T3V0KSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OkhVRFdpbmRvd0Zh
ZGVPdXREZWxheV07Ci19Ci0KLS0gKHZvaWQpZmFkZVdpbmRvd091dAotewotICAgIFtOU0N1cnNv
ciBzZXRIaWRkZW5VbnRpbE1vdXNlTW92ZXM6WUVTXTsKLSAgICBbW1tzZWxmIHdpbmRvd10gYW5p
bWF0b3JdIHNldEFscGhhVmFsdWU6MF07Ci0gICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxl
Y3Rvcih1bnNjaGVkdWxlVGltZVVwZGF0ZSkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheToxXTsK
LX0KLQotLSAodm9pZCljbG9zZVdpbmRvdwotewotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91
c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdp
bmRvd091dCkgb2JqZWN0Om5pbF07Ci0gICAgW3NlbGYgdW5zY2hlZHVsZVRpbWVVcGRhdGVdOwot
ICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwotICAgIFtbd2luZG93IGNvbnRl
bnRWaWV3XSByZW1vdmVUcmFja2luZ0FyZWE6X2FyZWFdOwotICAgIFtzZWxmIHNldEFyZWE6bmls
XTsKLSAgICBbd2luZG93IGNsb3NlXTsKLSAgICBbd2luZG93IHNldERlbGVnYXRlOm5pbF07Ci0g
ICAgW3NlbGYgc2V0V2luZG93Om5pbF07Ci19Ci0KLXN0YXRpYyBOU0NvbnRyb2wgKmNyZWF0ZU1l
ZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sIGNvbnRyb2xUeXBlKQotewotICAgIHN3aXRjaCAo
Y29udHJvbFR5cGUpIHsKLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpUaW1lbGluZTogewotICAg
ICAgICBOU1NsaWRlciAqc2xpZGVyID0gW1tRVEhVRFRpbWVsaW5lIGFsbG9jXSBpbml0XTsKLSAg
ICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0Q29udGludW91czpZRVNdOwotICAgICAgICByZXR1cm4g
c2xpZGVyOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpTbGlkZXI6IHsKLSAgICAg
ICAgTlNCdXR0b24gKnNsaWRlciA9IFtbUVRIVURTbGlkZXIgYWxsb2NdIGluaXRdOwotICAgICAg
ICBbW3NsaWRlciBjZWxsXSBzZXRDb250aW51b3VzOllFU107Ci0gICAgICAgIHJldHVybiBzbGlk
ZXI7Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRvbjogewot
ICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0g
ICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUGxheVRlbXBs
YXRlIl1dOwotICAgICAgICBbYnV0dG9uIHNldEFsdGVybmF0ZUltYWdlOltOU0ltYWdlIGltYWdl
TmFtZWQ6QCJOU1BhdXNlUVRQcml2YXRlVGVtcGxhdGUiXV07Ci0KLSAgICAgICAgW1tidXR0b24g
Y2VsbF0gc2V0U2hvd3NTdGF0ZUJ5Ok5TQ29udGVudHNDZWxsTWFza107Ci0gICAgICAgIFtidXR0
b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwotICAgIH0KLSAgICBj
YXNlIE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVlbkJ1dHRvbjogewotICAgICAgICBOU0J1
dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtidXR0
b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRXhpdEZ1bGxTY3JlZW5UZW1wbGF0
ZSJdXTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBi
dXR0b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlJld2luZEJ1dHRvbjogewot
ICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0g
ICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUmV3aW5kVGVt
cGxhdGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1
cm4gYnV0dG9uOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpGYXN0Rm9yd2FyZEJ1
dHRvbjogewotICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10g
aW5pdF07Ci0gICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5T
RmFzdEZvcndhcmRUZW1wbGF0ZSJdXTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107
Ci0gICAgICAgIHJldHVybiBidXR0b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6
OlZvbHVtZVVwQnV0dG9uOiB7Ci0gICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0
dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFn
ZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUhpZ2hUZW1wbGF0ZSJdXTsKLSAgICAgICAgW2J1
dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247Ci0gICAgfQotICAg
IGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25CdXR0b246IHsKLSAgICAgICAgTlNCdXR0
b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBbYnV0dG9u
IHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0F1ZGlvT3V0cHV0Vm9sdW1lTG93VGVt
cGxhdGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1
cm4gYnV0dG9uOwotICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gbmlsOwotfQotCi1zdGF0aWMgTlNDb250cm9sICpjcmVhdGVDb250cm9sV2l0aE1l
ZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSwgTlNSZWN0IGZyYW1l
KQotewotICAgIE5TQ29udHJvbCAqY29udHJvbCA9IGNyZWF0ZU1lZGlhVUlDb250cm9sKGNvbnRy
b2xUeXBlKTsKLSAgICBjb250cm9sLmZyYW1lID0gZnJhbWU7Ci0gICAgcmV0dXJuIGNvbnRyb2w7
Ci19Ci0KLXN0YXRpYyBOU1RleHRGaWVsZCAqY3JlYXRlVGltZVRleHRGaWVsZChOU1JlY3QgZnJh
bWUpCi17Ci0gICAgTlNUZXh0RmllbGQgKnRleHRGaWVsZCA9IFtbTlNUZXh0RmllbGQgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6ZnJhbWVdOwotICAgIFt0ZXh0RmllbGQgc2V0VGV4dENvbG9yOltOU0Nv
bG9yIHdoaXRlQ29sb3JdXTsKLSAgICBbdGV4dEZpZWxkIHNldEJvcmRlcmVkOk5PXTsKLSAgICBb
dGV4dEZpZWxkIHNldEZvbnQ6W05TRm9udCBib2xkU3lzdGVtRm9udE9mU2l6ZToxMF1dOwotICAg
IFt0ZXh0RmllbGQgc2V0RHJhd3NCYWNrZ3JvdW5kOk5PXTsKLSAgICBbdGV4dEZpZWxkIHNldEJl
emVsZWQ6Tk9dOwotICAgIFt0ZXh0RmllbGQgc2V0RWRpdGFibGU6Tk9dOwotICAgIFt0ZXh0Rmll
bGQgc2V0U2VsZWN0YWJsZTpOT107Ci0gICAgcmV0dXJuIHRleHRGaWVsZDsKLX0KLQotc3RhdGlj
IE5TVmlldyAqY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCkKLXsKLSAgICBpZCB2aWV3ID0g
W1tRVEhVREJhY2tncm91bmRWaWV3IGFsbG9jXSBpbml0XTsKLQotICAgIGNvbnN0IENHRmxvYXQg
cXVpY2tUaW1lUGxheWVySFVESGVpZ2h0ID0gNTk7Ci0gICAgY29uc3QgQ0dGbG9hdCBxdWlja1Rp
bWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gPSAzODsKLQotICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgW3ZpZXcgc2V0Q29udGVudEJvcmRlclBvc2l0
aW9uOnF1aWNrVGltZVBsYXllckhVRENvbnRlbnRCb3JkZXJQb3NpdGlvbiAvIHF1aWNrVGltZVBs
YXllckhVREhlaWdodF07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0K
LSAgICByZXR1cm4gdmlldzsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRMb2FkCi17Ci0gICAgc3Rh
dGljIGNvbnN0IENHRmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDEwOwotICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IHBsYXlCdXR0b25XaWR0aCA9IDQxOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0
IHBsYXlCdXR0b25IZWlnaHQgPSAzNTsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0
dG9uVG9wTWFyZ2luID0gNDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVTbGlkZXJX
aWR0aCA9IDUwOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZVNsaWRlckhlaWdodCA9
IDEzOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZUJ1dHRvbldpZHRoID0gMTg7Ci0g
ICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lQnV0dG9uSGVpZ2h0ID0gMTY7Ci0gICAgc3Rh
dGljIGNvbnN0IENHRmxvYXQgdm9sdW1lVXBCdXR0b25MZWZ0TWFyZ2luID0gNDsKLSAgICBzdGF0
aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVDb250cm9sc1RvcE1hcmdpbiA9IDEzOwotICAgIHN0YXRp
YyBjb25zdCBDR0Zsb2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGggPSAyNTsKLSAgICBzdGF0
aWMgY29uc3QgQ0dGbG9hdCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCA9IDIxOwotICAgIHN0
YXRpYyBjb25zdCBDR0Zsb2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2luID0gMTE7Ci0g
ICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZWxpbmVXaWR0aCA9IDMxNTsKLSAgICBzdGF0aWMg
Y29uc3QgQ0dGbG9hdCB0aW1lbGluZUhlaWdodCA9IDE0OwotICAgIHN0YXRpYyBjb25zdCBDR0Zs
b2F0IHRpbWVsaW5lQm90dG9tTWFyZ2luID0gNzsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0
aW1lVGV4dEZpZWxkV2lkdGggPSA1NDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lVGV4
dEZpZWxkSGVpZ2h0ID0gMTM7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVs
ZEhvcml6b250YWxNYXJnaW4gPSA3OwotCi0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdp
bmRvd107Ci0gICAgQVNTRVJUKHdpbmRvdyk7Ci0KLSAgICBOU1ZpZXcgKmJhY2tncm91bmQgPSBj
cmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKTsKLQotICAgIFt3aW5kb3cgc2V0Q29udGVudFZp
ZXc6YmFja2dyb3VuZF07Ci0gICAgX2FyZWEgPSBbW05TVHJhY2tpbmdBcmVhIGFsbG9jXSBpbml0
V2l0aFJlY3Q6W2JhY2tncm91bmQgYm91bmRzXSBvcHRpb25zOk5TVHJhY2tpbmdNb3VzZUVudGVy
ZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5nQWN0aXZlQWx3YXlzIG93bmVyOnNlbGYgdXNlckluZm86
bmlsXTsKLSAgICBbYmFja2dyb3VuZCBhZGRUcmFja2luZ0FyZWE6X2FyZWFdOwotICAgIFtiYWNr
Z3JvdW5kIHJlbGVhc2VdOyAgICAKLQotICAgIE5TVmlldyAqY29udGVudFZpZXcgPSBbd2luZG93
IGNvbnRlbnRWaWV3XTsKLQotICAgIENHRmxvYXQgY2VudGVyID0gQ0dGbG9vcigod2luZG93V2lk
dGggLSBwbGF5QnV0dG9uV2lkdGgpIC8gMik7Ci0gICAgX3BsYXlCdXR0b24gPSAoTlNCdXR0b24g
KiljcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6UGxh
eVBhdXNlQnV0dG9uLCBOU01ha2VSZWN0KGNlbnRlciwgd2luZG93SGVpZ2h0IC0gcGxheUJ1dHRv
blRvcE1hcmdpbiAtIHBsYXlCdXR0b25IZWlnaHQsIHBsYXlCdXR0b25XaWR0aCwgcGxheUJ1dHRv
bkhlaWdodCkpOwotICAgIEFTU0VSVChbX3BsYXlCdXR0b24gaXNLaW5kT2ZDbGFzczpbTlNCdXR0
b24gY2xhc3NdXSk7Ci0gICAgW19wbGF5QnV0dG9uIHNldFRhcmdldDpzZWxmXTsKLSAgICBbX3Bs
YXlCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVQbGF5aW5nOildOwotICAgIFtjb250
ZW50VmlldyBhZGRTdWJ2aWV3Ol9wbGF5QnV0dG9uXTsKLQotICAgIENHRmxvYXQgY2xvc2VUb1Jp
Z2h0ID0gd2luZG93V2lkdGggLSBob3Jpem9udGFsTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0
b25XaWR0aDsKLSAgICBOU0NvbnRyb2wgKmV4aXRGdWxsc2NyZWVuQnV0dG9uID0gY3JlYXRlQ29u
dHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OkV4aXRGdWxsc2NyZWVu
QnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdodCwgd2luZG93SGVpZ2h0IC0gZXhpdEZ1bGxz
Y3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCwgZXhpdEZ1
bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQpKTsKLSAgICBb
ZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihleGl0RnVsbHNjcmVlbjop
XTsKLSAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwotICAgIFtjb250
ZW50VmlldyBhZGRTdWJ2aWV3OmV4aXRGdWxsc2NyZWVuQnV0dG9uXTsKLSAgICBbZXhpdEZ1bGxz
Y3JlZW5CdXR0b24gcmVsZWFzZV07Ci0gICAgCi0gICAgQ0dGbG9hdCB2b2x1bWVDb250cm9sc0Jv
dHRvbSA9IHdpbmRvd0hlaWdodCAtIHZvbHVtZUNvbnRyb2xzVG9wTWFyZ2luIC0gdm9sdW1lQnV0
dG9uSGVpZ2h0OwotICAgIENHRmxvYXQgbGVmdCA9IGhvcml6b250YWxNYXJnaW47Ci0gICAgTlND
b250cm9sICp2b2x1bWVEb3duQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJv
bFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3QobGVmdCwg
dm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWln
aHQpKTsKLSAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVEb3duQnV0dG9uXTsKLSAg
ICBbdm9sdW1lRG93bkJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07Ci0gICAgW3ZvbHVtZURvd25CdXR0
b24gc2V0QWN0aW9uOkBzZWxlY3RvcihzZXRWb2x1bWVUb1plcm86KV07Ci0gICAgW3ZvbHVtZURv
d25CdXR0b24gcmVsZWFzZV07Ci0KLSAgICBsZWZ0ICs9IHZvbHVtZUJ1dHRvbldpZHRoOwotICAg
IF92b2x1bWVTbGlkZXIgPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRp
YVVJQ29udHJvbDo6U2xpZGVyLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9t
ICsgQ0dGbG9vcigodm9sdW1lQnV0dG9uSGVpZ2h0IC0gdm9sdW1lU2xpZGVySGVpZ2h0KSAvIDIp
LCB2b2x1bWVTbGlkZXJXaWR0aCwgdm9sdW1lU2xpZGVySGVpZ2h0KSk7Ci0gICAgW192b2x1bWVT
bGlkZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6W3NlbGYgbWF4Vm9sdW1l
XV0gZm9yS2V5OkAibWF4VmFsdWUiXTsKLSAgICBbX3ZvbHVtZVNsaWRlciBzZXRUYXJnZXQ6c2Vs
Zl07Ci0gICAgW192b2x1bWVTbGlkZXIgc2V0QWN0aW9uOkBzZWxlY3Rvcih2b2x1bWVDaGFuZ2Vk
OildOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol92b2x1bWVTbGlkZXJdOwotCi0gICAg
bGVmdCArPSB2b2x1bWVTbGlkZXJXaWR0aCArIHZvbHVtZVVwQnV0dG9uTGVmdE1hcmdpbjsKLSAg
ICBOU0NvbnRyb2wgKnZvbHVtZVVwQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29u
dHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZvbHVtZVVwQnV0dG9uLCBOU01ha2VSZWN0KGxlZnQs
IHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVp
Z2h0KSk7Ci0gICAgW3ZvbHVtZVVwQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKLSAgICBbdm9sdW1l
VXBCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihzZXRWb2x1bWVUb01heGltdW06KV07Ci0gICAg
W2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dm9sdW1lVXBCdXR0b25dOwotICAgIFt2b2x1bWVVcEJ1
dHRvbiByZWxlYXNlXTsKLQotICAgIF90aW1lbGluZSA9IGNyZWF0ZU1lZGlhVUlDb250cm9sKE1l
ZGlhVUlDb250cm9sOjpUaW1lbGluZSk7Ci0KLSAgICBbX3RpbWVsaW5lIHNldFRhcmdldDpzZWxm
XTsKLSAgICBbX3RpbWVsaW5lIHNldEFjdGlvbjpAc2VsZWN0b3IodGltZWxpbmVQb3NpdGlvbkNo
YW5nZWQ6KV07Ci0gICAgW190aW1lbGluZSBzZXRGcmFtZTpOU01ha2VSZWN0KENHRmxvb3IoKHdp
bmRvd1dpZHRoIC0gdGltZWxpbmVXaWR0aCkgLyAyKSwgdGltZWxpbmVCb3R0b21NYXJnaW4sIHRp
bWVsaW5lV2lkdGgsIHRpbWVsaW5lSGVpZ2h0KV07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZp
ZXc6X3RpbWVsaW5lXTsKLQotICAgIF9lbGFwc2VkVGltZVRleHQgPSBjcmVhdGVUaW1lVGV4dEZp
ZWxkKE5TTWFrZVJlY3QodGltZVRleHRGaWVsZEhvcml6b250YWxNYXJnaW4sIHRpbWVsaW5lQm90
dG9tTWFyZ2luLCB0aW1lVGV4dEZpZWxkV2lkdGgsIHRpbWVUZXh0RmllbGRIZWlnaHQpKTsKLSAg
ICBbX2VsYXBzZWRUaW1lVGV4dCBzZXRBbGlnbm1lbnQ6TlNUZXh0QWxpZ25tZW50TGVmdF07Ci0g
ICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X2VsYXBzZWRUaW1lVGV4dF07Ci0KLSAgICBfcmVt
YWluaW5nVGltZVRleHQgPSBjcmVhdGVUaW1lVGV4dEZpZWxkKE5TTWFrZVJlY3Qod2luZG93V2lk
dGggLSB0aW1lVGV4dEZpZWxkSG9yaXpvbnRhbE1hcmdpbiAtIHRpbWVUZXh0RmllbGRXaWR0aCwg
dGltZWxpbmVCb3R0b21NYXJnaW4sIHRpbWVUZXh0RmllbGRXaWR0aCwgdGltZVRleHRGaWVsZEhl
aWdodCkpOwotICAgIFtfcmVtYWluaW5nVGltZVRleHQgc2V0QWxpZ25tZW50Ok5TVGV4dEFsaWdu
bWVudFJpZ2h0XTsKLSAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfcmVtYWluaW5nVGltZVRl
eHRdOwotCi0gICAgW3dpbmRvdyByZWNhbGN1bGF0ZUtleVZpZXdMb29wXTsKLSAgICBbd2luZG93
IHNldEluaXRpYWxGaXJzdFJlc3BvbmRlcjpfcGxheUJ1dHRvbl07Ci0gICAgW3dpbmRvdyBjZW50
ZXJdOwotfQotCi0tICh2b2lkKXVwZGF0ZVZvbHVtZQotewotICAgIFtfdm9sdW1lU2xpZGVyIHNl
dEZsb2F0VmFsdWU6W3NlbGYgdm9sdW1lXV07Ci19Ci0KLS0gKHZvaWQpdXBkYXRlVGltZQotewot
ICAgIFtzZWxmIHVwZGF0ZVZvbHVtZV07Ci0KLSAgICBbX3RpbWVsaW5lIHNldEZsb2F0VmFsdWU6
W3NlbGYgY3VycmVudFRpbWVdXTsKLSAgICBbX3RpbWVsaW5lIHNldFZhbHVlOltOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOltzZWxmIGR1cmF0aW9uXV0gZm9yS2V5OkAibWF4VmFsdWUiXTsKLQot
ICAgIFtfcmVtYWluaW5nVGltZVRleHQgc2V0U3RyaW5nVmFsdWU6W3NlbGYgcmVtYWluaW5nVGlt
ZVRleHRdXTsKLSAgICBbX2VsYXBzZWRUaW1lVGV4dCBzZXRTdHJpbmdWYWx1ZTpbc2VsZiBlbGFw
c2VkVGltZVRleHRdXTsKLX0KLQotLSAodm9pZCllbmRTY3J1YmJpbmcKLXsKLSAgICBBU1NFUlQo
X2lzU2NydWJiaW5nKTsKLSAgICBfaXNTY3J1YmJpbmcgPSBOTzsKLSAgICBpZiAoSFRNTFZpZGVv
RWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAg
ICB2aWRlb0VsZW1lbnQtPmVuZFNjcnViYmluZygpOwotfQotCi0tICh2b2lkKXRpbWVsaW5lUG9z
aXRpb25DaGFuZ2VkOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAg
ICBbc2VsZiBzZXRDdXJyZW50VGltZTpbX3RpbWVsaW5lIGZsb2F0VmFsdWVdXTsKLSAgICBpZiAo
IV9pc1NjcnViYmluZykgewotICAgICAgICBfaXNTY3J1YmJpbmcgPSBZRVM7Ci0gICAgICAgIGlm
IChIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVu
dF0pCi0gICAgICAgICAgICB2aWRlb0VsZW1lbnQtPmJlZ2luU2NydWJiaW5nKCk7Ci0gICAgICAg
IHN0YXRpYyBOU0FycmF5ICplbmRTY3J1YmJpbmdNb2RlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzOk5TRGVmYXVsdFJ1bkxvb3BNb2RlLCBOU01vZGFsUGFuZWxSdW5Mb29wTW9k
ZSwgbmlsXTsKLSAgICAgICAgLy8gU2NoZWR1bGUgLWVuZFNjcnViYmluZyBmb3Igd2hlbiBsZWF2
aW5nIG1vdXNlIHRyYWNraW5nIG1vZGUuCi0gICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5M
b29wXSBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGVuZFNjcnViYmluZykgdGFyZ2V0OnNlbGYg
YXJndW1lbnQ6bmlsIG9yZGVyOjAgbW9kZXM6ZW5kU2NydWJiaW5nTW9kZXNdOwotICAgIH0KLX0K
LQotLSAoZmxvYXQpY3VycmVudFRpbWUKLXsKLSAgICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRlb0Vs
ZW1lbnRdID8gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5jdXJyZW50VGltZSgpIDogMDsKLX0K
LQotLSAodm9pZClzZXRDdXJyZW50VGltZTooZmxvYXQpY3VycmVudFRpbWUKLXsKLSAgICBpZiAo
IVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtfZGVsZWdh
dGUgdmlkZW9FbGVtZW50XS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUpOwotICAgIFtzZWxm
IHVwZGF0ZVRpbWVdOwotfQotCi0tIChkb3VibGUpZHVyYXRpb24KLXsKLSAgICByZXR1cm4gW19k
ZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5kdXJhdGlv
bigpIDogMDsKLX0KLQotLSAoZmxvYXQpbWF4Vm9sdW1lCi17Ci0gICAgLy8gU2V0IHRoZSB2b2x1
bWUgc2xpZGVyIHJlc29sdXRpb24KLSAgICByZXR1cm4gMTAwOwotfQotCi0tICh2b2lkKXZvbHVt
ZUNoYW5nZWQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtz
ZWxmIHNldFZvbHVtZTpbX3ZvbHVtZVNsaWRlciBmbG9hdFZhbHVlXV07Ci19Ci0KLS0gKHZvaWQp
c2V0Vm9sdW1lVG9aZXJvOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsK
LSAgICBbc2VsZiBzZXRWb2x1bWU6MF07Ci19Ci0KLS0gKHZvaWQpc2V0Vm9sdW1lVG9NYXhpbXVt
OihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRW
b2x1bWU6W3NlbGYgbWF4Vm9sdW1lXV07Ci19Ci0KLS0gKHZvaWQpZGVjcmVtZW50Vm9sdW1lCi17
Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGZsb2F0IHZvbHVtZSA9IFtzZWxmIHZvbHVtZV0gLSAxMDsKLSAgICBbc2VsZiBzZXRWb2x1
bWU6c3RkOjptYXgodm9sdW1lLCAwLjBmKV07Ci19Ci0KLS0gKHZvaWQpaW5jcmVtZW50Vm9sdW1l
Ci17Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsK
LQotICAgIGZsb2F0IHZvbHVtZSA9IFtzZWxmIHZvbHVtZV0gKyAxMDsKLSAgICBbc2VsZiBzZXRW
b2x1bWU6c3RkOjptaW4odm9sdW1lLCBbc2VsZiBtYXhWb2x1bWVdKV07Ci19Ci0KLS0gKGZsb2F0
KXZvbHVtZQotewotICAgIHJldHVybiBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0gPyBbX2RlbGVn
YXRlIHZpZGVvRWxlbWVudF0tPnZvbHVtZSgpICogW3NlbGYgbWF4Vm9sdW1lXSA6IDA7Ci19Ci0K
LS0gKHZvaWQpc2V0Vm9sdW1lOihmbG9hdCl2b2x1bWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUg
dmlkZW9FbGVtZW50XSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChbX2RlbGVnYXRlIHZpZGVv
RWxlbWVudF0tPm11dGVkKCkpCi0gICAgICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+c2V0
TXV0ZWQoZmFsc2UpOwotICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+c2V0Vm9sdW1lKHZv
bHVtZSAvIFtzZWxmIG1heFZvbHVtZV0pOwotICAgIFtzZWxmIHVwZGF0ZVZvbHVtZV07Ci19Ci0K
LS0gKHZvaWQpdXBkYXRlUGxheUJ1dHRvbgotewotICAgIFtfcGxheUJ1dHRvbiBzZXRJbnRWYWx1
ZTpbc2VsZiBwbGF5aW5nXV07Ci19Ci0KLS0gKHZvaWQpdXBkYXRlUmF0ZQotewotICAgIEJPT0wg
cGxheWluZyA9IFtzZWxmIHBsYXlpbmddOwotCi0gICAgLy8gS2VlcCB0aGUgSFVEIHZpc2libGUg
d2hlbiBwYXVzZWQuCi0gICAgaWYgKCFwbGF5aW5nKQotICAgICAgICBbc2VsZiBmYWRlV2luZG93
SW5dOwotICAgIGVsc2UgaWYgKCFfbW91c2VJc0luSFVEKSB7Ci0gICAgICAgIFtOU09iamVjdCBj
YW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2Vs
ZWN0b3IoZmFkZVdpbmRvd091dCkgb2JqZWN0Om5pbF07Ci0gICAgICAgIFtzZWxmIHBlcmZvcm1T
ZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxh
eTpIVURXaW5kb3dGYWRlT3V0RGVsYXldOwotICAgIH0KLSAgICBbc2VsZiB1cGRhdGVQbGF5QnV0
dG9uXTsKLX0KLQotLSAodm9pZCl0b2dnbGVQbGF5aW5nOihpZClzZW5kZXIKLXsKLSAgICBVTlVT
RURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRQbGF5aW5nOiFbc2VsZiBwbGF5aW5nXV07
Ci19Ci0KLS0gKEJPT0wpcGxheWluZwotewotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxl
bWVudCA9IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XTsKLSAgICBpZiAoIXZpZGVvRWxlbWVudCkK
LSAgICAgICAgcmV0dXJuIE5POwotCi0gICAgcmV0dXJuICF2aWRlb0VsZW1lbnQtPmNhblBsYXko
KTsKLX0KLQotLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmcKLXsKLSAgICBIVE1MVmlk
ZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF07Ci0KLSAg
ICBpZiAoIXZpZGVvRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHBsYXlpbmcp
Ci0gICAgICAgIHZpZGVvRWxlbWVudC0+cGxheSgpOwotICAgIGVsc2UKLSAgICAgICAgdmlkZW9F
bGVtZW50LT5wYXVzZSgpOwotfQotCi1zdGF0aWMgTlNTdHJpbmcgKnRpbWVUb1N0cmluZyhkb3Vi
bGUgdGltZSkKLXsKLSAgICBBU1NFUlRfQVJHKHRpbWUsIHRpbWUgPj0gMCk7Ci0KLSAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUodGltZSkpCi0gICAgICAgIHRpbWUgPSAwOwotCi0gICAgaW50IHNlY29u
ZHMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0ZDo6YWJzKHRpbWUpKTsKLSAgICBpbnQgaG91
cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOwotICAgIGludCBtaW51dGVzID0gKHNlY29uZHMgLyA2
MCkgJSA2MDsKLSAgICBzZWNvbmRzICU9IDYwOwotCi0gICAgaWYgKGhvdXJzKQotICAgICAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZDolMDJkOiUwMmQiLCBob3Vycywg
bWludXRlcywgc2Vjb25kc107Ci0KLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlMDJkOiUwMmQiLCBtaW51dGVzLCBzZWNvbmRzXTsgICAgCi19Ci0KLS0gKE5TU3RyaW5n
ICopcmVtYWluaW5nVGltZVRleHQKLXsKLSAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1l
bnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF07Ci0gICAgaWYgKCF2aWRlb0VsZW1lbnQpCi0g
ICAgICAgIHJldHVybiBAIiI7Ci0KLSAgICBkb3VibGUgcmVtYWluaW5nVGltZSA9IDA7Ci0KLSAg
ICBpZiAoc3RkOjppc2Zpbml0ZSh2aWRlb0VsZW1lbnQtPmR1cmF0aW9uKCkpICYmIHN0ZDo6aXNm
aW5pdGUodmlkZW9FbGVtZW50LT5jdXJyZW50VGltZSgpKSkKLSAgICAgICAgcmVtYWluaW5nVGlt
ZSA9IHZpZGVvRWxlbWVudC0+ZHVyYXRpb24oKSAtIHZpZGVvRWxlbWVudC0+Y3VycmVudFRpbWUo
KTsKLQotICAgIHJldHVybiBbQCItIiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzp0aW1lVG9TdHJp
bmcocmVtYWluaW5nVGltZSldOwotfQotCi0tIChOU1N0cmluZyAqKWVsYXBzZWRUaW1lVGV4dAot
ewotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICByZXR1cm4gQCIi
OwotCi0gICAgcmV0dXJuIHRpbWVUb1N0cmluZyhbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPmN1
cnJlbnRUaW1lKCkpOwotfQotCi0vLyBNQVJLOiBOU1Jlc3BvbmRlcgotCi0tICh2b2lkKW1vdXNl
RW50ZXJlZDooTlNFdmVudCAqKXRoZUV2ZW50Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHRoZUV2ZW50
KTsKLSAgICAvLyBNYWtlIHN1cmUgdGhlIEhVRCB3b24ndCBiZSBoaWRkZW4gZnJvbSBub3cKLSAg
ICBfbW91c2VJc0luSFVEID0gWUVTOwotICAgIFtzZWxmIGZhZGVXaW5kb3dJbl07Ci19Ci0KLS0g
KHZvaWQpbW91c2VFeGl0ZWQ6KE5TRXZlbnQgKil0aGVFdmVudAotewotICAgIFVOVVNFRF9QQVJB
TSh0aGVFdmVudCk7Ci0gICAgX21vdXNlSXNJbkhVRCA9IE5POwotICAgIFtzZWxmIGZhZGVXaW5k
b3dJbl07Ci19Ci0KLS0gKHZvaWQpcmV3aW5kOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFS
QU0oc2VuZGVyKTsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAg
cmV0dXJuOwotICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+cmV3aW5kKDMwKTsKLX0KLQot
LSAodm9pZClmYXN0Rm9yd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRl
cik7Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsK
LX0KLQotLSAodm9pZClleGl0RnVsbHNjcmVlbjooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BB
UkFNKHNlbmRlcik7Ci0gICAgaWYgKF9pc0VuZGluZ0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVy
bjsKLSAgICBfaXNFbmRpbmdGdWxsc2NyZWVuID0gWUVTOwotICAgIFtfZGVsZWdhdGUgcmVxdWVz
dEV4aXRGdWxsc2NyZWVuXTsgCi19Ci0KLS8vIE1BUks6IE5TV2luZG93RGVsZWdhdGUKLQotLSAo
dm9pZCl3aW5kb3dEaWRFeHBvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgW3NlbGYgc2NoZWR1bGVUaW1lVXBk
YXRlXTsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICBbc2VsZiB1
bnNjaGVkdWxlVGltZVVwZGF0ZV07Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggODkzZmEwOGNjZjkwNjU4YjQ0N2Ji
NjViYzM5YmZhMzU5YjdiZTAwMy4uNWViOTU3NTI4MmMxYjY1M2RjYmM5YWE2YTQ3ZWQ3MGMwNWU3
ZDVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
MjUzLDcgKzI1Myw2IEBACiAjaW1wb3J0ICJXZWJOU1ByaW50T3BlcmF0aW9uRXh0cmFzLmgiCiAj
aW1wb3J0ICJXZWJQREZWaWV3LmgiCiAjaW1wb3J0ICJXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCIK
LSNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgPFdlYkNv
cmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yV2luZG93
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CkBAIC05MzUxLDYgKzkzNTAs
NyBAQCAtICh2b2lkKV9zY2hlZHVsZUxheWVyRmx1c2hGb3JQZW5kaW5nVGlsZUNhY2hlUmVwYWlu
dAogI2lmIEVOQUJMRShWSURFTykKIC0gKHZvaWQpX2VudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlk
ZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kil2aWRlb0VsZW1lbnQgbW9kZToo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKW1vZGUK
IHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+ZnVsbHNjcmVl
bkNvbnRyb2xsZXIpIHsKICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xs
ZXIgdmlkZW9FbGVtZW50XSA9PSB2aWRlb0VsZW1lbnQpIHsKICAgICAgICAgICAgIC8vIFRoZSBi
YWNrZW5kIG1heSBqdXN0IHdhcm4gdXMgdGhhdCB0aGUgdW5kZXJsYXlpbmcgcGxhZnRvcm1Nb3Zp
ZSgpCkBAIC05MzY4LDIzICs5MzY4LDIyIEBAIC0gKHZvaWQpX2VudGVyVmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kil2aWRlb0VsCiAgICAg
aWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAgICAgX3ByaXZhdGUt
PmZ1bGxzY3JlZW5Db250cm9sbGVyID0gW1tXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGFs
bG9jXSBpbml0XTsKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBzZXRW
aWRlb0VsZW1lbnQ6dmlkZW9FbGVtZW50XTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjooVUlW
aWV3ICopW1tbc2VsZiB3aW5kb3ddIGhvc3RMYXllcl0gZGVsZWdhdGVdIG1vZGU6bW9kZV07Ci0j
ZWxzZQotICAgICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNj
cmVlbjpbW3NlbGYgd2luZG93XSBzY3JlZW5dXTsKLSNlbmRpZgogICAgIH0KICAgICBlbHNlCiAg
ICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0VmlkZW9FbGVtZW50OnZp
ZGVvRWxlbWVudF07CisjZW5kaWYKIH0KIAogLSAodm9pZClfZXhpdFZpZGVvRnVsbHNjcmVlbgog
eworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVl
bkNvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybjsKICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5D
b250cm9sbGVyIGV4aXRGdWxsc2NyZWVuXTsKICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250
cm9sbGVyIHJlbGVhc2VdOwogICAgIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciA9IG5p
bDsKKyNlbmRpZgogfQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>