<?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>216414</bug_id>
          
          <creation_ts>2020-09-11 11:33:13 -0700</creation_ts>
          <short_desc>Consolidate BaseDateAndTimeInputType and BaseChooserOnlyDateAndTimeInputType</short_desc>
          <delta_ts>2020-09-13 13:33:21 -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>Forms</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aditya Keerthi">akeerthi</reporter>
          <assigned_to name="Aditya Keerthi">akeerthi</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1687774</commentid>
    <comment_count>0</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2020-09-11 11:33:13 -0700</bug_when>
    <thetext>BaseChooserOnlyDateAndTimeInputType is the only derived class of BaseDateAndTimeInputType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687777</commentid>
    <comment_count>1</comment_count>
      <attachid>408551</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2020-09-11 11:44:37 -0700</bug_when>
    <thetext>Created attachment 408551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687811</commentid>
    <comment_count>2</comment_count>
      <attachid>408551</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-11 14:25:00 -0700</bug_when>
    <thetext>Comment on attachment 408551
Patch

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

r=me

&gt; Source/WebCore/html/BaseDateAndTimeInputType.cpp:312
&gt; +        return;
&gt; +    DateTimeChooserParameters parameters;

NIT: I&apos;d add a newline here

&gt; Source/WebCore/html/BaseDateAndTimeInputType.h:46
&gt; +enum class DateTimeFormatValidationResults : uint8_t {

NIT: should this be inside `BaseDateAndTimeInputType` instead of in the `WebCore` namespace?

&gt; Source/WebCore/html/DateTimeLocalInputType.h:42
&gt; +        : BaseDateAndTimeInputType(element) { }

Style: the `{ }` should probably be on separate lines too if the constructor is more than one line

&gt; Source/WebCore/html/MonthInputType.h:42
&gt; +        : BaseDateAndTimeInputType(element) { }

ditto (DateTimeLocalInputType.h:42)

&gt; Source/WebCore/html/WeekInputType.h:42
&gt; +        : BaseDateAndTimeInputType(element) { }

ditto (DateTimeLocalInputType.h:42)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687869</commentid>
    <comment_count>3</comment_count>
      <attachid>408575</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2020-09-11 17:49:36 -0700</bug_when>
    <thetext>Created attachment 408575
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687870</commentid>
    <comment_count>4</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2020-09-11 17:50:51 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #2)
&gt; Comment on attachment 408551 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408551&amp;action=review
&gt; 
&gt; r=me

Thanks for the review!

&gt; &gt; Source/WebCore/html/BaseDateAndTimeInputType.cpp:312
&gt; &gt; +        return;
&gt; &gt; +    DateTimeChooserParameters parameters;
&gt; 
&gt; NIT: I&apos;d add a newline here

Added.

&gt; &gt; Source/WebCore/html/BaseDateAndTimeInputType.h:46
&gt; &gt; +enum class DateTimeFormatValidationResults : uint8_t {
&gt; 
&gt; NIT: should this be inside `BaseDateAndTimeInputType` instead of in the
&gt; `WebCore` namespace?

Good idea! I also moved `DateTimeFormatValidator` inside `BaseDateAndTimeInputType`.
 
&gt; &gt; Source/WebCore/html/DateTimeLocalInputType.h:42
&gt; &gt; +        : BaseDateAndTimeInputType(element) { }
&gt; 
&gt; Style: the `{ }` should probably be on separate lines too if the constructor
&gt; is more than one line

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688143</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-13 13:32:28 -0700</bug_when>
    <thetext>Committed r267003: &lt;https://trac.webkit.org/changeset/267003&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408575.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688144</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-13 13:33:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/68812903&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408551</attachid>
            <date>2020-09-11 11:44:37 -0700</date>
            <delta_ts>2020-09-11 14:25:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216414-20200911144436.patch</filename>
            <type>text/plain</type>
            <size>49681</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY5NTUxMGQ4ODY5NWE4
MjQzN2U1NWUwNzIwMGNiYzY1N2EwMzhkZS4uMTI1OGU2ZjYxMWM5MjVhNTkxNzAwOWY2YmY4MDA1
YTM4NWRmMGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA5LTExICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBDb25zb2xpZGF0ZSBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUgYW5kIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5w
dXRUeXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTY0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
YXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZSBpcyB0aGUgb25seSBkZXJpdmVkIGNs
YXNzIG9mCisgICAgICAgIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZS4gRnVydGhlcm1vcmUsIHdp
dGggdGhlIGludHJvZHVjdGlvbiBvZiBlZGl0YWJsZQorICAgICAgICBjb21wb25lbnRzLCAiQ2hv
b3Nlck9ubHkiIG5vIGxvbmdlciBtYWtlcyBzZW5zZSBhcyBhIG5hbWUgZm9yIHRoZQorICAgICAg
ICBkZXJpdmVkIGNsYXNzLiBDb25zZXF1ZW50bHksIGFsbCBsb2dpYyBpbiBCYXNlQ2hvb3Nlck9u
bHlEYXRlQW5kVGltZUlucHV0VHlwZQorICAgICAgICB3YXMgbW92ZWQgaW50byBCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUsIGFuZCB0aGUgZGVyaXZlZCBjbGFzc2VzIG9mIHRoZQorICAgICAgICAi
Q2hvb3Nlck9ubHkiIHR5cGUgbm93IGluaGVyaXQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLgor
CisgICAgICAgIEFsc28gY2hhbmdlZCBzb21lIG1ldGhvZHMgZnJvbSBvdmVycmlkZSB0byBmaW5h
bCwgYW5kIG1hZGUgc29tZSBwcm90ZWN0ZWQKKyAgICAgICAgbWV0aG9kcyBwcml2YXRlLCB3aGVy
ZSBwb3NzaWJsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoZXJlIGlzIG5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2Vy
T25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0Jh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6IFJlbW92ZWQuCisgICAgICAgICog
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVGb3JtYXRWYWxpZGF0b3I6OnZpc2l0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVGb3JtYXRWYWxpZGF0b3I6OnZhbGlkYXRlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6fkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzTW91c2VGb2N1c2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpz
aG91bGRIYXZlU2Vjb25kRmllbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpzaG91bGRIYXZlTWlsbGlzZWNvbmRGaWVsZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNldFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFzQ3VzdG9tRm9jdXNMb2dpYyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjplbGVtZW50
RGlkQmx1cik6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzUHJl
c2VudGluZ0F0dGFjaGVkVmlldyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRm9jdXNFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmFjY2Vzc0tl
eUFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRp
ZEJsdXJGcm9tQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmRpZENoYW5nZVZhbHVlRnJvbUNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6QmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc0VkaXRDb250cm9sT3duZXJEaXNhYmxlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRy
b2xPd25lclJlYWRPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6bG9jYWxlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRpZENob29zZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGlkRW5kQ2hvb3Nlcik6CisgICAgICAgIChX
ZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNsb3NlRGF0ZVRpbWVDaG9vc2VyKToK
KyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0
bWwvRGF0ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpE
YXRlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuaDoKKyAgICAgICAg
KiBodG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvRGF0ZVRp
bWVMb2NhbElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuaDoKKyAg
ICAgICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlu
cHV0VHlwZTo6VGltZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9UaW1lSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9XZWVrSW5wdXRUeXBlLmg6CisKIDIwMjAtMDktMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3J0IEJhc2VBdWRpb0NvbnRleHQg
dG8gdGhlIEhUTUwgZXZlbnQgbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwODcyMTYwNjYyMDZmZWNl
MDFhMDBlZTViNDM2NTQyMjliMmFhOWU0Li40ZTI3ZmMxMDU4ZDlhOGY1NjQ5ZjU2NzBiOGE4Yzlh
MjVkYWFmZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTA2NSw3ICsxMDY1LDYgQEAgaHRtbC9BdXRv
Y2FwaXRhbGl6ZS5jcHAKIGh0bWwvQXV0b2ZpbGwuY3BwCiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5
cGUuY3BwCiBodG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCi1odG1sL0Jhc2VDaG9vc2Vy
T25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAogaHRtbC9CYXNlQ2xpY2thYmxlV2l0aEtleUlu
cHV0VHlwZS5jcHAKIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAogaHRtbC9CYXNl
VGV4dElucHV0VHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAwMGQ1OTUzOTlkZTVjYTA1MThmMjEwNTIyZWY0MzA1MmIx
ZTgxMDJmLi5mZjhmNGRjNjBjOTA4YWJiYjk2YjlmY2IxYzk4YjhjOGU0OGYwNjc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
MTg5LDcgKzUxODksNiBAQAogCQlGNUExNTQyODEyNzk1MzREMDBEMEIwQzAgLyogVmFsaWRhdGlv
bk1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1QTE1NDI2MTI3OTUzNEQwMEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5oICovOyB9Owog
CQlGNUMwNDFEQjBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxRDgwRkZDQTdD
RTAwODM5RDRBIC8qIEhUTUxEYXRhTGlzdEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNUMwNDFFNzBGRkNBOTZEMDA4MzlENEEgLyog
SlNIVE1MRGF0YUxpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNUMwNDFFMjBGRkNBOTZEMDA4MzlENEEgLyogSlNIVE1MRGF0YUxpc3RF
bGVtZW50LmggKi87IH07Ci0JCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nl
ck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjVFMEM2NUExNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2Vy
T25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmggKi87IH07CiAJCUY5MTZDNDhFMERCNTEwRjgwMDc2
Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8q
IEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUY5RjBFRDdBMERCNTBD
QTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRC
OSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKIAkJRkE2NTRBNkMxMTA4
QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRva2VuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1h
dGhNTFRva2VuRWxlbWVudC5oICovOyB9OwpAQCAtMTYyMjcsOCArMTYyMjYsNiBAQAogCQlGNUMw
NDFEOTBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gSFRNTERhdGFMaXN0RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY1QzA0MUUxMEZGQ0E5NkQwMDgzOUQ0QSAvKiBKU0hUTUxEYXRhTGlzdEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRGF0
YUxpc3RFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjVDMDQxRTIw
RkZDQTk2RDAwODM5RDRBIC8qIEpTSFRNTERhdGFMaXN0RWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxEYXRhTGlzdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRjVFMEM2NTkxNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2Vy
T25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjVFMEM2NUExNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VD
aG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY3NUEwNTlBRjE3MEQ4RkFBNUI4Q0FCRSAvKiBNYXRoTUxT
ZWxlY3RFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhNTFNlbGVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGODIx
NjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdv
cms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCUY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjI2NDQsOCArMjI2NDEsNiBAQAogCQkJCTM3OUU2MUM2MTI2Q0E1QzMw
MEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmggKi8sCiAJCQkJMzc5RTYxQzcxMjZDQTVD
MzAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwICovLAogCQkJCTM3OUU2MUM4
MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggKi8sCi0JCQkJRjVF
MEM2NTkxNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcCAqLywKLQkJCQlGNUUwQzY1QTE2NDNDNDJDMDBENkNCNjkgLyogQmFzZUNob29zZXJP
bmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCAqLywKIAkJCQlDMzNFRTVDMjE0RkI0OTYxMDAwMjA5
NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovLAogCQkJCUMzM0VFNUMz
MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovLAog
CQkJCUY1OUM5NUZEMTI1NUIyM0YwMDA2MjNDMCAvKiBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
Y3BwICovLApAQCAtMzA0MTUsNyArMzA0MTAsNiBAQAogCQkJCTQxMkRFRjFGMjNBOTE4QTMwMEQ4
NDBGNiAvKiBCYXNlQXVkaW9TaGFyZWRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFNjFD
QTEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzc5RTYxQ0MxMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUu
aCBpbiBIZWFkZXJzICovLAotCQkJCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hv
b3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzMzRUU1
QzUxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNTlDOTYwMDEyNTVCMjNGMDAwNjIzQzAgLyogQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RBRTEyNTFGMTJEMDAzRUYy
NjkgLyogQmFzZVRleHRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYyMjZjYjJmMjlmMzEzZDA0NmE3
ODMzZjg5Njg4OWZmZDI0MDYzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1l
SW5wdXRUeXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK
LSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZS5oIgotCi0jaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQ
RVMpCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJEYXRlVGltZUNob29zZXJQYXJh
bWV0ZXJzLmgiCi0jaW5jbHVkZSAiRGF0ZVRpbWVGb3JtYXQuaCIKLSNpbmNsdWRlICJGb2N1c0Nv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxJ
bnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Mb2Nh
bGUuaCIKLSNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIK
LSNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU3RlcFJhbmdlLmgiCi0jaW5jbHVk
ZSAiVGV4dC5oIgotI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCi0jaW5jbHVkZSA8
d3RmL0RhdGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGF0ZVRpbWVGb3JtYXRWYWxpZGF0b3IgZmluYWwgOiBw
dWJsaWMgRGF0ZVRpbWVGb3JtYXQ6OlRva2VuSGFuZGxlciB7Ci1wdWJsaWM6Ci0gICAgRGF0ZVRp
bWVGb3JtYXRWYWxpZGF0b3IoKSB7IH0KLQotICAgIHZvaWQgdmlzaXRGaWVsZChEYXRlVGltZUZv
cm1hdDo6RmllbGRUeXBlLCBpbnQpOwotICAgIHZvaWQgdmlzaXRMaXRlcmFsKGNvbnN0IFN0cmlu
ZyYpIHsgfQotCi0gICAgYm9vbCB2YWxpZGF0ZUZvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCwg
Y29uc3QgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUmKTsKLQotcHJpdmF0ZToK
LSAgICBPcHRpb25TZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4gbV9yZXN1bHRz
OwotfTsKLQotdm9pZCBEYXRlVGltZUZvcm1hdFZhbGlkYXRvcjo6dmlzaXRGaWVsZChEYXRlVGlt
ZUZvcm1hdDo6RmllbGRUeXBlIGZpZWxkVHlwZSwgaW50KQotewotICAgIHN3aXRjaCAoZmllbGRU
eXBlKSB7Ci0gICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlWWVhcjoKLSAgICAgICAg
bV9yZXN1bHRzLmFkZChEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNZZWFyKTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVNb250
aDoKLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVNb250aFN0YW5kQWxvbmU6Ci0g
ICAgICAgIG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0czo6SGFz
TW9udGgpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxk
VHlwZVdlZWtPZlllYXI6Ci0gICAgICAgIG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxp
ZGF0aW9uUmVzdWx0czo6SGFzV2Vlayk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBEYXRl
VGltZUZvcm1hdDo6RmllbGRUeXBlRGF5T2ZNb250aDoKLSAgICAgICAgbV9yZXN1bHRzLmFkZChE
YXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNEYXkpOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZVBlcmlvZDoKLSAgICAgICAgbV9y
ZXN1bHRzLmFkZChEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNNZXJpZGllbSk7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlSG91
cjExOgotICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZUhvdXIxMjoKLSAgICAgICAg
bV9yZXN1bHRzLmFkZChEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNIb3VyKTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVIb3Vy
MjM6Ci0gICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlSG91cjI0OgotICAgICAgICBt
X3Jlc3VsdHMuYWRkKERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6Okhhc0hvdXIpOwot
ICAgICAgICBtX3Jlc3VsdHMuYWRkKERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6Okhh
c01lcmlkaWVtKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpG
aWVsZFR5cGVNaW51dGU6Ci0gICAgICAgIG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxp
ZGF0aW9uUmVzdWx0czo6SGFzTWludXRlKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIERh
dGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVTZWNvbmQ6Ci0gICAgICAgIG1fcmVzdWx0cy5hZGQoRGF0
ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0czo6SGFzU2Vjb25kKTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLWJvb2wgRGF0ZVRp
bWVGb3JtYXRWYWxpZGF0b3I6OnZhbGlkYXRlRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0LCBj
b25zdCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZSYgaW5wdXRUeXBlKQotewot
ICAgIGlmICghRGF0ZVRpbWVGb3JtYXQ6OnBhcnNlKGZvcm1hdCwgKnRoaXMpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlucHV0VHlwZS5pc1ZhbGlkRm9ybWF0KG1fcmVzdWx0
cyk7Ci19Ci0KLUJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjp+QmFzZUNob29z
ZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUoKQotewotICAgIGNsb3NlRGF0ZVRpbWVDaG9vc2Vy
KCk7Ci19Ci0KLXZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRs
ZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKQotewotICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAg
IGlmIChlbGVtZW50KCktPmlzRGlzYWJsZWRPclJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+cmVu
ZGVyZXIoKSB8fCAhVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9kYXRlVGltZUNob29zZXIpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAoIWVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAg
aWYgKCFlbGVtZW50KCktPnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhwYXJhbWV0ZXJz
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1dG8gY2hyb21lID0gdGhpcy0+Y2hyb21l
KCkpIHsKLSAgICAgICAgbV9kYXRlVGltZUNob29zZXIgPSBjaHJvbWUtPmNyZWF0ZURhdGVUaW1l
Q2hvb3NlcigqdGhpcyk7Ci0gICAgICAgIGlmIChtX2RhdGVUaW1lQ2hvb3NlcikKLSAgICAgICAg
ICAgIG1fZGF0ZVRpbWVDaG9vc2VyLT5zaG93Q2hvb3NlcihwYXJhbWV0ZXJzKTsKLSAgICB9Ci19
Ci0KLXZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmVsZW1lbnREaWRC
bHVyKCkKLXsKLSAgICBjbG9zZURhdGVUaW1lQ2hvb3NlcigpOwotfQotCi1ib29sIEJhc2VDaG9v
c2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc1ByZXNlbnRpbmdBdHRhY2hlZFZpZXcoKSBj
b25zdAotewotICAgIHJldHVybiAhIW1fZGF0ZVRpbWVDaG9vc2VyOwotfQotCi12b2lkIEJhc2VD
aG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKLXsK
LSAgICBBU1NFUlQoZWxlbWVudCgpKTsKLQotICAgIGF1dG8mIGVsZW1lbnQgPSAqdGhpcy0+ZWxl
bWVudCgpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwotCi0gICAg
aWYgKGRvY3VtZW50LnNldHRpbmdzKCkuZGF0ZVRpbWVJbnB1dHNFZGl0YWJsZUNvbXBvbmVudHNF
bmFibGVkKCkpIHsKLSAgICAgICAgbV9kYXRlVGltZUVkaXRFbGVtZW50ID0gRGF0ZVRpbWVFZGl0
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcyk7Ci0gICAgICAgIGVsZW1lbnQudXNlckFn
ZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCgqbV9kYXRlVGltZUVkaXRFbGVtZW50KTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHZhbHVlQ29udGFpbmVyUHNldWRvKCItd2Via2l0LWRhdGUtYW5kLXRpbWUt
dmFsdWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIGF1dG8g
dmFsdWVDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAg
ICAgdmFsdWVDb250YWluZXItPnNldFBzZXVkbyh2YWx1ZUNvbnRhaW5lclBzZXVkbyk7Ci0gICAg
ICAgIGVsZW1lbnQudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCh2YWx1ZUNvbnRh
aW5lcik7Ci0gICAgfQotICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7Ci19Ci0KLXZvaWQgQmFz
ZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkK
LXsKLSAgICBJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCk7Ci0gICAgbV9kYXRlVGlt
ZUVkaXRFbGVtZW50ID0gbnVsbHB0cjsKLX0KLQotdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5k
VGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQotewotICAgIEFTU0VSVChlbGVt
ZW50KCkpOwotICAgIGlmICghbV9kYXRlVGltZUVkaXRFbGVtZW50KSB7Ci0gICAgICAgIGF1dG8g
bm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7Ci0g
ICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBTdHJpbmcgZGlzcGxheVZhbHVlID0gdmlzaWJsZVZhbHVlKCk7Ci0gICAgICAgIGlm
IChkaXNwbGF5VmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBOZWVkIHRvIHB1dCBz
b21ldGhpbmcgdG8ga2VlcCB0ZXh0IGJhc2VsaW5lLgotICAgICAgICAgICAgZGlzcGxheVZhbHVl
ID0gIiAiX3M7Ci0gICAgICAgIH0KLSAgICAgICAgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2Rl
KS5zZXRJbm5lclRleHQoZGlzcGxheVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIERhdGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMgbGF5b3V0UGFyYW1ldGVy
cyhlbGVtZW50KCktPmxvY2FsZSgpKTsKLQotICAgIGF1dG8gZGF0ZSA9IHBhcnNlVG9EYXRlQ29t
cG9uZW50cyhlbGVtZW50KCktPnZhbHVlKCkpOwotICAgIGlmIChkYXRlKQotICAgICAgICBzZXR1
cExheW91dFBhcmFtZXRlcnMobGF5b3V0UGFyYW1ldGVycywgKmRhdGUpOwotICAgIGVsc2Ugewot
ICAgICAgICBpZiAoYXV0byBkYXRlRm9yTGF5b3V0ID0gc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21w
b25lbnRzKGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmc6OkRlZmF1bHQpLm1pbmltdW0o
KS50b0RvdWJsZSgpKSkKLSAgICAgICAgICAgIHNldHVwTGF5b3V0UGFyYW1ldGVycyhsYXlvdXRQ
YXJhbWV0ZXJzLCAqZGF0ZUZvckxheW91dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNl
dHVwTGF5b3V0UGFyYW1ldGVycyhsYXlvdXRQYXJhbWV0ZXJzLCBEYXRlQ29tcG9uZW50cygpKTsK
LSAgICB9Ci0KLSAgICBpZiAoIURhdGVUaW1lRm9ybWF0VmFsaWRhdG9yKCkudmFsaWRhdGVGb3Jt
YXQobGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCwgKnRoaXMpKQotICAgICAgICBsYXlv
dXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0Rh
dGVUaW1lRm9ybWF0OwotCi0gICAgaWYgKGRhdGUpCi0gICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxl
bWVudC0+c2V0VmFsdWVBc0RhdGUobGF5b3V0UGFyYW1ldGVycywgKmRhdGUpOwotICAgIGVsc2UK
LSAgICAgICAgbV9kYXRlVGltZUVkaXRFbGVtZW50LT5zZXRFbXB0eVZhbHVlKGxheW91dFBhcmFt
ZXRlcnMpOwotfQotCi12b2lkIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpz
ZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxk
RXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yKQotewotICAgIEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6c2V0VmFsdWUodmFsdWUsIHZhbHVlQ2hhbmdlZCwgZXZlbnRCZWhhdmlvcik7Ci0gICAg
aWYgKHZhbHVlQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKTsKLX0KLQot
Ym9vbCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6c2hvdWxkSGF2ZVNlY29u
ZEZpZWxkKGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRlKSBjb25zdAotewotICAgIGlmIChkYXRl
LnNlY29uZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGF1dG8gc3RlcFJhbmdlID0g
Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZzo6RGVmYXVsdCk7Ci0gICAgYXV0byBtaWxs
aXNlY29uZHNQZXJNaW51dGUgPSBEZWNpbWFsOjpmcm9tRG91YmxlKG1zUGVyTWludXRlKTsKLQot
ICAgIHJldHVybiAhc3RlcFJhbmdlLm1pbmltdW0oKS5yZW1haW5kZXIobWlsbGlzZWNvbmRzUGVy
TWludXRlKS5pc1plcm8oKQotICAgICAgICB8fCAhc3RlcFJhbmdlLnN0ZXAoKS5yZW1haW5kZXIo
bWlsbGlzZWNvbmRzUGVyTWludXRlKS5pc1plcm8oKTsKLX0KLQotYm9vbCBCYXNlQ2hvb3Nlck9u
bHlEYXRlQW5kVGltZUlucHV0VHlwZTo6c2hvdWxkSGF2ZU1pbGxpc2Vjb25kRmllbGQoY29uc3Qg
RGF0ZUNvbXBvbmVudHMmIGRhdGUpIGNvbnN0Ci17Ci0gICAgaWYgKGRhdGUubWlsbGlzZWNvbmQo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIHN0ZXBSYW5nZSA9IGNyZWF0ZVN0
ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmc6OkRlZmF1bHQpOwotICAgIGF1dG8gbWlsbGlzZWNvbmRz
UGVyU2Vjb25kID0gRGVjaW1hbDo6ZnJvbURvdWJsZShtc1BlclNlY29uZCk7Ci0KLSAgICByZXR1
cm4gIXN0ZXBSYW5nZS5taW5pbXVtKCkucmVtYWluZGVyKG1pbGxpc2Vjb25kc1BlclNlY29uZCku
aXNaZXJvKCkKLSAgICAgICAgfHwgIXN0ZXBSYW5nZS5zdGVwKCkucmVtYWluZGVyKG1pbGxpc2Vj
b25kc1BlclNlY29uZCkuaXNaZXJvKCk7Ci19Ci0KLXZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OmRldGFjaCgpCi17Ci0gICAgY2xvc2VEYXRlVGltZUNob29zZXIoKTsK
LX0KLQotdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGlkQ2hvb3Nl
VmFsdWUoU3RyaW5nVmlldyB2YWx1ZSkKLXsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBl
bGVtZW50KCktPnNldFZhbHVlKHZhbHVlLnRvU3RyaW5nKCksIERpc3BhdGNoSW5wdXRBbmRDaGFu
Z2VFdmVudCk7Ci19Ci0KLXZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmRpZEVuZENob29zZXIoKQotewotICAgIG1fZGF0ZVRpbWVDaG9vc2VyID0gbnVsbHB0cjsKLX0K
LQotdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6Y2xvc2VEYXRlVGlt
ZUNob29zZXIoKQotewotICAgIGlmIChtX2RhdGVUaW1lQ2hvb3NlcikKLSAgICAgICAgbV9kYXRl
VGltZUNob29zZXItPmVuZENob29zZXIoKTsKLX0KLQotYXV0byBCYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50
KSAtPiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcgotewotICAgIEFTU0VSVChlbGVtZW50KCkp
OwotICAgIHJldHVybiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93
bkV2ZW50KCplbGVtZW50KCksIGV2ZW50KTsKLX0KLQotdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZTo6aGFuZGxlS2V5cHJlc3NFdmVudChLZXlib2FyZEV2ZW50JiBldmVu
dCkKLXsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBCYXNlQ2xpY2thYmxlV2l0aEtleUlu
cHV0VHlwZTo6aGFuZGxlS2V5cHJlc3NFdmVudCgqZWxlbWVudCgpLCBldmVudCk7Ci19Ci0KLXZv
aWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZUtleXVwRXZlbnQo
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCi17Ci0gICAgQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5
cGU6OmhhbmRsZUtleXVwRXZlbnQoKnRoaXMsIGV2ZW50KTsKLX0KLQotdm9pZCBCYXNlQ2hvb3Nl
ck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRm9jdXNFdmVudChOb2RlKiBvbGRGb2N1
c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIGlmICghbV9kYXRlVGlt
ZUVkaXRFbGVtZW50KSB7Ci0gICAgICAgIElucHV0VHlwZTo6aGFuZGxlRm9jdXNFdmVudChvbGRG
b2N1c2VkTm9kZSwgZGlyZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IElmIHRoZSBlbGVtZW50IGNvbnRhaW5zIGVkaXRhYmxlIGNvbXBvbmVudHMsIHRoZSBlbGVtZW50
IGl0c2VsZiBzaG91bGQgbm90Ci0gICAgLy8gYmUgZm9jdXNlZC4gSW5zdGVhZCwgb25lIG9mIGl0
J3MgY2hpbGRyZW4gc2hvdWxkIHJlY2VpdmUgZm9jdXMuCi0KLSAgICBpZiAoZGlyZWN0aW9uID09
IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQpIHsKLSAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgcmVj
ZWl2ZWQgZm9jdXMgd2hlbiBnb2luZyBiYWNrd2FyZHMsIGFkdmFuY2UgdGhlIGZvY3VzIG9uZSBt
b3JlIHRpbWUKLSAgICAgICAgLy8gc28gdGhhdCB0aGlzIGVsZW1lbnQgbm8gbG9uZ2VyIGhhcyBm
b2N1cy4gSW4gdGhpcyBjYXNlLCBvbmUgb2YgdGhlIGNoaWxkcmVuIHNob3VsZAotICAgICAgICAv
LyBub3QgYmUgZm9jdXNlZCBhcyB0aGUgZWxlbWVudCBpcyBsb3NpbmcgZm9jdXMgZW50aXJlbHku
Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLnBhZ2UoKSkK
LSAgICAgICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmFkdmFuY2VGb2N1cyhkaXJlY3Rp
b24sIDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIElmIHRoZSBlbGVtZW50IHJlY2VpdmVk
IGZvY3VzIGluIGFueSBvdGhlciBkaXJlY3Rpb24sIHRyYW5zZmVyIGZvY3VzIHRvIHRoZSBmaXJz
dCBmb2N1c2FibGUgY2hpbGQuCi0gICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudC0+Zm9jdXNC
eU93bmVyKCk7Ci0gICAgfQotfQotCi1ib29sIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5w
dXRUeXBlOjphY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpCi17Ci0gICAgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjphY2Nlc3NLZXlBY3Rpb24oc2VuZE1vdXNlRXZlbnRzKTsK
LSAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICByZXR1cm4gQmFzZUNsaWNrYWJsZVdpdGhLZXlJ
bnB1dFR5cGU6OmFjY2Vzc0tleUFjdGlvbigqZWxlbWVudCgpLCBzZW5kTW91c2VFdmVudHMpOwot
fQotCi1ib29sIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc01vdXNlRm9j
dXNhYmxlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICByZXR1cm4gZWxl
bWVudCgpLT5pc1RleHRGb3JtQ29udHJvbEZvY3VzYWJsZSgpOwotfQotCi1ib29sIEJhc2VDaG9v
c2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QK
LXsKLSAgICBpZiAobV9kYXRlVGltZUVkaXRFbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIElucHV0VHlwZTo6aGFzQ3VzdG9tRm9jdXNMb2dpYygpOwotfQotCi12b2lk
IEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCi17Ci0gICAgaWYgKG5hbWUgPT0gdmFsdWVBdHRyKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWVsZW1lbnQtPmhhc0RpcnR5VmFsdWUoKSkKLSAgICAgICAgICAgICAgICB1cGRh
dGVJbm5lclRleHRWYWx1ZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IHN0
ZXBBdHRyICYmIG1fZGF0ZVRpbWVFZGl0RWxlbWVudCkKLSAgICAgICAgdXBkYXRlSW5uZXJUZXh0
VmFsdWUoKTsKLQotICAgIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdl
ZChuYW1lKTsKLX0KLQotdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6
ZGlkQmx1ckZyb21Db250cm9sKCkKLXsKLSAgICBjbG9zZURhdGVUaW1lQ2hvb3NlcigpOwotfQot
Ci12b2lkIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkaWRDaGFuZ2VWYWx1
ZUZyb21Db250cm9sKCkKLXsKLSAgICBTdHJpbmcgdmFsdWUgPSBzYW5pdGl6ZVZhbHVlKG1fZGF0
ZVRpbWVFZGl0RWxlbWVudC0+dmFsdWUoKSk7Ci0gICAgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpzZXRWYWx1ZSh2YWx1ZSwgdmFsdWUgIT0gZWxlbWVudCgpLT52YWx1ZSgpLCBEaXNwYXRjaElu
cHV0QW5kQ2hhbmdlRXZlbnQpOwotCi0gICAgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotICAgIGlmICghZWxlbWVudCgpLT5zZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRl
cnMocGFyYW1ldGVycykpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2RhdGVUaW1lQ2hv
b3NlcikKLSAgICAgICAgbV9kYXRlVGltZUNob29zZXItPnNob3dDaG9vc2VyKHBhcmFtZXRlcnMp
OwotfQotCi1ib29sIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc0VkaXRD
b250cm9sT3duZXJEaXNhYmxlZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7Ci0g
ICAgcmV0dXJuIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7Ci19Ci0KLWJvb2wg
QmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRyb2xPd25lclJl
YWRPbmx5KCkgY29uc3QKLXsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICByZXR1cm4gZWxl
bWVudCgpLT5pc1JlYWRPbmx5KCk7Ci19Ci0KLUF0b21TdHJpbmcgQmFzZUNob29zZXJPbmx5RGF0
ZUFuZFRpbWVJbnB1dFR5cGU6OmxvY2FsZUlkZW50aWZpZXIoKSBjb25zdAotewotICAgIEFTU0VS
VChlbGVtZW50KCkpOwotICAgIHJldHVybiBlbGVtZW50KCktPmNvbXB1dGVJbmhlcml0ZWRMYW5n
dWFnZSgpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3OGI3YTY1NzQ5OTFiNzBjMjA3YmFhNTcyY2E0ZDBjYzdiYzNmMzA5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkK
LSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCi0KLSNpbmNsdWRlICJCYXNl
Q2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oIgotI2luY2x1ZGUgIkJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZS5oIgotI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3Nlci5oIgotI2luY2x1ZGUgIkRhdGVU
aW1lQ2hvb3NlckNsaWVudC5oIgotI2luY2x1ZGUgIkRhdGVUaW1lRWRpdEVsZW1lbnQuaCIKLSNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBj
bGFzcyBEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzIDogdWludDhfdCB7Ci0gICAgSGFz
WWVhciA9IDEgPDwgMCwKLSAgICBIYXNNb250aCA9IDEgPDwgMSwKLSAgICBIYXNXZWVrID0gMSA8
PCAyLAotICAgIEhhc0RheSA9IDEgPDwgMywKLSAgICBIYXNNZXJpZGllbSA9IDEgPDwgNCwKLSAg
ICBIYXNIb3VyID0gMSA8PCA1LAotICAgIEhhc01pbnV0ZSA9IDEgPDwgNiwKLSAgICBIYXNTZWNv
bmQgPSAxIDw8IDcsCi19OwotCi1jbGFzcyBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0
VHlwZSA6IHB1YmxpYyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUsIHByaXZhdGUgRGF0ZVRpbWVD
aG9vc2VyQ2xpZW50LCBwcml2YXRlIERhdGVUaW1lRWRpdEVsZW1lbnQ6OkVkaXRDb250cm9sT3du
ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNldDxE
YXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPikgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgZXhwbGljaXQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUoSFRNTElu
cHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkg
eyB9Ci0gICAgfkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlKCk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6Okxh
eW91dFBhcmFtZXRlcnMmLCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0ID0gMDsKLQotICAg
IGJvb2wgc2hvdWxkSGF2ZVNlY29uZEZpZWxkKGNvbnN0IERhdGVDb21wb25lbnRzJikgY29uc3Q7
Ci0gICAgYm9vbCBzaG91bGRIYXZlTWlsbGlzZWNvbmRGaWVsZChjb25zdCBEYXRlQ29tcG9uZW50
cyYpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNsb3NlRGF0ZVRpbWVDaG9vc2VyKCk7Ci0KLSAgICAvLyBEYXRl
VGltZUVkaXRFbGVtZW50OjpFZGl0Q29udHJvbE93bmVyIGZ1bmN0aW9uczoKLSAgICB2b2lkIGRp
ZEJsdXJGcm9tQ29udHJvbCgpIGZpbmFsOwotICAgIHZvaWQgZGlkQ2hhbmdlVmFsdWVGcm9tQ29u
dHJvbCgpIGZpbmFsOwotICAgIGJvb2wgaXNFZGl0Q29udHJvbE93bmVyRGlzYWJsZWQoKSBjb25z
dCBmaW5hbDsKLSAgICBib29sIGlzRWRpdENvbnRyb2xPd25lclJlYWRPbmx5KCkgY29uc3QgZmlu
YWw7Ci0gICAgQXRvbVN0cmluZyBsb2NhbGVJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Ci0KLSAg
ICAvLyBJbnB1dFR5cGUgZnVuY3Rpb25zOgotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRldGFjaCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5n
JiwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIG92ZXJyaWRlOwot
ICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZWxlbWVudERpZEJsdXIoKSBmaW5hbDsKLSAgICBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxl
ciBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
aGFuZGxlS2V5cHJlc3NFdmVudChLZXlib2FyZEV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBo
YW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGhhbmRs
ZUZvY3VzRXZlbnQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uKSBmaW5hbDsK
LSAgICBib29sIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBp
c1ByZXNlbnRpbmdBdHRhY2hlZFZpZXcoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGhhc0N1c3Rv
bUZvY3VzTG9naWMoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotCi0gICAgLy8gRGF0ZVRpbWVDaG9vc2VyQ2xp
ZW50IGZ1bmN0aW9uczoKLSAgICB2b2lkIGRpZENob29zZVZhbHVlKFN0cmluZ1ZpZXcpIGZpbmFs
OwotICAgIHZvaWQgZGlkRW5kQ2hvb3NlcigpIGZpbmFsOwotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PERhdGVUaW1lQ2hvb3Nlcj4gbV9kYXRlVGltZUNob29zZXI7Ci0gICAgUmVmUHRyPERhdGVUaW1l
RWRpdEVsZW1lbnQ+IG1fZGF0ZVRpbWVFZGl0RWxlbWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VE
YXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5jcHAKaW5kZXggYzMyYWUzNjM1ZGY3Nzk0NDA2NWE2Nzc1MTg5MTYwNjM3
MWJkOGI5ZC4uNTY5M2ZiZjljNDQ4NTM5NjZjNGExMzQyMWQxNDRmODI4YzRkOWRhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAt
MzQsMTIgKzM0LDI0IEBACiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykK
IAorI2luY2x1ZGUgIkJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAi
Q2hyb21lLmgiCiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJEYXRlVGlt
ZUNob29zZXJQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiRGF0ZVRpbWVGb3JtYXQuaCIKICNpbmNs
dWRlICJEZWNpbWFsLmgiCisjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
SFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgi
CisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlN0ZXBSYW5nZS5oIgorI2luY2x1
ZGUgIlRleHQuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUg
PGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgpAQCAtNTIsNiArNjQsNzkgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHN0
YXRpYyBjb25zdCBpbnQgbXNlY1Blck1pbnV0ZSA9IDYwICogMTAwMDsKIHN0YXRpYyBjb25zdCBp
bnQgbXNlY1BlclNlY29uZCA9IDEwMDA7CiAKK2NsYXNzIERhdGVUaW1lRm9ybWF0VmFsaWRhdG9y
IGZpbmFsIDogcHVibGljIERhdGVUaW1lRm9ybWF0OjpUb2tlbkhhbmRsZXIgeworcHVibGljOgor
ICAgIERhdGVUaW1lRm9ybWF0VmFsaWRhdG9yKCkgeyB9CisKKyAgICB2b2lkIHZpc2l0RmllbGQo
RGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwgaW50KTsKKyAgICB2b2lkIHZpc2l0TGl0ZXJhbChj
b25zdCBTdHJpbmcmKSB7IH0KKworICAgIGJvb2wgdmFsaWRhdGVGb3JtYXQoY29uc3QgU3RyaW5n
JiBmb3JtYXQsIGNvbnN0IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSYpOworCitwcml2YXRlOgor
ICAgIE9wdGlvblNldDxEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPiBtX3Jlc3VsdHM7
Cit9OworCit2b2lkIERhdGVUaW1lRm9ybWF0VmFsaWRhdG9yOjp2aXNpdEZpZWxkKERhdGVUaW1l
Rm9ybWF0OjpGaWVsZFR5cGUgZmllbGRUeXBlLCBpbnQpCit7CisgICAgc3dpdGNoIChmaWVsZFR5
cGUpIHsKKyAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVZZWFyOgorICAgICAgICBt
X3Jlc3VsdHMuYWRkKERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6Okhhc1llYXIpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZU1vbnRo
OgorICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZU1vbnRoU3RhbmRBbG9uZToKKyAg
ICAgICAgbV9yZXN1bHRzLmFkZChEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNN
b250aCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRU
eXBlV2Vla09mWWVhcjoKKyAgICAgICAgbV9yZXN1bHRzLmFkZChEYXRlVGltZUZvcm1hdFZhbGlk
YXRpb25SZXN1bHRzOjpIYXNXZWVrKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERhdGVU
aW1lRm9ybWF0OjpGaWVsZFR5cGVEYXlPZk1vbnRoOgorICAgICAgICBtX3Jlc3VsdHMuYWRkKERh
dGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6Okhhc0RheSk7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlUGVyaW9kOgorICAgICAgICBtX3Jl
c3VsdHMuYWRkKERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6Okhhc01lcmlkaWVtKTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVIb3Vy
MTE6CisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlSG91cjEyOgorICAgICAgICBt
X3Jlc3VsdHMuYWRkKERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6Okhhc0hvdXIpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZUhvdXIy
MzoKKyAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVIb3VyMjQ6CisgICAgICAgIG1f
cmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0czo6SGFzSG91cik7Cisg
ICAgICAgIG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0czo6SGFz
TWVyaWRpZW0pOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZp
ZWxkVHlwZU1pbnV0ZToKKyAgICAgICAgbV9yZXN1bHRzLmFkZChEYXRlVGltZUZvcm1hdFZhbGlk
YXRpb25SZXN1bHRzOjpIYXNNaW51dGUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRGF0
ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZVNlY29uZDoKKyAgICAgICAgbV9yZXN1bHRzLmFkZChEYXRl
VGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNTZWNvbmQpOworICAgICAgICBicmVhazsK
KworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworYm9vbCBEYXRlVGlt
ZUZvcm1hdFZhbGlkYXRvcjo6dmFsaWRhdGVGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQsIGNv
bnN0IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSYgaW5wdXRUeXBlKQoreworICAgIGlmICghRGF0
ZVRpbWVGb3JtYXQ6OnBhcnNlKGZvcm1hdCwgKnRoaXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIGlucHV0VHlwZS5pc1ZhbGlkRm9ybWF0KG1fcmVzdWx0cyk7Cit9CisKK0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6fkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSgpCit7Cisg
ICAgY2xvc2VEYXRlVGltZUNob29zZXIoKTsKK30KKwogZG91YmxlIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6dmFsdWVBc0RhdGUoKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZUFzRG91Ymxl
KCk7CkBAIC0xMDEsMTUgKzE4Niw2IEBAIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpp
c1N0ZXBwYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpCi17Ci0gICAgaWYgKG5hbWUgPT0gbWF4QXR0ciB8fCBuYW1lID09IG1pbkF0dHIpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpCi0gICAgICAgICAgICBl
bGVtZW50LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0gICAgfQotICAgIElucHV0VHlw
ZTo6YXR0cmlidXRlQ2hhbmdlZChuYW1lKTsKLX0KLQogRGVjaW1hbCBCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IERlY2lt
YWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKICAgICBhdXRvIGRhdGUgPSBwYXJzZVRvRGF0ZUNv
bXBvbmVudHMoc291cmNlKTsKQEAgLTE5MCw1ICsyNjYsMjU4IEBAIGJvb2wgQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdAog
ICAgIHJldHVybiAhZWxlbWVudCgpLT5pc1JlYWRPbmx5KCkgJiYgZWxlbWVudCgpLT5pc1RleHRG
b3JtQ29udHJvbEZvY3VzYWJsZSgpOwogfQogCitib29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZTo6aXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7Cisg
ICAgcmV0dXJuIGVsZW1lbnQoKS0+aXNUZXh0Rm9ybUNvbnRyb2xGb2N1c2FibGUoKTsKK30KKwor
Ym9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNob3VsZEhhdmVTZWNvbmRGaWVsZChjb25z
dCBEYXRlQ29tcG9uZW50cyYgZGF0ZSkgY29uc3QKK3sKKyAgICBpZiAoZGF0ZS5zZWNvbmQoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIHN0ZXBSYW5nZSA9IGNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmc6OkRlZmF1bHQpOworICAgIHJldHVybiAhc3RlcFJhbmdlLm1p
bmltdW0oKS5yZW1haW5kZXIobXNlY1Blck1pbnV0ZSkuaXNaZXJvKCkKKyAgICAgICAgfHwgIXN0
ZXBSYW5nZS5zdGVwKCkucmVtYWluZGVyKG1zZWNQZXJNaW51dGUpLmlzWmVybygpOworfQorCiti
b29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2hvdWxkSGF2ZU1pbGxpc2Vjb25kRmllbGQo
Y29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpIGNvbnN0Cit7CisgICAgaWYgKGRhdGUubWlsbGlz
ZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIHN0ZXBSYW5nZSA9IGNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmc6OkRlZmF1bHQpOworICAgIHJldHVybiAhc3Rl
cFJhbmdlLm1pbmltdW0oKS5yZW1haW5kZXIobXNlY1BlclNlY29uZCkuaXNaZXJvKCkKKyAgICAg
ICAgfHwgIXN0ZXBSYW5nZS5zdGVwKCkucmVtYWluZGVyKG1zZWNQZXJTZWNvbmQpLmlzWmVybygp
OworfQorCit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZl
bnRCZWhhdmlvcikKK3sKKyAgICBJbnB1dFR5cGU6OnNldFZhbHVlKHZhbHVlLCB2YWx1ZUNoYW5n
ZWQsIGV2ZW50QmVoYXZpb3IpOworICAgIGlmICh2YWx1ZUNoYW5nZWQpCisgICAgICAgIHVwZGF0
ZUlubmVyVGV4dFZhbHVlKCk7Cit9CisKK3ZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpo
YW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50JikKK3sKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsK
KyAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkT3JSZWFkT25seSgpIHx8ICFlbGVtZW50KCkt
PnJlbmRlcmVyKCkgfHwgIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGF0ZVRpbWVDaG9vc2VyKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKCFlbGVtZW50KCktPmRvY3VtZW50KCkucGFnZSgpKQorICAg
ICAgICByZXR1cm47CisgICAgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwor
ICAgIGlmICghZWxlbWVudCgpLT5zZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMocGFyYW1l
dGVycykpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIGNocm9tZSA9IHRoaXMtPmNo
cm9tZSgpKSB7CisgICAgICAgIG1fZGF0ZVRpbWVDaG9vc2VyID0gY2hyb21lLT5jcmVhdGVEYXRl
VGltZUNob29zZXIoKnRoaXMpOworICAgICAgICBpZiAobV9kYXRlVGltZUNob29zZXIpCisgICAg
ICAgICAgICBtX2RhdGVUaW1lQ2hvb3Nlci0+c2hvd0Nob29zZXIocGFyYW1ldGVycyk7CisgICAg
fQorfQorCit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSgpCit7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBhdXRvJiBlbGVtZW50ID0gKnRo
aXMtPmVsZW1lbnQoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsK
KworICAgIGlmIChkb2N1bWVudC5zZXR0aW5ncygpLmRhdGVUaW1lSW5wdXRzRWRpdGFibGVDb21w
b25lbnRzRW5hYmxlZCgpKSB7CisgICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudCA9IERhdGVU
aW1lRWRpdEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMpOworICAgICAgICBlbGVtZW50
LnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoKm1fZGF0ZVRpbWVFZGl0RWxlbWVu
dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiB2YWx1ZUNvbnRhaW5lclBzZXVkbygiLXdlYmtpdC1kYXRlLWFu
ZC10aW1lLXZhbHVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAg
ICBhdXRvIHZhbHVlQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CisgICAgICAgIHZhbHVlQ29udGFpbmVyLT5zZXRQc2V1ZG8odmFsdWVDb250YWluZXJQc2V1ZG8p
OworICAgICAgICBlbGVtZW50LnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQodmFs
dWVDb250YWluZXIpOworICAgIH0KKyAgICB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOworfQorCit2
b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUoKQorewor
ICAgIElucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUoKTsKKyAgICBtX2RhdGVUaW1lRWRp
dEVsZW1lbnQgPSBudWxscHRyOworfQorCit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQoreworICAgIEFTU0VSVChlbGVtZW50KCkpOworICAgIGlm
ICghbV9kYXRlVGltZUVkaXRFbGVtZW50KSB7CisgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQo
KS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmICghaXM8
SFRNTEVsZW1lbnQ+KG5vZGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIGRp
c3BsYXlWYWx1ZSA9IHZpc2libGVWYWx1ZSgpOworICAgICAgICBpZiAoZGlzcGxheVZhbHVlLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTmVlZCB0byBwdXQgc29tZXRoaW5nIHRvIGtlZXAg
dGV4dCBiYXNlbGluZS4KKyAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9ICIgIl9zOworICAgICAg
ICB9CisgICAgICAgIGRvd25jYXN0PEhUTUxFbGVtZW50Pigqbm9kZSkuc2V0SW5uZXJUZXh0KGRp
c3BsYXlWYWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBEYXRlVGltZUVkaXRF
bGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzIGxheW91dFBhcmFtZXRlcnMoZWxlbWVudCgpLT5sb2Nh
bGUoKSk7CisKKyAgICBhdXRvIGRhdGUgPSBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoZWxlbWVudCgp
LT52YWx1ZSgpKTsKKyAgICBpZiAoZGF0ZSkKKyAgICAgICAgc2V0dXBMYXlvdXRQYXJhbWV0ZXJz
KGxheW91dFBhcmFtZXRlcnMsICpkYXRlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8g
ZGF0ZUZvckxheW91dCA9IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjcmVhdGVTdGVw
UmFuZ2UoQW55U3RlcEhhbmRsaW5nOjpEZWZhdWx0KS5taW5pbXVtKCkudG9Eb3VibGUoKSkpCisg
ICAgICAgICAgICBzZXR1cExheW91dFBhcmFtZXRlcnMobGF5b3V0UGFyYW1ldGVycywgKmRhdGVG
b3JMYXlvdXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXR1cExheW91dFBhcmFtZXRl
cnMobGF5b3V0UGFyYW1ldGVycywgRGF0ZUNvbXBvbmVudHMoKSk7CisgICAgfQorCisgICAgaWYg
KCFEYXRlVGltZUZvcm1hdFZhbGlkYXRvcigpLnZhbGlkYXRlRm9ybWF0KGxheW91dFBhcmFtZXRl
cnMuZGF0ZVRpbWVGb3JtYXQsICp0aGlzKSkKKyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRl
VGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMuZmFsbGJhY2tEYXRlVGltZUZvcm1hdDsKKwor
ICAgIGlmIChkYXRlKQorICAgICAgICBtX2RhdGVUaW1lRWRpdEVsZW1lbnQtPnNldFZhbHVlQXNE
YXRlKGxheW91dFBhcmFtZXRlcnMsICpkYXRlKTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0ZVRp
bWVFZGl0RWxlbWVudC0+c2V0RW1wdHlWYWx1ZShsYXlvdXRQYXJhbWV0ZXJzKTsKK30KKworYm9v
bCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6Omhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdAor
eworICAgIGlmIChtX2RhdGVUaW1lRWRpdEVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gSW5wdXRUeXBlOjpoYXNDdXN0b21Gb2N1c0xvZ2ljKCk7Cit9CisKK3ZvaWQg
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUpCit7CisgICAgaWYgKG5hbWUgPT0gbWF4QXR0ciB8fCBuYW1lID09IG1pbkF0
dHIpIHsKKyAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpCisgICAg
ICAgICAgICBlbGVtZW50LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgfSBlbHNl
IGlmIChuYW1lID09IHZhbHVlQXR0cikgeworICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHRo
aXMtPmVsZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNEaXJ0eVZhbHVl
KCkpCisgICAgICAgICAgICAgICAgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKTsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzdGVwQXR0ciAmJiBtX2RhdGVUaW1lRWRpdEVsZW1lbnQp
CisgICAgICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CisKKyAgICBJbnB1dFR5cGU6OmF0dHJp
YnV0ZUNoYW5nZWQobmFtZSk7Cit9CisKK3ZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpl
bGVtZW50RGlkQmx1cigpCit7CisgICAgY2xvc2VEYXRlVGltZUNob29zZXIoKTsKK30KKwordm9p
ZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRldGFjaCgpCit7CisgICAgY2xvc2VEYXRlVGlt
ZUNob29zZXIoKTsKK30KKworYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzUHJlc2Vu
dGluZ0F0dGFjaGVkVmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuICEhbV9kYXRlVGltZUNob29z
ZXI7Cit9CisKK2F1dG8gQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZl
bnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpIC0+IFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyCit7
CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisgICAgcmV0dXJuIEJhc2VDbGlja2FibGVXaXRoS2V5
SW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoKmVsZW1lbnQoKSwgZXZlbnQpOworfQorCit2
b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlS2V5cHJlc3NFdmVudChLZXlib2Fy
ZEV2ZW50JiBldmVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKyAgICBCYXNlQ2xpY2th
YmxlV2l0aEtleUlucHV0VHlwZTo6aGFuZGxlS2V5cHJlc3NFdmVudCgqZWxlbWVudCgpLCBldmVu
dCk7Cit9CisKK3ZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50
KEtleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRU
eXBlOjpoYW5kbGVLZXl1cEV2ZW50KCp0aGlzLCBldmVudCk7Cit9CisKK3ZvaWQgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KE5vZGUqIG9sZEZvY3VzZWROb2RlLCBG
b2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYgKCFtX2RhdGVUaW1lRWRpdEVsZW1l
bnQpIHsKKyAgICAgICAgSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KG9sZEZvY3VzZWROb2Rl
LCBkaXJlY3Rpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgdGhlIGVs
ZW1lbnQgY29udGFpbnMgZWRpdGFibGUgY29tcG9uZW50cywgdGhlIGVsZW1lbnQgaXRzZWxmIHNo
b3VsZCBub3QKKyAgICAvLyBiZSBmb2N1c2VkLiBJbnN0ZWFkLCBvbmUgb2YgaXQncyBjaGlsZHJl
biBzaG91bGQgcmVjZWl2ZSBmb2N1cy4KKworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJl
Y3Rpb25CYWNrd2FyZCkgeworICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCByZWNlaXZlZCBmb2N1
cyB3aGVuIGdvaW5nIGJhY2t3YXJkcywgYWR2YW5jZSB0aGUgZm9jdXMgb25lIG1vcmUgdGltZQor
ICAgICAgICAvLyBzbyB0aGF0IHRoaXMgZWxlbWVudCBubyBsb25nZXIgaGFzIGZvY3VzLiBJbiB0
aGlzIGNhc2UsIG9uZSBvZiB0aGUgY2hpbGRyZW4gc2hvdWxkCisgICAgICAgIC8vIG5vdCBiZSBm
b2N1c2VkIGFzIHRoZSBlbGVtZW50IGlzIGxvc2luZyBmb2N1cyBlbnRpcmVseS4KKyAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBlbGVtZW50KCktPmRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICAg
ICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuYWR2YW5jZUZvY3VzKGRpcmVjdGlvbiwgMCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgcmVjZWl2ZWQgZm9jdXMgaW4g
YW55IG90aGVyIGRpcmVjdGlvbiwgdHJhbnNmZXIgZm9jdXMgdG8gdGhlIGZpcnN0IGZvY3VzYWJs
ZSBjaGlsZC4KKyAgICAgICAgbV9kYXRlVGltZUVkaXRFbGVtZW50LT5mb2N1c0J5T3duZXIoKTsK
KyAgICB9Cit9CisKK2Jvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjphY2Nlc3NLZXlBY3Rp
b24oYm9vbCBzZW5kTW91c2VFdmVudHMpCit7CisgICAgSW5wdXRUeXBlOjphY2Nlc3NLZXlBY3Rp
b24oc2VuZE1vdXNlRXZlbnRzKTsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKyAgICByZXR1cm4g
QmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGU6OmFjY2Vzc0tleUFjdGlvbigqZWxlbWVudCgp
LCBzZW5kTW91c2VFdmVudHMpOworfQorCit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
ZGlkQmx1ckZyb21Db250cm9sKCkKK3sKKyAgICBjbG9zZURhdGVUaW1lQ2hvb3NlcigpOworfQor
Cit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGlkQ2hhbmdlVmFsdWVGcm9tQ29udHJv
bCgpCit7CisgICAgU3RyaW5nIHZhbHVlID0gc2FuaXRpemVWYWx1ZShtX2RhdGVUaW1lRWRpdEVs
ZW1lbnQtPnZhbHVlKCkpOworICAgIElucHV0VHlwZTo6c2V0VmFsdWUodmFsdWUsIHZhbHVlICE9
IGVsZW1lbnQoKS0+dmFsdWUoKSwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50KTsKKworICAg
IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBpZiAoIWVsZW1lbnQo
KS0+c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobV9kYXRlVGltZUNob29zZXIpCisgICAgICAgIG1fZGF0ZVRpbWVD
aG9vc2VyLT5zaG93Q2hvb3NlcihwYXJhbWV0ZXJzKTsKK30KKworYm9vbCBCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGU6OmlzRWRpdENvbnRyb2xPd25lckRpc2FibGVkKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoZWxlbWVudCgpKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLT5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKTsKK30KKworYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRy
b2xPd25lclJlYWRPbmx5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKyAgICBy
ZXR1cm4gZWxlbWVudCgpLT5pc1JlYWRPbmx5KCk7Cit9CisKK0F0b21TdHJpbmcgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpsb2NhbGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLT5jb21wdXRlSW5oZXJpdGVkTGFuZ3Vh
Z2UoKTsKK30KKwordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRpZENob29zZVZhbHVl
KFN0cmluZ1ZpZXcgdmFsdWUpCit7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisgICAgZWxlbWVu
dCgpLT5zZXRWYWx1ZSh2YWx1ZS50b1N0cmluZygpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZl
bnQpOworfQorCit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGlkRW5kQ2hvb3Nlcigp
Cit7CisgICAgbV9kYXRlVGltZUNob29zZXIgPSBudWxscHRyOworfQorCit2b2lkIEJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6Y2xvc2VEYXRlVGltZUNob29zZXIoKQoreworICAgIGlmIChtX2Rh
dGVUaW1lQ2hvb3NlcikKKyAgICAgICAgbV9kYXRlVGltZUNob29zZXItPmVuZENob29zZXIoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAppbmRleCBmZTg1OTU1NGVlZTI4ZWE4MTRl
NDJiNTgxZmRlYjQzZjJjZmE2NTQwLi41YzU0NDRmZTQ4MTY4NGY2MDlkYjRjNzUxZjk1N2QwNzQ2
NmI2NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmgKQEAgLTMzLDQyICszMyw5OSBAQAogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5Q
VVRfVFlQRVMpCiAKKyNpbmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKKyNpbmNsdWRlICJEYXRl
VGltZUNob29zZXJDbGllbnQuaCIKKyNpbmNsdWRlICJEYXRlVGltZUVkaXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5wdXRUeXBlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGVDb21wb25lbnRzOwogCitlbnVtIGNsYXNzIERh
dGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHMgOiB1aW50OF90IHsKKyAgICBIYXNZZWFyID0g
MSA8PCAwLAorICAgIEhhc01vbnRoID0gMSA8PCAxLAorICAgIEhhc1dlZWsgPSAxIDw8IDIsCisg
ICAgSGFzRGF5ID0gMSA8PCAzLAorICAgIEhhc0hvdXIgPSAxIDw8IDQsCisgICAgSGFzTWludXRl
ID0gMSA8PCA1LAorICAgIEhhc1NlY29uZCA9IDEgPDwgNiwKKyAgICBIYXNNZXJpZGllbSA9IDEg
PDwgNywKK307CisKIC8vIEEgc3VwZXIgY2xhc3Mgb2YgZGF0ZSwgZGF0ZXRpbWUsIGRhdGV0aW1l
LWxvY2FsLCBtb250aCwgdGltZSwgYW5kIHdlZWsgdHlwZXMuCi1jbGFzcyBCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK2NsYXNzIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUsIHByaXZhdGUgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50
LCBwcml2YXRlIERhdGVUaW1lRWRpdEVsZW1lbnQ6OkVkaXRDb250cm9sT3duZXIgeworcHVibGlj
OgorICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNldDxEYXRlVGltZUZvcm1h
dFZhbGlkYXRpb25SZXN1bHRzPikgY29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogSW5wdXRUeXBl
KGVsZW1lbnQpIHsgfQorICAgIH5CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoKTsKIAogICAgIERl
Y2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIHNlcmlhbGl6ZVdpdGhDb21wb25lbnRzKGNvbnN0IERhdGVDb21w
b25lbnRzJikgY29uc3Q7Ci0gICAgU3RyaW5nIHZpc2libGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBv
dmVycmlkZTsKIAorICAgIGJvb2wgc2hvdWxkSGF2ZVNlY29uZEZpZWxkKGNvbnN0IERhdGVDb21w
b25lbnRzJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRIYXZlTWlsbGlzZWNvbmRGaWVsZChjb25z
dCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0OworCitwcml2YXRlOgogICAgIHZpcnR1YWwgT3B0aW9u
YWw8RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3
JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1p
bGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91dFBh
cmFtZXRlcnMmLCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CiAKLXByaXZh
dGU6CisgICAgLy8gSW5wdXRUeXBlIGZ1bmN0aW9uczoKKyAgICBTdHJpbmcgdmlzaWJsZVZhbHVl
KCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikg
Y29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZhbHVl
Q2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgZmluYWw7CiAgICAgZG91YmxlIHZhbHVl
QXNEYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVB
c0RhdGUoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKLSAgICBkb3VibGUgdmFsdWVBc0RvdWJsZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlQXNEZWNpbWFs
KGNvbnN0IERlY2ltYWwmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgdmFsdWVN
aXNzaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSB2YWx1ZUFz
RG91YmxlKCkgY29uc3QgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc0Rl
Y2ltYWwoY29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2YWx1ZU1pc3Np
bmcoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAgICAgRGVjaW1hbCBkZWZhdWx0VmFsdWVG
b3JTdGVwVXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzU3RlcHBhYmxlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhk
b3VibGUpIGNvbnN0OwotICAgIFN0cmluZyBsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzU3RlcHBhYmxlKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGxvY2FsaXplVmFsdWUo
Y29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1JlYWRPbmx5KCkg
Y29uc3QgZmluYWw7CisgICAgYm9vbCBzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpIGZpbmFs
OworICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmlu
YWw7CisgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lk
IGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0
ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgpIGZpbmFsOworICAgIGJvb2wg
aGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CisgICAgYm9vbCBpc1ByZXNlbnRpbmdB
dHRhY2hlZFZpZXcoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGVsZW1lbnREaWRCbHVyKCkgZmlu
YWw7CisgICAgdm9pZCBkZXRhY2goKSBmaW5hbDsKKworICAgIFNob3VsZENhbGxCYXNlRXZlbnRI
YW5kbGVyIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBoYW5kbGVLZXlwcmVzc0V2ZW50KEtleWJvYXJkRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCYpIG92ZXJyaWRlOworICAgIHZvaWQg
aGFuZGxlRm9jdXNFdmVudChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24pIGZp
bmFsOworICAgIGJvb2wgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVy
cmlkZTsKKworICAgIC8vIERhdGVUaW1lRWRpdEVsZW1lbnQ6OkVkaXRDb250cm9sT3duZXIgZnVu
Y3Rpb25zOgorICAgIHZvaWQgZGlkQmx1ckZyb21Db250cm9sKCkgZmluYWw7CisgICAgdm9pZCBk
aWRDaGFuZ2VWYWx1ZUZyb21Db250cm9sKCkgZmluYWw7CisgICAgYm9vbCBpc0VkaXRDb250cm9s
T3duZXJEaXNhYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNFZGl0Q29udHJvbE93bmVy
UmVhZE9ubHkoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxvY2FsZUlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbDsKKworICAgIC8vIERhdGVUaW1lQ2hvb3NlckNsaWVudCBmdW5jdGlvbnM6
CisgICAgdm9pZCBkaWRDaG9vc2VWYWx1ZShTdHJpbmdWaWV3KSBmaW5hbDsKKyAgICB2b2lkIGRp
ZEVuZENob29zZXIoKSBmaW5hbDsKKworICAgIHZvaWQgY2xvc2VEYXRlVGltZUNob29zZXIoKTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29zZXI+IG1fZGF0ZVRpbWVDaG9vc2Vy
OworICAgIFJlZlB0cjxEYXRlVGltZUVkaXRFbGVtZW50PiBtX2RhdGVUaW1lRWRpdEVsZW1lbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRU
eXBlLmNwcAppbmRleCBjZDVlMzU3NTM1YTU2ZTNmNDExYjI2OGNkZjhhMTM4ZjViZmI2NmM5Li45
MWUxMTA2OTMzMWIyN2Q3YjY1ZDM0NGQzYTA0MjkzNzE2YTliZWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGNvbnN0IGludCBk
YXRlU3RlcFNjYWxlRmFjdG9yID0gODY0MDAwMDA7CiBzdGF0aWMgY29uc3QgU3RlcFJhbmdlOjpT
dGVwRGVzY3JpcHRpb24gZGF0ZVN0ZXBEZXNjcmlwdGlvbiB7IGRhdGVEZWZhdWx0U3RlcCwgZGF0
ZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRT
dGVwVmFsdWVTaG91bGRCZUludGVnZXIgfTsKIAogRGF0ZUlucHV0VHlwZTo6RGF0ZUlucHV0VHlw
ZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQotICAgIDogQmFzZUNob29zZXJPbmx5RGF0ZUFu
ZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkKKyAgICA6IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZShl
bGVtZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5oCmluZGV4IDY0OGY2
ZWU2YTg5ZTRkNGYyOTVjOGE4ZGEwZjhiNTI2ZWQyMmYwYTIuLjQxNzkxYjg1ZjQ5NjVhMmQ1NGQ2
ZWZkYzVmYWViZmQxZmZmY2RhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5oCkBA
IC0zMiwxMSArMzIsMTEgQEAKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEUpCiAKLSNpbmNs
dWRlICJCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oIgorI2luY2x1ZGUgIkJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IERhdGVJbnB1dFR5cGUgZmluYWwgOiBwdWJsaWMgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJ
bnB1dFR5cGUgeworY2xhc3MgRGF0ZUlucHV0VHlwZSBmaW5hbCA6IHB1YmxpYyBCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUgewogcHVibGljOgogICAgIGV4cGxpY2l0IERhdGVJbnB1dFR5cGUoSFRN
TElucHV0RWxlbWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lTG9jYWxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmNwcAppbmRleCA1Zjc1MzJkMGE1NzA1MzY5NDBiNzYxNzZjODY4OGE0YjlkMDg0
MDkwLi5hMmI0Y2U3MTljMTdjNmE4NTljZmU0NTQzOTVkNzgzNzA2Y2NhZDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKQEAgLTM0LDEwICsz
NCwxMiBAQAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpCiAKICNpbmNsdWRl
ICJEYXRlQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgIkRhdGVUaW1lRmllbGRzU3RhdGUuaCIKICNp
bmNsdWRlICJEZWNpbWFsLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlICJTdGVwUmFuZ2UuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5w
dXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaApp
bmRleCAxMzE4Y2VmM2RkNTk5ZTczMGYzOTFjZWMzNzEzZjM2Njk2YjUxNTI1Li5iM2M0NzI1OWY5
MGEyN2E3MDYzYzBkMzEzOGZiOWZmMTBmN2E0MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaApAQCAtMzIsMTMgKzMyLDE0IEBACiAKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKQogCi0jaW5jbHVkZSAiQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEYXRlVGltZUxvY2FsSW5wdXRU
eXBlIGZpbmFsIDogcHVibGljIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlIHsK
K2NsYXNzIERhdGVUaW1lTG9jYWxJbnB1dFR5cGUgZmluYWwgOiBwdWJsaWMgQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBEYXRlVGltZUxvY2FsSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRp
bWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgZXhwbGljaXQgRGF0ZVRpbWVMb2NhbElucHV0
VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQorICAgICAgICA6IEJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZShlbGVtZW50KSB7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBBdG9tU3RyaW5n
JiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1
dFR5cGUuaAppbmRleCA5NDE2NTFmYWY5OTRlMjQyYTQzNDc2ZmRkOTk4ZGUzZTNiOTAxYjVhLi5m
OTMzNDVjM2Q0ZWRhOWY3YjQxOTZhNDY0NjgwYTZiN2ZiZTE4OWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Nb250aElucHV0VHlwZS5oCkBAIC0zMiwxMyArMzIsMTQgQEAKIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX01PTlRIKQogCi0jaW5jbHVkZSAiQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1
dFR5cGUuaCIKKyNpbmNsdWRlICJCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBNb250aElucHV0VHlwZSBmaW5hbCA6IHB1YmxpYyBCYXNl
Q2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZSB7CitjbGFzcyBNb250aElucHV0VHlwZSBm
aW5hbCA6IHB1YmxpYyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUgewogcHVibGljOgotICAgIGV4
cGxpY2l0IE1vbnRoSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZUNo
b29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgZXhwbGljaXQg
TW9udGhJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKKyAgICAgICAgOiBCYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3Qg
QXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UaW1lSW5wdXRUeXBlLmNwcAppbmRleCA4MDFhYzJlM2QxYTM2OTBiNDk4YzYwZTViNzQx
ZDEwZDU5OWU3OGZlLi4yMTAzOTU3MzQ4NDdlNWIwOTU3MjcyOGQ2NWZmMTFjODE0YWEwZTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3Rh
dGljIGNvbnN0IGludCB0aW1lU3RlcFNjYWxlRmFjdG9yID0gMTAwMDsKIHN0YXRpYyBjb25zdCBT
dGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiB0aW1lU3RlcERlc2NyaXB0aW9uIHsgdGltZURlZmF1
bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNlLCB0aW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFu
Z2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlciB9OwogCiBUaW1lSW5wdXRUeXBlOjpU
aW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCi0gICAgOiBCYXNlQ2hvb3Nl
ck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZShlbGVtZW50KQorICAgIDogQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlKGVsZW1lbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmgK
aW5kZXggMmQ4OGZhZGJmNTBkZjY0NjkzMzkxZmMwZTRjYjNlNTYxZDBmNzY4ZS4uYzJkM2I4OTMy
ODg3NTdhOTQzZDRjMzMzOTYyYTAwNTY5MWU2MmJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5w
dXRUeXBlLmgKQEAgLTMyLDExICszMiwxMSBAQAogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfVElN
RSkKIAotI2luY2x1ZGUgIkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmgiCisj
aW5jbHVkZSAiQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgVGltZUlucHV0VHlwZSBmaW5hbCA6IHB1YmxpYyBCYXNlQ2hvb3Nlck9ubHlE
YXRlQW5kVGltZUlucHV0VHlwZSB7CitjbGFzcyBUaW1lSW5wdXRUeXBlIGZpbmFsIDogcHVibGlj
IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGltZUlu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvV2Vla0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBl
LmgKaW5kZXggYmZlYjcxYThiMTZhZDhjNDYzYmVmZjE2MDE3MGEzOTNlMzU3ODM4OS4uMzVjNTEx
Njc0MGY0ZTA2NWNjNWVhMjI5ZGJlMTNiYTc5MjVlZmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVr
SW5wdXRUeXBlLmgKQEAgLTMyLDEzICszMiwxNCBAQAogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
V0VFSykKIAotI2luY2x1ZGUgIkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmgi
CisjaW5jbHVkZSAiQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgV2Vla0lucHV0VHlwZSBmaW5hbCA6IHB1YmxpYyBCYXNlQ2hvb3Nlck9u
bHlEYXRlQW5kVGltZUlucHV0VHlwZSB7CitjbGFzcyBXZWVrSW5wdXRUeXBlIGZpbmFsIDogcHVi
bGljIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2Vl
a0lucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VDaG9vc2VyT25seURh
dGVBbmRUaW1lSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQorICAgIGV4cGxpY2l0IFdlZWtJbnB1dFR5
cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKKyAgICAgICAgOiBCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUoZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyYg
Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Cg==
</data>
<flag name="review"
          id="423984"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408575</attachid>
            <date>2020-09-11 17:49:36 -0700</date>
            <delta_ts>2020-09-13 13:32:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-216414-20200911204935.patch</filename>
            <type>text/plain</type>
            <size>49990</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJlNWIwZTBkMWYyY2I4
YWI2OTg5MWQ4Yzk5ZTM5M2U5NjRjYzcxZi4uZTY5ZjIzNmI0ZmZlZGI4MWIxOTU1Y2IzMzJhNDZi
NTVlMTc5ZTc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA5LTExICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBDb25zb2xpZGF0ZSBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUgYW5kIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5w
dXRUeXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTY0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQmFz
ZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUgaXMgdGhlIG9ubHkgZGVyaXZlZCBjbGFz
cyBvZgorICAgICAgICBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuIEZ1cnRoZXJtb3JlLCB3aXRo
IHRoZSBpbnRyb2R1Y3Rpb24gb2YgZWRpdGFibGUKKyAgICAgICAgY29tcG9uZW50cywgIkNob29z
ZXJPbmx5IiBubyBsb25nZXIgbWFrZXMgc2Vuc2UgYXMgYSBuYW1lIGZvciB0aGUKKyAgICAgICAg
ZGVyaXZlZCBjbGFzcy4gQ29uc2VxdWVudGx5LCBhbGwgbG9naWMgaW4gQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGUKKyAgICAgICAgd2FzIG1vdmVkIGludG8gQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLCBhbmQgdGhlIGRlcml2ZWQgY2xhc3NlcyBvZiB0aGUKKyAgICAgICAgIkNo
b29zZXJPbmx5IiB0eXBlIG5vdyBpbmhlcml0IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZS4KKwor
ICAgICAgICBBbHNvIGNoYW5nZWQgc29tZSBtZXRob2RzIGZyb20gb3ZlcnJpZGUgdG8gZmluYWws
IGFuZCBtYWRlIHNvbWUgcHJvdGVjdGVkCisgICAgICAgIG1ldGhvZHMgcHJpdmF0ZSwgd2hlcmUg
cG9zc2libGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGVyZSBpcyBubyBjaGFuZ2Ug
aW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9CYXNlQ2hvb3Nlck9u
bHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9CYXNl
Q2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0
bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VE
YXRlQW5kVGltZUlucHV0VHlwZTo6RGF0ZVRpbWVGb3JtYXRWYWxpZGF0b3I6OnZpc2l0RmllbGQp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpEYXRlVGltZUZv
cm1hdFZhbGlkYXRvcjo6dmFsaWRhdGVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjp+QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aXNNb3VzZUZvY3VzYWJsZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNob3VsZEhh
dmVTZWNvbmRGaWVsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OnNob3VsZEhhdmVNaWxsaXNlY29uZEZpZWxkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRl
c3Ryb3lTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjpoYXNDdXN0b21Gb2N1c0xvZ2ljIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmVsZW1lbnREaWRCbHVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGV0YWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aXNQcmVzZW50aW5n
QXR0YWNoZWRWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6aGFuZGxlS2V5cHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZUtleXVwRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6YWNjZXNzS2V5QWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGlkQmx1ckZy
b21Db250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
ZGlkQ2hhbmdlVmFsdWVGcm9tQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRyb2xPd25lckRpc2FibGVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aXNFZGl0Q29udHJvbE93bmVy
UmVhZE9ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlOjpsb2NhbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6ZGlkQ2hvb3NlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkaWRFbmRDaG9vc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y2xvc2VEYXRlVGltZUNob29zZXIpOgorICAgICAg
ICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9EYXRl
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OkRhdGVJbnB1
dFR5cGUpOgorICAgICAgICAqIGh0bWwvRGF0ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
RGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9EYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5oOgorICAgICAgICAq
IGh0bWwvVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lSW5wdXRUeXBl
OjpUaW1lSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuaDoKKyAgICAg
ICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuaDoKKwogMjAyMC0wOS0xMSAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjY2ODg1KTogQVNTRVJU
SU9OIEZBSUxFRDogSW5zcGVjdG9yOjpDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW5saW5lU3R5
bGVzRm9yTm9kZShsb25nLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiAmJikgIXJlc3VsdC5lcnJvcigp
LmlzRW1wdHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwODcyMTYwNjYyMDZmZWNlMDFhMDBlZTViNDM2
NTQyMjliMmFhOWU0Li40ZTI3ZmMxMDU4ZDlhOGY1NjQ5ZjU2NzBiOGE4YzlhMjVkYWFmZWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTA2NSw3ICsxMDY1LDYgQEAgaHRtbC9BdXRvY2FwaXRhbGl6ZS5j
cHAKIGh0bWwvQXV0b2ZpbGwuY3BwCiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCiBodG1s
L0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCi1odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcAogaHRtbC9CYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAK
IGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAogaHRtbC9CYXNlVGV4dElucHV0VHlw
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBiYzI1OGU3ZTZjNTBlNGU5NmY4ZDQ3ZDFkY2ViYTQzYjMyMWM2MGJhLi42NmMw
Y2ViOGNlMTY4YTA4MzdjMzU5NjRlOThmYmM2MzAzM2NlNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTg5LDcgKzUxODks
NiBAQAogCQlGNUExNTQyODEyNzk1MzREMDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1QTE1NDI2MTI3
OTUzNEQwMEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5oICovOyB9OwogCQlGNUMwNDFEQjBG
RkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxRDgwRkZDQTdDRTAwODM5RDRBIC8q
IEhUTUxEYXRhTGlzdEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGNUMwNDFFNzBGRkNBOTZEMDA4MzlENEEgLyogSlNIVE1MRGF0YUxp
c3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNUMwNDFFMjBGRkNBOTZEMDA4MzlENEEgLyogSlNIVE1MRGF0YUxpc3RFbGVtZW50LmggKi87
IH07Ci0JCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5k
VGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjVFMEM2NUExNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURhdGVBbmRU
aW1lSW5wdXRUeXBlLmggKi87IH07CiAJCUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAv
KiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKIAkJRkE2NTRBNkMxMTA4QUJFRDAwMjYxNUUw
IC8qIE1hdGhNTFRva2VuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRva2VuRWxl
bWVudC5oICovOyB9OwpAQCAtMTYyMzcsOCArMTYyMzYsNiBAQAogCQlGNUMwNDFEOTBGRkNBN0NF
MDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gSFRNTERhdGFMaXN0RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY1QzA0MUUxMEZGQ0E5NkQwMDgzOUQ0QSAvKiBKU0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRGF0YUxpc3RFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjVDMDQxRTIwRkZDQTk2RDAwODM5
RDRBIC8qIEpTSFRNTERhdGFMaXN0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0hUTUxEYXRhTGlzdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRjVFMEM2NTkxNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRjVFMEM2NUExNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURh
dGVBbmRUaW1lSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY3NUEwNTlBRjE3MEQ4RkFBNUI4Q0FCRSAvKiBNYXRoTUxTZWxlY3RFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFNlbGVjdEVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGODIxNjI5OTAyOUY0RkI1
MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCUY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjI2NTUsOCArMjI2NTIsNiBAQAogCQkJCTM3OUU2MUM2MTI2Q0E1QzMwMEI2M0U4RCAvKiBC
YXNlQnV0dG9uSW5wdXRUeXBlLmggKi8sCiAJCQkJMzc5RTYxQzcxMjZDQTVDMzAwQjYzRThEIC8q
IEJhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwICovLAogCQkJCTM3OUU2MUM4MTI2Q0E1QzMwMEI2
M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggKi8sCi0JCQkJRjVFMEM2NTkxNjQzQzQy
QzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCAqLywK
LQkJCQlGNUUwQzY1QTE2NDNDNDJDMDBENkNCNjkgLyogQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRp
bWVJbnB1dFR5cGUuaCAqLywKIAkJCQlDMzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNs
aWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovLAogCQkJCUMzM0VFNUMzMTRGQjQ5NjEwMDAy
MDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovLAogCQkJCUY1OUM5NUZE
MTI1NUIyM0YwMDA2MjNDMCAvKiBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwICovLApAQCAt
MzA0MzUsNyArMzA0MzAsNiBAQAogCQkJCTQxMkRFRjFGMjNBOTE4QTMwMEQ4NDBGNiAvKiBCYXNl
QXVkaW9TaGFyZWRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFNjFDQTEyNkNBNUM0MDBC
NjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYx
Q0MxMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzMzRUU1QzUxNEZCNDk2MTAw
MDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNTlDOTYwMDEyNTVCMjNGMDAwNjIzQzAgLyogQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RBRTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRl
eHRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYyMjZjYjJmMjlmMzEzZDA0NmE3ODMzZjg5Njg4OWZm
ZDI0MDYzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDM4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
LSAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0
VHlwZS5oIgotCi0jaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCi0KLSNpbmNs
dWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmgiCi0j
aW5jbHVkZSAiRGF0ZVRpbWVGb3JtYXQuaCIKLSNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIK
LSNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKLSNpbmNs
dWRlICJSZW5kZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJT
aGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU3RlcFJhbmdlLmgiCi0jaW5jbHVkZSAiVGV4dC5oIgot
I2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0RhdGVNYXRo
Lmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgRGF0ZVRpbWVGb3JtYXRWYWxpZGF0b3IgZmluYWwgOiBwdWJsaWMgRGF0ZVRp
bWVGb3JtYXQ6OlRva2VuSGFuZGxlciB7Ci1wdWJsaWM6Ci0gICAgRGF0ZVRpbWVGb3JtYXRWYWxp
ZGF0b3IoKSB7IH0KLQotICAgIHZvaWQgdmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRU
eXBlLCBpbnQpOwotICAgIHZvaWQgdmlzaXRMaXRlcmFsKGNvbnN0IFN0cmluZyYpIHsgfQotCi0g
ICAgYm9vbCB2YWxpZGF0ZUZvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCwgY29uc3QgQmFzZUNo
b29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUmKTsKLQotcHJpdmF0ZToKLSAgICBPcHRpb25T
ZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4gbV9yZXN1bHRzOwotfTsKLQotdm9p
ZCBEYXRlVGltZUZvcm1hdFZhbGlkYXRvcjo6dmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6Rmll
bGRUeXBlIGZpZWxkVHlwZSwgaW50KQotewotICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7Ci0gICAg
Y2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlWWVhcjoKLSAgICAgICAgbV9yZXN1bHRzLmFk
ZChEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNZZWFyKTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVNb250aDoKLSAgICBjYXNl
IERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVNb250aFN0YW5kQWxvbmU6Ci0gICAgICAgIG1fcmVz
dWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0czo6SGFzTW9udGgpOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZVdlZWtPZlll
YXI6Ci0gICAgICAgIG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0
czo6SGFzV2Vlayk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6
RmllbGRUeXBlRGF5T2ZNb250aDoKLSAgICAgICAgbV9yZXN1bHRzLmFkZChEYXRlVGltZUZvcm1h
dFZhbGlkYXRpb25SZXN1bHRzOjpIYXNEYXkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
RGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZVBlcmlvZDoKLSAgICAgICAgbV9yZXN1bHRzLmFkZChE
YXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNNZXJpZGllbSk7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlSG91cjExOgotICAgIGNh
c2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZUhvdXIxMjoKLSAgICAgICAgbV9yZXN1bHRzLmFk
ZChEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNIb3VyKTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVIb3VyMjM6Ci0gICAgY2Fz
ZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlSG91cjI0OgotICAgICAgICBtX3Jlc3VsdHMuYWRk
KERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6Okhhc0hvdXIpOwotICAgICAgICBtX3Jl
c3VsdHMuYWRkKERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6Okhhc01lcmlkaWVtKTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVNaW51
dGU6Ci0gICAgICAgIG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0
czo6SGFzTWludXRlKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0
OjpGaWVsZFR5cGVTZWNvbmQ6Ci0gICAgICAgIG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRW
YWxpZGF0aW9uUmVzdWx0czo6SGFzU2Vjb25kKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZh
dWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLWJvb2wgRGF0ZVRpbWVGb3JtYXRWYWxp
ZGF0b3I6OnZhbGlkYXRlRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0LCBjb25zdCBCYXNlQ2hv
b3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZSYgaW5wdXRUeXBlKQotewotICAgIGlmICghRGF0
ZVRpbWVGb3JtYXQ6OnBhcnNlKGZvcm1hdCwgKnRoaXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGlucHV0VHlwZS5pc1ZhbGlkRm9ybWF0KG1fcmVzdWx0cyk7Ci19Ci0KLUJh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjp+QmFzZUNob29zZXJPbmx5RGF0ZUFu
ZFRpbWVJbnB1dFR5cGUoKQotewotICAgIGNsb3NlRGF0ZVRpbWVDaG9vc2VyKCk7Ci19Ci0KLXZv
aWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRl
RXZlbnQoRXZlbnQmKQotewotICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAgIGlmIChlbGVtZW50
KCktPmlzRGlzYWJsZWRPclJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+cmVuZGVyZXIoKSB8fCAh
VXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobV9kYXRlVGltZUNob29zZXIpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpZiAoIWVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgaWYgKCFlbGVtZW50
KCktPnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKGF1dG8gY2hyb21lID0gdGhpcy0+Y2hyb21lKCkpIHsKLSAgICAg
ICAgbV9kYXRlVGltZUNob29zZXIgPSBjaHJvbWUtPmNyZWF0ZURhdGVUaW1lQ2hvb3NlcigqdGhp
cyk7Ci0gICAgICAgIGlmIChtX2RhdGVUaW1lQ2hvb3NlcikKLSAgICAgICAgICAgIG1fZGF0ZVRp
bWVDaG9vc2VyLT5zaG93Q2hvb3NlcihwYXJhbWV0ZXJzKTsKLSAgICB9Ci19Ci0KLXZvaWQgQmFz
ZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmVsZW1lbnREaWRCbHVyKCkKLXsKLSAg
ICBjbG9zZURhdGVUaW1lQ2hvb3NlcigpOwotfQotCi1ib29sIEJhc2VDaG9vc2VyT25seURhdGVB
bmRUaW1lSW5wdXRUeXBlOjppc1ByZXNlbnRpbmdBdHRhY2hlZFZpZXcoKSBjb25zdAotewotICAg
IHJldHVybiAhIW1fZGF0ZVRpbWVDaG9vc2VyOwotfQotCi12b2lkIEJhc2VDaG9vc2VyT25seURh
dGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKLXsKLSAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKLQotICAgIGF1dG8mIGVsZW1lbnQgPSAqdGhpcy0+ZWxlbWVudCgpOwotICAg
IGF1dG8mIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwotCi0gICAgaWYgKGRvY3VtZW50
LnNldHRpbmdzKCkuZGF0ZVRpbWVJbnB1dHNFZGl0YWJsZUNvbXBvbmVudHNFbmFibGVkKCkpIHsK
LSAgICAgICAgbV9kYXRlVGltZUVkaXRFbGVtZW50ID0gRGF0ZVRpbWVFZGl0RWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50LCAqdGhpcyk7Ci0gICAgICAgIGVsZW1lbnQudXNlckFnZW50U2hhZG93Um9v
dCgpLT5hcHBlbmRDaGlsZCgqbV9kYXRlVGltZUVkaXRFbGVtZW50KTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHZhbHVlQ29udGFpbmVyUHNldWRvKCItd2Via2l0LWRhdGUtYW5kLXRpbWUtdmFsdWUiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIGF1dG8gdmFsdWVDb250YWlu
ZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgdmFsdWVDb250
YWluZXItPnNldFBzZXVkbyh2YWx1ZUNvbnRhaW5lclBzZXVkbyk7Ci0gICAgICAgIGVsZW1lbnQu
dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCh2YWx1ZUNvbnRhaW5lcik7Ci0gICAg
fQotICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7Ci19Ci0KLXZvaWQgQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKLXsKLSAgICBJbnB1
dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCk7Ci0gICAgbV9kYXRlVGltZUVkaXRFbGVtZW50
ID0gbnVsbHB0cjsKLX0KLQotdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlw
ZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQotewotICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAg
IGlmICghbV9kYXRlVGltZUVkaXRFbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbm9kZSA9IGVsZW1l
bnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7Ci0gICAgICAgIGlmICgh
aXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBTdHJp
bmcgZGlzcGxheVZhbHVlID0gdmlzaWJsZVZhbHVlKCk7Ci0gICAgICAgIGlmIChkaXNwbGF5VmFs
dWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBOZWVkIHRvIHB1dCBzb21ldGhpbmcgdG8g
a2VlcCB0ZXh0IGJhc2VsaW5lLgotICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gIiAiX3M7Ci0g
ICAgICAgIH0KLSAgICAgICAgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2RlKS5zZXRJbm5lclRl
eHQoZGlzcGxheVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIERhdGVUaW1l
RWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMgbGF5b3V0UGFyYW1ldGVycyhlbGVtZW50KCkt
PmxvY2FsZSgpKTsKLQotICAgIGF1dG8gZGF0ZSA9IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhlbGVt
ZW50KCktPnZhbHVlKCkpOwotICAgIGlmIChkYXRlKQotICAgICAgICBzZXR1cExheW91dFBhcmFt
ZXRlcnMobGF5b3V0UGFyYW1ldGVycywgKmRhdGUpOwotICAgIGVsc2UgewotICAgICAgICBpZiAo
YXV0byBkYXRlRm9yTGF5b3V0ID0gc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNyZWF0
ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmc6OkRlZmF1bHQpLm1pbmltdW0oKS50b0RvdWJsZSgp
KSkKLSAgICAgICAgICAgIHNldHVwTGF5b3V0UGFyYW1ldGVycyhsYXlvdXRQYXJhbWV0ZXJzLCAq
ZGF0ZUZvckxheW91dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldHVwTGF5b3V0UGFy
YW1ldGVycyhsYXlvdXRQYXJhbWV0ZXJzLCBEYXRlQ29tcG9uZW50cygpKTsKLSAgICB9Ci0KLSAg
ICBpZiAoIURhdGVUaW1lRm9ybWF0VmFsaWRhdG9yKCkudmFsaWRhdGVGb3JtYXQobGF5b3V0UGFy
YW1ldGVycy5kYXRlVGltZUZvcm1hdCwgKnRoaXMpKQotICAgICAgICBsYXlvdXRQYXJhbWV0ZXJz
LmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0
OwotCi0gICAgaWYgKGRhdGUpCi0gICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudC0+c2V0VmFs
dWVBc0RhdGUobGF5b3V0UGFyYW1ldGVycywgKmRhdGUpOwotICAgIGVsc2UKLSAgICAgICAgbV9k
YXRlVGltZUVkaXRFbGVtZW50LT5zZXRFbXB0eVZhbHVlKGxheW91dFBhcmFtZXRlcnMpOwotfQot
Ci12b2lkIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1ZShjb25z
dCBTdHJpbmcmIHZhbHVlLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlv
ciBldmVudEJlaGF2aW9yKQotewotICAgIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFs
dWUodmFsdWUsIHZhbHVlQ2hhbmdlZCwgZXZlbnRCZWhhdmlvcik7Ci0gICAgaWYgKHZhbHVlQ2hh
bmdlZCkKLSAgICAgICAgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKTsKLX0KLQotYm9vbCBCYXNlQ2hv
b3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6c2hvdWxkSGF2ZVNlY29uZEZpZWxkKGNvbnN0
IERhdGVDb21wb25lbnRzJiBkYXRlKSBjb25zdAotewotICAgIGlmIChkYXRlLnNlY29uZCgpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGF1dG8gc3RlcFJhbmdlID0gY3JlYXRlU3RlcFJh
bmdlKEFueVN0ZXBIYW5kbGluZzo6RGVmYXVsdCk7Ci0gICAgYXV0byBtaWxsaXNlY29uZHNQZXJN
aW51dGUgPSBEZWNpbWFsOjpmcm9tRG91YmxlKG1zUGVyTWludXRlKTsKLQotICAgIHJldHVybiAh
c3RlcFJhbmdlLm1pbmltdW0oKS5yZW1haW5kZXIobWlsbGlzZWNvbmRzUGVyTWludXRlKS5pc1pl
cm8oKQotICAgICAgICB8fCAhc3RlcFJhbmdlLnN0ZXAoKS5yZW1haW5kZXIobWlsbGlzZWNvbmRz
UGVyTWludXRlKS5pc1plcm8oKTsKLX0KLQotYm9vbCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6c2hvdWxkSGF2ZU1pbGxpc2Vjb25kRmllbGQoY29uc3QgRGF0ZUNvbXBvbmVu
dHMmIGRhdGUpIGNvbnN0Ci17Ci0gICAgaWYgKGRhdGUubWlsbGlzZWNvbmQoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIHN0ZXBSYW5nZSA9IGNyZWF0ZVN0ZXBSYW5nZShBbnlT
dGVwSGFuZGxpbmc6OkRlZmF1bHQpOwotICAgIGF1dG8gbWlsbGlzZWNvbmRzUGVyU2Vjb25kID0g
RGVjaW1hbDo6ZnJvbURvdWJsZShtc1BlclNlY29uZCk7Ci0KLSAgICByZXR1cm4gIXN0ZXBSYW5n
ZS5taW5pbXVtKCkucmVtYWluZGVyKG1pbGxpc2Vjb25kc1BlclNlY29uZCkuaXNaZXJvKCkKLSAg
ICAgICAgfHwgIXN0ZXBSYW5nZS5zdGVwKCkucmVtYWluZGVyKG1pbGxpc2Vjb25kc1BlclNlY29u
ZCkuaXNaZXJvKCk7Ci19Ci0KLXZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OmRldGFjaCgpCi17Ci0gICAgY2xvc2VEYXRlVGltZUNob29zZXIoKTsKLX0KLQotdm9pZCBC
YXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGlkQ2hvb3NlVmFsdWUoU3RyaW5n
VmlldyB2YWx1ZSkKLXsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBlbGVtZW50KCktPnNl
dFZhbHVlKHZhbHVlLnRvU3RyaW5nKCksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCk7Ci19
Ci0KLXZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRpZEVuZENob29z
ZXIoKQotewotICAgIG1fZGF0ZVRpbWVDaG9vc2VyID0gbnVsbHB0cjsKLX0KLQotdm9pZCBCYXNl
Q2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6Y2xvc2VEYXRlVGltZUNob29zZXIoKQot
ewotICAgIGlmIChtX2RhdGVUaW1lQ2hvb3NlcikKLSAgICAgICAgbV9kYXRlVGltZUNob29zZXIt
PmVuZENob29zZXIoKTsKLX0KLQotYXV0byBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0
VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KSAtPiBTaG91bGRD
YWxsQmFzZUV2ZW50SGFuZGxlcgotewotICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAgIHJldHVy
biBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KCplbGVt
ZW50KCksIGV2ZW50KTsKLX0KLQotdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0
VHlwZTo6aGFuZGxlS2V5cHJlc3NFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKLXsKLSAgICBB
U1NFUlQoZWxlbWVudCgpKTsKLSAgICBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZTo6aGFu
ZGxlS2V5cHJlc3NFdmVudCgqZWxlbWVudCgpLCBldmVudCk7Ci19Ci0KLXZvaWQgQmFzZUNob29z
ZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVu
dCYgZXZlbnQpCi17Ci0gICAgQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGU6OmhhbmRsZUtl
eXVwRXZlbnQoKnRoaXMsIGV2ZW50KTsKLX0KLQotdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5k
VGltZUlucHV0VHlwZTo6aGFuZGxlRm9jdXNFdmVudChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIGlmICghbV9kYXRlVGltZUVkaXRFbGVtZW50
KSB7Ci0gICAgICAgIElucHV0VHlwZTo6aGFuZGxlRm9jdXNFdmVudChvbGRGb2N1c2VkTm9kZSwg
ZGlyZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHRoZSBlbGVt
ZW50IGNvbnRhaW5zIGVkaXRhYmxlIGNvbXBvbmVudHMsIHRoZSBlbGVtZW50IGl0c2VsZiBzaG91
bGQgbm90Ci0gICAgLy8gYmUgZm9jdXNlZC4gSW5zdGVhZCwgb25lIG9mIGl0J3MgY2hpbGRyZW4g
c2hvdWxkIHJlY2VpdmUgZm9jdXMuCi0KLSAgICBpZiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0
aW9uQmFja3dhcmQpIHsKLSAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgcmVjZWl2ZWQgZm9jdXMg
d2hlbiBnb2luZyBiYWNrd2FyZHMsIGFkdmFuY2UgdGhlIGZvY3VzIG9uZSBtb3JlIHRpbWUKLSAg
ICAgICAgLy8gc28gdGhhdCB0aGlzIGVsZW1lbnQgbm8gbG9uZ2VyIGhhcyBmb2N1cy4gSW4gdGhp
cyBjYXNlLCBvbmUgb2YgdGhlIGNoaWxkcmVuIHNob3VsZAotICAgICAgICAvLyBub3QgYmUgZm9j
dXNlZCBhcyB0aGUgZWxlbWVudCBpcyBsb3NpbmcgZm9jdXMgZW50aXJlbHkuCi0gICAgICAgIGlm
IChhdXRvKiBwYWdlID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgICAg
IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmFkdmFuY2VGb2N1cyhkaXJlY3Rpb24sIDApOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIElmIHRoZSBlbGVtZW50IHJlY2VpdmVkIGZvY3VzIGluIGFu
eSBvdGhlciBkaXJlY3Rpb24sIHRyYW5zZmVyIGZvY3VzIHRvIHRoZSBmaXJzdCBmb2N1c2FibGUg
Y2hpbGQuCi0gICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudC0+Zm9jdXNCeU93bmVyKCk7Ci0g
ICAgfQotfQotCi1ib29sIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjphY2Nl
c3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpCi17Ci0gICAgQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjphY2Nlc3NLZXlBY3Rpb24oc2VuZE1vdXNlRXZlbnRzKTsKLSAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKLSAgICByZXR1cm4gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGU6OmFj
Y2Vzc0tleUFjdGlvbigqZWxlbWVudCgpLCBzZW5kTW91c2VFdmVudHMpOwotfQotCi1ib29sIEJh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc01vdXNlRm9jdXNhYmxlKCkgY29u
c3QKLXsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICByZXR1cm4gZWxlbWVudCgpLT5pc1Rl
eHRGb3JtQ29udHJvbEZvY3VzYWJsZSgpOwotfQotCi1ib29sIEJhc2VDaG9vc2VyT25seURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QKLXsKLSAgICBpZiAo
bV9kYXRlVGltZUVkaXRFbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IElucHV0VHlwZTo6aGFzQ3VzdG9tRm9jdXNMb2dpYygpOwotfQotCi12b2lkIEJhc2VDaG9vc2Vy
T25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUpCi17Ci0gICAgaWYgKG5hbWUgPT0gdmFsdWVBdHRyKSB7Ci0gICAgICAgIGlm
IChhdXRvKiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWVs
ZW1lbnQtPmhhc0RpcnR5VmFsdWUoKSkKLSAgICAgICAgICAgICAgICB1cGRhdGVJbm5lclRleHRW
YWx1ZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IHN0ZXBBdHRyICYmIG1f
ZGF0ZVRpbWVFZGl0RWxlbWVudCkKLSAgICAgICAgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKTsKLQot
ICAgIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChuYW1lKTsKLX0K
LQotdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGlkQmx1ckZyb21D
b250cm9sKCkKLXsKLSAgICBjbG9zZURhdGVUaW1lQ2hvb3NlcigpOwotfQotCi12b2lkIEJhc2VD
aG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkaWRDaGFuZ2VWYWx1ZUZyb21Db250cm9s
KCkKLXsKLSAgICBTdHJpbmcgdmFsdWUgPSBzYW5pdGl6ZVZhbHVlKG1fZGF0ZVRpbWVFZGl0RWxl
bWVudC0+dmFsdWUoKSk7Ci0gICAgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1ZSh2
YWx1ZSwgdmFsdWUgIT0gZWxlbWVudCgpLT52YWx1ZSgpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdl
RXZlbnQpOwotCi0gICAgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAg
IGlmICghZWxlbWVudCgpLT5zZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMocGFyYW1ldGVy
cykpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2RhdGVUaW1lQ2hvb3NlcikKLSAgICAg
ICAgbV9kYXRlVGltZUNob29zZXItPnNob3dDaG9vc2VyKHBhcmFtZXRlcnMpOwotfQotCi1ib29s
IEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc0VkaXRDb250cm9sT3duZXJE
aXNhYmxlZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIGVs
ZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7Ci19Ci0KLWJvb2wgQmFzZUNob29zZXJP
bmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRyb2xPd25lclJlYWRPbmx5KCkgY29u
c3QKLXsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICByZXR1cm4gZWxlbWVudCgpLT5pc1Jl
YWRPbmx5KCk7Ci19Ci0KLUF0b21TdHJpbmcgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmxvY2FsZUlkZW50aWZpZXIoKSBjb25zdAotewotICAgIEFTU0VSVChlbGVtZW50KCkp
OwotICAgIHJldHVybiBlbGVtZW50KCktPmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwotfQot
Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nl
ck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hv
b3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3OGI3YTY1NzQ5OTFiNzBjMjA3YmFhNTcyY2E0ZDBjYzdiYzNmMzA5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
QmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
Ci0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCi0KLSNpbmNsdWRlICJCYXNlQ2xpY2thYmxlV2l0
aEtleUlucHV0VHlwZS5oIgotI2luY2x1ZGUgIkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIgot
I2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3Nlci5oIgotI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3NlckNs
aWVudC5oIgotI2luY2x1ZGUgIkRhdGVUaW1lRWRpdEVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBEYXRlVGlt
ZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzIDogdWludDhfdCB7Ci0gICAgSGFzWWVhciA9IDEgPDwg
MCwKLSAgICBIYXNNb250aCA9IDEgPDwgMSwKLSAgICBIYXNXZWVrID0gMSA8PCAyLAotICAgIEhh
c0RheSA9IDEgPDwgMywKLSAgICBIYXNNZXJpZGllbSA9IDEgPDwgNCwKLSAgICBIYXNIb3VyID0g
MSA8PCA1LAotICAgIEhhc01pbnV0ZSA9IDEgPDwgNiwKLSAgICBIYXNTZWNvbmQgPSAxIDw8IDcs
Ci19OwotCi1jbGFzcyBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZSA6IHB1Ymxp
YyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUsIHByaXZhdGUgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50
LCBwcml2YXRlIERhdGVUaW1lRWRpdEVsZW1lbnQ6OkVkaXRDb250cm9sT3duZXIgewotcHVibGlj
OgotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNldDxEYXRlVGltZUZvcm1h
dFZhbGlkYXRpb25SZXN1bHRzPikgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGlj
aXQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYg
ZWxlbWVudCkgOiBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9Ci0gICAgfkJh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRl
cnMmLCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0ID0gMDsKLQotICAgIGJvb2wgc2hvdWxk
SGF2ZVNlY29uZEZpZWxkKGNvbnN0IERhdGVDb21wb25lbnRzJikgY29uc3Q7Ci0gICAgYm9vbCBz
aG91bGRIYXZlTWlsbGlzZWNvbmRGaWVsZChjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0Owot
Ci1wcml2YXRlOgotICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNsb3NlRGF0ZVRpbWVDaG9vc2VyKCk7Ci0KLSAgICAvLyBEYXRlVGltZUVkaXRFbGVt
ZW50OjpFZGl0Q29udHJvbE93bmVyIGZ1bmN0aW9uczoKLSAgICB2b2lkIGRpZEJsdXJGcm9tQ29u
dHJvbCgpIGZpbmFsOwotICAgIHZvaWQgZGlkQ2hhbmdlVmFsdWVGcm9tQ29udHJvbCgpIGZpbmFs
OwotICAgIGJvb2wgaXNFZGl0Q29udHJvbE93bmVyRGlzYWJsZWQoKSBjb25zdCBmaW5hbDsKLSAg
ICBib29sIGlzRWRpdENvbnRyb2xPd25lclJlYWRPbmx5KCkgY29uc3QgZmluYWw7Ci0gICAgQXRv
bVN0cmluZyBsb2NhbGVJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Ci0KLSAgICAvLyBJbnB1dFR5
cGUgZnVuY3Rpb25zOgotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRldGFj
aCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1
ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIG92ZXJyaWRlOwotICAgIHZvaWQgaGFu
ZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZWxlbWVudERp
ZEJsdXIoKSBmaW5hbDsKLSAgICBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlciBoYW5kbGVLZXlk
b3duRXZlbnQoS2V5Ym9hcmRFdmVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgaGFuZGxlS2V5cHJl
c3NFdmVudChLZXlib2FyZEV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBoYW5kbGVLZXl1cEV2
ZW50KEtleWJvYXJkRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGhhbmRsZUZvY3VzRXZlbnQo
Tm9kZSogb2xkRm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uKSBmaW5hbDsKLSAgICBib29sIGFj
Y2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJpZGU7Ci0gICAgYm9vbCBp
c01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1ByZXNlbnRpbmdB
dHRhY2hlZFZpZXcoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMo
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwotCi0gICAgLy8gRGF0ZVRpbWVDaG9vc2VyQ2xpZW50IGZ1bmN0aW9u
czoKLSAgICB2b2lkIGRpZENob29zZVZhbHVlKFN0cmluZ1ZpZXcpIGZpbmFsOwotICAgIHZvaWQg
ZGlkRW5kQ2hvb3NlcigpIGZpbmFsOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPERhdGVUaW1lQ2hv
b3Nlcj4gbV9kYXRlVGltZUNob29zZXI7Ci0gICAgUmVmUHRyPERhdGVUaW1lRWRpdEVsZW1lbnQ+
IG1fZGF0ZVRpbWVFZGl0RWxlbWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZS5jcHAKaW5kZXggYzMyYWUzNjM1ZGY3Nzk0NDA2NWE2Nzc1MTg5MTYwNjM3MWJkOGI5ZC4uZjAw
YWZhZjcwY2VkNjFkNzVjZWFkNDY0Mjk1Y2Q3NWQzYzMxNjY2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsMTIgKzM0LDIz
IEBACiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKIAorI2luY2x1ZGUg
IkJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJEYXRlVGltZUNob29zZXJQYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiRGVjaW1hbC5oIgorI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKKyNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTdGVw
UmFuZ2UuaCIKKyNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0
b3IuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTUyLDYgKzYzLDY2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiBzdGF0aWMgY29uc3QgaW50IG1zZWNQZXJNaW51dGUgPSA2MCAqIDEwMDA7
CiBzdGF0aWMgY29uc3QgaW50IG1zZWNQZXJTZWNvbmQgPSAxMDAwOwogCit2b2lkIEJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6RGF0ZVRpbWVGb3JtYXRWYWxpZGF0b3I6OnZpc2l0RmllbGQoRGF0
ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSBmaWVsZFR5cGUsIGludCkKK3sKKyAgICBzd2l0Y2ggKGZp
ZWxkVHlwZSkgeworICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZVllYXI6CisgICAg
ICAgIG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0czo6SGFzWWVh
cik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBl
TW9udGg6CisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlTW9udGhTdGFuZEFsb25l
OgorICAgICAgICBtX3Jlc3VsdHMuYWRkKERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6
Okhhc01vbnRoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpG
aWVsZFR5cGVXZWVrT2ZZZWFyOgorICAgICAgICBtX3Jlc3VsdHMuYWRkKERhdGVUaW1lRm9ybWF0
VmFsaWRhdGlvblJlc3VsdHM6Okhhc1dlZWspOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
RGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZURheU9mTW9udGg6CisgICAgICAgIG1fcmVzdWx0cy5h
ZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0czo6SGFzRGF5KTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVQZXJpb2Q6CisgICAgICAg
IG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0czo6SGFzTWVyaWRp
ZW0pOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlw
ZUhvdXIxMToKKyAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVIb3VyMTI6CisgICAg
ICAgIG1fcmVzdWx0cy5hZGQoRGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0czo6SGFzSG91
cik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBl
SG91cjIzOgorICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZUhvdXIyNDoKKyAgICAg
ICAgbV9yZXN1bHRzLmFkZChEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzOjpIYXNIb3Vy
KTsKKyAgICAgICAgbV9yZXN1bHRzLmFkZChEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRz
OjpIYXNNZXJpZGllbSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEYXRlVGltZUZvcm1h
dDo6RmllbGRUeXBlTWludXRlOgorICAgICAgICBtX3Jlc3VsdHMuYWRkKERhdGVUaW1lRm9ybWF0
VmFsaWRhdGlvblJlc3VsdHM6Okhhc01pbnV0ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlU2Vjb25kOgorICAgICAgICBtX3Jlc3VsdHMuYWRk
KERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM6Okhhc1NlY29uZCk7CisgICAgICAgIGJy
ZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitib29sIEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6RGF0ZVRpbWVGb3JtYXRWYWxpZGF0b3I6OnZhbGlkYXRl
Rm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0LCBjb25zdCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUmIGlucHV0VHlwZSkKK3sKKyAgICBpZiAoIURhdGVUaW1lRm9ybWF0OjpwYXJzZShmb3JtYXQs
ICp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpbnB1dFR5cGUuaXNW
YWxpZEZvcm1hdChtX3Jlc3VsdHMpOworfQorCitCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6On5C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoKQoreworICAgIGNsb3NlRGF0ZVRpbWVDaG9vc2VyKCk7
Cit9CisKIGRvdWJsZSBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNEYXRlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gdmFsdWVBc0RvdWJsZSgpOwpAQCAtMTAxLDE1ICsxNzIsNiBAQCBi
b29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aXNTdGVwcGFibGUoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6YXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQotewotICAgIGlmIChuYW1lID09IG1h
eEF0dHIgfHwgbmFtZSA9PSBtaW5BdHRyKSB7Ci0gICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0g
dGhpcy0+ZWxlbWVudCgpKQotICAgICAgICAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlRm9y
U3VidHJlZSgpOwotICAgIH0KLSAgICBJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSk7
Ci19Ci0KIERlY2ltYWwgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNv
bnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7
CiAgICAgYXV0byBkYXRlID0gcGFyc2VUb0RhdGVDb21wb25lbnRzKHNvdXJjZSk7CkBAIC0xOTAs
NSArMjUyLDI1OSBAQCBib29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aXNLZXlib2FyZEZv
Y3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QKICAgICByZXR1cm4gIWVsZW1lbnQoKS0+aXNS
ZWFkT25seSgpICYmIGVsZW1lbnQoKS0+aXNUZXh0Rm9ybUNvbnRyb2xGb2N1c2FibGUoKTsKIH0K
IAorYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzTW91c2VGb2N1c2FibGUoKSBjb25z
dAoreworICAgIEFTU0VSVChlbGVtZW50KCkpOworICAgIHJldHVybiBlbGVtZW50KCktPmlzVGV4
dEZvcm1Db250cm9sRm9jdXNhYmxlKCk7Cit9CisKK2Jvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlOjpzaG91bGRIYXZlU2Vjb25kRmllbGQoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpIGNv
bnN0Cit7CisgICAgaWYgKGRhdGUuc2Vjb25kKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgYXV0byBzdGVwUmFuZ2UgPSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nOjpEZWZh
dWx0KTsKKyAgICByZXR1cm4gIXN0ZXBSYW5nZS5taW5pbXVtKCkucmVtYWluZGVyKG1zZWNQZXJN
aW51dGUpLmlzWmVybygpCisgICAgICAgIHx8ICFzdGVwUmFuZ2Uuc3RlcCgpLnJlbWFpbmRlciht
c2VjUGVyTWludXRlKS5pc1plcm8oKTsKK30KKworYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OnNob3VsZEhhdmVNaWxsaXNlY29uZEZpZWxkKGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRl
KSBjb25zdAoreworICAgIGlmIChkYXRlLm1pbGxpc2Vjb25kKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgYXV0byBzdGVwUmFuZ2UgPSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRs
aW5nOjpEZWZhdWx0KTsKKyAgICByZXR1cm4gIXN0ZXBSYW5nZS5taW5pbXVtKCkucmVtYWluZGVy
KG1zZWNQZXJTZWNvbmQpLmlzWmVybygpCisgICAgICAgIHx8ICFzdGVwUmFuZ2Uuc3RlcCgpLnJl
bWFpbmRlcihtc2VjUGVyU2Vjb25kKS5pc1plcm8oKTsKK30KKwordm9pZCBCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFu
Z2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCit7CisgICAgSW5wdXRU
eXBlOjpzZXRWYWx1ZSh2YWx1ZSwgdmFsdWVDaGFuZ2VkLCBldmVudEJlaGF2aW9yKTsKKyAgICBp
ZiAodmFsdWVDaGFuZ2VkKQorICAgICAgICB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOworfQorCit2
b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVu
dCYpCit7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNh
YmxlZE9yUmVhZE9ubHkoKSB8fCAhZWxlbWVudCgpLT5yZW5kZXJlcigpIHx8ICFVc2VyR2VzdHVy
ZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2RhdGVUaW1lQ2hvb3NlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghZWxl
bWVudCgpLT5kb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRGF0ZVRp
bWVDaG9vc2VyUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIGlmICghZWxlbWVudCgpLT5zZXR1
cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMocGFyYW1ldGVycykpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChhdXRvIGNocm9tZSA9IHRoaXMtPmNocm9tZSgpKSB7CisgICAgICAgIG1fZGF0
ZVRpbWVDaG9vc2VyID0gY2hyb21lLT5jcmVhdGVEYXRlVGltZUNob29zZXIoKnRoaXMpOworICAg
ICAgICBpZiAobV9kYXRlVGltZUNob29zZXIpCisgICAgICAgICAgICBtX2RhdGVUaW1lQ2hvb3Nl
ci0+c2hvd0Nob29zZXIocGFyYW1ldGVycyk7CisgICAgfQorfQorCit2b2lkIEJhc2VEYXRlQW5k
VGltZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCit7CisgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CisKKyAgICBhdXRvJiBlbGVtZW50ID0gKnRoaXMtPmVsZW1lbnQoKTsKKyAgICBhdXRv
JiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKKworICAgIGlmIChkb2N1bWVudC5zZXR0
aW5ncygpLmRhdGVUaW1lSW5wdXRzRWRpdGFibGVDb21wb25lbnRzRW5hYmxlZCgpKSB7CisgICAg
ICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudCA9IERhdGVUaW1lRWRpdEVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCwgKnRoaXMpOworICAgICAgICBlbGVtZW50LnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+
YXBwZW5kQ2hpbGQoKm1fZGF0ZVRpbWVFZGl0RWxlbWVudCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB2YWx1
ZUNvbnRhaW5lclBzZXVkbygiLXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBhdXRvIHZhbHVlQ29udGFpbmVyID0g
SFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgICAgIHZhbHVlQ29udGFpbmVy
LT5zZXRQc2V1ZG8odmFsdWVDb250YWluZXJQc2V1ZG8pOworICAgICAgICBlbGVtZW50LnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQodmFsdWVDb250YWluZXIpOworICAgIH0KKyAg
ICB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOworfQorCit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUoKQoreworICAgIElucHV0VHlwZTo6ZGVzdHJveVNo
YWRvd1N1YnRyZWUoKTsKKyAgICBtX2RhdGVUaW1lRWRpdEVsZW1lbnQgPSBudWxscHRyOworfQor
Cit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQor
eworICAgIEFTU0VSVChlbGVtZW50KCkpOworICAgIGlmICghbV9kYXRlVGltZUVkaXRFbGVtZW50
KSB7CisgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgp
LT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIGRpc3BsYXlWYWx1ZSA9IHZpc2libGVWYWx1
ZSgpOworICAgICAgICBpZiAoZGlzcGxheVZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
Ly8gTmVlZCB0byBwdXQgc29tZXRoaW5nIHRvIGtlZXAgdGV4dCBiYXNlbGluZS4KKyAgICAgICAg
ICAgIGRpc3BsYXlWYWx1ZSA9ICIgIl9zOworICAgICAgICB9CisgICAgICAgIGRvd25jYXN0PEhU
TUxFbGVtZW50Pigqbm9kZSkuc2V0SW5uZXJUZXh0KGRpc3BsYXlWYWx1ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJz
IGxheW91dFBhcmFtZXRlcnMoZWxlbWVudCgpLT5sb2NhbGUoKSk7CisKKyAgICBhdXRvIGRhdGUg
PSBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoZWxlbWVudCgpLT52YWx1ZSgpKTsKKyAgICBpZiAoZGF0
ZSkKKyAgICAgICAgc2V0dXBMYXlvdXRQYXJhbWV0ZXJzKGxheW91dFBhcmFtZXRlcnMsICpkYXRl
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gZGF0ZUZvckxheW91dCA9IHNldE1pbGxp
c2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nOjpE
ZWZhdWx0KS5taW5pbXVtKCkudG9Eb3VibGUoKSkpCisgICAgICAgICAgICBzZXR1cExheW91dFBh
cmFtZXRlcnMobGF5b3V0UGFyYW1ldGVycywgKmRhdGVGb3JMYXlvdXQpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBzZXR1cExheW91dFBhcmFtZXRlcnMobGF5b3V0UGFyYW1ldGVycywgRGF0
ZUNvbXBvbmVudHMoKSk7CisgICAgfQorCisgICAgaWYgKCFEYXRlVGltZUZvcm1hdFZhbGlkYXRv
cigpLnZhbGlkYXRlRm9ybWF0KGxheW91dFBhcmFtZXRlcnMuZGF0ZVRpbWVGb3JtYXQsICp0aGlz
KSkKKyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFt
ZXRlcnMuZmFsbGJhY2tEYXRlVGltZUZvcm1hdDsKKworICAgIGlmIChkYXRlKQorICAgICAgICBt
X2RhdGVUaW1lRWRpdEVsZW1lbnQtPnNldFZhbHVlQXNEYXRlKGxheW91dFBhcmFtZXRlcnMsICpk
YXRlKTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudC0+c2V0RW1wdHlW
YWx1ZShsYXlvdXRQYXJhbWV0ZXJzKTsKK30KKworYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6Omhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdAoreworICAgIGlmIChtX2RhdGVUaW1lRWRp
dEVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gSW5wdXRUeXBlOjpo
YXNDdXN0b21Gb2N1c0xvZ2ljKCk7Cit9CisKK3ZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgaWYg
KG5hbWUgPT0gbWF4QXR0ciB8fCBuYW1lID09IG1pbkF0dHIpIHsKKyAgICAgICAgaWYgKGF1dG8q
IGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpCisgICAgICAgICAgICBlbGVtZW50LT5pbnZhbGlk
YXRlU3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IHZhbHVlQXR0cikg
eworICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKSkgeworICAgICAg
ICAgICAgaWYgKCFlbGVtZW50LT5oYXNEaXJ0eVZhbHVlKCkpCisgICAgICAgICAgICAgICAgdXBk
YXRlSW5uZXJUZXh0VmFsdWUoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobmFtZSA9PSBz
dGVwQXR0ciAmJiBtX2RhdGVUaW1lRWRpdEVsZW1lbnQpCisgICAgICAgIHVwZGF0ZUlubmVyVGV4
dFZhbHVlKCk7CisKKyAgICBJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSk7Cit9CisK
K3ZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjplbGVtZW50RGlkQmx1cigpCit7CisgICAg
Y2xvc2VEYXRlVGltZUNob29zZXIoKTsKK30KKwordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OmRldGFjaCgpCit7CisgICAgY2xvc2VEYXRlVGltZUNob29zZXIoKTsKK30KKworYm9vbCBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzUHJlc2VudGluZ0F0dGFjaGVkVmlldygpIGNvbnN0
Cit7CisgICAgcmV0dXJuICEhbV9kYXRlVGltZUNob29zZXI7Cit9CisKK2F1dG8gQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQp
IC0+IFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyCit7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7
CisgICAgcmV0dXJuIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlOjpoYW5kbGVLZXlkb3du
RXZlbnQoKmVsZW1lbnQoKSwgZXZlbnQpOworfQorCit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6aGFuZGxlS2V5cHJlc3NFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBB
U1NFUlQoZWxlbWVudCgpKTsKKyAgICBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZTo6aGFu
ZGxlS2V5cHJlc3NFdmVudCgqZWxlbWVudCgpLCBldmVudCk7Cit9CisKK3ZvaWQgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQor
eworICAgIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KCp0
aGlzLCBldmVudCk7Cit9CisKK3ZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVG
b2N1c0V2ZW50KE5vZGUqIG9sZEZvY3VzZWROb2RlLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24p
Cit7CisgICAgaWYgKCFtX2RhdGVUaW1lRWRpdEVsZW1lbnQpIHsKKyAgICAgICAgSW5wdXRUeXBl
OjpoYW5kbGVGb2N1c0V2ZW50KG9sZEZvY3VzZWROb2RlLCBkaXJlY3Rpb24pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgdGhlIGVsZW1lbnQgY29udGFpbnMgZWRpdGFibGUg
Y29tcG9uZW50cywgdGhlIGVsZW1lbnQgaXRzZWxmIHNob3VsZCBub3QKKyAgICAvLyBiZSBmb2N1
c2VkLiBJbnN0ZWFkLCBvbmUgb2YgaXQncyBjaGlsZHJlbiBzaG91bGQgcmVjZWl2ZSBmb2N1cy4K
KworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCkgeworICAgICAg
ICAvLyBJZiB0aGUgZWxlbWVudCByZWNlaXZlZCBmb2N1cyB3aGVuIGdvaW5nIGJhY2t3YXJkcywg
YWR2YW5jZSB0aGUgZm9jdXMgb25lIG1vcmUgdGltZQorICAgICAgICAvLyBzbyB0aGF0IHRoaXMg
ZWxlbWVudCBubyBsb25nZXIgaGFzIGZvY3VzLiBJbiB0aGlzIGNhc2UsIG9uZSBvZiB0aGUgY2hp
bGRyZW4gc2hvdWxkCisgICAgICAgIC8vIG5vdCBiZSBmb2N1c2VkIGFzIHRoZSBlbGVtZW50IGlz
IGxvc2luZyBmb2N1cyBlbnRpcmVseS4KKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBlbGVtZW50
KCktPmRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuYWR2YW5jZUZvY3VzKGRpcmVjdGlvbiwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
SWYgdGhlIGVsZW1lbnQgcmVjZWl2ZWQgZm9jdXMgaW4gYW55IG90aGVyIGRpcmVjdGlvbiwgdHJh
bnNmZXIgZm9jdXMgdG8gdGhlIGZpcnN0IGZvY3VzYWJsZSBjaGlsZC4KKyAgICAgICAgbV9kYXRl
VGltZUVkaXRFbGVtZW50LT5mb2N1c0J5T3duZXIoKTsKKyAgICB9Cit9CisKK2Jvb2wgQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjphY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMp
Cit7CisgICAgSW5wdXRUeXBlOjphY2Nlc3NLZXlBY3Rpb24oc2VuZE1vdXNlRXZlbnRzKTsKKyAg
ICBBU1NFUlQoZWxlbWVudCgpKTsKKyAgICByZXR1cm4gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1
dFR5cGU6OmFjY2Vzc0tleUFjdGlvbigqZWxlbWVudCgpLCBzZW5kTW91c2VFdmVudHMpOworfQor
Cit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGlkQmx1ckZyb21Db250cm9sKCkKK3sK
KyAgICBjbG9zZURhdGVUaW1lQ2hvb3NlcigpOworfQorCit2b2lkIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6ZGlkQ2hhbmdlVmFsdWVGcm9tQ29udHJvbCgpCit7CisgICAgU3RyaW5nIHZhbHVl
ID0gc2FuaXRpemVWYWx1ZShtX2RhdGVUaW1lRWRpdEVsZW1lbnQtPnZhbHVlKCkpOworICAgIElu
cHV0VHlwZTo6c2V0VmFsdWUodmFsdWUsIHZhbHVlICE9IGVsZW1lbnQoKS0+dmFsdWUoKSwgRGlz
cGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50KTsKKworICAgIERhdGVUaW1lQ2hvb3NlclBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKKyAgICBpZiAoIWVsZW1lbnQoKS0+c2V0dXBEYXRlVGltZUNob29zZXJQ
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9kYXRl
VGltZUNob29zZXIpCisgICAgICAgIG1fZGF0ZVRpbWVDaG9vc2VyLT5zaG93Q2hvb3NlcihwYXJh
bWV0ZXJzKTsKK30KKworYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRy
b2xPd25lckRpc2FibGVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKyAgICBy
ZXR1cm4gZWxlbWVudCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKK30KKworYm9vbCBCYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRyb2xPd25lclJlYWRPbmx5KCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLT5pc1JlYWRP
bmx5KCk7Cit9CisKK0F0b21TdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpsb2NhbGVJ
ZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKyAgICByZXR1cm4g
ZWxlbWVudCgpLT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKK30KKwordm9pZCBCYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGU6OmRpZENob29zZVZhbHVlKFN0cmluZ1ZpZXcgdmFsdWUpCit7Cisg
ICAgQVNTRVJUKGVsZW1lbnQoKSk7CisgICAgZWxlbWVudCgpLT5zZXRWYWx1ZSh2YWx1ZS50b1N0
cmluZygpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOworfQorCit2b2lkIEJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6ZGlkRW5kQ2hvb3NlcigpCit7CisgICAgbV9kYXRlVGltZUNob29z
ZXIgPSBudWxscHRyOworfQorCit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y2xvc2VE
YXRlVGltZUNob29zZXIoKQoreworICAgIGlmIChtX2RhdGVUaW1lQ2hvb3NlcikKKyAgICAgICAg
bV9kYXRlVGltZUNob29zZXItPmVuZENob29zZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuaAppbmRleCBmZTg1OTU1NGVlZTI4ZWE4MTRlNDJiNTgxZmRlYjQzZjJjZmE2NTQwLi45
OTQ3ODQzNTk4YjFlZTlhODIyNGFjNTlhMmVhYWVlZjExODc3NDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTMzLDQyICszMywxMTEg
QEAKIAogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQogCisjaW5jbHVkZSAi
RGF0ZVRpbWVDaG9vc2VyLmgiCisjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmgiCisj
aW5jbHVkZSAiRGF0ZVRpbWVFZGl0RWxlbWVudC5oIgorI2luY2x1ZGUgIkRhdGVUaW1lRm9ybWF0
LmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGVDb21wb25lbnRzOwogCiAvLyBBIHN1
cGVyIGNsYXNzIG9mIGRhdGUsIGRhdGV0aW1lLCBkYXRldGltZS1sb2NhbCwgbW9udGgsIHRpbWUs
IGFuZCB3ZWVrIHR5cGVzLgotY2xhc3MgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlIDogcHVibGlj
IElucHV0VHlwZSB7CitjbGFzcyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUgOiBwdWJsaWMgSW5w
dXRUeXBlLCBwcml2YXRlIERhdGVUaW1lQ2hvb3NlckNsaWVudCwgcHJpdmF0ZSBEYXRlVGltZUVk
aXRFbGVtZW50OjpFZGl0Q29udHJvbE93bmVyIHsKIHByb3RlY3RlZDoKKyAgICBlbnVtIGNsYXNz
IERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHMgOiB1aW50OF90IHsKKyAgICAgICAgSGFz
WWVhciA9IDEgPDwgMCwKKyAgICAgICAgSGFzTW9udGggPSAxIDw8IDEsCisgICAgICAgIEhhc1dl
ZWsgPSAxIDw8IDIsCisgICAgICAgIEhhc0RheSA9IDEgPDwgMywKKyAgICAgICAgSGFzSG91ciA9
IDEgPDwgNCwKKyAgICAgICAgSGFzTWludXRlID0gMSA8PCA1LAorICAgICAgICBIYXNTZWNvbmQg
PSAxIDw8IDYsCisgICAgICAgIEhhc01lcmlkaWVtID0gMSA8PCA3LAorICAgIH07CisKICAgICBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBJbnB1
dFR5cGUoZWxlbWVudCkgeyB9CisgICAgfkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSgpOwogCiAg
ICAgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBj
b25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBj
b25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25z
dCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VyaWFsaXplV2l0aENvbXBvbmVudHMoY29uc3QgRGF0
ZUNvbXBvbmVudHMmKSBjb25zdDsKLSAgICBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKLSAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNv
bnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzaG91bGRIYXZlU2Vjb25kRmllbGQoY29uc3QgRGF0
ZUNvbXBvbmVudHMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEhhdmVNaWxsaXNlY29uZEZpZWxk
KGNvbnN0IERhdGVDb21wb25lbnRzJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgRGF0
ZVRpbWVGb3JtYXRWYWxpZGF0b3IgZmluYWwgOiBwdWJsaWMgRGF0ZVRpbWVGb3JtYXQ6OlRva2Vu
SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBEYXRlVGltZUZvcm1hdFZhbGlkYXRvcigp
IHsgfQorCisgICAgICAgIHZvaWQgdmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBl
LCBpbnQpOworICAgICAgICB2b2lkIHZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmKSB7IH0KKwor
ICAgICAgICBib29sIHZhbGlkYXRlRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0LCBjb25zdCBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIE9wdGlv
blNldDxEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPiBtX3Jlc3VsdHM7CisgICAgfTsK
IAogICAgIHZpcnR1YWwgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9u
ZW50cyhjb25zdCBTdHJpbmdWaWV3JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8
RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1l
RWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMmLCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRp
bWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CiAKLXByaXZhdGU6Cisg
ICAgLy8gSW5wdXRUeXBlIGZ1bmN0aW9uczoKKyAgICBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29u
c3QgZmluYWw7CisgICAgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZhbHVlQ2hhbmdl
ZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgZmluYWw7CiAgICAgZG91YmxlIHZhbHVlQXNEYXRl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc0RhdGUo
ZG91YmxlKSBjb25zdCBvdmVycmlkZTsKLSAgICBkb3VibGUgdmFsdWVBc0RvdWJsZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlQXNEZWNpbWFsKGNvbnN0
IERlY2ltYWwmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgdmFsdWVNaXNzaW5n
KGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSB2YWx1ZUFzRG91Ymxl
KCkgY29uc3QgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc0RlY2ltYWwo
Y29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgdHlwZU1pc21hdGNoKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2YWx1ZU1pc3NpbmcoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAgICAgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVw
VXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzU3RlcHBhYmxlKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUp
IGNvbnN0OwotICAgIFN0cmluZyBsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBvdmVycmlkZTsKKyAgICBib29sIGlz
U3RlcHBhYmxlKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGxvY2FsaXplVmFsdWUoY29uc3Qg
U3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1JlYWRPbmx5KCkgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpIGZpbmFsOworICAg
IGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIGhhbmRs
ZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWUoKSBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgpIGZpbmFsOworICAgIGJvb2wgaGFzQ3Vz
dG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CisgICAgYm9vbCBpc1ByZXNlbnRpbmdBdHRhY2hl
ZFZpZXcoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGVsZW1lbnREaWRCbHVyKCkgZmluYWw7Cisg
ICAgdm9pZCBkZXRhY2goKSBmaW5hbDsKKworICAgIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVy
IGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBo
YW5kbGVLZXlwcmVzc0V2ZW50KEtleWJvYXJkRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhh
bmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxl
Rm9jdXNFdmVudChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24pIGZpbmFsOwor
ICAgIGJvb2wgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsK
KworICAgIC8vIERhdGVUaW1lRWRpdEVsZW1lbnQ6OkVkaXRDb250cm9sT3duZXIgZnVuY3Rpb25z
OgorICAgIHZvaWQgZGlkQmx1ckZyb21Db250cm9sKCkgZmluYWw7CisgICAgdm9pZCBkaWRDaGFu
Z2VWYWx1ZUZyb21Db250cm9sKCkgZmluYWw7CisgICAgYm9vbCBpc0VkaXRDb250cm9sT3duZXJE
aXNhYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNFZGl0Q29udHJvbE93bmVyUmVhZE9u
bHkoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxvY2FsZUlkZW50aWZpZXIoKSBjb25z
dCBmaW5hbDsKKworICAgIC8vIERhdGVUaW1lQ2hvb3NlckNsaWVudCBmdW5jdGlvbnM6CisgICAg
dm9pZCBkaWRDaG9vc2VWYWx1ZShTdHJpbmdWaWV3KSBmaW5hbDsKKyAgICB2b2lkIGRpZEVuZENo
b29zZXIoKSBmaW5hbDsKKworICAgIHZvaWQgY2xvc2VEYXRlVGltZUNob29zZXIoKTsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29zZXI+IG1fZGF0ZVRpbWVDaG9vc2VyOworICAg
IFJlZlB0cjxEYXRlVGltZUVkaXRFbGVtZW50PiBtX2RhdGVUaW1lRWRpdEVsZW1lbnQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNw
cAppbmRleCBjZDVlMzU3NTM1YTU2ZTNmNDExYjI2OGNkZjhhMTM4ZjViZmI2NmM5Li45MWUxMTA2
OTMzMWIyN2Q3YjY1ZDM0NGQzYTA0MjkzNzE2YTliZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZUlucHV0VHlwZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGNvbnN0IGludCBkYXRlU3Rl
cFNjYWxlRmFjdG9yID0gODY0MDAwMDA7CiBzdGF0aWMgY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVz
Y3JpcHRpb24gZGF0ZVN0ZXBEZXNjcmlwdGlvbiB7IGRhdGVEZWZhdWx0U3RlcCwgZGF0ZURlZmF1
bHRTdGVwQmFzZSwgZGF0ZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFs
dWVTaG91bGRCZUludGVnZXIgfTsKIAogRGF0ZUlucHV0VHlwZTo6RGF0ZUlucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50JiBlbGVtZW50KQotICAgIDogQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJ
bnB1dFR5cGUoZWxlbWVudCkKKyAgICA6IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZShlbGVtZW50
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5oCmluZGV4IDY0OGY2ZWU2YTg5
ZTRkNGYyOTVjOGE4ZGEwZjhiNTI2ZWQyMmYwYTIuLjQxNzkxYjg1ZjQ5NjVhMmQ1NGQ2ZWZkYzVm
YWViZmQxZmZmY2RhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5oCkBAIC0zMiwx
MSArMzIsMTEgQEAKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEUpCiAKLSNpbmNsdWRlICJC
YXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oIgorI2luY2x1ZGUgIkJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERhdGVJ
bnB1dFR5cGUgZmluYWwgOiBwdWJsaWMgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5
cGUgeworY2xhc3MgRGF0ZUlucHV0VHlwZSBmaW5hbCA6IHB1YmxpYyBCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUgewogcHVibGljOgogICAgIGV4cGxpY2l0IERhdGVJbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9j
YWxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRU
eXBlLmNwcAppbmRleCA1Zjc1MzJkMGE1NzA1MzY5NDBiNzYxNzZjODY4OGE0YjlkMDg0MDkwLi5h
MmI0Y2U3MTljMTdjNmE4NTljZmU0NTQzOTVkNzgzNzA2Y2NhZDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKQEAgLTM0LDEwICszNCwxMiBA
QAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpCiAKICNpbmNsdWRlICJEYXRl
Q29tcG9uZW50cy5oIgorI2luY2x1ZGUgIkRhdGVUaW1lRmllbGRzU3RhdGUuaCIKICNpbmNsdWRl
ICJEZWNpbWFsLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1Mb2NhbGUuaCIKICNpbmNsdWRlICJTdGVwUmFuZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaAppbmRleCAx
MzE4Y2VmM2RkNTk5ZTczMGYzOTFjZWMzNzEzZjM2Njk2YjUxNTI1Li4wNmZmNjk3Yzc3NzYyNDAy
ZjNlNjZiZDcyODA1NWNmNTI3ZTFmZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lTG9jYWxJbnB1dFR5cGUuaApAQCAtMzIsMTMgKzMyLDE2IEBACiAKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9EQVRFVElNRUxPQ0FMKQogCi0jaW5jbHVkZSAiQmFzZUNob29zZXJPbmx5RGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEYXRlVGltZUxvY2FsSW5wdXRUeXBlIGZp
bmFsIDogcHVibGljIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlIHsKK2NsYXNz
IERhdGVUaW1lTG9jYWxJbnB1dFR5cGUgZmluYWwgOiBwdWJsaWMgQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlKEhU
TUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1
dFR5cGUoZWxlbWVudCkgeyB9CisgICAgZXhwbGljaXQgRGF0ZVRpbWVMb2NhbElucHV0VHlwZShI
VE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQorICAgICAgICA6IEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZShlbGVtZW50KQorICAgIHsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQXRvbVN0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRo
SW5wdXRUeXBlLmgKaW5kZXggOTQxNjUxZmFmOTk0ZTI0MmE0MzQ3NmZkZDk5OGRlM2UzYjkwMWI1
YS4uNGQ3YmI0N2E4NTNiOWRhNTQyOWJhYTU2YjU4Y2E2NjViZmZjYTUxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTW9udGhJbnB1dFR5cGUuaApAQCAtMzIsMTMgKzMyLDE2IEBACiAKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9NT05USCkKIAotI2luY2x1ZGUgIkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1l
SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTW9udGhJbnB1dFR5cGUgZmluYWwgOiBwdWJsaWMg
QmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUgeworY2xhc3MgTW9udGhJbnB1dFR5
cGUgZmluYWwgOiBwdWJsaWMgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBNb250aElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQorICAgIGV4cGxp
Y2l0IE1vbnRoSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCisgICAgICAgIDog
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlKGVsZW1lbnQpCisgICAgeworICAgIH0KIAogcHJpdmF0
ZToKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCmluZGV4IDgwMWFjMmUzZDFhMzY5
MGI0OThjNjBlNWI3NDFkMTBkNTk5ZTc4ZmUuLjIxMDM5NTczNDg0N2U1YjA5NTcyNzI4ZDY1ZmYx
MWM4MTRhYTBlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcApAQCAtNTMs
NyArNTMsNyBAQCBzdGF0aWMgY29uc3QgaW50IHRpbWVTdGVwU2NhbGVGYWN0b3IgPSAxMDAwOwog
c3RhdGljIGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uIHRpbWVTdGVwRGVzY3JpcHRp
b24geyB0aW1lRGVmYXVsdFN0ZXAsIHRpbWVEZWZhdWx0U3RlcEJhc2UsIHRpbWVTdGVwU2NhbGVG
YWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyIH07CiAKIFRp
bWVJbnB1dFR5cGU6OlRpbWVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKLSAg
ICA6IEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlKGVsZW1lbnQpCisgICAgOiBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rp
bWVJbnB1dFR5cGUuaAppbmRleCAyZDg4ZmFkYmY1MGRmNjQ2OTMzOTFmYzBlNGNiM2U1NjFkMGY3
NjhlLi5jMmQzYjg5MzI4ODc1N2E5NDNkNGMzMzM5NjJhMDA1NjkxZTYyYmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVJbnB1dFR5cGUuaApAQCAtMzIsMTEgKzMyLDExIEBACiAKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9USU1FKQogCi0jaW5jbHVkZSAiQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuaCIKKyNpbmNsdWRlICJCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUaW1lSW5wdXRUeXBlIGZpbmFsIDogcHVibGljIEJh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlIHsKK2NsYXNzIFRpbWVJbnB1dFR5cGUg
ZmluYWwgOiBwdWJsaWMgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlIHsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1dlZWtJbnB1dFR5cGUuaAppbmRleCBiZmViNzFhOGIxNmFkOGM0NjNiZWZmMTYwMTcwYTM5M2Uz
NTc4Mzg5Li4wNDBjMDgyMGI4OTkzODAwMjJiMDdhMDI0MjU2ZWY0MzdjMTM2NWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaApAQCAtMzIsMTMgKzMyLDE2IEBACiAKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9XRUVLKQogCi0jaW5jbHVkZSAiQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRp
bWVJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWVrSW5wdXRUeXBlIGZpbmFsIDogcHVibGlj
IEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlIHsKK2NsYXNzIFdlZWtJbnB1dFR5
cGUgZmluYWwgOiBwdWJsaWMgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBXZWVrSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFz
ZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgZXhwbGlj
aXQgV2Vla0lucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQorICAgICAgICA6IEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZShlbGVtZW50KQorICAgIHsKKyAgICB9CiAKIHByaXZhdGU6
CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>