<?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>159796</bug_id>
          
          <creation_ts>2016-07-14 17:30:17 -0700</creation_ts>
          <short_desc>Move MediaSampleAVFObjC into its own file</short_desc>
          <delta_ts>2016-07-18 12:24:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=159836</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=159833</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="George Ruan">gruan</reporter>
          <assigned_to name="George Ruan">gruan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211260</commentid>
    <comment_count>0</comment_count>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-07-14 17:30:17 -0700</bug_when>
    <thetext>In preparation for a feature that uses MediaSampleAVFObjC, but does not need SourceBufferPrivateAVFObjC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211265</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-07-14 17:33:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/27362488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211275</commentid>
    <comment_count>2</comment_count>
      <attachid>283720</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-07-14 17:56:07 -0700</bug_when>
    <thetext>Created attachment 283720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211334</commentid>
    <comment_count>3</comment_count>
      <attachid>283720</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-07-14 22:18:30 -0700</bug_when>
    <thetext>Comment on attachment 283720
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/MediaSampleAVFObjC.h:26
&gt; +#ifndef MediaSampleAVFObjC_h

Not: this should use &quot;#pragma once&quot; instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211335</commentid>
    <comment_count>4</comment_count>
      <attachid>283720</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-07-14 22:19:44 -0700</bug_when>
    <thetext>Comment on attachment 283720
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/MediaSampleAVFObjC.h:26
&gt;&gt; +#ifndef MediaSampleAVFObjC_h
&gt; 
&gt; Not: this should use &quot;#pragma once&quot; instead

Nit, not Not</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211448</commentid>
    <comment_count>5</comment_count>
      <attachid>283767</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-07-15 09:49:42 -0700</bug_when>
    <thetext>Created attachment 283767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211988</commentid>
    <comment_count>6</comment_count>
      <attachid>283910</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-07-18 09:33:44 -0700</bug_when>
    <thetext>Created attachment 283910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212054</commentid>
    <comment_count>7</comment_count>
      <attachid>283910</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-18 12:24:36 -0700</bug_when>
    <thetext>Comment on attachment 283910
Patch

Clearing flags on attachment: 283910

Committed r203363: &lt;http://trac.webkit.org/changeset/203363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212055</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-18 12:24:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283720</attachid>
            <date>2016-07-14 17:56:07 -0700</date>
            <delta_ts>2016-07-15 09:49:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159796-20160714175520.patch</filename>
            <type>text/plain</type>
            <size>23743</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRiYjgwZTJjMTJjYjA2
ZDhmYjJlODEyN2IxNTA4ZTVlZDc3NTQ5My4uMWVmOTk5NTY5NjM5Y2I1ODAwYzM4ZDJlZDA0ZDJk
MGI4NjhkZGZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE2LTA3LTE0ICBHZW9y
Z2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIE1lZGlhU2FtcGxlQVZG
T2JqQyBpbnRvIGl0cyBvd24gZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5Nzk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzM2MjQ4OD4K
KworICAgICAgICBJbiBwcmVwYXJhdGlvbiBmb3IgYSBmZWF0dXJlIHRoYXQgdXNlcyBNZWRpYVNh
bXBsZUFWRk9iakMsIGJ1dCBkb2VzCisgICAgICAgIG5vdCBuZWVkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLCBpdCBpcyBiZW5lZmljaWFsIHRvIG1vdmUKKyAgICAgICAgTWVkaWFTYW1wbGVB
VkZPYmpDIHRvIGl0cyBvd24gZmlsZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOiBBbGxvdyBzZXR0aW5nIHRyYWNrSUQgdG8g
YXNzb2NpYXRlCisgICAgICAgIE1lZGlhU2FtcGxlIGlkIHdpdGggTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgaWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
U2FtcGxlQVZGT2JqQy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW06IE1vdmVkCisgICAgICAgIGZyb20g
TWVkaWFTYW1wbGVBVkZPYmpDCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6
OnByZXNlbnRhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpD
OjpkZWNvZGVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6ZHVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpzaXplSW5CeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNNU2FtcGxlQnVmZmVySXNSYW5kb21BY2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpmbGFncyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGlvblNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpkdW1wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2FtcGxlQVZGT2JqQzo6b2Zmc2V0VGltZXN0YW1wc0J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlQVZGT2JqQzo6c2V0VGltZXN0YW1wcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06Cisg
ICAgICAgIE1vdmVkIE1lZGlhU2FtcGxlQVZGT2JqQyB0byBpdHMgb3duIGZpbGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNNU2FtcGxlQnVmZmVySXNSYW5kb21BY2Nlc3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpmbGFncyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGlvblNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpkdW1wKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6b2Zmc2V0VGlt
ZXN0YW1wc0J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qzo6c2V0VGltZXN0YW1wcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisKIDIwMTYtMDctMTQgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGNyZWRlbnRp
YWxzIGluIFVSTCB3aGVuIGFjY2Vzc2VkIHRocm91Z2ggbG9jYXRpb24uaHJlZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlkNDll
MGRiMjBiYjJmZTA0OTIxMzEzZGJlYTlhNmE4Y2MxODFjYjUuLjcyNDI0YzkzM2NjMjUyM2Q5OGIx
Mzk0ZDJkOWE2NmM1NzMyMjJjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk4MCw2ICs5ODAsOCBAQAogCQkxQUY4RTFDMzEy
NTY3M0UwMDAyMzBGRjcgLyogUHJveHlTZXJ2ZXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcgLyog
UHJveHlTZXJ2ZXJDRk5ldC5jcHAgKi87IH07CiAJCTFBRkUxMTk5MENCRkZDQzQwMDMwMTdGQSAv
KiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFGRTExOTcwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0
U2V0Um93TGlzdC5jcHAgKi87IH07CiAJCTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NR
TFJlc3VsdFNldFJvd0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBRkUxMTk4MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xp
c3QuaCAqLzsgfTsKKwkJMUIxMjREOEQxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUIx
MjREOEMxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oICovOyB9OworCQkx
QjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUIxMjREOEUxRDM4MEJCNjAw
RUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSAqLzsgfTsKIAkJMUMwMTA3MDAxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5s
aW5lVGV4dEJveFN0eWxlLmNwcCAqLzsgfTsKIAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8q
IElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHls
ZS5oICovOyB9OwogCQkxQzA5MzlFQTFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5MzlF
ODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAgKi87IH07CkBAIC04NTI5LDYg
Kzg1MzEsOCBAQAogCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcgLyogUHJveHlTZXJ2ZXJDRk5l
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm94eVNlcnZlckNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGRTExOTcwQ0JGRkNDNDAw
MzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1FMUmVzdWx0
U2V0Um93TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQjEyNEQ4QzFEMzgw
QjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE1lZGlhU2FtcGxlQVZGT2JqQy5oOyBwYXRoID0gLi4vTWVkaWFTYW1wbGVB
VkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFCMTI0RDhFMUQzODBCQjYw
MEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDMDEwNkZFMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJv
eFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkYxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzUxNCw2ICsyMzUxOCw4IEBACiAJCURGOUFGRDZG
MTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVB
VkZPYmpDLmggKi8sCisJCQkJMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxl
QVZGT2JqQy5tbSAqLywKIAkJCQlDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1
ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQlDRDU0QTc2MDE4MEY5RjcwMDBCMDc2
QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwICovLApAQCAtMjc5
MzEsNiArMjc5MzcsNyBAQAogCQkJCTE0NzlGQUY0MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJS
dWJ5VGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTQwRTlDMUM3QzAwODM1NTg4IC8q
IFJlbmRlclNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTUwRTlDMUM3QzAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclBhcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFCMTI0
RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDM0JFOTk5MEU5QzFFNUQwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDU4RkU0MEExNTg5REYwQjAwNTYwOUU2IC8qIFJlbmRlclNl
YXJjaEZpZWxkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0VGNUU2MDFEMjBDODM5MDAxNzFFNjAg
LyogVGV4dENvZGVjUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjk5ODMsNiArMjk5
OTAsNyBAQAogCQkJCUE3OTU0NjQzMEI1QzRDQjQwMDdCNDM4RiAvKiBEcmFnRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzk1NDYzRTBCNUM0QzgwMDA3QjQzOEYgLyogRHJhZ0RhdGFNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0NGQjNEMTBCN0VEMTBBMDA3MEMzMkQgLyogRHJhZ0lt
YWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFCMTI0RDhGMUQzODBCQjYwMEVDREZCMCAvKiBN
ZWRpYVNhbXBsZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MyMzE4ODMzMEE5
MDBDOTU0QjUgLyogRHJhZ0ltYWdlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDRkIzRDUw
QjdFRDExODAwNzBDMzJEIC8qIERyYWdJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZE
NkVEMkM3MTM2QjhFNjYwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3IuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAppbmRleCA5ZjBjZDgxNDBl
ZGMxZWMyZDlkNjdhMDhhZjk2YTJhM2IzY2M2NTAyLi43OGY0N2ViZDIwYTdhMjY1Mjg0YTI2NTFk
ZDJmZTU3ZGVmMzA0MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRp
YVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAg
LTMxLDEwICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxl
QnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBNb2NrU2FtcGxlQm94OwotdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNN
U2FtcGxlQnVmZmVyUmVmOwogCiBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewogICAgIGVudW0gewpA
QCAtNTYsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGlt
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyB0cmFja0lEKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHNp
emVfdCBzaXplSW5CeXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVz
ZW50YXRpb25TaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvZmZzZXRUaW1lc3Rh
bXBzQnkoY29uc3QgTWVkaWFUaW1lJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZG
T2JqQy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAyNzc2ZDRjZmE3ZDNiNjZlN2U3YjQwYWFkZWVlN2ZkNWIwYjkz
ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTYW1w
bGVBVkZPYmpDX2gKKyNkZWZpbmUgTWVkaWFTYW1wbGVBVkZPYmpDX2gKKworI2luY2x1ZGUgIk1l
ZGlhU2FtcGxlLmgiCisjaW5jbHVkZSAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDIGZpbmFsIDogcHVibGlj
IE1lZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxlQVZG
T2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgaW50IHRyYWNrSUQpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0K
KyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhz
YW1wbGUpKTsgfQorCitwcml2YXRlOgorICAgIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGUpCisgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQorICAgIHsKKyAgICB9
CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgaW50IHRy
YWNrSUQpCisgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQorICAgICAgICAsIG1faWQoU3RyaW5n
Ojpmb3JtYXQoIiVkIiwgdHJhY2tJRCkpCisgICAgeworICAgIH0KKyAgICB2aXJ0dWFsIH5NZWRp
YVNhbXBsZUFWRk9iakMoKSB7IH0KKworICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKKworICAgIEF0b21p
Y1N0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIHZv
aWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQor
CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRTaXpl
IHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIFNhbXBsZUZsYWdzIGZs
YWdzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1l
Jikgb3ZlcnJpZGU7CisKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fc2FtcGxl
OworICAgIEF0b21pY1N0cmluZyBtX2lkOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDc2MWVhYjUz
NzE1ODNjODJhYjNlMzQ4NmQzYmJkNWMxYjllMDhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVB
VkZPYmpDLm1tCkBAIC0wLDAgKzEsMTQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNZWRpYVNhbXBs
ZUFWRk9iakMuaCIKKworI2ltcG9ydCA8d3RmL1ByaW50U3RyZWFtLmg+CisKKyNpbXBvcnQgIkNv
cmVNZWRpYVNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFUaW1lIE1l
ZGlhU2FtcGxlQVZGT2JqQzo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRvTWVkaWFUaW1lKENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKG1fc2Ft
cGxlLmdldCgpKSk7Cit9CisKK01lZGlhVGltZSBNZWRpYVNhbXBsZUFWRk9iakM6OmRlY29kZVRp
bWUoKSBjb25zdAoreworICAgIHJldHVybiB0b01lZGlhVGltZShDTVNhbXBsZUJ1ZmZlckdldERl
Y29kZVRpbWVTdGFtcChtX3NhbXBsZS5nZXQoKSkpOworfQorCitNZWRpYVRpbWUgTWVkaWFTYW1w
bGVBVkZPYmpDOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvTWVkaWFUaW1lKENN
U2FtcGxlQnVmZmVyR2V0RHVyYXRpb24obV9zYW1wbGUuZ2V0KCkpKTsKK30KKworc2l6ZV90IE1l
ZGlhU2FtcGxlQVZGT2JqQzo6c2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBDTVNh
bXBsZUJ1ZmZlckdldFRvdGFsU2FtcGxlU2l6ZShtX3NhbXBsZS5nZXQoKSk7Cit9CisKK1BsYXRm
b3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKQoreworICAgIFBs
YXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlw
ZSwgeyAuY21TYW1wbGVCdWZmZXIgPSBtX3NhbXBsZS5nZXQoKSB9IH07CisgICAgcmV0dXJuIHNh
bXBsZTsKK30KKworc3RhdGljIGJvb2wgQ01TYW1wbGVCdWZmZXJJc1JhbmRvbUFjY2VzcyhDTVNh
bXBsZUJ1ZmZlclJlZiBzYW1wbGUpCit7CisgICAgQ0ZBcnJheVJlZiBhdHRhY2htZW50cyA9IENN
U2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGUsIGZhbHNlKTsKKyAg
ICBpZiAoIWF0dGFjaG1lbnRzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBmb3Ig
KENGSW5kZXggaSA9IDAsIGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGF0dGFjaG1lbnRzKTsgaSA8
IGNvdW50OyArK2kpIHsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnREaWN0ID0g
KENGRGljdGlvbmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dGFjaG1lbnRzLCBpKTsK
KyAgICAgICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGF0dGFjaG1lbnREaWN0LCBrQ01T
YW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIE1l
ZGlhU2FtcGxlQVZGT2JqQzo6ZmxhZ3MoKSBjb25zdAoreworICAgIGludCByZXR1cm5WYWx1ZSA9
IE1lZGlhU2FtcGxlOjpOb25lOworICAgIAorICAgIGlmIChDTVNhbXBsZUJ1ZmZlcklzUmFuZG9t
QWNjZXNzKG1fc2FtcGxlLmdldCgpKSkKKyAgICAgICAgcmV0dXJuVmFsdWUgfD0gTWVkaWFTYW1w
bGU6OklzU3luYzsKKyAgICAKKyAgICByZXR1cm4gU2FtcGxlRmxhZ3MocmV0dXJuVmFsdWUpOwor
fQorCitGbG9hdFNpemUgTWVkaWFTYW1wbGVBVkZPYmpDOjpwcmVzZW50YXRpb25TaXplKCkgY29u
c3QKK3sKKyAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uID0gQ01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX3NhbXBsZS5nZXQoKSk7CisgICAgaWYg
KENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUoZm9ybWF0RGVzY3JpcHRpb24pICE9IGtD
TU1lZGlhVHlwZV9WaWRlbykKKyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOworICAgIAorICAg
IHJldHVybiBGbG9hdFNpemUoQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2VudGF0aW9u
RGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbiwgdHJ1ZSwgdHJ1ZSkpOworfQorCit2b2lkIE1l
ZGlhU2FtcGxlQVZGT2JqQzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91
dC5wcmludCgie1BUUygiLCBwcmVzZW50YXRpb25UaW1lKCksICIpLCBEVFMoIiwgZGVjb2RlVGlt
ZSgpLCAiKSwgZHVyYXRpb24oIiwgZHVyYXRpb24oKSwgIiksIGZsYWdzKCIsIChpbnQpZmxhZ3Mo
KSwgIiksIHByZXNlbnRhdGlvblNpemUoIiwgcHJlc2VudGF0aW9uU2l6ZSgpLndpZHRoKCksICJ4
IiwgcHJlc2VudGF0aW9uU2l6ZSgpLmhlaWdodCgpLCAiKX0iKTsKK30KKwordm9pZCBNZWRpYVNh
bXBsZUFWRk9iakM6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkK
K3sKKyAgICBDTUl0ZW1Db3VudCBpdGVtQ291bnQgPSAwOworICAgIGlmIChub0VyciAhPSBDTVNh
bXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShtX3NhbXBsZS5nZXQoKSwgMCwgbnVs
bHB0ciwgJml0ZW1Db3VudCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBWZWN0b3I8Q01T
YW1wbGVUaW1pbmdJbmZvPiB0aW1pbmdJbmZvQXJyYXk7CisgICAgdGltaW5nSW5mb0FycmF5Lmdy
b3coaXRlbUNvdW50KTsKKyAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVU
aW1pbmdJbmZvQXJyYXkobV9zYW1wbGUuZ2V0KCksIGl0ZW1Db3VudCwgdGltaW5nSW5mb0FycmF5
LmRhdGEoKSwgbnVsbHB0cikpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmb3IgKGF1dG8m
IHRpbWluZyA6IHRpbWluZ0luZm9BcnJheSkgeworICAgICAgICB0aW1pbmcucHJlc2VudGF0aW9u
VGltZVN0YW1wID0gdG9DTVRpbWUodG9NZWRpYVRpbWUodGltaW5nLnByZXNlbnRhdGlvblRpbWVT
dGFtcCkgKyBvZmZzZXQpOworICAgICAgICB0aW1pbmcuZGVjb2RlVGltZVN0YW1wID0gdG9DTVRp
bWUodG9NZWRpYVRpbWUodGltaW5nLmRlY29kZVRpbWVTdGFtcCkgKyBvZmZzZXQpOworICAgIH0K
KyAgICAKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdTYW1wbGU7CisgICAgaWYgKG5vRXJyICE9
IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgbV9zYW1wbGUuZ2V0KCksIGl0ZW1Db3VudCwgdGltaW5nSW5mb0FycmF5LmRhdGEoKSwgJm5l
d1NhbXBsZSkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3NhbXBsZSA9IGFkb3B0Q0Yo
bmV3U2FtcGxlKTsKK30KKwordm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OnNldFRpbWVzdGFtcHMo
Y29uc3QgV1RGOjpNZWRpYVRpbWUgJnByZXNlbnRhdGlvblRpbWVzdGFtcCwgY29uc3QgV1RGOjpN
ZWRpYVRpbWUgJmRlY29kZVRpbWVzdGFtcCkKK3sKKyAgICBDTUl0ZW1Db3VudCBpdGVtQ291bnQg
PSAwOworICAgIGlmIChub0VyciAhPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9B
cnJheShtX3NhbXBsZS5nZXQoKSwgMCwgbnVsbHB0ciwgJml0ZW1Db3VudCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1pbmdJbmZvQXJy
YXk7CisgICAgdGltaW5nSW5mb0FycmF5Lmdyb3coaXRlbUNvdW50KTsKKyAgICBpZiAobm9FcnIg
IT0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkobV9zYW1wbGUuZ2V0KCks
IGl0ZW1Db3VudCwgdGltaW5nSW5mb0FycmF5LmRhdGEoKSwgbnVsbHB0cikpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHRpbWluZyA6IHRpbWluZ0luZm9BcnJheSkgewor
ICAgICAgICB0aW1pbmcucHJlc2VudGF0aW9uVGltZVN0YW1wID0gdG9DTVRpbWUocHJlc2VudGF0
aW9uVGltZXN0YW1wKTsKKyAgICAgICAgdGltaW5nLmRlY29kZVRpbWVTdGFtcCA9IHRvQ01UaW1l
KGRlY29kZVRpbWVzdGFtcCk7CisgICAgfQorICAgIAorICAgIENNU2FtcGxlQnVmZmVyUmVmIG5l
d1NhbXBsZTsKKyAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5l
d1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3NhbXBsZS5nZXQoKSwgaXRlbUNvdW50LCB0
aW1pbmdJbmZvQXJyYXkuZGF0YSgpLCAmbmV3U2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIG1fc2FtcGxlID0gYWRvcHRDRihuZXdTYW1wbGUpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4
IDk3NjVlNGQzNTZkODg2YmQyYWU3MDA0NDQ1N2QwYzhhN2Y4YzIyM2QuLmQ0MDkxZTY2NzU2ZDI3
YzVmYmY5MDg0M2JjZTU3NWMzNDY3ODAwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0zNiw2ICszNiw3IEBACiAj
aW1wb3J0ICJNZWRpYURlc2NyaXB0aW9uLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlLmgiCisjaW1wb3J0ICJN
ZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
aCIKICNpbXBvcnQgIk1lZGlhVGltZUFWRm91bmRhdGlvbi5oIgogI2ltcG9ydCAiTm90SW1wbGVt
ZW50ZWQuaCIKQEAgLTQxOCwxMjggKzQxOSw2IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5k
YXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgTWVkaWFT
YW1wbGVBVkZPYmpDCi0KLWNsYXNzIE1lZGlhU2FtcGxlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBN
ZWRpYVNhbXBsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9i
akM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIGludCB0cmFja0lEKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgdHJhY2tJRCkpOyB9Ci0g
ICAgdmlydHVhbCB+TWVkaWFTYW1wbGVBVkZPYmpDKCkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgTWVk
aWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgaW50IHRyYWNrSUQpCi0g
ICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQotICAgICAgICAsIG1faWQoU3RyaW5nOjpmb3JtYXQo
IiVkIiwgdHJhY2tJRCkpCi0gICAgewotICAgIH0KLQotICAgIE1lZGlhVGltZSBwcmVzZW50YXRp
b25UaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZm
ZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAobV9zYW1wbGUuZ2V0KCkpKTsgfQotICAgIE1lZGlh
VGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdG9NZWRpYVRpbWUoQ01T
YW1wbGVCdWZmZXJHZXREZWNvZGVUaW1lU3RhbXAobV9zYW1wbGUuZ2V0KCkpKTsgfQotICAgIE1l
ZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRvTWVkaWFUaW1lKENN
U2FtcGxlQnVmZmVyR2V0RHVyYXRpb24obV9zYW1wbGUuZ2V0KCkpKTsgfQotICAgIEF0b21pY1N0
cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENNU2FtcGxlQnVmZmVyR2V0
VG90YWxTYW1wbGVTaXplKG1fc2FtcGxlLmdldCgpKTsgfQotICAgIEZsb2F0U2l6ZSBwcmVzZW50
YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBTYW1wbGVGbGFncyBmbGFncygpIGNv
bnN0IG92ZXJyaWRlOwotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIG92ZXJy
aWRlOwotCi0gICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX3NhbXBsZTsKLSAgICBB
dG9taWNTdHJpbmcgbV9pZDsKLX07Ci0KLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6cGxhdGZvcm1TYW1wbGUoKQotewotICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxh
dGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSwgeyAuY21TYW1wbGVCdWZmZXIgPSBtX3Nh
bXBsZS5nZXQoKSB9IH07Ci0gICAgcmV0dXJuIHNhbXBsZTsKLX0KLQotc3RhdGljIGJvb2wgQ01T
YW1wbGVCdWZmZXJJc1JhbmRvbUFjY2VzcyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUpCi17Ci0g
ICAgQ0ZBcnJheVJlZiBhdHRhY2htZW50cyA9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNo
bWVudHNBcnJheShzYW1wbGUsIGZhbHNlKTsKLSAgICBpZiAoIWF0dGFjaG1lbnRzKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5
R2V0Q291bnQoYXR0YWNobWVudHMpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDRkRpY3Rp
b25hcnlSZWYgYXR0YWNobWVudERpY3QgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1
ZUF0SW5kZXgoYXR0YWNobWVudHMsIGkpOwotICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFp
bnNLZXkoYXR0YWNobWVudERpY3QsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYykpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1N
ZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3MgTWVkaWFTYW1wbGVBVkZPYmpDOjpmbGFncygpIGNvbnN0
Ci17Ci0gICAgaW50IHJldHVyblZhbHVlID0gTWVkaWFTYW1wbGU6Ok5vbmU7Ci0KLSAgICBpZiAo
Q01TYW1wbGVCdWZmZXJJc1JhbmRvbUFjY2VzcyhtX3NhbXBsZS5nZXQoKSkpCi0gICAgICAgIHJl
dHVyblZhbHVlIHw9IE1lZGlhU2FtcGxlOjpJc1N5bmM7Ci0KLSAgICByZXR1cm4gU2FtcGxlRmxh
Z3MocmV0dXJuVmFsdWUpOwotfQotCi1GbG9hdFNpemUgTWVkaWFTYW1wbGVBVkZPYmpDOjpwcmVz
ZW50YXRpb25TaXplKCkgY29uc3QKLXsKLSAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1h
dERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX3NhbXBs
ZS5nZXQoKSk7Ci0gICAgaWYgKENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUoZm9ybWF0
RGVzY3JpcHRpb24pICE9IGtDTU1lZGlhVHlwZV9WaWRlbykKLSAgICAgICAgcmV0dXJuIEZsb2F0
U2l6ZSgpOwotCi0gICAgcmV0dXJuIEZsb2F0U2l6ZShDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25H
ZXRQcmVzZW50YXRpb25EaW1lbnNpb25zKGZvcm1hdERlc2NyaXB0aW9uLCB0cnVlLCB0cnVlKSk7
IAotfQotCi12b2lkIE1lZGlhU2FtcGxlQVZGT2JqQzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAotewotICAgIG91dC5wcmludCgie1BUUygiLCBwcmVzZW50YXRpb25UaW1lKCksICIpLCBE
VFMoIiwgZGVjb2RlVGltZSgpLCAiKSwgZHVyYXRpb24oIiwgZHVyYXRpb24oKSwgIiksIGZsYWdz
KCIsIChpbnQpZmxhZ3MoKSwgIiksIHByZXNlbnRhdGlvblNpemUoIiwgcHJlc2VudGF0aW9uU2l6
ZSgpLndpZHRoKCksICJ4IiwgcHJlc2VudGF0aW9uU2l6ZSgpLmhlaWdodCgpLCAiKX0iKTsKLX0K
LQotdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRp
YVRpbWUmIG9mZnNldCkKLXsKLSAgICBDTUl0ZW1Db3VudCBpdGVtQ291bnQgPSAwOwotICAgIGlm
IChub0VyciAhPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShtX3NhbXBs
ZS5nZXQoKSwgMCwgbnVsbHB0ciwgJml0ZW1Db3VudCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWluZ0luZm9BcnJheTsKLSAgICB0aW1pbmdJ
bmZvQXJyYXkuZ3JvdyhpdGVtQ291bnQpOwotICAgIGlmIChub0VyciAhPSBDTVNhbXBsZUJ1ZmZl
ckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShtX3NhbXBsZS5nZXQoKSwgaXRlbUNvdW50LCB0aW1p
bmdJbmZvQXJyYXkuZGF0YSgpLCBudWxscHRyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9y
IChhdXRvJiB0aW1pbmcgOiB0aW1pbmdJbmZvQXJyYXkpIHsKLSAgICAgICAgdGltaW5nLnByZXNl
bnRhdGlvblRpbWVTdGFtcCA9IHRvQ01UaW1lKHRvTWVkaWFUaW1lKHRpbWluZy5wcmVzZW50YXRp
b25UaW1lU3RhbXApICsgb2Zmc2V0KTsKLSAgICAgICAgdGltaW5nLmRlY29kZVRpbWVTdGFtcCA9
IHRvQ01UaW1lKHRvTWVkaWFUaW1lKHRpbWluZy5kZWNvZGVUaW1lU3RhbXApICsgb2Zmc2V0KTsK
LSAgICB9Ci0KLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdTYW1wbGU7Ci0gICAgaWYgKG5vRXJy
ICE9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgbV9zYW1wbGUuZ2V0KCksIGl0ZW1Db3VudCwgdGltaW5nSW5mb0FycmF5LmRhdGEoKSwg
Jm5ld1NhbXBsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2FtcGxlID0gYWRvcHRDRihu
ZXdTYW1wbGUpOwotfQotCi12b2lkIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0VGltZXN0YW1wcyhj
b25zdCBXVEY6Ok1lZGlhVGltZSAmcHJlc2VudGF0aW9uVGltZXN0YW1wLCBjb25zdCBXVEY6Ok1l
ZGlhVGltZSAmZGVjb2RlVGltZXN0YW1wKQotewotICAgIENNSXRlbUNvdW50IGl0ZW1Db3VudCA9
IDA7Ci0gICAgaWYgKG5vRXJyICE9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0Fy
cmF5KG1fc2FtcGxlLmdldCgpLCAwLCBudWxscHRyLCAmaXRlbUNvdW50KSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgVmVjdG9yPENNU2FtcGxlVGltaW5nSW5mbz4gdGltaW5nSW5mb0FycmF5Owot
ICAgIHRpbWluZ0luZm9BcnJheS5ncm93KGl0ZW1Db3VudCk7Ci0gICAgaWYgKG5vRXJyICE9IENN
U2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG1fc2FtcGxlLmdldCgpLCBpdGVt
Q291bnQsIHRpbWluZ0luZm9BcnJheS5kYXRhKCksIG51bGxwdHIpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBmb3IgKGF1dG8mIHRpbWluZyA6IHRpbWluZ0luZm9BcnJheSkgewotICAgICAgICB0
aW1pbmcucHJlc2VudGF0aW9uVGltZVN0YW1wID0gdG9DTVRpbWUocHJlc2VudGF0aW9uVGltZXN0
YW1wKTsKLSAgICAgICAgdGltaW5nLmRlY29kZVRpbWVTdGFtcCA9IHRvQ01UaW1lKGRlY29kZVRp
bWVzdGFtcCk7Ci0gICAgfQotCi0gICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3U2FtcGxlOwotICAg
IGlmIChub0VyciAhPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fc2FtcGxlLmdldCgpLCBpdGVtQ291bnQsIHRpbWluZ0luZm9BcnJh
eS5kYXRhKCksICZuZXdTYW1wbGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NhbXBsZSA9
IGFkb3B0Q0YobmV3U2FtcGxlKTsKLX0KLQotI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBN
ZWRpYURlc2NyaXB0aW9uQVZGT2JqQwogCiBjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyBm
aW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5jcHAKaW5kZXggNzQxNjBmZTcxNzI1MDhkNzYwOGFjYzQzYWQyOWZhOGNjMGRl
OTZlYS4uNGEyN2YyZTMyZmQ3YTIxZTc5YzlmZTMwNDYzM2RiZDllNzlkMzVlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Ym94LmRlY29kZVRpbWVzdGFtcCgpOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guZHVyYXRpb24oKTsgfQogICAgIEF0b21pY1N0cmluZyB0
cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIHZvaWQgc2V0VHJh
Y2tJRChjb25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQogICAgIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7IH0K
ICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2Ft
cGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283767</attachid>
            <date>2016-07-15 09:49:42 -0700</date>
            <delta_ts>2016-07-18 09:33:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159796-20160715094854.patch</filename>
            <type>text/plain</type>
            <size>23687</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRiYjgwZTJjMTJjYjA2
ZDhmYjJlODEyN2IxNTA4ZTVlZDc3NTQ5My4uMWVmOTk5NTY5NjM5Y2I1ODAwYzM4ZDJlZDA0ZDJk
MGI4NjhkZGZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE2LTA3LTE0ICBHZW9y
Z2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIE1lZGlhU2FtcGxlQVZG
T2JqQyBpbnRvIGl0cyBvd24gZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5Nzk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzM2MjQ4OD4K
KworICAgICAgICBJbiBwcmVwYXJhdGlvbiBmb3IgYSBmZWF0dXJlIHRoYXQgdXNlcyBNZWRpYVNh
bXBsZUFWRk9iakMsIGJ1dCBkb2VzCisgICAgICAgIG5vdCBuZWVkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLCBpdCBpcyBiZW5lZmljaWFsIHRvIG1vdmUKKyAgICAgICAgTWVkaWFTYW1wbGVB
VkZPYmpDIHRvIGl0cyBvd24gZmlsZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOiBBbGxvdyBzZXR0aW5nIHRyYWNrSUQgdG8g
YXNzb2NpYXRlCisgICAgICAgIE1lZGlhU2FtcGxlIGlkIHdpdGggTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgaWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
U2FtcGxlQVZGT2JqQy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW06IE1vdmVkCisgICAgICAgIGZyb20g
TWVkaWFTYW1wbGVBVkZPYmpDCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6
OnByZXNlbnRhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpD
OjpkZWNvZGVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6ZHVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpzaXplSW5CeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNNU2FtcGxlQnVmZmVySXNSYW5kb21BY2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpmbGFncyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGlvblNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpkdW1wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2FtcGxlQVZGT2JqQzo6b2Zmc2V0VGltZXN0YW1wc0J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlQVZGT2JqQzo6c2V0VGltZXN0YW1wcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06Cisg
ICAgICAgIE1vdmVkIE1lZGlhU2FtcGxlQVZGT2JqQyB0byBpdHMgb3duIGZpbGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNNU2FtcGxlQnVmZmVySXNSYW5kb21BY2Nlc3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpmbGFncyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGlvblNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpkdW1wKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6b2Zmc2V0VGlt
ZXN0YW1wc0J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qzo6c2V0VGltZXN0YW1wcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisKIDIwMTYtMDctMTQgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGNyZWRlbnRp
YWxzIGluIFVSTCB3aGVuIGFjY2Vzc2VkIHRocm91Z2ggbG9jYXRpb24uaHJlZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlkNDll
MGRiMjBiYjJmZTA0OTIxMzEzZGJlYTlhNmE4Y2MxODFjYjUuLjcyNDI0YzkzM2NjMjUyM2Q5OGIx
Mzk0ZDJkOWE2NmM1NzMyMjJjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk4MCw2ICs5ODAsOCBAQAogCQkxQUY4RTFDMzEy
NTY3M0UwMDAyMzBGRjcgLyogUHJveHlTZXJ2ZXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcgLyog
UHJveHlTZXJ2ZXJDRk5ldC5jcHAgKi87IH07CiAJCTFBRkUxMTk5MENCRkZDQzQwMDMwMTdGQSAv
KiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFGRTExOTcwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0
U2V0Um93TGlzdC5jcHAgKi87IH07CiAJCTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NR
TFJlc3VsdFNldFJvd0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBRkUxMTk4MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xp
c3QuaCAqLzsgfTsKKwkJMUIxMjREOEQxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUIx
MjREOEMxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oICovOyB9OworCQkx
QjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUIxMjREOEUxRDM4MEJCNjAw
RUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSAqLzsgfTsKIAkJMUMwMTA3MDAxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5s
aW5lVGV4dEJveFN0eWxlLmNwcCAqLzsgfTsKIAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8q
IElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHls
ZS5oICovOyB9OwogCQkxQzA5MzlFQTFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5MzlF
ODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAgKi87IH07CkBAIC04NTI5LDYg
Kzg1MzEsOCBAQAogCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcgLyogUHJveHlTZXJ2ZXJDRk5l
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm94eVNlcnZlckNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGRTExOTcwQ0JGRkNDNDAw
MzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1FMUmVzdWx0
U2V0Um93TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQjEyNEQ4QzFEMzgw
QjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE1lZGlhU2FtcGxlQVZGT2JqQy5oOyBwYXRoID0gLi4vTWVkaWFTYW1wbGVB
VkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFCMTI0RDhFMUQzODBCQjYw
MEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDMDEwNkZFMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJv
eFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkYxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzUxNCw2ICsyMzUxOCw4IEBACiAJCURGOUFGRDZG
MTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVB
VkZPYmpDLmggKi8sCisJCQkJMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxl
QVZGT2JqQy5tbSAqLywKIAkJCQlDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1
ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQlDRDU0QTc2MDE4MEY5RjcwMDBCMDc2
QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwICovLApAQCAtMjc5
MzEsNiArMjc5MzcsNyBAQAogCQkJCTE0NzlGQUY0MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJS
dWJ5VGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTQwRTlDMUM3QzAwODM1NTg4IC8q
IFJlbmRlclNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTUwRTlDMUM3QzAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclBhcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFCMTI0
RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDM0JFOTk5MEU5QzFFNUQwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDU4RkU0MEExNTg5REYwQjAwNTYwOUU2IC8qIFJlbmRlclNl
YXJjaEZpZWxkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0VGNUU2MDFEMjBDODM5MDAxNzFFNjAg
LyogVGV4dENvZGVjUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjk5ODMsNiArMjk5
OTAsNyBAQAogCQkJCUE3OTU0NjQzMEI1QzRDQjQwMDdCNDM4RiAvKiBEcmFnRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzk1NDYzRTBCNUM0QzgwMDA3QjQzOEYgLyogRHJhZ0RhdGFNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0NGQjNEMTBCN0VEMTBBMDA3MEMzMkQgLyogRHJhZ0lt
YWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFCMTI0RDhGMUQzODBCQjYwMEVDREZCMCAvKiBN
ZWRpYVNhbXBsZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MyMzE4ODMzMEE5
MDBDOTU0QjUgLyogRHJhZ0ltYWdlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDRkIzRDUw
QjdFRDExODAwNzBDMzJEIC8qIERyYWdJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZE
NkVEMkM3MTM2QjhFNjYwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3IuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAppbmRleCA5ZjBjZDgxNDBl
ZGMxZWMyZDlkNjdhMDhhZjk2YTJhM2IzY2M2NTAyLi43OGY0N2ViZDIwYTdhMjY1Mjg0YTI2NTFk
ZDJmZTU3ZGVmMzA0MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRp
YVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAg
LTMxLDEwICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxl
QnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBNb2NrU2FtcGxlQm94OwotdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNN
U2FtcGxlQnVmZmVyUmVmOwogCiBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewogICAgIGVudW0gewpA
QCAtNTYsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGlt
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyB0cmFja0lEKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHNp
emVfdCBzaXplSW5CeXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVz
ZW50YXRpb25TaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvZmZzZXRUaW1lc3Rh
bXBzQnkoY29uc3QgTWVkaWFUaW1lJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZG
T2JqQy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZhNGZmNTIzZjhjN2QyOWUwMDczNDhmZDU2NjM0M2JjZTFmYTlm
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKyNpbmNsdWRlICJNZWRpYVRpbWVBVkZvdW5kYXRpb24u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgZmlu
YWwgOiBwdWJsaWMgTWVkaWFTYW1wbGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TWVk
aWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBpbnQgdHJh
Y2tJRCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRy
YWNrSUQpKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUo
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTYW1w
bGVBVkZPYmpDKHNhbXBsZSkpOyB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFTYW1wbGVBVkZPYmpD
KENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSkKKyAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCisg
ICAgeworICAgIH0KKyAgICBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2Ft
cGxlLCBpbnQgdHJhY2tJRCkKKyAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCisgICAgICAgICwg
bV9pZChTdHJpbmc6OmZvcm1hdCgiJWQiLCB0cmFja0lEKSkKKyAgICB7CisgICAgfQorICAgIHZp
cnR1YWwgfk1lZGlhU2FtcGxlQVZGT2JqQygpIHsgfQorCisgICAgTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwor
CisgICAgQXRvbWljU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lk
OyB9CisgICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9p
ZCA9IGlkOyB9CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgU2Ft
cGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0
Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKKworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4gbV9zYW1wbGU7CisgICAgQXRvbWljU3RyaW5nIG1faWQ7Cit9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA3NjFlYWI1
MzcxNTgzYzgyYWIzZTM0ODZkM2JiZDVjMWI5ZTA4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxl
QVZGT2JqQy5tbQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTWVkaWFTYW1w
bGVBVkZPYmpDLmgiCisKKyNpbXBvcnQgPHd0Zi9QcmludFN0cmVhbS5oPgorCisjaW1wb3J0ICJD
b3JlTWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhVGltZSBN
ZWRpYVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGlvblRpbWUoKSBjb25zdAoreworICAgIHJldHVy
biB0b01lZGlhVGltZShDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChtX3Nh
bXBsZS5nZXQoKSkpOworfQorCitNZWRpYVRpbWUgTWVkaWFTYW1wbGVBVkZPYmpDOjpkZWNvZGVU
aW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJHZXRE
ZWNvZGVUaW1lU3RhbXAobV9zYW1wbGUuZ2V0KCkpKTsKK30KKworTWVkaWFUaW1lIE1lZGlhU2Ft
cGxlQVZGT2JqQzo6ZHVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiB0b01lZGlhVGltZShD
TVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKG1fc2FtcGxlLmdldCgpKSk7Cit9CisKK3NpemVfdCBN
ZWRpYVNhbXBsZUFWRk9iakM6OnNpemVJbkJ5dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ01T
YW1wbGVCdWZmZXJHZXRUb3RhbFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOworfQorCitQbGF0
Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkKK3sKKyAgICBQ
bGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5
cGUsIHsgLmNtU2FtcGxlQnVmZmVyID0gbV9zYW1wbGUuZ2V0KCkgfSB9OworICAgIHJldHVybiBz
YW1wbGU7Cit9CisKK3N0YXRpYyBib29sIENNU2FtcGxlQnVmZmVySXNSYW5kb21BY2Nlc3MoQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlKQoreworICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHMgPSBD
TVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkoc2FtcGxlLCBmYWxzZSk7Cisg
ICAgaWYgKCFhdHRhY2htZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgZm9y
IChDRkluZGV4IGkgPSAwLCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChhdHRhY2htZW50cyk7IGkg
PCBjb3VudDsgKytpKSB7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiBhdHRhY2htZW50RGljdCA9
IChDRkRpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhdHRhY2htZW50cywgaSk7
CisgICAgICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tleShhdHRhY2htZW50RGljdCwga0NN
U2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5jKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK01lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBN
ZWRpYVNhbXBsZUFWRk9iakM6OmZsYWdzKCkgY29uc3QKK3sKKyAgICBpbnQgcmV0dXJuVmFsdWUg
PSBNZWRpYVNhbXBsZTo6Tm9uZTsKKyAgICAKKyAgICBpZiAoQ01TYW1wbGVCdWZmZXJJc1JhbmRv
bUFjY2VzcyhtX3NhbXBsZS5nZXQoKSkpCisgICAgICAgIHJldHVyblZhbHVlIHw9IE1lZGlhU2Ft
cGxlOjpJc1N5bmM7CisgICAgCisgICAgcmV0dXJuIFNhbXBsZUZsYWdzKHJldHVyblZhbHVlKTsK
K30KKworRmxvYXRTaXplIE1lZGlhU2FtcGxlQVZGT2JqQzo6cHJlc2VudGF0aW9uU2l6ZSgpIGNv
bnN0Cit7CisgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IENN
U2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV9zYW1wbGUuZ2V0KCkpOworICAgIGlm
IChDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFUeXBlKGZvcm1hdERlc2NyaXB0aW9uKSAhPSBr
Q01NZWRpYVR5cGVfVmlkZW8pCisgICAgICAgIHJldHVybiBGbG9hdFNpemUoKTsKKyAgICAKKyAg
ICByZXR1cm4gRmxvYXRTaXplKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldFByZXNlbnRhdGlv
bkRpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24sIHRydWUsIHRydWUpKTsKK30KKwordm9pZCBN
ZWRpYVNhbXBsZUFWRk9iakM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBv
dXQucHJpbnQoIntQVFMoIiwgcHJlc2VudGF0aW9uVGltZSgpLCAiKSwgRFRTKCIsIGRlY29kZVRp
bWUoKSwgIiksIGR1cmF0aW9uKCIsIGR1cmF0aW9uKCksICIpLCBmbGFncygiLCAoaW50KWZsYWdz
KCksICIpLCBwcmVzZW50YXRpb25TaXplKCIsIHByZXNlbnRhdGlvblNpemUoKS53aWR0aCgpLCAi
eCIsIHByZXNlbnRhdGlvblNpemUoKS5oZWlnaHQoKSwgIil9Iik7Cit9CisKK3ZvaWQgTWVkaWFT
YW1wbGVBVkZPYmpDOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQp
Cit7CisgICAgQ01JdGVtQ291bnQgaXRlbUNvdW50ID0gMDsKKyAgICBpZiAobm9FcnIgIT0gQ01T
YW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkobV9zYW1wbGUuZ2V0KCksIDAsIG51
bGxwdHIsICZpdGVtQ291bnQpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgVmVjdG9yPENN
U2FtcGxlVGltaW5nSW5mbz4gdGltaW5nSW5mb0FycmF5OworICAgIHRpbWluZ0luZm9BcnJheS5n
cm93KGl0ZW1Db3VudCk7CisgICAgaWYgKG5vRXJyICE9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxl
VGltaW5nSW5mb0FycmF5KG1fc2FtcGxlLmdldCgpLCBpdGVtQ291bnQsIHRpbWluZ0luZm9BcnJh
eS5kYXRhKCksIG51bGxwdHIpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChhdXRv
JiB0aW1pbmcgOiB0aW1pbmdJbmZvQXJyYXkpIHsKKyAgICAgICAgdGltaW5nLnByZXNlbnRhdGlv
blRpbWVTdGFtcCA9IHRvQ01UaW1lKHRvTWVkaWFUaW1lKHRpbWluZy5wcmVzZW50YXRpb25UaW1l
U3RhbXApICsgb2Zmc2V0KTsKKyAgICAgICAgdGltaW5nLmRlY29kZVRpbWVTdGFtcCA9IHRvQ01U
aW1lKHRvTWVkaWFUaW1lKHRpbWluZy5kZWNvZGVUaW1lU3RhbXApICsgb2Zmc2V0KTsKKyAgICB9
CisgICAgCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3U2FtcGxlOworICAgIGlmIChub0VyciAh
PSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fc2FtcGxlLmdldCgpLCBpdGVtQ291bnQsIHRpbWluZ0luZm9BcnJheS5kYXRhKCksICZu
ZXdTYW1wbGUpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9zYW1wbGUgPSBhZG9wdENG
KG5ld1NhbXBsZSk7Cit9CisKK3ZvaWQgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRUaW1lc3RhbXBz
KGNvbnN0IFdURjo6TWVkaWFUaW1lICZwcmVzZW50YXRpb25UaW1lc3RhbXAsIGNvbnN0IFdURjo6
TWVkaWFUaW1lICZkZWNvZGVUaW1lc3RhbXApCit7CisgICAgQ01JdGVtQ291bnQgaXRlbUNvdW50
ID0gMDsKKyAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZv
QXJyYXkobV9zYW1wbGUuZ2V0KCksIDAsIG51bGxwdHIsICZpdGVtQ291bnQpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgVmVjdG9yPENNU2FtcGxlVGltaW5nSW5mbz4gdGltaW5nSW5mb0Fy
cmF5OworICAgIHRpbWluZ0luZm9BcnJheS5ncm93KGl0ZW1Db3VudCk7CisgICAgaWYgKG5vRXJy
ICE9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG1fc2FtcGxlLmdldCgp
LCBpdGVtQ291bnQsIHRpbWluZ0luZm9BcnJheS5kYXRhKCksIG51bGxwdHIpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgZm9yIChhdXRvJiB0aW1pbmcgOiB0aW1pbmdJbmZvQXJyYXkpIHsK
KyAgICAgICAgdGltaW5nLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHRvQ01UaW1lKHByZXNlbnRh
dGlvblRpbWVzdGFtcCk7CisgICAgICAgIHRpbWluZy5kZWNvZGVUaW1lU3RhbXAgPSB0b0NNVGlt
ZShkZWNvZGVUaW1lc3RhbXApOworICAgIH0KKyAgICAKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBu
ZXdTYW1wbGU7CisgICAgaWYgKG5vRXJyICE9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhO
ZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9zYW1wbGUuZ2V0KCksIGl0ZW1Db3VudCwg
dGltaW5nSW5mb0FycmF5LmRhdGEoKSwgJm5ld1NhbXBsZSkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX3NhbXBsZSA9IGFkb3B0Q0YobmV3U2FtcGxlKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRl
eCA5NzY1ZTRkMzU2ZDg4NmJkMmFlNzAwNDQ0NTdkMGM4YTdmOGMyMjNkLi5kNDA5MWU2Njc1NmQy
N2M1ZmJmOTA4NDNiY2U1NzVjMzQ2NzgwMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzYsNiArMzYsNyBAQAog
I2ltcG9ydCAiTWVkaWFEZXNjcmlwdGlvbi5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAi
TWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
LmgiCiAjaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbXBvcnQgIk5vdEltcGxl
bWVudGVkLmgiCkBAIC00MTgsMTI4ICs0MTksNiBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3Vu
ZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckZhaWxlZFRvRGVjb2RlTm90aWZpYwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIE1lZGlh
U2FtcGxlQVZGT2JqQwotCi1jbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgZmluYWwgOiBwdWJsaWMg
TWVkaWFTYW1wbGUgewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1wbGVBVkZP
YmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBpbnQgdHJhY2tJRCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQpKTsgfQot
ICAgIHZpcnR1YWwgfk1lZGlhU2FtcGxlQVZGT2JqQygpIHsgfQotCi1wcml2YXRlOgotICAgIE1l
ZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIGludCB0cmFja0lEKQot
ICAgICAgICA6IG1fc2FtcGxlKHNhbXBsZSkKLSAgICAgICAgLCBtX2lkKFN0cmluZzo6Zm9ybWF0
KCIlZCIsIHRyYWNrSUQpKQotICAgIHsKLSAgICB9Ci0KLSAgICBNZWRpYVRpbWUgcHJlc2VudGF0
aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRvTWVkaWFUaW1lKENNU2FtcGxlQnVm
ZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKG1fc2FtcGxlLmdldCgpKSk7IH0KLSAgICBNZWRp
YVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRvTWVkaWFUaW1lKENN
U2FtcGxlQnVmZmVyR2V0RGVjb2RlVGltZVN0YW1wKG1fc2FtcGxlLmdldCgpKSk7IH0KLSAgICBN
ZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0b01lZGlhVGltZShD
TVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKG1fc2FtcGxlLmdldCgpKSk7IH0KLSAgICBBdG9taWNT
dHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICBzaXpl
X3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDTVNhbXBsZUJ1ZmZlckdl
dFRvdGFsU2FtcGxlU2l6ZShtX3NhbXBsZS5nZXQoKSk7IH0KLSAgICBGbG9hdFNpemUgcHJlc2Vu
dGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBj
b25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZv
aWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBvdmVy
cmlkZTsKLQotICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9zYW1wbGU7Ci0gICAg
QXRvbWljU3RyaW5nIG1faWQ7Ci19OwotCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9i
akM6OnBsYXRmb3JtU2FtcGxlKCkKLXsKLSAgICBQbGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7IFBs
YXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUsIHsgLmNtU2FtcGxlQnVmZmVyID0gbV9z
YW1wbGUuZ2V0KCkgfSB9OwotICAgIHJldHVybiBzYW1wbGU7Ci19Ci0KLXN0YXRpYyBib29sIENN
U2FtcGxlQnVmZmVySXNSYW5kb21BY2Nlc3MoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlKQotewot
ICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHMgPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFj
aG1lbnRzQXJyYXkoc2FtcGxlLCBmYWxzZSk7Ci0gICAgaWYgKCFhdHRhY2htZW50cykKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KGF0dGFjaG1lbnRzKTsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5UmVmIGF0dGFjaG1lbnREaWN0ID0gKENGRGljdGlvbmFyeVJlZilDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGF0dGFjaG1lbnRzLCBpKTsKLSAgICAgICAgaWYgKENGRGljdGlvbmFyeUNvbnRh
aW5zS2V5KGF0dGFjaG1lbnREaWN0LCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
TWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIE1lZGlhU2FtcGxlQVZGT2JqQzo6ZmxhZ3MoKSBjb25z
dAotewotICAgIGludCByZXR1cm5WYWx1ZSA9IE1lZGlhU2FtcGxlOjpOb25lOwotCi0gICAgaWYg
KENNU2FtcGxlQnVmZmVySXNSYW5kb21BY2Nlc3MobV9zYW1wbGUuZ2V0KCkpKQotICAgICAgICBy
ZXR1cm5WYWx1ZSB8PSBNZWRpYVNhbXBsZTo6SXNTeW5jOwotCi0gICAgcmV0dXJuIFNhbXBsZUZs
YWdzKHJldHVyblZhbHVlKTsKLX0KLQotRmxvYXRTaXplIE1lZGlhU2FtcGxlQVZGT2JqQzo6cHJl
c2VudGF0aW9uU2l6ZSgpIGNvbnN0Ci17Ci0gICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3Jt
YXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV9zYW1w
bGUuZ2V0KCkpOwotICAgIGlmIChDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFUeXBlKGZvcm1h
dERlc2NyaXB0aW9uKSAhPSBrQ01NZWRpYVR5cGVfVmlkZW8pCi0gICAgICAgIHJldHVybiBGbG9h
dFNpemUoKTsKLQotICAgIHJldHVybiBGbG9hdFNpemUoQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9u
R2V0UHJlc2VudGF0aW9uRGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbiwgdHJ1ZSwgdHJ1ZSkp
OyAKLX0KLQotdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKLXsKLSAgICBvdXQucHJpbnQoIntQVFMoIiwgcHJlc2VudGF0aW9uVGltZSgpLCAiKSwg
RFRTKCIsIGRlY29kZVRpbWUoKSwgIiksIGR1cmF0aW9uKCIsIGR1cmF0aW9uKCksICIpLCBmbGFn
cygiLCAoaW50KWZsYWdzKCksICIpLCBwcmVzZW50YXRpb25TaXplKCIsIHByZXNlbnRhdGlvblNp
emUoKS53aWR0aCgpLCAieCIsIHByZXNlbnRhdGlvblNpemUoKS5oZWlnaHQoKSwgIil9Iik7Ci19
Ci0KLXZvaWQgTWVkaWFTYW1wbGVBVkZPYmpDOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVk
aWFUaW1lJiBvZmZzZXQpCi17Ci0gICAgQ01JdGVtQ291bnQgaXRlbUNvdW50ID0gMDsKLSAgICBp
ZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkobV9zYW1w
bGUuZ2V0KCksIDAsIG51bGxwdHIsICZpdGVtQ291bnQpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1pbmdJbmZvQXJyYXk7Ci0gICAgdGltaW5n
SW5mb0FycmF5Lmdyb3coaXRlbUNvdW50KTsKLSAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZm
ZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkobV9zYW1wbGUuZ2V0KCksIGl0ZW1Db3VudCwgdGlt
aW5nSW5mb0FycmF5LmRhdGEoKSwgbnVsbHB0cikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZv
ciAoYXV0byYgdGltaW5nIDogdGltaW5nSW5mb0FycmF5KSB7Ci0gICAgICAgIHRpbWluZy5wcmVz
ZW50YXRpb25UaW1lU3RhbXAgPSB0b0NNVGltZSh0b01lZGlhVGltZSh0aW1pbmcucHJlc2VudGF0
aW9uVGltZVN0YW1wKSArIG9mZnNldCk7Ci0gICAgICAgIHRpbWluZy5kZWNvZGVUaW1lU3RhbXAg
PSB0b0NNVGltZSh0b01lZGlhVGltZSh0aW1pbmcuZGVjb2RlVGltZVN0YW1wKSArIG9mZnNldCk7
Ci0gICAgfQotCi0gICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3U2FtcGxlOwotICAgIGlmIChub0Vy
ciAhPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fc2FtcGxlLmdldCgpLCBpdGVtQ291bnQsIHRpbWluZ0luZm9BcnJheS5kYXRhKCks
ICZuZXdTYW1wbGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NhbXBsZSA9IGFkb3B0Q0Yo
bmV3U2FtcGxlKTsKLX0KLQotdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OnNldFRpbWVzdGFtcHMo
Y29uc3QgV1RGOjpNZWRpYVRpbWUgJnByZXNlbnRhdGlvblRpbWVzdGFtcCwgY29uc3QgV1RGOjpN
ZWRpYVRpbWUgJmRlY29kZVRpbWVzdGFtcCkKLXsKLSAgICBDTUl0ZW1Db3VudCBpdGVtQ291bnQg
PSAwOwotICAgIGlmIChub0VyciAhPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9B
cnJheShtX3NhbXBsZS5nZXQoKSwgMCwgbnVsbHB0ciwgJml0ZW1Db3VudCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWluZ0luZm9BcnJheTsK
LSAgICB0aW1pbmdJbmZvQXJyYXkuZ3JvdyhpdGVtQ291bnQpOwotICAgIGlmIChub0VyciAhPSBD
TVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShtX3NhbXBsZS5nZXQoKSwgaXRl
bUNvdW50LCB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpLCBudWxscHRyKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZm9yIChhdXRvJiB0aW1pbmcgOiB0aW1pbmdJbmZvQXJyYXkpIHsKLSAgICAgICAg
dGltaW5nLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHRvQ01UaW1lKHByZXNlbnRhdGlvblRpbWVz
dGFtcCk7Ci0gICAgICAgIHRpbWluZy5kZWNvZGVUaW1lU3RhbXAgPSB0b0NNVGltZShkZWNvZGVU
aW1lc3RhbXApOwotICAgIH0KLQotICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld1NhbXBsZTsKLSAg
ICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX3NhbXBsZS5nZXQoKSwgaXRlbUNvdW50LCB0aW1pbmdJbmZvQXJy
YXkuZGF0YSgpLCAmbmV3U2FtcGxlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zYW1wbGUg
PSBhZG9wdENGKG5ld1NhbXBsZSk7Ci19Ci0KLSNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsg
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMg
ZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCmluZGV4IDc0MTYwZmU3MTcyNTA4ZDc2MDhhY2M0M2FkMjlmYThjYzBk
ZTk2ZWEuLjRhMjdmMmUzMmZkN2EyMWU3OWM5ZmUzMDQ2MzNkYmQ5ZTc5ZDM1ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC01OCw2ICs1OCw3IEBAIHByaXZh
dGU6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2JveC5kZWNvZGVUaW1lc3RhbXAoKTsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KICAgICBBdG9taWNTdHJpbmcg
dHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldFRy
YWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KICAgICBzaXpl
X3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9
CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVNh
bXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283910</attachid>
            <date>2016-07-18 09:33:44 -0700</date>
            <delta_ts>2016-07-18 12:24:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159796-20160718093250.patch</filename>
            <type>text/plain</type>
            <size>23685</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRiYjgwZTJjMTJjYjA2
ZDhmYjJlODEyN2IxNTA4ZTVlZDc3NTQ5My4uMjZiODI1ZTcwYmUxMDA4M2Y2OTg2Y2Q2M2M2Y2Ey
ZjM3NzNmYWJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE2LTA3LTE0ICBHZW9y
Z2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIE1lZGlhU2FtcGxlQVZG
T2JqQyBpbnRvIGl0cyBvd24gZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5Nzk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzM2MjQ4OD4K
KworICAgICAgICBJbiBwcmVwYXJhdGlvbiBmb3IgYSBmZWF0dXJlIHRoYXQgdXNlcyBNZWRpYVNh
bXBsZUFWRk9iakMsIGJ1dCBkb2VzCisgICAgICAgIG5vdCBuZWVkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLCBpdCBpcyBiZW5lZmljaWFsIHRvIG1vdmUKKyAgICAgICAgTWVkaWFTYW1wbGVB
VkZPYmpDIHRvIGl0cyBvd24gZmlsZS4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxz
b24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDogQWxsb3cgc2V0dGluZyB0cmFja0lEIHRvIGFz
c29jaWF0ZQorICAgICAgICBNZWRpYVNhbXBsZSBpZCB3aXRoIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlIGlkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNh
bXBsZUFWRk9iakMuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tOiBNb3ZlZAorICAgICAgICBmcm9tIE1l
ZGlhU2FtcGxlQVZGT2JqQworICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpw
cmVzZW50YXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6
ZGVjb2RlVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmR1cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2l6ZUluQnl0ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpwbGF0Zm9ybVNhbXBsZSk6
CisgICAgICAgIChXZWJDb3JlOjpDTVNhbXBsZUJ1ZmZlcklzUmFuZG9tQWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6ZmxhZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpwcmVzZW50YXRpb25TaXplKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6ZHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNh
bXBsZUFWRk9iakM6Om9mZnNldFRpbWVzdGFtcHNCeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNhbXBsZUFWRk9iakM6OnNldFRpbWVzdGFtcHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAg
ICAgICBNb3ZlZCBNZWRpYVNhbXBsZUFWRk9iakMgdG8gaXRzIG93biBmaWxlLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpwbGF0Zm9ybVNhbXBsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDTVNhbXBsZUJ1ZmZlcklzUmFuZG9tQWNjZXNzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6ZmxhZ3MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpwcmVzZW50YXRpb25TaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6ZHVtcCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6Om9mZnNldFRpbWVz
dGFtcHNCeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6
OnNldFRpbWVzdGFtcHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorCiAyMDE2LTA3LTE0ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjcmVkZW50aWFs
cyBpbiBVUkwgd2hlbiBhY2Nlc3NlZCB0aHJvdWdoIGxvY2F0aW9uLmhyZWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZDQ5ZTBk
YjIwYmIyZmUwNDkyMTMxM2RiZWE5YTZhOGNjMTgxY2I1Li43MjQyNGM5MzNjYzI1MjNkOThiMTM5
NGQyZDlhNjZjNTczMjIyY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05ODAsNiArOTgwLDggQEAKIAkJMUFGOEUxQzMxMjU2
NzNFMDAwMjMwRkY3IC8qIFByb3h5U2VydmVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8qIFBy
b3h5U2VydmVyQ0ZOZXQuY3BwICovOyB9OwogCQkxQUZFMTE5OTBDQkZGQ0M0MDAzMDE3RkEgLyog
SlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBRkUxMTk3MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNl
dFJvd0xpc3QuY3BwICovOyB9OwogCQkxQUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxS
ZXN1bHRTZXRSb3dMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0
LmggKi87IH07CisJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9i
akMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0
RDhDMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCAqLzsgfTsKKwkJMUIx
MjREOEYxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhFMUQzODBCQjYwMEVD
REZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gKi87IH07CiAJCTFDMDEwNzAwMTkyNTk0REYw
MDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkUxOTI1OTRERjAwOEE0MjAxIC8qIElubGlu
ZVRleHRCb3hTdHlsZS5jcHAgKi87IH07CiAJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJ
bmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUu
aCAqLzsgfTsKIAkJMUMwOTM5RUExQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOTM5RTgx
QTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovOyB9OwpAQCAtODUyOSw2ICs4
NTMxLDggQEAKIAkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8qIFByb3h5U2VydmVyQ0ZOZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJveHlTZXJ2ZXJDRk5l
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkUxMTk3MENCRkZDQzQwMDMw
MTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0
Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNl
dFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUIxMjREOEMxRDM4MEI3
MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBNZWRpYVNhbXBsZUFWRk9iakMuaDsgcGF0aCA9IC4uL01lZGlhU2FtcGxlQVZG
T2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQjEyNEQ4RTFEMzgwQkI2MDBF
Q0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZVRleHRCb3hT
dHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDEwNkZGMTkyNTk0REYw
MDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5saW5lVGV4dEJveFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDMDkzOUU4MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFNWR0ZvbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM1MTQsNiArMjM1MTgsOCBAQAogCQlERjlBRkQ2RjEz
RkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMUIxMjREOEMxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZG
T2JqQy5oICovLAorCQkJCTFCMTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFW
Rk9iakMubW0gKi8sCiAJCQkJQ0RFM0E4NTYxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNERTNBODU1MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCAqLywKQEAgLTI3OTMx
LDYgKzI3OTM3LDcgQEAKIAkJCQkxNDc5RkFGNDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVi
eVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFOTk0MEU5QzFDN0MwMDgzNTU4OCAvKiBS
ZW5kZXJTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFOTk1MEU5QzFDN0MwMDgz
NTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQjEyNEQ4
RDFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzNCRTk5OTBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ1OEZFNDBBMTU4OURGMEIwMDU2MDlFNiAvKiBSZW5kZXJTZWFy
Y2hGaWVsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFRjVFNjAxRDIwQzgzOTAwMTcxRTYwIC8q
IFRleHRDb2RlY1JlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI5OTgzLDYgKzI5OTkw
LDcgQEAKIAkJCQlBNzk1NDY0MzBCNUM0Q0I0MDA3QjQzOEYgLyogRHJhZ0RhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTc5NTQ2M0UwQjVDNEM4MDAwN0I0MzhGIC8qIERyYWdEYXRhTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDRkIzRDEwQjdFRDEwQTAwNzBDMzJEIC8qIERyYWdJbWFn
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVk
aWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEQTdDMjMxODgzMzBBOTAw
Qzk1NEI1IC8qIERyYWdJbWFnZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3Q0ZCM0Q1MEI3
RUQxMTgwMDcwQzMyRCAvKiBEcmFnSW1hZ2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGRDZF
RDJDNzEzNkI4RTY2MDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXggOWYwY2Q4MTQwZWRj
MWVjMmQ5ZDY3YTA4YWY5NmEyYTNiM2NjNjUwMi4uNzhmNDdlYmQyMGE3YTI2NTI4NGEyNjUxZGQy
ZmU1N2RlZjMwNDIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFT
YW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC0z
MSwxMCArMzEsMTEgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1
ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TW9ja1NhbXBsZUJveDsKLXR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNh
bXBsZUJ1ZmZlclJlZjsKIAogc3RydWN0IFBsYXRmb3JtU2FtcGxlIHsKICAgICBlbnVtIHsKQEAg
LTU2LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGRlY29kZVRpbWUo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgdHJhY2tJRCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBzaXpl
X3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2Vu
dGF0aW9uU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1w
c0J5KGNvbnN0IE1lZGlhVGltZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9i
akMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYTRmZjUyM2Y4YzdkMjllMDA3MzQ4ZmQ1NjYzNDNiY2UxZmE5ZmM3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1lZGlhU2FtcGxlLmgiCisjaW5jbHVkZSAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDIGZpbmFs
IDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlh
U2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgaW50IHRyYWNr
SUQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCB0cmFj
a0lEKSk7IH0KKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU2FtcGxl
QVZGT2JqQyhzYW1wbGUpKTsgfQorCitwcml2YXRlOgorICAgIE1lZGlhU2FtcGxlQVZGT2JqQyhD
TVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUpCisgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQorICAg
IHsKKyAgICB9CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZSwgaW50IHRyYWNrSUQpCisgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQorICAgICAgICAsIG1f
aWQoU3RyaW5nOjpmb3JtYXQoIiVkIiwgdHJhY2tJRCkpCisgICAgeworICAgIH0KKyAgICB2aXJ0
dWFsIH5NZWRpYVNhbXBsZUFWRk9iakMoKSB7IH0KKworICAgIE1lZGlhVGltZSBwcmVzZW50YXRp
b25UaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIEF0b21pY1N0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsg
fQorICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQg
PSBpZDsgfQorCisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIFNhbXBs
ZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
TWVkaWFUaW1lJikgb3ZlcnJpZGU7CisKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
IG1fc2FtcGxlOworICAgIEF0b21pY1N0cmluZyBtX2lkOworfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNzYxZWFiNTM3
MTU4M2M4MmFiM2UzNDg2ZDNiYmQ1YzFiOWUwOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFW
Rk9iakMubW0KQEAgLTAsMCArMSwxNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxl
QVZGT2JqQy5oIgorCisjaW1wb3J0IDx3dGYvUHJpbnRTdHJlYW0uaD4KKworI2ltcG9ydCAiQ29y
ZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVRpbWUgTWVk
aWFTYW1wbGVBVkZPYmpDOjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
dG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAobV9zYW1w
bGUuZ2V0KCkpKTsKK30KKworTWVkaWFUaW1lIE1lZGlhU2FtcGxlQVZGT2JqQzo6ZGVjb2RlVGlt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvTWVkaWFUaW1lKENNU2FtcGxlQnVmZmVyR2V0RGVj
b2RlVGltZVN0YW1wKG1fc2FtcGxlLmdldCgpKSk7Cit9CisKK01lZGlhVGltZSBNZWRpYVNhbXBs
ZUFWRk9iakM6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9NZWRpYVRpbWUoQ01T
YW1wbGVCdWZmZXJHZXREdXJhdGlvbihtX3NhbXBsZS5nZXQoKSkpOworfQorCitzaXplX3QgTWVk
aWFTYW1wbGVBVkZPYmpDOjpzaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIENNU2Ft
cGxlQnVmZmVyR2V0VG90YWxTYW1wbGVTaXplKG1fc2FtcGxlLmdldCgpKTsKK30KKworUGxhdGZv
cm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZPYmpDOjpwbGF0Zm9ybVNhbXBsZSgpCit7CisgICAgUGxh
dGZvcm1TYW1wbGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBl
LCB7IC5jbVNhbXBsZUJ1ZmZlciA9IG1fc2FtcGxlLmdldCgpIH0gfTsKKyAgICByZXR1cm4gc2Ft
cGxlOworfQorCitzdGF0aWMgYm9vbCBDTVNhbXBsZUJ1ZmZlcklzUmFuZG9tQWNjZXNzKENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZSkKK3sKKyAgICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzID0gQ01T
YW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBsZSwgZmFsc2UpOworICAg
IGlmICghYXR0YWNobWVudHMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGZvciAo
Q0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoYXR0YWNobWVudHMpOyBpIDwg
Y291bnQ7ICsraSkgeworICAgICAgICBDRkRpY3Rpb25hcnlSZWYgYXR0YWNobWVudERpY3QgPSAo
Q0ZEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVudHMsIGkpOwor
ICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoYXR0YWNobWVudERpY3QsIGtDTVNh
bXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3MgTWVk
aWFTYW1wbGVBVkZPYmpDOjpmbGFncygpIGNvbnN0Cit7CisgICAgaW50IHJldHVyblZhbHVlID0g
TWVkaWFTYW1wbGU6Ok5vbmU7CisgICAgCisgICAgaWYgKENNU2FtcGxlQnVmZmVySXNSYW5kb21B
Y2Nlc3MobV9zYW1wbGUuZ2V0KCkpKQorICAgICAgICByZXR1cm5WYWx1ZSB8PSBNZWRpYVNhbXBs
ZTo6SXNTeW5jOworICAgIAorICAgIHJldHVybiBTYW1wbGVGbGFncyhyZXR1cm5WYWx1ZSk7Cit9
CisKK0Zsb2F0U2l6ZSBNZWRpYVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGlvblNpemUoKSBjb25z
dAoreworICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBDTVNh
bXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKG1fc2FtcGxlLmdldCgpKTsKKyAgICBpZiAo
Q01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhVHlwZShmb3JtYXREZXNjcmlwdGlvbikgIT0ga0NN
TWVkaWFUeXBlX1ZpZGVvKQorICAgICAgICByZXR1cm4gRmxvYXRTaXplKCk7CisgICAgCisgICAg
cmV0dXJuIEZsb2F0U2l6ZShDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25E
aW1lbnNpb25zKGZvcm1hdERlc2NyaXB0aW9uLCB0cnVlLCB0cnVlKSk7Cit9CisKK3ZvaWQgTWVk
aWFTYW1wbGVBVkZPYmpDOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0
LnByaW50KCJ7UFRTKCIsIHByZXNlbnRhdGlvblRpbWUoKSwgIiksIERUUygiLCBkZWNvZGVUaW1l
KCksICIpLCBkdXJhdGlvbigiLCBkdXJhdGlvbigpLCAiKSwgZmxhZ3MoIiwgKGludClmbGFncygp
LCAiKSwgcHJlc2VudGF0aW9uU2l6ZSgiLCBwcmVzZW50YXRpb25TaXplKCkud2lkdGgoKSwgIngi
LCBwcmVzZW50YXRpb25TaXplKCkuaGVpZ2h0KCksICIpfSIpOworfQorCit2b2lkIE1lZGlhU2Ft
cGxlQVZGT2JqQzo6b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYgb2Zmc2V0KQor
eworICAgIENNSXRlbUNvdW50IGl0ZW1Db3VudCA9IDA7CisgICAgaWYgKG5vRXJyICE9IENNU2Ft
cGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG1fc2FtcGxlLmdldCgpLCAwLCBudWxs
cHRyLCAmaXRlbUNvdW50KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFZlY3RvcjxDTVNh
bXBsZVRpbWluZ0luZm8+IHRpbWluZ0luZm9BcnJheTsKKyAgICB0aW1pbmdJbmZvQXJyYXkuZ3Jv
dyhpdGVtQ291bnQpOworICAgIGlmIChub0VyciAhPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRp
bWluZ0luZm9BcnJheShtX3NhbXBsZS5nZXQoKSwgaXRlbUNvdW50LCB0aW1pbmdJbmZvQXJyYXku
ZGF0YSgpLCBudWxscHRyKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZvciAoYXV0byYg
dGltaW5nIDogdGltaW5nSW5mb0FycmF5KSB7CisgICAgICAgIHRpbWluZy5wcmVzZW50YXRpb25U
aW1lU3RhbXAgPSB0b0NNVGltZSh0b01lZGlhVGltZSh0aW1pbmcucHJlc2VudGF0aW9uVGltZVN0
YW1wKSArIG9mZnNldCk7CisgICAgICAgIHRpbWluZy5kZWNvZGVUaW1lU3RhbXAgPSB0b0NNVGlt
ZSh0b01lZGlhVGltZSh0aW1pbmcuZGVjb2RlVGltZVN0YW1wKSArIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld1NhbXBsZTsKKyAgICBpZiAobm9FcnIgIT0g
Q01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBtX3NhbXBsZS5nZXQoKSwgaXRlbUNvdW50LCB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpLCAmbmV3
U2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc2FtcGxlID0gYWRvcHRDRihu
ZXdTYW1wbGUpOworfQorCit2b2lkIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0VGltZXN0YW1wcyhj
b25zdCBXVEY6Ok1lZGlhVGltZSAmcHJlc2VudGF0aW9uVGltZXN0YW1wLCBjb25zdCBXVEY6Ok1l
ZGlhVGltZSAmZGVjb2RlVGltZXN0YW1wKQoreworICAgIENNSXRlbUNvdW50IGl0ZW1Db3VudCA9
IDA7CisgICAgaWYgKG5vRXJyICE9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0Fy
cmF5KG1fc2FtcGxlLmdldCgpLCAwLCBudWxscHRyLCAmaXRlbUNvdW50KSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWluZ0luZm9BcnJh
eTsKKyAgICB0aW1pbmdJbmZvQXJyYXkuZ3JvdyhpdGVtQ291bnQpOworICAgIGlmIChub0VyciAh
PSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShtX3NhbXBsZS5nZXQoKSwg
aXRlbUNvdW50LCB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpLCBudWxscHRyKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIGZvciAoYXV0byYgdGltaW5nIDogdGltaW5nSW5mb0FycmF5KSB7Cisg
ICAgICAgIHRpbWluZy5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSB0b0NNVGltZShwcmVzZW50YXRp
b25UaW1lc3RhbXApOworICAgICAgICB0aW1pbmcuZGVjb2RlVGltZVN0YW1wID0gdG9DTVRpbWUo
ZGVjb2RlVGltZXN0YW1wKTsKKyAgICB9CisgICAgCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3
U2FtcGxlOworICAgIGlmIChub0VyciAhPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3
VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fc2FtcGxlLmdldCgpLCBpdGVtQ291bnQsIHRp
bWluZ0luZm9BcnJheS5kYXRhKCksICZuZXdTYW1wbGUpKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgbV9zYW1wbGUgPSBhZG9wdENGKG5ld1NhbXBsZSk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXgg
OTc2NWU0ZDM1NmQ4ODZiZDJhZTcwMDQ0NDU3ZDBjOGE3ZjhjMjIzZC4uZDQwOTFlNjY3NTZkMjdj
NWZiZjkwODQzYmNlNTc1YzM0Njc4MDAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNp
bXBvcnQgIk1lZGlhRGVzY3JpcHRpb24uaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKKyNpbXBvcnQgIk1l
ZGlhU2FtcGxlQVZGT2JqQy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5o
IgogI2ltcG9ydCAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCiAjaW1wb3J0ICJOb3RJbXBsZW1l
bnRlZC5oIgpAQCAtNDE4LDEyOCArNDE5LDYgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRh
dGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJGYWlsZWRUb0RlY29kZU5vdGlmaWMKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBNZWRpYVNh
bXBsZUFWRk9iakMKLQotY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDIGZpbmFsIDogcHVibGljIE1l
ZGlhU2FtcGxlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgaW50IHRyYWNrSUQpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KLSAg
ICB2aXJ0dWFsIH5NZWRpYVNhbXBsZUFWRk9iakMoKSB7IH0KLQotcHJpdmF0ZToKLSAgICBNZWRp
YVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBpbnQgdHJhY2tJRCkKLSAg
ICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCi0gICAgICAgICwgbV9pZChTdHJpbmc6OmZvcm1hdCgi
JWQiLCB0cmFja0lEKSkKLSAgICB7Ci0gICAgfQotCi0gICAgTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0b01lZGlhVGltZShDTVNhbXBsZUJ1ZmZl
ckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChtX3NhbXBsZS5nZXQoKSkpOyB9Ci0gICAgTWVkaWFU
aW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0b01lZGlhVGltZShDTVNh
bXBsZUJ1ZmZlckdldERlY29kZVRpbWVTdGFtcChtX3NhbXBsZS5nZXQoKSkpOyB9Ci0gICAgTWVk
aWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdG9NZWRpYVRpbWUoQ01T
YW1wbGVCdWZmZXJHZXREdXJhdGlvbihtX3NhbXBsZS5nZXQoKSkpOyB9Ci0gICAgQXRvbWljU3Ry
aW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgc2l6ZV90
IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ01TYW1wbGVCdWZmZXJHZXRU
b3RhbFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOyB9Ci0gICAgRmxvYXRTaXplIHByZXNlbnRh
dGlvblNpemUoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lk
IG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJp
ZGU7Ci0KLSAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fc2FtcGxlOwotICAgIEF0
b21pY1N0cmluZyBtX2lkOwotfTsKLQotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZPYmpD
OjpwbGF0Zm9ybVNhbXBsZSgpCi17Ci0gICAgUGxhdGZvcm1TYW1wbGUgc2FtcGxlID0geyBQbGF0
Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlLCB7IC5jbVNhbXBsZUJ1ZmZlciA9IG1fc2Ft
cGxlLmdldCgpIH0gfTsKLSAgICByZXR1cm4gc2FtcGxlOwotfQotCi1zdGF0aWMgYm9vbCBDTVNh
bXBsZUJ1ZmZlcklzUmFuZG9tQWNjZXNzKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSkKLXsKLSAg
ICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzID0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2ht
ZW50c0FycmF5KHNhbXBsZSwgZmFsc2UpOwotICAgIGlmICghYXR0YWNobWVudHMpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgZm9yIChDRkluZGV4IGkgPSAwLCBjb3VudCA9IENGQXJyYXlH
ZXRDb3VudChhdHRhY2htZW50cyk7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIENGRGljdGlv
bmFyeVJlZiBhdHRhY2htZW50RGljdCA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChhdHRhY2htZW50cywgaSk7Ci0gICAgICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWlu
c0tleShhdHRhY2htZW50RGljdCwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5jKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLU1l
ZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBNZWRpYVNhbXBsZUFWRk9iakM6OmZsYWdzKCkgY29uc3QK
LXsKLSAgICBpbnQgcmV0dXJuVmFsdWUgPSBNZWRpYVNhbXBsZTo6Tm9uZTsKLQotICAgIGlmIChD
TVNhbXBsZUJ1ZmZlcklzUmFuZG9tQWNjZXNzKG1fc2FtcGxlLmdldCgpKSkKLSAgICAgICAgcmV0
dXJuVmFsdWUgfD0gTWVkaWFTYW1wbGU6OklzU3luYzsKLQotICAgIHJldHVybiBTYW1wbGVGbGFn
cyhyZXR1cm5WYWx1ZSk7Ci19Ci0KLUZsb2F0U2l6ZSBNZWRpYVNhbXBsZUFWRk9iakM6OnByZXNl
bnRhdGlvblNpemUoKSBjb25zdAotewotICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKG1fc2FtcGxl
LmdldCgpKTsKLSAgICBpZiAoQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhVHlwZShmb3JtYXRE
ZXNjcmlwdGlvbikgIT0ga0NNTWVkaWFUeXBlX1ZpZGVvKQotICAgICAgICByZXR1cm4gRmxvYXRT
aXplKCk7Ci0KLSAgICByZXR1cm4gRmxvYXRTaXplKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdl
dFByZXNlbnRhdGlvbkRpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24sIHRydWUsIHRydWUpKTsg
Ci19Ci0KLXZvaWQgTWVkaWFTYW1wbGVBVkZPYmpDOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0Ci17Ci0gICAgb3V0LnByaW50KCJ7UFRTKCIsIHByZXNlbnRhdGlvblRpbWUoKSwgIiksIERU
UygiLCBkZWNvZGVUaW1lKCksICIpLCBkdXJhdGlvbigiLCBkdXJhdGlvbigpLCAiKSwgZmxhZ3Mo
IiwgKGludClmbGFncygpLCAiKSwgcHJlc2VudGF0aW9uU2l6ZSgiLCBwcmVzZW50YXRpb25TaXpl
KCkud2lkdGgoKSwgIngiLCBwcmVzZW50YXRpb25TaXplKCkuaGVpZ2h0KCksICIpfSIpOwotfQot
Ci12b2lkIE1lZGlhU2FtcGxlQVZGT2JqQzo6b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlh
VGltZSYgb2Zmc2V0KQotewotICAgIENNSXRlbUNvdW50IGl0ZW1Db3VudCA9IDA7Ci0gICAgaWYg
KG5vRXJyICE9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG1fc2FtcGxl
LmdldCgpLCAwLCBudWxscHRyLCAmaXRlbUNvdW50KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
VmVjdG9yPENNU2FtcGxlVGltaW5nSW5mbz4gdGltaW5nSW5mb0FycmF5OwotICAgIHRpbWluZ0lu
Zm9BcnJheS5ncm93KGl0ZW1Db3VudCk7Ci0gICAgaWYgKG5vRXJyICE9IENNU2FtcGxlQnVmZmVy
R2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG1fc2FtcGxlLmdldCgpLCBpdGVtQ291bnQsIHRpbWlu
Z0luZm9BcnJheS5kYXRhKCksIG51bGxwdHIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3Ig
KGF1dG8mIHRpbWluZyA6IHRpbWluZ0luZm9BcnJheSkgewotICAgICAgICB0aW1pbmcucHJlc2Vu
dGF0aW9uVGltZVN0YW1wID0gdG9DTVRpbWUodG9NZWRpYVRpbWUodGltaW5nLnByZXNlbnRhdGlv
blRpbWVTdGFtcCkgKyBvZmZzZXQpOwotICAgICAgICB0aW1pbmcuZGVjb2RlVGltZVN0YW1wID0g
dG9DTVRpbWUodG9NZWRpYVRpbWUodGltaW5nLmRlY29kZVRpbWVTdGFtcCkgKyBvZmZzZXQpOwot
ICAgIH0KLQotICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld1NhbXBsZTsKLSAgICBpZiAobm9FcnIg
IT0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBtX3NhbXBsZS5nZXQoKSwgaXRlbUNvdW50LCB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpLCAm
bmV3U2FtcGxlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zYW1wbGUgPSBhZG9wdENGKG5l
d1NhbXBsZSk7Ci19Ci0KLXZvaWQgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRUaW1lc3RhbXBzKGNv
bnN0IFdURjo6TWVkaWFUaW1lICZwcmVzZW50YXRpb25UaW1lc3RhbXAsIGNvbnN0IFdURjo6TWVk
aWFUaW1lICZkZWNvZGVUaW1lc3RhbXApCi17Ci0gICAgQ01JdGVtQ291bnQgaXRlbUNvdW50ID0g
MDsKLSAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJy
YXkobV9zYW1wbGUuZ2V0KCksIDAsIG51bGxwdHIsICZpdGVtQ291bnQpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1pbmdJbmZvQXJyYXk7Ci0g
ICAgdGltaW5nSW5mb0FycmF5Lmdyb3coaXRlbUNvdW50KTsKLSAgICBpZiAobm9FcnIgIT0gQ01T
YW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkobV9zYW1wbGUuZ2V0KCksIGl0ZW1D
b3VudCwgdGltaW5nSW5mb0FycmF5LmRhdGEoKSwgbnVsbHB0cikpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGZvciAoYXV0byYgdGltaW5nIDogdGltaW5nSW5mb0FycmF5KSB7Ci0gICAgICAgIHRp
bWluZy5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSB0b0NNVGltZShwcmVzZW50YXRpb25UaW1lc3Rh
bXApOwotICAgICAgICB0aW1pbmcuZGVjb2RlVGltZVN0YW1wID0gdG9DTVRpbWUoZGVjb2RlVGlt
ZXN0YW1wKTsKLSAgICB9Ci0KLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdTYW1wbGU7Ci0gICAg
aWYgKG5vRXJyICE9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbV9zYW1wbGUuZ2V0KCksIGl0ZW1Db3VudCwgdGltaW5nSW5mb0FycmF5
LmRhdGEoKSwgJm5ld1NhbXBsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2FtcGxlID0g
YWRvcHRDRihuZXdTYW1wbGUpOwotfQotCi0jcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1l
ZGlhRGVzY3JpcHRpb25BVkZPYmpDCiAKIGNsYXNzIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZp
bmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCA3NDE2MGZlNzE3MjUwOGQ3NjA4YWNjNDNhZDI5ZmE4Y2MwZGU5
NmVhLi40YTI3ZjJlMzJmZDdhMjFlNzljOWZlMzA0NjMzZGJkOWU3OWQzNWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRl
OgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9i
b3guZGVjb2RlVGltZXN0YW1wKCk7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2JveC5kdXJhdGlvbigpOyB9CiAgICAgQXRvbWljU3RyaW5nIHRy
YWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRUcmFj
a0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CiAgICAgc2l6ZV90
IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9mKG1fYm94KTsgfQog
ICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1TYW1w
bGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>