<?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>235501</bug_id>
          
          <creation_ts>2022-01-23 21:48:28 -0800</creation_ts>
          <short_desc>Optimize and simplify MediaTime and various simple structs</short_desc>
          <delta_ts>2022-01-30 21:49:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235610</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>rego</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1833196</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 21:48:28 -0800</bug_when>
    <thetext>Optimize and simplify MediaTime and various simple structs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833201</commentid>
    <comment_count>1</comment_count>
      <attachid>449782</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 22:58:38 -0800</bug_when>
    <thetext>Created attachment 449782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833202</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 22:59:21 -0800</bug_when>
    <thetext>I’m guessing this first try won’t build on all platforms, maybe missing includes on some or some code I missed when updating to structs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833205</commentid>
    <comment_count>3</comment_count>
      <attachid>449784</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 23:21:14 -0800</bug_when>
    <thetext>Created attachment 449784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833494</commentid>
    <comment_count>4</comment_count>
      <attachid>449859</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-24 14:37:01 -0800</bug_when>
    <thetext>Created attachment 449859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833530</commentid>
    <comment_count>5</comment_count>
      <attachid>449874</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-24 15:32:39 -0800</bug_when>
    <thetext>Created attachment 449874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833553</commentid>
    <comment_count>6</comment_count>
      <attachid>449881</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-24 16:30:50 -0800</bug_when>
    <thetext>Created attachment 449881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833560</commentid>
    <comment_count>7</comment_count>
      <attachid>449883</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-24 17:02:41 -0800</bug_when>
    <thetext>Created attachment 449883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833607</commentid>
    <comment_count>8</comment_count>
      <attachid>449896</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-24 21:53:55 -0800</bug_when>
    <thetext>Created attachment 449896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833609</commentid>
    <comment_count>9</comment_count>
      <attachid>449897</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-24 22:14:30 -0800</bug_when>
    <thetext>Created attachment 449897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833788</commentid>
    <comment_count>10</comment_count>
      <attachid>449945</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-25 11:06:23 -0800</bug_when>
    <thetext>Created attachment 449945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833877</commentid>
    <comment_count>11</comment_count>
      <attachid>449971</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-25 15:13:27 -0800</bug_when>
    <thetext>Created attachment 449971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834136</commentid>
    <comment_count>12</comment_count>
      <attachid>450030</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-26 09:51:19 -0800</bug_when>
    <thetext>Created attachment 450030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835425</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-30 21:49:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/88253249&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449782</attachid>
            <date>2022-01-23 22:58:38 -0800</date>
            <delta_ts>2022-01-23 23:21:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220123225837.patch</filename>
            <type>text/plain</type>
            <size>127505</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTE4YTgzYTYwMzg1Zjk5YjNkOTNmODdlNzJiZDYzYjYxOTNjZTYyLi45ZTJlYmM5NDY5NGUwMWE4
MTY3MTViMzcwMDk4NTg4MDkxNDYwMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg4NDAwLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0ZWVlZDhmMTFk
NzE5NzYyZmU4NzkzNmMzZDkxYWE0MmZlMjAyMTFmLi41YzExNWRmYWQ3Zjc5MTBmYTgxMTA3ZTk3
OTcwZTc0NDYzYTM1Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIyLTAxLTIzICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkg
TWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Gb3J3YXJkLmg6IEFkZCBTZWNvbmRz
IGFuZCBXYWxsVGltZSB0byB0aGUgdXNpbmcgc2VjdGlvbi4KKworICAgICAgICAqIHd0Zi9Mb2Nr
Lmg6IFVzZSBGb3J3YXJkLmggaW5zdGVhZCBvZiBTZWNvbmRzLmggc2luY2UgU2Vjb25kcyBpcyBv
bmx5IHVzZWQKKyAgICAgICAgaGVyZSBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJuIHR5cGUsIG5v
IGFjdHVhbCB1c2Ugb2YgdGhlIGNsYXNzIGluIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiB3dGYv
TWVkaWFUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRpbWUpOiBEZWxl
dGVkIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHRoYXQgdXNlZCB0aGUgYXNzaWdubWVudAorICAgICAg
ICBvcGVyYXRvci4gVGhlIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciB3b3JrcyBmaW5lLCB3ZSBk
b24ndCBoYXZlIHRvIHdyaXRlIG9uZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRp
bWUpOiBBZGRlZCBhIEhhc0RvdWJsZSBjb25zdHJ1Y3RvciBmb3IgdXNlIGluIGNyZWF0ZQorICAg
ICAgICBmdW5jdGlvbnMuIEl0J3MgY29uc3RleHByIGJ1dCBpdCdzIGluIHRoZSAuY3BwIGZpbGUg
YmVjYXVzZSBpdCdzIHByaXZhdGUuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0
aEZsb2F0KTogU2ltcGxpZmllZCBieSB1c2luZyB0aGUgSGFzRG91YmxlIGNvbnN0cnVjdG9yLgor
ICAgICAgICBBbHNvIHVzZSBzdGQ6OmlzbmFuIGluc3RlYWQgb2YgYSB0cmlja3kgYWx0ZXJuYXRl
IHdheSBvZiBkb2luZyBpdC4gUmVtb3ZlZCBhCisgICAgICAgIHNwZWNpYWwgY2FzZSBmb3IgaW5m
aW5pdHkgc2luY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gY2FzZXMgYWxyZWFkeSBjb3ZlciB0
aGF0LgorICAgICAgICBBbmQgcmVwbGFjZWQgYSBzdGF0aWNfY2FzdCB3aXRoIGFuIGFzc2lnbm1l
bnQgdG8gdGhlIGRlc2lyZWQgdHlwZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKTogRGl0dG8uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgc28gc2ltaWxhciB0aGUKKyAg
ICAgICAgc2hvdWxkIHByb2JhYmx5IGJlIHRlbXBsYXRlZCBpbnN0ZWFkIG9mIHJlcGVhdGVkIHR3
aWNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvRmxvYXQgY29uc3QpOiBSZXBsYWNlZCBh
IHN0YXRpY19jYXN0IHdpdGggYXNzaWdubWVudCB0byB0aGUKKyAgICAgICAgZGVzaXJlZCB0eXBl
LgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvRG91YmxlIGNvbnN0KTogRGl0dG8uCisgICAg
ICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I9KTogRGVsZXRlZC4gVGhlIGRlZmF1bHQgYXNz
aWdubWVudCBvcGVyYXRvciB3b3JrcyBmaW5lLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9w
ZXJhdG9yKyBjb25zdCk6IFRha2UgdGhlIGFyZ3VtZW50IGJ5IHZhbHVlIGluc3RlYWQgb2YgcmVm
ZXJlbmNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yLSBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yKiBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yISBjb25zdCk6IFNpbXBsaWZpZWQgdGhlIGlt
cGxlbWVudGF0aW9uIGJ5IHVzaW5nCisgICAgICAgIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGNoZWNr
aW5nIHRoZSBmbGFncyBkaXJlY3RseS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRv
ciBib29sIGNvbnN0KTogQ2FsbCBvcGVyYXRvciEgaW5zdGVhZCBvZiByZXBlYXRpbmcgdGhlCisg
ICAgICAgIGxvZ2ljIHR3aWNlLgorICAgICAgICAoV1RGOjpvcmRlcmluZyk6IEFkZGVkIHR3byBv
dmVybG9hZGVkIGZ1bmN0aW9ucy4gT25lIGlzIGEgdGVtcGxhdGUgdGhhdCBjb21wYXJlcworICAg
ICAgICBzY2FsYXJzIGFuZCB0aGUgb3RoZXIgY29tcGFyZXMgdHdvIE1lZGlhVGltZSBvYmplY3Rz
LiBUaGUgc2Vjb25kIG9uZSByZXBsYWNlcyB0aGUKKyAgICAgICAgTWVkaWFUaW1lOjpjb21wYXJl
IGZ1bmN0aW9uLCB3aGljaCBpcyBub3cganVzdCBhIGxpZ2h0d2VpZ2h0IGNvdmVyIGZvciB0aGlz
LgorICAgICAgICBUaGUgb2xkIGNvZGUgaGFkIHRyaWNreSBsb2dpYywgYW5kIHRoaXMgbmV3IGZ1
bmN0aW9uIGlzIGEgY29tcGxldGUgcmV3cml0ZS4KKyAgICAgICAgVG8gbWFrZSB0aGUgbG9naWMg
ZWFzeSB0byBmb2xsb3csIHdlIGV4dHJhY3QgdGhlIHBpZWNlcyBvZiB0aGUgTWVkaWFUaW1lIGFu
ZAorICAgICAgICBjb21wYXJlIHRoZW0uIElmIHRoZXkgYXJlIGVxdWFsIHRoZW4gd2UgZmFsbCB0
aHJvdWdoIHRvIHRoZSBuZXh0LCBhbmQgc28gb24uCisgICAgICAgIEF0IHRoZSBlbmQgdGhlcmUg
YXJlIHZhcmlvdXMgY2FzZXMgZm9yIHRpbWVzIHdlIGNhbiBjb21wYXJlIHdpdGhvdXQgZG9pbmcK
KyAgICAgICAgYXJpdGhtZXRpYywgYW5kIHRoZXNlIGFyZSB0aGUgc2FtZSBhcyB0aGUgb25lcyB0
aGF0IHdlcmUgYWxyZWFkeSBoZXJlLCBidXQgd2l0aAorICAgICAgICBzaW1wbGlmaWVkIGxvZ2lj
IGluIHNvbWUgY2FzZXMgdGhhdCBzaG91ZGwgYmUgZWFzaWVyIHRvIGZvbGxvdywgYW5kIG5vIHVz
ZXMgb2YKKyAgICAgICAgc3RhdGljX2Nhc3QgYW55IG1vcmUuCisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6aXNCZXR3ZWVuIGNvbnN0KTogVGFrZSBhcmd1bWVudHMgYnkgdmFsdWUgaW5zdGVhZCBv
ZiByZWZlcmVuY2UuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6emVyb1RpbWUpOiBEZWxldGVk
LiBOb3cgYSBjb25zdGV4cHIgaW4gdGhlIGhlYWRlci4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1l
OjppbnZhbGlkVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6
OnBvc2l0aXZlSW5maW5pdGVUaW1lKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXVEY6Ok1l
ZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAg
KFdURjo6TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6OnRvVGltZVNjYWxlIGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSb3Vu
ZGluZ0ZsYWdzIGlzIG5vdworICAgICAgICBSb3VuZGluZ01vZGUuIEl0IGRpZG4ndCBtYWtlIHNl
bnNlIHRvIHRyZWF0IG11dHVhbGx5IGV4Y2x1c2l2ZSByb3VuZGluZyBwb2xpY2llcworICAgICAg
ICBhcyAiZmxhZ3MiLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSk6IERp
dHRvLiBBbHNvIHVzZSBzdGQ6OmV4Y2hhbmdlIGluc3RlYWQgb2Ygc3RkOjpzd2FwCisgICAgICAg
IGFuZCB1c2Ugc3RkOjphYnMgaW5zdGVhZCBvZiBsbGFicy4KKyAgICAgICAgKFdURjo6TWVkaWFU
aW1lOjp0b0pTT05PYmplY3QgY29uc3QpOiBSZW1vdmVkIHN0YXRpY19jYXN0IHRvIGRvdWJsZS4K
KyAgICAgICAgKFdURjo6YWJzKTogVGFrZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0ZWFkIG9mIHJl
ZmVyZW5jZS4gUmVuYW1lZCBhcmd1bWVudCBmcm9tIHJocworICAgICAgICBzaW5jZSB0aGUgYXJn
dW1lbnQgaXMgbm90IHRoZSByaWdodC1oYW5kIHNpZGUgb2YgYW4gb3BlcmF0b3IuIFJlbW92ZWQg
dW5uZWVkZWQKKyAgICAgICAgc3BlY2lhbCBjYXNlIHRvIGhhbmRsZSBpbnZhbGlkIGJlY2F1c2Ug
dGhlIGZ1bmN0aW9uIHdvcmtzIGZpbmUgb24gaW52YWxpZCB3aXRob3V0IGl0LgorICAgICAgICBV
c2Ugc3RkOjphYnMgaW5zdGVhZCBvZiBmYWJzLgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KTog
VGFrZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0ZWFkIG9mIHJlZmVyZW5jZS4KKworICAgICAgICAq
IHd0Zi9NZWRpYVRpbWUuaDogUmVtb3ZlZCBtYW55IHVubmVlZGVkIGluY2x1ZGVzLiBSZW1vdmVk
IFdURl9FWFBPUlRfUFJJVkFURQorICAgICAgICBmcm9tIHRoZSBjbGFzcyBiZWNhdXNlIGl0J3Mg
bm90IGNvbXBhdGlibGUgd2l0aCBpbmxpbmVkIGZ1bmN0aW9ucyBhY2NvcmRpbmcgdG8KKyAgICAg
ICAgdGhlIHN0eWxlIGNoZWNrZXIgc2NyaXB0LCBpbnN0ZWFkIGV4cG9ydGluZyBpbmRpdmlkdWFs
IGZ1bmN0aW9ucy4gVXNlIE9wdGlvblNldAorICAgICAgICBmb3IgdGhlIGZsYWdzLiBDaGFuZ2Vk
IGZ1bmN0aW9ucyB0byB0YWtlIE1lZGlhVGltZSBieSB2YWx1ZSwgc2luY2UgaXQncyBqdXN0IGEK
KyAgICAgICAgZmV3IHNjYWxhcnMsIG5vIHNpZ25pZmljYW50IGNvc3QgdG8gY29weWluZyBpdCwg
YW5kIHBhc3NpbmcgYnkgdmFsdWUgbWVhbnMgdGhlCisgICAgICAgIHdob2xlIHRoaW5nIG1pZ2h0
IGVuZCB1cCBpbiByZWdpc3RlcnMgc2luY2Ugd2Ugd29uJ3QgbmVlZCBhIHBvaW50ZXIgdG8gaXQg
dG8KKyAgICAgICAgcGFzcyBhcyB0aGUgcmVmZXJlbmNlLiBNYWRlIHRoZSB2YXJpb3VzIHNwZWNp
YWwgdGltZXMgcmV0dXJuIGNvbnN0ZXhwciB2YWx1ZXMsCisgICAgICAgIHdoaWNoIHdpbGwgY29t
cGlsZSB0aGUgYXBwcm9wcmlhdGUgYml0IHBhdHRlcm4gd2l0aG91dCBhbnkgY29tcHV0YXRpb24g
bmVlZGVkLgorICAgICAgICBDaGFuZ2VkIHRoZSB0aW1lVmFsdWUgYW5kIHRpbWVTY2FsZSBmdW5j
dGlvbnMgdG8gcmV0dXJuIHRoZSBzY2FsYXJzLCBub3QgYQorICAgICAgICBjb25zdCByZWZlcmVu
Y2UuIFJlbmFtZWQgUm91bmRpbmdGbGFncyB0byBSb3VuZGluZ01vZGUgc2luY2UgaXQncyBhIGJ1
bmNoIG9mCisgICAgICAgIG11dHVhbGx5IGV4Y2x1c2l2ZSByb3VuZGluZyBtb2Rlcywgbm90IGEg
c2V0IG9mIGZsYWdzIHdlIGNhbiBjb21iaW5lLiBSZW5hbWVkCisgICAgICAgIHRoZSBkYXRhIG1l
bWJlcnMsIHNpbmNlIHRoZXkgZG9u4oCZdCBhbGwgbmVlZCBhICJ0aW1lIiBwcmVmaXggaW4gYSBj
bGFzcyB0aGF0IGlzCisgICAgICAgIGFscmVhZHkgbmFtZWQgTWVkaWFUaW1lLiBUb29rIHNvbWUg
dW5uZWVkZWQgY29uc3Qgb3V0IG9mIE1lZGlhVGltZVJhbmdlLgorICAgICAgICBBZGRlZCB0aGUg
RW51bVRyYWl0cyBmb3IgdGhlIGZsYWdzIHNvIHRoZXkgY2FuIGJlIGVuY29kZWQgYW5kIGRlY29k
ZWQuIEJlZm9yZQorICAgICAgICB3ZSB3ZXJlIGVuY29kaW5nIHRoZSBzZXQgb2YgZmxhZ3MgYXMg
YSB1aW50OF90LCB0aGlzIGlzIGJldHRlci4KKworICAgICAgICAqIHd0Zi9TZWNvbmRzLmg6IE1v
dmVkIHRoZSAidXNpbmcgV1RGOjpTZWNvbmRzIiB0byBGb3J3YXJkLmguCisKKyAgICAgICAgKiB3
dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOiBJbmNsdWRlIEZvcndhcmQuaCBpbnN0ZWFkIG9mIFdh
bGxUaW1lLmggc2luY2UKKyAgICAgICAgdGhpcyBmaWxlIG9ubHkgZGVmaW5lcyBhIGZ1bmN0aW9u
IHdpdGggYSBXYWxsVGltZSBhcmd1bWVudCBhbmQgZG9lc24ndCBuZWVkCisgICAgICAgIHRvIHB1
bGwgdGhlIGVudGlyZSBjbGFzcyBkZWZpbml0aW9uIGluLgorCisgICAgICAgICogd3RmL1dhbGxU
aW1lLmg6IE1vdmVkIHRoZSAidXNpbmcgV1RGOjpXYWxsVGltZSIgdG8gRm9yd2FyZC5oLgorCisg
ICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oOiBJbmNsdWRlIDxvcHRp
b25hbD4gaW5zdGVhZCBvZiBGb3J3YXJkLmguCisgICAgICAgIFRoZSBmb3JtZXIgaXMgYWxsIHRo
YXQncyBuZWVkZWQuCisKKyAgICAgICAgKiB3dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwOiBB
ZGRlZCBhbiBpbmNsdWRlIG9mIFdhbGxUaW1lLmggc2luY2UKKyAgICAgICAgVGhyZWFkaW5nUHJp
bWl0aXZlcy5oIG5vIGxvbmdlciBwdWxscyBpdCBpbi4KKworICAgICAgICAqIHd0Zi90aHJlYWRz
L1NpZ25hbHMuaDogQWRkZWQgYW4gaW5jbHVkZSBvZiA8b3B0aW9uYWw+IHNpbmNlIExvY2suaCBu
bworICAgICAgICBsb25nZXIgcHVsbHMgaXQgaW4gYnkgaW5jbHVkaW5nIFNlY29uZHMuaC4KKwog
MjAyMi0wMS0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIFJlbGF4IERhdGUucGFyc2UgcmVxdWlyZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZTdiODBl
YzlmODY5MTEyMDg5NDJjOWJlN2RhMmMzN2Y2NzI4NWU1Li5iYjkwZDYzZGY1YmNhYzUwNWU5Yjg3
ZDBhM2U1YjNiNmFkNmM1NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUxIEBACisyMDIyLTAx
LTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBh
bmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNpbXBsZSBzdHJ1Y3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOiBVcGRh
dGVkIHNpbmNlIFRhYlNpemUgYW5kIExlbmd0aFBvaW50IGFyZSBib3RoIG5vdworICAgICAgICBz
dHJ1Y3R1cmVzLCBhbmQgaGF2ZSBwdWJsaWMgZGF0YSBtZW1iZXJzIHJhdGhlciB0aGFuIGdldHRl
ciBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dGb3JCbGVuZGluZyk6ICBVcGRh
dGVkIHRvIHJldHVybiBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbgorICAgICAgICBhIG5ldmVyLW51
bGwgcG9pbnRlciBhbmQgZm9yIGNoYW5nZXMgdG8gTGVuZ3RoUG9pbnQuCisKKyAgICAgICAgKiBj
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZh
bHVlRm9yUG9zaXRpb24pOiBVcGRhdGVkIHNpbmNlIExlbmd0aFBvaW50IGlzIGEgc3RydWN0dXJl
LgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JQb3NpdGlvbk9yQXV0byk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Y29udGVudFRvQ1NTVmFsdWUpOiBVcGRhdGVkIHNpbmNlIENvdW50ZXJD
b250ZW50IGlzIGEgc3RydWN0dXJlLgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUpOiBVcGRhdGVkCisgICAgICAgIHNpbmNl
IFRhYlNpemUgaXMgYSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50Rm9yTGVuZ3RoUG9pbnQpOiBVcGRhdGVkIHNp
bmNlIExlbmd0aFBvaW50IGlzIGEgc3RydWN0dXJlLgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRQ
b2ludEZvckxlbmd0aFBvaW50KTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNQb3RlbnRpYWxDdXN0b21FbGVtZW50TmFtZUNoYXJhY3Rl
cik6IFVzZSBTb3J0ZWRBcnJheVNldC4KKworICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aFBvaW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBVcGRhdGVkIHNpbmNlIExlbmd0
aFBvaW50IGlzIGEgc3RydWN0dXJlLgorCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoUG9pbnQu
aDogQ2hhbmdlZCBMZW5ndGhQb2ludCB0byBiZSBhIHRydWUgc3RydWN0dXJlCisgICAgICAgIHdp
dGggcHVibGljIGRhdGEgbWVtYmVycy4gVGhlIG9sZCBvbmUgd2FzLCBzdHJhbmdlbHksIGEgc3Ry
dWN0LCBidXQKKyAgICAgICAgd2l0aCBwcml2YXRlIGRhdGEuIFJlbW92ZWQgdGhlIGNvbnN0cnVj
dG9ycywgZ2V0dGVycywgYW5kIHNldHRlcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3Jl
YXRlKTogQXZvaWQgYSB3YXJuaW5nIGFib3V0IG1peGVkIGludGVnZXIKKyAgICAgICAgdHlwZXMg
YnkgdXNpbmcgYSBsb2NhbCB2YXJpYWJsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1RhYlNpemUuaDogUmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSB0aGUgZGF0YQorICAgICAg
ICBtZW1iZXJzIHNpbmNlIFRhYlNpemUgaXMgYSBzdHJ1Y3QuIFJlbW92ZWQgdGhlIGdldHRlcnMu
IE1hcmtlZCB0aGUKKyAgICAgICAgb3BlcmF0b3IgYm9vbCBleHBsaWNpdCBzaW5jZSB3ZSBkb24n
dCB3YW50IHRvIGFjY2lkZW50YWxseSBwYXNzIHRoaXMKKyAgICAgICAgdG8gc29tZXRoaW5nIHRh
a2luZyBhbiBpbnRlZ2VyIGFuZCBnZXR0aW5nIGEgMCBvciAxLiBBZGRlZCBhIFRleHRTdHJlYW0K
KyAgICAgICAgb3ZlcmxvYWQgc28gd2UgY2FuIHN0cmVhbSB0aGlzIHdpdGhvdXQgZXhwbGljaXRs
eSBwaWNraW5nIGl0IGFwYXJ0IGF0CisgICAgICAgIGVhY2ggY2FsbCBzaXRlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNr
UHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgUmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSBJ
bmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQzo6Q2hhcHRlckRhdGEKKyAgICAgICAgZGF0
YSBtZW1iZXJzIHNpbmNlIGl0J3MgYSBzdHJ1Y3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIp
OiBGaXhlZCBhCisgICAgICAgIGJ1ZyB3aGVyZSB0aGlzIHVzZWQgY3VycmVudEltYWdlVGltZSBp
bnN0ZWFkIG9mIG5leHRJbWFnZSB0aW1lLCBleHBvc2VkCisgICAgICAgIGJlY2F1c2UgdGhlIGNo
YW5nZXMgdG8gTWVkaWFUaW1lIG1hZGUgaXQgZ2l2ZSB1cyBhbiB1bnVzZWQgdmFyaWFibGUgd2Fy
bmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEpOgorICAgICAgICBVcGRhdGVkIHNpbmNl
IHBhcnNlT3B1c1ByaXZhdGVEYXRhIG5vdyByZXR1cm5zIGFuIG9wdGlvbmFsIGluc3RlYWQgb2YK
KyAgICAgICAgcmV0dXJuaW5nIGEgYm9vbGVhbiBhbmQgdXNpbmcgYW4gb3V0IGFyZ3VtZW50Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29j
b2EuaDogQWRkZWQgYW4gaW5jbHVkZQorICAgICAgICBvZiBTZWNvbmRzLmggc2luY2UgaXQncyBu
byBsb25nZXIgcHVsbGVkIGluIGJ5IG90aGVyIGluY2x1ZGVzIGFuZAorICAgICAgICB0aGlzIHN0
cnVjdHVyZSBoYXMgYSBTZWNvbmRzIGRhdGEgbWVtYmVyLiBDaGFuZ2VkIHRoZSBwYXJzZU9wdXNQ
cml2YXRlRGF0YQorICAgICAgICBmdW5jdGlvbiB0byByZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVh
ZCBvZiByZXR1cm5pbmcgYSBib29sIGFuZCB1c2luZworICAgICAgICBhbiBvdXQgYXJndW1lbnQg
Zm9yIHdoYXQgaXMgcGFyc2VkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU9wdXNQ
cml2YXRlRGF0YSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2ts
aXN0Lm1tOiBSZW1vdmVkIHRoZSBjb25zdHJ1Y3RvcnMgZnJvbQorICAgICAgICBPU0J1aWxkSW5m
byBhbmQgbWFkZSBhbGwgaXRzIG9wZXJhdG9ycyBjb25zdGV4cHIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oOiBBZGRlZCBhbiBpbmNs
dWRlCisgICAgICAgIG9mIFNlY29uZHMuaCwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBMb2NrLmgu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5t
bTogQWRkZWQgYW4gaW5jbHVkZSBvZgorICAgICAgICBXYWxsVGltZS5oLCBubyBsb25nZXIgcHVs
bGVkIGluIGJ5IFRocmVhZGluZ1ByaW1pdGl2ZXMuaC4KKworICAgICAgICAqIHJlbmRlcmluZy9H
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFy
ZWEpOiBSZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVhZCBvZgorICAgICAgICBhIHVuaXF1ZV9wdHIu
IE5vIHJlYXNvbiB0byB1c2UgYSBoZWFwIGJsb2NrIGZvciB0aGlzLgorICAgICAgICAqIHJlbmRl
cmluZy9HcmlkLmg6IFVwZGF0ZWQgc2luY2UgR3JpZEFyZWEgaXMgbm93IGEgc3RydWN0IGFuZCBm
b3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6b3JpZ2luYWxUZXh0IGNvbnN0KTogVXBk
YXRlZCBzaW5jZSBDb3VudGVyQ29udGVudAorICAgICAgICBpcyBub3cgYSBzdHJ1Y3R1cmUuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRl
R3JpZCBjb25zdCk6CisgICAgICAgIFJldHVybiBhIEdyaWRBcmVhIGluc3RlYWQgb2YgYSB1bmlx
dWVfcHRyLiBUaGUgcmV0dXJuIHZhbHVlIGlzIG5ldmVyIG51bGwgYW5kCisgICAgICAgIHRoZXJl
IGlzIG5vIG5lZWQgdG8gcHV0IGl0IG9uIHRoZSBoZWFwLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZCBjb25zdCk6IFVwZGF0
ZWQgZm9yCisgICAgICAgIHRoZSBhYm92ZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkIGNvbnN0KTogVXNlIG9wdGlvbmFs
IGluc3RlYWQKKyAgICAgICAgb2YgdW5pcXVlX3B0ciBmb3IgYSBsb2NhbCB2YXJpYWJsZSB3aXRo
IHRoZSBlbXB0eSBncmlkIGFyZWEgaW4gaXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdy
aWQuaDogVXBkYXRlZCBzaW5jZSBHcmlkQXJlYSBpcyBhIHN0cnVjdCBhbmQgZm9yIHRoZSBhYm92
ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOiBVc2Ug
Y29uc3RleHByLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0IGNvbnN0
KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBMZW5ndGhQb2ludCBpcyBhIHN0cnVjdHVyZS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdyBjb25zdCk6IERpdHRvLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmg6IFN0eWxlIHR3ZWFrcy4KKworICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oOiBUdXJuZWQgdGhlIENvdW50ZXJDb250
ZW50IGNsYXNzIGludG8gYQorICAgICAgICBzdHJ1Y3R1cmUgd2l0aCBwdWJsaWMgZGF0YSBtZW1i
ZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oOiBSZW1vdmVkIHRo
ZSBGaWxsU2l6ZSBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3Jp
ZEFyZWEuaDogTWFkZSBHcmlkU3BhblR5cGUgYmUgYmFzZWQgb24gYSB1aW50OF90LgorICAgICAg
ICBSZW9yZGVyZWQgdGhlIGRhdGEgbWVtYmVycyBvZiBHcmlkQXJlYSB0byBiZSByb3dzIGZpcnN0
IGFuZCB0aGVuIGNvbHVtbnMKKyAgICAgICAgdG8gZm9sbG93IHRoZSBvcmRlciBmcm9tIHRoZSBj
b25zdHJ1Y3RvciBhbmQgYWxzbyB0aGUgY29udmVudGlvbmFsCisgICAgICAgICJ4IGJlZm9yZSB5
IiBvcmRlcmluZy4gVGhpcyB3aWxsIGFsc28gYmUgZ29vZCBzb21lIGRheSB3aGVuIHdlIGNhbiB1
c2UgdGhlCisgICAgICAgIGRlZmF1bHQgPD0+IGZyb20gQysrMjAsIHdoaWNoIGRlcGVuZHMgb24g
ZGF0YSBtZW1iZXIgb3JkZXJpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZExl
bmd0aC5oOiBUd2Vha2VkIGNvbW1lbnRzIGFuZCBtb3ZlZCBpbml0aWFsaXphdGlvbgorICAgICAg
ICBvZiBtX2ZsZXggZnJvbSB0aGUgY29uc3RydWN0b3IgdG8gdGhlIGRhdGEgbWVtYmVyIGRlZmlu
aXRpb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybSBjb25z
dCk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDogVXBkYXRlZCBzaW5jZSBD
b3VudGVyQ29udGVudCBhbmQgTGVuZ2h0UG9pbnQKKyAgICAgICAgYXJlIHN0cnVjdHVyZXMsIGFu
ZCB0byBwYXNzIFRhYlNpemUgYnkgdmFsdWUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRh
KTogU2ltcGxpZmllZCBjb25zdHJ1Y3RvciBzaW5jZSBtX2xvY2F0aW9uCisgICAgICAgIGRvZXMg
bm90IGhhdmUgdG8gYmUgc3BsaXQgb3V0IGludG8geCBhbmQgeSBqdXN0IHRvIGNvcHkgaXQuCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0RhdGE6OlNoYWRvd0RhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0RhdGE6OnggY29uc3QpOiBVcGRhdGVkIHNpbmNlIExlbmd0aFBvaW50IGlzIG5vdyBhIHN0cnVj
dHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OnkgY29uc3QpOiBEaXR0by4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRUYWJTaXplKTogVXBkYXRlZCBzaW5jZSBUYWJTaXplCisgICAgICAgIG5vIGxvbmdlciBoYXMg
Y29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRQb3NpdGlvbik6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQKKyAgICAgICAgbm8g
bG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKTogRGl0dG8uCisgICAgICAgICogc3R5
bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KTogVXBkYXRlZCBz
aW5jZSBDb3VudGVyQ29udGVudAorICAgICAgICBubyBsb25nZXIgaGFzIGNvbnN0cnVjdG9ycy4K
KwogMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4ICJjb21wb25ldCIgdHlwbyBpbiBqdXN0LWxhbmRlZCBwYXRjaC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IDMyODA5ODlkODAxYzk1ZDBjNGYyNGUyYzA1ZTk2OGMxNTY1OTczNmIuLjYzNmNhYjNk
NmUyZWNlMzc5YjM1Mzc3NTI0NjEzYzc2M2M5MDAzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDIyLTAxLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNp
bXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAg
ICAgKFBBTDo6Q01UaW1lSGFzRmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjp0b01lZGlh
VGltZSk6IFRha2UgQ01UaW1lIGJ5IHZhbHVlLiBBbHNvIHNpbXBsaWZpZWQgbG9naWMKKyAgICAg
ICAgdG8ganVzdCBjaGVjayBvbmUgZmxhZyBhdCBhIHRpbWUsIHdoaWNoIG1lYW5zIHRoZSBDTVRp
bWVIYXNGbGFncworICAgICAgICBmdW5jdGlvbiBpc24ndCBuZWVkZWQgYW55IG1vcmUuIEFsc28g
bm93IHVzZXMgT3B0aW9uU2V0IGJlY2F1c2UKKyAgICAgICAgdGhhdCBpcyBob3cgTWVkaWFUaW1l
IHdvcmtzLgorICAgICAgICAoUEFMOjp0b0NNVGltZSk6IFRha2UgTWVkaWFUaW1lIGJ5IHZhbHVl
LgorICAgICAgICAqIHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg6IFVw
ZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKwogMjAyMi0wMS0yMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIENGVVJMQ2FjaGUgaW4gV2ViS2l0MgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA1MGE1MmQ0NmQ4NzRiNmMzMjg4YWY0ZjNiMjQ0ZWRmYmU5YjExNGJiLi42NzNhODkz
NTgzZDk3NzQ3NTJiOTFkNGZhNmE5ZDI5ZGM5NTQ5OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIyLTAxLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNpbXBsZSBzdHJ1
Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDoK
KyAgICAgICAgQWRkZWQgYW4gaW5jbHVkZSBvZiA8b3B0aW9uYWw+LCBubyBsb25nZXIgcHVsbGVk
IGluIGJvdGggb3RoZXIgaGVhZGVycy4KKwogMjAyMi0wMS0yMiAgQmVuIE5oYW0gIDxuaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAKaW5kZXggNWY2
NjNiMmZmNWE1ZTNjZTA4Y2U0MTI5NWI4MGE5YjcxMDZjODk3OS4uNTQ2Y2FkNzZlYzg4ZDcxMDU0
MWU2YTNlNTk4NWZhNjQ5NWZiNGY5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJPcHRp
b25zLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1Nv
dXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCAzY2U3NjEyNDJjMzJlYzE2OTRjNjVhNzdlNzQw
ZTljNjY5M2MzYmI0Li4zNjQ4NzJhMjAxYzZkYmVmZmM5N2U0YzkwYzY1NjFiZjU5ZDA3NGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYv
Rm9yd2FyZC5oCkBAIC0xNDksNiArMTQ5LDcgQEAgdXNpbmcgV1RGOjpSZWZQdHI7CiB1c2luZyBX
VEY6OlJldGFpblB0cjsKIHVzaW5nIFdURjo6U0hBMTsKIHVzaW5nIFdURjo6U2NvcGVkTGFtYmRh
OwordXNpbmcgV1RGOjpTZWNvbmRzOwogdXNpbmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6OlN0
cmluZ0J1ZmZlcjsKIHVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsKQEAgLTE2MSw2ICsxNjIsNyBA
QCB1c2luZyBXVEY6OlRleHRTdHJlYW07CiB1c2luZyBXVEY6OlVSTDsKIHVzaW5nIFdURjo6VW5p
cXVlUmVmOwogdXNpbmcgV1RGOjpWZWN0b3I7Cit1c2luZyBXVEY6OldhbGxUaW1lOwogdXNpbmcg
V1RGOjpXZWFrUHRyOwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiB1c2luZyBFeHBlY3Rl
ZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjpleHBlY3RlZDxULCBFPjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0xvY2suaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2suaAppbmRleCA0MmU0YWFjMGM5
YTRhYWU1OWU3MWI1ZTkzNThjYjg2MDE4ZDdlNDNhLi5jOGY2YzMwZDJmMDcwZDMxNjkwYzY0MmVi
YjdiYjc2ZWE3Njk5MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKKysrIGIv
U291cmNlL1dURi93dGYvTG9jay5oCkBAIC0yNiwxMCArMjYsMTAgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvTG9ja0FsZ29yaXRobS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZldHlBbmFseXNpcy5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwIGIvU291cmNlL1dURi93dGYv
TWVkaWFUaW1lLmNwcAppbmRleCAyMjRlNzc0OTVmYjkzODM0ZjU4ZjljZjMyMzQzN2YzOTE2OTM5
NDJmLi5jMjI0OTZkZmZlMTQ3MjI5NWU2YmQ4ZDhhZmNmNTRiMDg2OTViMmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lZGlh
VGltZS5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgc3RhdGljIGludDY0X3Qgc2lnbnVtKGludDY0X3Qg
dmFsKQogCiBjb25zdCB1aW50MzJfdCBNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUgPSAxMDAw
MDAwMDAwOwogCi1NZWRpYVRpbWU6Ok1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHJocykKK2Nv
bnN0ZXhwciBNZWRpYVRpbWU6Ok1lZGlhVGltZShVc2VEb3VibGVGbGFnLCBkb3VibGUgdmFsdWUp
CisgICAgOiBtX3ZhbHVlQXNEb3VibGUodmFsdWUpCiB7Ci0gICAgKnRoaXMgPSByaHM7CiB9CiAK
IE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUpCkBA
IC04NCw1NyArODQsNTEgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZs
b2F0IGZsb2F0VGltZSkKICAgICBpZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDog
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKIAotICAgIE1lZGlhVGltZSB2YWx1ZSgwLCBEZWZhdWx0
VGltZVNjYWxlLCBWYWxpZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2YWx1ZS5tX3RpbWVWYWx1ZUFz
RG91YmxlID0gZmxvYXRUaW1lOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBkb3VibGUgdmFsdWUg
PSBmbG9hdFRpbWU7CisgICAgcmV0dXJuIHsgVXNlRG91YmxlLCB2YWx1ZSB9OwogfQogCi1NZWRp
YVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lLCB1aW50MzJf
dCB0aW1lU2NhbGUpCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQg
dmFsdWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAoZmxvYXRUaW1lICE9IGZsb2F0
VGltZSkKKyAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBpbnZhbGlk
VGltZSgpOwotICAgIGlmIChzdGQ6OmlzaW5mKGZsb2F0VGltZSkpCi0gICAgICAgIHJldHVybiBz
dGQ6OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2
ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPj0gbWF4UGx1c09uZTxpbnQ2NF90
PikKKyAgICBpZiAodmFsdWUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKICAgICAgICAgcmV0dXJu
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgaWYgKGZsb2F0VGltZSA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlmICh2YWx1ZSA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChm
bG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1l
KCk7CisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAgICB3aGlsZSAoZmxvYXRUaW1l
ICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAgd2hpbGUgKHZhbHVlICog
dGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHRpbWVTY2FsZSAvPSAy
OwotICAgIHJldHVybiBNZWRpYVRpbWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmxvYXRUaW1lICog
dGltZVNjYWxlKSwgdGltZVNjYWxlLCBWYWxpZCk7CisgICAgaW50NjRfdCBzY2FsZWRWYWx1ZSA9
IHZhbHVlICogdGltZVNjYWxlOworICAgIHJldHVybiB7IHNjYWxlZFZhbHVlLCB0aW1lU2NhbGUg
fTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91
YmxlVGltZSkKK01lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIHZh
bHVlKQogewotICAgIGlmIChkb3VibGVUaW1lICE9IGRvdWJsZVRpbWUpCisgICAgaWYgKHN0ZDo6
aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3Rk
Ojppc2luZihkb3VibGVUaW1lKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVU
aW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwot
Ci0gICAgTWVkaWFUaW1lIHZhbHVlKDAsIERlZmF1bHRUaW1lU2NhbGUsIFZhbGlkIHwgRG91Ymxl
VmFsdWUpOwotICAgIHZhbHVlLm1fdGltZVZhbHVlQXNEb3VibGUgPSBkb3VibGVUaW1lOwotICAg
IHJldHVybiB2YWx1ZTsKKyAgICBpZiAoc3RkOjppc2luZih2YWx1ZSkpCisgICAgICAgIHJldHVy
biBzdGQ6OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZl
SW5maW5pdGVUaW1lKCk7CisgICAgcmV0dXJuIHsgVXNlRG91YmxlLCB2YWx1ZSB9OwogfQogCi1N
ZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lLCB1
aW50MzJfdCB0aW1lU2NhbGUpCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGRvdWJsZSB2YWx1ZSwgdWludDMyX3QgdGltZVNjYWxlKQogewotICAgIGlmIChkb3VibGVUaW1l
ICE9IGRvdWJsZVRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1
cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChkb3VibGVUaW1lID49IG1heFBs
dXNPbmU8aW50NjRfdD4pCisgICAgaWYgKHZhbHVlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAg
ICAgICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChkb3VibGVUaW1l
IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCisgICAgaWYgKHZhbHVlIDwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCiAgICAgICAgIHJldHVybiBuZWdh
dGl2ZUluZmluaXRlVGltZSgpOwogICAgIGlmICghdGltZVNjYWxlKQotICAgICAgICByZXR1cm4g
c3RkOjpzaWduYml0KGRvdWJsZVRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0
aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8g
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAgICB3
aGlsZSAoZG91YmxlVGltZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAg
IHdoaWxlICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAg
ICB0aW1lU2NhbGUgLz0gMjsKLSAgICByZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0
X3Q+KHN0ZDo6cm91bmQoZG91YmxlVGltZSAqIHRpbWVTY2FsZSkpLCB0aW1lU2NhbGUsIFZhbGlk
KTsKKyAgICBpbnQ2NF90IHNjYWxlZFZhbHVlID0gc3RkOjpyb3VuZCh2YWx1ZSAqIHRpbWVTY2Fs
ZSk7CisgICAgcmV0dXJuIHsgc2NhbGVkVmFsdWUsIHRpbWVTY2FsZSB9OwogfQogCiBmbG9hdCBN
ZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25zdApAQCAtMTQ2LDggKzE0MCw5IEBAIGZsb2F0IE1lZGlh
VGltZTo6dG9GbG9hdCgpIGNvbnN0CiAgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAg
ICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwogICAg
IGlmIChoYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWVBc0RvdWJs
ZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGltZVZhbHVlKSAvIG1fdGltZVNj
YWxlOworICAgICAgICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOworICAgIGZsb2F0IHZhbHVlID0g
bV92YWx1ZTsKKyAgICByZXR1cm4gdmFsdWUgLyBtX3NjYWxlOwogfQogCiBkb3VibGUgTWVkaWFU
aW1lOjp0b0RvdWJsZSgpIGNvbnN0CkBAIC0xNTksMTkgKzE1NCwxMiBAQCBkb3VibGUgTWVkaWFU
aW1lOjp0b0RvdWJsZSgpIGNvbnN0CiAgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAg
ICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKICAg
ICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlQXNEb3Vi
bGU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV90aW1lVmFsdWUpIC8gbV90aW1l
U2NhbGU7CisgICAgICAgIHJldHVybiBtX3ZhbHVlQXNEb3VibGU7CisgICAgZG91YmxlIHZhbHVl
ID0gbV92YWx1ZTsKKyAgICByZXR1cm4gdmFsdWUgLyBtX3NjYWxlOwogfQogCi1NZWRpYVRpbWUm
IE1lZGlhVGltZTo6b3BlcmF0b3I9KGNvbnN0IE1lZGlhVGltZSYgcmhzKQotewotICAgIG1fdGlt
ZVZhbHVlID0gcmhzLm1fdGltZVZhbHVlOwotICAgIG1fdGltZVNjYWxlID0gcmhzLm1fdGltZVNj
YWxlOwotICAgIG1fdGltZUZsYWdzID0gcmhzLm1fdGltZUZsYWdzOwotICAgIHJldHVybiAqdGhp
czsKLX0KLQotTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYg
cmhzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IrKE1lZGlhVGltZSByaHMp
IGNvbnN0CiB7CiAgICAgaWYgKHJocy5pc0ludmFsaWQoKSB8fCBpc0ludmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CkBAIC0xOTIsNyArMTgwLDcgQEAgTWVkaWFUaW1lIE1l
ZGlhVGltZTo6b3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgICAgICBy
ZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKIAogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgp
ICYmIHJocy5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUgKyByaHMubV90aW1lVmFsdWVBc0RvdWJs
ZSk7CisgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV92YWx1ZUFz
RG91YmxlICsgcmhzLm1fdmFsdWVBc0RvdWJsZSk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUo
KSB8fCByaHMuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZSh0b0RvdWJsZSgpICsgcmhzLnRvRG91YmxlKCkpOwpAQCAtMjAxLDEzICsx
ODksMTMgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYg
cmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBiID0gcmhzOwogCiAgICAgdWludDMyX3QgY29tbW9u
VGltZVNjYWxlOwotICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZShhLm1fdGltZVNjYWxlLCBi
Lm1fdGltZVNjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVTY2FsZSA+IE1heGlt
dW1UaW1lU2NhbGUpCisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKGEubV9zY2FsZSwgYi5t
X3NjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVTY2FsZSA+IE1heGltdW1UaW1l
U2NhbGUpCiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSA9IE1heGltdW1UaW1lU2NhbGU7CiAgICAg
YS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICBiLnNldFRpbWVTY2FsZShjb21t
b25UaW1lU2NhbGUpOwotICAgIHdoaWxlICghc2FmZUFkZChhLm1fdGltZVZhbHVlLCBiLm1fdGlt
ZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgIHdoaWxlICghc2FmZUFkZChhLm1fdmFsdWUs
IGIubV92YWx1ZSwgYS5tX3ZhbHVlKSkgewogICAgICAgICBpZiAoY29tbW9uVGltZVNjYWxlID09
IDEpCi0gICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+IDAgPyBwb3NpdGl2ZUluZmlu
aXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgICAgIHJldHVybiBh
Lm1fdmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVU
aW1lKCk7CiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOwogICAgICAgICBhLnNldFRpbWVT
Y2FsZShjb21tb25UaW1lU2NhbGUpOwogICAgICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1l
U2NhbGUpOwpAQCAtMjE1LDcgKzIwMyw3IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9y
Kyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICByZXR1cm4gYTsKIH0KIAotTWVkaWFU
aW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAorTWVk
aWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKE1lZGlhVGltZSByaHMpIGNvbnN0CiB7CiAgICAg
aWYgKHJocy5pc0ludmFsaWQoKSB8fCBpc0ludmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGludmFs
aWRUaW1lKCk7CkBAIC0yMzYsNyArMjI0LDcgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0
b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgICAgICByZXR1cm4gbmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKTsKIAogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpICYmIHJocy5oYXNEb3Vi
bGVWYWx1ZSgpKQotICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1f
dGltZVZhbHVlQXNEb3VibGUgLSByaHMubV90aW1lVmFsdWVBc0RvdWJsZSk7CisgICAgICAgIHJl
dHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV92YWx1ZUFzRG91YmxlIC0gcmhzLm1f
dmFsdWVBc0RvdWJsZSk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSB8fCByaHMuaGFzRG91
YmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSh0
b0RvdWJsZSgpIC0gcmhzLnRvRG91YmxlKCkpOwpAQCAtMjQ1LDEzICsyMzMsMTMgQEAgTWVkaWFU
aW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAg
IE1lZGlhVGltZSBiID0gcmhzOwogCiAgICAgdWludDMyX3QgY29tbW9uVGltZVNjYWxlOwotICAg
IGlmICghbGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3RpbWVTY2FsZSwgcmhzLm1fdGltZVNj
YWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2Nh
bGUpCisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKHRoaXMtPm1fc2NhbGUsIHJocy5tX3Nj
YWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2Nh
bGUpCiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSA9IE1heGltdW1UaW1lU2NhbGU7CiAgICAgYS5z
ZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICBiLnNldFRpbWVTY2FsZShjb21tb25U
aW1lU2NhbGUpOwotICAgIHdoaWxlICghc2FmZVN1YihhLm1fdGltZVZhbHVlLCBiLm1fdGltZVZh
bHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgIHdoaWxlICghc2FmZVN1YihhLm1fdmFsdWUsIGIu
bV92YWx1ZSwgYS5tX3ZhbHVlKSkgewogICAgICAgICBpZiAoY29tbW9uVGltZVNjYWxlID09IDEp
Ci0gICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+IDAgPyBwb3NpdGl2ZUluZmluaXRl
VGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgICAgIHJldHVybiBhLm1f
dmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCk7CiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOwogICAgICAgICBhLnNldFRpbWVTY2Fs
ZShjb21tb25UaW1lU2NhbGUpOwogICAgICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2Nh
bGUpOwpAQCAtMjc1LDkgKzI2Myw5IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLSgp
IGNvbnN0CiAKICAgICBNZWRpYVRpbWUgbmVnYXRpdmVUaW1lID0gKnRoaXM7CiAgICAgaWYgKG5l
Z2F0aXZlVGltZS5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICBuZWdhdGl2ZVRpbWUubV90aW1l
VmFsdWVBc0RvdWJsZSA9IC1uZWdhdGl2ZVRpbWUubV90aW1lVmFsdWVBc0RvdWJsZTsKKyAgICAg
ICAgbmVnYXRpdmVUaW1lLm1fdmFsdWVBc0RvdWJsZSA9IC1uZWdhdGl2ZVRpbWUubV92YWx1ZUFz
RG91YmxlOwogICAgIGVsc2UKLSAgICAgICAgbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlID0gLW5l
Z2F0aXZlVGltZS5tX3RpbWVWYWx1ZTsKKyAgICAgICAgbmVnYXRpdmVUaW1lLm1fdmFsdWUgPSAt
bmVnYXRpdmVUaW1lLm1fdmFsdWU7CiAgICAgcmV0dXJuIG5lZ2F0aXZlVGltZTsKIH0KIApAQCAt
MzA3LDE0ICsyOTUsMTQgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IqKGludDMyX3Qg
cmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBhID0gKnRoaXM7CiAKICAgICBpZiAoYS5oYXNEb3Vi
bGVWYWx1ZSgpKSB7Ci0gICAgICAgIGEubV90aW1lVmFsdWVBc0RvdWJsZSAqPSByaHM7CisgICAg
ICAgIGEubV92YWx1ZUFzRG91YmxlICo9IHJoczsKICAgICAgICAgcmV0dXJuIGE7CiAgICAgfQog
Ci0gICAgd2hpbGUgKCFzYWZlTXVsdGlwbHkoYS5tX3RpbWVWYWx1ZSwgcmhzLCBhLm1fdGltZVZh
bHVlKSkgewotICAgICAgICBpZiAoYS5tX3RpbWVTY2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0
dXJuIHNpZ251bShhLm1fdGltZVZhbHVlKSA9PSBzaWdudW0ocmhzKSA/IHBvc2l0aXZlSW5maW5p
dGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwotICAgICAgICBhLnNldFRpbWVTY2Fs
ZShhLm1fdGltZVNjYWxlIC8gMik7CisgICAgd2hpbGUgKCFzYWZlTXVsdGlwbHkoYS5tX3ZhbHVl
LCByaHMsIGEubV92YWx1ZSkpIHsKKyAgICAgICAgaWYgKGEubV9zY2FsZSA9PSAxKQorICAgICAg
ICAgICAgcmV0dXJuIHNpZ251bShhLm1fdmFsdWUpID09IHNpZ251bShyaHMpID8gcG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIGEuc2V0VGlt
ZVNjYWxlKGEubV9zY2FsZSAvIDIpOwogICAgIH0KIAogICAgIHJldHVybiBhOwpAQCAtMzIyLDE3
NiArMzEwLDEwOSBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvciooaW50MzJfdCByaHMp
IGNvbnN0CiAKIGJvb2wgTWVkaWFUaW1lOjpvcGVyYXRvciEoKSBjb25zdAogewotICAgIHJldHVy
biAobV90aW1lRmxhZ3MgPT0gVmFsaWQgJiYgIW1fdGltZVZhbHVlKQotICAgICAgICB8fCAobV90
aW1lRmxhZ3MgPT0gKFZhbGlkIHwgRG91YmxlVmFsdWUpICYmICFtX3RpbWVWYWx1ZUFzRG91Ymxl
KQotICAgICAgICB8fCBpc0ludmFsaWQoKTsKKyAgICByZXR1cm4gaXNJbnZhbGlkKCkgfHwgKGhh
c0RvdWJsZVZhbHVlKCkgPyAhbV92YWx1ZUFzRG91YmxlIDogIW1fdmFsdWUpOwogfQogCiBNZWRp
YVRpbWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewotICAgIHJldHVybiAhKG1fdGltZUZsYWdz
ID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAgICAgJiYgIShtX3RpbWVGbGFncyA9PSAo
VmFsaWQgfCBEb3VibGVWYWx1ZSkgJiYgIW1fdGltZVZhbHVlQXNEb3VibGUpCi0gICAgICAgICYm
ICFpc0ludmFsaWQoKTsKKyAgICByZXR1cm4gISEqdGhpczsKIH0KIAotTWVkaWFUaW1lOjpDb21w
YXJpc29uRmxhZ3MgTWVkaWFUaW1lOjpjb21wYXJlKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25z
dAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdz
IG9yZGVyaW5nKFQgYSwgVCBiKQogewotICAgIGF1dG8gYW5kRmxhZ3MgPSBtX3RpbWVGbGFncyAm
IHJocy5tX3RpbWVGbGFnczsKLSAgICBpZiAoYW5kRmxhZ3MgJiAoUG9zaXRpdmVJbmZpbml0ZSB8
IE5lZ2F0aXZlSW5maW5pdGUgfCBJbmRlZmluaXRlKSkKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87
Ci0KLSAgICBhdXRvIG9yRmxhZ3MgPSBtX3RpbWVGbGFncyB8IHJocy5tX3RpbWVGbGFnczsKLSAg
ICBpZiAoIShvckZsYWdzICYgVmFsaWQpKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsKLQotICAg
IGlmICghKGFuZEZsYWdzICYgVmFsaWQpKQotICAgICAgICByZXR1cm4gaXNJbnZhbGlkKCkgPyBH
cmVhdGVyVGhhbiA6IExlc3NUaGFuOwotCi0gICAgaWYgKG9yRmxhZ3MgJiBOZWdhdGl2ZUluZmlu
aXRlKQotICAgICAgICByZXR1cm4gaXNOZWdhdGl2ZUluZmluaXRlKCkgPyBMZXNzVGhhbiA6IEdy
ZWF0ZXJUaGFuOwotCi0gICAgaWYgKG9yRmxhZ3MgJiBQb3NpdGl2ZUluZmluaXRlKQotICAgICAg
ICByZXR1cm4gaXNQb3NpdGl2ZUluZmluaXRlKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwot
Ci0gICAgaWYgKG9yRmxhZ3MgJiBJbmRlZmluaXRlKQotICAgICAgICByZXR1cm4gaXNJbmRlZmlu
aXRlKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwotCi0gICAgaWYgKGFuZEZsYWdzICYgRG91
YmxlVmFsdWUpIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlQXNEb3VibGUgPT0gcmhzLm1fdGlt
ZVZhbHVlQXNEb3VibGUpCi0gICAgICAgICAgICByZXR1cm4gRXF1YWxUbzsKLQotICAgICAgICBy
ZXR1cm4gbV90aW1lVmFsdWVBc0RvdWJsZSA8IHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlID8gTGVz
c1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9Ci0KLSAgICBpZiAob3JGbGFncyAmIERvdWJsZVZh
bHVlKSB7Ci0gICAgICAgIGRvdWJsZSBhID0gdG9Eb3VibGUoKTsKLSAgICAgICAgZG91YmxlIGIg
PSByaHMudG9Eb3VibGUoKTsKLSAgICAgICAgaWYgKGEgPiBiKQotICAgICAgICAgICAgcmV0dXJu
IEdyZWF0ZXJUaGFuOwotICAgICAgICBpZiAoYSA8IGIpCi0gICAgICAgICAgICByZXR1cm4gTGVz
c1RoYW47Ci0gICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgIH0KLQotICAgIGlmICgobV90aW1l
VmFsdWUgPCAwKSAhPSAocmhzLm1fdGltZVZhbHVlIDwgMCkpCi0gICAgICAgIHJldHVybiBtX3Rp
bWVWYWx1ZSA8IDAgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOworICAgIHJldHVybiBhIDwgYiA/
IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzOjpMZXNzVGhhbiA6IGIgPCBhID8gTWVkaWFUaW1l
OjpDb21wYXJpc29uRmxhZ3M6OkdyZWF0ZXJUaGFuIDogTWVkaWFUaW1lOjpDb21wYXJpc29uRmxh
Z3M6OkVxdWFsVG87Cit9CiAKLSAgICBpZiAoIW1fdGltZVZhbHVlICYmICFyaHMubV90aW1lVmFs
dWUpCi0gICAgICAgIHJldHVybiBFcXVhbFRvOworTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3Mg
b3JkZXJpbmcoTWVkaWFUaW1lIGEsIE1lZGlhVGltZSBiKQoreworICAgIGF1dG8gb3JkZXJpbmdD
bGFzcyA9IFtdKE1lZGlhVGltZSB0aW1lKSB7CisgICAgICAgIGlmICh0aW1lLmlzTmVnYXRpdmVJ
bmZpbml0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAodGltZS5pc0lu
ZGVmaW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAodGltZS5pc1Bv
c2l0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICBpZiAodGlt
ZS5pc0ludmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9OworICAgIGF1dG8gYUNsYXNzID0gb3JkZXJpbmdDbGFzcyhhKTsKKyAgICBhdXRvIGJD
bGFzcyA9IG9yZGVyaW5nQ2xhc3MoYik7CisgICAgaWYgKGFDbGFzcyB8fCBiQ2xhc3MpCisgICAg
ICAgIHJldHVybiBvcmRlcmluZyhhQ2xhc3MsIGJDbGFzcyk7CiAKLSAgICBpZiAobV90aW1lU2Nh
bGUgPT0gcmhzLm1fdGltZVNjYWxlKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA9PSByaHMu
bV90aW1lVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAgICAgICAgcmV0dXJu
IG1fdGltZVZhbHVlIDwgcmhzLm1fdGltZVZhbHVlID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsK
LSAgICB9CisgICAgaWYgKGEuaGFzRG91YmxlVmFsdWUoKSB8fCBiLmhhc0RvdWJsZVZhbHVlKCkp
CisgICAgICAgIHJldHVybiBvcmRlcmluZyhhLnRvRG91YmxlKCksIGIudG9Eb3VibGUoKSk7CiAK
LSAgICBpZiAobV90aW1lVmFsdWUgPT0gcmhzLm1fdGltZVZhbHVlKQotICAgICAgICByZXR1cm4g
bV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwor
ICAgIGlmICgoYS5tX3ZhbHVlIDwgMCkgIT0gKGIubV92YWx1ZSA8IDApIHx8ICFhLm1fdmFsdWUg
fHwgIWIubV92YWx1ZSB8fCBhLm1fc2NhbGUgPT0gYi5tX3NjYWxlKQorICAgICAgICByZXR1cm4g
b3JkZXJpbmcoYS5tX3ZhbHVlLCBiLm1fdmFsdWUpOwogCi0gICAgaWYgKG1fdGltZVZhbHVlID49
IDApIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlIDwgcmhzLm1fdGltZVZhbHVlICYmIG1fdGlt
ZVNjYWxlID4gcmhzLm1fdGltZVNjYWxlKQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwor
ICAgIGlmIChhLm1fdmFsdWUgPT0gYi5tX3ZhbHVlKQorICAgICAgICByZXR1cm4gb3JkZXJpbmco
Yi5tX3NjYWxlLCBhLm1fc2NhbGUpOwogCi0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA+IHJocy5t
X3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA8IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAg
IHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICBpZiAoYS5tX3ZhbHVlID49IDApIHsKKyAgICAgICAg
aWYgKGEubV92YWx1ZSA8IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPiBiLm1fc2NhbGUpCisgICAg
ICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpMZXNzVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1
ZSA+IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1
cm4gTWVkaWFUaW1lOjpHcmVhdGVyVGhhbjsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAobV90
aW1lVmFsdWUgPCByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUgPCByaHMubV90aW1lU2Nh
bGUpCi0gICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47Ci0KLSAgICAgICAgaWYgKG1fdGltZVZh
bHVlID4gcmhzLm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlID4gcmhzLm1fdGltZVNjYWxlKQot
ICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworICAgICAgICBpZiAoYS5tX3ZhbHVlIDwg
Yi5tX3ZhbHVlICYmIGEubV9zY2FsZSA8IGIubV9zY2FsZSkKKyAgICAgICAgICAgIHJldHVybiBN
ZWRpYVRpbWU6Okxlc3NUaGFuOworICAgICAgICBpZiAoYS5tX3ZhbHVlID4gYi5tX3ZhbHVlICYm
IGEubV9zY2FsZSA+IGIubV9zY2FsZSkKKyAgICAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6Okdy
ZWF0ZXJUaGFuOwogICAgIH0KIAotICAgIGludDY0X3QgbGhzRmFjdG9yOwotICAgIGludDY0X3Qg
cmhzRmFjdG9yOwotICAgIGlmIChzYWZlTXVsdGlwbHkobV90aW1lVmFsdWUsIHN0YXRpY19jYXN0
PGludDY0X3Q+KHJocy5tX3RpbWVTY2FsZSksIGxoc0ZhY3RvcikKLSAgICAgICAgJiYgc2FmZU11
bHRpcGx5KHJocy5tX3RpbWVWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4obV90aW1lU2NhbGUp
LCByaHNGYWN0b3IpKSB7Ci0gICAgICAgIGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9yKQotICAg
ICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgICAgIHJldHVybiBsaHNGYWN0b3IgPCByaHNG
YWN0b3IgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotICAgIH0KKyAgICBpbnQ2NF90IGFQcm9k
dWN0OworICAgIGludDY0X3QgYlByb2R1Y3Q7CisgICAgaW50NjRfdCBhVGltZVNjYWxlID0gYS5t
X3NjYWxlOworICAgIGludDY0X3QgYlRpbWVTY2FsZSA9IGIubV9zY2FsZTsKKyAgICBpZiAoc2Fm
ZU11bHRpcGx5KGEubV92YWx1ZSwgYVRpbWVTY2FsZSwgYVByb2R1Y3QpICYmIHNhZmVNdWx0aXBs
eShiLm1fdmFsdWUsIGJUaW1lU2NhbGUsIGJQcm9kdWN0KSkKKyAgICAgICAgcmV0dXJuIG9yZGVy
aW5nKGFQcm9kdWN0LCBiUHJvZHVjdCk7CisKKyAgICBhdXRvIGFRdW90aWVudCA9IGEubV92YWx1
ZSAvIGEubV9zY2FsZTsKKyAgICBhdXRvIGJRdW90aWVudCA9IGIubV92YWx1ZSAvIGIubV9zY2Fs
ZTsKKyAgICBpZiAoYVF1b3RpZW50ICE9IGJRdW90aWVudCkKKyAgICAgICAgcmV0dXJuIG9yZGVy
aW5nKGFRdW90aWVudCwgYlF1b3RpZW50KTsKIAotICAgIGludDY0X3QgcmhzV2hvbGUgPSByaHMu
bV90aW1lVmFsdWUgLyByaHMubV90aW1lU2NhbGU7Ci0gICAgaW50NjRfdCBsaHNXaG9sZSA9IG1f
dGltZVZhbHVlIC8gbV90aW1lU2NhbGU7Ci0gICAgaWYgKGxoc1dob2xlID4gcmhzV2hvbGUpCi0g
ICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICBpZiAobGhzV2hvbGUgPCByaHNXaG9sZSkK
LSAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgaW50NjRfdCByaHNSZW1haW4gPSByaHMu
bV90aW1lVmFsdWUgJSByaHMubV90aW1lU2NhbGU7Ci0gICAgaW50NjRfdCBsaHNSZW1haW4gPSBt
X3RpbWVWYWx1ZSAlIG1fdGltZVNjYWxlOwotICAgIGxoc0ZhY3RvciA9IGxoc1JlbWFpbiAqIHJo
cy5tX3RpbWVTY2FsZTsKLSAgICByaHNGYWN0b3IgPSByaHNSZW1haW4gKiBtX3RpbWVTY2FsZTsK
LQotICAgIGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9yKQotICAgICAgICByZXR1cm4gRXF1YWxU
bzsKLSAgICByZXR1cm4gbGhzRmFjdG9yID4gcmhzRmFjdG9yID8gR3JlYXRlclRoYW4gOiBMZXNz
VGhhbjsKKyAgICBhdXRvIGFSZW1haW5kZXIgPSBhLm1fdmFsdWUgJSBhLm1fc2NhbGUgKiBhLm1f
c2NhbGU7CisgICAgYXV0byBiUmVtYWluZGVyID0gYi5tX3ZhbHVlICUgYi5tX3NjYWxlICogYi5t
X3NjYWxlOworICAgIHJldHVybiBvcmRlcmluZyhhUmVtYWluZGVyLCBiUmVtYWluZGVyKTsKIH0K
IAotYm9vbCBNZWRpYVRpbWU6OmlzQmV0d2Vlbihjb25zdCBNZWRpYVRpbWUmIGEsIGNvbnN0IE1l
ZGlhVGltZSYgYikgY29uc3QKK2Jvb2wgTWVkaWFUaW1lOjppc0JldHdlZW4oTWVkaWFUaW1lIGEs
IE1lZGlhVGltZSBiKSBjb25zdAogewogICAgIGlmIChhID4gYikKICAgICAgICAgcmV0dXJuICp0
aGlzID4gYiAmJiAqdGhpcyA8IGE7CiAgICAgcmV0dXJuICp0aGlzID4gYSAmJiAqdGhpcyA8IGI7
CiB9CiAKLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjp6ZXJvVGltZSgpCi17Ci0gICAgc3Rh
dGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsK
LX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkKLXsKLSAgICBz
dGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoLTEsIDEsIDApOwotICAgIHJldHVybiB0aW1lOwot
fQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKQot
ewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgwLCAxLCBQb3NpdGl2ZUluZmluaXRl
IHwgVmFsaWQpOwotICAgIHJldHVybiB0aW1lOwotfQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlh
VGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKQotewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRp
bWUgdGltZSgtMSwgMSwgTmVnYXRpdmVJbmZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGlt
ZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkKLXsK
LSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgSW5kZWZpbml0ZSB8IFZhbGlk
KTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotTWVkaWFUaW1lIE1lZGlhVGltZTo6dG9UaW1lU2Nh
bGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ0ZsYWdzIGZsYWdzKSBjb25zdAorTWVkaWFU
aW1lIE1lZGlhVGltZTo6dG9UaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ01v
ZGUgbW9kZSkgY29uc3QKIHsKICAgICBNZWRpYVRpbWUgcmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVz
dWx0LnNldFRpbWVTY2FsZSh0aW1lU2NhbGUsIGZsYWdzKTsKKyAgICByZXN1bHQuc2V0VGltZVNj
YWxlKHRpbWVTY2FsZSwgbW9kZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBNZWRp
YVRpbWU6OnNldFRpbWVTY2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nRmxhZ3MgZmxh
Z3MpCit2b2lkIE1lZGlhVGltZTo6c2V0VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91
bmRpbmdNb2RlIG1vZGUpCiB7CiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAg
KnRoaXMgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV90aW1lVmFsdWVBc0RvdWJsZSwg
dGltZVNjYWxlKTsKKyAgICAgICAgKnRoaXMgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
bV92YWx1ZUFzRG91YmxlLCB0aW1lU2NhbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKCF0aW1lU2NhbGUpIHsKLSAgICAgICAgKnRoaXMgPSBtX3RpbWVWYWx1ZSA8IDAgPyBu
ZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAg
KnRoaXMgPSBtX3ZhbHVlIDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHRpbWVTY2Fs
ZSA9PSBtX3RpbWVTY2FsZSkKKyAgICBpZiAodGltZVNjYWxlID09IG1fc2NhbGUpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHRpbWVTY2FsZSA9IHN0ZDo6bWluKE1heGltdW1UaW1lU2NhbGUsIHRp
bWVTY2FsZSk7CiAKLSAgICBJbnQxMjggbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxJbnQxMjg+KG1f
dGltZVZhbHVlKSAqIHRpbWVTY2FsZTsKLSAgICBpbnQ2NF90IHJlbWFpbmRlciA9IHN0YXRpY19j
YXN0PGludDY0X3Q+KG5ld1ZhbHVlICUgbV90aW1lU2NhbGUpOwotICAgIG5ld1ZhbHVlID0gbmV3
VmFsdWUgLyBtX3RpbWVTY2FsZTsKKyAgICBJbnQxMjggbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxJ
bnQxMjg+KG1fdmFsdWUpICogdGltZVNjYWxlOworICAgIGludDY0X3QgcmVtYWluZGVyID0gc3Rh
dGljX2Nhc3Q8aW50NjRfdD4obmV3VmFsdWUgJSBtX3NjYWxlKTsKKyAgICBuZXdWYWx1ZSA9IG5l
d1ZhbHVlIC8gbV9zY2FsZTsKIAogICAgIGlmIChuZXdWYWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1pbigpKSB7CiAgICAgICAgICp0aGlzID0gbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKTsKQEAgLTUwMyw0MiArNDI0LDQyIEBAIHZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUo
dWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ0ZsYWdzIGZsYWdzKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV90aW1lVmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1
ZSk7Ci0gICAgc3RkOjpzd2FwKG1fdGltZVNjYWxlLCB0aW1lU2NhbGUpOworICAgIG1fdmFsdWUg
PSBuZXdWYWx1ZTsKKyAgICBhdXRvIG9sZFRpbWVTY2FsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9zY2Fs
ZSwgdGltZVNjYWxlKTsKIAogICAgIGlmICghcmVtYWluZGVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3RpbWVGbGFncyB8PSBIYXNCZWVuUm91bmRlZDsKLSAgICBzd2l0Y2ggKGZsYWdzKSB7
Ci0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvOgotICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8aW50NjRfdD4obGxhYnMocmVtYWluZGVyKSkgKiAyID49IHN0YXRpY19jYXN0
PGludDY0X3Q+KHRpbWVTY2FsZSkpIHsKKyAgICBtX2ZsYWdzLmFkZChIYXNCZWVuUm91bmRlZCk7
CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJv
bVplcm86CisgICAgICAgIGlmIChzdGQ6OmFicyhyZW1haW5kZXIpICogMiA+PSBvbGRUaW1lU2Nh
bGUpIHsKICAgICAgICAgICAgIC8vIHJvdW5kIHVwIChhd2F5IGZyb20gemVybykKICAgICAgICAg
ICAgIGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlLS07Cisg
ICAgICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIG1fdGltZVZhbHVlKys7CisgICAgICAgICAgICAgICAgKyttX3ZhbHVlOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvOgor
ICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUb3dhcmRaZXJvOgogICAgICAgICBicmVhazsKIAotICAg
IGNhc2UgUm91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2Rl
OjpBd2F5RnJvbVplcm86CiAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAg
bV90aW1lVmFsdWUtLTsKKyAgICAgICAgICAgIC0tbV92YWx1ZTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAg
YnJlYWs7CiAKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CiAgICAgICAg
IGlmIChyZW1haW5kZXIgPiAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAg
ICAgICsrbV92YWx1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgUm91bmRp
bmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6
VG93YXJkTmVnYXRpdmVJbmZpbml0eToKICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAg
ICAgICAgICBtX3RpbWVWYWx1ZS0tOworICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICBi
cmVhazsKICAgICB9CiB9CkBAIC01NDcsNyArNDY4LDcgQEAgdm9pZCBNZWRpYVRpbWU6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoInsiKTsKICAgICBpZiAo
IWhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIG91dC5wcmludChtX3RpbWVWYWx1ZSwgIi8iLCBt
X3RpbWVTY2FsZSwgIiA9ICIpOworICAgICAgICBvdXQucHJpbnQobV92YWx1ZSwgIi8iLCBtX3Nj
YWxlLCAiID0gIik7CiAgICAgb3V0LnByaW50KHRvRG91YmxlKCksICJ9Iik7CiB9CiAKQEAgLTU1
Niw3ICs0NzcsNyBAQCBTdHJpbmcgTWVkaWFUaW1lOjp0b1N0cmluZygpIGNvbnN0CiAgICAgY29u
c3QgY2hhciogaW52YWxpZCA9IGlzSW52YWxpZCgpID8gIiwgaW52YWxpZCIgOiAiIjsKICAgICBp
ZiAoaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b0Rv
dWJsZSgpLCBpbnZhbGlkLCAnfScpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV90aW1l
VmFsdWUsICcvJywgbV90aW1lU2NhbGUsICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScp
OworICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV92YWx1ZSwgJy8nLCBtX3NjYWxlLCAiID0g
IiwgdG9Eb3VibGUoKSwgaW52YWxpZCwgJ30nKTsKIH0KIAogUmVmPEpTT046Ok9iamVjdD4gTWVk
aWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdApAQCAtNTc5LDkgKzUwMCw5IEBAIFJlZjxKU09O
OjpPYmplY3Q+IE1lZGlhVGltZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKICAgICBlbHNlCiAgICAg
ICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfcywgdG9Eb3VibGUoKSk7CiAKLSAgICBvYmpl
Y3QtPnNldERvdWJsZSgibnVtZXJhdG9yIl9zLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZh
bHVlKSk7Ci0gICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRvciJfcywgbV90aW1lU2Nh
bGUpOwotICAgIG9iamVjdC0+c2V0SW50ZWdlcigiZmxhZ3MiX3MsIG1fdGltZUZsYWdzKTsKKyAg
ICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9yIl9zLCBtX3ZhbHVlKTsKKyAgICBvYmplY3Qt
PnNldEludGVnZXIoImRlbm9taW5hdG9yIl9zLCBtX3NjYWxlKTsKKyAgICBvYmplY3QtPnNldElu
dGVnZXIoImZsYWdzIl9zLCBtX2ZsYWdzLnRvUmF3KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsK
IH0KQEAgLTU5MSwzMyArNTEyLDI4IEBAIFN0cmluZyBNZWRpYVRpbWU6OnRvSlNPTlN0cmluZygp
IGNvbnN0CiAgICAgcmV0dXJuIHRvSlNPTk9iamVjdCgpLT50b0pTT05TdHJpbmcoKTsKIH0KIAot
TWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocykKK01lZGlhVGltZSBhYnMoTWVkaWFU
aW1lIHRpbWUpCiB7Ci0gICAgaWYgKHJocy5pc0ludmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIE1l
ZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKLSAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgp
IHx8IHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5m
aW5pdGUoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUo
KTsKLSAgICBpZiAocmhzLmhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUoZmFicyhyaHMubV90aW1lVmFsdWVBc0RvdWJsZSkpOwotCi0g
ICAgTWVkaWFUaW1lIHZhbCA9IHJoczsKLSAgICB2YWwubV90aW1lVmFsdWUgPSBzdGQ6OmFicyhy
aHMubV90aW1lVmFsdWUpOwotICAgIHJldHVybiB2YWw7CisgICAgaWYgKHRpbWUuaGFzRG91Ymxl
VmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGQ6
OmFicyh0aW1lLm1fdmFsdWVBc0RvdWJsZSkpOworICAgIE1lZGlhVGltZSByZXN1bHQgPSB0aW1l
OworICAgIHJlc3VsdC5tX3ZhbHVlID0gc3RkOjphYnMocmVzdWx0Lm1fdmFsdWUpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIFN0cmluZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkg
Y29uc3QKIHsKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KICAg
ICBvYmplY3QtPnNldE9iamVjdCgic3RhcnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKICAg
ICBvYmplY3QtPnNldE9iamVjdCgiZW5kIl9zLCBlbmQudG9KU09OT2JqZWN0KCkpOwotCiAgICAg
cmV0dXJuIG9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCiAKLVRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBNZWRpYVRpbWUm
IHRpbWUpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgTWVkaWFU
aW1lIHRpbWUpCiB7CiAgICAgcmV0dXJuIHN0cmVhbSA8PCB0aW1lLnRvSlNPTlN0cmluZygpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0
Zi9NZWRpYVRpbWUuaAppbmRleCA3MWFjZjMyOWViMzk4OTMzNTEyZmQ3ZjNmNThkNjBiZWNmZjIz
YzUwLi4xMDQyODE0Y2ViNWVmZjNjMWNjNWMwNDA3OGQ3YjYyYmU5ZDMyZTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRp
bWUuaApAQCAtMzAsMjEgKzMwLDE2IEBACiAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bWF0
aC5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50U3RyZWFtOwogCi1jbGFzcyBXVEZfRVhQT1JU
X1BSSVZBVEUgTWVkaWFUaW1lIGZpbmFsIHsKK2NsYXNzIE1lZGlhVGltZSBmaW5hbCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZW51bSB7CisgICAgZW51bSBG
bGFnIDogdWludDhfdCB7CiAgICAgICAgIFZhbGlkID0gMSA8PCAwLAogICAgICAgICBIYXNCZWVu
Um91bmRlZCA9IDEgPDwgMSwKICAgICAgICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwKQEAg
LTUyLDY3ICs0Nyw2NSBAQCBwdWJsaWM6CiAgICAgICAgIEluZGVmaW5pdGUgPSAxIDw8IDQsCiAg
ICAgICAgIERvdWJsZVZhbHVlID0gMSA8PCA1LAogICAgIH07Ci0KLSAgICBjb25zdGV4cHIgTWVk
aWFUaW1lKCk7Ci0gICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJf
dCBzY2FsZSwgdWludDhfdCBmbGFncyA9IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUoY29uc3QgTWVk
aWFUaW1lJiByaHMpOwotCi0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxv
YXQgZmxvYXRUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9h
dCBmbG9hdFRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0gICAgc3RhdGljIE1lZGlhVGltZSBj
cmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1l
IGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7
Ci0KLSAgICBmbG9hdCB0b0Zsb2F0KCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKCkgY29u
c3Q7Ci0KLSAgICBNZWRpYVRpbWUmIG9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocyk7Ci0g
ICAgTWVkaWFUaW1lJiBvcGVyYXRvcis9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAq
dGhpcyA9ICp0aGlzICsgcmhzOyB9Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KGNvbnN0IE1l
ZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzIC0gcmhzOyB9Ci0gICAgTWVkaWFU
aW1lIG9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1l
IG9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9w
ZXJhdG9yLSgpIGNvbnN0OwotICAgIE1lZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJu
IGNvbXBhcmUocmhzKSA9PSBMZXNzVGhhbjsgfQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE1l
ZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47
IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0
dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gRXF1YWxUbzsg
fQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1
cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3Qg
TWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA8PSBFcXVhbFRvOyB9
Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVmIGVudW0geworICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUo
KSA6IE1lZGlhVGltZSB7IGludDY0X3QgeyB9LCBEZWZhdWx0VGltZVNjYWxlIH0geyB9CisgICAg
Y29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgT3B0aW9u
U2V0PEZsYWc+ID0geyBWYWxpZCB9KTsKKworICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0
aEZsb2F0KGZsb2F0IHZhbHVlKTsKKyAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9h
dChmbG9hdCB2YWx1ZSwgdWludDMyX3Qgc2NhbGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2
YWx1ZSwgdWludDMyX3Qgc2NhbGUpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IHRv
RmxvYXQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvRG91YmxlKCkg
Y29uc3Q7CisKKyAgICBNZWRpYVRpbWUmIG9wZXJhdG9yKz0oTWVkaWFUaW1lIHJocykgeyByZXR1
cm4gKnRoaXMgPSAqdGhpcyArIHJoczsgfQorICAgIE1lZGlhVGltZSYgb3BlcmF0b3ItPShNZWRp
YVRpbWUgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzIC0gcmhzOyB9CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvcisoTWVkaWFUaW1lKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yLShNZWRpYVRpbWUpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgb3BlcmF0b3ItKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7CisgICAg
Ym9vbCBvcGVyYXRvcjwoTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMp
ID09IExlc3NUaGFuOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oTWVkaWFUaW1lIHJocykgY29uc3Qg
eyByZXR1cm4gY29tcGFyZShyaHMpID09IEdyZWF0ZXJUaGFuOyB9CisgICAgYm9vbCBvcGVyYXRv
ciE9KE1lZGlhVGltZSByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVhbFRv
OyB9CisgICAgYm9vbCBvcGVyYXRvcj09KE1lZGlhVGltZSByaHMpIGNvbnN0IHsgcmV0dXJuIGNv
bXBhcmUocmhzKSA9PSBFcXVhbFRvOyB9CisgICAgYm9vbCBvcGVyYXRvcj49KE1lZGlhVGltZSBy
aHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA+PSBFcXVhbFRvOyB9CisgICAgYm9vbCBv
cGVyYXRvcjw9KE1lZGlhVGltZSByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA8PSBF
cXVhbFRvOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsK
KworICAgIGVudW0gQ29tcGFyaXNvbkZsYWdzIHsKICAgICAgICAgTGVzc1RoYW4gPSAtMSwKICAg
ICAgICAgRXF1YWxUbyA9IDAsCiAgICAgICAgIEdyZWF0ZXJUaGFuID0gMSwKLSAgICB9IENvbXBh
cmlzb25GbGFnczsKKyAgICB9OworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFU
aW1lOjpDb21wYXJpc29uRmxhZ3Mgb3JkZXJpbmcoTWVkaWFUaW1lLCBNZWRpYVRpbWUpOworICAg
IENvbXBhcmlzb25GbGFncyBjb21wYXJlKE1lZGlhVGltZSBvdGhlcikgY29uc3QgeyByZXR1cm4g
b3JkZXJpbmcoKnRoaXMsIG90aGVyKTsgfQogCi0gICAgQ29tcGFyaXNvbkZsYWdzIGNvbXBhcmUo
Y29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OwotICAgIGJvb2wgaXNCZXR3ZWVuKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzQmV0d2VlbihNZWRpYVRpbWUsIE1lZGlhVGltZSkgY29uc3Q7CiAKLSAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIFZhbGlkOyB9CisgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhWYWxpZCk7IH0KICAg
ICBib29sIGlzSW52YWxpZCgpIGNvbnN0IHsgcmV0dXJuICFpc1ZhbGlkKCk7IH0KLSAgICBib29s
IGhhc0JlZW5Sb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBIYXNCZWVuUm91
bmRlZDsgfQotICAgIGJvb2wgaXNQb3NpdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lRmxhZ3MgJiBQb3NpdGl2ZUluZmluaXRlOyB9Ci0gICAgYm9vbCBpc05lZ2F0aXZlSW5maW5p
dGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIE5lZ2F0aXZlSW5maW5pdGU7IH0KLSAg
ICBib29sIGlzSW5kZWZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSW5kZWZp
bml0ZTsgfQorICAgIGJvb2wgaGFzQmVlblJvdW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdz
LmNvbnRhaW5zKEhhc0JlZW5Sb3VuZGVkKTsgfQorICAgIGJvb2wgaXNQb3NpdGl2ZUluZmluaXRl
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhQb3NpdGl2ZUluZmluaXRlKTsgfQor
ICAgIGJvb2wgaXNOZWdhdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250
YWlucyhOZWdhdGl2ZUluZmluaXRlKTsgfQorICAgIGJvb2wgaXNJbmRlZmluaXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFncy5jb250YWlucyhJbmRlZmluaXRlKTsgfQogICAgIGJvb2wgaXNGaW5p
dGUoKSBjb25zdCB7IHJldHVybiAhaXNJbnZhbGlkKCkgJiYgIWlzSW5kZWZpbml0ZSgpICYmICFp
c1Bvc2l0aXZlSW5maW5pdGUoKSAmJiAhaXNOZWdhdGl2ZUluZmluaXRlKCk7IH0KLSAgICBib29s
IGhhc0RvdWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBEb3VibGVWYWx1
ZTsgfQotICAgIHVpbnQ4X3QgdGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3M7
IH0KKyAgICBib29sIGhhc0RvdWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250
YWlucyhEb3VibGVWYWx1ZSk7IH0KKyAgICBPcHRpb25TZXQ8RmxhZz4gdGltZUZsYWdzKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFnczsgfQogCi0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgemVy
b1RpbWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBpbnZhbGlkVGltZSgpOwotICAg
IHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgc3Rh
dGljIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBzdGF0aWMg
Y29uc3QgTWVkaWFUaW1lJiBpbmRlZmluaXRlVGltZSgpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
TWVkaWFUaW1lIHplcm9UaW1lKCkgeyByZXR1cm4geyAwLCAxLCBWYWxpZCB9OyB9CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgaW52YWxpZFRpbWUoKSB7IHJldHVybiB7IC0xLCAxLCB7
IH0gfTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFUaW1lIHBvc2l0aXZlSW5maW5pdGVU
aW1lKCkgeyByZXR1cm4geyAwLCAxLCB7IFBvc2l0aXZlSW5maW5pdGUsIFZhbGlkIH0gfTsgfQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFUaW1lIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgeyBy
ZXR1cm4geyAtMSwgMSwgeyBOZWdhdGl2ZUluZmluaXRlLCBWYWxpZCB9IH07IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIE1lZGlhVGltZSBpbmRlZmluaXRlVGltZSgpIHsgcmV0dXJuIHsgMCwgMSwg
eyBJbmRlZmluaXRlLCBWYWxpZCB9IH07IH0KIAotICAgIGNvbnN0IGludDY0X3QmIHRpbWVWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVZhbHVlOyB9Ci0gICAgY29uc3QgdWludDMyX3QmIHRp
bWVTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVNjYWxlOyB9CisgICAgaW50NjRfdCB0aW1l
VmFsdWUoKSBjb25zdCB7IEFTU0VSVCghaGFzRG91YmxlVmFsdWUoKSk7IHJldHVybiBtX3ZhbHVl
OyB9CisgICAgdWludDMyX3QgdGltZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQog
Ci0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKLSAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7Ci0gICAgUmVmPEpT
T046Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVm
PEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7CiAKICAgICAvLyBNYWtlIHRoZSBm
b2xsb3dpbmcgY2FzdHMgZXJyb3JzOgogICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0ID0gZGVs
ZXRlOwpAQCAtMTIwLDkzICsxMTMsOTkgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIGludCgpIGNv
bnN0ID0gZGVsZXRlOwogICAgIE1lZGlhVGltZShpbnQpID0gZGVsZXRlOwogCi0gICAgZnJpZW5k
IFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsK
KyAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFUaW1lKTsK
IAotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7
Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1heGltdW1UaW1lU2NhbGU7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBjb25zdCB1aW50MzJfdCBNYXhpbXVtVGltZVNjYWxlOwog
Ci0gICAgZW51bSBjbGFzcyBSb3VuZGluZ0ZsYWdzIHsKLSAgICAgICAgSGFsZkF3YXlGcm9tWmVy
byA9IDAsCisgICAgZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgeworICAgICAgICBIYWxmQXdheUZy
b21aZXJvLAogICAgICAgICBUb3dhcmRaZXJvLAogICAgICAgICBBd2F5RnJvbVplcm8sCiAgICAg
ICAgIFRvd2FyZFBvc2l0aXZlSW5maW5pdHksCiAgICAgICAgIFRvd2FyZE5lZ2F0aXZlSW5maW5p
dHksCiAgICAgfTsKLQotICAgIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRp
bmdGbGFncyA9IFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3Qgc2NhbGUsIFJv
dW5kaW5nTW9kZSA9IFJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgTWVkaWFUaW1lJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRU
aW1lU2NhbGUodWludDMyX3QsIFJvdW5kaW5nRmxhZ3MgPSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdh
eUZyb21aZXJvKTsKKyAgICBlbnVtIFVzZURvdWJsZUZsYWcgeyBVc2VEb3VibGUgfTsKKyAgICBj
b25zdGV4cHIgTWVkaWFUaW1lKFVzZURvdWJsZUZsYWcsIGRvdWJsZSB2YWx1ZSk7CisKKyAgICB2
b2lkIHNldFRpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpI
YWxmQXdheUZyb21aZXJvKTsKIAogICAgIHVuaW9uIHsKLSAgICAgICAgaW50NjRfdCBtX3RpbWVW
YWx1ZTsKLSAgICAgICAgZG91YmxlIG1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAgIGludDY0
X3QgbV92YWx1ZTsKKyAgICAgICAgZG91YmxlIG1fdmFsdWVBc0RvdWJsZTsKICAgICB9OwotICAg
IHVpbnQzMl90IG1fdGltZVNjYWxlOwotICAgIHVpbnQ4X3QgbV90aW1lRmxhZ3M7CisgICAgdWlu
dDMyX3QgbV9zY2FsZSB7IERlZmF1bHRUaW1lU2NhbGUgfTsKKyAgICBPcHRpb25TZXQ8RmxhZz4g
bV9mbGFncyB7IFZhbGlkIH07CiB9OwogCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUo
KQotICAgIDogbV90aW1lVmFsdWUoMCkKLSAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRUaW1lU2Nh
bGUpCi0gICAgLCBtX3RpbWVGbGFncyhWYWxpZCkKLXsKLX0KLQotY29uc3RleHByIE1lZGlhVGlt
ZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50OF90IGZsYWdz
KQotICAgIDogbV90aW1lVmFsdWUodmFsdWUpCi0gICAgLCBtX3RpbWVTY2FsZShzY2FsZSkKLSAg
ICAsIG1fdGltZUZsYWdzKGZsYWdzKQotewotICAgIGlmIChzY2FsZSB8fCAhKGZsYWdzICYgVmFs
aWQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotfQorV1RGX0VYUE9SVF9Q
UklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFUaW1lKTsKIAotaW5saW5lIE1lZGlhVGltZSBvcGVy
YXRvciooaW50MzJfdCBsaHMsIGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiByaHMub3Bl
cmF0b3IqKGxocyk7IH0KLQotV1RGX0VYUE9SVF9QUklWQVRFIGV4dGVybiBNZWRpYVRpbWUgYWJz
KGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKLQotc3RydWN0IFdURl9FWFBPUlRfUFJJVkFURSBNZWRp
YVRpbWVSYW5nZSB7CitzdHJ1Y3QgTWVkaWFUaW1lUmFuZ2UgewogICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCi0gICAg
Y29uc3QgTWVkaWFUaW1lIHN0YXJ0OwotICAgIGNvbnN0IE1lZGlhVGltZSBlbmQ7CisgICAgTWVk
aWFUaW1lIHN0YXJ0OworICAgIE1lZGlhVGltZSBlbmQ7CiB9OwogCi10ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgotdm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
Y29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNj
YWxlLCBPcHRpb25TZXQ8RmxhZz4gZmxhZ3MpCisgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICwg
bV9zY2FsZShzY2FsZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCit7CisgICAgaWYgKCEoc2NhbGUg
fHwgIShmbGFncyAmIFZhbGlkKSkpCisgICAgICAgICp0aGlzID0gdmFsdWUgPCAwID8gbmVnYXRp
dmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IGlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGNvbnN0IFQmIGEsIE1lZGlh
VGltZSBiKQogewotICAgIGVuY29kZXIgPDwgbV90aW1lVmFsdWUgPDwgbV90aW1lU2NhbGUgPDwg
bV90aW1lRmxhZ3M7CisgICAgcmV0dXJuIGIgKiBhOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgotYm9vbCBNZWRpYVRpbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVRpbWUm
IHRpbWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIE1lZGlhVGltZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRp
bWUubV90aW1lVmFsdWUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lU2Nh
bGUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lRmxhZ3MpOworICAgIGVu
Y29kZXIgPDwgbV92YWx1ZSA8PCBtX3NjYWxlIDw8IG1fZmxhZ3M7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IGJvb2wgTWVkaWFUaW1lOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
TWVkaWFUaW1lJiB0aW1lKQoreworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fdmFs
dWUpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV9zY2FsZSkKKyAgICAgICAgJiYg
ZGVjb2Rlci5kZWNvZGUodGltZS5tX2ZsYWdzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFU
aW1lPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBNZWRpYVRpbWUmIHRpbWUp
IHsgcmV0dXJuIHRpbWUudG9KU09OU3RyaW5nKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKE1lZGlhVGltZSB0aW1lKSB7IHJldHVybiB0aW1lLnRvSlNPTlN0cmluZygpOyB9CiB9Owog
dGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lUmFuZ2U+IHsKICAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE1lZGlhVGltZVJhbmdlJiByYW5nZSkgeyByZXR1cm4g
cmFuZ2UudG9KU09OU3RyaW5nKCk7IH0KIH07CiAKICNpZm5kZWYgTkRFQlVHCi1XVEZfRVhQT1JU
X1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTWVkaWFU
aW1lJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgTWVkaWFUaW1lKTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PE1lZGlhVGltZTo6RmxhZz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAg
ICAgIE1lZGlhVGltZTo6RmxhZywKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpWYWxpZCwKKyAg
ICAgICAgTWVkaWFUaW1lOjpGbGFnOjpIYXNCZWVuUm91bmRlZCwKKyAgICAgICAgTWVkaWFUaW1l
OjpGbGFnOjpQb3NpdGl2ZUluZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6Ok5lZ2F0
aXZlSW5maW5pdGUsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6SW5kZWZpbml0ZSwKKyAgICAg
ICAgTWVkaWFUaW1lOjpGbGFnOjpEb3VibGVWYWx1ZQorICAgID47Cit9OworCiB9CiAKIHVzaW5n
IFdURjo6TWVkaWFUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oIGIv
U291cmNlL1dURi93dGYvU2Vjb25kcy5oCmluZGV4IGQyODJkYmJmNzE1YmU3NDI3ODllYTEwZjFj
Y2IyOWFkMTQ1MzU2NGYuLjFhMjk2NGM2ZGVhMTU1ZDkzNmUwNGI1MmUzMzIzZjMyYWYxNmI0ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9TZWNvbmRzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM3Miw0ICszNzMs
MyBAQCBpbmxpbmUgYm9vbCBpc2Zpbml0ZShXVEY6OlNlY29uZHMgc2Vjb25kcykKIH0gLy8gbmFt
ZXNwYWNlIHN0ZAogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpzZWNvbmRzX2xpdGVyYWxzOwotdXNp
bmcgV1RGOjpTZWNvbmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IGZk
NTU5YjI0MmRkZmZkNWU4ZDhmMTMzZWM0MTNiYTNhYjViNTI2NDcuLmU1YTNjYjYzNWVhZjFjYTg4
OWRkMjIwOTc1MjVmY2Q0MjhlMzE4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
LmgKQEAgLTMyLDkgKzMyLDkgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
TG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dh
bGxUaW1lLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmlu
ZGV4IDQ0OGRkZWUyMTYwZWYxOGNhNWUwNjYxMzkwZTU5OGQ1M2JjNTRkMmEuLjBjOGYzMzE1MGIx
NTM0ODRmZDRjMWM4YWQwMDFhNDlmYmJmYWFmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtOTIyLDcgKzkyMyw3IEBAIGJvb2wg
cG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpCiAKICAgICAvLyBUaGlzIGJsb2NrZWQgcG9ydCBs
aXN0IG1hdGNoZXMgdGhlIHBvcnQgYmxvY2tpbmcgdGhhdCBNb3ppbGxhIGltcGxlbWVudHMuCiAg
ICAgLy8gU2VlIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbmV0bGliL1BvcnRCYW5u
aW5nLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90
IGJsb2NrZWRQb3J0TGlzdFtdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgYmxv
Y2tlZFBvcnRMaXN0W10gPSB7CiAgICAgICAgIDEsICAgIC8vIHRjcG11eAogICAgICAgICA3LCAg
ICAvLyBlY2hvCiAgICAgICAgIDksICAgIC8vIGRpc2NhcmQKQEAgLTEwMDYsMTAgKzEwMDcsMTAg
QEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICAgICAgNjY5NywgLy8gSVJD
K1NTTCBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAgIDEwMDgwLCAvLyBhbWFuZGEKICAgICB9Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgYmxvY2tlZFBvcnRTZXQgeyBibG9j
a2VkUG9ydExpc3QgfTsKIAogICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tl
ZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJl
Z2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBp
ZiAoIXN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6
ZW5kKGJsb2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCisgICAgaWYgKCFibG9ja2VkUG9y
dFNldC5jb250YWlucygqcG9ydCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQWxs
b3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvV2FsbFRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1l
LmgKaW5kZXggNTQzOGNjMDFiNjFhYTlmNmM3YzQ1NmU1Zjg5MWU0NDY2ZjczM2JiYy4uMWNlOGQz
NzU1NjFkMjliNTg5NjFiZTNmY2YxOTM5NDA0ZmU4ODk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvV2FsbFRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9DbG9ja1R5cGUuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9HZW5lcmljVGltZU1peGluLmg+
CiAjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogCkBAIC05OSw1ICsxMDAsMyBAQCBpbmxpbmUgYm9v
bCBpc2Zpbml0ZShXVEY6OldhbGxUaW1lIHRpbWUpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIHN0ZAot
Ci11c2luZyBXVEY6OldhbGxUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudENvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50Q29kZXIuaAppbmRleCBhZmMzM2YzOGQ0MjMzNWJkOWU2MTI2YTRhNzhhNTA3MTBkYjI2
MDhhLi4yMDdmYTA0NDY5ZmI5NDgzODc2OGU5ZjQxYTJhMzI4OTdmNWNiMDhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaApAQCAtMjUsNyArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
b3B0aW9uYWw+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRp
bmdQT1NJWC5jcHAKaW5kZXggZDkyNDQ5MGQxYjU3ZjNlZTA2ZWU1ZWFkOGEyZDNjMTFjMjBjYjVk
MS4uNmQzNDBlNDZmMmIyODQ0MGIxMTNlZDc3MDllYTM3MTAxYTgyZjg1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5o
PgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvV29yZExvY2suaD4KIAogI2lmIE9TKExJTlVYKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRz
L1NpZ25hbHMuaAppbmRleCA4YjQwYzE0Yzg0MjNmZDRlY2JmNjM1MDZkNjBiZmYxYzBmZDg1NjBm
Li45ZjE4NmY2MzU0ODQxYTc1NWFiYzBkODllYzMzZjBiNWZlMGVmODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL1NpZ25hbHMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgT1MoVU5JWCkKIAorI2luY2x1
ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHR1cGxlPgogI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggMDY1
OTg0MDY4OWU0YWJiNTIyMGU1YmRkODA1MjNkNzQwMmY0YWNlMi4uODg4YmVmMzIzNjgyZWEyMjk5
N2VmNjQwOWEwZDcxZDg1NWZmZmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwCkBAIC0z
MiwzNyArMzIsMjggQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLXN0YXRpYyBib29sIENNVGltZUhh
c0ZsYWdzKGNvbnN0IENNVGltZSYgY21UaW1lLCB1aW50MzJfdCBmbGFncykKK01lZGlhVGltZSB0
b01lZGlhVGltZShDTVRpbWUgdGltZSkKIHsKLSAgICByZXR1cm4gKGNtVGltZS5mbGFncyAmIGZs
YWdzKSA9PSBmbGFnczsKKyAgICBPcHRpb25TZXQ8TWVkaWFUaW1lOjpGbGFnPiBmbGFnczsKKyAg
ICBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19WYWxpZCkgeworICAgICAgICBmbGFncy5h
ZGQoTWVkaWFUaW1lOjpWYWxpZCk7CisgICAgICAgIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZs
YWdzX1Bvc2l0aXZlSW5maW5pdHkpCisgICAgICAgICAgICBmbGFncy5hZGQoTWVkaWFUaW1lOjpQ
b3NpdGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVG
bGFnc19OZWdhdGl2ZUluZmluaXR5KQorICAgICAgICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6
TmVnYXRpdmVJbmZpbml0ZSk7CisgICAgICAgIGVsc2UgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1l
RmxhZ3NfSW5kZWZpbml0ZSkKKyAgICAgICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6OkluZGVm
aW5pdGUpOworICAgIH0KKyAgICByZXR1cm4gTWVkaWFUaW1lKHRpbWUudmFsdWUsIHRpbWUudGlt
ZXNjYWxlLCBmbGFncyk7CiB9CiAKLU1lZGlhVGltZSB0b01lZGlhVGltZShjb25zdCBDTVRpbWUm
IGNtVGltZSkKLXsKLSAgICB1aW50MzJfdCBmbGFncyA9IDA7Ci0gICAgaWYgKENNVGltZUhhc0Zs
YWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkKSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFU
aW1lOjpWYWxpZDsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3Nf
VmFsaWQgfCBrQ01UaW1lRmxhZ3NfSGFzQmVlblJvdW5kZWQpKQotICAgICAgICBmbGFncyB8PSBN
ZWRpYVRpbWU6Okhhc0JlZW5Sb3VuZGVkOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUs
IGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19Qb3NpdGl2ZUluZmluaXR5KSkKLSAg
ICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlOwotICAgIGlmIChDTVRp
bWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19OZWdh
dGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpOZWdhdGl2ZUluZmlu
aXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8
IGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpJ
bmRlZmluaXRlOwotCi0gICAgcmV0dXJuIE1lZGlhVGltZShjbVRpbWUudmFsdWUsIGNtVGltZS50
aW1lc2NhbGUsIGZsYWdzKTsKLX0KLQotQ01UaW1lIHRvQ01UaW1lKGNvbnN0IE1lZGlhVGltZSYg
bWVkaWFUaW1lKQorQ01UaW1lIHRvQ01UaW1lKE1lZGlhVGltZSBtZWRpYVRpbWUpCiB7CiAgICAg
Q01UaW1lIHRpbWU7Ci0KICAgICBpZiAobWVkaWFUaW1lLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAg
ICAgIHRpbWUgPSBDTVRpbWVNYWtlV2l0aFNlY29uZHMobWVkaWFUaW1lLnRvRG91YmxlKCksIG1l
ZGlhVGltZS50aW1lU2NhbGUoKSk7CiAgICAgZWxzZQogICAgICAgICB0aW1lID0gQ01UaW1lTWFr
ZShtZWRpYVRpbWUudGltZVZhbHVlKCksIG1lZGlhVGltZS50aW1lU2NhbGUoKSk7Ci0KICAgICBp
ZiAobWVkaWFUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxh
Z3NfVmFsaWQ7CiAgICAgaWYgKG1lZGlhVGltZS5oYXNCZWVuUm91bmRlZCgpKQpAQCAtNzEsNyAr
NjIsNiBAQCBDTVRpbWUgdG9DTVRpbWUoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpCiAgICAg
ICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHk7CiAgICAgaWYg
KG1lZGlhVGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgdGltZS5mbGFncyB8PSBr
Q01UaW1lRmxhZ3NfTmVnYXRpdmVJbmZpbml0eTsKLQogICAgIHJldHVybiB0aW1lOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVB
VkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlh
VGltZUFWRm91bmRhdGlvbi5oCmluZGV4IGIzZGJlMTdhYTliYzEyNTFkY2UyZWM4YWRlZTdjYjg0
OTQ3OWJmNzAuLmEyYmNkYWU5ZjhlOTlkMGYwNGUzZjNjM2VkMjBhM2YzNmEyOTA2ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlh
VGltZUFWRm91bmRhdGlvbi5oCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBQQUwgewog
Ci1QQUxfRVhQT1JUIENNVGltZSB0b0NNVGltZShjb25zdCBNZWRpYVRpbWUmKTsKLVBBTF9FWFBP
UlQgTWVkaWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0IENNVGltZSYpOworUEFMX0VYUE9SVCBDTVRp
bWUgdG9DTVRpbWUoTWVkaWFUaW1lKTsKK1BBTF9FWFBPUlQgTWVkaWFUaW1lIHRvTWVkaWFUaW1l
KENNVGltZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggMGUxYWQ3MjQ1ZmUxNmUxZTk2ZTNkYTFjYjU4NGI5YTRh
NmQ4OWYzYi4uODQ0NmRiOTg1NTFlMGM1MzgyYTk2ZmY4NDcxZmJiNjcyMzEwYzRiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBA
IC0xMTksMTAgKzExOSwxMCBAQCBzdGF0aWMgaW5saW5lIEdhcExlbmd0aCBibGVuZEZ1bmMoY29u
c3QgR2FwTGVuZ3RoJiBmcm9tLCBjb25zdCBHYXBMZW5ndGgmIHRvLCBjbwogICAgIHJldHVybiBi
bGVuZChmcm9tLmxlbmd0aCgpLCB0by5sZW5ndGgoKSwgY29udGV4dCwgVmFsdWVSYW5nZTo6Tm9u
TmVnYXRpdmUpOwogfQogCi1zdGF0aWMgaW5saW5lIFRhYlNpemUgYmxlbmRGdW5jKGNvbnN0IFRh
YlNpemUmIGZyb20sIGNvbnN0IFRhYlNpemUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5n
Q29udGV4dCYgY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgVGFiU2l6ZSBibGVuZEZ1bmMoVGFiU2l6
ZSBmcm9tLCBUYWJTaXplIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9IGJsZW5kKGZyb20udmFsdWUoKSwgdG8u
dmFsdWUoKSwgY29udGV4dCk7Ci0gICAgcmV0dXJuIHsgYmxlbmRlZFZhbHVlIDwgMCA/IDAgOiBi
bGVuZGVkVmFsdWUsIGZyb20uaXNTcGFjZXMoKSA/IFNwYWNlVmFsdWVUeXBlIDogTGVuZ3RoVmFs
dWVUeXBlIH07CisgICAgYXV0byBibGVuZGVkVmFsdWUgPSBibGVuZChmcm9tLnZhbHVlLCB0by52
YWx1ZSwgY29udGV4dCk7CisgICAgcmV0dXJuIHsgYmxlbmRlZFZhbHVlIDwgMCA/IDAgOiBibGVu
ZGVkVmFsdWUsIGZyb20uaXNTcGFjZXMgPyBUYWJTaXplOjpTcGFjZXMgOiBUYWJTaXplOjpMZW5n
dGggfTsKIH0KIAogc3RhdGljIGlubGluZSBMZW5ndGhTaXplIGJsZW5kRnVuYyhjb25zdCBMZW5n
dGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVu
ZGluZ0NvbnRleHQmIGNvbnRleHQpCkBAIC05NzgsMTAgKzk3OCw5IEBAIHByaXZhdGU6CiAgICAg
Ly8gaXQncyBvbmx5IHBvc3NpYmxlIGlmIHRoZXkncmUgYm90aCBub3QgYXV0by4KICAgICBib29s
IGNhbkludGVycG9sYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHls
ZSYgdG8sIENvbXBvc2l0ZU9wZXJhdGlvbikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGJv
b2wgZnJvbUlzQXV0byA9IHZhbHVlKGZyb20pLngoKS5pc0F1dG8oKSAmJiB2YWx1ZShmcm9tKS55
KCkuaXNBdXRvKCk7Ci0gICAgICAgIGJvb2wgdG9Jc0F1dG8gPSB2YWx1ZSh0bykueCgpLmlzQXV0
bygpICYmIHZhbHVlKHRvKS55KCkuaXNBdXRvKCk7Ci0KLSAgICAgICAgcmV0dXJuICghZnJvbUlz
QXV0byAmJiAhdG9Jc0F1dG8pOyAKKyAgICAgICAgYm9vbCBmcm9tSXNBdXRvID0gdmFsdWUoZnJv
bSkueC5pc0F1dG8oKSAmJiB2YWx1ZShmcm9tKS55LmlzQXV0bygpOworICAgICAgICBib29sIHRv
SXNBdXRvID0gdmFsdWUodG8pLnguaXNBdXRvKCkgJiYgdmFsdWUodG8pLnkuaXNBdXRvKCk7Cisg
ICAgICAgIHJldHVybiAhZnJvbUlzQXV0byAmJiAhdG9Jc0F1dG87CiAgICAgfQogfTsKIApAQCAt
MTI5MiwyMCArMTI5MSwyMCBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBzaGFkb3dMaXN0TGVuZ3Ro
KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdykKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSogc2hhZG93Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93
RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBvdGhlclNoYWRvdykKK3N0YXRpYyBp
bmxpbmUgY29uc3QgU2hhZG93RGF0YSYgc2hhZG93Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93RGF0
YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBvdGhlclNoYWRvdykKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoTGVuZ3RoUG9p
bnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSks
IExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNo
YWRvd1N0eWxlOjpOb3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFNoYWRvd0RhdGEo
TGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
KTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFdlYktpdEJv
eFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3Ro
KExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChM
ZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFu
c3BhcmVudEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVm
YXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlw
ZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCB0
cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFNoYWRvd0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBl
OjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZp
eGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgZmFs
c2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0YShMZW5ndGhQb2ludCB7IHsgTGVuZ3Ro
VHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aChMZW5ndGhUeXBl
OjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwg
ZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7
IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVu
Z3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6
Tm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEoTGVu
Z3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9
LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBT
aGFkb3dTdHlsZTo6SW5zZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKIAogICAg
IGlmIChzcmNTaGFkb3cpCi0gICAgICAgIHJldHVybiBzcmNTaGFkb3c7CisgICAgICAgIHJldHVy
biAqc3JjU2hhZG93OwogCiAgICAgaWYgKG90aGVyU2hhZG93LT5zdHlsZSgpID09IFNoYWRvd1N0
eWxlOjpJbnNldCkKLSAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRv
dygpID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdElu
c2V0U2hhZG93RGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtp
dEJveFNoYWRvdygpID8gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6IGRl
ZmF1bHRJbnNldFNoYWRvd0RhdGEuZ2V0KCk7CiAKLSAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlz
V2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAm
ZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtp
dEJveFNoYWRvdygpID8gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiBkZWZhdWx0
U2hhZG93RGF0YS5nZXQoKTsKIH0KIAogY2xhc3MgUHJvcGVydHlXcmFwcGVyU2hhZG93IGZpbmFs
IDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewpAQCAtMTQyOCwxMSArMTQy
NywxMSBAQCBwcml2YXRlOgogICAgICAgICBTaGFkb3dEYXRhKiBsYXN0U2hhZG93ID0gbnVsbHB0
cjsKIAogICAgICAgICB3aGlsZSAoc2hhZG93QSB8fCBzaGFkb3dCKSB7Ci0gICAgICAgICAgICBj
b25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dBLCBz
aGFkb3dCKTsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRv
d0ZvckJsZW5kaW5nKHNoYWRvd0IsIHNoYWRvd0EpOworICAgICAgICAgICAgYXV0byYgc3JjU2hh
ZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwgc2hhZG93Qik7CisgICAgICAgICAgICBh
dXRvJiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dCLCBzaGFkb3dBKTsKIAot
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBi
bGVuZEZ1bmMoc3JjU2hhZG93LCBkc3RTaGFkb3csIGNvbnRleHQpOwotICAgICAgICAgICAgU2hh
ZG93RGF0YSogYmxlbmRlZFNoYWRvd1B0ciA9IGJsZW5kZWRTaGFkb3cuZ2V0KCk7CisgICAgICAg
ICAgICBhdXRvIGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoJnNyY1NoYWRvdywgJmRzdFNoYWRv
dywgY29udGV4dCk7CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRTaGFkb3dQdHIgPSBibGVuZGVk
U2hhZG93LmdldCgpOwogCiAgICAgICAgICAgICBpZiAoIWxhc3RTaGFkb3cpCiAgICAgICAgICAg
ICAgICAgbmV3U2hhZG93RGF0YSA9IFdURk1vdmUoYmxlbmRlZFNoYWRvdyk7CkBAIC0xNDQxLDgg
KzE0NDAsOCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBsYXN0U2hhZG93ID0gYmxlbmRlZFNo
YWRvd1B0cjsKIAotICAgICAgICAgICAgc2hhZG93QSA9IHNoYWRvd0EgPyBzaGFkb3dBLT5uZXh0
KCkgOiAwOwotICAgICAgICAgICAgc2hhZG93QiA9IHNoYWRvd0IgPyBzaGFkb3dCLT5uZXh0KCkg
OiAwOworICAgICAgICAgICAgc2hhZG93QSA9IHNoYWRvd0EgPyBzaGFkb3dBLT5uZXh0KCkgOiBu
dWxscHRyOworICAgICAgICAgICAgc2hhZG93QiA9IHNoYWRvd0IgPyBzaGFkb3dCLT5uZXh0KCkg
OiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ld1NoYWRvd0RhdGE7CkBA
IC0xNDcxLDEzICsxNDcwLDE0IEBAIHByaXZhdGU6CiAKICAgICAgICAgaW50IG1heExlbmd0aCA9
IHN0ZDo6bWF4KGZyb21MZW5ndGgsIHRvTGVuZ3RoKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtYXhMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZnJv
bVNoYWRvdyA9IGkgPCBmcm9tTGVuZ3RoID8gZnJvbVNoYWRvd3NbaV0gOiAwOwotICAgICAgICAg
ICAgY29uc3QgU2hhZG93RGF0YSogdG9TaGFkb3cgPSBpIDwgdG9MZW5ndGggPyB0b1NoYWRvd3Nb
aV0gOiAwOworICAgICAgICAgICAgYXV0byBmcm9tU2hhZG93ID0gaSA8IGZyb21MZW5ndGggPyBm
cm9tU2hhZG93c1tpXSA6IG51bGxwdHI7CisgICAgICAgICAgICBhdXRvIHRvU2hhZG93ID0gaSA8
IHRvTGVuZ3RoID8gdG9TaGFkb3dzW2ldIDogbnVsbHB0cjsKKworICAgICAgICAgICAgYXV0byYg
c3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoZnJvbVNoYWRvdywgdG9TaGFkb3cpOworICAg
ICAgICAgICAgYXV0byYgZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcodG9TaGFkb3csIGZy
b21TaGFkb3cpOwogCi0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBz
aGFkb3dGb3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1NoYWRvdyk7Ci0gICAgICAgICAgICBjb25z
dCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyh0b1NoYWRvdywgZnJv
bVNoYWRvdyk7CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoJnNy
Y1NoYWRvdywgJmRzdFNoYWRvdywgY29udGV4dCk7CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTaGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKHNyY1NoYWRvdywgZHN0
U2hhZG93LCBjb250ZXh0KTsKICAgICAgICAgICAgIC8vIEluc2VydCBhdCB0aGUgc3RhcnQgb2Yg
dGhlIGxpc3QgdG8gcHJlc2VydmUgdGhlIG9yZGVyLgogICAgICAgICAgICAgYmxlbmRlZFNoYWRv
dy0+c2V0TmV4dChXVEZNb3ZlKG5ld1NoYWRvd0RhdGEpKTsKICAgICAgICAgICAgIG5ld1NoYWRv
d0RhdGEgPSBXVEZNb3ZlKGJsZW5kZWRTaGFkb3cpOwpAQCAtMjM0OCwxOCArMjM0OCwxOCBAQCBw
cml2YXRlOgogICAgIH0KIH07CiAKLWNsYXNzIFRhYlNpemVQcm9wZXJ0eVdyYXBwZXIgZmluYWwg
OiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyPGNvbnN0IFRhYlNpemUmPiB7CitjbGFzcyBUYWJTaXpl
UHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxUYWJTaXplPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVGFiU2l6ZVByb3Bl
cnR5V3JhcHBlcigpCi0gICAgICAgIDogUHJvcGVydHlXcmFwcGVyPGNvbnN0IFRhYlNpemUmPihD
U1NQcm9wZXJ0eVRhYlNpemUsICZSZW5kZXJTdHlsZTo6dGFiU2l6ZSwgJlJlbmRlclN0eWxlOjpz
ZXRUYWJTaXplKQorICAgICAgICA6IFByb3BlcnR5V3JhcHBlcjxUYWJTaXplPihDU1NQcm9wZXJ0
eVRhYlNpemUsICZSZW5kZXJTdHlsZTo6dGFiU2l6ZSwgJlJlbmRlclN0eWxlOjpzZXRUYWJTaXpl
KQogICAgIHsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5JbnRlcnBvbGF0ZShjb25z
dCBSZW5kZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBDb21wb3NpdGVPcGVy
YXRpb24pIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gdmFsdWUoZnJvbSkuaXNT
cGFjZXMoKSA9PSB2YWx1ZSh0bykuaXNTcGFjZXMoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlKGZy
b20pLmlzU3BhY2VzID09IHZhbHVlKHRvKS5pc1NwYWNlczsKICAgICB9CiAKICAgICB2b2lkIGJs
ZW5kKFJlbmRlclN0eWxlJiBkZXN0aW5hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIGZyb20sIGNv
bnN0IFJlbmRlclN0eWxlJiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDc1N2I0NWQzZGIxNzJjMjVhNTdiNTM4OTQ4NDU3
MTViNTFlN2M4ZjYuLjhkNmNhNWVjNjc4ZWY4MmU3ZWMzNDU0YTA3ZGZiMGYxYzhmNjJlZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCkBAIC0xNTE4LDE0ICsxNTE4LDE0IEBAIHN0YXRpYyBFbGVtZW50KiBzdHlsZUVsZW1lbnRG
b3JOb2RlKE5vZGUqIG5vZGUpCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclBvc2l0aW9u
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGVuZ3RoUG9pbnQmIHBvc2l0aW9uKQog
ewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
LSAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3NpdGlv
bi54KCksIHN0eWxlKSk7Ci0gICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVG
b3JMZW5ndGgocG9zaXRpb24ueSgpLCBzdHlsZSkpOworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLngsIHN0eWxlKSk7CisgICAgbGlzdC0+
YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueSwgc3R5bGUp
KTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JQ
b3NpdGlvbk9yQXV0byhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExlbmd0aFBvaW50
JiBwb3NpdGlvbikKIHsKLSAgICBpZiAocG9zaXRpb24ueCgpLmlzQXV0bygpICYmIHBvc2l0aW9u
LnkoKS5pc0F1dG8oKSkKKyAgICBpZiAocG9zaXRpb24ueC5pc0F1dG8oKSAmJiBwb3NpdGlvbi55
LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKIAogICAgIHJldHVybiB2YWx1ZUZvclBv
c2l0aW9uKHN0eWxlLCBwb3NpdGlvbik7CkBAIC0xOTIxLDcgKzE5MjEsNyBAQCBzdGF0aWMgUmVm
PENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
ICAgICBmb3IgKGF1dG8qIGNvbnRlbnREYXRhID0gc3R5bGUuY29udGVudERhdGEoKTsgY29udGVu
dERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5leHQoKSkgewogICAgICAgICBpZiAo
aXM8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpKQotICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERh
dGE+KCpjb250ZW50RGF0YSkuY291bnRlcigpLmlkZW50aWZpZXIoKSwgQ1NTVW5pdFR5cGU6OkNT
U19DT1VOVEVSX05BTUUpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNv
dW50ZXIoKS5pZGVudGlmaWVyLCBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFNRSkpOwogICAg
ICAgICBlbHNlIGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKQogICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGRvd25jYXN0PEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0
YSkuaW1hZ2UoKS5jc3NWYWx1ZSgpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8VGV4dENvbnRlbnRE
YXRhPigqY29udGVudERhdGEpKQpAQCAtMzAxNCw3ICszMDE0LDcgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBS
ZW5kZXJTdHkKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUoc3R5bGUuY29sdW1uV2lkdGgoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5VGFiU2l6ZToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhlbHMoMS4wKSwgc3R5bGUudGFiU2l6ZSgp
LmlzU3BhY2VzKCkgPyBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiA6IENTU1VuaXRUeXBlOjpDU1Nf
UFgpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50
YWJTaXplKCkud2lkdGhJblBpeGVscygxLjApLCBzdHlsZS50YWJTaXplKCkuaXNTcGFjZXMgPyBD
U1NVbml0VHlwZTo6Q1NTX05VTUJFUiA6IENTU1VuaXRUeXBlOjpDU1NfUFgpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Q3Vyc29yOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0OwogICAgICAgICAgICAgYXV0byogY3Vyc29ycyA9IHN0eWxlLmN1cnNvcnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKaW5kZXggZjViYzhjYTk2YjkwZDYwNTUw
ZGNhNTgyMWU4Mzg1NDlhNGIyZjdlZi4uZDZhMTJjYmI5NjkyMjczODU0MmY0ZTA5NzQ3M2U3Yjhl
YzdkZTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKQEAgLTEyMyw3
ICsxMjMsNyBAQCBMYXlvdXRTaXplIHNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUm
IGxlbmd0aCwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bQogCiBMYXlvdXRQb2ludCBwb2ludEZv
ckxlbmd0aFBvaW50KGNvbnN0IExlbmd0aFBvaW50JiBsZW5ndGhQb2ludCwgY29uc3QgTGF5b3V0
U2l6ZSYgbWF4aW11bVZhbHVlKQogewotICAgIHJldHVybiB7IHZhbHVlRm9yTGVuZ3RoKGxlbmd0
aFBvaW50LngoKSwgbWF4aW11bVZhbHVlLndpZHRoKCkpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhQ
b2ludC55KCksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsKKyAgICByZXR1cm4geyB2YWx1ZUZv
ckxlbmd0aChsZW5ndGhQb2ludC54LCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZhbHVlRm9yTGVu
Z3RoKGxlbmd0aFBvaW50LnksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsKIH0KIAogRmxvYXRT
aXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwg
Y29uc3QgRmxvYXRTaXplJiBib3hTaXplKQpAQCAtMTMzLDcgKzEzMyw3IEBAIEZsb2F0U2l6ZSBm
bG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYKIAogRmxvYXRQb2ludCBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQoY29uc3Qg
TGVuZ3RoUG9pbnQmIGxlbmd0aFBvaW50LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCiB7Ci0g
ICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54KCksIGJveFNpemUu
d2lkdGgoKSksIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSgpLCBib3hTaXplLmhl
aWdodCgpKSB9OworICAgIHJldHVybiB7IGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQu
eCwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55LCBi
b3hTaXplLmhlaWdodCgpKSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oCmluZGV4IDdlZTMwYTNlMTMxMjk0YTNk
NTVhY2VmNGNhYTBhNzFjM2QxMGFkNTguLjZmZWMzNzQ1MGFjMGFiZmVkMGNhODA3NTM5MGVlMjY5
ODRjYWMwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlT
dHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oCkBA
IC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJlc2VydmVOZXdsaW5lKCkgY29u
c3Q7CiAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBjb25zdDsKIAotICAgIGNvbnN0IFRh
YlNpemUmIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7IH0KKyAgICBUYWJTaXpl
IHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7IH0KIAogcHJpdmF0ZToKICAgICB2
b2lkIHNldHVwQmFja2dyb3VuZChjb25zdCBSZW5kZXJTdHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggNWI4YjM5MGI0MTAwMzJkYzg3OTdkOGViZGI3M2RiMWY1MGU3MmE1YS4uNjNm
NTMxYjcwZGQ5YWNjMTNiNmM5YTNhZjVlYzllYTM1NWI3MTlmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8
KFVDaGFyMzIgYSwgY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBiKQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNQb3RlbnRpYWxDdXN0b21FbGVtZW50TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNo
YXJhY3RlcikKIHsKLSAgICBzdGF0aWMgY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlIHJhbmdl
c1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgVW5pY29kZUNvZGVQb2ludFJhbmdlIHJhbmdl
c1tdID0gewogICAgICAgICB7ICctJywgJy4nIH0sCiAgICAgICAgIHsgJzAnLCAnOScgfSwKICAg
ICAgICAgeyAnXycsICdfJyB9LApAQCAtMTI2Nyw5ICsxMjY3LDggQEAgc3RhdGljIGlubGluZSBi
b29sIGlzUG90ZW50aWFsQ3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0
ZXIpCiAgICAgICAgIHsgMHhGREYwLCAweEZGRkQgfSwKICAgICAgICAgeyAweDEwMDAwLCAweEVG
RkZGIH0sCiAgICAgfTsKLQotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHJh
bmdlcyksIHN0ZDo6ZW5kKHJhbmdlcykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNo
KHN0ZDo6YmVnaW4ocmFuZ2VzKSwgc3RkOjplbmQocmFuZ2VzKSwgY2hhcmFjdGVyKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHJhbmdlcyB9OworICAgIHJldHVy
biBzZXQuY29udGFpbnMoY2hhcmFjdGVyKTsKIH0KIAogQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0
aW9uU3RhdHVzIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGNvbnN0IEF0b21T
dHJpbmcmIGxvY2FsTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aFBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcApp
bmRleCA5YTM2NzU5NmRkMDI2OWQ1OWY2M2ViMGY2Yzg5ZTM0ZGQ4MjE4MmQ5Li5iNWY0Y2MwNWUy
NzY3YTE4YzY3M2QwOGUzNGNkMjIwNjljNTgxOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoUG9pbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTGVuZ3RoUG9pbnQm
IHNpemUpCiB7Ci0gICAgcmV0dXJuIHRzIDw8IHNpemUueCgpIDw8ICIgIiA8PCBzaXplLnkoKTsK
KyAgICByZXR1cm4gdHMgPDwgc2l6ZS54IDw8ICIgIiA8PCBzaXplLnk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oCmluZGV4IDgx
MjA1YmIxM2RkYTUwMzNiMmM5MGZiZWEwNTMwYzJmNTZmOTkzNmIuLjk4YmRjY2EwNzFmOGMyMTli
MmNiYTkwYmNiYzAxZjMyNWI2MjIyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9p
bnQuaApAQCAtMzIsNDQgKzMyLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBCbGVu
ZGluZ0NvbnRleHQ7CiAKIHN0cnVjdCBMZW5ndGhQb2ludCB7Ci1wdWJsaWM6Ci0gICAgTGVuZ3Ro
UG9pbnQoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgTGVuZ3RoUG9pbnQoTGVuZ3RoIHgsIExl
bmd0aCB5KQotICAgICAgICA6IG1feChXVEZNb3ZlKHgpKQotICAgICAgICAsIG1feShXVEZNb3Zl
KHkpKQotICAgIHsKLSAgICB9CisgICAgTGVuZ3RoIHg7CisgICAgTGVuZ3RoIHk7CiAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IExlbmd0aFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3ggPT0gby5tX3ggJiYgbV95ID09IG8ubV95OworICAgICAgICByZXR1cm4geCA9PSBv
dGhlci54ICYmIHkgPT0gb3RoZXIueTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0
aFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8p
OworICAgICAgICByZXR1cm4geCAhPSBvdGhlci54IHx8IHkgIT0gb3RoZXIueTsKICAgICB9CiAK
LSAgICB2b2lkIHNldFgoTGVuZ3RoIHgpIHsgbV94ID0gV1RGTW92ZSh4KTsgfQotICAgIGNvbnN0
IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQotCi0gICAgdm9pZCBzZXRZKExlbmd0
aCB5KSB7IG1feSA9IFdURk1vdmUoeSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7
IHJldHVybiBtX3k7IH0KLQotICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbV94Lmlz
WmVybygpICYmIG1feS5pc1plcm8oKTsgfQotCi1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBpdCB3
b3VsZCBiZSBuaWNlIHRvIHBhY2sgdGhlIHR3byBMZW5ndGhzIHRvZ2V0aGVyIGJldHRlciBzb21l
aG93ICh0byBhdm9pZCBwYWRkaW5nIGJldHdlZW4gdGhlbSkuCi0gICAgTGVuZ3RoIG1feDsKLSAg
ICBMZW5ndGggbV95OworICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4geC5pc1plcm8o
KSAmJiB5LmlzWmVybygpOyB9CiB9OwogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgYmxlbmQoY29uc3Qg
TGVuZ3RoUG9pbnQmIGZyb20sIGNvbnN0IExlbmd0aFBvaW50JiB0bywgY29uc3QgQmxlbmRpbmdD
b250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVybiBMZW5ndGhQb2ludChibGVuZChmcm9tLngo
KSwgdG8ueCgpLCBjb250ZXh0KSwgYmxlbmQoZnJvbS55KCksIHRvLnkoKSwgY29udGV4dCkpOwor
ICAgIHJldHVybiB7IGJsZW5kKGZyb20ueCwgdG8ueCwgY29udGV4dCksIGJsZW5kKGZyb20ueSwg
dG8ueSwgY29udGV4dCkgfTsKIH0KIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIGNvbnN0IExlbmd0aFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCBiYWJlOTY2ODRlN2MxNWNiOWNhOTY5
M2JhMzU2MGE4YWEzZDJjOTZjLi5lOWYyNjhjMTBkYWI0Mjg0Njc5OGE4NmQ5Zjk5MmRjNWE1ZmI4
MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmgKQEAgLTE2NSw4ICsxNjUsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBGb250TWV0cmljcyYg
Zm9udE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7
IH0KICAgICBmbG9hdCBzcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5z
cGFjZVdpZHRoKCkgKyBtX2xldHRlclNwYWNpbmc7IH0KLSAgICBmbG9hdCB0YWJXaWR0aChjb25z
dCBGb250JiwgY29uc3QgVGFiU2l6ZSYsIGZsb2F0KSBjb25zdDsKLSAgICBmbG9hdCB0YWJXaWR0
aChjb25zdCBUYWJTaXplJiB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4g
dGFiV2lkdGgocHJpbWFyeUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CisgICAgZmxvYXQg
dGFiV2lkdGgoY29uc3QgRm9udCYsIFRhYlNpemUsIGZsb2F0KSBjb25zdDsKKyAgICBmbG9hdCB0
YWJXaWR0aChUYWJTaXplIHRhYlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdCB7IHJldHVybiB0
YWJXaWR0aChwcmltYXJ5Rm9udCgpLCB0YWJTaXplLCBwb3NpdGlvbik7IH0KICAgICBib29sIGhh
c1ZhbGlkQXZlcmFnZUNoYXJXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgZmFzdEF2ZXJhZ2VDaGFy
V2lkdGhJZkF2YWlsYWJsZShmbG9hdCAmd2lkdGgpIGNvbnN0OyAvLyByZXR1cm5zIHRydWUgb24g
c3VjY2VzcwogCkBAIC0zNzAsNyArMzcwLDcgQEAgaW5saW5lIEZvbnRTZWxlY3RvciogRm9udENh
c2NhZGU6OmZvbnRTZWxlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZm9udHMgPyBtX2ZvbnRz
LT5mb250U2VsZWN0b3IoKSA6IG51bGxwdHI7CiB9CiAKLWlubGluZSBmbG9hdCBGb250Q2FzY2Fk
ZTo6dGFiV2lkdGgoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSwgZmxv
YXQgcG9zaXRpb24pIGNvbnN0CitpbmxpbmUgZmxvYXQgRm9udENhc2NhZGU6OnRhYldpZHRoKGNv
bnN0IEZvbnQmIGZvbnQsIFRhYlNpemUgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0CiB7
CiAgICAgZmxvYXQgYmFzZVRhYldpZHRoID0gdGFiU2l6ZS53aWR0aEluUGl4ZWxzKGZvbnQuc3Bh
Y2VXaWR0aCgpKTsKICAgICBpZiAoIWJhc2VUYWJXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAppbmRleCA3NTQzZjQ3NWEyN2E2NTE1
OTA2Y2MyMmViM2Y2MGE5MTQwOTI5MGJhLi4wNzU2MTk0Y2YyZjVlOGI5ZmJiMjdhMTBjZTc4YTJl
MThjMjNjZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuY3BwCkBAIC03NCw3ICs3NCw4IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAg
ICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAg
ICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgaWYgKGJ1ZmZlclNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSkKKyAgICB1aW50MzJfdCBtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKTsKKyAgICBpZiAoYnVmZmVyU2l6ZSA+IG1heCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKaW5kZXggMzRhNzA4MTA2Mjhh
Yzk1MjdmNGY1Y2YwNDc1ZDgzNWI3Y2MyZWFjZi4uOGU0M2Y5NjdiOGE2NDdmNDg4YjMzNjUxODQ2
ZWJlMzZkZDEwN2VjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGFiU2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNp
emUuaApAQCAtMjksNDkgKzI5LDM5IEBACiAKICNwcmFnbWEgb25jZQogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKLWVudW0gVGFiU2l6ZVZh
bHVlVHlwZSB7Ci0gICAgTGVuZ3RoVmFsdWVUeXBlLAotICAgIFNwYWNlVmFsdWVUeXBlLAotfTsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFRhYlNpemUgewotICAgIFRhYlNpemUoZmxv
YXQgbnVtT3JMZW5ndGgsIFRhYlNpemVWYWx1ZVR5cGUgaXNTcGFjZXMgPSBTcGFjZVZhbHVlVHlw
ZSkKLSAgICAgICAgOiBtX3ZhbHVlKG51bU9yTGVuZ3RoKQotICAgICAgICAsIG1faXNTcGFjZXMo
aXNTcGFjZXMpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNTcGFjZXMoKSBjb25zdAorICAg
IGVudW0gVmFsdWVUeXBlIHsgTGVuZ3RoLCBTcGFjZXMgfTsKKyAgICBUYWJTaXplKGZsb2F0IG51
bU9yTGVuZ3RoLCBWYWx1ZVR5cGUgdHlwZSA9IFNwYWNlcykKKyAgICAgICAgOiB2YWx1ZShudW1P
ckxlbmd0aCkKKyAgICAgICAgLCBpc1NwYWNlcyh0eXBlID09IFNwYWNlcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2lzU3BhY2VzOwogICAgIH0KIAogICAgIGZsb2F0IHdpZHRoSW5QaXhlbHMo
ZmxvYXQgc3BhY2VXaWR0aCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzU3BhY2Vz
ID8gbV92YWx1ZSAqIHNwYWNlV2lkdGggOiBtX3ZhbHVlOworICAgICAgICByZXR1cm4gaXNTcGFj
ZXMgPyB2YWx1ZSAqIHNwYWNlV2lkdGggOiB2YWx1ZTsKICAgICB9CiAKLSAgICBmbG9hdCB2YWx1
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZTsKLSAgICB9CisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CiAKLSAgICBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQotCi0gICAgZmxvYXQgbV92YWx1
ZTsKLSAgICBib29sIG1faXNTcGFjZXM7CisgICAgZmxvYXQgdmFsdWU7CisgICAgYm9vbCBpc1Nw
YWNlczsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGFiU2l6ZSYgYSwgY29u
c3QgVGFiU2l6ZSYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPT0oVGFiU2l6ZSBhLCBUYWJTaXpl
IGIpCiB7Ci0gICAgcmV0dXJuIChhLm1fdmFsdWUgPT0gYi5tX3ZhbHVlKSAmJiAoYS5tX2lzU3Bh
Y2VzID09IGIubV9pc1NwYWNlcyk7CisgICAgcmV0dXJuIGEudmFsdWUgPT0gYi52YWx1ZSAmJiBh
LmlzU3BhY2VzID09IGIuaXNTcGFjZXM7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgVGFiU2l6ZSYgYSwgY29uc3QgVGFiU2l6ZSYgYikKK2lubGluZSBib29sIG9wZXJhdG9yIT0o
VGFiU2l6ZSBhLCBUYWJTaXplIGIpCiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAoraW5s
aW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBUYWJTaXplIHNp
emUpIHsgcmV0dXJuIHN0cmVhbSA8PCBzaXplLnZhbHVlIDw8IChzaXplLmlzU3BhY2VzID8gIiBz
cGFjZXMiIDogIiIpOyB9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAppbmRleCAxZDQ3ZDY1ZDY4MjQ2MjZlMTU5Mjg4
MDBmNDY5N2MyNzZjYjI3NjM0Li5hMjA5NmNmOWRlMzVlOGE1YjM5M2E3ZmFjMGE0ODNkNTcxYzRm
MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCkBAIC05
NSw4ICs5NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhvcml6b250YWxHbHlwaFN0cmV0Y2go
ZmxvYXQgc2NhbGUpIHsgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNoID0gc2NhbGU7IH0KIAogICAg
IGJvb2wgYWxsb3dUYWJzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd1RhYnM7IH0KLSAgICBjb25z
dCBUYWJTaXplJiB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV90YWJTaXplOyB9Ci0gICAgdm9p
ZCBzZXRUYWJTaXplKGJvb2wsIGNvbnN0IFRhYlNpemUmKTsKKyAgICBUYWJTaXplIHRhYlNpemUo
KSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7IH0KKyAgICB2b2lkIHNldFRhYlNpemUoYm9vbCwg
VGFiU2l6ZSk7CiAKICAgICBmbG9hdCB4UG9zKCkgY29uc3QgeyByZXR1cm4gbV94cG9zOyB9CiAg
ICAgdm9pZCBzZXRYUG9zKGZsb2F0IHhQb3MpIHsgbV94cG9zID0geFBvczsgfQpAQCAtMTM2LDcg
KzEzNiw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9kaXNhYmxlU3BhY2luZyA6IDE7CiB9
OwogCi1pbmxpbmUgdm9pZCBUZXh0UnVuOjpzZXRUYWJTaXplKGJvb2wgYWxsb3csIGNvbnN0IFRh
YlNpemUmIHNpemUpCitpbmxpbmUgdm9pZCBUZXh0UnVuOjpzZXRUYWJTaXplKGJvb2wgYWxsb3cs
IFRhYlNpemUgc2l6ZSkKIHsKICAgICBtX2FsbG93VGFicyA9IGFsbG93OwogICAgIG1fdGFiU2l6
ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9W
UDlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRp
bGl0aWVzLmNwcAppbmRleCA5MmY0MmI2NzdkNTNkZDljNmEzZjZiZDZlM2Q5MWNiYWM2NmFhNGI5
Li45ZGIxMTExMjhhMWZiN2NlZmVhNGFkMDJhZWMxMWJhNWUyOTFkYzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKQEAgLTI3LDEz
ICsyNywxNCBAQAogI2luY2x1ZGUgIlZQOVV0aWxpdGllcy5oIgogCiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBib29sIGlzVmFsaWRWUExldmVsKHVpbnQ4X3QgbGV2ZWwpCiB7Ci0g
ICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRMZXZlbHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnQ4X3QgdmFsaWRMZXZlbHNbXSA9IHsKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2
ZWw6OkxldmVsXzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8xXzEsCiAg
ICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8yLApAQCAtNDksMTQgKzUwLDEzIEBA
IHN0YXRpYyBib29sIGlzVmFsaWRWUExldmVsKHVpbnQ4X3QgbGV2ZWwpCiAgICAgICAgIFZQQ29u
ZmlndXJhdGlvbkxldmVsOjpMZXZlbF82XzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVs
OjpMZXZlbF82XzIsCiAgICAgfTsKLQotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJl
Z2luKHZhbGlkTGV2ZWxzKSwgc3RkOjplbmQodmFsaWRMZXZlbHMpKSk7Ci0gICAgcmV0dXJuIHN0
ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkTGV2ZWxzKSwgc3RkOjplbmQodmFsaWRM
ZXZlbHMpLCBsZXZlbCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQg
eyB2YWxpZExldmVscyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMobGV2ZWwpOwogfQogCiBz
dGF0aWMgYm9vbCBpc1ZhbGlkVlBDb2xvclByaW1hcmllcyh1aW50OF90IGNvbG9yUHJpbWFyaWVz
KQogewotICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkQ29sb3JQcmltYXJpZXNbXSA9IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRDb2xvclByaW1hcmllc1tdID0gewogICAg
ICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNzA5XzYsCiAgICAgICAgIFZQ
Q29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZCwKICAgICAgICAgVlBDb25m
aWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzQ3MF82X00sCkBAIC03MCwxNCArNzAsMTMgQEAg
c3RhdGljIGJvb2wgaXNWYWxpZFZQQ29sb3JQcmltYXJpZXModWludDhfdCBjb2xvclByaW1hcmll
cykKICAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX0VHXzQzMl8x
LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6RUJVX1RlY2hfMzIxM19F
LAogICAgIH07Ci0KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZENv
bG9yUHJpbWFyaWVzKSwgc3RkOjplbmQodmFsaWRDb2xvclByaW1hcmllcykpKTsKLSAgICByZXR1
cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRDb2xvclByaW1hcmllcyksIHN0
ZDo6ZW5kKHZhbGlkQ29sb3JQcmltYXJpZXMpLCBjb2xvclByaW1hcmllcyk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyB2YWxpZENvbG9yUHJpbWFyaWVzIH07Cisg
ICAgcmV0dXJuIHNldC5jb250YWlucyhjb2xvclByaW1hcmllcyk7CiB9CiAKIHN0YXRpYyBib29s
IGlzVmFsaWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKHVpbnQ4X3QgdHJhbnNmZXJDaGFyYWN0
ZXJpc3RpY3MpCiB7Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3Rl
cmlzdGljc1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZFRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzOjpCVF83MDlfNiwKICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVkLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFu
c2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNDcwXzZfTSwKQEAgLTk2LDEzICs5NSwxMyBAQCBzdGF0
aWMgYm9vbCBpc1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyh1aW50OF90IHRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzKQogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3Rl
cmlzdGljczo6U01QVEVfU1RfNDI4XzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzOjpCVF8yMTAwX0hMRywKICAgICB9OwotICAgIEFTU0VSVChzdGQ6Omlz
X3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpLCBzdGQ6OmVu
ZCh2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFy
eV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSwgc3RkOjpl
bmQodmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyksIHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHZhbGlkVHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKHRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzKTsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2ll
bnRzKHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQogewotICAgIGNvbnN0ZXhwciB1aW50OF90
IHZhbGlkTWF0cml4Q29lZmZpY2llbnRzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
OF90IHZhbGlkTWF0cml4Q29lZmZpY2llbnRzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlv
bk1hdHJpeENvZWZmaWNpZW50czo6SWRlbnRpdHksCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1h
dHJpeENvZWZmaWNpZW50czo6QlRfNzA5XzYsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQsCkBAIC0xMTgsOCArMTE3LDggQEAgc3RhdGljIGJv
b2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRz
KQogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkNocm9tYWNpdHlf
Tm9uY29uc3RhbnRfTHVtaW5hbmNlLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2Vm
ZmljaWVudHM6OkJUXzIxMDBfSUNDLAogICAgIH07Ci0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVk
KHN0ZDo6YmVnaW4odmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJp
eENvZWZmaWNpZW50cykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVn
aW4odmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJpeENvZWZmaWNp
ZW50cyksIG1hdHJpeENvZWZmaWNpZW50cyk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRB
cnJheVNldCBzZXQgeyB2YWxpZE1hdHJpeENvZWZmaWNpZW50cyB9OworICAgIHJldHVybiBzZXQu
Y29udGFpbnMobWF0cml4Q29lZmZpY2llbnRzKTsKIH0KIAogc3RkOjpvcHRpb25hbDxWUENvZGVj
Q29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNv
ZGVjVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFw
dGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oCmluZGV4IGVlMWEzNzlhNWJkODJhMjZhYzMyMTJjM2Rk
ZjZlN2MwNDBjMThjNTUuLmUyZDE5OGZjYTJiNGMxYzhmN2ZlNjQ4NDNiMWM0MTNkN2IxODRmN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRy
YWNrUHJpdmF0ZUFWRk9iakMuaApAQCAtNjAsMTMgKzYwLDEzIEBAIHByaXZhdGU6CiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkluYmFuZENoYXB0
ZXJUcmFja1ByaXZhdGVBVkZPYmpDIjsgfQogCiAgICAgc3RydWN0IENoYXB0ZXJEYXRhIHsKLSAg
ICAgICAgTWVkaWFUaW1lIG1fc3RhcnRUaW1lOwotICAgICAgICBNZWRpYVRpbWUgbV9kdXJhdGlv
bjsKLSAgICAgICAgU3RyaW5nIG1fdGl0bGU7CisgICAgICAgIE1lZGlhVGltZSBzdGFydFRpbWU7
CisgICAgICAgIE1lZGlhVGltZSBkdXJhdGlvbjsKKyAgICAgICAgU3RyaW5nIHRpdGxlOwogCiAg
ICAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hhcHRlckRhdGEmIG90aGVy
KSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdGFydFRpbWUgPT0gb3Ro
ZXIubV9zdGFydFRpbWUgJiYgbV9kdXJhdGlvbiA9PSBvdGhlci5tX2R1cmF0aW9uICYmIG1fdGl0
bGUgPT0gb3RoZXIubV90aXRsZTsKKyAgICAgICAgICAgIHJldHVybiBzdGFydFRpbWUgPT0gb3Ro
ZXIuc3RhcnRUaW1lICYmIGR1cmF0aW9uID09IG90aGVyLmR1cmF0aW9uICYmIHRpdGxlID09IG90
aGVyLnRpdGxlOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9R
dWV1ZWRWaWRlb091dHB1dC5tbQppbmRleCAwYmMwODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIyYmUz
ZjUwNzhhNzdlLi45NDljNjBiYzQ4ZTVhOWEwYjI1ODBmMWEyMTIyZWVlODc1NDUxNWVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9RdWV1ZWRWaWRlb091dHB1dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpAQCAtMjMxLDE0ICsy
MzEsMTMgQEAgdm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9i
c2VydmVyKCkKICAgICBpZiAobV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGN1cnJlbnRUaW1lID0gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5
ZXIgY3VycmVudFRpbWVdKTsKLSAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlk
ZW9GcmFtZXMsIGN1cnJlbnRUaW1lKTsKKyAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1l
KG1fdmlkZW9GcmFtZXMsIFBBTDo6dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1cnJlbnRUaW1lXSkp
OwogICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlk
ZW9GcmFtZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbmV4dEltYWdlVGlt
ZSA9IGl0ZXItPmZpcnN0OwogCi0gICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21f
cGxheWVyIGFkZEJvdW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdp
dGhDTVRpbWU6UEFMOjp0b0NNVGltZShjdXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXRE
ZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
cHJvdGVjdGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVv
T3V0cHV0XSAoKSBtdXRhYmxlIHsKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBb
bV9wbGF5ZXIgYWRkQm91bmRhcnlUaW1lT2JzZXJ2ZXJGb3JUaW1lczpAW1tOU1ZhbHVlIHZhbHVl
V2l0aENNVGltZTpQQUw6OnRvQ01UaW1lKG5leHRJbWFnZVRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0
cHV0RGVsZWdhdGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIHByb3RlY3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92
aWRlb091dHB1dF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAg
ICAgICAgICAgICAgICAgd2Vha1RoaXMtPm5leHRJbWFnZVRpbWVSZWFjaGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDA1YTgzMTZkYzI3ZTYzMDE3ZjM5N2YxOTI0
NjliODJhMzNiN2IwMzQuLjA0YzAwM2I0ZTJlODc2OGNkNTg3Nzc0ZTVkMWVjNjMyNzljODhiZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0xNDIyLDE4ICsxNDIyLDE4
IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6
Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRo
IGVycm9yIiwgZXJyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRl
c1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBPcHVzQ29va2llQ29udGVu
dHMgY29va2llQ29udGVudHM7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRh
KHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tl
dFNpemUsIGJsb2NrQnVmZmVyRGF0YSwgY29va2llQ29udGVudHMpKSB7CisgICAgICAgICAgICBh
dXRvIGNvb2tpZUNvbnRlbnRzID0gcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6
ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZm
ZXJEYXRhKTsKKyAgICAgICAgICAgIGlmICghY29va2llQ29udGVudHMpIHsKICAgICAgICAgICAg
ICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJGYWlsZWQgdG8gcGFyc2UgT3B1cyBw
cml2YXRlIGRhdGEiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRl
c1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNvb2tpZUNvbnRl
bnRzLmZyYW1lc1BlclBhY2tldCkgeworICAgICAgICAgICAgaWYgKCFjb29raWVDb250ZW50cy0+
ZnJhbWVzUGVyUGFja2V0KSB7CiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9Q
T1NTSUJMRSgiT3B1cyBwcml2YXRlIGRhdGEgaW5kaWNhdGVzIDAgZnJhbWVzIHBlciBwYWNrZXQ7
IGJhaWxpbmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1Jl
bWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZyYW1lc1BlclBhY2tldCA9
IGNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldDsKLSAgICAgICAgICAgIG1fZnJhbWVEdXJh
dGlvbiA9IGNvb2tpZUNvbnRlbnRzLmZyYW1lRHVyYXRpb247Ci0gICAgICAgICAgICBmb3JtYXRE
ZXNjcmlwdGlvbiA9IGNyZWF0ZU9wdXNBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvb2tpZUNvbnRl
bnRzKTsKKyAgICAgICAgICAgIG1fZnJhbWVzUGVyUGFja2V0ID0gY29va2llQ29udGVudHMtPmZy
YW1lc1BlclBhY2tldDsKKyAgICAgICAgICAgIG1fZnJhbWVEdXJhdGlvbiA9IGNvb2tpZUNvbnRl
bnRzLT5mcmFtZUR1cmF0aW9uOworICAgICAgICAgICAgZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVh
dGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbigqY29va2llQ29udGVudHMpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikgewpAQCAtMTQ1Myw3ICsxNDUzLDYg
QEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpj
b25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgLy8gT3B1cyB0ZWNobmljYWxseSBh
bGxvd3MgdGhlIGZyYW1lIGR1cmF0aW9uIGFuZCBmcmFtZXMtcGVyLXBhY2tldCB2YWx1ZXMgdG8g
Y2hhbmdlIGZyb20gcGFja2V0IHRvIHBhY2tldC4KICAgICAgICAgLy8gQ29yZUF1ZGlvIGRvZXNu
J3Qgc3VwcG9ydCBBU0JEIHZhbHVlcyBsaWtlIHRoZXNlIHRvIGNoYW5nZSBvbiBhIHBlci1wYWNr
ZXQgYmFzaXMsIHNvIHRocm93IGFuIGVycm9yIHdoZW4KICAgICAgICAgLy8gdGhhdCBraW5kIG9m
IHZhcmlhYmlsaXR5IGlzIGVuY291bnRlcmVkLgotICAgICAgICBPcHVzQ29va2llQ29udGVudHMg
Y29va2llQ29udGVudHM7CiAgICAgICAgIGF1dG8mIHByaXZhdGVEYXRhID0gdHJhY2soKS5jb2Rl
Y19wcml2YXRlLnZhbHVlKCk7CiAgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRp
Z3VvdXNDb21wbGV0ZUJsb2NrQnVmZmVyKG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQsICptX2Nv
bXBsZXRlUGFja2V0U2l6ZSk7CiAgICAgICAgIGlmICghY29udGlndW91c0J1ZmZlcikgewpAQCAt
MTQ2Niw5ICsxNDY1LDggQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1
ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBm
YWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2
YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxl
dGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQotICAgICAgICAg
ICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0
Ci0gICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVE
dXJhdGlvbikgeworICAgICAgICBhdXRvIGNvb2tpZUNvbnRlbnRzID0gcGFyc2VPcHVzUHJpdmF0
ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRl
UGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhKTsKKyAgICAgICAgaWYgKCFjb29raWVDb250ZW50
cyB8fCBjb29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0
IHx8IGNvb2tpZUNvbnRlbnRzLT5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJhdGlvbikgewog
ICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1cyBmcmFtZXMtcGVy
LXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwogICAgICAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpWYXJpYWJsZUZyYW1lRHVyYXRpb24p
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgKaW5kZXggODcxMDRk
OGI3YjM1N2MxNjBiNmRjY2M0MWJmZTFmODllMGE2YzI3MS4uOGI2N2RlNmY0OTMwMWJhMDExNThh
OTgwMDk5NTkyNzcwNDQ1MjM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oCkBA
IC0yOCw4ICsyOCw4IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KIAotY2xhc3MgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRp
b24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1
LDkgKzU1LDkgQEAgc3RydWN0IE9wdXNDb29raWVDb250ZW50cyB7CiAKIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNPcHVzRGVjb2RlckF2YWlsYWJsZSgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCByZWdp
c3Rlck9wdXNEZWNvZGVySWZOZWVkZWQoKTsKLWJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6
ZV90IHByaXZhdGVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogcHJpdmF0ZURhdGEsIHNpemVfdCBmcmFt
ZURhdGFTaXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50cyYpOwor
c3RkOjpvcHRpb25hbDxPcHVzQ29va2llQ29udGVudHM+IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNp
emVfdCBwcml2YXRlRGF0YVNpemUsIGNvbnN0IHZvaWQqIHByaXZhdGVEYXRhLCBzaXplX3QgZnJh
bWVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhKTsKIFJldGFpblB0cjxDTUZvcm1hdERl
c2NyaXB0aW9uUmVmPiBjcmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBPcHVz
Q29va2llQ29udGVudHMmKTsKIAogfQogCi0jZW5kaWYgLy8gJiYgUExBVEZPUk0oQ09DT0EpCisj
ZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1t
CmluZGV4IDdlMGFmYjI5MGRkODVhNzdmOWJlZmZmNDk0N2E0N2I3NTM1ZWIyZjQuLmFiNWJhMWYy
NTJjZWMyNzE2YjUwMGY2ZjlhNWM0YmJhNjc0MjgxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxp
dGllc0NvY29hLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgY29uc3RleHByIGludDMyX3Qgb3B1c0Nv
bmZpZ1RvQmFuZHdpZHRoKHVpbnQ4X3QgY29uZmlnKQogfQogI2VuZGlmCiAKLWJvb2wgcGFyc2VP
cHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVj
UHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSwgT3B1
c0Nvb2tpZUNvbnRlbnRzJiBjb29raWUpCitzdGQ6Om9wdGlvbmFsPE9wdXNDb29raWVDb250ZW50
cz4gcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZv
aWQqIGNvZGVjUHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZVNpemUsIGNvbnN0IHZvaWQqIGZyYW1l
RGF0YSkKIHsKICNpZiBFTkFCTEUoT1BVUykKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvcmZjNzg0NQpAQCAtMjAxLDE2ICsyMDEsMTcgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRl
RGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0
YSwKICAgICBhdXRvKiBwcml2YXRlRGF0YVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihjb2RlY1ByaXZhdGVEYXRhKTsKIAogICAgIGlmIChjb2RlY1ByaXZhdGVTaXplIDwgMTkpCi0g
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyAxLiBNYWdpYyBTaWduYXR1cmU6CiAgICAgLy8KICAgICAvLyAgICAgVGhpcyBpcyBhbiA4LW9j
dGV0ICg2NC1iaXQpIGZpZWxkIHRoYXQgYWxsb3dzIGNvZGVjCiAgICAgLy8gICAgIGlkZW50aWZp
Y2F0aW9uIGFuZCBpcyBodW1hbiByZWFkYWJsZS4KICAgICBpZiAoc3RybmNtcCgiT3B1c0hlYWQi
LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwcml2YXRlRGF0YVB0ciksIDgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyAyLiBWZXJzaW9uICg4IGJpdHMsIHVuc2lnbmVkKToKKyAgICBPcHVzQ29va2llQ29udGVudHMg
Y29va2llOwogICAgIGNvb2tpZS52ZXJzaW9uID0gKihwcml2YXRlRGF0YVB0ciArIDgpOwogCiAg
ICAgLy8gMy4gT3V0cHV0IENoYW5uZWwgQ291bnQgJ0MnICg4IGJpdHMsIHVuc2lnbmVkKToKQEAg
LTIzMSw3ICsyMzIsNyBAQCBib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1By
aXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLAogICAgIGF1dG8gZnJhbWVQ
dHIgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZnJhbWVEYXRhKTsKIAogICAgIGlmIChm
cmFtZVNpemUgPCAxKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjcxNgog
ICAgIC8vIDMuMS4gVGhlIFRPQyBCeXRlCkBAIC0yODUsMjEgKzI4NiwyMCBAQCBib29sIHBhcnNl
T3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2Rl
Y1ByaXZhdGVEYXRhLAogICAgICAgICAvLwogICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgRmlndXJlIDU6IFRoZSBmcmFtZSBjb3VudCBieXRlCiAgICAgICAgIGlmIChmcmFtZVNpemUg
PCAyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICB1aW50OF90IGZyYW1lQ291bnRCeXRlID0gKihmcmFtZVB0ciAr
IDEpOwogICAgICAgICBjb29raWUuaXNWQlIgPSAoKGZyYW1lQ291bnRCeXRlICYgMGIxMDAwMDAw
MCkgPj4gNykgPT0gMTsKICAgICAgICAgY29va2llLmhhc1BhZGRpbmcgPSAoKGZyYW1lQ291bnRC
eXRlICYgMGIwMTAwMDAwMCkgPj4gNikgPT0gMTsKICAgICAgICAgY29va2llLmZyYW1lc1BlclBh
Y2tldCA9IChmcmFtZUNvdW50Qnl0ZSAmIDBiMDAxMTExMTEpOwogICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gY29va2llOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29kZWNQ
cml2YXRlU2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvZGVjUHJpdmF0ZURhdGEpOwogICAgIFVO
VVNFRF9QQVJBTShmcmFtZVNpemUpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZURhdGEpOwotICAg
IFVOVVNFRF9QQVJBTShjb29raWUpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJHTEJsb2NrbGlzdC5tbQppbmRleCBiNTJjODYxODZmMGJiMDZmZDMyM2VkMjlmODJkNzdjOTU4
ZmUyNjA4Li45ZjhkZWJlOTU0NjExZWEwZThhZDczMzBjZDkyNmFjMmEzMDkxNDAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCkBAIC0zNSw0MyAr
MzUsMjkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IE9TQnVpbGRJbmZvIHsKLSAg
ICBPU0J1aWxkSW5mbygpCi0gICAgICAgIDogbWFqb3IoMCkKLSAgICAgICAgLCBtaW5vcigwKQot
ICAgICAgICAsIGJ1aWxkKDApCi0gICAgewotICAgIH0KLQotICAgIE9TQnVpbGRJbmZvKGludCBt
YWpvciwgaW50IG1pbm9yLCBpbnQgYnVpbGQpCi0gICAgICAgIDogbWFqb3IobWFqb3IpCi0gICAg
ICAgICwgbWlub3IobWlub3IpCi0gICAgICAgICwgYnVpbGQoYnVpbGQpCi0gICAgewotICAgIH0K
KyAgICBpbnQgbWFqb3IgeyAwIH07IC8vIFJlcHJlc2VudHMgdGhlIDEzIGluIDEzQzY0LgorICAg
IGludCBtaW5vciB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgQyBpbiAxM0M2NCAoYXMgYSBudW1i
ZXIgd2hlcmUgQSA9PSAxLCBpLmUuIDMpLgorICAgIGludCBidWlsZCB7IDAgfTsgLy8gUmVwcmVz
ZW50cyB0aGUgNjQgaW4gMTNDNjQuCiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT1NCdWls
ZEluZm8mIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oT1NCdWls
ZEluZm8gb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFqb3IgPT0gb3RoZXIu
bWFqb3IgJiYgbWlub3IgPT0gb3RoZXIubWlub3IgJiYgYnVpbGQgPT0gb3RoZXIuYnVpbGQ7CiAg
ICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25z
dAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihPU0J1aWxkSW5mbyBvdGhlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA+IHN0
ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShPU0J1aWxkSW5mbyBvdGhlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA8PSBzdGQ6OnRp
ZShvdGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKICAgICB9CiAKLSAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I8KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpIDwgc3RkOjp0aWUob3RoZXIu
bWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CiAgICAgfQotCi0gICAgaW50IG1ham9y
OyAvLyBSZXByZXNlbnRzIHRoZSAxMyBpbiAxM0M2NC4KLSAgICBpbnQgbWlub3I7IC8vIFJlcHJl
c2VudHMgdGhlIEMgaW4gMTNDNjQgKGFzIGEgbnVtYmVyIHdoZXJlIEEgPT0gMSwgaS5lLiAzKS4K
LSAgICBpbnQgYnVpbGQ7IC8vIFJlcHJlc2VudHMgdGhlIDY0IGluIDEzQzY0LgogfTsKIAogc3Rh
dGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5TU3RyaW5nICpidWls
ZFN0cmluZykKQEAgLTgzLDcgKzY5LDcgQEAgc3RhdGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zy
b21PU0J1aWxkU3RyaW5nKE5TU3RyaW5nICpidWlsZFN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgIE5TTG9nKEAiV2ViR0xCbG9ja2xpc3QgY291bGQgbm90IHBhcnNlIE9TQnVpbGQgZW50
cnk6ICVAIiwgYnVpbGRTdHJpbmcpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiBPU0J1aWxkSW5m
bygpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIE5TVGV4dENoZWNraW5nUmVz
dWx0ICptYXRjaFJlc3VsdCA9IFttYXRjaGVzIG9iamVjdEF0SW5kZXg6MF07CkBAIC05MiwxNCAr
NzgsMTQgQEAgc3RhdGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5T
U3RyaW5nICpidWlsZFN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIE5TTG9nKEAiV2Vi
R0xCbG9ja2xpc3QgY291bGQgbm90IHBhcnNlIE9TQnVpbGQgZW50cnk6ICVAIiwgYnVpbGRTdHJp
bmcpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiBPU0J1aWxkSW5mbygpOworICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAogICAgIGludCBtYWpvclZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1
YnN0cmluZ1dpdGhSYW5nZTpbbWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjFdXSBpbnRWYWx1ZV07
CiAgICAgaW50IG1pbm9yVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdl
OlttYXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6Ml1dIGNoYXJhY3RlckF0SW5kZXg6MF0gLSAnQScg
KyAxOwogICAgIGludCBidWlsZFZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhS
YW5nZTpbbWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjNdXSBpbnRWYWx1ZV07CiAKLSAgICByZXR1
cm4gT1NCdWlsZEluZm8obWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1aWxkVmVyc2lvbik7
CisgICAgcmV0dXJuIHsgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1aWxkVmVyc2lvbiB9
OwogfQogCiBib29sIFdlYkdMQmxvY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdMKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFy
ZWRVbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1
ZGlvU2hhcmVkVW5pdC5oCmluZGV4IDhjYTVmMzE5ZTJiODA2Y2VhYTkwMjYxN2M1YzNhMjQ5YTFj
NzRhNGEuLjBhMTZlNTRmZGJhNDhkYjVhYTYzZWM2NDcyNmYyNzVmMGRiMTA4YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFy
ZWRVbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jh
c2VBdWRpb1NoYXJlZFVuaXQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+
CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCmluZGV4
IDYzMTJlMDY4NDI5N2I0M2MzMzExZTQ3MzliNjgxYWI0NDVjMzM2NzIuLmJmNWM3NGY0Y2ZkY2Ez
NzVlM2JlNDIzMmU0NzVjMjJkYWZmY2VjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL05TVVJMQ29ubmVjdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL1dhbGxUaW1lLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4
IDU2MDJkN2MyZDRkNWJjYTkzMjQ1NDRiNzVhZDIyY2IyNjU4ZWQwMmMuLjBkZjc0MjY1MWZmN2Jk
YzhiYjY0MzM0NmY5YmNjYmMyMDRjMTllMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAK
QEAgLTIxNCw3ICsyMTQsNyBAQCBib29sIEdyaWRJdGVyYXRvcjo6aXNFbXB0eUFyZWFFbm91Z2go
dW5zaWduZWQgcm93U3BhbiwgdW5zaWduZWQgY29sdW1uU3BhbikgY29ucwogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVt
cHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFj
a1NwYW4pCitzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdy
aWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFu
KQogewogICAgIEFTU0VSVCghbV9ncmlkLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2dyaWRb
MF0uaXNFbXB0eSgpKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFy
ZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1Nw
YQogICAgIEFTU0VSVCh2YXJ5aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAgaWYgKG1fZ3JpZC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgdW5zaWduZWQgcm93U3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zKSA/IHZhcnlpbmdUcmFja1NwYW4gOiBmaXhlZFRyYWNrU3BhbjsKICAgICB1bnNpZ25lZCBj
b2x1bW5TcGFuID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja1NwYW4g
OiB2YXJ5aW5nVHJhY2tTcGFuOwpAQCAtMjMxLDEzICsyMzEsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVk
VHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1f
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXpl
KCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRl
eDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2go
cm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlk
QXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWRE
ZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNw
YW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5k
ZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEdyaWRBcmVhKEdy
aWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4
ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVt
bkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2
YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3Vs
ZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICAr
K3ZhcnlpbmdUcmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
fQogICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAppbmRleCA3
MmNhZGY2OGVmNGQzMjY2Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi41OTQ3ZmU1ZTUzODY1M2Qw
YWFjODQ5NGZlYThkYTk2N2MzMDg1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTM3
LDEwICszNywxMSBAQCB0eXBlZGVmIFZlY3RvcjxXZWFrUHRyPFJlbmRlckJveD4sIDE+IEdyaWRD
ZWxsOwogdHlwZWRlZiBWZWN0b3I8VmVjdG9yPEdyaWRDZWxsPj4gR3JpZEFzTWF0cml4OwogdHlw
ZWRlZiBMaXN0SGFzaFNldDxzaXplX3Q+IE9yZGVyZWRUcmFja0luZGV4U2V0OwogCi1jbGFzcyBH
cmlkQXJlYTsKIGNsYXNzIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjsKIGNsYXNzIFJlbmRlckdyaWQ7
CiAKK3N0cnVjdCBHcmlkQXJlYTsKKwogY2xhc3MgR3JpZCBmaW5hbCB7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgR3JpZChSZW5kZXJHcmlkJik7CkBAIC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgog
CiAgICAgUmVuZGVyQm94KiBuZXh0R3JpZEl0ZW0oKTsKICAgICBib29sIGlzRW1wdHlBcmVhRW5v
dWdoKHVuc2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnN0OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRU
cmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pOworICAgIHN0ZDo6b3B0aW9uYWw8
R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNp
Z25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBHcmlkQXNNYXRy
aXgmIG1fZ3JpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJD
b3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApp
bmRleCBjZWNlZDM1ZTVjZTg3YmZiYzE0MDE4MzZjZDEzZWExYWVkZDdhZmMwLi4wMGViZDVmZmMw
NWI3MjIyYTRmN2E0M2IwYzQyMWIyYzM5NjU2ZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC00MzAsMjAgKzQzMCwxOSBAQCBTdHJpbmcgUmVuZGVy
Q291bnRlcjo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGJlZm9yZUFmdGVyQ29udGFpbmVyID0gYmVmb3JlQWZ0ZXJDb250YWluZXItPnBh
cmVudCgpOwogICAgICAgICB9Ci0gICAgICAgIG1ha2VDb3VudGVyTm9kZSgqYmVmb3JlQWZ0ZXJD
b250YWluZXIsIG1fY291bnRlci5pZGVudGlmaWVyKCksIHRydWUpLT5hZGRSZW5kZXJlcihjb25z
dF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykpOworICAgICAgICBtYWtlQ291bnRlck5vZGUo
KmJlZm9yZUFmdGVyQ29udGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllciwgdHJ1ZSktPmFkZFJl
bmRlcmVyKGNvbnN0X2Nhc3Q8UmVuZGVyQ291bnRlciY+KCp0aGlzKSk7CiAgICAgICAgIEFTU0VS
VChtX2NvdW50ZXJOb2RlKTsKICAgICB9CiAgICAgQ291bnRlck5vZGUqIGNoaWxkID0gbV9jb3Vu
dGVyTm9kZTsKICAgICBpbnQgdmFsdWUgPSBjaGlsZC0+YWN0c0FzUmVzZXQoKSA/IGNoaWxkLT52
YWx1ZSgpIDogY2hpbGQtPmNvdW50SW5QYXJlbnQoKTsKIAotICAgIFN0cmluZyB0ZXh0ID0gbGlz
dE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCB2YWx1ZSk7CisgICAgU3RyaW5nIHRl
eHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCB2YWx1ZSk7CiAKLSAgICBp
ZiAoIW1fY291bnRlci5zZXBhcmF0b3IoKS5pc051bGwoKSkgeworICAgIGlmICghbV9jb3VudGVy
LnNlcGFyYXRvci5pc051bGwoKSkgewogICAgICAgICBpZiAoIWNoaWxkLT5hY3RzQXNSZXNldCgp
KQogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+cGFyZW50KCk7CiAgICAgICAgIHdoaWxlIChD
b3VudGVyTm9kZSogcGFyZW50ID0gY2hpbGQtPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICB0ZXh0
ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCBjaGlsZC0+Y291bnRJblBh
cmVudCgpKQotICAgICAgICAgICAgICAgICsgbV9jb3VudGVyLnNlcGFyYXRvcigpICsgdGV4dDsK
KyAgICAgICAgICAgIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCBj
aGlsZC0+Y291bnRJblBhcmVudCgpKSArIG1fY291bnRlci5zZXBhcmF0b3IgKyB0ZXh0OwogICAg
ICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMjZmOGZjYmMwYWIyNzk2MGM0OTM5MjIzZTc0
OGQ5M2MzYjgzYzk5YS4uMWI2NzQ1YTllNzkwYjgwNWIxMzUwMDA0MmU0MWUwOTNlZDgxNjkzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzY1LDEzICs3NjUs
MTMgQEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0
b3IoR3JpZCYgZ3JpZCkgY29uc3QKICAgICBncmlkLmVuc3VyZUdyaWRTaXplKG1heGltdW1Sb3dJ
bmRleCArIGV4cGxpY2l0Um93U3RhcnQsIG1heGltdW1Db2x1bW5JbmRleCArIGV4cGxpY2l0Q29s
dW1uU3RhcnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNy
ZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmIGdy
aWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBz
cGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlvbnMpIGNv
bnN0CitHcmlkQXJlYSBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQ
b3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVt
LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlk
U3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBjb25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBjcm9zc0RpcmVjdGlvbiA9IHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5z
ID8gRm9yUm93cyA6IEZvckNvbHVtbnM7CiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZDcm9zc0Rp
cmVjdGlvbiA9IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1bnNpZ25lZCBj
cm9zc0RpcmVjdGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZv
ckF1dG9QbGFjZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAgR3JpZFNwYW4g
Y3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3Jp
ZFNwYW4oZW5kT2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiArIGNyb3NzRGly
ZWN0aW9uU3BhblNpemUpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRBcmVhPihzcGVjaWZp
ZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zIDogc3Bl
Y2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHNwZWNp
ZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAgICByZXR1cm4gR3Jp
ZEFyZWEoc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBv
c2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNv
bHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CiB9
CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChH
cmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRlbXMpIGNvbnN0
CkBAIC03OTIsNyArNzkyLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9y
QXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW4KICAgICAgICAgdW5z
aWduZWQgbWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uID0gbWFqb3JBeGlzUG9zaXRpb25zLnN0YXJ0
TGluZSgpOwogCiAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBhdXRvUGxhY2Vt
ZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFydExpbmUoKSwg
aXNHcmlkQXV0b0Zsb3dEZW5zZSA/IDAgOiBtaW5vckF4aXNDdXJzb3JzLmdldChtYWpvckF4aXNJ
bml0aWFsUG9zaXRpb24pKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBlbXB0
eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25z
LmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKKyAgICAgICAgYXV0byBlbXB0eUdy
aWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmlu
dGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYgKCFlbXB0eUdyaWRB
cmVhKQogICAgICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNw
ZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0sIGF1dG9QbGFj
ZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKIApAQCAtODI3
LDcgKzgyNyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3Jp
ZChHcmlkJiBncmlkLCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBBCiAgICAgdW5zaWduZWQgbWFqb3JB
eGlzQXV0b1BsYWNlbWVudEN1cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24o
KSA9PSBGb3JDb2x1bW5zID8gYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQgOiBhdXRvUGxhY2Vt
ZW50Q3Vyc29yLmZpcnN0OwogICAgIHVuc2lnbmVkIG1pbm9yQXhpc0F1dG9QbGFjZW1lbnRDdXJz
b3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1
dG9QbGFjZW1lbnRDdXJzb3IuZmlyc3QgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLnNlY29uZDsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhOwogICAgIEdyaWRTcGFuIG1pbm9yQXhpc1Bv
c2l0aW9ucyA9IGdyaWQuZ3JpZEl0ZW1TcGFuKGdyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWlub3JB
eGlzRGlyZWN0aW9uKCkpOwogICAgIGlmIChtaW5vckF4aXNQb3NpdGlvbnMuaXNUcmFuc2xhdGVk
RGVmaW5pdGUoKSkgewogICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHRyYWNrIGluIG1ham9y
IGF4aXMgaWYgaW5pdGlhbCBwb3NpdGlvbiBpbiBtaW5vciBheGlzIGlzIGJlZm9yZSBhdXRvLXBs
YWNlbWVudCBjdXJzb3IuCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFj
ZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKEdyaWQmIGdyaWQsIFJlbmRlckJveCYgZ3JpZEl0ZW0s
IEEKIAogICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgZW1wdHkgZ3JpZCBhcmVhIGFzIGl0IGRv
ZXMgbm90IGZpdCBpbiB0aGUgbWlub3IgYXhpcyBkaXJlY3Rpb24uCiAgICAgICAgICAgICAgICAg
Ly8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZW1wdHkgZ3JpZCBhcmVhIHlldCBhcyB3
ZSBtaWdodCBmaW5kIGEgdmFsaWQgb25lIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAg
ICAgICAgICBlbXB0eUdyaWRBcmVhID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBlbXB0eUdy
aWRBcmVhID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBB
cyB3ZSdyZSBtb3ZpbmcgdG8gdGhlIG5leHQgdHJhY2sgaW4gdGhlIG1ham9yIGF4aXMgd2Ugc2hv
dWxkIHJlc2V0IHRoZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IgaW4gdGhlIG1pbm9yIGF4aXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAyOWFlNTk0ODAwM2VlNmQyZGQ0
NDNiNTY5OWRjYjJkN2MxN2I5NjI2Li42NWM5ZTZlMjUyNjg0OTcwMzM4NGRkZGNiYTE3ODNjNGJi
NzdiMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTMyLDkgKzMy
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JpZEFyZWE7CiBjbGFzcyBH
cmlkU3BhbjsKIAorc3RydWN0IEdyaWRBcmVhOworCiBzdHJ1Y3QgQ29udGVudEFsaWdubWVudERh
dGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRBbGlnbm1lbnREYXRhKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMTEsNyArMTEyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0m
LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkgY29uc3Q7
CiAgICAgdm9pZCBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYpIGNv
bnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1wdHlHcmlkQXJlYUF0
U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRlckJveCYsIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsKKyAgICBHcmlk
QXJlYSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChH
cmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBH
cmlkU3BhbiYpIGNvbnN0OwogICAgIHZvaWQgcGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09u
R3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAgICAgdm9pZCBw
bGFjZUF1dG9NYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJlbmRlckJv
eCo+JikgY29uc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBB
dXRvUGxhY2VtZW50Q3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA3ZThkZDY4ODI0Y2ZiNDU2MjA4MGU1OTRlY2Q4
NDAyYTZjOWZjMDMyLi5mOWVkZTFkOTBiMzkzNmYxMzA5ZDQ3YjI0MDM1MTU0MmEyNzdjNDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcApAQCAtOTcsNyArOTcsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIFdlYkNvcmVIYXMzRFJl
bmRlcmluZyA9IHRydWU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhVVNFKENPTVBPU0lU
SU5HX0ZPUl9TTUFMTF9DQU5WQVNFUykKLXN0YXRpYyBjb25zdCBpbnQgY2FudmFzQXJlYVRocmVz
aG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CitzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAw
OwogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBlOTYzN2VlYmUyMDYwOWFlMGM1ZDJi
MWQ2ZjZiM2U2MWJjOWYxMjk4Li44NDZhZDE1MjVhZjIwNjYwN2I0MmJmNGVkMTEwY2ZhYTkxNGU5
M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAg
LTQ2Nyw4ICs0NjcsOCBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRl
bnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAKICAgICBMZW5ndGhQb2lu
dCBvYmplY3RQb3NpdGlvbiA9IHN0eWxlKCkub2JqZWN0UG9zaXRpb24oKTsKIAotICAgIExheW91
dFVuaXQgeE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54KCks
IGNvbnRlbnRSZWN0LndpZHRoKCkgLSBmaW5hbFJlY3Qud2lkdGgoKSk7Ci0gICAgTGF5b3V0VW5p
dCB5T2Zmc2V0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0aW9uLnkoKSwgY29u
dGVudFJlY3QuaGVpZ2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOworICAgIExheW91dFVuaXQg
eE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54LCBjb250ZW50
UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRoKCkpOworICAgIExheW91dFVuaXQgeU9mZnNl
dCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi55LCBjb250ZW50UmVjdC5o
ZWlnaHQoKSAtIGZpbmFsUmVjdC5oZWlnaHQoKSk7CiAKICAgICBmaW5hbFJlY3QubW92ZSh4T2Zm
c2V0LCB5T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRl
ci5jcHAKaW5kZXggY2E1Yjc0MGQ5MDQ0YmQ2NWUzNjZiNTdkNzZjMzQyOGMzZjllZTNmNi4uNGM0
NzRjOTVlM2VlYzIyMmYwNTM5OTM1MjI1ZDRhMjE5YTYwMjhkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC02NDAsNyArNjQwLDcgQEAgY29uc3Qg
U2hhZG93RGF0YSogVGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdygpIGNvbnN0CiAgICAg
aWYgKCF0ZXh0Qm94KCkubGVnYWN5SW5saW5lQm94KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlYnVnVGV4dFNoYWRv
dyhMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlw
ZTo6Rml4ZWQpKSwgTGVuZ3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgyMCwgTGVu
Z3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1aW50OF90
PiB7IDE1MCwgMCwgMCwgMTkwIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dE
YXRhPiBkZWJ1Z1RleHRTaGFkb3coTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0s
IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoMTAsIExlbmd0aFR5cGU6OkZpeGVkKSwg
TGVuZ3RoKDIwLCBMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUs
IFNSR0JBPHVpbnQ4X3Q+IHsgMTUwLCAwLCAwLCAxOTAgfSk7CiAgICAgcmV0dXJuICZkZWJ1Z1Rl
eHRTaGFkb3cuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0
eWxlLmgKaW5kZXggNDU5YmFmMTEyZmMwMzI3MGFmZTQ2ZmZlODRlZDBkNWJhNmIyNmUzOS4uMjVj
ZjQ4Y2Y0OTI4MTJlYTNlYjBmZmY0NjAwMmNkZDBkNzc2ZWIyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTMzLDEzICszMywxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3Mg
UmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNz
IFNoYWRvd0RhdGE7CisKIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBUZXh0UGFpbnRTdHls
ZSB7Ci0gICAgVGV4dFBhaW50U3R5bGUoKSB7IH0KKyAgICBUZXh0UGFpbnRTdHlsZSgpID0gZGVm
YXVsdDsKICAgICBUZXh0UGFpbnRTdHlsZShjb25zdCBDb2xvciYpOwogCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRleHRQYWludFN0eWxlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCmluZGV4IDU4NmNjNjY5ODAyNjVkOTg2
M2FjYWFhN2VlNmI4YTk4NjQ4MzI2YzYuLjdiZjViYzkwNmU4OGM1Mzc1ODEwY2MzZTFmYzI4ODk5
MDlkNTBhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3Vu
dGVyQ29udGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVy
Q29udGVudC5oCkBAIC0yOSwzMiArMjksMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb3VudGVyQ29udGVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgQ291bnRlckNvbnRlbnQoY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllciwgTGlz
dFN0eWxlVHlwZSBzdHlsZSwgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKQotICAgICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbGlzdFN0eWxlKHN0eWxlKQot
ICAgICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChz
dHlsZSAhPSBMaXN0U3R5bGVUeXBlOjpTdHJpbmcpOwotICAgIH0KK3N0cnVjdCBDb3VudGVyQ29u
dGVudCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgY29uc3Qg
QXRvbVN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQot
ICAgIExpc3RTdHlsZVR5cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGU7
IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Nl
cGFyYXRvcjsgfQotCi1wcml2YXRlOgotICAgIEF0b21TdHJpbmcgbV9pZGVudGlmaWVyOwotICAg
IExpc3RTdHlsZVR5cGUgbV9saXN0U3R5bGU7Ci0gICAgQXRvbVN0cmluZyBtX3NlcGFyYXRvcjsK
KyAgICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7CisgICAgTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGU7
CisgICAgQXRvbVN0cmluZyBzZXBhcmF0b3I7CiB9OwogCi1zdGF0aWMgaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDb3VudGVyQ29udGVudCYgYSwgY29uc3QgQ291bnRlckNvbnRlbnQmIGIp
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50JiBhLCBjb25zdCBD
b3VudGVyQ29udGVudCYgYikKIHsKLSAgICByZXR1cm4gYS5pZGVudGlmaWVyKCkgPT0gYi5pZGVu
dGlmaWVyKCkKLSAgICAgICAgJiYgYS5saXN0U3R5bGUoKSA9PSBiLmxpc3RTdHlsZSgpCi0gICAg
ICAgICYmIGEuc2VwYXJhdG9yKCkgPT0gYi5zZXBhcmF0b3IoKTsKKyAgICByZXR1cm4gYS5pZGVu
dGlmaWVyID09IGIuaWRlbnRpZmllcgorICAgICAgICAmJiBhLmxpc3RTdHlsZSA9PSBiLmxpc3RT
dHlsZQorICAgICAgICAmJiBhLnNlcGFyYXRvciA9PSBiLnNlcGFyYXRvcjsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXll
ci5oCmluZGV4IDk1ZDM4NjI3ZTE0MTNmNTI2MWMwOWM5ZmQ5ZmIxYWEyMjBkNTQ4YjQuLjcyNDBi
OTZiZTgwZTk3MzM2YmNkY2JjZDRlZTdlMjhkYzY3ODg5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTM1LDE4ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIHN0cnVjdCBGaWxsU2l6ZSB7Ci0gICAg
RmlsbFNpemUoKQotICAgICAgICA6IHR5cGUoRmlsbFNpemVUeXBlOjpTaXplKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBGaWxsU2l6ZShGaWxsU2l6ZVR5cGUgdHlwZSwgY29uc3QgTGVuZ3RoU2l6ZSYg
c2l6ZSkKLSAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICwgc2l6ZShzaXplKQotICAgIHsK
LSAgICB9Ci0KLSAgICBGaWxsU2l6ZVR5cGUgdHlwZTsKKyAgICBGaWxsU2l6ZVR5cGUgdHlwZSB7
IEZpbGxTaXplVHlwZTo6U2l6ZSB9OwogICAgIExlbmd0aFNpemUgc2l6ZTsKIH07CiAKQEAgLTg0
LDcgKzczLDcgQEAgcHVibGljOgogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKTsgfQogICAgIGNvbnN0IExl
bmd0aFNpemUmIHNpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NpemVMZW5ndGg7IH0KICAg
ICBGaWxsU2l6ZVR5cGUgc2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGaWxs
U2l6ZVR5cGU+KG1fc2l6ZVR5cGUpOyB9Ci0gICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIEZpbGxTaXplKHN0YXRpY19jYXN0PEZpbGxTaXplVHlwZT4obV9zaXplVHlwZSksIG1fc2l6
ZUxlbmd0aCk7IH0KKyAgICBGaWxsU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4geyBzaXplVHlw
ZSgpLCBtX3NpemVMZW5ndGggfTsgfQogICAgIE1hc2tNb2RlIG1hc2tNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TWFza01vZGU+KG1fbWFza01vZGUpOyB9CiAKICAgICBjb25zdCBG
aWxsTGF5ZXIqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQxZDk2MWRlODgyNmZi
ODMwMzMwOWI4ZTYzNTJmMjBmOWVhYi4uZDQ3NmY5MzE5ODdjZmNhNzE0MTRjYmZkZWNkODFhYmIx
ZWRmY2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRB
cmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKQEAg
LTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRGVzcGl0ZSBsaW5lIG51bWJl
cnMgaW4gdGhlIHNwZWMgc3RhcnQgaW4gIjEiLCB0aGUgaW5kZXhlcyBoZXJlIHN0YXJ0IGluICIw
Ii4KIGNsYXNzIEdyaWRTcGFuIHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBHcmlkU3BhbiB1bnRy
YW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIEdyaWRTcGFuKHN0YXJ0TGluZSwgZW5kTGluZSwgVW50cmFuc2xh
dGVkRGVmaW5pdGUpOwpAQCAtMTQyLDggKzE0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0KLSAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5z
bGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CisgICAgZW51bSBHcmlkU3BhblR5cGUgOiB1aW50
OF90IHsgVW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0
ZSB9OwogCiAgICAgR3JpZFNwYW4oaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIEdyaWRTcGFu
VHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQpAQCAtMTYzLDI0ICsxNjEsMjQgQEAg
cHJpdmF0ZToKICAgICBpbnQgbV9zdGFydExpbmU7CiAgICAgaW50IG1fZW5kTGluZTsKICAgICBH
cmlkU3BhblR5cGUgbV90eXBlOwotCi0KIH07CiAKIC8vIFRoaXMgcmVwcmVzZW50cyBhIGdyaWQg
YXJlYSB0aGF0IHNwYW5zIGluIGJvdGggcm93cycgYW5kIGNvbHVtbnMnIGRpcmVjdGlvbi4KLWNs
YXNzIEdyaWRBcmVhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICAvLyBIYXNoTWFwIHJlcXVpcmVzIGEgZGVmYXVsdCBjb25zdHVjdG9yLgorc3RydWN0IEdyaWRB
cmVhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBHcmlkU3Bh
biByb3dzOworICAgIEdyaWRTcGFuIGNvbHVtbnM7CisKICAgICBHcmlkQXJlYSgpCi0gICAgICAg
IDogY29sdW1ucyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCi0gICAgICAgICwgcm93
cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgIDogcm93cyhHcmlkU3Bh
bjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgICwgY29sdW1ucyhHcmlkU3Bhbjo6aW5k
ZWZpbml0ZUdyaWRTcGFuKCkpCiAgICAgewogICAgIH0KIAotICAgIEdyaWRBcmVhKGNvbnN0IEdy
aWRTcGFuJiByLCBjb25zdCBHcmlkU3BhbiYgYykKLSAgICAgICAgOiBjb2x1bW5zKGMpCi0gICAg
ICAgICwgcm93cyhyKQorICAgIEdyaWRBcmVhKEdyaWRTcGFuIHJvd3MsIEdyaWRTcGFuIGNvbHVt
bnMpCisgICAgICAgIDogcm93cyhyb3dzKQorICAgICAgICAsIGNvbHVtbnMoY29sdW1ucykKICAg
ICB7CiAgICAgfQogCkBAIC0xOTMsMTEgKzE5MSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KLQotICAgIEdyaWRTcGFuIGNvbHVtbnM7Ci0g
ICAgR3JpZFNwYW4gcm93czsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEdyaWRBcmVh
PiBOYW1lZEdyaWRBcmVhTWFwOwordXNpbmcgTmFtZWRHcmlkQXJlYU1hcCA9IEhhc2hNYXA8U3Ry
aW5nLCBHcmlkQXJlYT47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oCmluZGV4IDg2YWNkMzMwZGY2OWY4M2IwZDJm
ZDMyMjdlYmI4MGU5ZWZlN2U4N2EuLjVmODhkZTFmYzljMjEyMmNlMjJhZDdlMzBhMzBiMDg0OTM4
NWU5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVu
Z3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaApA
QCAtNDIsNyArNDIsNiBAQCBjbGFzcyBHcmlkTGVuZ3RoIHsKIHB1YmxpYzoKICAgICBHcmlkTGVu
Z3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3RoKGxlbmd0aCkKLSAg
ICAgICAgLCBtX2ZsZXgoMCkKICAgICAgICAgLCBtX3R5cGUoTGVuZ3RoVHlwZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghbGVuZ3RoLmlzVW5kZWZpbmVkKCkpOwpAQCAtNzIsMTQgKzcxLDEwIEBA
IHB1YmxpYzoKICAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBMZW5n
dGhUeXBlICYmIG1fbGVuZ3RoLmlzQXV0bygpOyB9CiAKIHByaXZhdGU6Ci0gICAgLy8gSWRlYWxs
eSB3ZSB3b3VsZCBwdXQgdGhlIDIgZm9sbG93aW5nIGZpZWxkcyBpbiBhIHVuaW9uLCBidXQgTGVu
Z3RoIGhhcyBhIGNvbnN0cnVjdG9yLAotICAgIC8vIGEgZGVzdHJ1Y3RvciBhbmQgYSBjb3B5IGFz
c2lnbm1lbnQgd2hpY2ggaXNuJ3QgYWxsb3dlZC4KKyAgICAvLyBDb3VsZCB1c2UgYSBWYXJpYW50
IGhlcmUgc2luY2Ugd2Ugb25seSB1c2UgbV9sZW5ndGggb3IgbV9mbGV4LCBhbmQgbV90eXBlIGRl
dGVybWluZXMgd2hpY2guCiAgICAgTGVuZ3RoIG1fbGVuZ3RoOwotICAgIGRvdWJsZSBtX2ZsZXg7
Ci0gICAgZW51bSBHcmlkTGVuZ3RoVHlwZSB7Ci0gICAgICAgIExlbmd0aFR5cGUsCi0gICAgICAg
IEZsZXhUeXBlCi0gICAgfTsKKyAgICBkb3VibGUgbV9mbGV4IHsgMCB9OworICAgIGVudW0gR3Jp
ZExlbmd0aFR5cGUgOiBib29sIHsgTGVuZ3RoVHlwZSwgRmxleFR5cGUgfTsKICAgICBHcmlkTGVu
Z3RoVHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAppbmRleCBhZDVhYmFkYWMwNGY3ZDJlYmJjYzY3MDRlMDEyOTNiMWRk
ZmFlM2E0Li4yZThkNTI2YTlmYTE5NWQ0NTc0MTYyZWU2MTc5ZjNlY2U2M2M3ZWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTE0OTcs
NyArMTQ5Nyw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zCiAgICAgLy8gU2hpZnQgZWxlbWVu
dCB0byB0aGUgYW5jaG9yIHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgogICAgIGF1dG8gdHJh
bnNmb3JtT3JpZ2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZ
KCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOwogICAgIGF1
dG8gYW5jaG9yID0gdHJhbnNmb3JtT3JpZ2luOwotICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueCgp
LmlzQXV0bygpKQorICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueC5pc0F1dG8oKSkKICAgICAgICAg
YW5jaG9yID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hvcigpLCBib3VuZGlu
Z0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKC1hbmNob3IueCgpLCAtYW5jaG9yLnkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNzRkZTkyN2ZmYzcyNjI3YjI1MzRlNWE5
Zjk4YmU3YmZlNTAwYTgzOC4uMjg5NTYzZWQyZmZlY2U5ZGIzY2U1OWU3YzJjNTk5ODA5OGI2NTNh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAg
LTEwOSw3ICsxMDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJvcmRlckRhdGE7
CiBjbGFzcyBDb250ZW50RGF0YTsKLWNsYXNzIENvdW50ZXJDb250ZW50OwogY2xhc3MgQ3Vyc29y
TGlzdDsKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRm9udE1ldHJpY3M7CkBAIC0xMjEsNiAr
MTIwLDcgQEAgY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhOwogY2xhc3MgU3R5bGVTY3JvbGxTbmFw
QXJlYTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCitzdHJ1Y3QgQ291bnRlckNvbnRl
bnQ7CiBzdHJ1Y3QgU2Nyb2xsU25hcEFsaWduOwogc3RydWN0IFNjcm9sbFNuYXBUeXBlOwogCkBA
IC02OTksNyArNjk5LDcgQEAgcHVibGljOgogICAgIFRleHRDb21iaW5lIHRleHRDb21iaW5lKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KG1fcmFyZUluaGVyaXRlZERh
dGEtPnRleHRDb21iaW5lKTsgfQogICAgIGJvb2wgaGFzVGV4dENvbWJpbmUoKSBjb25zdCB7IHJl
dHVybiB0ZXh0Q29tYmluZSgpICE9IFRleHRDb21iaW5lOjpOb25lOyB9CiAKLSAgICBjb25zdCBU
YWJTaXplJiB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGFi
U2l6ZTsgfQorICAgIFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVy
aXRlZERhdGEtPnRhYlNpemU7IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMKIApAQCAtMTI3
NCw3ICsxMjc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2Ryb3BGaWx0ZXIoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGJhY2tkcm9wRmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAjZW5kaWYKIAotICAg
IHZvaWQgc2V0VGFiU2l6ZShjb25zdCBUYWJTaXplJiBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5o
ZXJpdGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNldFRhYlNpemUoVGFiU2l6
ZSBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0K
IAogICAgIHZvaWQgc2V0QnJlYWtCZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsg
U0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0JlZm9yZSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJyZWFrQmVoYXZpb3IpKTsgfQogICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVh
a0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IGJyZWFrQWZ0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KQEAg
LTE1ODIsNyArMTU4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlh
bFRleHRDb21iaW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0KICAgICBzdGF0aWMg
VGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3Jp
ZW50YXRpb246Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0
KCkgeyByZXR1cm4gT2JqZWN0Rml0OjpGaWxsOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGlu
aXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwg
TGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCkp
OyB9CisgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0
dXJuIHsgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBM
ZW5ndGhUeXBlOjpQZXJjZW50KSB9OyB9CiAgICAgc3RhdGljIEVtcHR5Q2VsbCBpbml0aWFsRW1w
dHlDZWxscygpIHsgcmV0dXJuIEVtcHR5Q2VsbDo6U2hvdzsgfQogICAgIHN0YXRpYyBMaXN0U3R5
bGVQb3NpdGlvbiBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBMaXN0U3R5bGVQ
b3NpdGlvbjo6T3V0c2lkZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbml0aWFs
TGlzdFN0eWxlU3RyaW5nVmFsdWUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CkBAIC0xODk1LDEx
ICsxODk1LDExIEBAIHB1YmxpYzoKIAogICAgIExlbmd0aFBvaW50IG9mZnNldFBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0UG9zaXRpb247IH0K
ICAgICB2b2lkIHNldE9mZnNldFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRpb24pIHsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvZmZzZXRQb3NpdGlvbiwgV1RGTW92ZShwb3Np
dGlvbikpOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRQb3NpdGlvbigp
IHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExl
bmd0aFR5cGU6OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0
UG9zaXRpb24oKSB7IHJldHVybiB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6
OkF1dG8gfSB9OyB9CiAKICAgICBMZW5ndGhQb2ludCBvZmZzZXRBbmNob3IoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vZmZzZXRBbmNob3I7IH0KICAgICB2b2lkIHNl
dE9mZnNldEFuY2hvcihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgb2Zmc2V0QW5jaG9yLCBXVEZNb3ZlKHBvc2l0aW9uKSk7IH0KLSAgICBz
dGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJuIExlbmd0aFBv
aW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsg
fQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0QW5jaG9yKCkgeyByZXR1cm4g
eyB7IExlbmd0aFR5cGU6OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsgfQogCiAgICAg
T2Zmc2V0Um90YXRpb24gb2Zmc2V0Um90YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+b2Zmc2V0Um90YXRlOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRSb3RhdGUoT2Zm
c2V0Um90YXRpb24mJiByb3RhdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IG9mZnNldFJvdGF0ZSwgV1RGTW92ZShyb3RhdGlvbikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggODdjYTJiMjUyZjk2Zjg1ZTRiNDQw
YjZmZDJjMGY4ZTkzYWRlN2EwYy4uZGUzZGM2YzRjZGUxMjk3ZWVhMGNmY2Q2ZDYxZDY0NDEyODEw
ZTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0Rh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNw
cApAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dEYXRhOjpT
aGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCi0gICAgOiBtX2xvY2F0aW9uKG8ubV9sb2Nh
dGlvbi54KCksIG8ubV9sb2NhdGlvbi55KCkpCisgICAgOiBtX2xvY2F0aW9uKG8ubV9sb2NhdGlv
bikKICAgICAsIG1fc3ByZWFkKG8ubV9zcHJlYWQpCiAgICAgLCBtX3JhZGl1cyhvLm1fcmFkaXVz
KQogICAgICwgbV9jb2xvcihvLm1fY29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NoYWRvd0RhdGEuaAppbmRleCAyMmZlZjc2MmJjYTMxMGI2M2FlZmU4NTg2ZjQyMmFiOWY4
M2MwNWYyLi5kOWE0MWExNWJhMGQxZWZhOWM4ZmU1NDA3YjNkNTBlOWYyZWUwYWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIFNoYWRvd0RhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFkb3dEYXRh
KGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbiwgTGVuZ3RoIHJhZGl1cywgTGVuZ3RoIHNwcmVh
ZCwgU2hhZG93U3R5bGUgc3R5bGUsIGJvb2wgaXNXZWJraXRCb3hTaGFkb3csIGNvbnN0IENvbG9y
JiBjb2xvcikKLSAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgp
KQorICAgICAgICA6IG1fbG9jYXRpb24obG9jYXRpb24pCiAgICAgICAgICwgbV9zcHJlYWQoc3By
ZWFkKQogICAgICAgICAsIG1fcmFkaXVzKHJhZGl1cykKICAgICAgICAgLCBtX2NvbG9yKGNvbG9y
KQpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8p
OwogICAgIH0KICAgICAKLSAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBtX2xv
Y2F0aW9uLngoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9j
YXRpb24ueSgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
dGlvbi54OyB9CisgICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlv
bi55OyB9CiAgICAgY29uc3QgTGVuZ3RoUG9pbnQmIGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9sb2NhdGlvbjsgfQogICAgIGNvbnN0IExlbmd0aCYgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4g
bV9yYWRpdXM7IH0KICAgICBMYXlvdXRVbml0IHBhaW50aW5nRXh0ZW50KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2lu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2lu
dHMuaAppbmRleCBhMmM3YjBkYjNkNmU1ZmVkNjUzNmE1NjM5YjQ1NzkyZTQ3ODAxMTc5Li41Mzc0
NzIyYWIwOTRjNTc4Mzc4Y2RkMWU1ZDI5YWYwZWQ5OWE1YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCkBAIC0y
NSwxMSArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkxlbmd0aEJveC5oIgot
I2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5o
IgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmgKaW5kZXggOTE1MDQwMWE2NDVlNDI4NGU5MTY5MWJhMGJhNWM5NzhjOTgy
ZWZiZC4uMTI3ZWYzMjcyNDQ2NmNkNDhjMzc0MDJkZTc2MGE1Yjk3MGE2ZmE0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTI2OCw4ICsyNjgs
OCBAQCBpbmxpbmUgVGFiU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZShjb25z
dCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZl
VmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIFRhYlNpemUocHJpbWl0aXZlVmFsdWUu
ZmxvYXRWYWx1ZSgpLCBTcGFjZVZhbHVlVHlwZSk7Ci0gICAgcmV0dXJuIFRhYlNpemUocHJpbWl0
aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEoKSksIExlbmd0aFZhbHVlVHlwZSk7CisgICAgICAgIHJldHVybiB7IHByaW1p
dGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSwgVGFiU2l6ZTo6U3BhY2VzIH07CisgICAgcmV0dXJuIHsg
cHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEoKSksIFRhYlNpemU6Okxlbmd0aCB9OwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgpAQCAtNDE3LDcgKzQxNyw3IEBAIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAg
ICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVMZWZ0
LCBDU1NWYWx1ZVJpZ2h0PihidWlsZGVyU3RhdGUsICpwYWlyLT5maXJzdCgpKTsKICAgICBMZW5n
dGggbGVuZ3RoWSA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRvcCwgQ1NTVmFs
dWVCb3R0b20+KGJ1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKIAotICAgIHJldHVybiBM
ZW5ndGhQb2ludChsZW5ndGhYLCBsZW5ndGhZKTsKKyAgICByZXR1cm4geyBsZW5ndGhYLCBsZW5n
dGhZIH07CiB9CiAKIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
UG9zaXRpb25PckF1dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKQEAgLTQyNyw3ICs0MjcsNyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlcgogICAg
IGlmIChwcmltaXRpdmVWYWx1ZS5pc1BhaXIoKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRQb3Np
dGlvbihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIAotICAgIHJldHVybiBMZW5ndGhQb2ludChMZW5n
dGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7CisgICAgcmV0
dXJuIHsgeyBMZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9IH07CiB9CiAK
IGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAxM2NhZDli
N2ZkNzcyYTZjZDIzOTgzNDBlMjgyNzcxYmQ0OWI0NDYxLi5lODNlZjljNGE3ZjJkNGNlMTAyYWRk
Yjc5YzlhN2QwMjliMzA4Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJD
dXN0b20uaApAQCAtOTU2LDcgKzk1Niw3IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5VGV4dE9yQm94U2hhZG93VmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuY29sb3Io
KTsKIAotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KExl
bmd0aFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xv
cjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IG1ha2VVbmlx
dWU8U2hhZG93RGF0YT4oTGVuZ3RoUG9pbnQgeyB4LCB5IH0sIGJsdXIsIHNwcmVhZCwgc2hhZG93
U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1Zh
bGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICAgICAgaWYgKHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRy
eSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAg
ICAgICAgZWxzZQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUNvbnRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHUK
ICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUtPmxp
c3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFs
dWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0
U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAgICAgICAgICBh
dXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlk
ZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7Cisg
ICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50PihDb3Vu
dGVyQ29udGVudCB7IGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBj
b3VudGVyVmFsdWUtPnNlcGFyYXRvcigpIH0pOwogICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAgICAgICAgICAg
ZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggMzM1ZjNmYWRmYWFlZWUzZWI2MjUxZWZiOTg5OTUz
OTE0ZDYwMTYzNS4uZDhmNzdmNmFmMWI1N2EyMDhhNGVlMmRlMzM1OWE1YmFhODlkMmMxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAo=
</data>
<flag name="commit-queue"
          id="475988"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449784</attachid>
            <date>2022-01-23 23:21:14 -0800</date>
            <delta_ts>2022-01-24 14:36:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220123232113.patch</filename>
            <type>text/plain</type>
            <size>145223</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTE4YTgzYTYwMzg1Zjk5YjNkOTNmODdlNzJiZDYzYjYxOTNjZTYyLi45ZTJlYmM5NDY5NGUwMWE4
MTY3MTViMzcwMDk4NTg4MDkxNDYwMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg4NDAwLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0ZWVlZDhmMTFk
NzE5NzYyZmU4NzkzNmMzZDkxYWE0MmZlMjAyMTFmLi5iMDE5MzhhODllNzYxZGNkNDg0N2Q5ZTQz
ZjAzZDM5ZmQ1MGIyMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMi0wMS0yMyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5
IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOiBBZGQgU2Vjb25k
cyBhbmQgV2FsbFRpbWUgdG8gdGhlIHVzaW5nIHNlY3Rpb24uCisKKyAgICAgICAgKiB3dGYvTG9j
ay5oOiBVc2UgRm9yd2FyZC5oIGluc3RlYWQgb2YgU2Vjb25kcy5oIHNpbmNlIFNlY29uZHMgaXMg
b25seSB1c2VkCisgICAgICAgIGhlcmUgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybiB0eXBlLCBu
byBhY3R1YWwgdXNlIG9mIHRoZSBjbGFzcyBpbiB0aGUgaGVhZGVyLgorCisgICAgICAgICogd3Rm
L01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVkaWFUaW1lKTogRGVs
ZXRlZCB0aGUgY29weSBjb25zdHJ1Y3RvciB0aGF0IHVzZWQgdGhlIGFzc2lnbm1lbnQKKyAgICAg
ICAgb3BlcmF0b3IuIFRoZSBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3Igd29ya3MgZmluZSwgd2Ug
ZG9uJ3QgaGF2ZSB0byB3cml0ZSBvbmUuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVkaWFU
aW1lKTogQWRkZWQgYSBIYXNEb3VibGUgY29uc3RydWN0b3IgZm9yIHVzZSBpbiBjcmVhdGUKKyAg
ICAgICAgZnVuY3Rpb25zLiBJdCdzIGNvbnN0ZXhwciBidXQgaXQncyBpbiB0aGUgLmNwcCBmaWxl
IGJlY2F1c2UgaXQncyBwcml2YXRlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhGbG9hdCk6IFNpbXBsaWZpZWQgYnkgdXNpbmcgdGhlIEhhc0RvdWJsZSBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgQWxzbyB1c2Ugc3RkOjppc25hbiBpbnN0ZWFkIG9mIGEgdHJpY2t5IGFsdGVybmF0
ZSB3YXkgb2YgZG9pbmcgaXQuIFJlbW92ZWQgYQorICAgICAgICBzcGVjaWFsIGNhc2UgZm9yIGlu
ZmluaXR5IHNpbmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIGNhc2VzIGFscmVhZHkgY292ZXIg
dGhhdC4KKyAgICAgICAgQW5kIHJlcGxhY2VkIGEgc3RhdGljX2Nhc3Qgd2l0aCBhbiBhc3NpZ25t
ZW50IHRvIHRoZSBkZXNpcmVkIHR5cGUuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZSk6IERpdHRvLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHNvIHNpbWlsYXIgdGhlCisg
ICAgICAgIHNob3VsZCBwcm9iYWJseSBiZSB0ZW1wbGF0ZWQgaW5zdGVhZCBvZiByZXBlYXRlZCB0
d2ljZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0Zsb2F0IGNvbnN0KTogUmVwbGFjZWQg
YSBzdGF0aWNfY2FzdCB3aXRoIGFzc2lnbm1lbnQgdG8gdGhlCisgICAgICAgIGRlc2lyZWQgdHlw
ZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0RvdWJsZSBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuIFRoZSBkZWZhdWx0IGFz
c2lnbm1lbnQgb3BlcmF0b3Igd29ya3MgZmluZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpv
cGVyYXRvcisgY29uc3QpOiBUYWtlIHRoZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0ZWFkIG9mIHJl
ZmVyZW5jZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvci0gY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciogY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciEgY29uc3QpOiBTaW1wbGlmaWVkIHRoZSBp
bXBsZW1lbnRhdGlvbiBieSB1c2luZworICAgICAgICBmdW5jdGlvbnMgaW5zdGVhZCBvZiBjaGVj
a2luZyB0aGUgZmxhZ3MgZGlyZWN0bHkuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6IENhbGwgb3BlcmF0b3IhIGluc3RlYWQgb2YgcmVwZWF0aW5nIHRoZQor
ICAgICAgICBsb2dpYyB0d2ljZS4KKyAgICAgICAgKFdURjo6b3JkZXJpbmcpOiBBZGRlZCB0d28g
b3ZlcmxvYWRlZCBmdW5jdGlvbnMuIE9uZSBpcyBhIHRlbXBsYXRlIHRoYXQgY29tcGFyZXMKKyAg
ICAgICAgc2NhbGFycyBhbmQgdGhlIG90aGVyIGNvbXBhcmVzIHR3byBNZWRpYVRpbWUgb2JqZWN0
cy4gVGhlIHNlY29uZCBvbmUgcmVwbGFjZXMgdGhlCisgICAgICAgIE1lZGlhVGltZTo6Y29tcGFy
ZSBmdW5jdGlvbiwgd2hpY2ggaXMgbm93IGp1c3QgYSBsaWdodHdlaWdodCBjb3ZlciBmb3IgdGhp
cy4KKyAgICAgICAgVGhlIG9sZCBjb2RlIGhhZCB0cmlja3kgbG9naWMsIGFuZCB0aGlzIG5ldyBm
dW5jdGlvbiBpcyBhIGNvbXBsZXRlIHJld3JpdGUuCisgICAgICAgIFRvIG1ha2UgdGhlIGxvZ2lj
IGVhc3kgdG8gZm9sbG93LCB3ZSBleHRyYWN0IHRoZSBwaWVjZXMgb2YgdGhlIE1lZGlhVGltZSBh
bmQKKyAgICAgICAgY29tcGFyZSB0aGVtLiBJZiB0aGV5IGFyZSBlcXVhbCB0aGVuIHdlIGZhbGwg
dGhyb3VnaCB0byB0aGUgbmV4dCwgYW5kIHNvIG9uLgorICAgICAgICBBdCB0aGUgZW5kIHRoZXJl
IGFyZSB2YXJpb3VzIGNhc2VzIGZvciB0aW1lcyB3ZSBjYW4gY29tcGFyZSB3aXRob3V0IGRvaW5n
CisgICAgICAgIGFyaXRobWV0aWMsIGFuZCB0aGVzZSBhcmUgdGhlIHNhbWUgYXMgdGhlIG9uZXMg
dGhhdCB3ZXJlIGFscmVhZHkgaGVyZSwgYnV0IHdpdGgKKyAgICAgICAgc2ltcGxpZmllZCBsb2dp
YyBpbiBzb21lIGNhc2VzIHRoYXQgc2hvdWRsIGJlIGVhc2llciB0byBmb2xsb3csIGFuZCBubyB1
c2VzIG9mCisgICAgICAgIHN0YXRpY19jYXN0IGFueSBtb3JlLgorICAgICAgICAoV1RGOjpNZWRp
YVRpbWU6OmlzQmV0d2VlbiBjb25zdCk6IFRha2UgYXJndW1lbnRzIGJ5IHZhbHVlIGluc3RlYWQg
b2YgcmVmZXJlbmNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9UaW1lKTogRGVsZXRl
ZC4gTm93IGEgY29uc3RleHByIGluIHRoZSBoZWFkZXIuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6aW52YWxpZFRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV1RGOjpN
ZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAg
IChXVEY6Ok1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAg
ICAgKFdURjo6TWVkaWFUaW1lOjp0b1RpbWVTY2FsZSBjb25zdCk6IFVwZGF0ZWQgc2luY2UgUm91
bmRpbmdGbGFncyBpcyBub3cKKyAgICAgICAgUm91bmRpbmdNb2RlLiBJdCBkaWRuJ3QgbWFrZSBz
ZW5zZSB0byB0cmVhdCBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgcG9saWNpZXMKKyAgICAg
ICAgYXMgImZsYWdzIi4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUpOiBE
aXR0by4gQWxzbyB1c2Ugc3RkOjpleGNoYW5nZSBpbnN0ZWFkIG9mIHN0ZDo6c3dhcAorICAgICAg
ICBhbmQgdXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgbGxhYnMuCisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6dG9KU09OT2JqZWN0IGNvbnN0KTogUmVtb3ZlZCBzdGF0aWNfY2FzdCB0byBkb3VibGUu
CisgICAgICAgIChXVEY6OmFicyk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5zdGVhZCBvZiBy
ZWZlcmVuY2UuIFJlbmFtZWQgYXJndW1lbnQgZnJvbSByaHMKKyAgICAgICAgc2luY2UgdGhlIGFy
Z3VtZW50IGlzIG5vdCB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG9wZXJhdG9yLiBSZW1vdmVk
IHVubmVlZGVkCisgICAgICAgIHNwZWNpYWwgY2FzZSB0byBoYW5kbGUgaW52YWxpZCBiZWNhdXNl
IHRoZSBmdW5jdGlvbiB3b3JrcyBmaW5lIG9uIGludmFsaWQgd2l0aG91dCBpdC4KKyAgICAgICAg
VXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgZmFicy4KKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PCk6
IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5zdGVhZCBvZiByZWZlcmVuY2UuCisKKyAgICAgICAg
KiB3dGYvTWVkaWFUaW1lLmg6IFJlbW92ZWQgbWFueSB1bm5lZWRlZCBpbmNsdWRlcy4gUmVtb3Zl
ZCBXVEZfRVhQT1JUX1BSSVZBVEUKKyAgICAgICAgZnJvbSB0aGUgY2xhc3MgYmVjYXVzZSBpdCdz
IG5vdCBjb21wYXRpYmxlIHdpdGggaW5saW5lZCBmdW5jdGlvbnMgYWNjb3JkaW5nIHRvCisgICAg
ICAgIHRoZSBzdHlsZSBjaGVja2VyIHNjcmlwdCwgaW5zdGVhZCBleHBvcnRpbmcgaW5kaXZpZHVh
bCBmdW5jdGlvbnMuIFVzZSBPcHRpb25TZXQKKyAgICAgICAgZm9yIHRoZSBmbGFncy4gQ2hhbmdl
ZCBmdW5jdGlvbnMgdG8gdGFrZSBNZWRpYVRpbWUgYnkgdmFsdWUsIHNpbmNlIGl0J3MganVzdCBh
CisgICAgICAgIGZldyBzY2FsYXJzLCBubyBzaWduaWZpY2FudCBjb3N0IHRvIGNvcHlpbmcgaXQs
IGFuZCBwYXNzaW5nIGJ5IHZhbHVlIG1lYW5zIHRoZQorICAgICAgICB3aG9sZSB0aGluZyBtaWdo
dCBlbmQgdXAgaW4gcmVnaXN0ZXJzIHNpbmNlIHdlIHdvbid0IG5lZWQgYSBwb2ludGVyIHRvIGl0
IHRvCisgICAgICAgIHBhc3MgYXMgdGhlIHJlZmVyZW5jZS4gTWFkZSB0aGUgdmFyaW91cyBzcGVj
aWFsIHRpbWVzIHJldHVybiBjb25zdGV4cHIgdmFsdWVzLAorICAgICAgICB3aGljaCB3aWxsIGNv
bXBpbGUgdGhlIGFwcHJvcHJpYXRlIGJpdCBwYXR0ZXJuIHdpdGhvdXQgYW55IGNvbXB1dGF0aW9u
IG5lZWRlZC4KKyAgICAgICAgQ2hhbmdlZCB0aGUgdGltZVZhbHVlIGFuZCB0aW1lU2NhbGUgZnVu
Y3Rpb25zIHRvIHJldHVybiB0aGUgc2NhbGFycywgbm90IGEKKyAgICAgICAgY29uc3QgcmVmZXJl
bmNlLiBSZW5hbWVkIFJvdW5kaW5nRmxhZ3MgdG8gUm91bmRpbmdNb2RlIHNpbmNlIGl0J3MgYSBi
dW5jaCBvZgorICAgICAgICBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgbW9kZXMsIG5vdCBh
IHNldCBvZiBmbGFncyB3ZSBjYW4gY29tYmluZS4gUmVuYW1lZAorICAgICAgICB0aGUgZGF0YSBt
ZW1iZXJzLCBzaW5jZSB0aGV5IGRvbuKAmXQgYWxsIG5lZWQgYSAidGltZSIgcHJlZml4IGluIGEg
Y2xhc3MgdGhhdCBpcworICAgICAgICBhbHJlYWR5IG5hbWVkIE1lZGlhVGltZS4gVG9vayBzb21l
IHVubmVlZGVkIGNvbnN0IG91dCBvZiBNZWRpYVRpbWVSYW5nZS4KKyAgICAgICAgQWRkZWQgdGhl
IEVudW1UcmFpdHMgZm9yIHRoZSBmbGFncyBzbyB0aGV5IGNhbiBiZSBlbmNvZGVkIGFuZCBkZWNv
ZGVkLiBCZWZvcmUKKyAgICAgICAgd2Ugd2VyZSBlbmNvZGluZyB0aGUgc2V0IG9mIGZsYWdzIGFz
IGEgdWludDhfdCwgdGhpcyBpcyBiZXR0ZXIuCisKKyAgICAgICAgKiB3dGYvU2Vjb25kcy5oOiBN
b3ZlZCB0aGUgInVzaW5nIFdURjo6U2Vjb25kcyIgdG8gRm9yd2FyZC5oLgorCisgICAgICAgICog
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDogSW5jbHVkZSBGb3J3YXJkLmggaW5zdGVhZCBvZiBX
YWxsVGltZS5oIHNpbmNlCisgICAgICAgIHRoaXMgZmlsZSBvbmx5IGRlZmluZXMgYSBmdW5jdGlv
biB3aXRoIGEgV2FsbFRpbWUgYXJndW1lbnQgYW5kIGRvZXNuJ3QgbmVlZAorICAgICAgICB0byBw
dWxsIHRoZSBlbnRpcmUgY2xhc3MgZGVmaW5pdGlvbiBpbi4KKworICAgICAgICAqIHd0Zi9VUkwu
Y3BwOgorICAgICAgICAoV1RGOjpwb3J0QWxsb3dlZCk6IFVzZSBTb3J0ZWRBcnJheVNldC4KKwor
ICAgICAgICAqIHd0Zi9XYWxsVGltZS5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6V2FsbFRpbWUi
IHRvIEZvcndhcmQuaC4KKworICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29k
ZXIuaDogSW5jbHVkZSA8b3B0aW9uYWw+IGluc3RlYWQgb2YgRm9yd2FyZC5oLgorICAgICAgICBU
aGUgZm9ybWVyIGlzIGFsbCB0aGF0J3MgbmVlZGVkLgorCisgICAgICAgICogd3RmL3Bvc2l4L1Ro
cmVhZGluZ1BPU0lYLmNwcDogQWRkZWQgYW4gaW5jbHVkZSBvZiBXYWxsVGltZS5oIHNpbmNlCisg
ICAgICAgIFRocmVhZGluZ1ByaW1pdGl2ZXMuaCBubyBsb25nZXIgcHVsbHMgaXQgaW4uCisKKyAg
ICAgICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmg6IEFkZGVkIGFuIGluY2x1ZGUgb2YgPG9wdGlv
bmFsPiBzaW5jZSBMb2NrLmggbm8KKyAgICAgICAgbG9uZ2VyIHB1bGxzIGl0IGluIGJ5IGluY2x1
ZGluZyBTZWNvbmRzLmguCisKKyAgICAgICAgKiB3dGYvd2luL1RocmVhZGluZ1dpbi5jcHA6IEFk
ZGVkIGluY2x1ZGUgb2YgV2FsbFRpbWUuaCBzaW5jZQorICAgICAgICBUaHJlYWRpbmdQcmltaXRp
dmVzLmggbm8gbG9uZ2VyIHB1bGxzIGl0IGluLgorCisKIDIwMjItMDEtMjEgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWxheCBEYXRlLnBhcnNl
IHJlcXVpcmVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmZDk3MzFiZTZmYjVlZWJiYWZhNDY5ZDAyNjE1
YWU0NGNmZTRkOC4uNWJhMDRlYWYyOTMyY2RiYWE5Yzg2OGQxZmRjOTQwMmVhNDQyZGUwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBh
bmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKTogVXBkYXRlZCBzaW5jZSBUYWJTaXplIGFuZCBM
ZW5ndGhQb2ludCBhcmUgYm90aCBub3cKKyAgICAgICAgc3RydWN0dXJlcywgYW5kIGhhdmUgcHVi
bGljIGRhdGEgbWVtYmVycyByYXRoZXIgdGhhbiBnZXR0ZXIgZnVuY3Rpb25zLgorICAgICAgICAo
V2ViQ29yZTo6c2hhZG93Rm9yQmxlbmRpbmcpOiAgVXBkYXRlZCB0byByZXR1cm4gYSByZWZlcmVu
Y2UgcmF0aGVyIHRoYW4KKyAgICAgICAgYSBuZXZlci1udWxsIHBvaW50ZXIgYW5kIGZvciBjaGFu
Z2VzIHRvIExlbmd0aFBvaW50LgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvclBvc2l0aW9uKTogVXBkYXRl
ZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBhIHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OnZh
bHVlRm9yUG9zaXRpb25PckF1dG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRU
b0NTU1ZhbHVlKTogVXBkYXRlZCBzaW5jZSBDb3VudGVyQ29udGVudCBpcyBhIHN0cnVjdHVyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVy
dHlJblN0eWxlKTogVXBkYXRlZAorICAgICAgICBzaW5jZSBUYWJTaXplIGlzIGEgc3RydWN0dXJl
LgorCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwb2ludEZvckxlbmd0aFBvaW50KTogVXBkYXRlZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBhIHN0
cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCk6IERp
dHRvLgorCisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpTdHlsZTo6dGFiU2l6ZSBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2
YWx1ZSBpbnN0ZWFkCisgICAgICAgIG9mIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1BvdGVudGlhbEN1c3RvbUVsZW1lbnRO
YW1lQ2hhcmFjdGVyKTogVXNlIFNvcnRlZEFycmF5U2V0LgorICAgICAgICBJdCBkb2VzIHRoZSBz
b3J0ZWQgY2hlY2sgYXQgY29tcGlsZSB0aW1lIGluc3RlYWQgb2YgYXQgcnVudGltZSBpbiBkZWJ1
ZworICAgICAgICBidWlsZHMsIGFuZCBhbHNvIHNlbGVjdHMgbGluZWFyIHNlYXJjaCBpZiBpdCdz
IGZhc3RlciB0aGFuIGJpbmFyeSBzZWFyY2guCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVn
YWN5VGlsZUxheWVyUG9vbC5oOiBBZGRlZCBpbmNsdWRlIG9mIFdhbGxUaW1lLmgsIG5vCisgICAg
ICAgIGxvbmdlciBwdWxsZWQgaW4gYnkgVGhyZWFkaW5nLmguCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9MZW5ndGhQb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTogVXBkYXRl
ZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBhIHN0cnVjdHVyZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L0xlbmd0aFBvaW50Lmg6IENoYW5nZWQgTGVuZ3RoUG9pbnQgdG8gYmUgYSB0cnVlIHN0cnVjdHVy
ZQorICAgICAgICB3aXRoIHB1YmxpYyBkYXRhIG1lbWJlcnMuIFRoZSBvbGQgb25lIHdhcywgc3Ry
YW5nZWx5LCBhIHN0cnVjdCwgYnV0CisgICAgICAgIHdpdGggcHJpdmF0ZSBkYXRhLiBSZW1vdmVk
IHRoZSBjb25zdHJ1Y3RvcnMsIGdldHRlcnMsIGFuZCBzZXR0ZXJzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxC
dWZmZXI6OnRyeUNyZWF0ZSk6IEF2b2lkIGEgd2FybmluZyBhYm91dCBtaXhlZCBpbnRlZ2VyCisg
ICAgICAgIHR5cGVzIGJ5IHVzaW5nIGEgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OnRhYldpZHRoIGNvbnN0KTogUGFzcyBUYWJTaXplIGJ5IHZhbHVlIGluc3RlYWQKKyAgICAg
ICAgb2YgYnkgcmVmZXJlbmNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6
ZS5oOiBSZW1vdmVkIHRoZSBtXyBwcmVmaXhlcyBmcm9tIHRoZSBkYXRhCisgICAgICAgIG1lbWJl
cnMgc2luY2UgVGFiU2l6ZSBpcyBhIHN0cnVjdC4gUmVtb3ZlZCB0aGUgZ2V0dGVycy4gTWFya2Vk
IHRoZQorICAgICAgICBvcGVyYXRvciBib29sIGV4cGxpY2l0IHNpbmNlIHdlIGRvbid0IHdhbnQg
dG8gYWNjaWRlbnRhbGx5IHBhc3MgdGhpcworICAgICAgICB0byBzb21ldGhpbmcgdGFraW5nIGFu
IGludGVnZXIgYW5kIGdldHRpbmcgYSAwIG9yIDEuIEFkZGVkIGEgVGV4dFN0cmVhbQorICAgICAg
ICBvdmVybG9hZCBzbyB3ZSBjYW4gc3RyZWFtIHRoaXMgd2l0aG91dCBleHBsaWNpdGx5IHBpY2tp
bmcgaXQgYXBhcnQgYXQKKyAgICAgICAgZWFjaCBjYWxsIHNpdGUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjp0YWJT
aXplIGNvbnN0KTogUGFzcyBUYWJTaXplIGJ5IHZhbHVlIGluc3RlYWQgb2YKKyAgICAgICAgYnkg
cmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6c2V0VGFiU2l6ZSk6IERpdHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzVmFsaWRWUExldmVsKTogVXNlIFNvcnRlZEFycmF5U2V0LiBTYW1lIHJl
YXNvbnMgYXMgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBDb2xvclByaW1hcmll
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUE1hdHJpeENvZWZmaWNp
ZW50cyk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgUmVtb3Zl
ZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQzo6
Q2hhcHRlckRhdGEKKyAgICAgICAgZGF0YSBtZW1iZXJzIHNpbmNlIGl0J3MgYSBzdHJ1Y3QuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRl
b091dHB1dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1
cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIpOiBGaXhlZCBhCisgICAgICAgIGJ1ZyB3aGVyZSB0aGlz
IHVzZWQgY3VycmVudEltYWdlVGltZSBpbnN0ZWFkIG9mIG5leHRJbWFnZSB0aW1lLCBleHBvc2Vk
CisgICAgICAgIGJlY2F1c2UgdGhlIGNoYW5nZXMgdG8gTWVkaWFUaW1lIG1hZGUgaXQgZ2l2ZSB1
cyBhbiB1bnVzZWQgdmFyaWFibGUgd2FybmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEp
OgorICAgICAgICBVcGRhdGVkIHNpbmNlIHBhcnNlT3B1c1ByaXZhdGVEYXRhIG5vdyByZXR1cm5z
IGFuIG9wdGlvbmFsIGluc3RlYWQgb2YKKyAgICAgICAgcmV0dXJuaW5nIGEgYm9vbGVhbiBhbmQg
dXNpbmcgYW4gb3V0IGFyZ3VtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaDogQWRkZWQgYW4gaW5jbHVkZQorICAgICAgICBv
ZiBTZWNvbmRzLmggc2luY2UgaXQncyBubyBsb25nZXIgcHVsbGVkIGluIGJ5IG90aGVyIGluY2x1
ZGVzIGFuZAorICAgICAgICB0aGlzIHN0cnVjdHVyZSBoYXMgYSBTZWNvbmRzIGRhdGEgbWVtYmVy
LiBDaGFuZ2VkIHRoZSBwYXJzZU9wdXNQcml2YXRlRGF0YQorICAgICAgICBmdW5jdGlvbiB0byBy
ZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBib29sIGFuZCB1c2luZwor
ICAgICAgICBhbiBvdXQgYXJndW1lbnQgZm9yIHdoYXQgaXMgcGFyc2VkLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZU9wdXNQcml2YXRlRGF0YSk6IERpdHRvLgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tOiBSZW1vdmVkIHRoZSBjb25zdHJ1Y3RvcnMg
ZnJvbQorICAgICAgICBPU0J1aWxkSW5mbyBhbmQgbWFkZSBhbGwgaXRzIG9wZXJhdG9ycyBjb25z
dGV4cHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hh
cmVkVW5pdC5oOiBBZGRlZCBhbiBpbmNsdWRlCisgICAgICAgIG9mIFNlY29uZHMuaCwgbm8gbG9u
Z2VyIHB1bGxlZCBpbiBieSBMb2NrLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtMb2FkTWV0cmljcy5tbTogQWRkZWQgYW4gaW5jbHVkZSBvZgorICAgICAgICBX
YWxsVGltZS5oLCBubyBsb25nZXIgcHVsbGVkIGluIGJ5IFRocmVhZGluZ1ByaW1pdGl2ZXMuaC4K
KworICAgICAgICAqIHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJ
dGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEpOiBSZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVhZCBv
ZgorICAgICAgICBhIHVuaXF1ZV9wdHIuIE5vIHJlYXNvbiB0byB1c2UgYSBoZWFwIGJsb2NrIGZv
ciB0aGlzLgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkLmg6IFVwZGF0ZWQgc2luY2UgR3JpZEFy
ZWEgaXMgbm93IGEgc3RydWN0IGFuZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6
b3JpZ2luYWxUZXh0IGNvbnN0KTogVXBkYXRlZCBzaW5jZSBDb3VudGVyQ29udGVudAorICAgICAg
ICBpcyBub3cgYSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRT
cGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25zdCk6CisgICAgICAgIFJldHVybiBhIEdy
aWRBcmVhIGluc3RlYWQgb2YgYSB1bmlxdWVfcHRyLiBUaGUgcmV0dXJuIHZhbHVlIGlzIG5ldmVy
IG51bGwgYW5kCisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHV0IGl0IG9uIHRoZSBoZWFw
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJ
dGVtc09uR3JpZCBjb25zdCk6IFVwZGF0ZWQgZm9yCisgICAgICAgIHRoZSBhYm92ZSBjaGFuZ2Uu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25H
cmlkIGNvbnN0KTogVXNlIG9wdGlvbmFsIGluc3RlYWQKKyAgICAgICAgb2YgdW5pcXVlX3B0ciBm
b3IgYSBsb2NhbCB2YXJpYWJsZSB3aXRoIHRoZSBlbXB0eSBncmlkIGFyZWEgaW4gaXQuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDogVXBkYXRlZCBzaW5jZSBHcmlkQXJlYSBpcyBh
IHN0cnVjdCBhbmQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwOiBVc2UgY29uc3RleHByLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpy
ZXBsYWNlZENvbnRlbnRSZWN0IGNvbnN0KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBMZW5ndGhQ
b2ludCBpcyBhIHN0cnVjdHVyZS4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdyBj
b25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmg6IFN0
eWxlIHR3ZWFrcy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5o
OiBUdXJuZWQgdGhlIENvdW50ZXJDb250ZW50IGNsYXNzIGludG8gYQorICAgICAgICBzdHJ1Y3R1
cmUgd2l0aCBwdWJsaWMgZGF0YSBtZW1iZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5oOiBSZW1vdmVkIHRoZSBGaWxsU2l6ZSBjb25zdHJ1Y3RvcnMuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaDogTWFkZSBHcmlkU3BhblR5cGUgYmUgYmFz
ZWQgb24gYSB1aW50OF90LgorICAgICAgICBSZW9yZGVyZWQgdGhlIGRhdGEgbWVtYmVycyBvZiBH
cmlkQXJlYSB0byBiZSByb3dzIGZpcnN0IGFuZCB0aGVuIGNvbHVtbnMKKyAgICAgICAgdG8gZm9s
bG93IHRoZSBvcmRlciBmcm9tIHRoZSBjb25zdHJ1Y3RvciBhbmQgYWxzbyB0aGUgY29udmVudGlv
bmFsCisgICAgICAgICJ4IGJlZm9yZSB5IiBvcmRlcmluZy4gVGhpcyB3aWxsIGFsc28gYmUgZ29v
ZCBzb21lIGRheSB3aGVuIHdlIGNhbiB1c2UgdGhlCisgICAgICAgIGRlZmF1bHQgPD0+IGZyb20g
QysrMjAsIHdoaWNoIGRlcGVuZHMgb24gZGF0YSBtZW1iZXIgb3JkZXJpbmcuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oOiBUd2Vha2VkIGNvbW1lbnRzIGFuZCBtb3Zl
ZCBpbml0aWFsaXphdGlvbgorICAgICAgICBvZiBtX2ZsZXggZnJvbSB0aGUgY29uc3RydWN0b3Ig
dG8gdGhlIGRhdGEgbWVtYmVyIGRlZmluaXRpb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5
TW90aW9uUGF0aFRyYW5zZm9ybSBjb25zdCk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgTGVuZ3Ro
UG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaDogVXBkYXRlZCBzaW5jZSBDb3VudGVyQ29udGVudCBhbmQgTGVuZ2h0UG9pbnQKKyAg
ICAgICAgYXJlIHN0cnVjdHVyZXMsIGFuZCB0byBwYXNzIFRhYlNpemUgYnkgdmFsdWUuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKTogU2ltcGxpZmllZCBjb25zdHJ1Y3RvciBzaW5jZSBt
X2xvY2F0aW9uCisgICAgICAgIGRvZXMgbm90IGhhdmUgdG8gYmUgc3BsaXQgb3V0IGludG8geCBh
bmQgeSBqdXN0IHRvIGNvcHkgaXQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0Rh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OlNoYWRvd0RhdGEpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OnggY29uc3QpOiBVcGRhdGVkIHNpbmNlIExl
bmd0aFBvaW50IGlzIG5vdyBhIHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Rh
dGE6OnkgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNj
cm9sbFNuYXBQb2ludHMuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKworICAgICAgICAq
IHN0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYWJTaXplKTogVXBkYXRlZCBzaW5jZSBUYWJTaXpl
CisgICAgICAgIG5vIGxvbmdlciBoYXMgY29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbik6IFVwZGF0ZWQgc2luY2Ug
TGVuZ3RoUG9pbnQKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRv
KTogRGl0dG8uCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVDb250ZW50KTogVXBkYXRlZCBzaW5jZSBDb3VudGVyQ29udGVudAorICAgICAgICBubyBs
b25nZXIgaGFzIGNvbnN0cnVjdG9ycy4KKwogMjAyMi0wMS0yMyAgTWF0dCBXb29kcm93ICA8bWF0
dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIFBvc2l0aW9uOmZpeGVkIGxheWVycyBzaG91
bGRuJ3QgYWxsb2NhdGUgYSBiYWNraW5nIGJ1ZmZlciBpZiBhbGwgY2hpbGRyZW4gYXJlIG9mZnNj
cmVlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDMyODA5ODlkODAxYzk1ZDBjNGYyNGUyYzA1ZTk2
OGMxNTY1OTczNmIuLjYzNmNhYjNkNmUyZWNlMzc5YjM1Mzc3NTI0NjEzYzc2M2M5MDAzMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTIzICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVk
aWFUaW1lIGFuZCB2YXJpb3VzIHNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZG
b3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFBBTDo6Q01UaW1lSGFzRmxhZ3MpOiBEZWxldGVkLgor
ICAgICAgICAoUEFMOjp0b01lZGlhVGltZSk6IFRha2UgQ01UaW1lIGJ5IHZhbHVlLiBBbHNvIHNp
bXBsaWZpZWQgbG9naWMKKyAgICAgICAgdG8ganVzdCBjaGVjayBvbmUgZmxhZyBhdCBhIHRpbWUs
IHdoaWNoIG1lYW5zIHRoZSBDTVRpbWVIYXNGbGFncworICAgICAgICBmdW5jdGlvbiBpc24ndCBu
ZWVkZWQgYW55IG1vcmUuIEFsc28gbm93IHVzZXMgT3B0aW9uU2V0IGJlY2F1c2UKKyAgICAgICAg
dGhhdCBpcyBob3cgTWVkaWFUaW1lIHdvcmtzLgorICAgICAgICAoUEFMOjp0b0NNVGltZSk6IFRh
a2UgTWVkaWFUaW1lIGJ5IHZhbHVlLgorICAgICAgICAqIHBhbC9hdmZvdW5kYXRpb24vTWVkaWFU
aW1lQVZGb3VuZGF0aW9uLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKwogMjAyMi0wMS0yMSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIENGVVJM
Q2FjaGUgaW4gV2ViS2l0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MGE1MmQ0NmQ4NzRiNmMzMjg4YWY0ZjNiMjQ0
ZWRmYmU5YjExNGJiLi42NzNhODkzNTgzZDk3NzQ3NTJiOTFkNGZhNmE5ZDI5ZGM5NTQ5OTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAxLTIzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFu
ZCB2YXJpb3VzIHNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuaDoKKyAgICAgICAgQWRkZWQgYW4gaW5jbHVkZSBvZiA8b3B0aW9u
YWw+LCBubyBsb25nZXIgcHVsbGVkIGluIGJvdGggb3RoZXIgaGVhZGVycy4KKwogMjAyMi0wMS0y
MiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgUHVzaFN1YnNjcmlw
dGlvbklkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdXBlclNhbXBsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVy
U2FtcGxlci5jcHAKaW5kZXggNWY2NjNiMmZmNWE1ZTNjZTA4Y2U0MTI5NWI4MGE5YjcxMDZjODk3
OS4uNTQ2Y2FkNzZlYzg4ZDcxMDU0MWU2YTNlNTk4NWZhNjQ5NWZiNGY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNp
bmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCAzY2U3NjEy
NDJjMzJlYzE2OTRjNjVhNzdlNzQwZTljNjY5M2MzYmI0Li4zNjQ4NzJhMjAxYzZkYmVmZmM5N2U0
YzkwYzY1NjFiZjU5ZDA3NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgK
KysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0xNDksNiArMTQ5LDcgQEAgdXNpbmcg
V1RGOjpSZWZQdHI7CiB1c2luZyBXVEY6OlJldGFpblB0cjsKIHVzaW5nIFdURjo6U0hBMTsKIHVz
aW5nIFdURjo6U2NvcGVkTGFtYmRhOwordXNpbmcgV1RGOjpTZWNvbmRzOwogdXNpbmcgV1RGOjpT
dHJpbmc7CiB1c2luZyBXVEY6OlN0cmluZ0J1ZmZlcjsKIHVzaW5nIFdURjo6U3RyaW5nQnVpbGRl
cjsKQEAgLTE2MSw2ICsxNjIsNyBAQCB1c2luZyBXVEY6OlRleHRTdHJlYW07CiB1c2luZyBXVEY6
OlVSTDsKIHVzaW5nIFdURjo6VW5pcXVlUmVmOwogdXNpbmcgV1RGOjpWZWN0b3I7Cit1c2luZyBX
VEY6OldhbGxUaW1lOwogdXNpbmcgV1RGOjpXZWFrUHRyOwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPiB1c2luZyBFeHBlY3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjpleHBlY3RlZDxULCBF
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvY2suaCBiL1NvdXJjZS9XVEYvd3RmL0xv
Y2suaAppbmRleCA0MmU0YWFjMGM5YTRhYWU1OWU3MWI1ZTkzNThjYjg2MDE4ZDdlNDNhLi5jOGY2
YzMwZDJmMDcwZDMxNjkwYzY0MmViYjdiYjc2ZWE3Njk5MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Mb2NrLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9jay5oCkBAIC0yNiwxMCArMjYs
MTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5oPgogI2luY2x1ZGUgPHd0Zi9M
b2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvU2Vj
b25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZldHlBbmFseXNpcy5oPgogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUu
Y3BwIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAppbmRleCAyMjRlNzc0OTVmYjkzODM0
ZjU4ZjljZjMyMzQzN2YzOTE2OTM5NDJmLi5hOGI5YzM0M2M3MzhjYzA2N2UzMDBlZTMwYWMzMWU3
NmY0ZWI3ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgc3RhdGljIGlu
dDY0X3Qgc2lnbnVtKGludDY0X3QgdmFsKQogCiBjb25zdCB1aW50MzJfdCBNZWRpYVRpbWU6Ok1h
eGltdW1UaW1lU2NhbGUgPSAxMDAwMDAwMDAwOwogCi1NZWRpYVRpbWU6Ok1lZGlhVGltZShjb25z
dCBNZWRpYVRpbWUmIHJocykKK2NvbnN0ZXhwciBNZWRpYVRpbWU6Ok1lZGlhVGltZShVc2VEb3Vi
bGVGbGFnLCBkb3VibGUgdmFsdWUpCisgICAgOiBtX3ZhbHVlQXNEb3VibGUodmFsdWUpCiB7Ci0g
ICAgKnRoaXMgPSByaHM7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9h
dChmbG9hdCBmbG9hdFRpbWUpCkBAIC04NCw1NyArODQsNTEgQEAgTWVkaWFUaW1lIE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSkKICAgICBpZiAoc3RkOjppc2luZihm
bG9hdFRpbWUpKQogICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkgPyBuZWdh
dGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKIAotICAgIE1lZGlh
VGltZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxpZCB8IERvdWJsZVZhbHVlKTsKLSAg
ICB2YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZmxvYXRUaW1lOwotICAgIHJldHVybiB2YWx1
ZTsKKyAgICBkb3VibGUgdmFsdWUgPSBmbG9hdFRpbWU7CisgICAgcmV0dXJuIHsgVXNlRG91Ymxl
LCB2YWx1ZSB9OwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxv
YXQgZmxvYXRUaW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRmxvYXQoZmxvYXQgdmFsdWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBp
ZiAoZmxvYXRUaW1lICE9IGZsb2F0VGltZSkKKyAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwotICAgIGlmIChzdGQ6OmlzaW5mKGZsb2F0VGlt
ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5m
aW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUg
Pj0gbWF4UGx1c09uZTxpbnQ2NF90PikKKyAgICBpZiAodmFsdWUgPj0gbWF4UGx1c09uZTxpbnQ2
NF90PikKICAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgaWYgKGZs
b2F0VGltZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlmICh2
YWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICByZXR1
cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFs
dWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAK
LSAgICB3aGlsZSAoZmxvYXRUaW1lICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4p
CisgICAgd2hpbGUgKHZhbHVlICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAg
ICAgICAgIHRpbWVTY2FsZSAvPSAyOwotICAgIHJldHVybiBNZWRpYVRpbWUoc3RhdGljX2Nhc3Q8
aW50NjRfdD4oZmxvYXRUaW1lICogdGltZVNjYWxlKSwgdGltZVNjYWxlLCBWYWxpZCk7CisgICAg
aW50NjRfdCBzY2FsZWRWYWx1ZSA9IHZhbHVlICogdGltZVNjYWxlOworICAgIHJldHVybiB7IHNj
YWxlZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSkKK01lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlKQogewotICAgIGlmIChkb3VibGVUaW1lICE9IGRvdWJs
ZVRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1cm4gaW52YWxp
ZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3Np
dGl2ZUluZmluaXRlVGltZSgpOwotCi0gICAgTWVkaWFUaW1lIHZhbHVlKDAsIERlZmF1bHRUaW1l
U2NhbGUsIFZhbGlkIHwgRG91YmxlVmFsdWUpOwotICAgIHZhbHVlLm1fdGltZVZhbHVlQXNEb3Vi
bGUgPSBkb3VibGVUaW1lOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBpZiAoc3RkOjppc2luZih2
YWx1ZSkpCisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgcmV0dXJuIHsgVXNlRG91
YmxlLCB2YWx1ZSB9OwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGRvdWJsZSBkb3VibGVUaW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpCitNZWRpYVRpbWUgTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSwgdWludDMyX3QgdGltZVNjYWxlKQog
ewotICAgIGlmIChkb3VibGVUaW1lICE9IGRvdWJsZVRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4o
dmFsdWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2lu
Zihkb3VibGVUaW1lKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlm
IChkb3VibGVUaW1lID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAgaWYgKHZhbHVlID49IG1h
eFBsdXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgp
OwotICAgIGlmIChkb3VibGVUaW1lIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWlu
KCkpCisgICAgaWYgKHZhbHVlIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkp
CiAgICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAgIGlmICghdGltZVNj
YWxlKQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGRvdWJsZVRpbWUpID8gbmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBz
dGQ6OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5m
aW5pdGVUaW1lKCk7CiAKLSAgICB3aGlsZSAoZG91YmxlVGltZSAqIHRpbWVTY2FsZSA+PSBtYXhQ
bHVzT25lPGludDY0X3Q+KQorICAgIHdoaWxlICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVz
T25lPGludDY0X3Q+KQogICAgICAgICB0aW1lU2NhbGUgLz0gMjsKLSAgICByZXR1cm4gTWVkaWFU
aW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6cm91bmQoZG91YmxlVGltZSAqIHRpbWVTY2Fs
ZSkpLCB0aW1lU2NhbGUsIFZhbGlkKTsKKyAgICBpbnQ2NF90IHNjYWxlZFZhbHVlID0gc3RkOjpy
b3VuZCh2YWx1ZSAqIHRpbWVTY2FsZSk7CisgICAgcmV0dXJuIHsgc2NhbGVkVmFsdWUsIHRpbWVT
Y2FsZSB9OwogfQogCiBmbG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25zdApAQCAtMTQ2LDgg
KzE0MCw5IEBAIGZsb2F0IE1lZGlhVGltZTo6dG9GbG9hdCgpIGNvbnN0CiAgICAgaWYgKGlzTmVn
YXRpdmVJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjppbmZpbml0eSgpOwogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1
cm4gbV90aW1lVmFsdWVBc0RvdWJsZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1f
dGltZVZhbHVlKSAvIG1fdGltZVNjYWxlOworICAgICAgICByZXR1cm4gbV92YWx1ZUFzRG91Ymxl
OworICAgIGZsb2F0IHZhbHVlID0gbV92YWx1ZTsKKyAgICByZXR1cm4gdmFsdWUgLyBtX3NjYWxl
OwogfQogCiBkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0CkBAIC0xNTksMTkgKzE1
NCwxMiBAQCBkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0CiAgICAgaWYgKGlzTmVn
YXRpdmVJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKTsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0
dXJuIG1fdGltZVZhbHVlQXNEb3VibGU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4o
bV90aW1lVmFsdWUpIC8gbV90aW1lU2NhbGU7CisgICAgICAgIHJldHVybiBtX3ZhbHVlQXNEb3Vi
bGU7CisgICAgZG91YmxlIHZhbHVlID0gbV92YWx1ZTsKKyAgICByZXR1cm4gdmFsdWUgLyBtX3Nj
YWxlOwogfQogCi1NZWRpYVRpbWUmIE1lZGlhVGltZTo6b3BlcmF0b3I9KGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKQotewotICAgIG1fdGltZVZhbHVlID0gcmhzLm1fdGltZVZhbHVlOwotICAgIG1fdGlt
ZVNjYWxlID0gcmhzLm1fdGltZVNjYWxlOwotICAgIG1fdGltZUZsYWdzID0gcmhzLm1fdGltZUZs
YWdzOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0
b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6b3Bl
cmF0b3IrKE1lZGlhVGltZSByaHMpIGNvbnN0CiB7CiAgICAgaWYgKHJocy5pc0ludmFsaWQoKSB8
fCBpc0ludmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CkBAIC0xOTIsNyAr
MTgwLDcgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYg
cmhzKSBjb25zdAogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKIAogICAg
IGlmIChoYXNEb3VibGVWYWx1ZSgpICYmIHJocy5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICBy
ZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUgKyBy
aHMubV90aW1lVmFsdWVBc0RvdWJsZSk7CisgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUobV92YWx1ZUFzRG91YmxlICsgcmhzLm1fdmFsdWVBc0RvdWJsZSk7CiAKICAg
ICBpZiAoaGFzRG91YmxlVmFsdWUoKSB8fCByaHMuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSh0b0RvdWJsZSgpICsgcmhzLnRvRG91
YmxlKCkpOwpAQCAtMjAxLDEzICsxODksMTMgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0
b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBiID0gcmhzOwog
CiAgICAgdWludDMyX3QgY29tbW9uVGltZVNjYWxlOwotICAgIGlmICghbGVhc3RDb21tb25NdWx0
aXBsZShhLm1fdGltZVNjYWxlLCBiLm1fdGltZVNjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNv
bW1vblRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCisgICAgaWYgKCFsZWFzdENvbW1vbk11
bHRpcGxlKGEubV9zY2FsZSwgYi5tX3NjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRp
bWVTY2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSA9IE1h
eGltdW1UaW1lU2NhbGU7CiAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAg
ICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwotICAgIHdoaWxlICghc2FmZUFkZChh
Lm1fdGltZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgIHdoaWxl
ICghc2FmZUFkZChhLm1fdmFsdWUsIGIubV92YWx1ZSwgYS5tX3ZhbHVlKSkgewogICAgICAgICBp
ZiAoY29tbW9uVGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1
ZSA+IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsK
KyAgICAgICAgICAgIHJldHVybiBhLm1fdmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAy
OwogICAgICAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwogICAgICAgICBiLnNl
dFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwpAQCAtMjE1LDcgKzIwMyw3IEBAIE1lZGlhVGlt
ZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICBy
ZXR1cm4gYTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlh
VGltZSYgcmhzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKE1lZGlhVGlt
ZSByaHMpIGNvbnN0CiB7CiAgICAgaWYgKHJocy5pc0ludmFsaWQoKSB8fCBpc0ludmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CkBAIC0yMzYsNyArMjI0LDcgQEAgTWVkaWFU
aW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAg
ICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKIAogICAgIGlmIChoYXNEb3VibGVW
YWx1ZSgpICYmIHJocy5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1cm4gTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUgLSByaHMubV90aW1lVmFsdWVB
c0RvdWJsZSk7CisgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV92
YWx1ZUFzRG91YmxlIC0gcmhzLm1fdmFsdWVBc0RvdWJsZSk7CiAKICAgICBpZiAoaGFzRG91Ymxl
VmFsdWUoKSB8fCByaHMuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZSh0b0RvdWJsZSgpIC0gcmhzLnRvRG91YmxlKCkpOwpAQCAtMjQ1
LDEzICsyMzMsMTMgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlh
VGltZSYgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBiID0gcmhzOwogCiAgICAgdWludDMyX3Qg
Y29tbW9uVGltZVNjYWxlOwotICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3Rp
bWVTY2FsZSwgcmhzLm1fdGltZVNjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVT
Y2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKHRo
aXMtPm1fc2NhbGUsIHJocy5tX3NjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVT
Y2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSA9IE1heGlt
dW1UaW1lU2NhbGU7CiAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICBi
LnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwotICAgIHdoaWxlICghc2FmZVN1YihhLm1f
dGltZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgIHdoaWxlICgh
c2FmZVN1YihhLm1fdmFsdWUsIGIubV92YWx1ZSwgYS5tX3ZhbHVlKSkgewogICAgICAgICBpZiAo
Y29tbW9uVGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+
IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBhLm1fdmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOwog
ICAgICAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwogICAgICAgICBiLnNldFRp
bWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwpAQCAtMjc1LDkgKzI2Myw5IEBAIE1lZGlhVGltZSBN
ZWRpYVRpbWU6Om9wZXJhdG9yLSgpIGNvbnN0CiAKICAgICBNZWRpYVRpbWUgbmVnYXRpdmVUaW1l
ID0gKnRoaXM7CiAgICAgaWYgKG5lZ2F0aXZlVGltZS5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAg
ICBuZWdhdGl2ZVRpbWUubV90aW1lVmFsdWVBc0RvdWJsZSA9IC1uZWdhdGl2ZVRpbWUubV90aW1l
VmFsdWVBc0RvdWJsZTsKKyAgICAgICAgbmVnYXRpdmVUaW1lLm1fdmFsdWVBc0RvdWJsZSA9IC1u
ZWdhdGl2ZVRpbWUubV92YWx1ZUFzRG91YmxlOwogICAgIGVsc2UKLSAgICAgICAgbmVnYXRpdmVU
aW1lLm1fdGltZVZhbHVlID0gLW5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZTsKKyAgICAgICAgbmVn
YXRpdmVUaW1lLm1fdmFsdWUgPSAtbmVnYXRpdmVUaW1lLm1fdmFsdWU7CiAgICAgcmV0dXJuIG5l
Z2F0aXZlVGltZTsKIH0KIApAQCAtMzA3LDE0ICsyOTUsMTQgQEAgTWVkaWFUaW1lIE1lZGlhVGlt
ZTo6b3BlcmF0b3IqKGludDMyX3QgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBhID0gKnRoaXM7
CiAKICAgICBpZiAoYS5oYXNEb3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgIGEubV90aW1lVmFsdWVB
c0RvdWJsZSAqPSByaHM7CisgICAgICAgIGEubV92YWx1ZUFzRG91YmxlICo9IHJoczsKICAgICAg
ICAgcmV0dXJuIGE7CiAgICAgfQogCi0gICAgd2hpbGUgKCFzYWZlTXVsdGlwbHkoYS5tX3RpbWVW
YWx1ZSwgcmhzLCBhLm1fdGltZVZhbHVlKSkgewotICAgICAgICBpZiAoYS5tX3RpbWVTY2FsZSA9
PSAxKQotICAgICAgICAgICAgcmV0dXJuIHNpZ251bShhLm1fdGltZVZhbHVlKSA9PSBzaWdudW0o
cmhzKSA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwot
ICAgICAgICBhLnNldFRpbWVTY2FsZShhLm1fdGltZVNjYWxlIC8gMik7CisgICAgd2hpbGUgKCFz
YWZlTXVsdGlwbHkoYS5tX3ZhbHVlLCByaHMsIGEubV92YWx1ZSkpIHsKKyAgICAgICAgaWYgKGEu
bV9zY2FsZSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIHNpZ251bShhLm1fdmFsdWUpID09IHNp
Z251bShyaHMpID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCk7CisgICAgICAgIGEuc2V0VGltZVNjYWxlKGEubV9zY2FsZSAvIDIpOwogICAgIH0KIAogICAg
IHJldHVybiBhOwpAQCAtMzIyLDE3NiArMzEwLDEwOSBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpv
cGVyYXRvciooaW50MzJfdCByaHMpIGNvbnN0CiAKIGJvb2wgTWVkaWFUaW1lOjpvcGVyYXRvciEo
KSBjb25zdAogewotICAgIHJldHVybiAobV90aW1lRmxhZ3MgPT0gVmFsaWQgJiYgIW1fdGltZVZh
bHVlKQotICAgICAgICB8fCAobV90aW1lRmxhZ3MgPT0gKFZhbGlkIHwgRG91YmxlVmFsdWUpICYm
ICFtX3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICB8fCBpc0ludmFsaWQoKTsKKyAgICByZXR1
cm4gaXNJbnZhbGlkKCkgfHwgKGhhc0RvdWJsZVZhbHVlKCkgPyAhbV92YWx1ZUFzRG91YmxlIDog
IW1fdmFsdWUpOwogfQogCiBNZWRpYVRpbWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewotICAg
IHJldHVybiAhKG1fdGltZUZsYWdzID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAgICAg
JiYgIShtX3RpbWVGbGFncyA9PSAoVmFsaWQgfCBEb3VibGVWYWx1ZSkgJiYgIW1fdGltZVZhbHVl
QXNEb3VibGUpCi0gICAgICAgICYmICFpc0ludmFsaWQoKTsKKyAgICByZXR1cm4gISEqdGhpczsK
IH0KIAotTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3MgTWVkaWFUaW1lOjpjb21wYXJlKGNvbnN0
IE1lZGlhVGltZSYgcmhzKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIE1lZGlh
VGltZTo6Q29tcGFyaXNvbkZsYWdzIG9yZGVyaW5nKFQgYSwgVCBiKQogewotICAgIGF1dG8gYW5k
RmxhZ3MgPSBtX3RpbWVGbGFncyAmIHJocy5tX3RpbWVGbGFnczsKLSAgICBpZiAoYW5kRmxhZ3Mg
JiAoUG9zaXRpdmVJbmZpbml0ZSB8IE5lZ2F0aXZlSW5maW5pdGUgfCBJbmRlZmluaXRlKSkKLSAg
ICAgICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICBhdXRvIG9yRmxhZ3MgPSBtX3RpbWVGbGFncyB8
IHJocy5tX3RpbWVGbGFnczsKLSAgICBpZiAoIShvckZsYWdzICYgVmFsaWQpKQotICAgICAgICBy
ZXR1cm4gRXF1YWxUbzsKLQotICAgIGlmICghKGFuZEZsYWdzICYgVmFsaWQpKQotICAgICAgICBy
ZXR1cm4gaXNJbnZhbGlkKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwotCi0gICAgaWYgKG9y
RmxhZ3MgJiBOZWdhdGl2ZUluZmluaXRlKQotICAgICAgICByZXR1cm4gaXNOZWdhdGl2ZUluZmlu
aXRlKCkgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotCi0gICAgaWYgKG9yRmxhZ3MgJiBQb3Np
dGl2ZUluZmluaXRlKQotICAgICAgICByZXR1cm4gaXNQb3NpdGl2ZUluZmluaXRlKCkgPyBHcmVh
dGVyVGhhbiA6IExlc3NUaGFuOwotCi0gICAgaWYgKG9yRmxhZ3MgJiBJbmRlZmluaXRlKQotICAg
ICAgICByZXR1cm4gaXNJbmRlZmluaXRlKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwotCi0g
ICAgaWYgKGFuZEZsYWdzICYgRG91YmxlVmFsdWUpIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVl
QXNEb3VibGUgPT0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpCi0gICAgICAgICAgICByZXR1cm4g
RXF1YWxUbzsKLQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWVBc0RvdWJsZSA8IHJocy5tX3Rp
bWVWYWx1ZUFzRG91YmxlID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9Ci0KLSAgICBp
ZiAob3JGbGFncyAmIERvdWJsZVZhbHVlKSB7Ci0gICAgICAgIGRvdWJsZSBhID0gdG9Eb3VibGUo
KTsKLSAgICAgICAgZG91YmxlIGIgPSByaHMudG9Eb3VibGUoKTsKLSAgICAgICAgaWYgKGEgPiBi
KQotICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOwotICAgICAgICBpZiAoYSA8IGIpCi0g
ICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47Ci0gICAgICAgIHJldHVybiBFcXVhbFRvOwotICAg
IH0KLQotICAgIGlmICgobV90aW1lVmFsdWUgPCAwKSAhPSAocmhzLm1fdGltZVZhbHVlIDwgMCkp
Ci0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8IDAgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFu
OworICAgIHJldHVybiBhIDwgYiA/IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzOjpMZXNzVGhh
biA6IGIgPCBhID8gTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3M6OkdyZWF0ZXJUaGFuIDogTWVk
aWFUaW1lOjpDb21wYXJpc29uRmxhZ3M6OkVxdWFsVG87Cit9CiAKLSAgICBpZiAoIW1fdGltZVZh
bHVlICYmICFyaHMubV90aW1lVmFsdWUpCi0gICAgICAgIHJldHVybiBFcXVhbFRvOworTWVkaWFU
aW1lOjpDb21wYXJpc29uRmxhZ3Mgb3JkZXJpbmcoTWVkaWFUaW1lIGEsIE1lZGlhVGltZSBiKQor
eworICAgIGF1dG8gb3JkZXJpbmdDbGFzcyA9IFtdKE1lZGlhVGltZSB0aW1lKSB7CisgICAgICAg
IGlmICh0aW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgICBpZiAodGltZS5pc0luZGVmaW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICBpZiAodGltZS5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVy
biAyOworICAgICAgICBpZiAodGltZS5pc0ludmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiAz
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9OworICAgIGF1dG8gYUNsYXNzID0gb3JkZXJpbmdD
bGFzcyhhKTsKKyAgICBhdXRvIGJDbGFzcyA9IG9yZGVyaW5nQ2xhc3MoYik7CisgICAgaWYgKGFD
bGFzcyB8fCBiQ2xhc3MpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhhQ2xhc3MsIGJDbGFzcyk7
CiAKLSAgICBpZiAobV90aW1lU2NhbGUgPT0gcmhzLm1fdGltZVNjYWxlKSB7Ci0gICAgICAgIGlm
IChtX3RpbWVWYWx1ZSA9PSByaHMubV90aW1lVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gRXF1
YWxUbzsKLSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlIDwgcmhzLm1fdGltZVZhbHVlID8gTGVz
c1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9CisgICAgaWYgKGEuaGFzRG91YmxlVmFsdWUoKSB8
fCBiLmhhc0RvdWJsZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhhLnRvRG91Ymxl
KCksIGIudG9Eb3VibGUoKSk7CiAKLSAgICBpZiAobV90aW1lVmFsdWUgPT0gcmhzLm1fdGltZVZh
bHVlKQotICAgICAgICByZXR1cm4gbV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUgPyBHcmVh
dGVyVGhhbiA6IExlc3NUaGFuOworICAgIGlmICgoYS5tX3ZhbHVlIDwgMCkgIT0gKGIubV92YWx1
ZSA8IDApIHx8ICFhLm1fdmFsdWUgfHwgIWIubV92YWx1ZSB8fCBhLm1fc2NhbGUgPT0gYi5tX3Nj
YWxlKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYS5tX3ZhbHVlLCBiLm1fdmFsdWUpOwogCi0g
ICAgaWYgKG1fdGltZVZhbHVlID49IDApIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlIDwgcmhz
Lm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlID4gcmhzLm1fdGltZVNjYWxlKQotICAgICAgICAg
ICAgcmV0dXJuIExlc3NUaGFuOworICAgIGlmIChhLm1fdmFsdWUgPT0gYi5tX3ZhbHVlKQorICAg
ICAgICByZXR1cm4gb3JkZXJpbmcoYi5tX3NjYWxlLCBhLm1fc2NhbGUpOwogCi0gICAgICAgIGlm
IChtX3RpbWVWYWx1ZSA+IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA8IHJocy5tX3Rp
bWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICBpZiAoYS5tX3Zh
bHVlID49IDApIHsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA8IGIubV92YWx1ZSAmJiBhLm1fc2Nh
bGUgPiBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpMZXNzVGhhbjsK
KyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2Nh
bGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpHcmVhdGVyVGhhbjsKICAgICB9IGVs
c2UgewotICAgICAgICBpZiAobV90aW1lVmFsdWUgPCByaHMubV90aW1lVmFsdWUgJiYgbV90aW1l
U2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47Ci0K
LSAgICAgICAgaWYgKG1fdGltZVZhbHVlID4gcmhzLm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxl
ID4gcmhzLm1fdGltZVNjYWxlKQotICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworICAg
ICAgICBpZiAoYS5tX3ZhbHVlIDwgYi5tX3ZhbHVlICYmIGEubV9zY2FsZSA8IGIubV9zY2FsZSkK
KyAgICAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6Okxlc3NUaGFuOworICAgICAgICBpZiAoYS5t
X3ZhbHVlID4gYi5tX3ZhbHVlICYmIGEubV9zY2FsZSA+IGIubV9zY2FsZSkKKyAgICAgICAgICAg
IHJldHVybiBNZWRpYVRpbWU6OkdyZWF0ZXJUaGFuOwogICAgIH0KIAotICAgIGludDY0X3QgbGhz
RmFjdG9yOwotICAgIGludDY0X3QgcmhzRmFjdG9yOwotICAgIGlmIChzYWZlTXVsdGlwbHkobV90
aW1lVmFsdWUsIHN0YXRpY19jYXN0PGludDY0X3Q+KHJocy5tX3RpbWVTY2FsZSksIGxoc0ZhY3Rv
cikKLSAgICAgICAgJiYgc2FmZU11bHRpcGx5KHJocy5tX3RpbWVWYWx1ZSwgc3RhdGljX2Nhc3Q8
aW50NjRfdD4obV90aW1lU2NhbGUpLCByaHNGYWN0b3IpKSB7Ci0gICAgICAgIGlmIChsaHNGYWN0
b3IgPT0gcmhzRmFjdG9yKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgICAgIHJl
dHVybiBsaHNGYWN0b3IgPCByaHNGYWN0b3IgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotICAg
IH0KKyAgICBpbnQ2NF90IGFQcm9kdWN0OworICAgIGludDY0X3QgYlByb2R1Y3Q7CisgICAgaW50
NjRfdCBhVGltZVNjYWxlID0gYS5tX3NjYWxlOworICAgIGludDY0X3QgYlRpbWVTY2FsZSA9IGIu
bV9zY2FsZTsKKyAgICBpZiAoc2FmZU11bHRpcGx5KGEubV92YWx1ZSwgYVRpbWVTY2FsZSwgYVBy
b2R1Y3QpICYmIHNhZmVNdWx0aXBseShiLm1fdmFsdWUsIGJUaW1lU2NhbGUsIGJQcm9kdWN0KSkK
KyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGFQcm9kdWN0LCBiUHJvZHVjdCk7CisKKyAgICBhdXRv
IGFRdW90aWVudCA9IGEubV92YWx1ZSAvIGEubV9zY2FsZTsKKyAgICBhdXRvIGJRdW90aWVudCA9
IGIubV92YWx1ZSAvIGIubV9zY2FsZTsKKyAgICBpZiAoYVF1b3RpZW50ICE9IGJRdW90aWVudCkK
KyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGFRdW90aWVudCwgYlF1b3RpZW50KTsKIAotICAgIGlu
dDY0X3QgcmhzV2hvbGUgPSByaHMubV90aW1lVmFsdWUgLyByaHMubV90aW1lU2NhbGU7Ci0gICAg
aW50NjRfdCBsaHNXaG9sZSA9IG1fdGltZVZhbHVlIC8gbV90aW1lU2NhbGU7Ci0gICAgaWYgKGxo
c1dob2xlID4gcmhzV2hvbGUpCi0gICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICBpZiAo
bGhzV2hvbGUgPCByaHNXaG9sZSkKLSAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgaW50
NjRfdCByaHNSZW1haW4gPSByaHMubV90aW1lVmFsdWUgJSByaHMubV90aW1lU2NhbGU7Ci0gICAg
aW50NjRfdCBsaHNSZW1haW4gPSBtX3RpbWVWYWx1ZSAlIG1fdGltZVNjYWxlOwotICAgIGxoc0Zh
Y3RvciA9IGxoc1JlbWFpbiAqIHJocy5tX3RpbWVTY2FsZTsKLSAgICByaHNGYWN0b3IgPSByaHNS
ZW1haW4gKiBtX3RpbWVTY2FsZTsKLQotICAgIGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9yKQot
ICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAgICByZXR1cm4gbGhzRmFjdG9yID4gcmhzRmFjdG9y
ID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKKyAgICBhdXRvIGFSZW1haW5kZXIgPSBhLm1fdmFs
dWUgJSBhLm1fc2NhbGUgKiBhLm1fc2NhbGU7CisgICAgYXV0byBiUmVtYWluZGVyID0gYi5tX3Zh
bHVlICUgYi5tX3NjYWxlICogYi5tX3NjYWxlOworICAgIHJldHVybiBvcmRlcmluZyhhUmVtYWlu
ZGVyLCBiUmVtYWluZGVyKTsKIH0KIAotYm9vbCBNZWRpYVRpbWU6OmlzQmV0d2Vlbihjb25zdCBN
ZWRpYVRpbWUmIGEsIGNvbnN0IE1lZGlhVGltZSYgYikgY29uc3QKK2Jvb2wgTWVkaWFUaW1lOjpp
c0JldHdlZW4oTWVkaWFUaW1lIGEsIE1lZGlhVGltZSBiKSBjb25zdAogewogICAgIGlmIChhID4g
YikKICAgICAgICAgcmV0dXJuICp0aGlzID4gYiAmJiAqdGhpcyA8IGE7CiAgICAgcmV0dXJuICp0
aGlzID4gYSAmJiAqdGhpcyA8IGI7CiB9CiAKLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjp6
ZXJvVGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIFZhbGlk
KTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoLTEsIDEsIDAp
OwotICAgIHJldHVybiB0aW1lOwotfQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6cG9z
aXRpdmVJbmZpbml0ZVRpbWUoKQotewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgw
LCAxLCBQb3NpdGl2ZUluZmluaXRlIHwgVmFsaWQpOwotICAgIHJldHVybiB0aW1lOwotfQotCi1j
b25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKQotewotICAg
IHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgtMSwgMSwgTmVnYXRpdmVJbmZpbml0ZSB8IFZh
bGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6
OmluZGVmaW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoMCwg
MSwgSW5kZWZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotTWVkaWFUaW1l
IE1lZGlhVGltZTo6dG9UaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ0ZsYWdz
IGZsYWdzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6dG9UaW1lU2NhbGUodWludDMyX3Qg
dGltZVNjYWxlLCBSb3VuZGluZ01vZGUgbW9kZSkgY29uc3QKIHsKICAgICBNZWRpYVRpbWUgcmVz
dWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0LnNldFRpbWVTY2FsZSh0aW1lU2NhbGUsIGZsYWdzKTsK
KyAgICByZXN1bHQuc2V0VGltZVNjYWxlKHRpbWVTY2FsZSwgbW9kZSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSh1aW50MzJfdCB0aW1lU2Nh
bGUsIFJvdW5kaW5nRmxhZ3MgZmxhZ3MpCit2b2lkIE1lZGlhVGltZTo6c2V0VGltZVNjYWxlKHVp
bnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdNb2RlIG1vZGUpCiB7CiAgICAgaWYgKGhhc0RvdWJs
ZVZhbHVlKCkpIHsKLSAgICAgICAgKnRoaXMgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
bV90aW1lVmFsdWVBc0RvdWJsZSwgdGltZVNjYWxlKTsKKyAgICAgICAgKnRoaXMgPSBNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUobV92YWx1ZUFzRG91YmxlLCB0aW1lU2NhbGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCF0aW1lU2NhbGUpIHsKLSAgICAgICAgKnRoaXMg
PSBtX3RpbWVWYWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZp
bml0ZVRpbWUoKTsKKyAgICAgICAgKnRoaXMgPSBtX3ZhbHVlIDwgMCA/IG5lZ2F0aXZlSW5maW5p
dGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKHRpbWVTY2FsZSA9PSBtX3RpbWVTY2FsZSkKKyAgICBpZiAodGltZVNjYWxl
ID09IG1fc2NhbGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRpbWVTY2FsZSA9IHN0ZDo6bWlu
KE1heGltdW1UaW1lU2NhbGUsIHRpbWVTY2FsZSk7CiAKLSAgICBJbnQxMjggbmV3VmFsdWUgPSBz
dGF0aWNfY2FzdDxJbnQxMjg+KG1fdGltZVZhbHVlKSAqIHRpbWVTY2FsZTsKLSAgICBpbnQ2NF90
IHJlbWFpbmRlciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG5ld1ZhbHVlICUgbV90aW1lU2NhbGUp
OwotICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgLyBtX3RpbWVTY2FsZTsKKyAgICBJbnQxMjggbmV3
VmFsdWUgPSBzdGF0aWNfY2FzdDxJbnQxMjg+KG1fdmFsdWUpICogdGltZVNjYWxlOworICAgIGlu
dDY0X3QgcmVtYWluZGVyID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obmV3VmFsdWUgJSBtX3NjYWxl
KTsKKyAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlIC8gbV9zY2FsZTsKIAogICAgIGlmIChuZXdWYWx1
ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSB7CiAgICAgICAgICp0aGlz
ID0gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKQEAgLTUwMyw0MiArNDI0LDQyIEBAIHZvaWQgTWVk
aWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ0ZsYWdzIGZs
YWdzKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV90aW1lVmFsdWUgPSBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihuZXdWYWx1ZSk7Ci0gICAgc3RkOjpzd2FwKG1fdGltZVNjYWxlLCB0aW1l
U2NhbGUpOworICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obmV3VmFsdWUpOwor
ICAgIGF1dG8gb2xkVGltZVNjYWxlID0gc3RkOjpleGNoYW5nZShtX3NjYWxlLCB0aW1lU2NhbGUp
OwogCiAgICAgaWYgKCFyZW1haW5kZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGltZUZs
YWdzIHw9IEhhc0JlZW5Sb3VuZGVkOwotICAgIHN3aXRjaCAoZmxhZ3MpIHsKLSAgICBjYXNlIFJv
dW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm86Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxp
bnQ2NF90PihsbGFicyhyZW1haW5kZXIpKSAqIDIgPj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4odGlt
ZVNjYWxlKSkgeworICAgIG1fZmxhZ3MuYWRkKEhhc0JlZW5Sb3VuZGVkKTsKKyAgICBzd2l0Y2gg
KG1vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybzoKKyAgICAg
ICAgaWYgKHN0ZDo6YWJzKHJlbWFpbmRlcikgKiAyID49IG9sZFRpbWVTY2FsZSkgewogICAgICAg
ICAgICAgLy8gcm91bmQgdXAgKGF3YXkgZnJvbSB6ZXJvKQogICAgICAgICAgICAgaWYgKHJlbWFp
bmRlciA8IDApCi0gICAgICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAgICAgICAgICAgICAg
ICAtLW1fdmFsdWU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV90aW1lVmFs
dWUrKzsKKyAgICAgICAgICAgICAgICArK21fdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CiAKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm86CisgICAgY2FzZSBSb3Vu
ZGluZ01vZGU6OlRvd2FyZFplcm86CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBSb3VuZGlu
Z0ZsYWdzOjpBd2F5RnJvbVplcm86CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVy
bzoKICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZS0t
OworICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Rp
bWVWYWx1ZSsrOworICAgICAgICAgICAgKyttX3ZhbHVlOwogICAgICAgICBicmVhazsKIAotICAg
IGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eToKKyAgICBjYXNlIFJv
dW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eToKICAgICAgICAgaWYgKHJlbWFpbmRl
ciA+IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZSsrOworICAgICAgICAgICAgKyttX3ZhbHVl
OwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dh
cmROZWdhdGl2ZUluZmluaXR5OgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2
ZUluZmluaXR5OgogICAgICAgICBpZiAocmVtYWluZGVyIDwgMCkKLSAgICAgICAgICAgIG1fdGlt
ZVZhbHVlLS07CisgICAgICAgICAgICAtLW1fdmFsdWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KQEAgLTU0Nyw3ICs0NjgsNyBAQCB2b2lkIE1lZGlhVGltZTo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogewogICAgIG91dC5wcmludCgieyIpOwogICAgIGlmICghaGFzRG91YmxlVmFs
dWUoKSkKLSAgICAgICAgb3V0LnByaW50KG1fdGltZVZhbHVlLCAiLyIsIG1fdGltZVNjYWxlLCAi
ID0gIik7CisgICAgICAgIG91dC5wcmludChtX3ZhbHVlLCAiLyIsIG1fc2NhbGUsICIgPSAiKTsK
ICAgICBvdXQucHJpbnQodG9Eb3VibGUoKSwgIn0iKTsKIH0KIApAQCAtNTU2LDcgKzQ3Nyw3IEBA
IFN0cmluZyBNZWRpYVRpbWU6OnRvU3RyaW5nKCkgY29uc3QKICAgICBjb25zdCBjaGFyKiBpbnZh
bGlkID0gaXNJbnZhbGlkKCkgPyAiLCBpbnZhbGlkIiA6ICIiOwogICAgIGlmIChoYXNEb3VibGVW
YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygneycsIHRvRG91YmxlKCksIGludmFs
aWQsICd9Jyk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCBtX3RpbWVWYWx1ZSwgJy8nLCBt
X3RpbWVTY2FsZSwgIiA9ICIsIHRvRG91YmxlKCksIGludmFsaWQsICd9Jyk7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoJ3snLCBtX3ZhbHVlLCAnLycsIG1fc2NhbGUsICIgPSAiLCB0b0RvdWJsZSgp
LCBpbnZhbGlkLCAnfScpOwogfQogCiBSZWY8SlNPTjo6T2JqZWN0PiBNZWRpYVRpbWU6OnRvSlNP
Tk9iamVjdCgpIGNvbnN0CkBAIC01NzksOSArNTAwLDkgQEAgUmVmPEpTT046Ok9iamVjdD4gTWVk
aWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdAogICAgIGVsc2UKICAgICAgICAgb2JqZWN0LT5z
ZXREb3VibGUoInZhbHVlIl9zLCB0b0RvdWJsZSgpKTsKIAotICAgIG9iamVjdC0+c2V0RG91Ymxl
KCJudW1lcmF0b3IiX3MsIHN0YXRpY19jYXN0PGRvdWJsZT4obV90aW1lVmFsdWUpKTsKLSAgICBv
YmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9yIl9zLCBtX3RpbWVTY2FsZSk7Ci0gICAgb2Jq
ZWN0LT5zZXRJbnRlZ2VyKCJmbGFncyJfcywgbV90aW1lRmxhZ3MpOworICAgIG9iamVjdC0+c2V0
RG91YmxlKCJudW1lcmF0b3IiX3MsIG1fdmFsdWUpOworICAgIG9iamVjdC0+c2V0SW50ZWdlcigi
ZGVub21pbmF0b3IiX3MsIG1fc2NhbGUpOworICAgIG9iamVjdC0+c2V0SW50ZWdlcigiZmxhZ3Mi
X3MsIG1fZmxhZ3MudG9SYXcoKSk7CiAKICAgICByZXR1cm4gb2JqZWN0OwogfQpAQCAtNTkxLDMz
ICs1MTIsMjggQEAgU3RyaW5nIE1lZGlhVGltZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gdG9KU09OT2JqZWN0KCktPnRvSlNPTlN0cmluZygpOwogfQogCi1NZWRpYVRpbWUgYWJz
KGNvbnN0IE1lZGlhVGltZSYgcmhzKQorTWVkaWFUaW1lIGFicyhNZWRpYVRpbWUgdGltZSkKIHsK
LSAgICBpZiAocmhzLmlzSW52YWxpZCgpKQotICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpOwotICAgIGlmIChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkgfHwgcmhzLmlzUG9z
aXRpdmVJbmZpbml0ZSgpKQorICAgIGlmICh0aW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAg
ICAgICByZXR1cm4gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChy
aHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShmYWJzKHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlKSk7Ci0KLSAgICBNZWRpYVRpbWUg
dmFsID0gcmhzOwotICAgIHZhbC5tX3RpbWVWYWx1ZSA9IHN0ZDo6YWJzKHJocy5tX3RpbWVWYWx1
ZSk7Ci0gICAgcmV0dXJuIHZhbDsKKyAgICBpZiAodGltZS5oYXNEb3VibGVWYWx1ZSgpKQorICAg
ICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0ZDo6YWJzKHRpbWUubV92
YWx1ZUFzRG91YmxlKSk7CisgICAgTWVkaWFUaW1lIHJlc3VsdCA9IHRpbWU7CisgICAgcmVzdWx0
Lm1fdmFsdWUgPSBzdGQ6OmFicyhyZXN1bHQubV92YWx1ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogU3RyaW5nIE1lZGlhVGltZVJhbmdlOjp0b0pTT05TdHJpbmcoKSBjb25zdAogewogICAg
IGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLQogICAgIG9iamVjdC0+c2V0
T2JqZWN0KCJzdGFydCJfcywgc3RhcnQudG9KU09OT2JqZWN0KCkpOwogICAgIG9iamVjdC0+c2V0
T2JqZWN0KCJlbmQiX3MsIGVuZC50b0pTT05PYmplY3QoKSk7Ci0KICAgICByZXR1cm4gb2JqZWN0
LT50b0pTT05TdHJpbmcoKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK1RleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBNZWRpYVRpbWUgdGltZSkKIHsK
ICAgICByZXR1cm4gc3RyZWFtIDw8IHRpbWUudG9KU09OU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5o
CmluZGV4IDcxYWNmMzI5ZWIzOTg5MzM1MTJmZDdmM2Y1OGQ2MGJlY2ZmMjNjNTAuLjEwNDI4MTRj
ZWI1ZWZmM2MxY2M1YzA0MDc4ZDdiNjJiZTlkMzJlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL01lZGlhVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5oCkBAIC0zMCwy
MSArMzAsMTYgQEAKIAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L0pTT05WYWx1ZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2luY2x1
ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVk
ZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIAogY2xhc3MgUHJpbnRTdHJlYW07CiAKLWNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBNZWRp
YVRpbWUgZmluYWwgeworY2xhc3MgTWVkaWFUaW1lIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBlbnVtIHsKKyAgICBlbnVtIEZsYWcgOiB1aW50OF90
IHsKICAgICAgICAgVmFsaWQgPSAxIDw8IDAsCiAgICAgICAgIEhhc0JlZW5Sb3VuZGVkID0gMSA8
PCAxLAogICAgICAgICBQb3NpdGl2ZUluZmluaXRlID0gMSA8PCAyLApAQCAtNTIsNjcgKzQ3LDY1
IEBAIHB1YmxpYzoKICAgICAgICAgSW5kZWZpbml0ZSA9IDEgPDwgNCwKICAgICAgICAgRG91Ymxl
VmFsdWUgPSAxIDw8IDUsCiAgICAgfTsKLQotICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoKTsKLSAg
ICBjb25zdGV4cHIgTWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50
OF90IGZsYWdzID0gVmFsaWQpOwotICAgIE1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHJocyk7
Ci0KLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUp
OwotICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwg
dWludDMyX3QgdGltZVNjYWxlKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3Vi
bGUoZG91YmxlIGRvdWJsZVRpbWUpOwotICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aERv
dWJsZShkb3VibGUgZG91YmxlVGltZSwgdWludDMyX3QgdGltZVNjYWxlKTsKLQotICAgIGZsb2F0
IHRvRmxvYXQoKSBjb25zdDsKLSAgICBkb3VibGUgdG9Eb3VibGUoKSBjb25zdDsKLQotICAgIE1l
ZGlhVGltZSYgb3BlcmF0b3I9KGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKLSAgICBNZWRpYVRpbWUm
IG9wZXJhdG9yKz0oY29uc3QgTWVkaWFUaW1lJiByaHMpIHsgcmV0dXJuICp0aGlzID0gKnRoaXMg
KyByaHM7IH0KLSAgICBNZWRpYVRpbWUmIG9wZXJhdG9yLT0oY29uc3QgTWVkaWFUaW1lJiByaHMp
IHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0KLSAgICBNZWRpYVRpbWUgb3BlcmF0b3Ir
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKLSAgICBNZWRpYVRpbWUgb3BlcmF0b3ItKGNv
bnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKLSAgICBNZWRpYVRpbWUgb3BlcmF0b3ItKCkgY29u
c3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90KSBjb25zdDsKLSAgICBib29sIG9w
ZXJhdG9yPChjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMp
ID09IExlc3NUaGFuOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgTWVkaWFUaW1lJiByaHMp
IGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBHcmVhdGVyVGhhbjsgfQotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShy
aHMpICE9IEVxdWFsVG87IH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFUaW1lJiBy
aHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBv
cGVyYXRvcj49KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJo
cykgPj0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBNZWRpYVRpbWUmIHJo
cykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpIDw9IEVxdWFsVG87IH0KLSAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0OwotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKLQot
ICAgIHR5cGVkZWYgZW51bSB7CisgICAgY29uc3RleHByIE1lZGlhVGltZSgpIDogTWVkaWFUaW1l
IHsgaW50NjRfdCB7IH0sIERlZmF1bHRUaW1lU2NhbGUgfSB7IH0KKyAgICBjb25zdGV4cHIgTWVk
aWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCBPcHRpb25TZXQ8RmxhZz4gPSB7
IFZhbGlkIH0pOworCisgICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQg
dmFsdWUpOworICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVl
LCB1aW50MzJfdCBzY2FsZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRp
bWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFsdWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlLCB1aW50MzJf
dCBzY2FsZSk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9hdCgpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoKSBjb25zdDsKKworICAg
IE1lZGlhVGltZSYgb3BlcmF0b3IrPShNZWRpYVRpbWUgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0
aGlzICsgcmhzOyB9CisgICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KE1lZGlhVGltZSByaHMpIHsg
cmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVk
aWFUaW1lIG9wZXJhdG9yKyhNZWRpYVRpbWUpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBNZWRpYVRpbWUgb3BlcmF0b3ItKE1lZGlhVGltZSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1lZGlhVGltZSBvcGVyYXRvci0oKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
PChNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47
IH0KKyAgICBib29sIG9wZXJhdG9yPihNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21w
YXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KKyAgICBib29sIG9wZXJhdG9yIT0oTWVkaWFUaW1l
IHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpICE9IEVxdWFsVG87IH0KKyAgICBib29s
IG9wZXJhdG9yPT0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID09
IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPj0oTWVkaWFUaW1lIHJocykgY29uc3QgeyBy
ZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPD0oTWVk
aWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpIDw9IEVxdWFsVG87IH0KKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OworCisgICAgZW51bSBD
b21wYXJpc29uRmxhZ3MgewogICAgICAgICBMZXNzVGhhbiA9IC0xLAogICAgICAgICBFcXVhbFRv
ID0gMCwKICAgICAgICAgR3JlYXRlclRoYW4gPSAxLAotICAgIH0gQ29tcGFyaXNvbkZsYWdzOwor
ICAgIH07CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWU6OkNvbXBhcmlz
b25GbGFncyBvcmRlcmluZyhNZWRpYVRpbWUsIE1lZGlhVGltZSk7CisgICAgQ29tcGFyaXNvbkZs
YWdzIGNvbXBhcmUoTWVkaWFUaW1lIG90aGVyKSBjb25zdCB7IHJldHVybiBvcmRlcmluZygqdGhp
cywgb3RoZXIpOyB9CiAKLSAgICBDb21wYXJpc29uRmxhZ3MgY29tcGFyZShjb25zdCBNZWRpYVRp
bWUmIHJocykgY29uc3Q7Ci0gICAgYm9vbCBpc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiwgY29u
c3QgTWVkaWFUaW1lJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNCZXR3
ZWVuKE1lZGlhVGltZSwgTWVkaWFUaW1lKSBjb25zdDsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFsaWQ7IH0KKyAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFZhbGlkKTsgfQogICAgIGJvb2wgaXNJbnZh
bGlkKCkgY29uc3QgeyByZXR1cm4gIWlzVmFsaWQoKTsgfQotICAgIGJvb2wgaGFzQmVlblJvdW5k
ZWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEhhc0JlZW5Sb3VuZGVkOyB9Ci0gICAg
Ym9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIFBv
c2l0aXZlSW5maW5pdGU7IH0KLSAgICBib29sIGlzTmVnYXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZUZsYWdzICYgTmVnYXRpdmVJbmZpbml0ZTsgfQotICAgIGJvb2wgaXNJbmRl
ZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBJbmRlZmluaXRlOyB9CisgICAg
Ym9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoSGFz
QmVlblJvdW5kZWQpOyB9CisgICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzLmNvbnRhaW5zKFBvc2l0aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBpc05l
Z2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKE5lZ2F0aXZl
SW5maW5pdGUpOyB9CisgICAgYm9vbCBpc0luZGVmaW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzLmNvbnRhaW5zKEluZGVmaW5pdGUpOyB9CiAgICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0IHsg
cmV0dXJuICFpc0ludmFsaWQoKSAmJiAhaXNJbmRlZmluaXRlKCkgJiYgIWlzUG9zaXRpdmVJbmZp
bml0ZSgpICYmICFpc05lZ2F0aXZlSW5maW5pdGUoKTsgfQotICAgIGJvb2wgaGFzRG91YmxlVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIERvdWJsZVZhbHVlOyB9Ci0gICAgdWlu
dDhfdCB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFnczsgfQorICAgIGJvb2wg
aGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKERvdWJsZVZh
bHVlKTsgfQorICAgIE9wdGlvblNldDxGbGFnPiB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBt
X2ZsYWdzOyB9CiAKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiB6ZXJvVGltZSgpOwotICAg
IHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGludmFsaWRUaW1lKCk7Ci0gICAgc3RhdGljIGNvbnN0
IE1lZGlhVGltZSYgcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVk
aWFUaW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRp
bWUmIGluZGVmaW5pdGVUaW1lKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgemVy
b1RpbWUoKSB7IHJldHVybiB7IDAsIDEsIFZhbGlkIH07IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IE1lZGlhVGltZSBpbnZhbGlkVGltZSgpIHsgcmV0dXJuIHsgLTEsIDEsIHsgfSB9OyB9CisgICAg
c3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVy
biB7IDAsIDEsIHsgUG9zaXRpdmVJbmZpbml0ZSwgVmFsaWQgfSB9OyB9CisgICAgc3RhdGljIGNv
bnN0ZXhwciBNZWRpYVRpbWUgbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVybiB7IC0xLCAx
LCB7IE5lZ2F0aXZlSW5maW5pdGUsIFZhbGlkIH0gfTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
TWVkaWFUaW1lIGluZGVmaW5pdGVUaW1lKCkgeyByZXR1cm4geyAwLCAxLCB7IEluZGVmaW5pdGUs
IFZhbGlkIH0gfTsgfQogCi0gICAgY29uc3QgaW50NjRfdCYgdGltZVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lVmFsdWU7IH0KLSAgICBjb25zdCB1aW50MzJfdCYgdGltZVNjYWxlKCkgY29u
c3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKyAgICBpbnQ2NF90IHRpbWVWYWx1ZSgpIGNvbnN0
IHsgQVNTRVJUKCFoYXNEb3VibGVWYWx1ZSgpKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB1aW50
MzJfdCB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAKLSAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0Owot
ICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKLSAgICBSZWY8SlNPTjo6T2JqZWN0PiB0
b0pTT05PYmplY3QoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvSlNP
TlN0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8SlNPTjo6T2JqZWN0
PiB0b0pTT05PYmplY3QoKSBjb25zdDsKIAogICAgIC8vIE1ha2UgdGhlIGZvbGxvd2luZyBjYXN0
cyBlcnJvcnM6CiAgICAgb3BlcmF0b3IgZG91YmxlKCkgY29uc3QgPSBkZWxldGU7CkBAIC0xMjAs
OTMgKzExMyw5OSBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgaW50KCkgY29uc3QgPSBkZWxldGU7
CiAgICAgTWVkaWFUaW1lKGludCkgPSBkZWxldGU7CiAKLSAgICBmcmllbmQgV1RGX0VYUE9SVF9Q
UklWQVRFIE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOworICAgIGZyaWVuZCBX
VEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGFicyhNZWRpYVRpbWUpOwogCi0gICAgc3RhdGlj
IGNvbnN0IHVpbnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAwMDAwMDsKLSAgICBzdGF0aWMg
Y29uc3QgdWludDMyX3QgTWF4aW11bVRpbWVTY2FsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAwMDAwMDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1heGltdW1UaW1lU2NhbGU7CiAKLSAgICBlbnVtIGNs
YXNzIFJvdW5kaW5nRmxhZ3MgewotICAgICAgICBIYWxmQXdheUZyb21aZXJvID0gMCwKKyAgICBl
bnVtIGNsYXNzIFJvdW5kaW5nTW9kZSB7CisgICAgICAgIEhhbGZBd2F5RnJvbVplcm8sCiAgICAg
ICAgIFRvd2FyZFplcm8sCiAgICAgICAgIEF3YXlGcm9tWmVybywKICAgICAgICAgVG93YXJkUG9z
aXRpdmVJbmZpbml0eSwKICAgICAgICAgVG93YXJkTmVnYXRpdmVJbmZpbml0eSwKICAgICB9Owot
Ci0gICAgTWVkaWFUaW1lIHRvVGltZVNjYWxlKHVpbnQzMl90LCBSb3VuZGluZ0ZsYWdzID0gUm91
bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50MzJfdCBzY2FsZSwgUm91bmRpbmdNb2RlID0g
Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBNZWRpYVRpbWUmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldFRpbWVTY2FsZSh1aW50
MzJfdCwgUm91bmRpbmdGbGFncyA9IFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pOwor
ICAgIGVudW0gVXNlRG91YmxlRmxhZyB7IFVzZURvdWJsZSB9OworICAgIGNvbnN0ZXhwciBNZWRp
YVRpbWUoVXNlRG91YmxlRmxhZywgZG91YmxlIHZhbHVlKTsKKworICAgIHZvaWQgc2V0VGltZVNj
YWxlKHVpbnQzMl90LCBSb3VuZGluZ01vZGUgPSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVpl
cm8pOwogCiAgICAgdW5pb24gewotICAgICAgICBpbnQ2NF90IG1fdGltZVZhbHVlOwotICAgICAg
ICBkb3VibGUgbV90aW1lVmFsdWVBc0RvdWJsZTsKKyAgICAgICAgaW50NjRfdCBtX3ZhbHVlOwor
ICAgICAgICBkb3VibGUgbV92YWx1ZUFzRG91YmxlOwogICAgIH07Ci0gICAgdWludDMyX3QgbV90
aW1lU2NhbGU7Ci0gICAgdWludDhfdCBtX3RpbWVGbGFnczsKKyAgICB1aW50MzJfdCBtX3NjYWxl
IHsgRGVmYXVsdFRpbWVTY2FsZSB9OworICAgIE9wdGlvblNldDxGbGFnPiBtX2ZsYWdzIHsgVmFs
aWQgfTsKIH07CiAKLWNvbnN0ZXhwciBNZWRpYVRpbWU6Ok1lZGlhVGltZSgpCi0gICAgOiBtX3Rp
bWVWYWx1ZSgwKQotICAgICwgbV90aW1lU2NhbGUoRGVmYXVsdFRpbWVTY2FsZSkKLSAgICAsIG1f
dGltZUZsYWdzKFZhbGlkKQotewotfQotCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUo
aW50NjRfdCB2YWx1ZSwgdWludDMyX3Qgc2NhbGUsIHVpbnQ4X3QgZmxhZ3MpCi0gICAgOiBtX3Rp
bWVWYWx1ZSh2YWx1ZSkKLSAgICAsIG1fdGltZVNjYWxlKHNjYWxlKQotICAgICwgbV90aW1lRmxh
Z3MoZmxhZ3MpCi17Ci0gICAgaWYgKHNjYWxlIHx8ICEoZmxhZ3MgJiBWYWxpZCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgICp0aGlzID0gdmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUo
KSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci19CitXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFU
aW1lIGFicyhNZWRpYVRpbWUpOwogCi1pbmxpbmUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90
IGxocywgY29uc3QgTWVkaWFUaW1lJiByaHMpIHsgcmV0dXJuIHJocy5vcGVyYXRvcioobGhzKTsg
fQotCi1XVEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFU
aW1lJiByaHMpOwotCi1zdHJ1Y3QgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZVJhbmdlIHsK
K3N0cnVjdCBNZWRpYVRpbWVSYW5nZSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogCi0gICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBNZWRpYVRp
bWUgc3RhcnQ7Ci0gICAgY29uc3QgTWVkaWFUaW1lIGVuZDsKKyAgICBNZWRpYVRpbWUgc3RhcnQ7
CisgICAgTWVkaWFUaW1lIGVuZDsKIH07CiAKLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lk
IE1lZGlhVGltZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Citjb25zdGV4cHIgTWVk
aWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgdWludDMyX3Qgc2NhbGUsIE9wdGlvblNl
dDxGbGFnPiBmbGFncykKKyAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgLCBtX3NjYWxlKHNjYWxl
KQorICAgICwgbV9mbGFncyhmbGFncykKK3sKKyAgICBpZiAoIShzY2FsZSB8fCAhKGZsYWdzICYg
VmFsaWQpKSkKKyAgICAgICAgKnRoaXMgPSB2YWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIE1lZGlhVGltZSBvcGVyYXRvciooY29uc3QgVCYgYSwgTWVkaWFUaW1lIGIpCiB7Ci0g
ICAgZW5jb2RlciA8PCBtX3RpbWVWYWx1ZSA8PCBtX3RpbWVTY2FsZSA8PCBtX3RpbWVGbGFnczsK
KyAgICByZXR1cm4gYiAqIGE7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1ib29sIE1l
ZGlhVGltZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhVGltZSYgdGltZSkKK3RlbXBs
YXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgTWVkaWFUaW1lOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUodGltZS5tX3RpbWVWYWx1
ZSkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3RpbWVTY2FsZSkKLSAgICAgICAg
JiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3RpbWVGbGFncyk7CisgICAgZW5jb2RlciA8PCBtX3Zh
bHVlIDw8IG1fc2NhbGUgPDwgbV9mbGFnczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4gYm9vbCBNZWRpYVRpbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVRpbWUmIHRp
bWUpCit7CisgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRpbWUubV92YWx1ZSkKKyAgICAgICAg
JiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3NjYWxlKQorICAgICAgICAmJiBkZWNvZGVyLmRlY29k
ZSh0aW1lLm1fZmxhZ3MpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExvZ0FyZ3Vt
ZW50OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxNZWRpYVRpbWU+IHsKLSAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgeyByZXR1cm4gdGlt
ZS50b0pTT05TdHJpbmcoKTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoTWVkaWFUaW1l
IHRpbWUpIHsgcmV0dXJuIHRpbWUudG9KU09OU3RyaW5nKCk7IH0KIH07CiB0ZW1wbGF0ZTw+IHN0
cnVjdCBMb2dBcmd1bWVudDxNZWRpYVRpbWVSYW5nZT4gewogICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoY29uc3QgTWVkaWFUaW1lUmFuZ2UmIHJhbmdlKSB7IHJldHVybiByYW5nZS50b0pTT05T
dHJpbmcoKTsgfQogfTsKIAogI2lmbmRlZiBOREVCVUcKLVdURl9FWFBPUlRfUFJJVkFURSBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBNZWRpYVRpbWUmKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBNZWRpYVRp
bWUpOwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8TWVkaWFUaW1lOjpG
bGFnPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgTWVkaWFUaW1l
OjpGbGFnLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6OlZhbGlkLAorICAgICAgICBNZWRpYVRp
bWU6OkZsYWc6Okhhc0JlZW5Sb3VuZGVkLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6OlBvc2l0
aXZlSW5maW5pdGUsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6TmVnYXRpdmVJbmZpbml0ZSwK
KyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpJbmRlZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6
OkZsYWc6OkRvdWJsZVZhbHVlCisgICAgPjsKK307CisKIH0KIAogdXNpbmcgV1RGOjpNZWRpYVRp
bWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9TZWNvbmRzLmgKaW5kZXggZDI4MmRiYmY3MTViZTc0Mjc4OWVhMTBmMWNjYjI5YWQxNDUzNTY0
Zi4uMWEyOTY0YzZkZWExNTVkOTM2ZTA0YjUyZTMzMjNmMzJhZjE2YjRlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvU2Vjb25kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzcyLDQgKzM3MywzIEBAIGlubGluZSBi
b29sIGlzZmluaXRlKFdURjo6U2Vjb25kcyBzZWNvbmRzKQogfSAvLyBuYW1lc3BhY2Ugc3RkCiAK
IHVzaW5nIG5hbWVzcGFjZSBXVEY6OnNlY29uZHNfbGl0ZXJhbHM7Ci11c2luZyBXVEY6OlNlY29u
ZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggYi9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKaW5kZXggZmQ1NTliMjQyZGRmZmQ1
ZThkOGYxMzNlYzQxM2JhM2FiNWI1MjY0Ny4uZTVhM2NiNjM1ZWFmMWNhODg5ZGQyMjA5NzUyNWZj
ZDQyOGUzMTg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAtMzIsOSAr
MzIsOSBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAog
I2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggNDQ4ZGRlZTIx
NjBlZjE4Y2E1ZTA2NjEzOTBlNTk4ZDUzYmM1NGQyYS4uMGM4ZjMzMTUwYjE1MzQ4NGZkNGMxYzhh
ZDAwMWE0OWZiYmZhYWY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC05MjIsNyArOTIzLDcgQEAgYm9vbCBwb3J0QWxsb3dlZChj
b25zdCBVUkwmIHVybCkKIAogICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0
aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KICAgICAvLyBTZWUgaHR0
cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRM
aXN0W10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBibG9ja2VkUG9ydExpc3Rb
XSA9IHsKICAgICAgICAgMSwgICAgLy8gdGNwbXV4CiAgICAgICAgIDcsICAgIC8vIGVjaG8KICAg
ICAgICAgOSwgICAgLy8gZGlzY2FyZApAQCAtMTAwNiwxMCArMTAwNywxMCBAQCBib29sIHBvcnRB
bGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBh
ZGRpdGlvbl0KICAgICAgICAgMTAwODAsIC8vIGFtYW5kYQogICAgIH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBTb3J0ZWRBcnJheVNldCBibG9ja2VkUG9ydFNldCB7IGJsb2NrZWRQb3J0TGlzdCB9
OwogCiAgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwg
YWxsb3cgaXQuCi0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4oYmxvY2tlZFBv
cnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSkpOwotICAgIGlmICghc3RkOjpiaW5h
cnlfc2VhcmNoKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBv
cnRMaXN0KSwgcG9ydC52YWx1ZSgpKSkKKyAgICBpZiAoIWJsb2NrZWRQb3J0U2V0LmNvbnRhaW5z
KCpwb3J0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBBbGxvdyBwb3J0cyAyMSBh
bmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRvZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9XYWxsVGltZS5oIGIvU291cmNlL1dURi93dGYvV2FsbFRpbWUuaAppbmRleCA1NDM4
Y2MwMWI2MWFhOWY2YzdjNDU2ZTVmODkxZTQ0NjZmNzMzYmJjLi4xY2U4ZDM3NTU2MWQyOWI1ODk2
MWJlM2ZjZjE5Mzk0MDRmZTg4OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGlt
ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Nsb2NrVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0dlbmVyaWNUaW1lTWl4aW4uaD4KICNpbmNsdWRlIDx3
dGYvSW50MTI4Lmg+CiAKQEAgLTk5LDUgKzEwMCwzIEBAIGlubGluZSBib29sIGlzZmluaXRlKFdU
Rjo6V2FsbFRpbWUgdGltZSkKIH0KIAogfSAvLyBuYW1lc3BhY2Ugc3RkCi0KLXVzaW5nIFdURjo6
V2FsbFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50Q29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5o
CmluZGV4IGFmYzMzZjM4ZDQyMzM1YmQ5ZTYxMjZhNGE3OGE1MDcxMGRiMjYwOGEuLjIwN2ZhMDQ0
NjlmYjk0ODM4NzY4ZTlmNDFhMmEzMjg5N2Y1Y2IwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVh
ZGluZ1BPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcApp
bmRleCBkOTI0NDkwZDFiNTdmM2VlMDZlZTVlYWQ4YTJkM2MxMWMyMGNiNWQxLi42ZDM0MGU0NmYy
YjI4NDQwYjExM2VkNzcwOWVhMzcxMDFhODJmODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhy
ZWFkaW5nUE9TSVguY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAjaW5jbHVkZSA8
d3RmL1dURkNvbmZpZy5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9Xb3JkTG9jay5oPgogCiAjaWYgT1MoTElOVVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90aHJlYWRzL1NpZ25hbHMuaCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCmlu
ZGV4IDhiNDBjMTRjODQyM2ZkNGVjYmY2MzUwNmQ2MGJmZjFjMGZkODU2MGYuLjlmMTg2ZjYzNTQ4
NDFhNzU1YWJjMGQ4OWVjMzNmMGI1ZmUwZWY4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RocmVhZHMvU2lnbmFscy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBPUyhVTklYKQogCisjaW5jbHVkZSA8b3B0aW9uYWw+
CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4IGRjMjQ4OWZmODll
OGY5Zjg5MTRiYzhlM2ZjMjk2NmY0ZGVlZTU3NGUuLmE5ZjU5NTI0YWZjNWNiYzczNmZiYzRlODE2
ZGNkYmVkYzdmOTBhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdX
aW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCkBAIC05NSw2
ICs5NSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAKaW5kZXggMDY1OTg0MDY4OWU0YWJiNTIyMGU1YmRkODA1MjNkNzQwMmY0YWNl
Mi4uODg4YmVmMzIzNjgyZWEyMjk5N2VmNjQwOWEwZDcxZDg1NWZmZmVhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVB
VkZvdW5kYXRpb24uY3BwCkBAIC0zMiwzNyArMzIsMjggQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAK
LXN0YXRpYyBib29sIENNVGltZUhhc0ZsYWdzKGNvbnN0IENNVGltZSYgY21UaW1lLCB1aW50MzJf
dCBmbGFncykKK01lZGlhVGltZSB0b01lZGlhVGltZShDTVRpbWUgdGltZSkKIHsKLSAgICByZXR1
cm4gKGNtVGltZS5mbGFncyAmIGZsYWdzKSA9PSBmbGFnczsKKyAgICBPcHRpb25TZXQ8TWVkaWFU
aW1lOjpGbGFnPiBmbGFnczsKKyAgICBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19WYWxp
ZCkgeworICAgICAgICBmbGFncy5hZGQoTWVkaWFUaW1lOjpWYWxpZCk7CisgICAgICAgIGlmICh0
aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHkpCisgICAgICAgICAgICBm
bGFncy5hZGQoTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
dGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5KQorICAgICAgICAgICAg
ZmxhZ3MuYWRkKE1lZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZSk7CisgICAgICAgIGVsc2UgaWYg
KHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3NfSW5kZWZpbml0ZSkKKyAgICAgICAgICAgIGZsYWdz
LmFkZChNZWRpYVRpbWU6OkluZGVmaW5pdGUpOworICAgIH0KKyAgICByZXR1cm4gTWVkaWFUaW1l
KHRpbWUudmFsdWUsIHRpbWUudGltZXNjYWxlLCBmbGFncyk7CiB9CiAKLU1lZGlhVGltZSB0b01l
ZGlhVGltZShjb25zdCBDTVRpbWUmIGNtVGltZSkKLXsKLSAgICB1aW50MzJfdCBmbGFncyA9IDA7
Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkKSkKLSAg
ICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpWYWxpZDsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3Mo
Y21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQgfCBrQ01UaW1lRmxhZ3NfSGFzQmVlblJvdW5kZWQp
KQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6Okhhc0JlZW5Sb3VuZGVkOwotICAgIGlmIChD
TVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19Q
b3NpdGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpQb3NpdGl2ZUlu
ZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxp
ZCB8IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVk
aWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUs
IGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKSkKLSAgICAgICAg
ZmxhZ3MgfD0gTWVkaWFUaW1lOjpJbmRlZmluaXRlOwotCi0gICAgcmV0dXJuIE1lZGlhVGltZShj
bVRpbWUudmFsdWUsIGNtVGltZS50aW1lc2NhbGUsIGZsYWdzKTsKLX0KLQotQ01UaW1lIHRvQ01U
aW1lKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lKQorQ01UaW1lIHRvQ01UaW1lKE1lZGlhVGlt
ZSBtZWRpYVRpbWUpCiB7CiAgICAgQ01UaW1lIHRpbWU7Ci0KICAgICBpZiAobWVkaWFUaW1lLmhh
c0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHRpbWUgPSBDTVRpbWVNYWtlV2l0aFNlY29uZHMobWVk
aWFUaW1lLnRvRG91YmxlKCksIG1lZGlhVGltZS50aW1lU2NhbGUoKSk7CiAgICAgZWxzZQogICAg
ICAgICB0aW1lID0gQ01UaW1lTWFrZShtZWRpYVRpbWUudGltZVZhbHVlKCksIG1lZGlhVGltZS50
aW1lU2NhbGUoKSk7Ci0KICAgICBpZiAobWVkaWFUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgdGlt
ZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfVmFsaWQ7CiAgICAgaWYgKG1lZGlhVGltZS5oYXNCZWVu
Um91bmRlZCgpKQpAQCAtNzEsNyArNjIsNiBAQCBDTVRpbWUgdG9DTVRpbWUoY29uc3QgTWVkaWFU
aW1lJiBtZWRpYVRpbWUpCiAgICAgICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX1Bvc2l0
aXZlSW5maW5pdHk7CiAgICAgaWYgKG1lZGlhVGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAg
ICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfTmVnYXRpdmVJbmZpbml0eTsKLQogICAg
IHJldHVybiB0aW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2
Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCmluZGV4IGIzZGJlMTdhYTli
YzEyNTFkY2UyZWM4YWRlZTdjYjg0OTQ3OWJmNzAuLmEyYmNkYWU5ZjhlOTlkMGYwNGUzZjNjM2Vk
MjBhM2YzNmEyOTA2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3Vu
ZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCkBAIC0zMiw4ICszMiw4IEBA
CiAKIG5hbWVzcGFjZSBQQUwgewogCi1QQUxfRVhQT1JUIENNVGltZSB0b0NNVGltZShjb25zdCBN
ZWRpYVRpbWUmKTsKLVBBTF9FWFBPUlQgTWVkaWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0IENNVGlt
ZSYpOworUEFMX0VYUE9SVCBDTVRpbWUgdG9DTVRpbWUoTWVkaWFUaW1lKTsKK1BBTF9FWFBPUlQg
TWVkaWFUaW1lIHRvTWVkaWFUaW1lKENNVGltZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggMGUxYWQ3MjQ1ZmUx
NmUxZTk2ZTNkYTFjYjU4NGI5YTRhNmQ4OWYzYi4uODQ0NmRiOTg1NTFlMGM1MzgyYTk2ZmY4NDcx
ZmJiNjcyMzEwYzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwCkBAIC0xMTksMTAgKzExOSwxMCBAQCBzdGF0aWMgaW5saW5lIEdh
cExlbmd0aCBibGVuZEZ1bmMoY29uc3QgR2FwTGVuZ3RoJiBmcm9tLCBjb25zdCBHYXBMZW5ndGgm
IHRvLCBjbwogICAgIHJldHVybiBibGVuZChmcm9tLmxlbmd0aCgpLCB0by5sZW5ndGgoKSwgY29u
dGV4dCwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogfQogCi1zdGF0aWMgaW5saW5lIFRhYlNp
emUgYmxlbmRGdW5jKGNvbnN0IFRhYlNpemUmIGZyb20sIGNvbnN0IFRhYlNpemUmIHRvLCBjb25z
dCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgVGFi
U2l6ZSBibGVuZEZ1bmMoVGFiU2l6ZSBmcm9tLCBUYWJTaXplIHRvLCBjb25zdCBDU1NQcm9wZXJ0
eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9IGJs
ZW5kKGZyb20udmFsdWUoKSwgdG8udmFsdWUoKSwgY29udGV4dCk7Ci0gICAgcmV0dXJuIHsgYmxl
bmRlZFZhbHVlIDwgMCA/IDAgOiBibGVuZGVkVmFsdWUsIGZyb20uaXNTcGFjZXMoKSA/IFNwYWNl
VmFsdWVUeXBlIDogTGVuZ3RoVmFsdWVUeXBlIH07CisgICAgYXV0byBibGVuZGVkVmFsdWUgPSBi
bGVuZChmcm9tLnZhbHVlLCB0by52YWx1ZSwgY29udGV4dCk7CisgICAgcmV0dXJuIHsgYmxlbmRl
ZFZhbHVlIDwgMCA/IDAgOiBibGVuZGVkVmFsdWUsIGZyb20uaXNTcGFjZXMgPyBUYWJTaXplOjpT
cGFjZXMgOiBUYWJTaXplOjpMZW5ndGggfTsKIH0KIAogc3RhdGljIGlubGluZSBMZW5ndGhTaXpl
IGJsZW5kRnVuYyhjb25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywg
Y29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCkBAIC05NzgsMTAgKzk3
OCw5IEBAIHByaXZhdGU6CiAgICAgLy8gaXQncyBvbmx5IHBvc3NpYmxlIGlmIHRoZXkncmUgYm90
aCBub3QgYXV0by4KICAgICBib29sIGNhbkludGVycG9sYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBm
cm9tLCBjb25zdCBSZW5kZXJTdHlsZSYgdG8sIENvbXBvc2l0ZU9wZXJhdGlvbikgY29uc3QgZmlu
YWwKICAgICB7Ci0gICAgICAgIGJvb2wgZnJvbUlzQXV0byA9IHZhbHVlKGZyb20pLngoKS5pc0F1
dG8oKSAmJiB2YWx1ZShmcm9tKS55KCkuaXNBdXRvKCk7Ci0gICAgICAgIGJvb2wgdG9Jc0F1dG8g
PSB2YWx1ZSh0bykueCgpLmlzQXV0bygpICYmIHZhbHVlKHRvKS55KCkuaXNBdXRvKCk7Ci0KLSAg
ICAgICAgcmV0dXJuICghZnJvbUlzQXV0byAmJiAhdG9Jc0F1dG8pOyAKKyAgICAgICAgYm9vbCBm
cm9tSXNBdXRvID0gdmFsdWUoZnJvbSkueC5pc0F1dG8oKSAmJiB2YWx1ZShmcm9tKS55LmlzQXV0
bygpOworICAgICAgICBib29sIHRvSXNBdXRvID0gdmFsdWUodG8pLnguaXNBdXRvKCkgJiYgdmFs
dWUodG8pLnkuaXNBdXRvKCk7CisgICAgICAgIHJldHVybiAhZnJvbUlzQXV0byAmJiAhdG9Jc0F1
dG87CiAgICAgfQogfTsKIApAQCAtMTI5MiwyMCArMTI5MSwyMCBAQCBzdGF0aWMgaW5saW5lIHNp
emVfdCBzaGFkb3dMaXN0TGVuZ3RoKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdykKICAgICByZXR1
cm4gY291bnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSogc2hhZG93Rm9y
QmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBv
dGhlclNoYWRvdykKK3N0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSYgc2hhZG93Rm9yQmxl
bmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBvdGhl
clNoYWRvdykKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVs
dFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3Ro
KExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChM
ZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJh
bnNwYXJlbnRCbGFjayk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRl
ZmF1bHRJbnNldFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCks
IExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgZmFsc2UsIENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93
RGF0YT4gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0
aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhU
eXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3Jt
YWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQ
b2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQp
KSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
U2hhZG93U3R5bGU6Okluc2V0LCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKExlbmd0
aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hh
ZG93U3R5bGU6Ok5vcm1hbCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0YShM
ZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9
IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCks
IFNoYWRvd1N0eWxlOjpJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFdlYktpdEJveFNoYWRv
d0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFj
ayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdl
YktpdEJveFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsg
TGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgo
TGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIHRydWUsIENvbG9yOjp0cmFu
c3BhcmVudEJsYWNrKTsKIAogICAgIGlmIChzcmNTaGFkb3cpCi0gICAgICAgIHJldHVybiBzcmNT
aGFkb3c7CisgICAgICAgIHJldHVybiAqc3JjU2hhZG93OwogCiAgICAgaWYgKG90aGVyU2hhZG93
LT5zdHlsZSgpID09IFNoYWRvd1N0eWxlOjpJbnNldCkKLSAgICAgICAgcmV0dXJuIG90aGVyU2hh
ZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0Rh
dGEuZ2V0KCkgOiAmZGVmYXVsdEluc2V0U2hhZG93RGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJu
IG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gZGVmYXVsdEluc2V0V2ViS2l0Qm94
U2hhZG93RGF0YS5nZXQoKSA6IGRlZmF1bHRJbnNldFNoYWRvd0RhdGEuZ2V0KCk7CiAKLSAgICBy
ZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdFdlYktpdEJv
eFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CisgICAgcmV0dXJu
IG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gZGVmYXVsdFdlYktpdEJveFNoYWRv
d0RhdGEuZ2V0KCkgOiBkZWZhdWx0U2hhZG93RGF0YS5nZXQoKTsKIH0KIAogY2xhc3MgUHJvcGVy
dHlXcmFwcGVyU2hhZG93IGZpbmFsIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJh
c2UgewpAQCAtMTQyOCwxMSArMTQyNywxMSBAQCBwcml2YXRlOgogICAgICAgICBTaGFkb3dEYXRh
KiBsYXN0U2hhZG93ID0gbnVsbHB0cjsKIAogICAgICAgICB3aGlsZSAoc2hhZG93QSB8fCBzaGFk
b3dCKSB7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dG
b3JCbGVuZGluZyhzaGFkb3dBLCBzaGFkb3dCKTsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0Rh
dGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0IsIHNoYWRvd0EpOworICAg
ICAgICAgICAgYXV0byYgc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwgc2hh
ZG93Qik7CisgICAgICAgICAgICBhdXRvJiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhz
aGFkb3dCLCBzaGFkb3dBKTsKIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0Rh
dGE+IGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoc3JjU2hhZG93LCBkc3RTaGFkb3csIGNvbnRl
eHQpOwotICAgICAgICAgICAgU2hhZG93RGF0YSogYmxlbmRlZFNoYWRvd1B0ciA9IGJsZW5kZWRT
aGFkb3cuZ2V0KCk7CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMo
JnNyY1NoYWRvdywgJmRzdFNoYWRvdywgY29udGV4dCk7CisgICAgICAgICAgICBhdXRvIGJsZW5k
ZWRTaGFkb3dQdHIgPSBibGVuZGVkU2hhZG93LmdldCgpOwogCiAgICAgICAgICAgICBpZiAoIWxh
c3RTaGFkb3cpCiAgICAgICAgICAgICAgICAgbmV3U2hhZG93RGF0YSA9IFdURk1vdmUoYmxlbmRl
ZFNoYWRvdyk7CkBAIC0xNDQxLDggKzE0NDAsOCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBs
YXN0U2hhZG93ID0gYmxlbmRlZFNoYWRvd1B0cjsKIAotICAgICAgICAgICAgc2hhZG93QSA9IHNo
YWRvd0EgPyBzaGFkb3dBLT5uZXh0KCkgOiAwOwotICAgICAgICAgICAgc2hhZG93QiA9IHNoYWRv
d0IgPyBzaGFkb3dCLT5uZXh0KCkgOiAwOworICAgICAgICAgICAgc2hhZG93QSA9IHNoYWRvd0Eg
PyBzaGFkb3dBLT5uZXh0KCkgOiBudWxscHRyOworICAgICAgICAgICAgc2hhZG93QiA9IHNoYWRv
d0IgPyBzaGFkb3dCLT5uZXh0KCkgOiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIG5ld1NoYWRvd0RhdGE7CkBAIC0xNDcxLDEzICsxNDcwLDE0IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgaW50IG1heExlbmd0aCA9IHN0ZDo6bWF4KGZyb21MZW5ndGgsIHRvTGVuZ3RoKTsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhMZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgU2hhZG93RGF0YSogZnJvbVNoYWRvdyA9IGkgPCBmcm9tTGVuZ3RoID8gZnJvbVNoYWRv
d3NbaV0gOiAwOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogdG9TaGFkb3cgPSBpIDwg
dG9MZW5ndGggPyB0b1NoYWRvd3NbaV0gOiAwOworICAgICAgICAgICAgYXV0byBmcm9tU2hhZG93
ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IG51bGxwdHI7CisgICAgICAgICAg
ICBhdXRvIHRvU2hhZG93ID0gaSA8IHRvTGVuZ3RoID8gdG9TaGFkb3dzW2ldIDogbnVsbHB0cjsK
KworICAgICAgICAgICAgYXV0byYgc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoZnJvbVNo
YWRvdywgdG9TaGFkb3cpOworICAgICAgICAgICAgYXV0byYgZHN0U2hhZG93ID0gc2hhZG93Rm9y
QmxlbmRpbmcodG9TaGFkb3csIGZyb21TaGFkb3cpOwogCi0gICAgICAgICAgICBjb25zdCBTaGFk
b3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1NoYWRv
dyk7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JC
bGVuZGluZyh0b1NoYWRvdywgZnJvbVNoYWRvdyk7CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRT
aGFkb3cgPSBibGVuZEZ1bmMoJnNyY1NoYWRvdywgJmRzdFNoYWRvdywgY29udGV4dCk7CiAKLSAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gYmxl
bmRGdW5jKHNyY1NoYWRvdywgZHN0U2hhZG93LCBjb250ZXh0KTsKICAgICAgICAgICAgIC8vIElu
c2VydCBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpc3QgdG8gcHJlc2VydmUgdGhlIG9yZGVyLgogICAg
ICAgICAgICAgYmxlbmRlZFNoYWRvdy0+c2V0TmV4dChXVEZNb3ZlKG5ld1NoYWRvd0RhdGEpKTsK
ICAgICAgICAgICAgIG5ld1NoYWRvd0RhdGEgPSBXVEZNb3ZlKGJsZW5kZWRTaGFkb3cpOwpAQCAt
MjM0OCwxOCArMjM0OCwxOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLWNsYXNzIFRhYlNpemVQ
cm9wZXJ0eVdyYXBwZXIgZmluYWwgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyPGNvbnN0IFRhYlNp
emUmPiB7CitjbGFzcyBUYWJTaXplUHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3Bl
cnR5V3JhcHBlcjxUYWJTaXplPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgVGFiU2l6ZVByb3BlcnR5V3JhcHBlcigpCi0gICAgICAgIDogUHJvcGVydHlXcmFw
cGVyPGNvbnN0IFRhYlNpemUmPihDU1NQcm9wZXJ0eVRhYlNpemUsICZSZW5kZXJTdHlsZTo6dGFi
U2l6ZSwgJlJlbmRlclN0eWxlOjpzZXRUYWJTaXplKQorICAgICAgICA6IFByb3BlcnR5V3JhcHBl
cjxUYWJTaXplPihDU1NQcm9wZXJ0eVRhYlNpemUsICZSZW5kZXJTdHlsZTo6dGFiU2l6ZSwgJlJl
bmRlclN0eWxlOjpzZXRUYWJTaXplKQogICAgIHsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5JbnRlcnBvbGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5
bGUmIHRvLCBDb21wb3NpdGVPcGVyYXRpb24pIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBy
ZXR1cm4gdmFsdWUoZnJvbSkuaXNTcGFjZXMoKSA9PSB2YWx1ZSh0bykuaXNTcGFjZXMoKTsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlKGZyb20pLmlzU3BhY2VzID09IHZhbHVlKHRvKS5pc1NwYWNlczsK
ICAgICB9CiAKICAgICB2b2lkIGJsZW5kKFJlbmRlclN0eWxlJiBkZXN0aW5hdGlvbiwgY29uc3Qg
UmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJlbmRlclN0eWxlJiB0bywgY29uc3QgQ1NTUHJvcGVy
dHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDc1N2I0NWQz
ZGIxNzJjMjVhNTdiNTM4OTQ4NDU3MTViNTFlN2M4ZjYuLjhkNmNhNWVjNjc4ZWY4MmU3ZWMzNDU0
YTA3ZGZiMGYxYzhmNjJlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNTE4LDE0ICsxNTE4LDE0IEBAIHN0YXRpYyBF
bGVtZW50KiBzdHlsZUVsZW1lbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiBzdGF0aWMgUmVmPENTU1Zh
bHVlPiB2YWx1ZUZvclBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGVu
Z3RoUG9pbnQmIHBvc2l0aW9uKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZUZvckxlbmd0aChwb3NpdGlvbi54KCksIHN0eWxlKSk7Ci0gICAgbGlzdC0+YXBwZW5kKHpv
b21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueSgpLCBzdHlsZSkpOworICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLngs
IHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5n
dGgocG9zaXRpb24ueSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gdmFsdWVGb3JQb3NpdGlvbk9yQXV0byhjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IExlbmd0aFBvaW50JiBwb3NpdGlvbikKIHsKLSAgICBpZiAocG9zaXRpb24ueCgp
LmlzQXV0bygpICYmIHBvc2l0aW9uLnkoKS5pc0F1dG8oKSkKKyAgICBpZiAocG9zaXRpb24ueC5p
c0F1dG8oKSAmJiBwb3NpdGlvbi55LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKIAog
ICAgIHJldHVybiB2YWx1ZUZvclBvc2l0aW9uKHN0eWxlLCBwb3NpdGlvbik7CkBAIC0xOTIxLDcg
KzE5MjEsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGF1dG8qIGNvbnRlbnREYXRhID0gc3R5bGUu
Y29udGVudERhdGEoKTsgY29udGVudERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5l
eHQoKSkgewogICAgICAgICBpZiAoaXM8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEp
KQotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3du
Y2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRlcigpLmlkZW50aWZp
ZXIoKSwgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSX05BTUUpKTsKKyAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnRE
YXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVyLCBDU1NVbml0VHlwZTo6Q1NT
X0NPVU5URVJfTkFNRSkpOwogICAgICAgICBlbHNlIGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigq
Y29udGVudERhdGEpKQogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGRvd25jYXN0PEltYWdlQ29u
dGVudERhdGE+KCpjb250ZW50RGF0YSkuaW1hZ2UoKS5jc3NWYWx1ZSgpKTsKICAgICAgICAgZWxz
ZSBpZiAoaXM8VGV4dENvbnRlbnREYXRhPigqY29udGVudERhdGEpKQpAQCAtMzAxNCw3ICszMDE0
LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclBy
b3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogICAgICAgICAg
ICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUuY29sdW1uV2lkdGgoKSwgc3R5
bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKLSAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhlbHMo
MS4wKSwgc3R5bGUudGFiU2l6ZSgpLmlzU3BhY2VzKCkgPyBDU1NVbml0VHlwZTo6Q1NTX05VTUJF
UiA6IENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzdHlsZS50YWJTaXplKCkud2lkdGhJblBpeGVscygxLjApLCBzdHlsZS50
YWJTaXplKCkuaXNTcGFjZXMgPyBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiA6IENTU1VuaXRUeXBl
OjpDU1NfUFgpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q3Vyc29yOiB7CiAgICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0OwogICAgICAgICAgICAgYXV0byogY3Vyc29ycyA9
IHN0eWxlLmN1cnNvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhG
dW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKaW5k
ZXggZjViYzhjYTk2YjkwZDYwNTUwZGNhNTgyMWU4Mzg1NDlhNGIyZjdlZi4uZDZhMTJjYmI5Njky
MjczODU0MmY0ZTA5NzQ3M2U3YjhlYzdkZTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1
bmN0aW9ucy5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBMYXlvdXRTaXplIHNpemVGb3JMZW5ndGhT
aXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aCwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bQog
CiBMYXlvdXRQb2ludCBwb2ludEZvckxlbmd0aFBvaW50KGNvbnN0IExlbmd0aFBvaW50JiBsZW5n
dGhQb2ludCwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bVZhbHVlKQogewotICAgIHJldHVybiB7
IHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngoKSwgbWF4aW11bVZhbHVlLndpZHRoKCkpLCB2
YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55KCksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsK
KyAgICByZXR1cm4geyB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54LCBtYXhpbXVtVmFsdWUu
d2lkdGgoKSksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LnksIG1heGltdW1WYWx1ZS5oZWln
aHQoKSkgfTsKIH0KIAogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVu
Z3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQpAQCAtMTMzLDcg
KzEzMyw3IEBAIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNp
emUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYKIAogRmxvYXRQb2ludCBmbG9hdFBvaW50
Rm9yTGVuZ3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0aFBvaW50LCBjb25zdCBGbG9h
dFNpemUmIGJveFNpemUpCiB7Ci0gICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5n
dGhQb2ludC54KCksIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3Ro
UG9pbnQueSgpLCBib3hTaXplLmhlaWdodCgpKSB9OworICAgIHJldHVybiB7IGZsb2F0VmFsdWVG
b3JMZW5ndGgobGVuZ3RoUG9pbnQueCwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxl
bmd0aChsZW5ndGhQb2ludC55LCBib3hTaXplLmhlaWdodCgpKSB9OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNw
bGF5U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oCmlu
ZGV4IDdlZTMwYTNlMTMxMjk0YTNkNTVhY2VmNGNhYTBhNzFjM2QxMGFkNTguLjZmZWMzNzQ1MGFj
MGFiZmVkMGNhODA3NTM5MGVlMjY5ODRjYWMwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
Y3NzL0Rpc3BsYXlTdHlsZS5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIGJvb2wg
cHJlc2VydmVOZXdsaW5lKCkgY29uc3Q7CiAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBj
b25zdDsKIAotICAgIGNvbnN0IFRhYlNpemUmIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3Rh
YlNpemU7IH0KKyAgICBUYWJTaXplIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7
IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQmFja2dyb3VuZChjb25zdCBSZW5kZXJTdHls
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNWI4YjM5MGI0MTAwMzJkYzg3OTdkOGVi
ZGI3M2RiMWY1MGU3MmE1YS4uMjc3Nzk3YmM1YTQ1YTc5MzIxNTdiMDViNjNkMzQwZGQyN2FjMjVi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yNzgsNiArMjc4LDcgQEAKICNpbmNsdWRl
IDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CkBAIC0xMjQ4LDcgKzEyNDksNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8KFVDaGFyMzIgYSwgY29uc3QgVW5pY29kZUNvZGVQ
b2ludFJhbmdlJiBiKQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3RlbnRpYWxDdXN0b21FbGVt
ZW50TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKIHsKLSAgICBzdGF0aWMgY29uc3Qg
VW5pY29kZUNvZGVQb2ludFJhbmdlIHJhbmdlc1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIg
VW5pY29kZUNvZGVQb2ludFJhbmdlIHJhbmdlc1tdID0gewogICAgICAgICB7ICctJywgJy4nIH0s
CiAgICAgICAgIHsgJzAnLCAnOScgfSwKICAgICAgICAgeyAnXycsICdfJyB9LApAQCAtMTI2Nyw5
ICsxMjY4LDggQEAgc3RhdGljIGlubGluZSBib29sIGlzUG90ZW50aWFsQ3VzdG9tRWxlbWVudE5h
bWVDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgICAgIHsgMHhGREYwLCAweEZGRkQg
fSwKICAgICAgICAgeyAweDEwMDAwLCAweEVGRkZGIH0sCiAgICAgfTsKLQotICAgIEFTU0VSVChz
dGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHJhbmdlcyksIHN0ZDo6ZW5kKHJhbmdlcykpKTsKLSAg
ICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4ocmFuZ2VzKSwgc3RkOjplbmQo
cmFuZ2VzKSwgY2hhcmFjdGVyKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0
IHNldCB7IHJhbmdlcyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMoY2hhcmFjdGVyKTsKIH0K
IAogQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3VtZW50Ojp2YWxpZGF0ZUN1
c3RvbUVsZW1lbnROYW1lKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcAppbmRleCA5YTM2NzU5NmRkMDI2OWQ1OWY2M2ViMGY2
Yzg5ZTM0ZGQ4MjE4MmQ5Li5iNWY0Y2MwNWUyNzY3YTE4YzY3M2QwOGUzNGNkMjIwNjljNTgxOTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCkBAIC0zMiw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgTGVuZ3RoUG9pbnQmIHNpemUpCiB7Ci0gICAgcmV0dXJuIHRzIDw8IHNp
emUueCgpIDw8ICIgIiA8PCBzaXplLnkoKTsKKyAgICByZXR1cm4gdHMgPDwgc2l6ZS54IDw8ICIg
IiA8PCBzaXplLnk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhQb2ludC5oCmluZGV4IDgxMjA1YmIxM2RkYTUwMzNiMmM5MGZiZWEwNTMwYzJm
NTZmOTkzNmIuLjk4YmRjY2EwNzFmOGMyMTliMmNiYTkwYmNiYzAxZjMyNWI2MjIyMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuaApAQCAtMzIsNDQgKzMyLDI1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBCbGVuZGluZ0NvbnRleHQ7CiAKIHN0cnVjdCBMZW5ndGhQ
b2ludCB7Ci1wdWJsaWM6Ci0gICAgTGVuZ3RoUG9pbnQoKQotICAgIHsKLSAgICB9Ci0gICAgCi0g
ICAgTGVuZ3RoUG9pbnQoTGVuZ3RoIHgsIExlbmd0aCB5KQotICAgICAgICA6IG1feChXVEZNb3Zl
KHgpKQotICAgICAgICAsIG1feShXVEZNb3ZlKHkpKQotICAgIHsKLSAgICB9CisgICAgTGVuZ3Ro
IHg7CisgICAgTGVuZ3RoIHk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoUG9p
bnQmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFBvaW50JiBvdGhl
cikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ggPT0gby5tX3ggJiYgbV95ID09IG8u
bV95OworICAgICAgICByZXR1cm4geCA9PSBvdGhlci54ICYmIHkgPT0gb3RoZXIueTsKICAgICB9
CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAgICAgICByZXR1cm4geCAhPSBvdGhlci54
IHx8IHkgIT0gb3RoZXIueTsKICAgICB9CiAKLSAgICB2b2lkIHNldFgoTGVuZ3RoIHgpIHsgbV94
ID0gV1RGTW92ZSh4KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1f
eDsgfQotCi0gICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IG1feSA9IFdURk1vdmUoeSk7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KLQotICAgIGJvb2wgaXNa
ZXJvKCkgY29uc3QgeyByZXR1cm4gbV94LmlzWmVybygpICYmIG1feS5pc1plcm8oKTsgfQotCi1w
cml2YXRlOgotICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIHRvIHBhY2sgdGhlIHR3byBM
ZW5ndGhzIHRvZ2V0aGVyIGJldHRlciBzb21laG93ICh0byBhdm9pZCBwYWRkaW5nIGJldHdlZW4g
dGhlbSkuCi0gICAgTGVuZ3RoIG1feDsKLSAgICBMZW5ndGggbV95OworICAgIGJvb2wgaXNaZXJv
KCkgY29uc3QgeyByZXR1cm4geC5pc1plcm8oKSAmJiB5LmlzWmVybygpOyB9CiB9OwogCiBpbmxp
bmUgTGVuZ3RoUG9pbnQgYmxlbmQoY29uc3QgTGVuZ3RoUG9pbnQmIGZyb20sIGNvbnN0IExlbmd0
aFBvaW50JiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVy
biBMZW5ndGhQb2ludChibGVuZChmcm9tLngoKSwgdG8ueCgpLCBjb250ZXh0KSwgYmxlbmQoZnJv
bS55KCksIHRvLnkoKSwgY29udGV4dCkpOworICAgIHJldHVybiB7IGJsZW5kKGZyb20ueCwgdG8u
eCwgY29udGV4dCksIGJsZW5kKGZyb20ueSwgdG8ueSwgY29udGV4dCkgfTsKIH0KIAogV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IExlbmd0aFBvaW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApp
bmRleCBiYWJlOTY2ODRlN2MxNWNiOWNhOTY5M2JhMzU2MGE4YWEzZDJjOTZjLi5lOWYyNjhjMTBk
YWI0Mjg0Njc5OGE4NmQ5Zjk5MmRjNWE1ZmI4MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTE2NSw4ICsxNjUsOCBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBw
cmltYXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7IH0KICAgICBmbG9hdCBzcGFjZVdpZHRoKCkgY29u
c3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5zcGFjZVdpZHRoKCkgKyBtX2xldHRlclNwYWNpbmc7
IH0KLSAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBGb250JiwgY29uc3QgVGFiU2l6ZSYsIGZsb2F0
KSBjb25zdDsKLSAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBUYWJTaXplJiB0YWJTaXplLCBmbG9h
dCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJpbWFyeUZvbnQoKSwgdGFiU2l6
ZSwgcG9zaXRpb24pOyB9CisgICAgZmxvYXQgdGFiV2lkdGgoY29uc3QgRm9udCYsIFRhYlNpemUs
IGZsb2F0KSBjb25zdDsKKyAgICBmbG9hdCB0YWJXaWR0aChUYWJTaXplIHRhYlNpemUsIGZsb2F0
IHBvc2l0aW9uKSBjb25zdCB7IHJldHVybiB0YWJXaWR0aChwcmltYXJ5Rm9udCgpLCB0YWJTaXpl
LCBwb3NpdGlvbik7IH0KICAgICBib29sIGhhc1ZhbGlkQXZlcmFnZUNoYXJXaWR0aCgpIGNvbnN0
OwogICAgIGJvb2wgZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJsZShmbG9hdCAmd2lkdGgp
IGNvbnN0OyAvLyByZXR1cm5zIHRydWUgb24gc3VjY2VzcwogCkBAIC0zNzAsNyArMzcwLDcgQEAg
aW5saW5lIEZvbnRTZWxlY3RvciogRm9udENhc2NhZGU6OmZvbnRTZWxlY3RvcigpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZm9udHMgPyBtX2ZvbnRzLT5mb250U2VsZWN0b3IoKSA6IG51bGxwdHI7CiB9
CiAKLWlubGluZSBmbG9hdCBGb250Q2FzY2FkZTo6dGFiV2lkdGgoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0CitpbmxpbmUgZmxv
YXQgRm9udENhc2NhZGU6OnRhYldpZHRoKGNvbnN0IEZvbnQmIGZvbnQsIFRhYlNpemUgdGFiU2l6
ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgZmxvYXQgYmFzZVRhYldpZHRoID0gdGFi
U2l6ZS53aWR0aEluUGl4ZWxzKGZvbnQuc3BhY2VXaWR0aCgpKTsKICAgICBpZiAoIWJhc2VUYWJX
aWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
LmNwcAppbmRleCA3NTQzZjQ3NWEyN2E2NTE1OTA2Y2MyMmViM2Y2MGE5MTQwOTI5MGJhLi4wNzU2
MTk0Y2YyZjVlOGI5ZmJiMjdhMTBjZTc4YTJlMThjMjNjZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC03NCw3ICs3NCw4IEBA
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1
ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKGJ1ZmZlclNpemUgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICB1aW50MzJfdCBtYXggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICBpZiAoYnVmZmVyU2l6ZSA+
IG1heCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJyYXkg
PSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJTaXplKTsK
ICAgICBpZiAoIXBpeGVsQXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UYWJTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
YWJTaXplLmgKaW5kZXggMzRhNzA4MTA2MjhhYzk1MjdmNGY1Y2YwNDc1ZDgzNWI3Y2MyZWFjZi4u
OGU0M2Y5NjdiOGE2NDdmNDg4YjMzNjUxODQ2ZWJlMzZkZDEwN2VjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaApAQCAtMjksNDkgKzI5LDM5IEBACiAKICNw
cmFnbWEgb25jZQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0
U3RyZWFtLmg+CiAKLWVudW0gVGFiU2l6ZVZhbHVlVHlwZSB7Ci0gICAgTGVuZ3RoVmFsdWVUeXBl
LAotICAgIFNwYWNlVmFsdWVUeXBlLAotfTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IFRhYlNpemUgewotICAgIFRhYlNpemUoZmxvYXQgbnVtT3JMZW5ndGgsIFRhYlNpemVWYWx1ZVR5
cGUgaXNTcGFjZXMgPSBTcGFjZVZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3ZhbHVlKG51bU9yTGVu
Z3RoKQotICAgICAgICAsIG1faXNTcGFjZXMoaXNTcGFjZXMpCi0gICAgewotICAgIH0KLQotICAg
IGJvb2wgaXNTcGFjZXMoKSBjb25zdAorICAgIGVudW0gVmFsdWVUeXBlIHsgTGVuZ3RoLCBTcGFj
ZXMgfTsKKyAgICBUYWJTaXplKGZsb2F0IG51bU9yTGVuZ3RoLCBWYWx1ZVR5cGUgdHlwZSA9IFNw
YWNlcykKKyAgICAgICAgOiB2YWx1ZShudW1Pckxlbmd0aCkKKyAgICAgICAgLCBpc1NwYWNlcyh0
eXBlID09IFNwYWNlcykKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzU3BhY2VzOwogICAgIH0K
IAogICAgIGZsb2F0IHdpZHRoSW5QaXhlbHMoZmxvYXQgc3BhY2VXaWR0aCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX2lzU3BhY2VzID8gbV92YWx1ZSAqIHNwYWNlV2lkdGggOiBtX3Zh
bHVlOworICAgICAgICByZXR1cm4gaXNTcGFjZXMgPyB2YWx1ZSAqIHNwYWNlV2lkdGggOiB2YWx1
ZTsKICAgICB9CiAKLSAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV92YWx1ZTsKLSAgICB9CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuIHZhbHVlOyB9CiAKLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFs
dWUoKTsgfQotCi0gICAgZmxvYXQgbV92YWx1ZTsKLSAgICBib29sIG1faXNTcGFjZXM7CisgICAg
ZmxvYXQgdmFsdWU7CisgICAgYm9vbCBpc1NwYWNlczsKIH07CiAKLWlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgVGFiU2l6ZSYgYSwgY29uc3QgVGFiU2l6ZSYgYikKK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oVGFiU2l6ZSBhLCBUYWJTaXplIGIpCiB7Ci0gICAgcmV0dXJuIChhLm1fdmFsdWUg
PT0gYi5tX3ZhbHVlKSAmJiAoYS5tX2lzU3BhY2VzID09IGIubV9pc1NwYWNlcyk7CisgICAgcmV0
dXJuIGEudmFsdWUgPT0gYi52YWx1ZSAmJiBhLmlzU3BhY2VzID09IGIuaXNTcGFjZXM7CiB9CiAK
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVGFiU2l6ZSYgYSwgY29uc3QgVGFiU2l6ZSYg
YikKK2lubGluZSBib29sIG9wZXJhdG9yIT0oVGFiU2l6ZSBhLCBUYWJTaXplIGIpCiB7CiAgICAg
cmV0dXJuICEoYSA9PSBiKTsKIH0KIAoraW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgc3RyZWFtLCBUYWJTaXplIHNpemUpIHsgcmV0dXJuIHN0cmVhbSA8PCBzaXplLnZh
bHVlIDw8IChzaXplLmlzU3BhY2VzID8gIiBzcGFjZXMiIDogIiIpOyB9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RleHRSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApp
bmRleCAxZDQ3ZDY1ZDY4MjQ2MjZlMTU5Mjg4MDBmNDY5N2MyNzZjYjI3NjM0Li5hMjA5NmNmOWRl
MzVlOGE1YjM5M2E3ZmFjMGE0ODNkNTcxYzRmMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCkBAIC05NSw4ICs5NSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEhvcml6b250YWxHbHlwaFN0cmV0Y2goZmxvYXQgc2NhbGUpIHsgbV9ob3Jpem9udGFsR2x5
cGhTdHJldGNoID0gc2NhbGU7IH0KIAogICAgIGJvb2wgYWxsb3dUYWJzKCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvd1RhYnM7IH0KLSAgICBjb25zdCBUYWJTaXplJiB0YWJTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV90YWJTaXplOyB9Ci0gICAgdm9pZCBzZXRUYWJTaXplKGJvb2wsIGNvbnN0IFRhYlNp
emUmKTsKKyAgICBUYWJTaXplIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7IH0K
KyAgICB2b2lkIHNldFRhYlNpemUoYm9vbCwgVGFiU2l6ZSk7CiAKICAgICBmbG9hdCB4UG9zKCkg
Y29uc3QgeyByZXR1cm4gbV94cG9zOyB9CiAgICAgdm9pZCBzZXRYUG9zKGZsb2F0IHhQb3MpIHsg
bV94cG9zID0geFBvczsgfQpAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9kaXNhYmxlU3BhY2luZyA6IDE7CiB9OwogCi1pbmxpbmUgdm9pZCBUZXh0UnVuOjpzZXRU
YWJTaXplKGJvb2wgYWxsb3csIGNvbnN0IFRhYlNpemUmIHNpemUpCitpbmxpbmUgdm9pZCBUZXh0
UnVuOjpzZXRUYWJTaXplKGJvb2wgYWxsb3csIFRhYlNpemUgc2l6ZSkKIHsKICAgICBtX2FsbG93
VGFicyA9IGFsbG93OwogICAgIG1fdGFiU2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcAppbmRleCA5MmY0MmI2NzdkNTNk
ZDljNmEzZjZiZDZlM2Q5MWNiYWM2NmFhNGI5Li45ZGIxMTExMjhhMWZiN2NlZmVhNGFkMDJhZWMx
MWJhNWUyOTFkYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WUDlVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1ZQOVV0aWxpdGllcy5jcHAKQEAgLTI3LDEzICsyNywxNCBAQAogI2luY2x1ZGUgIlZQOVV0aWxp
dGllcy5oIgogCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3Rm
L1NvcnRlZEFycmF5TWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIGlzVmFsaWRW
UExldmVsKHVpbnQ4X3QgbGV2ZWwpCiB7Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRMZXZl
bHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRMZXZlbHNbXSA9IHsK
ICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzEsCiAgICAgICAgIFZQQ29uZmln
dXJhdGlvbkxldmVsOjpMZXZlbF8xXzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpM
ZXZlbF8yLApAQCAtNDksMTQgKzUwLDEzIEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUExldmVsKHVp
bnQ4X3QgbGV2ZWwpCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF82XzEsCiAg
ICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF82XzIsCiAgICAgfTsKLQotICAgIEFT
U0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkTGV2ZWxzKSwgc3RkOjplbmQodmFs
aWRMZXZlbHMpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZh
bGlkTGV2ZWxzKSwgc3RkOjplbmQodmFsaWRMZXZlbHMpLCBsZXZlbCk7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyB2YWxpZExldmVscyB9OworICAgIHJldHVybiBz
ZXQuY29udGFpbnMobGV2ZWwpOwogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBDb2xvclByaW1h
cmllcyh1aW50OF90IGNvbG9yUHJpbWFyaWVzKQogewotICAgIGNvbnN0ZXhwciB1aW50OF90IHZh
bGlkQ29sb3JQcmltYXJpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFs
aWRDb2xvclByaW1hcmllc1tdID0gewogICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1h
cmllczo6QlRfNzA5XzYsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpV
bnNwZWNpZmllZCwKICAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzQ3
MF82X00sCkBAIC03MCwxNCArNzAsMTMgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZQQ29sb3JQcmlt
YXJpZXModWludDhfdCBjb2xvclByaW1hcmllcykKICAgICAgICAgVlBDb25maWd1cmF0aW9uQ29s
b3JQcmltYXJpZXM6OlNNUFRFX0VHXzQzMl8xLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xv
clByaW1hcmllczo6RUJVX1RlY2hfMzIxM19FLAogICAgIH07Ci0KLSAgICBBU1NFUlQoc3RkOjpp
c19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZENvbG9yUHJpbWFyaWVzKSwgc3RkOjplbmQodmFsaWRD
b2xvclByaW1hcmllcykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVn
aW4odmFsaWRDb2xvclByaW1hcmllcyksIHN0ZDo6ZW5kKHZhbGlkQ29sb3JQcmltYXJpZXMpLCBj
b2xvclByaW1hcmllcyk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQg
eyB2YWxpZENvbG9yUHJpbWFyaWVzIH07CisgICAgcmV0dXJuIHNldC5jb250YWlucyhjb2xvclBy
aW1hcmllcyk7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzKHVpbnQ4X3QgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpCiB7Ci0gICAgY29uc3RleHByIHVp
bnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljc1tdID0geworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDhfdCB2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzW10gPSB7CiAgICAgICAg
IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF83MDlfNiwKICAgICAg
ICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVkLAog
ICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNDcwXzZf
TSwKQEAgLTk2LDEzICs5NSwxMyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBUcmFuc2ZlckNoYXJh
Y3RlcmlzdGljcyh1aW50OF90IHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKQogICAgICAgICBWUENv
bmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfNDI4XzEsCiAgICAg
ICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF8yMTAwX0hMRywK
ICAgICB9OwotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkVHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MpLCBzdGQ6OmVuZCh2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
KSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZFRyYW5z
ZmVyQ2hhcmFjdGVyaXN0aWNzKSwgc3RkOjplbmQodmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyksIHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRl
ZEFycmF5U2V0IHNldCB7IHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgfTsKKyAgICByZXR1
cm4gc2V0LmNvbnRhaW5zKHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKTsKIH0KIAogc3RhdGljIGJv
b2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRz
KQogewotICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkTWF0cml4Q29lZmZpY2llbnRzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkTWF0cml4Q29lZmZpY2llbnRzW10g
PSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6SWRlbnRpdHks
CiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfNzA5XzYsCiAg
ICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQsCkBA
IC0xMTgsOCArMTE3LDggQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRz
KHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRy
aXhDb2VmZmljaWVudHM6OkNocm9tYWNpdHlfTm9uY29uc3RhbnRfTHVtaW5hbmNlLAogICAgICAg
ICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzIxMDBfSUNDLAogICAgIH07
Ci0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRNYXRyaXhDb2VmZmlj
aWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJpeENvZWZmaWNpZW50cykpKTsKLSAgICByZXR1cm4g
c3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBz
dGQ6OmVuZCh2YWxpZE1hdHJpeENvZWZmaWNpZW50cyksIG1hdHJpeENvZWZmaWNpZW50cyk7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyB2YWxpZE1hdHJpeENvZWZm
aWNpZW50cyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMobWF0cml4Q29lZmZpY2llbnRzKTsK
IH0KIAogc3RkOjpvcHRpb25hbDxWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJU
cmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oCmluZGV4
IGVlMWEzNzlhNWJkODJhMjZhYzMyMTJjM2RkZjZlN2MwNDBjMThjNTUuLmUyZDE5OGZjYTJiNGMx
YzhmN2ZlNjQ4NDNiMWM0MTNkN2IxODRmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZh
dGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaApAQCAtNjAsMTMg
KzYwLDEzIEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIkluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDIjsgfQogCiAg
ICAgc3RydWN0IENoYXB0ZXJEYXRhIHsKLSAgICAgICAgTWVkaWFUaW1lIG1fc3RhcnRUaW1lOwot
ICAgICAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKLSAgICAgICAgU3RyaW5nIG1fdGl0bGU7Cisg
ICAgICAgIE1lZGlhVGltZSBzdGFydFRpbWU7CisgICAgICAgIE1lZGlhVGltZSBkdXJhdGlvbjsK
KyAgICAgICAgU3RyaW5nIHRpdGxlOwogCiAgICAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ2hhcHRlckRhdGEmIG90aGVyKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9zdGFydFRpbWUgPT0gb3RoZXIubV9zdGFydFRpbWUgJiYgbV9kdXJhdGlvbiA9
PSBvdGhlci5tX2R1cmF0aW9uICYmIG1fdGl0bGUgPT0gb3RoZXIubV90aXRsZTsKKyAgICAgICAg
ICAgIHJldHVybiBzdGFydFRpbWUgPT0gb3RoZXIuc3RhcnRUaW1lICYmIGR1cmF0aW9uID09IG90
aGVyLmR1cmF0aW9uICYmIHRpdGxlID09IG90aGVyLnRpdGxlOwogICAgICAgICB9CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQppbmRleCAwYmMw
ODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIyYmUzZjUwNzhhNzdlLi45NDljNjBiYzQ4ZTVhOWEwYjI1
ODBmMWEyMTIyZWVlODc1NDUxNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRW
aWRlb091dHB1dC5tbQpAQCAtMjMxLDE0ICsyMzEsMTMgQEAgdm9pZCBRdWV1ZWRWaWRlb091dHB1
dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCkKICAgICBpZiAobV9uZXh0SW1hZ2VU
aW1lYmFzZU9ic2VydmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGN1cnJlbnRUaW1l
ID0gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3VycmVudFRpbWVdKTsKLSAgICBhdXRvIGl0
ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIGN1cnJlbnRUaW1lKTsKKyAgICBh
dXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIFBBTDo6dG9NZWRpYVRp
bWUoW21fcGxheWVyIGN1cnJlbnRUaW1lXSkpOwogICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFt
ZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gbmV4dEltYWdlVGltZSA9IGl0ZXItPmZpcnN0OwogCi0gICAgbV9uZXh0
SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJvdW5kYXJ5VGltZU9ic2VydmVy
Rm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFMOjp0b0NNVGltZShjdXJyZW50
VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRl
LCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBtdXRhYmxlIHsKKyAgICBtX25l
eHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkQm91bmRhcnlUaW1lT2JzZXJ2
ZXJGb3JUaW1lczpAW1tOU1ZhbHVlIHZhbHVlV2l0aENNVGltZTpQQUw6OnRvQ01UaW1lKG5leHRJ
bWFnZVRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgpIHVzaW5nQmxvY2s6
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb3RlY3RlZERlbGVnYXRlID0gbV9kZWxl
Z2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091dHB1dF0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CiAg
ICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm5leHRJ
bWFnZVRpbWVSZWFjaGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4
IDA1YTgzMTZkYzI3ZTYzMDE3ZjM5N2YxOTI0NjliODJhMzNiN2IwMzQuLjA0YzAwM2I0ZTJlODc2
OGNkNTg3Nzc0ZTVkMWVjNjMyNzljODhiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCkBAIC0xNDIyLDE4ICsxNDIyLDE4IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAg
ICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZl
ckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBPcHVzQ29va2llQ29udGVudHMgY29va2llQ29udGVudHM7Ci0gICAgICAgICAg
ICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURh
dGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSwgY29va2ll
Q29udGVudHMpKSB7CisgICAgICAgICAgICBhdXRvIGNvb2tpZUNvbnRlbnRzID0gcGFyc2VPcHVz
UHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2Nv
bXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhKTsKKyAgICAgICAgICAgIGlmICghY29v
a2llQ29udGVudHMpIHsKICAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJ
QkxFKCJGYWlsZWQgdG8gcGFyc2UgT3B1cyBwcml2YXRlIGRhdGEiKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldCkgeworICAgICAg
ICAgICAgaWYgKCFjb29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFja2V0KSB7CiAgICAgICAgICAg
ICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1cyBwcml2YXRlIGRhdGEgaW5k
aWNhdGVzIDAgZnJhbWVzIHBlciBwYWNrZXQ7IGJhaWxpbmciKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBtX2ZyYW1lc1BlclBhY2tldCA9IGNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tl
dDsKLSAgICAgICAgICAgIG1fZnJhbWVEdXJhdGlvbiA9IGNvb2tpZUNvbnRlbnRzLmZyYW1lRHVy
YXRpb247Ci0gICAgICAgICAgICBmb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZU9wdXNBdWRpb0Zv
cm1hdERlc2NyaXB0aW9uKGNvb2tpZUNvbnRlbnRzKTsKKyAgICAgICAgICAgIG1fZnJhbWVzUGVy
UGFja2V0ID0gY29va2llQ29udGVudHMtPmZyYW1lc1BlclBhY2tldDsKKyAgICAgICAgICAgIG1f
ZnJhbWVEdXJhdGlvbiA9IGNvb2tpZUNvbnRlbnRzLT5mcmFtZUR1cmF0aW9uOworICAgICAgICAg
ICAgZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbigq
Y29va2llQ29udGVudHMpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlw
dGlvbikgewpAQCAtMTQ1Myw3ICsxNDUzLDYgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAg
ICAgICAgLy8gT3B1cyB0ZWNobmljYWxseSBhbGxvd3MgdGhlIGZyYW1lIGR1cmF0aW9uIGFuZCBm
cmFtZXMtcGVyLXBhY2tldCB2YWx1ZXMgdG8gY2hhbmdlIGZyb20gcGFja2V0IHRvIHBhY2tldC4K
ICAgICAgICAgLy8gQ29yZUF1ZGlvIGRvZXNuJ3Qgc3VwcG9ydCBBU0JEIHZhbHVlcyBsaWtlIHRo
ZXNlIHRvIGNoYW5nZSBvbiBhIHBlci1wYWNrZXQgYmFzaXMsIHNvIHRocm93IGFuIGVycm9yIHdo
ZW4KICAgICAgICAgLy8gdGhhdCBraW5kIG9mIHZhcmlhYmlsaXR5IGlzIGVuY291bnRlcmVkLgot
ICAgICAgICBPcHVzQ29va2llQ29udGVudHMgY29va2llQ29udGVudHM7CiAgICAgICAgIGF1dG8m
IHByaXZhdGVEYXRhID0gdHJhY2soKS5jb2RlY19wcml2YXRlLnZhbHVlKCk7CiAgICAgICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3VvdXNDb21wbGV0ZUJsb2NrQnVmZmVyKG1fY3Vy
cmVudFBhY2tldEJ5dGVPZmZzZXQsICptX2NvbXBsZXRlUGFja2V0U2l6ZSk7CiAgICAgICAgIGlm
ICghY29udGlndW91c0J1ZmZlcikgewpAQCAtMTQ2Niw5ICsxNDY1LDggQEAgd2VibTo6U3RhdHVz
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRh
KHdlYm06OlJlYWQKICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNN
QmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAg
ICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHBy
aXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEs
IGNvb2tpZUNvbnRlbnRzKQotICAgICAgICAgICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVy
UGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0Ci0gICAgICAgICAgICB8fCBjb29raWVDb250ZW50
cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJhdGlvbikgeworICAgICAgICBhdXRvIGNvb2tp
ZUNvbnRlbnRzID0gcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2
YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhKTsK
KyAgICAgICAgaWYgKCFjb29raWVDb250ZW50cyB8fCBjb29raWVDb250ZW50cy0+ZnJhbWVzUGVy
UGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0IHx8IGNvb2tpZUNvbnRlbnRzLT5mcmFtZUR1cmF0
aW9uICE9IG1fZnJhbWVEdXJhdGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9J
Rl9QT1NTSUJMRSgiT3B1cyBmcmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNr
OyBlcnJvciIpOwogICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JD
b2RlOjpWYXJpYWJsZUZyYW1lRHVyYXRpb24pKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0
aWxpdGllc0NvY29hLmgKaW5kZXggODcxMDRkOGI3YjM1N2MxNjBiNmRjY2M0MWJmZTFmODllMGE2
YzI3MS4uOGI2N2RlNmY0OTMwMWJhMDExNThhOTgwMDk5NTkyNzcwNDQ1MjM0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NlY29u
ZHMuaD4KIAotY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1LDkgKzU1LDkgQEAgc3RydWN0IE9wdXNDb29raWVD
b250ZW50cyB7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPcHVzRGVjb2RlckF2YWlsYWJsZSgp
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCByZWdpc3Rlck9wdXNEZWNvZGVySWZOZWVkZWQoKTsKLWJv
b2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IHByaXZhdGVEYXRhU2l6ZSwgY29uc3Qgdm9p
ZCogcHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZURhdGFTaXplLCBjb25zdCB2b2lkKiBmcmFtZURh
dGEsIE9wdXNDb29raWVDb250ZW50cyYpOworc3RkOjpvcHRpb25hbDxPcHVzQ29va2llQ29udGVu
dHM+IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBwcml2YXRlRGF0YVNpemUsIGNvbnN0IHZv
aWQqIHByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVE
YXRhKTsKIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVPcHVzQXVkaW9G
b3JtYXREZXNjcmlwdGlvbihjb25zdCBPcHVzQ29va2llQ29udGVudHMmKTsKIAogfQogCi0jZW5k
aWYgLy8gJiYgUExBVEZPUk0oQ09DT0EpCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCmluZGV4IDdlMGFmYjI5MGRkODVhNzdmOWJlZmZm
NDk0N2E0N2I3NTM1ZWIyZjQuLmFiNWJhMWYyNTJjZWMyNzE2YjUwMGY2ZjlhNWM0YmJhNjc0Mjgx
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
Yk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCkBAIC0xNjksNyArMTY5LDcg
QEAgY29uc3RleHByIGludDMyX3Qgb3B1c0NvbmZpZ1RvQmFuZHdpZHRoKHVpbnQ4X3QgY29uZmln
KQogfQogI2VuZGlmCiAKLWJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJp
dmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZVNpemUs
IGNvbnN0IHZvaWQqIGZyYW1lRGF0YSwgT3B1c0Nvb2tpZUNvbnRlbnRzJiBjb29raWUpCitzdGQ6
Om9wdGlvbmFsPE9wdXNDb29raWVDb250ZW50cz4gcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90
IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsIHNpemVfdCBm
cmFtZVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSkKIHsKICNpZiBFTkFCTEUoT1BVUykKICAg
ICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzg0NQpAQCAtMjAxLDE2ICsyMDEs
MTcgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwg
Y29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAgICBhdXRvKiBwcml2YXRlRGF0YVB0ciA9
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihjb2RlY1ByaXZhdGVEYXRhKTsKIAogICAgIGlm
IChjb2RlY1ByaXZhdGVTaXplIDwgMTkpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAxLiBNYWdpYyBTaWduYXR1cmU6CiAgICAgLy8K
ICAgICAvLyAgICAgVGhpcyBpcyBhbiA4LW9jdGV0ICg2NC1iaXQpIGZpZWxkIHRoYXQgYWxsb3dz
IGNvZGVjCiAgICAgLy8gICAgIGlkZW50aWZpY2F0aW9uIGFuZCBpcyBodW1hbiByZWFkYWJsZS4K
ICAgICBpZiAoc3RybmNtcCgiT3B1c0hlYWQiLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihwcml2YXRlRGF0YVB0ciksIDgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAyLiBWZXJzaW9uICg4IGJpdHMsIHVuc2lnbmVk
KToKKyAgICBPcHVzQ29va2llQ29udGVudHMgY29va2llOwogICAgIGNvb2tpZS52ZXJzaW9uID0g
Kihwcml2YXRlRGF0YVB0ciArIDgpOwogCiAgICAgLy8gMy4gT3V0cHV0IENoYW5uZWwgQ291bnQg
J0MnICg4IGJpdHMsIHVuc2lnbmVkKToKQEAgLTIzMSw3ICsyMzIsNyBAQCBib29sIHBhcnNlT3B1
c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1By
aXZhdGVEYXRhLAogICAgIGF1dG8gZnJhbWVQdHIgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZnJhbWVEYXRhKTsKIAogICAgIGlmIChmcmFtZVNpemUgPCAxKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjNjcxNgogICAgIC8vIDMuMS4gVGhlIFRPQyBCeXRlCkBAIC0y
ODUsMjEgKzI4NiwyMCBAQCBib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1By
aXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLAogICAgICAgICAvLwogICAg
ICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgRmlndXJlIDU6IFRoZSBmcmFtZSBjb3VudCBi
eXRlCiAgICAgICAgIGlmIChmcmFtZVNpemUgPCAyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICB1aW50OF90IGZy
YW1lQ291bnRCeXRlID0gKihmcmFtZVB0ciArIDEpOwogICAgICAgICBjb29raWUuaXNWQlIgPSAo
KGZyYW1lQ291bnRCeXRlICYgMGIxMDAwMDAwMCkgPj4gNykgPT0gMTsKICAgICAgICAgY29va2ll
Lmhhc1BhZGRpbmcgPSAoKGZyYW1lQ291bnRCeXRlICYgMGIwMTAwMDAwMCkgPj4gNikgPT0gMTsK
ICAgICAgICAgY29va2llLmZyYW1lc1BlclBhY2tldCA9IChmcmFtZUNvdW50Qnl0ZSAmIDBiMDAx
MTExMTEpOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gY29va2llOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oY29kZWNQcml2YXRlU2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNvZGVjUHJpdmF0ZURhdGEpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZVNpemUpOwogICAgIFVO
VVNFRF9QQVJBTShmcmFtZURhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjb29raWUpOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oCmluZGV4
IDhkYzIxM2Y0N2Q0ZjgxOTIxMTExYTRhNjljNDk5NjJlYTczZmNmMGEuLmRjZDZhNDdiYTYwODUz
ZGEwOGUxMmYwMjAyODc5ZDQ5ZGIzNjM0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBAY2xhc3MgTGVn
YWN5VGlsZUxheWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViR0xCbG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9j
a2xpc3QubW0KaW5kZXggYjUyYzg2MTg2ZjBiYjA2ZmQzMjNlZDI5ZjgyZDc3Yzk1OGZlMjYwOC4u
OWY4ZGViZTk1NDYxMWVhMGU4YWQ3MzMwY2Q5MjZhYzJhMzA5MTQwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQpAQCAtMzUsNDMgKzM1LDI5IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBPU0J1aWxkSW5mbyB7Ci0gICAgT1NCdWls
ZEluZm8oKQotICAgICAgICA6IG1ham9yKDApCi0gICAgICAgICwgbWlub3IoMCkKLSAgICAgICAg
LCBidWlsZCgwKQotICAgIHsKLSAgICB9Ci0KLSAgICBPU0J1aWxkSW5mbyhpbnQgbWFqb3IsIGlu
dCBtaW5vciwgaW50IGJ1aWxkKQotICAgICAgICA6IG1ham9yKG1ham9yKQotICAgICAgICAsIG1p
bm9yKG1pbm9yKQotICAgICAgICAsIGJ1aWxkKGJ1aWxkKQotICAgIHsKLSAgICB9CisgICAgaW50
IG1ham9yIHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSAxMyBpbiAxM0M2NC4KKyAgICBpbnQgbWlu
b3IgeyAwIH07IC8vIFJlcHJlc2VudHMgdGhlIEMgaW4gMTNDNjQgKGFzIGEgbnVtYmVyIHdoZXJl
IEEgPT0gMSwgaS5lLiAzKS4KKyAgICBpbnQgYnVpbGQgeyAwIH07IC8vIFJlcHJlc2VudHMgdGhl
IDY0IGluIDEzQzY0LgogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9TQnVpbGRJbmZvJiBv
dGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KE9TQnVpbGRJbmZvIG90
aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ham9yID09IG90aGVyLm1ham9yICYm
IG1pbm9yID09IG90aGVyLm1pbm9yICYmIGJ1aWxkID09IG90aGVyLmJ1aWxkOwogICAgIH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKKyAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oT1NCdWlsZEluZm8gb3RoZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9yLCBidWlsZCkgPiBzdGQ6OnRpZShv
dGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKICAgICB9CiAKLSAgICBib29s
IG9wZXJhdG9yPD0oY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPD0oT1NCdWlsZEluZm8gb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9yLCBidWlsZCkgPD0gc3RkOjp0aWUob3RoZXIu
bWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVy
YXRvcjwoY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChPU0J1aWxkSW5mbyBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA8IHN0ZDo6dGllKG90aGVyLm1ham9yLCBv
dGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0KLQotICAgIGludCBtYWpvcjsgLy8gUmVw
cmVzZW50cyB0aGUgMTMgaW4gMTNDNjQuCi0gICAgaW50IG1pbm9yOyAvLyBSZXByZXNlbnRzIHRo
ZSBDIGluIDEzQzY0IChhcyBhIG51bWJlciB3aGVyZSBBID09IDEsIGkuZS4gMykuCi0gICAgaW50
IGJ1aWxkOyAvLyBSZXByZXNlbnRzIHRoZSA2NCBpbiAxM0M2NC4KIH07CiAKIHN0YXRpYyBPU0J1
aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcp
CkBAIC04Myw3ICs2OSw3IEBAIHN0YXRpYyBPU0J1aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NCdWls
ZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBO
U0xvZyhAIldlYkdMQmxvY2tsaXN0IGNvdWxkIG5vdCBwYXJzZSBPU0J1aWxkIGVudHJ5OiAlQCIs
IGJ1aWxkU3RyaW5nKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gT1NCdWlsZEluZm8oKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBOU1RleHRDaGVja2luZ1Jlc3VsdCAqbWF0
Y2hSZXN1bHQgPSBbbWF0Y2hlcyBvYmplY3RBdEluZGV4OjBdOwpAQCAtOTIsMTQgKzc4LDE0IEBA
IHN0YXRpYyBPU0J1aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZyhOU1N0cmluZyAq
YnVpbGRTdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBOU0xvZyhAIldlYkdMQmxvY2ts
aXN0IGNvdWxkIG5vdCBwYXJzZSBPU0J1aWxkIGVudHJ5OiAlQCIsIGJ1aWxkU3RyaW5nKTsKICNl
bmRpZgotICAgICAgICByZXR1cm4gT1NCdWlsZEluZm8oKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKICAgICBpbnQgbWFqb3JWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdX
aXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRleDoxXV0gaW50VmFsdWVdOwogICAgIGlu
dCBtaW5vclZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpbbWF0Y2hS
ZXN1bHQgcmFuZ2VBdEluZGV4OjJdXSBjaGFyYWN0ZXJBdEluZGV4OjBdIC0gJ0EnICsgMTsKICAg
ICBpbnQgYnVpbGRWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21h
dGNoUmVzdWx0IHJhbmdlQXRJbmRleDozXV0gaW50VmFsdWVdOwogCi0gICAgcmV0dXJuIE9TQnVp
bGRJbmZvKG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uLCBidWlsZFZlcnNpb24pOworICAgIHJl
dHVybiB7IG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uLCBidWlsZFZlcnNpb24gfTsKIH0KIAog
Ym9vbCBXZWJHTEJsb2NrbGlzdDo6c2hvdWxkQmxvY2tXZWJHTCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJl
ZFVuaXQuaAppbmRleCA4Y2E1ZjMxOWUyYjgwNmNlYWE5MDI2MTdjNWMzYTI0OWExYzc0YTRhLi4w
YTE2ZTU0ZmRiYTQ4ZGI1YWE2M2VjNjQ3MjZmMjc1ZjBkYjEwOGMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9T
aGFyZWRVbml0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQppbmRleCA2MzEyZTA2
ODQyOTdiNDNjMzMxMWU0NzM5YjY4MWFiNDQ1YzMzNjcyLi5iZjVjNzRmNGNmZGNhMzc1ZTNiZTQy
MzJlNDc1YzIyZGFmZmNlY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9OU1VSTENvbm5lY3Rpb25TUEkuaD4KKyNpbXBvcnQgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCA1NjAyZDdj
MmQ0ZDViY2E5MzI0NTQ0Yjc1YWQyMmNiMjY1OGVkMDJjLi4wZGY3NDI2NTFmZjdiZGM4YmI2NDMz
NDZmOWJjY2JjMjA0YzE5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC0yMTQs
NyArMjE0LDcgQEAgYm9vbCBHcmlkSXRlcmF0b3I6OmlzRW1wdHlBcmVhRW5vdWdoKHVuc2lnbmVk
IHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRB
cmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKQor
c3RkOjpvcHRpb25hbDxHcmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSh1
bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFyeWluZ1RyYWNrU3BhbikKIHsKICAg
ICBBU1NFUlQoIW1fZ3JpZC5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9ncmlkWzBdLmlzRW1w
dHkoKSk7CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlk
SXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEKICAgICBB
U1NFUlQodmFyeWluZ1RyYWNrU3BhbiA+PSAxKTsKIAogICAgIGlmIChtX2dyaWQuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHVuc2lnbmVkIHJvd1NwYW4gPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyB2
YXJ5aW5nVHJhY2tTcGFuIDogZml4ZWRUcmFja1NwYW47CiAgICAgdW5zaWduZWQgY29sdW1uU3Bh
biA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IGZpeGVkVHJhY2tTcGFuIDogdmFyeWlu
Z1RyYWNrU3BhbjsKQEAgLTIzMSwxMyArMjMxLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJl
YT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRyYWNrU3Bh
CiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleCA9IChtX2RpcmVjdGlv
biA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkgOiBtX2dyaWRbMF0uc2l6ZSgpOwogICAg
IGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8IGVuZE9mVmFyeWluZ1RyYWNrSW5kZXg7ICsrdmFy
eWluZ1RyYWNrSW5kZXgpIHsKICAgICAgICAgaWYgKGlzRW1wdHlBcmVhRW5vdWdoKHJvd1NwYW4s
IGNvbHVtblNwYW4pKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IHJl
c3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVH
cmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFu
c2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29s
dW1uU3BhbikpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBHcmlkQXJlYShHcmlkU3Bhbjo6
dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCArIHJvd1Nw
YW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1bW5JbmRleCwg
bV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKICAgICAgICAgICAgIC8vIEFkdmFuY2UgdGhl
IGl0ZXJhdG9yIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hlcmUgd2Ugd291bGQgcmV0dXJu
IHRoZSBzYW1lIGdyaWQgYXJlYSBvdmVyIGFuZCBvdmVyLgogICAgICAgICAgICAgKyt2YXJ5aW5n
VHJhY2tJbmRleDsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKaW5kZXggNzJjYWRmNjhl
ZjRkMzI2NmNlMWY4Y2VlYmRjOWE0OWRmMmJjODExYi4uNTk0N2ZlNWU1Mzg2NTNkMGFhYzg0OTRm
ZWE4ZGE5NjdjMzA4NWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oCkBAIC0zNywxMCArMzcs
MTEgQEAgdHlwZWRlZiBWZWN0b3I8V2Vha1B0cjxSZW5kZXJCb3g+LCAxPiBHcmlkQ2VsbDsKIHR5
cGVkZWYgVmVjdG9yPFZlY3RvcjxHcmlkQ2VsbD4+IEdyaWRBc01hdHJpeDsKIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8c2l6ZV90PiBPcmRlcmVkVHJhY2tJbmRleFNldDsKIAotY2xhc3MgR3JpZEFyZWE7
CiBjbGFzcyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI7CiBjbGFzcyBSZW5kZXJHcmlkOwogCitzdHJ1
Y3QgR3JpZEFyZWE7CisKIGNsYXNzIEdyaWQgZmluYWwgewogcHVibGljOgogICAgIGV4cGxpY2l0
IEdyaWQoUmVuZGVyR3JpZCYpOwpAQCAtMTExLDcgKzExMiw3IEBAIHB1YmxpYzoKIAogICAgIFJl
bmRlckJveCogbmV4dEdyaWRJdGVtKCk7CiAgICAgYm9vbCBpc0VtcHR5QXJlYUVub3VnaCh1bnNp
Z25lZCByb3dTcGFuLCB1bnNpZ25lZCBjb2x1bW5TcGFuKSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFu
LCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdyaWRBcmVh
PiBuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFy
eWluZ1RyYWNrU3Bhbik7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgR3JpZEFzTWF0cml4JiBtX2dy
aWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggY2Vj
ZWQzNWU1Y2U4N2JmYmMxNDAxODM2Y2QxM2VhMWFlZGQ3YWZjMC4uMDBlYmQ1ZmZjMDViNzIyMmE0
ZjdhNDNiMGM0MjFiMmMzOTY1NmQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcApAQCAtNDMwLDIwICs0MzAsMTkgQEAgU3RyaW5nIFJlbmRlckNvdW50ZXI6
Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBiZWZvcmVBZnRlckNvbnRhaW5lciA9IGJlZm9yZUFmdGVyQ29udGFpbmVyLT5wYXJlbnQoKTsK
ICAgICAgICAgfQotICAgICAgICBtYWtlQ291bnRlck5vZGUoKmJlZm9yZUFmdGVyQ29udGFpbmVy
LCBtX2NvdW50ZXIuaWRlbnRpZmllcigpLCB0cnVlKS0+YWRkUmVuZGVyZXIoY29uc3RfY2FzdDxS
ZW5kZXJDb3VudGVyJj4oKnRoaXMpKTsKKyAgICAgICAgbWFrZUNvdW50ZXJOb2RlKCpiZWZvcmVB
ZnRlckNvbnRhaW5lciwgbV9jb3VudGVyLmlkZW50aWZpZXIsIHRydWUpLT5hZGRSZW5kZXJlcihj
b25zdF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykpOwogICAgICAgICBBU1NFUlQobV9jb3Vu
dGVyTm9kZSk7CiAgICAgfQogICAgIENvdW50ZXJOb2RlKiBjaGlsZCA9IG1fY291bnRlck5vZGU7
CiAgICAgaW50IHZhbHVlID0gY2hpbGQtPmFjdHNBc1Jlc2V0KCkgPyBjaGlsZC0+dmFsdWUoKSA6
IGNoaWxkLT5jb3VudEluUGFyZW50KCk7CiAKLSAgICBTdHJpbmcgdGV4dCA9IGxpc3RNYXJrZXJU
ZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwgdmFsdWUpOworICAgIFN0cmluZyB0ZXh0ID0gbGlz
dE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSwgdmFsdWUpOwogCi0gICAgaWYgKCFtX2Nv
dW50ZXIuc2VwYXJhdG9yKCkuaXNOdWxsKCkpIHsKKyAgICBpZiAoIW1fY291bnRlci5zZXBhcmF0
b3IuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFjaGlsZC0+YWN0c0FzUmVzZXQoKSkKICAgICAg
ICAgICAgIGNoaWxkID0gY2hpbGQtPnBhcmVudCgpOwogICAgICAgICB3aGlsZSAoQ291bnRlck5v
ZGUqIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgdGV4dCA9IGxpc3RN
YXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwgY2hpbGQtPmNvdW50SW5QYXJlbnQoKSkK
LSAgICAgICAgICAgICAgICArIG1fY291bnRlci5zZXBhcmF0b3IoKSArIHRleHQ7CisgICAgICAg
ICAgICB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSwgY2hpbGQtPmNv
dW50SW5QYXJlbnQoKSkgKyBtX2NvdW50ZXIuc2VwYXJhdG9yICsgdGV4dDsKICAgICAgICAgICAg
IGNoaWxkID0gcGFyZW50OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwCmluZGV4IDI2ZjhmY2JjMGFiMjc5NjBjNDkzOTIyM2U3NDhkOTNjM2I4
M2M5OWEuLjFiNjc0NWE5ZTc5MGI4MDViMTM1MDAwNDJlNDFlMDkzZWQ4MTY5MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTc2NSwxMyArNzY1LDEzIEBAIHZv
aWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKEdyaWQm
IGdyaWQpIGNvbnN0CiAgICAgZ3JpZC5lbnN1cmVHcmlkU2l6ZShtYXhpbXVtUm93SW5kZXggKyBl
eHBsaWNpdFJvd1N0YXJ0LCBtYXhpbXVtQ29sdW1uSW5kZXggKyBleHBsaWNpdENvbHVtblN0YXJ0
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0
eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiBncmlkLCBjb25z
dCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gc3BlY2lmaWVk
RGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBjb25zdAorR3Jp
ZEFyZWEgUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25z
T3V0c2lkZUdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIHNwZWNpZmllZERpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mIHNw
ZWNpZmllZFBvc2l0aW9ucykgY29uc3QKIHsKICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
Y3Jvc3NEaXJlY3Rpb24gPSBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IEZvclJv
d3MgOiBGb3JDb2x1bW5zOwogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24g
PSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJl
Y3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxh
Y2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFuIGNyb3NzRGly
ZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVu
ZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVjdGlvblNw
YW5TaXplKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0
aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBv
c2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3Np
dGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIEdyaWRBcmVhKHNw
ZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMg
OiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8g
c3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwogfQogCiB2b2lk
IFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3Jp
ZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25zdApAQCAtNzky
LDcgKzc5Miw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVt
c09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuCiAgICAgICAgIHVuc2lnbmVkIG1h
am9yQXhpc0luaXRpYWxQb3NpdGlvbiA9IG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFydExpbmUoKTsK
IAogICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IoZ3JpZCwgYXV0b1BsYWNlbWVudE1ham9y
QXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlvbnMuc3RhcnRMaW5lKCksIGlzR3JpZEF1
dG9GbG93RGVuc2UgPyAwIDogbWlub3JBeGlzQ3Vyc29ycy5nZXQobWFqb3JBeGlzSW5pdGlhbFBv
c2l0aW9uKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJl
YSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1ham9yQXhpc1Bvc2l0aW9ucy5pbnRlZ2Vy
U3BhbigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CisgICAgICAgIGF1dG8gZW1wdHlHcmlkQXJlYSA9
IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1ham9yQXhpc1Bvc2l0aW9ucy5pbnRlZ2VyU3Bh
bigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CiAgICAgICAgIGlmICghZW1wdHlHcmlkQXJlYSkKICAg
ICAgICAgICAgIGVtcHR5R3JpZEFyZWEgPSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQ
b3NpdGlvbnNPdXRzaWRlR3JpZChncmlkLCAqYXV0b0dyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWFq
b3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucyk7CiAKQEAgLTgyNyw3ICs4Mjcs
NyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQoR3JpZCYg
Z3JpZCwgUmVuZGVyQm94JiBncmlkSXRlbSwgQQogICAgIHVuc2lnbmVkIG1ham9yQXhpc0F1dG9Q
bGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9y
Q29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3Iuc2Vjb25kIDogYXV0b1BsYWNlbWVudEN1cnNv
ci5maXJzdDsKICAgICB1bnNpZ25lZCBtaW5vckF4aXNBdXRvUGxhY2VtZW50Q3Vyc29yID0gYXV0
b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpID09IEZvckNvbHVtbnMgPyBhdXRvUGxhY2Vt
ZW50Q3Vyc29yLmZpcnN0IDogYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQ7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGVtcHR5R3JpZEFyZWE7CisgICAgc3RkOjpvcHRpb25hbDxH
cmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKICAgICBHcmlkU3BhbiBtaW5vckF4aXNQb3NpdGlvbnMg
PSBncmlkLmdyaWRJdGVtU3BhbihncmlkSXRlbSwgYXV0b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVj
dGlvbigpKTsKICAgICBpZiAobWlub3JBeGlzUG9zaXRpb25zLmlzVHJhbnNsYXRlZERlZmluaXRl
KCkpIHsKICAgICAgICAgLy8gTW92ZSB0byB0aGUgbmV4dCB0cmFjayBpbiBtYWpvciBheGlzIGlm
IGluaXRpYWwgcG9zaXRpb24gaW4gbWlub3IgYXhpcyBpcyBiZWZvcmUgYXV0by1wbGFjZW1lbnQg
Y3Vyc29yLgpAQCAtODU3LDcgKzg1Nyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFq
b3JBeGlzSXRlbU9uR3JpZChHcmlkJiBncmlkLCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBBCiAKICAg
ICAgICAgICAgICAgICAvLyBEaXNjYXJkIGVtcHR5IGdyaWQgYXJlYSBhcyBpdCBkb2VzIG5vdCBm
aXQgaW4gdGhlIG1pbm9yIGF4aXMgZGlyZWN0aW9uLgogICAgICAgICAgICAgICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGVtcHR5IGdyaWQgYXJlYSB5ZXQgYXMgd2UgbWlnaHQg
ZmluZCBhIHZhbGlkIG9uZSBpbiB0aGUgbmV4dCBpdGVyYXRpb24uCi0gICAgICAgICAgICAgICAg
ZW1wdHlHcmlkQXJlYSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgZW1wdHlHcmlkQXJlYSA9
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gQXMgd2UncmUg
bW92aW5nIHRvIHRoZSBuZXh0IHRyYWNrIGluIHRoZSBtYWpvciBheGlzIHdlIHNob3VsZCByZXNl
dCB0aGUgYXV0by1wbGFjZW1lbnQgY3Vyc29yIGluIHRoZSBtaW5vciBheGlzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggMjlhZTU5NDgwMDNlZTZkMmRkNDQzYjU2OTlk
Y2IyZDdjMTdiOTYyNi4uNjVjOWU2ZTI1MjY4NDk3MDMzODRkZGRjYmExNzgzYzRiYjc3YjEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0zMiw5ICszMiwxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyaWRBcmVhOwogY2xhc3MgR3JpZFNwYW47
CiAKK3N0cnVjdCBHcmlkQXJlYTsKKwogc3RydWN0IENvbnRlbnRBbGlnbm1lbnREYXRhIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZW50QWxpZ25tZW50RGF0YSk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTExLDcgKzExMiw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIGNvbnN0OwogICAgIHZv
aWQgcG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKEdyaWQmKSBjb25zdDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmll
ZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmLCBjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJikgY29uc3Q7CisgICAgR3JpZEFyZWEgY3Jl
YXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYsIGNv
bnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4m
KSBjb25zdDsKICAgICB2b2lkIHBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3Jp
ZCYsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNvbnN0OwogICAgIHZvaWQgcGxhY2VBdXRv
TWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNv
bnN0OwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gQXV0b1BsYWNl
bWVudEN1cnNvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggN2U4ZGQ2ODgyNGNmYjQ1NjIwODBlNTk0ZWNkODQwMmE2Yzlm
YzAzMi4uZjllZGUxZDkwYjM5MzZmMTMwOWQ0N2IyNDAzNTE1NDJhMjc3YzQ5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAg
LTk3LDcgKzk3LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBXZWJDb3JlSGFzM0RSZW5kZXJpbmcg
PSB0cnVlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVVTRShDT01QT1NJVElOR19GT1Jf
U01BTExfQ0FOVkFTRVMpCi1zdGF0aWMgY29uc3QgaW50IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1
aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAwOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBj
YW52YXNBcmVhVGhyZXNob2xkUmVxdWlyaW5nQ29tcG9zaXRpbmcgPSA1MCAqIDEwMDsKICNlbmRp
ZgogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZTk2MzdlZWJlMjA2MDlhZTBjNWQyYjFkNmY2YjNl
NjFiYzlmMTI5OC4uODQ2YWQxNTI1YWYyMDY2MDdiNDJiZjRlZDExMGNmYWE5MTRlOTNlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00NjcsOCAr
NDY3LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdChj
b25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQogCiAgICAgTGVuZ3RoUG9pbnQgb2JqZWN0
UG9zaXRpb24gPSBzdHlsZSgpLm9iamVjdFBvc2l0aW9uKCk7CiAKLSAgICBMYXlvdXRVbml0IHhP
ZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9zaXRpb24ueCgpLCBjb250ZW50
UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRoKCkpOwotICAgIExheW91dFVuaXQgeU9mZnNl
dCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi55KCksIGNvbnRlbnRSZWN0
LmhlaWdodCgpIC0gZmluYWxSZWN0LmhlaWdodCgpKTsKKyAgICBMYXlvdXRVbml0IHhPZmZzZXQg
PSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9zaXRpb24ueCwgY29udGVudFJlY3Qud2lk
dGgoKSAtIGZpbmFsUmVjdC53aWR0aCgpKTsKKyAgICBMYXlvdXRVbml0IHlPZmZzZXQgPSBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9zaXRpb24ueSwgY29udGVudFJlY3QuaGVpZ2h0KCkg
LSBmaW5hbFJlY3QuaGVpZ2h0KCkpOwogCiAgICAgZmluYWxSZWN0Lm1vdmUoeE9mZnNldCwgeU9m
ZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFp
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmlu
ZGV4IGNhNWI3NDBkOTA0NGJkNjVlMzY2YjU3ZDc2YzM0MjhjM2Y5ZWUzZjYuLjRjNDc0Yzk1ZTNl
ZWMyMjJmMDUzOTkzNTIyNWQ0YTIxOWE2MDI4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRCb3hQYWludGVyLmNwcApAQCAtNjQwLDcgKzY0MCw3IEBAIGNvbnN0IFNoYWRvd0Rh
dGEqIFRleHRCb3hQYWludGVyOjpkZWJ1Z1RleHRTaGFkb3coKSBjb25zdAogICAgIGlmICghdGV4
dEJveCgpLmxlZ2FjeUlubGluZUJveCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFkb3coTGVuZ3Ro
UG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSksIExlbmd0aCgxMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoMjAsIExlbmd0aFR5cGU6
OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgU1JHQkE8dWludDhfdD4geyAxNTAs
IDAsIDAsIDE5MCB9KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVi
dWdUZXh0U2hhZG93KExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0
aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgy
MCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1
aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOwogICAgIHJldHVybiAmZGVidWdUZXh0U2hhZG93
LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCmlu
ZGV4IDQ1OWJhZjExMmZjMDMyNzBhZmU0NmZmZTg0ZWQwZDViYTZiMjZlMzkuLjI1Y2Y0OGNmNDky
ODEyZWEzZWIwZmZmNDYwMDJjZGQwZDc3NmViMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRTdHlsZS5oCkBAIC0zMywxMyArMzMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFJlbmRlclRl
eHQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBTaGFkb3dE
YXRhOworCiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiBzdHJ1Y3QgVGV4dFBhaW50U3R5bGUgewotICAg
IFRleHRQYWludFN0eWxlKCkgeyB9CisgICAgVGV4dFBhaW50U3R5bGUoKSA9IGRlZmF1bHQ7CiAg
ICAgVGV4dFBhaW50U3R5bGUoY29uc3QgQ29sb3ImKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUZXh0UGFpbnRTdHlsZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaAppbmRleCA1ODZjYzY2OTgwMjY1ZDk4NjNhY2FhYTdl
ZTZiOGE5ODY0ODMyNmM2Li43YmY1YmM5MDZlODhjNTM3NTgxMGNjM2UxZmMyODg5OTA5ZDUwYWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQu
aApAQCAtMjksMzIgKzI5LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ291
bnRlckNvbnRlbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IENvdW50ZXJDb250ZW50KGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXIsIExpc3RTdHlsZVR5
cGUgc3R5bGUsIGNvbnN0IEF0b21TdHJpbmcmIHNlcGFyYXRvcikKLSAgICAgICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKLSAgICAgICAgLCBtX2xpc3RTdHlsZShzdHlsZSkKLSAgICAgICAg
LCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgewotICAgICAgICBBU1NFUlQoc3R5bGUgIT0g
TGlzdFN0eWxlVHlwZTo6U3RyaW5nKTsKLSAgICB9CitzdHJ1Y3QgQ291bnRlckNvbnRlbnQgewor
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGNvbnN0IEF0b21TdHJp
bmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICBMaXN0
U3R5bGVUeXBlIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlOyB9Ci0gICAg
Y29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zZXBhcmF0b3I7
IH0KLQotcHJpdmF0ZToKLSAgICBBdG9tU3RyaW5nIG1faWRlbnRpZmllcjsKLSAgICBMaXN0U3R5
bGVUeXBlIG1fbGlzdFN0eWxlOwotICAgIEF0b21TdHJpbmcgbV9zZXBhcmF0b3I7CisgICAgQXRv
bVN0cmluZyBpZGVudGlmaWVyOworICAgIExpc3RTdHlsZVR5cGUgbGlzdFN0eWxlOworICAgIEF0
b21TdHJpbmcgc2VwYXJhdG9yOwogfTsKIAotc3RhdGljIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ291bnRlckNvbnRlbnQmIGEsIGNvbnN0IENvdW50ZXJDb250ZW50JiBiKQoraW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyQ29udGVudCYgYSwgY29uc3QgQ291bnRlckNv
bnRlbnQmIGIpCiB7Ci0gICAgcmV0dXJuIGEuaWRlbnRpZmllcigpID09IGIuaWRlbnRpZmllcigp
Ci0gICAgICAgICYmIGEubGlzdFN0eWxlKCkgPT0gYi5saXN0U3R5bGUoKQotICAgICAgICAmJiBh
LnNlcGFyYXRvcigpID09IGIuc2VwYXJhdG9yKCk7CisgICAgcmV0dXJuIGEuaWRlbnRpZmllciA9
PSBiLmlkZW50aWZpZXIKKyAgICAgICAgJiYgYS5saXN0U3R5bGUgPT0gYi5saXN0U3R5bGUKKyAg
ICAgICAgJiYgYS5zZXBhcmF0b3IgPT0gYi5zZXBhcmF0b3I7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxs
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAppbmRl
eCA5NWQzODYyN2UxNDEzZjUyNjFjMDljOWZkOWZiMWFhMjIwZDU0OGI0Li43MjQwYjk2YmU4MGU5
NzMzNmJjZGNiY2Q0ZWU3ZTI4ZGM2Nzg4OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0ZpbGxMYXllci5oCkBAIC0zNSwxOCArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogCiBzdHJ1Y3QgRmlsbFNpemUgewotICAgIEZpbGxTaXpl
KCkKLSAgICAgICAgOiB0eXBlKEZpbGxTaXplVHlwZTo6U2l6ZSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgRmlsbFNpemUoRmlsbFNpemVUeXBlIHR5cGUsIGNvbnN0IExlbmd0aFNpemUmIHNpemUpCi0g
ICAgICAgIDogdHlwZSh0eXBlKQotICAgICAgICAsIHNpemUoc2l6ZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgRmlsbFNpemVUeXBlIHR5cGU7CisgICAgRmlsbFNpemVUeXBlIHR5cGUgeyBGaWxsU2l6
ZVR5cGU6OlNpemUgfTsKICAgICBMZW5ndGhTaXplIHNpemU7CiB9OwogCkBAIC04NCw3ICs3Myw3
IEBAIHB1YmxpYzoKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8QmxlbmRNb2RlPihtX2JsZW5kTW9kZSk7IH0KICAgICBjb25zdCBMZW5ndGhTaXpl
JiBzaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplTGVuZ3RoOyB9CiAgICAgRmlsbFNp
emVUeXBlIHNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RmlsbFNpemVUeXBl
PihtX3NpemVUeXBlKTsgfQotICAgIEZpbGxTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBGaWxs
U2l6ZShzdGF0aWNfY2FzdDxGaWxsU2l6ZVR5cGU+KG1fc2l6ZVR5cGUpLCBtX3NpemVMZW5ndGgp
OyB9CisgICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgc2l6ZVR5cGUoKSwgbV9z
aXplTGVuZ3RoIH07IH0KICAgICBNYXNrTW9kZSBtYXNrTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PE1hc2tNb2RlPihtX21hc2tNb2RlKTsgfQogCiAgICAgY29uc3QgRmlsbExheWVy
KiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCmluZGV4IGI3ZWJkMWQ5NjFkZTg4MjZmYjgzMDMzMDli
OGU2MzUyZjIwZjllYWIuLmQ0NzZmOTMxOTg3Y2ZjYTcxNDE0Y2JmZGVjZDgxYWJiMWVkZmNlMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCkBAIC00Miw3ICs0
Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIERlc3BpdGUgbGluZSBudW1iZXJzIGluIHRo
ZSBzcGVjIHN0YXJ0IGluICIxIiwgdGhlIGluZGV4ZXMgaGVyZSBzdGFydCBpbiAiMCIuCiBjbGFz
cyBHcmlkU3BhbiB7CiBwdWJsaWM6Ci0KICAgICBzdGF0aWMgR3JpZFNwYW4gdW50cmFuc2xhdGVk
RGVmaW5pdGVHcmlkU3BhbihpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBHcmlkU3BhbihzdGFydExpbmUsIGVuZExpbmUsIFVudHJhbnNsYXRlZERlZmlu
aXRlKTsKQEAgLTE0Miw4ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotCi0g
ICAgZW51bSBHcmlkU3BhblR5cGUge1VudHJhbnNsYXRlZERlZmluaXRlLCBUcmFuc2xhdGVkRGVm
aW5pdGUsIEluZGVmaW5pdGV9OworICAgIGVudW0gR3JpZFNwYW5UeXBlIDogdWludDhfdCB7IFVu
dHJhbnNsYXRlZERlZmluaXRlLCBUcmFuc2xhdGVkRGVmaW5pdGUsIEluZGVmaW5pdGUgfTsKIAog
ICAgIEdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lLCBHcmlkU3BhblR5cGUgdHlw
ZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTE2MywyNCArMTYxLDI0IEBAIHByaXZhdGU6
CiAgICAgaW50IG1fc3RhcnRMaW5lOwogICAgIGludCBtX2VuZExpbmU7CiAgICAgR3JpZFNwYW5U
eXBlIG1fdHlwZTsKLQotCiB9OwogCiAvLyBUaGlzIHJlcHJlc2VudHMgYSBncmlkIGFyZWEgdGhh
dCBzcGFucyBpbiBib3RoIHJvd3MnIGFuZCBjb2x1bW5zJyBkaXJlY3Rpb24uCi1jbGFzcyBHcmlk
QXJlYSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgLy8gSGFz
aE1hcCByZXF1aXJlcyBhIGRlZmF1bHQgY29uc3R1Y3Rvci4KK3N0cnVjdCBHcmlkQXJlYSB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgR3JpZFNwYW4gcm93czsK
KyAgICBHcmlkU3BhbiBjb2x1bW5zOworCiAgICAgR3JpZEFyZWEoKQotICAgICAgICA6IGNvbHVt
bnMoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQotICAgICAgICAsIHJvd3MoR3JpZFNw
YW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQorICAgICAgICA6IHJvd3MoR3JpZFNwYW46OmluZGVm
aW5pdGVHcmlkU3BhbigpKQorICAgICAgICAsIGNvbHVtbnMoR3JpZFNwYW46OmluZGVmaW5pdGVH
cmlkU3BhbigpKQogICAgIHsKICAgICB9CiAKLSAgICBHcmlkQXJlYShjb25zdCBHcmlkU3BhbiYg
ciwgY29uc3QgR3JpZFNwYW4mIGMpCi0gICAgICAgIDogY29sdW1ucyhjKQotICAgICAgICAsIHJv
d3MocikKKyAgICBHcmlkQXJlYShHcmlkU3BhbiByb3dzLCBHcmlkU3BhbiBjb2x1bW5zKQorICAg
ICAgICA6IHJvd3Mocm93cykKKyAgICAgICAgLCBjb2x1bW5zKGNvbHVtbnMpCiAgICAgewogICAg
IH0KIApAQCAtMTkzLDExICsxOTEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvKTsKICAgICB9Ci0KLSAgICBHcmlkU3BhbiBjb2x1bW5zOwotICAgIEdyaWRT
cGFuIHJvd3M7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBHcmlkQXJlYT4gTmFtZWRH
cmlkQXJlYU1hcDsKK3VzaW5nIE5hbWVkR3JpZEFyZWFNYXAgPSBIYXNoTWFwPFN0cmluZywgR3Jp
ZEFyZWE+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRMZW5ndGguaAppbmRleCA4NmFjZDMzMGRmNjlmODNiMGQyZmQzMjI3ZWJi
ODBlOWVmZTdlODdhLi41Zjg4ZGUxZmM5YzIxMjJjZTIyYWQ3ZTMwYTMwYjA4NDkzODVlOTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmgKQEAgLTQyLDcg
KzQyLDYgQEAgY2xhc3MgR3JpZExlbmd0aCB7CiBwdWJsaWM6CiAgICAgR3JpZExlbmd0aChjb25z
dCBMZW5ndGgmIGxlbmd0aCkKICAgICAgICAgOiBtX2xlbmd0aChsZW5ndGgpCi0gICAgICAgICwg
bV9mbGV4KDApCiAgICAgICAgICwgbV90eXBlKExlbmd0aFR5cGUpCiAgICAgewogICAgICAgICBB
U1NFUlQoIWxlbmd0aC5pc1VuZGVmaW5lZCgpKTsKQEAgLTcyLDE0ICs3MSwxMCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTGVuZ3RoVHlwZSAm
JiBtX2xlbmd0aC5pc0F1dG8oKTsgfQogCiBwcml2YXRlOgotICAgIC8vIElkZWFsbHkgd2Ugd291
bGQgcHV0IHRoZSAyIGZvbGxvd2luZyBmaWVsZHMgaW4gYSB1bmlvbiwgYnV0IExlbmd0aCBoYXMg
YSBjb25zdHJ1Y3RvciwKLSAgICAvLyBhIGRlc3RydWN0b3IgYW5kIGEgY29weSBhc3NpZ25tZW50
IHdoaWNoIGlzbid0IGFsbG93ZWQuCisgICAgLy8gQ291bGQgdXNlIGEgVmFyaWFudCBoZXJlIHNp
bmNlIHdlIG9ubHkgdXNlIG1fbGVuZ3RoIG9yIG1fZmxleCwgYW5kIG1fdHlwZSBkZXRlcm1pbmVz
IHdoaWNoLgogICAgIExlbmd0aCBtX2xlbmd0aDsKLSAgICBkb3VibGUgbV9mbGV4OwotICAgIGVu
dW0gR3JpZExlbmd0aFR5cGUgewotICAgICAgICBMZW5ndGhUeXBlLAotICAgICAgICBGbGV4VHlw
ZQotICAgIH07CisgICAgZG91YmxlIG1fZmxleCB7IDAgfTsKKyAgICBlbnVtIEdyaWRMZW5ndGhU
eXBlIDogYm9vbCB7IExlbmd0aFR5cGUsIEZsZXhUeXBlIH07CiAgICAgR3JpZExlbmd0aFR5cGUg
bV90eXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKaW5kZXggYWQ1YWJhZGFjMDRmN2QyZWJiY2M2NzA0ZTAxMjkzYjFkZGZhZTNhNC4u
MmU4ZDUyNmE5ZmExOTVkNDU3NDE2MmVlNjE3OWYzZWNlNjNjN2VjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0xNDk3LDcgKzE0OTcs
NyBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0oVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29ucwogICAgIC8vIFNoaWZ0IGVsZW1lbnQgdG8gdGhl
IGFuY2hvciBzcGVjaWZpZWQgYnkgb2Zmc2V0LWFuY2hvci4KICAgICBhdXRvIHRyYW5zZm9ybU9y
aWdpbiA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh0cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3Vu
ZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICBhdXRvIGFuY2hv
ciA9IHRyYW5zZm9ybU9yaWdpbjsKLSAgICBpZiAoIW9mZnNldEFuY2hvcigpLngoKS5pc0F1dG8o
KSkKKyAgICBpZiAoIW9mZnNldEFuY2hvcigpLnguaXNBdXRvKCkpCiAgICAgICAgIGFuY2hvciA9
IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChvZmZzZXRBbmNob3IoKSwgYm91bmRpbmdCb3guc2l6
ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgt
YW5jaG9yLngoKSwgLWFuY2hvci55KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDc0ZGU5MjdmZmM3MjYyN2IyNTM0ZTVhOWY5OGJlN2Jm
ZTUwMGE4MzguLjI4OTU2M2VkMmZmZWNlOWRiM2NlNTllN2MyYzU5OTgwOThiNjUzYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMDksNyAr
MTA5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCb3JkZXJEYXRhOwogY2xhc3Mg
Q29udGVudERhdGE7Ci1jbGFzcyBDb3VudGVyQ29udGVudDsKIGNsYXNzIEN1cnNvckxpc3Q7CiBj
bGFzcyBGb250Q2FzY2FkZTsKIGNsYXNzIEZvbnRNZXRyaWNzOwpAQCAtMTIxLDYgKzEyMCw3IEBA
IGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YTsKIGNsYXNzIFN0eWxlU2Nyb2xsU25hcEFyZWE7CiBj
bGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAorc3RydWN0IENvdW50ZXJDb250ZW50Owogc3Ry
dWN0IFNjcm9sbFNuYXBBbGlnbjsKIHN0cnVjdCBTY3JvbGxTbmFwVHlwZTsKIApAQCAtNjk5LDcg
KzY5OSw3IEBAIHB1YmxpYzoKICAgICBUZXh0Q29tYmluZSB0ZXh0Q29tYmluZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0
Q29tYmluZSk7IH0KICAgICBib29sIGhhc1RleHRDb21iaW5lKCkgY29uc3QgeyByZXR1cm4gdGV4
dENvbWJpbmUoKSAhPSBUZXh0Q29tYmluZTo6Tm9uZTsgfQogCi0gICAgY29uc3QgVGFiU2l6ZSYg
dGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemU7IH0K
KyAgICBUYWJTaXplIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRh
LT50YWJTaXplOyB9CiAKICAgICAvLyBFbmQgQ1NTMyBHZXR0ZXJzCiAKQEAgLTEyNzQsNyArMTI3
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tkcm9wRmlsdGVyKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBi
YWNrZHJvcEZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNl
dFRhYlNpemUoY29uc3QgVGFiU2l6ZSYgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIHRhYlNpemUsIHNpemUpOyB9CisgICAgdm9pZCBzZXRUYWJTaXplKFRhYlNpemUgc2l6ZSkg
eyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRhYlNpemUsIHNpemUpOyB9CiAKICAgICB2
b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZvcmUsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihicmVha0JlaGF2aW9yKSk7IH0KICAgICB2b2lkIHNldEJyZWFrQWZ0ZXIoQnJlYWtCZXR3ZWVu
IGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0Fm
dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnJlYWtCZWhhdmlvcikpOyB9CkBAIC0xNTgyLDcg
KzE1ODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRDb21iaW5lIGluaXRpYWxUZXh0Q29t
YmluZSgpIHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25lOyB9CiAgICAgc3RhdGljIFRleHRPcmll
bnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0aW9u
OjpNaXhlZDsgfQogICAgIHN0YXRpYyBPYmplY3RGaXQgaW5pdGlhbE9iamVjdEZpdCgpIHsgcmV0
dXJuIE9iamVjdEZpdDo6RmlsbDsgfQotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Jq
ZWN0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoNTAuMGYsIExlbmd0aFR5
cGU6OlBlcmNlbnQpLCBMZW5ndGgoNTAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsgfQorICAg
IHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiB7IExl
bmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlw
ZTo6UGVyY2VudCkgfTsgfQogICAgIHN0YXRpYyBFbXB0eUNlbGwgaW5pdGlhbEVtcHR5Q2VsbHMo
KSB7IHJldHVybiBFbXB0eUNlbGw6OlNob3c7IH0KICAgICBzdGF0aWMgTGlzdFN0eWxlUG9zaXRp
b24gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCkgeyByZXR1cm4gTGlzdFN0eWxlUG9zaXRpb246
Ok91dHNpZGU7IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW5pdGlhbExpc3RTdHls
ZVN0cmluZ1ZhbHVlKCkgeyByZXR1cm4gbnVsbEF0b20oKTsgfQpAQCAtMTg5NSwxMSArMTg5NSwx
MSBAQCBwdWJsaWM6CiAKICAgICBMZW5ndGhQb2ludCBvZmZzZXRQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9mZnNldFBvc2l0aW9uOyB9CiAgICAgdm9p
ZCBzZXRPZmZzZXRQb3NpdGlvbihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zmc2V0UG9zaXRpb24sIFdURk1vdmUocG9zaXRpb24pKTsg
fQotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0UG9zaXRpb24oKSB7IHJldHVy
biBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBl
OjpBdXRvKSk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldFBvc2l0aW9u
KCkgeyByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0g
fTsgfQogCiAgICAgTGVuZ3RoUG9pbnQgb2Zmc2V0QW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0QW5jaG9yOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRB
bmNob3IoTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIG9mZnNldEFuY2hvciwgV1RGTW92ZShwb3NpdGlvbikpOyB9Ci0gICAgc3RhdGljIExl
bmd0aFBvaW50IGluaXRpYWxPZmZzZXRBbmNob3IoKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5n
dGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7IH0KKyAgICBz
dGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJuIHsgeyBMZW5n
dGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9IH07IH0KIAogICAgIE9mZnNldFJv
dGF0aW9uIG9mZnNldFJvdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm9mZnNldFJvdGF0ZTsgfQogICAgIHZvaWQgc2V0T2Zmc2V0Um90YXRlKE9mZnNldFJvdGF0
aW9uJiYgcm90YXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvZmZzZXRS
b3RhdGUsIFdURk1vdmUocm90YXRpb24pKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IDg3Y2EyYjI1MmY5NmY4NWU0YjQ0MGI2ZmQyYzBm
OGU5M2FkZTdhMGMuLmRlM2RjNmM0Y2RlMTI5N2VlYTBjZmNkNmQ2MWQ2NDQxMjgxMGUyYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhZG93RGF0YTo6U2hhZG93RGF0
YShjb25zdCBTaGFkb3dEYXRhJiBvKQotICAgIDogbV9sb2NhdGlvbihvLm1fbG9jYXRpb24ueCgp
LCBvLm1fbG9jYXRpb24ueSgpKQorICAgIDogbV9sb2NhdGlvbihvLm1fbG9jYXRpb24pCiAgICAg
LCBtX3NwcmVhZChvLm1fc3ByZWFkKQogICAgICwgbV9yYWRpdXMoby5tX3JhZGl1cykKICAgICAs
IG1fY29sb3Ioby5tX2NvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NoYWRvd0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFk
b3dEYXRhLmgKaW5kZXggMjJmZWY3NjJiY2EzMTBiNjNhZWZlODU4NmY0MjJhYjlmODNjMDVmMi4u
ZDlhNDFhMTViYTBkMWVmYTljOGZlNTQwN2IzZDUwZTlmMmVlMGFhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICBTaGFkb3dEYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgU2hhZG93RGF0YShjb25zdCBM
ZW5ndGhQb2ludCYgbG9jYXRpb24sIExlbmd0aCByYWRpdXMsIExlbmd0aCBzcHJlYWQsIFNoYWRv
d1N0eWxlIHN0eWxlLCBib29sIGlzV2Via2l0Qm94U2hhZG93LCBjb25zdCBDb2xvciYgY29sb3Ip
Ci0gICAgICAgIDogbV9sb2NhdGlvbihsb2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSkKKyAgICAg
ICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uKQogICAgICAgICAsIG1fc3ByZWFkKHNwcmVhZCkKICAg
ICAgICAgLCBtX3JhZGl1cyhyYWRpdXMpCiAgICAgICAgICwgbV9jb2xvcihjb2xvcikKQEAgLTYy
LDggKzYyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9
CiAgICAgCi0gICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi54
KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uLnko
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ueDsg
fQorICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ueTsgfQog
ICAgIGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRp
b247IH0KICAgICBjb25zdCBMZW5ndGgmIHJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVz
OyB9CiAgICAgTGF5b3V0VW5pdCBwYWludGluZ0V4dGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKaW5k
ZXggYTJjN2IwZGIzZDZlNWZlZDY1MzZhNTYzOWI0NTc5MmU0NzgwMTE3OS4uNTM3NDcyMmFiMDk0
YzU3ODM3OGNkZDFlNWQyOWFmMGVkOTlhNWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaApAQCAtMjUsMTEgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJMZW5ndGhCb3guaCIKLSNpbmNsdWRl
ICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCmluZGV4IDkxNTA0MDFhNjQ1ZTQyODRlOTE2OTFiYTBiYTVjOTc4Yzk4MmVmYmQuLjEy
N2VmMzI3MjQ0NjZjZDQ4YzM3NDAyZGU3NjBhNWI5NzBhNmZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0yNjgsOCArMjY4LDggQEAgaW5s
aW5lIFRhYlNpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhYlNpemUoY29uc3QgQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlz
TnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBUYWJTaXplKHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFs
dWUoKSwgU3BhY2VWYWx1ZVR5cGUpOwotICAgIHJldHVybiBUYWJTaXplKHByaW1pdGl2ZVZhbHVl
LmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKCkpLCBMZW5ndGhWYWx1ZVR5cGUpOworICAgICAgICByZXR1cm4geyBwcmltaXRpdmVWYWx1
ZS5mbG9hdFZhbHVlKCksIFRhYlNpemU6OlNwYWNlcyB9OworICAgIHJldHVybiB7IHByaW1pdGl2
ZVZhbHVlLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKCkpLCBUYWJTaXplOjpMZW5ndGggfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KQEAgLTQxNyw3ICs0MTcsNyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLAogICAgIExlbmd0
aCBsZW5ndGhYID0gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFs
dWVSaWdodD4oYnVpbGRlclN0YXRlLCAqcGFpci0+Zmlyc3QoKSk7CiAgICAgTGVuZ3RoIGxlbmd0
aFkgPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9t
PihidWlsZGVyU3RhdGUsICpwYWlyLT5zZWNvbmQoKSk7CiAKLSAgICByZXR1cm4gTGVuZ3RoUG9p
bnQobGVuZ3RoWCwgbGVuZ3RoWSk7CisgICAgcmV0dXJuIHsgbGVuZ3RoWCwgbGVuZ3RoWSB9Owog
fQogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9u
T3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CkBAIC00MjcsNyArNDI3LDcgQEAgaW5saW5lIExlbmd0aFBvaW50IEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRQb3NpdGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmIGJ1aWxkZXIKICAgICBpZiAocHJp
bWl0aXZlVmFsdWUuaXNQYWlyKCkpCiAgICAgICAgIHJldHVybiBjb252ZXJ0UG9zaXRpb24oYnVp
bGRlclN0YXRlLCB2YWx1ZSk7CiAKLSAgICByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0
aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOworICAgIHJldHVybiB7IHsg
TGVuZ3RoVHlwZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6OkF1dG8gfSB9OwogfQogCiBpbmxpbmUg
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRl
eHREZWNvcmF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggMTNjYWQ5YjdmZDc3MmE2
Y2QyMzk4MzQwZTI4Mjc3MWJkNDliNDQ2MS4uZTgzZWY5YzRhN2YyZDRjZTEwMmFkZGI3OWM5YTdk
MDI5YjMwODM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgK
QEAgLTk1Niw3ICs5NTYsNyBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRP
ckJveFNoYWRvd1ZhbHVlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLAogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb2xvciA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmNvbG9yKCk7CiAKLSAg
ICAgICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihMZW5ndGhQb2lu
dCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5z
cGFyZW50QmxhY2spOworICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRv
d0RhdGE+KExlbmd0aFBvaW50IHsgeCwgeSB9LCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8g
Y29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgICAgIGlmIChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBh
ZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CiAgICAgICAgIGVs
c2UKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVDb250ZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1CiAgICAgICAg
ICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJ
ZGVudCgpOwogICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkK
ICAgICAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlw
ZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAgICAgICAgICAgYXV0byBjb3Vu
dGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVy
KCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOworICAgICAgICAg
ICAgYXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oQ291bnRlckNvbnRl
bnQgeyBjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZh
bHVlLT5zZXBhcmF0b3IoKSB9KTsKICAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNl
dENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9
IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5oCmluZGV4IDMzNWYzZmFkZmFhZWVlM2ViNjI1MWVmYjk4OTk1MzkxNGQ2MDE2
MzUuLmQ4Zjc3ZjZhZjFiNTdhMjA4YTRlZTJkZTMzNTlhNWJhYTg5ZDJjMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NmJhMjgwZTVhNDZkZmUy
N2RlZTNjODgwMGFkM2IzMDdmYmUzM2FmLi4yOTcxNDg4YTJjZGJjYTA0ODUzNWZlNTJkYjE1OTlh
Y2UzMmEwMDEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFuZCBzaW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZh
cmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcDogVXBk
YXRlZCB0ZXN0cyBmb3IgY2hhbmdlIHRvIE9wdGlvblNldCBmb3IKKyAgICAgICAgTWVkaWFUaW1l
IGZsYWdzLCBhbmQgZm9yIG5hbWUgY2hhbmdlIGZyb20gUm91bmRpbmdGbGFncyB0byBSb3VuZGlu
Z01vZGUuCisKIDIwMjItMDEtMjMgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW01vZGVsXSBBZGQgbG9hZCBhbmQgZXJyb3IgZXZlbnRzIHRvIGRpc3Rpbmd1
aXNoIHJlc291cmNlIGxvYWQgZnJvbSBtb2RlbCByZWFkaW5lc3MKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCmluZGV4IGIwYjU0YTgwM2ZhYzg1ZDE1ODRlNzIz
Yzg2ZTFkOWNiYTQ0ZGNlN2EuLmRjOGUyODk4NGFlM2E4MDJlNTczODY3NjYxNTI5NTk0YWM1OWQ0
NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcApAQCAt
MTcxLDcgKzE3MSw3IEBAIFRFU1QoV1RGLCBNZWRpYVRpbWUpCiAKICAgICAvLyBDb25zdGFudHMK
ICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBNZWRpYVRpbWUoMCwgMSkpOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIE1lZGlhVGltZSgtMSwgMSwg
MCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIE1lZGlhVGltZSgt
MSwgMSwgeyB9KSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRp
bWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6UG9zaXRpdmVJbmZpbml0ZSkpOwogICAg
IEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZSgw
LCAxLCBNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGUpKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpJbmRlZmlu
aXRlKSk7CkBAIC0yNTQsNjkgKzI1NCw2OSBAQCBURVNUKFdURiwgTWVkaWFUaW1lKQogICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMiwgMikudG9UaW1lU2NhbGUoMSkudGltZVZhbHVlKCksIDEpOwog
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgNikudG9UaW1lU2NhbGUoMykudGltZVZhbHVlKCks
IDEpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSkuaGFzQmVl
blJvdW5kZWQoKSwgdHJ1ZSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVW
YWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVl
KCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoNDksIDEwMCkudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
MCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFn
czo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFs
ZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxm
QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
LTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZB
d2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgx
LCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8p
LnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgp
LCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFn
czo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
LTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVy
bykudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZh
bHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDAp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1l
VmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAy
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpB
d2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
NDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJv
bVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRp
bWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFs
dWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCks
IC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCks
IDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCks
IDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwg
Mik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50
aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50
aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5p
dHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5
LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVn
YXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
LTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVn
YXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2Fy
ZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpU
b3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6
VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpI
YWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21a
ZXJvKS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZh
bHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVl
KCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCks
IDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dh
cmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZh
bHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dh
cmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEw
MCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRp
bWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0x
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6
OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
LTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVpl
cm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFs
dWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFs
dWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
LTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAx
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDAp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwg
Mik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAw
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCks
IDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZh
bHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0
eSkudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0
eSkudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5m
aW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2
ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxKS50b1RpbWVTY2FsZSgyKSwgTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwgMSkudG9UaW1lU2NhbGUoMiksIE1lZGlhVGltZTo6
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSk7CiAgICAgaW50NjRfdCBtYXhJbnQzMiA9IG51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG1heEludDMy
ICogMiwgMSkudG9UaW1lU2NhbGUoMikudGltZVZhbHVlKCksIG1heEludDMyICogNCk7CiAgICAg
aW50NjRfdCBiaWdJbnQgPSAxTEwgPDwgNjI7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJ
bnQsIDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAyOSkudGltZVZhbHVlKCksIGJpZ0ludCAv
IDQpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50ICsgMSwgMVUgPDwgMzEpLnRvVGlt
ZVNjYWxlKDFVIDw8IDI5LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRp
bWVWYWx1ZSgpLCBiaWdJbnQgLyA0KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCAr
IDEsIDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAyOSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCBiaWdJbnQgLyA0KTsKICAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKGJpZ0ludCArIDEsIDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAyOSkuaGFz
QmVlblJvdW5kZWQoKSwgdHJ1ZSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQgLSAy
LCBNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUpLnRvVGltZVNjYWxlKE1lZGlhVGltZTo6TWF4
aW11bVRpbWVTY2FsZSAtIDEpLmhhc0JlZW5Sb3VuZGVkKCksIHRydWUpOwogICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoYmlnSW50LCAxKS50b1RpbWVTY2FsZShNZWRpYVRpbWU6Ok1heGltdW1UaW1l
U2NhbGUpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449859</attachid>
            <date>2022-01-24 14:37:01 -0800</date>
            <delta_ts>2022-01-24 15:44:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220124143700.patch</filename>
            <type>text/plain</type>
            <size>146531</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGZmNDU5OWY1MzJkZmU1NmUwMmI3NDQ4ZTdmN2E0MGUxMzhkZGY2Li4zNTlhZGI5N2EwMTY0MTUz
ZjJlNzRmNGEwYmVkNDZjZDJhZGY4ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBGaXhlZFZlY3Rvcjo6Y2xlYXIoKSwgY29udGFpbnMoKSwgZmluZCgpLCBhbmQgZmluZE1h
dGNoaW5nKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IDA0NDdhNDk0NmU3ZDFkYTllNmJhZjRlZDIwMGEwMDA0ZjQ4NjAxOWYu
LjNkNTFmMGVkMTRmNTBkNTEwNmUyYWFmYTIxYmJkNTZiMTliZWUzZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTA1IEBACisyMDIyLTAxLTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNpbXBsZSBz
dHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzU1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9Gb3J3YXJkLmg6IEFkZCBTZWNvbmRzIGFuZCBXYWxsVGltZSB0byB0aGUgdXNpbmcgc2Vj
dGlvbi4KKworICAgICAgICAqIHd0Zi9Mb2NrLmg6IFVzZSBGb3J3YXJkLmggaW5zdGVhZCBvZiBT
ZWNvbmRzLmggc2luY2UgU2Vjb25kcyBpcyBvbmx5IHVzZWQKKyAgICAgICAgaGVyZSBhcyBhbiBh
cmd1bWVudCBhbmQgcmV0dXJuIHR5cGUsIG5vIGFjdHVhbCB1c2Ugb2YgdGhlIGNsYXNzIGluIHRo
ZSBoZWFkZXIuCisKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpNZWRpYVRpbWUpOiBEZWxldGVkIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHRoYXQg
dXNlZCB0aGUgYXNzaWdubWVudAorICAgICAgICBvcGVyYXRvci4gVGhlIGRlZmF1bHQgY29weSBj
b25zdHJ1Y3RvciB3b3JrcyBmaW5lLCB3ZSBkb24ndCBoYXZlIHRvIHdyaXRlIG9uZS4KKyAgICAg
ICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRpbWUpOiBBZGRlZCBhIEhhc0RvdWJsZSBjb25zdHJ1
Y3RvciBmb3IgdXNlIGluIGNyZWF0ZQorICAgICAgICBmdW5jdGlvbnMuIEl0J3MgY29uc3RleHBy
IGJ1dCBpdCdzIGluIHRoZSAuY3BwIGZpbGUgYmVjYXVzZSBpdCdzIHByaXZhdGUuCisgICAgICAg
IChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KTogU2ltcGxpZmllZCBieSB1c2luZyB0
aGUgSGFzRG91YmxlIGNvbnN0cnVjdG9yLgorICAgICAgICBBbHNvIHVzZSBzdGQ6OmlzbmFuIGlu
c3RlYWQgb2YgYSB0cmlja3kgYWx0ZXJuYXRlIHdheSBvZiBkb2luZyBpdC4gUmVtb3ZlZCBhCisg
ICAgICAgIHNwZWNpYWwgY2FzZSBmb3IgaW5maW5pdHkgc2luY2UgdGhlIG1heGltdW0gYW5kIG1p
bmltdW0gY2FzZXMgYWxyZWFkeSBjb3ZlciB0aGF0LgorICAgICAgICBBbmQgcmVwbGFjZWQgYSBz
dGF0aWNfY2FzdCB3aXRoIGFuIGFzc2lnbm1lbnQgdG8gdGhlIGRlc2lyZWQgdHlwZS4KKyAgICAg
ICAgKFdURjo6TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKTogRGl0dG8uIFRoZXNlIGZ1bmN0
aW9ucyBhcmUgc28gc2ltaWxhciB0aGUKKyAgICAgICAgc2hvdWxkIHByb2JhYmx5IGJlIHRlbXBs
YXRlZCBpbnN0ZWFkIG9mIHJlcGVhdGVkIHR3aWNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6
OnRvRmxvYXQgY29uc3QpOiBSZXBsYWNlZCBhIHN0YXRpY19jYXN0IHdpdGggYXNzaWdubWVudCB0
byB0aGUKKyAgICAgICAgZGVzaXJlZCB0eXBlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRv
RG91YmxlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I9
KTogRGVsZXRlZC4gVGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciB3b3JrcyBmaW5lLgor
ICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yKyBjb25zdCk6IFRha2UgdGhlIGFyZ3Vt
ZW50IGJ5IHZhbHVlIGluc3RlYWQgb2YgcmVmZXJlbmNlLgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6Om9wZXJhdG9yLSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9w
ZXJhdG9yKiBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9y
ISBjb25zdCk6IFNpbXBsaWZpZWQgdGhlIGltcGxlbWVudGF0aW9uIGJ5IHVzaW5nCisgICAgICAg
IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBmbGFncyBkaXJlY3RseS4KKyAgICAg
ICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciBib29sIGNvbnN0KTogQ2FsbCBvcGVyYXRvciEg
aW5zdGVhZCBvZiByZXBlYXRpbmcgdGhlCisgICAgICAgIGxvZ2ljIHR3aWNlLgorICAgICAgICAo
V1RGOjpvcmRlcmluZyk6IEFkZGVkIHR3byBvdmVybG9hZGVkIGZ1bmN0aW9ucy4gT25lIGlzIGEg
dGVtcGxhdGUgdGhhdCBjb21wYXJlcworICAgICAgICBzY2FsYXJzIGFuZCB0aGUgb3RoZXIgY29t
cGFyZXMgdHdvIE1lZGlhVGltZSBvYmplY3RzLiBUaGUgc2Vjb25kIG9uZSByZXBsYWNlcyB0aGUK
KyAgICAgICAgTWVkaWFUaW1lOjpjb21wYXJlIGZ1bmN0aW9uLCB3aGljaCBpcyBub3cganVzdCBh
IGxpZ2h0d2VpZ2h0IGNvdmVyIGZvciB0aGlzLgorICAgICAgICBUaGUgb2xkIGNvZGUgaGFkIHRy
aWNreSBsb2dpYywgYW5kIHRoaXMgbmV3IGZ1bmN0aW9uIGlzIGEgY29tcGxldGUgcmV3cml0ZS4K
KyAgICAgICAgVG8gbWFrZSB0aGUgbG9naWMgZWFzeSB0byBmb2xsb3csIHdlIGV4dHJhY3QgdGhl
IHBpZWNlcyBvZiB0aGUgTWVkaWFUaW1lIGFuZAorICAgICAgICBjb21wYXJlIHRoZW0uIElmIHRo
ZXkgYXJlIGVxdWFsIHRoZW4gd2UgZmFsbCB0aHJvdWdoIHRvIHRoZSBuZXh0LCBhbmQgc28gb24u
CisgICAgICAgIEF0IHRoZSBlbmQgdGhlcmUgYXJlIHZhcmlvdXMgY2FzZXMgZm9yIHRpbWVzIHdl
IGNhbiBjb21wYXJlIHdpdGhvdXQgZG9pbmcKKyAgICAgICAgYXJpdGhtZXRpYywgYW5kIHRoZXNl
IGFyZSB0aGUgc2FtZSBhcyB0aGUgb25lcyB0aGF0IHdlcmUgYWxyZWFkeSBoZXJlLCBidXQgd2l0
aAorICAgICAgICBzaW1wbGlmaWVkIGxvZ2ljIGluIHNvbWUgY2FzZXMgdGhhdCBzaG91ZGwgYmUg
ZWFzaWVyIHRvIGZvbGxvdywgYW5kIG5vIHVzZXMgb2YKKyAgICAgICAgc3RhdGljX2Nhc3QgYW55
IG1vcmUuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aXNCZXR3ZWVuIGNvbnN0KTogVGFrZSBh
cmd1bWVudHMgYnkgdmFsdWUgaW5zdGVhZCBvZiByZWZlcmVuY2UuCisgICAgICAgIChXVEY6Ok1l
ZGlhVGltZTo6emVyb1RpbWUpOiBEZWxldGVkLiBOb3cgYSBjb25zdGV4cHIgaW4gdGhlIGhlYWRl
ci4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbnZhbGlkVGltZSk6IERlbGV0ZWQuIERpdHRv
LgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKTogRGVsZXRl
ZC4gRGl0dG8uCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUp
OiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbmRlZmluaXRlVGlt
ZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvVGltZVNjYWxl
IGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSb3VuZGluZ0ZsYWdzIGlzIG5vdworICAgICAgICBSb3Vu
ZGluZ01vZGUuIEl0IGRpZG4ndCBtYWtlIHNlbnNlIHRvIHRyZWF0IG11dHVhbGx5IGV4Y2x1c2l2
ZSByb3VuZGluZyBwb2xpY2llcworICAgICAgICBhcyAiZmxhZ3MiLgorICAgICAgICAoV1RGOjpN
ZWRpYVRpbWU6OnNldFRpbWVTY2FsZSk6IERpdHRvLiBBbHNvIHVzZSBzdGQ6OmV4Y2hhbmdlIGlu
c3RlYWQgb2Ygc3RkOjpzd2FwCisgICAgICAgIGFuZCB1c2Ugc3RkOjphYnMgaW5zdGVhZCBvZiBs
bGFicy4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0pTT05PYmplY3QgY29uc3QpOiBSZW1v
dmVkIHN0YXRpY19jYXN0IHRvIGRvdWJsZS4KKyAgICAgICAgKFdURjo6YWJzKTogVGFrZSBhcmd1
bWVudCBieSB2YWx1ZSBpbnN0ZWFkIG9mIHJlZmVyZW5jZS4gUmVuYW1lZCBhcmd1bWVudCBmcm9t
IHJocworICAgICAgICBzaW5jZSB0aGUgYXJndW1lbnQgaXMgbm90IHRoZSByaWdodC1oYW5kIHNp
ZGUgb2YgYW4gb3BlcmF0b3IuIFJlbW92ZWQgdW5uZWVkZWQKKyAgICAgICAgc3BlY2lhbCBjYXNl
IHRvIGhhbmRsZSBpbnZhbGlkIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIHdvcmtzIGZpbmUgb24gaW52
YWxpZCB3aXRob3V0IGl0LgorICAgICAgICBVc2Ugc3RkOjphYnMgaW5zdGVhZCBvZiBmYWJzLgor
ICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KTogVGFrZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0ZWFk
IG9mIHJlZmVyZW5jZS4KKworICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuaDogUmVtb3ZlZCBtYW55
IHVubmVlZGVkIGluY2x1ZGVzLiBSZW1vdmVkIFdURl9FWFBPUlRfUFJJVkFURQorICAgICAgICBm
cm9tIHRoZSBjbGFzcyBiZWNhdXNlIGl0J3Mgbm90IGNvbXBhdGlibGUgd2l0aCBpbmxpbmVkIGZ1
bmN0aW9ucyBhY2NvcmRpbmcgdG8KKyAgICAgICAgdGhlIHN0eWxlIGNoZWNrZXIgc2NyaXB0LCBp
bnN0ZWFkIGV4cG9ydGluZyBpbmRpdmlkdWFsIGZ1bmN0aW9ucy4gVXNlIE9wdGlvblNldAorICAg
ICAgICBmb3IgdGhlIGZsYWdzLiBDaGFuZ2VkIGZ1bmN0aW9ucyB0byB0YWtlIE1lZGlhVGltZSBi
eSB2YWx1ZSwgc2luY2UgaXQncyBqdXN0IGEKKyAgICAgICAgZmV3IHNjYWxhcnMsIG5vIHNpZ25p
ZmljYW50IGNvc3QgdG8gY29weWluZyBpdCwgYW5kIHBhc3NpbmcgYnkgdmFsdWUgbWVhbnMgdGhl
CisgICAgICAgIHdob2xlIHRoaW5nIG1pZ2h0IGVuZCB1cCBpbiByZWdpc3RlcnMgc2luY2Ugd2Ug
d29uJ3QgbmVlZCBhIHBvaW50ZXIgdG8gaXQgdG8KKyAgICAgICAgcGFzcyBhcyB0aGUgcmVmZXJl
bmNlLiBNYWRlIHRoZSB2YXJpb3VzIHNwZWNpYWwgdGltZXMgcmV0dXJuIGNvbnN0ZXhwciB2YWx1
ZXMsCisgICAgICAgIHdoaWNoIHdpbGwgY29tcGlsZSB0aGUgYXBwcm9wcmlhdGUgYml0IHBhdHRl
cm4gd2l0aG91dCBhbnkgY29tcHV0YXRpb24gbmVlZGVkLgorICAgICAgICBDaGFuZ2VkIHRoZSB0
aW1lVmFsdWUgYW5kIHRpbWVTY2FsZSBmdW5jdGlvbnMgdG8gcmV0dXJuIHRoZSBzY2FsYXJzLCBu
b3QgYQorICAgICAgICBjb25zdCByZWZlcmVuY2UuIFJlbmFtZWQgUm91bmRpbmdGbGFncyB0byBS
b3VuZGluZ01vZGUgc2luY2UgaXQncyBhIGJ1bmNoIG9mCisgICAgICAgIG11dHVhbGx5IGV4Y2x1
c2l2ZSByb3VuZGluZyBtb2Rlcywgbm90IGEgc2V0IG9mIGZsYWdzIHdlIGNhbiBjb21iaW5lLiBS
ZW5hbWVkCisgICAgICAgIHRoZSBkYXRhIG1lbWJlcnMsIHNpbmNlIHRoZXkgZG9u4oCZdCBhbGwg
bmVlZCBhICJ0aW1lIiBwcmVmaXggaW4gYSBjbGFzcyB0aGF0IGlzCisgICAgICAgIGFscmVhZHkg
bmFtZWQgTWVkaWFUaW1lLiBUb29rIHNvbWUgdW5uZWVkZWQgY29uc3Qgb3V0IG9mIE1lZGlhVGlt
ZVJhbmdlLgorICAgICAgICBBZGRlZCB0aGUgRW51bVRyYWl0cyBmb3IgdGhlIGZsYWdzIHNvIHRo
ZXkgY2FuIGJlIGVuY29kZWQgYW5kIGRlY29kZWQuIEJlZm9yZQorICAgICAgICB3ZSB3ZXJlIGVu
Y29kaW5nIHRoZSBzZXQgb2YgZmxhZ3MgYXMgYSB1aW50OF90LCB0aGlzIGlzIGJldHRlci4KKwor
ICAgICAgICAqIHd0Zi9TZWNvbmRzLmg6IE1vdmVkIHRoZSAidXNpbmcgV1RGOjpTZWNvbmRzIiB0
byBGb3J3YXJkLmguCisKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOiBJbmNs
dWRlIEZvcndhcmQuaCBpbnN0ZWFkIG9mIFdhbGxUaW1lLmggc2luY2UKKyAgICAgICAgdGhpcyBm
aWxlIG9ubHkgZGVmaW5lcyBhIGZ1bmN0aW9uIHdpdGggYSBXYWxsVGltZSBhcmd1bWVudCBhbmQg
ZG9lc24ndCBuZWVkCisgICAgICAgIHRvIHB1bGwgdGhlIGVudGlyZSBjbGFzcyBkZWZpbml0aW9u
IGluLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAgIChXVEY6OnBvcnRBbGxvd2Vk
KTogVXNlIFNvcnRlZEFycmF5U2V0LgorCisgICAgICAgICogd3RmL1dhbGxUaW1lLmg6IE1vdmVk
IHRoZSAidXNpbmcgV1RGOjpXYWxsVGltZSIgdG8gRm9yd2FyZC5oLgorCisgICAgICAgICogd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oOiBJbmNsdWRlIDxvcHRpb25hbD4gaW5zdGVh
ZCBvZiBGb3J3YXJkLmguCisgICAgICAgIFRoZSBmb3JtZXIgaXMgYWxsIHRoYXQncyBuZWVkZWQu
CisKKyAgICAgICAgKiB3dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwOiBBZGRlZCBhbiBpbmNs
dWRlIG9mIFdhbGxUaW1lLmggc2luY2UKKyAgICAgICAgVGhyZWFkaW5nUHJpbWl0aXZlcy5oIG5v
IGxvbmdlciBwdWxscyBpdCBpbi4KKworICAgICAgICAqIHd0Zi90aHJlYWRzL1NpZ25hbHMuaDog
QWRkZWQgYW4gaW5jbHVkZSBvZiA8b3B0aW9uYWw+IHNpbmNlIExvY2suaCBubworICAgICAgICBs
b25nZXIgcHVsbHMgaXQgaW4gYnkgaW5jbHVkaW5nIFNlY29uZHMuaC4KKworICAgICAgICAqIHd0
Zi93aW4vVGhyZWFkaW5nV2luLmNwcDogQWRkZWQgaW5jbHVkZSBvZiBXYWxsVGltZS5oIHNpbmNl
CisgICAgICAgIFRocmVhZGluZ1ByaW1pdGl2ZXMuaCBubyBsb25nZXIgcHVsbHMgaXQgaW4uCisK
KwogMjAyMi0wMS0yNCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4K
IAogICAgICAgICBSRUdSRVNJT04ocjI4ODIwMCk6IFtHVEtdW1dQRV0gQnVpbGQgYnJva2VuIG9u
IFVidW50dSAxOC4wNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ0NjI3N2I0MTYzZjdkN2FkY2ZmNzQzMGIwZjAx
MDYyOWU5N2M4OWMuLjNkNTk1YmJlMzU4NjkwNWQxOTMxYTI1YjExZTdlODI4NTY0ZWViNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNzUgQEAKKzIwMjItMDEtMjQgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFuZCBzaW1wbGlmeSBNZWRpYVRpbWUg
YW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgc2luY2UgVGFiU2l6ZSBhbmQg
TGVuZ3RoUG9pbnQgYXJlIGJvdGggbm93CisgICAgICAgIHN0cnVjdHVyZXMsIGFuZCBoYXZlIHB1
YmxpYyBkYXRhIG1lbWJlcnMgcmF0aGVyIHRoYW4gZ2V0dGVyIGZ1bmN0aW9ucy4KKyAgICAgICAg
KFdlYkNvcmU6OnNoYWRvd0ZvckJsZW5kaW5nKTogIFVwZGF0ZWQgdG8gcmV0dXJuIGEgcmVmZXJl
bmNlIHJhdGhlciB0aGFuCisgICAgICAgIGEgbmV2ZXItbnVsbCBwb2ludGVyIGFuZCBmb3IgY2hh
bmdlcyB0byBMZW5ndGhQb2ludC4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JQb3NpdGlvbik6IFVwZGF0
ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjp2
YWx1ZUZvclBvc2l0aW9uT3JBdXRvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb250ZW50
VG9DU1NWYWx1ZSk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgaXMgYSBzdHJ1Y3R1cmUu
CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3Bl
cnR5SW5TdHlsZSk6IFVwZGF0ZWQKKyAgICAgICAgc2luY2UgVGFiU2l6ZSBpcyBhIHN0cnVjdHVy
ZS4KKworICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cG9pbnRGb3JMZW5ndGhQb2ludCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBz
dHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQpOiBE
aXR0by4KKworICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6U3R5bGU6OnRhYlNpemUgY29uc3QpOiBQYXNzIFRhYlNpemUgYnkg
dmFsdWUgaW5zdGVhZAorICAgICAgICBvZiBieSByZWZlcmVuY2UuCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNQb3RlbnRpYWxDdXN0b21FbGVtZW50
TmFtZUNoYXJhY3Rlcik6IFVzZSBTb3J0ZWRBcnJheVNldC4KKyAgICAgICAgSXQgZG9lcyB0aGUg
c29ydGVkIGNoZWNrIGF0IGNvbXBpbGUgdGltZSBpbnN0ZWFkIG9mIGF0IHJ1bnRpbWUgaW4gZGVi
dWcKKyAgICAgICAgYnVpbGRzLCBhbmQgYWxzbyBzZWxlY3RzIGxpbmVhciBzZWFyY2ggaWYgaXQn
cyBmYXN0ZXIgdGhhbiBiaW5hcnkgc2VhcmNoLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVMYXllclBvb2wuaDogQWRkZWQgaW5jbHVkZSBvZiBXYWxsVGltZS5oLCBubworICAg
ICAgICBsb25nZXIgcHVsbGVkIGluIGJ5IFRocmVhZGluZy5oLgorCisgICAgICAgICogcGxhdGZv
cm0vTGVuZ3RoUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6IFVwZGF0
ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9MZW5ndGhQb2ludC5oOiBDaGFuZ2VkIExlbmd0aFBvaW50IHRvIGJlIGEgdHJ1ZSBzdHJ1Y3R1
cmUKKyAgICAgICAgd2l0aCBwdWJsaWMgZGF0YSBtZW1iZXJzLiBUaGUgb2xkIG9uZSB3YXMsIHN0
cmFuZ2VseSwgYSBzdHJ1Y3QsIGJ1dAorICAgICAgICB3aXRoIHByaXZhdGUgZGF0YS4gUmVtb3Zl
ZCB0aGUgY29uc3RydWN0b3JzLCBnZXR0ZXJzLCBhbmQgc2V0dGVycy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVs
QnVmZmVyOjp0cnlDcmVhdGUpOiBBdm9pZCBhIHdhcm5pbmcgYWJvdXQgbWl4ZWQgaW50ZWdlcgor
ICAgICAgICB0eXBlcyBieSB1c2luZyBhIGxvY2FsIHZhcmlhYmxlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNj
YWRlOjp0YWJXaWR0aCBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBpbnN0ZWFkCisgICAg
ICAgIG9mIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RhYlNp
emUuaDogUmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSB0aGUgZGF0YQorICAgICAgICBtZW1i
ZXJzIHNpbmNlIFRhYlNpemUgaXMgYSBzdHJ1Y3QuIFJlbW92ZWQgdGhlIGdldHRlcnMuIE1hcmtl
ZCB0aGUKKyAgICAgICAgb3BlcmF0b3IgYm9vbCBleHBsaWNpdCBzaW5jZSB3ZSBkb24ndCB3YW50
IHRvIGFjY2lkZW50YWxseSBwYXNzIHRoaXMKKyAgICAgICAgdG8gc29tZXRoaW5nIHRha2luZyBh
biBpbnRlZ2VyIGFuZCBnZXR0aW5nIGEgMCBvciAxLiBBZGRlZCBhIFRleHRTdHJlYW0KKyAgICAg
ICAgb3ZlcmxvYWQgc28gd2UgY2FuIHN0cmVhbSB0aGlzIHdpdGhvdXQgZXhwbGljaXRseSBwaWNr
aW5nIGl0IGFwYXJ0IGF0CisgICAgICAgIGVhY2ggY2FsbCBzaXRlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6dGFi
U2l6ZSBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBpbnN0ZWFkIG9mCisgICAgICAgIGJ5
IHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnNldFRhYlNpemUpOiBEaXR0
by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppc1ZhbGlkVlBMZXZlbCk6IFVzZSBTb3J0ZWRBcnJheVNldC4gU2FtZSBy
ZWFzb25zIGFzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQQ29sb3JQcmltYXJp
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUFRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBNYXRyaXhDb2VmZmlj
aWVudHMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgIFJlbW92
ZWQgdGhlIG1fIHByZWZpeGVzIGZyb20gSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakM6
OkNoYXB0ZXJEYXRhCisgICAgICAgIGRhdGEgbWVtYmVycyBzaW5jZSBpdCdzIGEgc3RydWN0Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlk
ZW9PdXRwdXQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6Y29uZmln
dXJlTmV4dEltYWdlVGltZU9ic2VydmVyKTogRml4ZWQgYQorICAgICAgICBidWcgd2hlcmUgdGhp
cyB1c2VkIGN1cnJlbnRJbWFnZVRpbWUgaW5zdGVhZCBvZiBuZXh0SW1hZ2UgdGltZSwgZXhwb3Nl
ZAorICAgICAgICBiZWNhdXNlIHRoZSBjaGFuZ2VzIHRvIE1lZGlhVGltZSBtYWRlIGl0IGdpdmUg
dXMgYW4gdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRh
KToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBwYXJzZU9wdXNQcml2YXRlRGF0YSBub3cgcmV0dXJu
cyBhbiBvcHRpb25hbCBpbnN0ZWFkIG9mCisgICAgICAgIHJldHVybmluZyBhIGJvb2xlYW4gYW5k
IHVzaW5nIGFuIG91dCBhcmd1bWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmg6IEFkZGVkIGFuIGluY2x1ZGUKKyAgICAgICAg
b2YgU2Vjb25kcy5oIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBvdGhlciBpbmNs
dWRlcyBhbmQKKyAgICAgICAgdGhpcyBzdHJ1Y3R1cmUgaGFzIGEgU2Vjb25kcyBkYXRhIG1lbWJl
ci4gQ2hhbmdlZCB0aGUgcGFyc2VPcHVzUHJpdmF0ZURhdGEKKyAgICAgICAgZnVuY3Rpb24gdG8g
cmV0dXJuIGFuIG9wdGlvbmFsIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgYm9vbCBhbmQgdXNpbmcK
KyAgICAgICAgYW4gb3V0IGFyZ3VtZW50IGZvciB3aGF0IGlzIHBhcnNlZC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VPcHVzUHJpdmF0ZURhdGEpOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbTogUmVtb3ZlZCB0aGUgY29uc3RydWN0b3Jz
IGZyb20KKyAgICAgICAgT1NCdWlsZEluZm8gYW5kIG1hZGUgYWxsIGl0cyBvcGVyYXRvcnMgY29u
c3RleHByLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1No
YXJlZFVuaXQuaDogQWRkZWQgYW4gaW5jbHVkZQorICAgICAgICBvZiBTZWNvbmRzLmgsIG5vIGxv
bmdlciBwdWxsZWQgaW4gYnkgTG9jay5oLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW06IEFkZGVkIGFuIGluY2x1ZGUgb2YKKyAgICAgICAg
V2FsbFRpbWUuaCwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBUaHJlYWRpbmdQcmltaXRpdmVzLmgu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlk
SXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKTogUmV0dXJuIGFuIG9wdGlvbmFsIGluc3RlYWQg
b2YKKyAgICAgICAgYSB1bmlxdWVfcHRyLiBObyByZWFzb24gdG8gdXNlIGEgaGVhcCBibG9jayBm
b3IgdGhpcy4KKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5oOiBVcGRhdGVkIHNpbmNlIEdyaWRB
cmVhIGlzIG5vdyBhIHN0cnVjdCBhbmQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6
Om9yaWdpbmFsVGV4dCBjb25zdCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQKKyAgICAg
ICAgaXMgbm93IGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0
U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQgY29uc3QpOgorICAgICAgICBSZXR1cm4gYSBH
cmlkQXJlYSBpbnN0ZWFkIG9mIGEgdW5pcXVlX3B0ci4gVGhlIHJldHVybiB2YWx1ZSBpcyBuZXZl
ciBudWxsIGFuZAorICAgICAgICB0aGVyZSBpcyBubyBuZWVkIHRvIHB1dCBpdCBvbiB0aGUgaGVh
cC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlz
SXRlbXNPbkdyaWQgY29uc3QpOiBVcGRhdGVkIGZvcgorICAgICAgICB0aGUgYWJvdmUgY2hhbmdl
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9u
R3JpZCBjb25zdCk6IFVzZSBvcHRpb25hbCBpbnN0ZWFkCisgICAgICAgIG9mIHVuaXF1ZV9wdHIg
Zm9yIGEgbG9jYWwgdmFyaWFibGUgd2l0aCB0aGUgZW1wdHkgZ3JpZCBhcmVhIGluIGl0LgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6IFVwZGF0ZWQgc2luY2UgR3JpZEFyZWEgaXMg
YSBzdHJ1Y3QgYW5kIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcDogVXNlIGNvbnN0ZXhwci4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6
cmVwbGFjZWRDb250ZW50UmVjdCBjb25zdCk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgTGVuZ3Ro
UG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgICogcmVuZGVyaW5nL1RleHRCb3hQYWludGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpkZWJ1Z1RleHRTaGFkb3cg
Y29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOiBT
dHlsZSB0d2Vha3MuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQu
aDogVHVybmVkIHRoZSBDb3VudGVyQ29udGVudCBjbGFzcyBpbnRvIGEKKyAgICAgICAgc3RydWN0
dXJlIHdpdGggcHVibGljIGRhdGEgbWVtYmVycy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9GaWxsTGF5ZXIuaDogUmVtb3ZlZCB0aGUgRmlsbFNpemUgY29uc3RydWN0b3JzLgorCisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6IE1hZGUgR3JpZFNwYW5UeXBlIGJlIGJh
c2VkIG9uIGEgdWludDhfdC4KKyAgICAgICAgUmVvcmRlcmVkIHRoZSBkYXRhIG1lbWJlcnMgb2Yg
R3JpZEFyZWEgdG8gYmUgcm93cyBmaXJzdCBhbmQgdGhlbiBjb2x1bW5zCisgICAgICAgIHRvIGZv
bGxvdyB0aGUgb3JkZXIgZnJvbSB0aGUgY29uc3RydWN0b3IgYW5kIGFsc28gdGhlIGNvbnZlbnRp
b25hbAorICAgICAgICAieCBiZWZvcmUgeSIgb3JkZXJpbmcuIFRoaXMgd2lsbCBhbHNvIGJlIGdv
b2Qgc29tZSBkYXkgd2hlbiB3ZSBjYW4gdXNlIHRoZQorICAgICAgICBkZWZhdWx0IDw9PiBmcm9t
IEMrKzIwLCB3aGljaCBkZXBlbmRzIG9uIGRhdGEgbWVtYmVyIG9yZGVyaW5nLgorCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaDogVHdlYWtlZCBjb21tZW50cyBhbmQgbW92
ZWQgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgb2YgbV9mbGV4IGZyb20gdGhlIGNvbnN0cnVjdG9y
IHRvIHRoZSBkYXRhIG1lbWJlciBkZWZpbml0aW9uLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBs
eU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOiBVcGRhdGVkIHNpbmNlCisgICAgICAgIExlbmd0
aFBvaW50IGlzIGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmg6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgYW5kIExlbmdodFBvaW50Cisg
ICAgICAgIGFyZSBzdHJ1Y3R1cmVzLCBhbmQgdG8gcGFzcyBUYWJTaXplIGJ5IHZhbHVlLgorCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6IFNpbXBsaWZpZWQgY29uc3RydWN0b3Igc2luY2Ug
bV9sb2NhdGlvbgorICAgICAgICBkb2VzIG5vdCBoYXZlIHRvIGJlIHNwbGl0IG91dCBpbnRvIHgg
YW5kIHkganVzdCB0byBjb3B5IGl0LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TaGFkb3dE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjp4IGNvbnN0KTogVXBkYXRlZCBzaW5jZSBM
ZW5ndGhQb2ludCBpcyBub3cgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dE
YXRhOjp5IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisKKyAgICAgICAg
KiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZSk6IFVwZGF0ZWQgc2luY2UgVGFiU2l6
ZQorICAgICAgICBubyBsb25nZXIgaGFzIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24pOiBVcGRhdGVkIHNpbmNl
IExlbmd0aFBvaW50CisgICAgICAgIG5vIGxvbmdlciBoYXMgY29uc3RydWN0b3JzLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbk9yQXV0
byk6IERpdHRvLgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlQ29udGVudCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQKKyAgICAgICAgbm8g
bG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisKIDIwMjItMDEtMjQgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFzcyB0aGUgRG9jdW1lbnQgdGhyb3VnaCBi
aW5kaW5ncyB0byBLZXlmcmFtZUVmZmVjdDo6c2V0S2V5ZnJhbWVzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IDEwM2M5NDkzZmM4M2Q0YzczMGEwM2EzMTQwMDU1ZTRjNzcwMDI0MDMuLjkzYjVlZGJj
NTgzM2U5YjBjYTg0OTZkYTkwMWUwYzQ0MGVlMjVlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDIyLTAxLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNp
bXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAg
ICAgKFBBTDo6Q01UaW1lSGFzRmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjp0b01lZGlh
VGltZSk6IFRha2UgQ01UaW1lIGJ5IHZhbHVlLiBBbHNvIHNpbXBsaWZpZWQgbG9naWMKKyAgICAg
ICAgdG8ganVzdCBjaGVjayBvbmUgZmxhZyBhdCBhIHRpbWUsIHdoaWNoIG1lYW5zIHRoZSBDTVRp
bWVIYXNGbGFncworICAgICAgICBmdW5jdGlvbiBpc24ndCBuZWVkZWQgYW55IG1vcmUuIEFsc28g
bm93IHVzZXMgT3B0aW9uU2V0IGJlY2F1c2UKKyAgICAgICAgdGhhdCBpcyBob3cgTWVkaWFUaW1l
IHdvcmtzLgorICAgICAgICAoUEFMOjp0b0NNVGltZSk6IFRha2UgTWVkaWFUaW1lIGJ5IHZhbHVl
LgorICAgICAgICAqIHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg6IFVw
ZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKwogMjAyMi0wMS0yNCAgRGF2aWQgUXVlc2FkYSAgPGRhdmlk
X3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGFjY2Vzc2VzIHRvIFN5c3Rl
bVZlcnNpb24ucGxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjY0MWZhODMwNmM5ZWNhMmYzZDNjZjM4MDg3NmNi
YmJlN2EwMTc3MC4uNGZiODE0YTk4YjU5ZGExMjhmMDBiOWMyZDE4NjA2MDZmNWI1Zjk1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQg
dmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmg6CisgICAgICAgIEFkZGVkIGFuIGluY2x1ZGUgb2YgPG9wdGlvbmFs
Piwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBib3RoIG90aGVyIGhlYWRlcnMuCisKIDIwMjItMDEtMjQg
IERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1w
bGlmeSBhY2Nlc3NlcyB0byBTeXN0ZW1WZXJzaW9uLnBsaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCmluZGV4IDVmNjYzYjJmZjVhNWUzY2Uw
OGNlNDEyOTViODBhOWI3MTA2Yzg5NzkuLjU0NmNhZDc2ZWM4OGQ3MTA1NDFlNmEzZTU5ODVmYTY0
OTVmYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBl
clNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNh
bXBsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1
ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9G
b3J3YXJkLmgKaW5kZXggM2NlNzYxMjQyYzMyZWMxNjk0YzY1YTc3ZTc0MGU5YzY2OTNjM2JiNC4u
MzY0ODcyYTIwMWM2ZGJlZmZjOTdlNGM5MGM2NTYxYmY1OWQwNzRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAt
MTQ5LDYgKzE0OSw3IEBAIHVzaW5nIFdURjo6UmVmUHRyOwogdXNpbmcgV1RGOjpSZXRhaW5QdHI7
CiB1c2luZyBXVEY6OlNIQTE7CiB1c2luZyBXVEY6OlNjb3BlZExhbWJkYTsKK3VzaW5nIFdURjo6
U2Vjb25kczsKIHVzaW5nIFdURjo6U3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1
c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CkBAIC0xNjEsNiArMTYyLDcgQEAgdXNpbmcgV1RGOjpU
ZXh0U3RyZWFtOwogdXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5n
IFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXYWxsVGltZTsKIHVzaW5nIFdURjo6V2Vha1B0cjsK
IAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVy
aW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2Nr
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXggNDJlNGFhYzBjOWE0YWFlNTllNzFiNWU5
MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQzMTY5MGM2NDJlYmI3YmI3NmVhNzY5OTA4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9jay5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG11
dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tBbGdvcml0
aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZXR5
QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAK
aW5kZXggMjI0ZTc3NDk1ZmI5MzgzNGY1OGY5Y2YzMjM0MzdmMzkxNjkzOTQyZi4uYThiOWMzNDNj
NzM4Y2MwNjdlMzAwZWUzMGFjMzFlNzZmNGViN2Q0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC03
Miw5ICs3Miw5IEBAIHN0YXRpYyBpbnQ2NF90IHNpZ251bShpbnQ2NF90IHZhbCkKIAogY29uc3Qg
dWludDMyX3QgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNjYWxlID0gMTAwMDAwMDAwMDsKIAotTWVk
aWFUaW1lOjpNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpCitjb25zdGV4cHIgTWVkaWFU
aW1lOjpNZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91YmxlIHZhbHVlKQorICAgIDogbV92YWx1
ZUFzRG91YmxlKHZhbHVlKQogewotICAgICp0aGlzID0gcmhzOwogfQogCiBNZWRpYVRpbWUgTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKQpAQCAtODQsNTcgKzg0LDUx
IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUp
CiAgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6c2ln
bmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5p
dGVUaW1lKCk7CiAKLSAgICBNZWRpYVRpbWUgdmFsdWUoMCwgRGVmYXVsdFRpbWVTY2FsZSwgVmFs
aWQgfCBEb3VibGVWYWx1ZSk7Ci0gICAgdmFsdWUubV90aW1lVmFsdWVBc0RvdWJsZSA9IGZsb2F0
VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgZG91YmxlIHZhbHVlID0gZmxvYXRUaW1lOwor
ICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwgdWludDMyX3QgdGltZVNjYWxlKQor
TWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlLCB1aW50MzJf
dCB0aW1lU2NhbGUpCiB7Ci0gICAgaWYgKGZsb2F0VGltZSAhPSBmbG9hdFRpbWUpCisgICAgaWYg
KHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKLSAgICBp
ZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZs
b2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KTsKLSAgICBpZiAoZmxvYXRUaW1lID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAgaWYgKHZh
bHVlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHJldHVybiBwb3NpdGl2ZUluZmlu
aXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0
X3Q+OjptaW4oKSkKKyAgICBpZiAodmFsdWUgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgaWYg
KCF0aW1lU2NhbGUpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICBy
ZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3Np
dGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUgKGZsb2F0VGltZSAqIHRpbWVTY2FsZSA+
PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIHdoaWxlICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBt
YXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICB0aW1lU2NhbGUgLz0gMjsKLSAgICByZXR1cm4g
TWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZsb2F0VGltZSAqIHRpbWVTY2FsZSksIHRp
bWVTY2FsZSwgVmFsaWQpOworICAgIGludDY0X3Qgc2NhbGVkVmFsdWUgPSB2YWx1ZSAqIHRpbWVT
Y2FsZTsKKyAgICByZXR1cm4geyBzY2FsZWRWYWx1ZSwgdGltZVNjYWxlIH07CiB9CiAKLU1lZGlh
VGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUpCitNZWRp
YVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBp
ZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZG91Ymxl
VGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2
ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLQotICAgIE1lZGlhVGlt
ZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxpZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2
YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZG91YmxlVGltZTsKLSAgICByZXR1cm4gdmFsdWU7
CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpKQorICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0
KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgp
OworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsKIH0KIAotTWVkaWFUaW1lIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSwgdWludDMyX3QgdGltZVNj
YWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFsdWUs
IHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1l
KQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1l
KCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGltZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+
KQorICAgIGlmICh2YWx1ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICByZXR1cm4g
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGltZSA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlmICh2YWx1ZSA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChk
b3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGlt
ZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5p
dGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUgKGRvdWJsZVRp
bWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKKyAgICB3aGlsZSAodmFsdWUg
KiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKICAgICAgICAgdGltZVNjYWxlIC89
IDI7Ci0gICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6OnJvdW5k
KGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUpKSwgdGltZVNjYWxlLCBWYWxpZCk7CisgICAgaW50NjRf
dCBzY2FsZWRWYWx1ZSA9IHN0ZDo6cm91bmQodmFsdWUgKiB0aW1lU2NhbGUpOworICAgIHJldHVy
biB7IHNjYWxlZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0KIAogZmxvYXQgTWVkaWFUaW1lOjp0b0Zs
b2F0KCkgY29uc3QKQEAgLTE0Niw4ICsxNDAsOSBAQCBmbG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQo
KSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIC1z
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKICAgICBpZiAoaGFzRG91Ymxl
VmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlQXNEb3VibGU7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbWVWYWx1ZSkgLyBtX3RpbWVTY2FsZTsKKyAgICAgICAg
cmV0dXJuIG1fdmFsdWVBc0RvdWJsZTsKKyAgICBmbG9hdCB2YWx1ZSA9IG1fdmFsdWU7CisgICAg
cmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAogZG91YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUo
KSBjb25zdApAQCAtMTU5LDE5ICsxNTQsMTIgQEAgZG91YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUo
KSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIC1z
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiAgICAgaWYgKGhhc0RvdWJs
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZUFzRG91YmxlOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSAvIG1fdGltZVNjYWxlOworICAgICAg
ICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOworICAgIGRvdWJsZSB2YWx1ZSA9IG1fdmFsdWU7Cisg
ICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAotTWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9w
ZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocykKLXsKLSAgICBtX3RpbWVWYWx1ZSA9IHJocy5t
X3RpbWVWYWx1ZTsKLSAgICBtX3RpbWVTY2FsZSA9IHJocy5tX3RpbWVTY2FsZTsKLSAgICBtX3Rp
bWVGbGFncyA9IHJocy5tX3RpbWVGbGFnczsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLU1lZGlh
VGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK01l
ZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhNZWRpYVRpbWUgcmhzKSBjb25zdAogewogICAg
IGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJldHVybiBpbnZh
bGlkVGltZSgpOwpAQCAtMTkyLDcgKzE4MCw3IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJh
dG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiByaHMuaGFzRG91
YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSht
X3RpbWVWYWx1ZUFzRG91YmxlICsgcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOworICAgICAgICBy
ZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSArIHJocy5t
X3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwgcmhzLmhhc0Rv
dWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
dG9Eb3VibGUoKSArIHJocy50b0RvdWJsZSgpKTsKQEAgLTIwMSwxMyArMTg5LDEzIEBAIE1lZGlh
VGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAg
ICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVTY2FsZTsKLSAg
ICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUoYS5tX3RpbWVTY2FsZSwgYi5tX3RpbWVTY2FsZSwg
Y29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQor
ICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZShhLm1fc2NhbGUsIGIubV9zY2FsZSwgY29tbW9u
VGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQogICAgICAg
ICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxlOwogICAgIGEuc2V0VGltZVNjYWxl
KGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsK
LSAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3Rp
bWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3ZhbHVlLCBiLm1fdmFsdWUsIGEu
bV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVTY2FsZSA9PSAxKQotICAgICAgICAg
ICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICByZXR1cm4gYS5tX3ZhbHVlID4gMCA/
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAgICAg
ICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGlt
ZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKQEAgLTIx
NSw3ICsyMDMsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvcisoY29uc3QgTWVkaWFU
aW1lJiByaHMpIGNvbnN0CiAgICAgcmV0dXJuIGE7CiB9CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6
Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK01lZGlhVGltZSBNZWRpYVRp
bWU6Om9wZXJhdG9yLShNZWRpYVRpbWUgcmhzKSBjb25zdAogewogICAgIGlmIChyaHMuaXNJbnZh
bGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwpAQCAt
MjM2LDcgKzIyNCw3IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRp
YVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7
CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiByaHMuaGFzRG91YmxlVmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91
YmxlIC0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOworICAgICAgICByZXR1cm4gTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSAtIHJocy5tX3ZhbHVlQXNEb3VibGUp
OwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwgcmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUodG9Eb3VibGUoKSAtIHJo
cy50b0RvdWJsZSgpKTsKQEAgLTI0NSwxMyArMjMzLDEzIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6
Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYiA9
IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVTY2FsZTsKLSAgICBpZiAoIWxlYXN0Q29t
bW9uTXVsdGlwbGUodGhpcy0+bV90aW1lU2NhbGUsIHJocy5tX3RpbWVTY2FsZSwgY29tbW9uVGlt
ZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgIGlmICgh
bGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3NjYWxlLCByaHMubV9zY2FsZSwgY29tbW9uVGlt
ZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQogICAgICAgICBj
b21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxlOwogICAgIGEuc2V0VGltZVNjYWxlKGNv
bW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKLSAg
ICB3aGlsZSAoIXNhZmVTdWIoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVW
YWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVTdWIoYS5tX3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92
YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVTY2FsZSA9PSAxKQotICAgICAgICAgICAg
cmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICByZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBv
c2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAgICAgICBj
b21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNj
YWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKQEAgLTI3NSw5
ICsyNjMsOSBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvci0oKSBjb25zdAogCiAgICAg
TWVkaWFUaW1lIG5lZ2F0aXZlVGltZSA9ICp0aGlzOwogICAgIGlmIChuZWdhdGl2ZVRpbWUuaGFz
RG91YmxlVmFsdWUoKSkKLSAgICAgICAgbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNEb3VibGUg
PSAtbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAgIG5lZ2F0aXZlVGlt
ZS5tX3ZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1lLm1fdmFsdWVBc0RvdWJsZTsKICAgICBl
bHNlCi0gICAgICAgIG5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZSA9IC1uZWdhdGl2ZVRpbWUubV90
aW1lVmFsdWU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5tX3ZhbHVlID0gLW5lZ2F0aXZlVGltZS5t
X3ZhbHVlOwogICAgIHJldHVybiBuZWdhdGl2ZVRpbWU7CiB9CiAKQEAgLTMwNywxNCArMjk1LDE0
IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKihpbnQzMl90IHJocykgY29uc3QKICAg
ICBNZWRpYVRpbWUgYSA9ICp0aGlzOwogCiAgICAgaWYgKGEuaGFzRG91YmxlVmFsdWUoKSkgewot
ICAgICAgICBhLm1fdGltZVZhbHVlQXNEb3VibGUgKj0gcmhzOworICAgICAgICBhLm1fdmFsdWVB
c0RvdWJsZSAqPSByaHM7CiAgICAgICAgIHJldHVybiBhOwogICAgIH0KIAotICAgIHdoaWxlICgh
c2FmZU11bHRpcGx5KGEubV90aW1lVmFsdWUsIHJocywgYS5tX3RpbWVWYWx1ZSkpIHsKLSAgICAg
ICAgaWYgKGEubV90aW1lU2NhbGUgPT0gMSkKLSAgICAgICAgICAgIHJldHVybiBzaWdudW0oYS5t
X3RpbWVWYWx1ZSkgPT0gc2lnbnVtKHJocykgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVn
YXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICAgICAgYS5zZXRUaW1lU2NhbGUoYS5tX3RpbWVTY2Fs
ZSAvIDIpOworICAgIHdoaWxlICghc2FmZU11bHRpcGx5KGEubV92YWx1ZSwgcmhzLCBhLm1fdmFs
dWUpKSB7CisgICAgICAgIGlmIChhLm1fc2NhbGUgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiBz
aWdudW0oYS5tX3ZhbHVlKSA9PSBzaWdudW0ocmhzKSA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkg
OiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICBhLnNldFRpbWVTY2FsZShhLm1fc2Nh
bGUgLyAyKTsKICAgICB9CiAKICAgICByZXR1cm4gYTsKQEAgLTMyMiwxNzYgKzMxMCwxMDkgQEAg
TWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IqKGludDMyX3QgcmhzKSBjb25zdAogCiBib29s
IE1lZGlhVGltZTo6b3BlcmF0b3IhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1fdGltZUZsYWdz
ID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAgICAgfHwgKG1fdGltZUZsYWdzID09IChW
YWxpZCB8IERvdWJsZVZhbHVlKSAmJiAhbV90aW1lVmFsdWVBc0RvdWJsZSkKLSAgICAgICAgfHwg
aXNJbnZhbGlkKCk7CisgICAgcmV0dXJuIGlzSW52YWxpZCgpIHx8IChoYXNEb3VibGVWYWx1ZSgp
ID8gIW1fdmFsdWVBc0RvdWJsZSA6ICFtX3ZhbHVlKTsKIH0KIAogTWVkaWFUaW1lOjpvcGVyYXRv
ciBib29sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIShtX3RpbWVGbGFncyA9PSBWYWxpZCAmJiAh
bV90aW1lVmFsdWUpCi0gICAgICAgICYmICEobV90aW1lRmxhZ3MgPT0gKFZhbGlkIHwgRG91Ymxl
VmFsdWUpICYmICFtX3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICAmJiAhaXNJbnZhbGlkKCk7
CisgICAgcmV0dXJuICEhKnRoaXM7CiB9CiAKLU1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzIE1l
ZGlhVGltZTo6Y29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFncyBvcmRlcmluZyhUIGEs
IFQgYikKIHsKLSAgICBhdXRvIGFuZEZsYWdzID0gbV90aW1lRmxhZ3MgJiByaHMubV90aW1lRmxh
Z3M7Ci0gICAgaWYgKGFuZEZsYWdzICYgKFBvc2l0aXZlSW5maW5pdGUgfCBOZWdhdGl2ZUluZmlu
aXRlIHwgSW5kZWZpbml0ZSkpCi0gICAgICAgIHJldHVybiBFcXVhbFRvOwotCi0gICAgYXV0byBv
ckZsYWdzID0gbV90aW1lRmxhZ3MgfCByaHMubV90aW1lRmxhZ3M7Ci0gICAgaWYgKCEob3JGbGFn
cyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICBpZiAoIShhbmRGbGFn
cyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIGlzSW52YWxpZCgpID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgTmVnYXRpdmVJbmZpbml0ZSkKLSAgICAgICAg
cmV0dXJuIGlzTmVnYXRpdmVJbmZpbml0ZSgpID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLQot
ICAgIGlmIChvckZsYWdzICYgUG9zaXRpdmVJbmZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGlzUG9z
aXRpdmVJbmZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChvckZs
YWdzICYgSW5kZWZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGlzSW5kZWZpbml0ZSgpID8gR3JlYXRl
clRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChhbmRGbGFncyAmIERvdWJsZVZhbHVlKSB7Ci0g
ICAgICAgIGlmIChtX3RpbWVWYWx1ZUFzRG91YmxlID09IHJocy5tX3RpbWVWYWx1ZUFzRG91Ymxl
KQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICAgICAgcmV0dXJuIG1fdGltZVZh
bHVlQXNEb3VibGUgPCByaHMubV90aW1lVmFsdWVBc0RvdWJsZSA/IExlc3NUaGFuIDogR3JlYXRl
clRoYW47Ci0gICAgfQotCi0gICAgaWYgKG9yRmxhZ3MgJiBEb3VibGVWYWx1ZSkgewotICAgICAg
ICBkb3VibGUgYSA9IHRvRG91YmxlKCk7Ci0gICAgICAgIGRvdWJsZSBiID0gcmhzLnRvRG91Ymxl
KCk7Ci0gICAgICAgIGlmIChhID4gYikKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsK
LSAgICAgICAgaWYgKGEgPCBiKQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotICAgICAg
ICByZXR1cm4gRXF1YWxUbzsKLSAgICB9Ci0KLSAgICBpZiAoKG1fdGltZVZhbHVlIDwgMCkgIT0g
KHJocy5tX3RpbWVWYWx1ZSA8IDApKQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWUgPCAwID8g
TGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKKyAgICByZXR1cm4gYSA8IGIgPyBNZWRpYVRpbWU6OkNv
bXBhcmlzb25GbGFnczo6TGVzc1RoYW4gOiBiIDwgYSA/IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZs
YWdzOjpHcmVhdGVyVGhhbiA6IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzOjpFcXVhbFRvOwor
fQogCi0gICAgaWYgKCFtX3RpbWVWYWx1ZSAmJiAhcmhzLm1fdGltZVZhbHVlKQotICAgICAgICBy
ZXR1cm4gRXF1YWxUbzsKK01lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzIG9yZGVyaW5nKE1lZGlh
VGltZSBhLCBNZWRpYVRpbWUgYikKK3sKKyAgICBhdXRvIG9yZGVyaW5nQ2xhc3MgPSBbXShNZWRp
YVRpbWUgdGltZSkgeworICAgICAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAg
ICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHRpbWUuaXNJbmRlZmluaXRlKCkpCisg
ICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKHRpbWUuaXNQb3NpdGl2ZUluZmluaXRl
KCkpCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgaWYgKHRpbWUuaXNJbnZhbGlkKCkp
CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfTsKKyAgICBh
dXRvIGFDbGFzcyA9IG9yZGVyaW5nQ2xhc3MoYSk7CisgICAgYXV0byBiQ2xhc3MgPSBvcmRlcmlu
Z0NsYXNzKGIpOworICAgIGlmIChhQ2xhc3MgfHwgYkNsYXNzKQorICAgICAgICByZXR1cm4gb3Jk
ZXJpbmcoYUNsYXNzLCBiQ2xhc3MpOwogCi0gICAgaWYgKG1fdGltZVNjYWxlID09IHJocy5tX3Rp
bWVTY2FsZSkgewotICAgICAgICBpZiAobV90aW1lVmFsdWUgPT0gcmhzLm1fdGltZVZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8
IHJocy5tX3RpbWVWYWx1ZSA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47Ci0gICAgfQorICAgIGlm
IChhLmhhc0RvdWJsZVZhbHVlKCkgfHwgYi5oYXNEb3VibGVWYWx1ZSgpKQorICAgICAgICByZXR1
cm4gb3JkZXJpbmcoYS50b0RvdWJsZSgpLCBiLnRvRG91YmxlKCkpOwogCi0gICAgaWYgKG1fdGlt
ZVZhbHVlID09IHJocy5tX3RpbWVWYWx1ZSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVNjYWxlIDwg
cmhzLm1fdGltZVNjYWxlID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKKyAgICBpZiAoKGEubV92
YWx1ZSA8IDApICE9IChiLm1fdmFsdWUgPCAwKSB8fCAhYS5tX3ZhbHVlIHx8ICFiLm1fdmFsdWUg
fHwgYS5tX3NjYWxlID09IGIubV9zY2FsZSkKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGEubV92
YWx1ZSwgYi5tX3ZhbHVlKTsKIAotICAgIGlmIChtX3RpbWVWYWx1ZSA+PSAwKSB7Ci0gICAgICAg
IGlmIChtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5t
X3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKyAgICBpZiAoYS5tX3Zh
bHVlID09IGIubV92YWx1ZSkKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGIubV9zY2FsZSwgYS5t
X3NjYWxlKTsKIAotICAgICAgICBpZiAobV90aW1lVmFsdWUgPiByaHMubV90aW1lVmFsdWUgJiYg
bV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gR3JlYXRl
clRoYW47CisgICAgaWYgKGEubV92YWx1ZSA+PSAwKSB7CisgICAgICAgIGlmIChhLm1fdmFsdWUg
PCBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlID4gYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6TGVzc1RoYW47CisgICAgICAgIGlmIChhLm1fdmFsdWUgPiBiLm1fdmFsdWUg
JiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6
R3JlYXRlclRoYW47CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlIDwgcmhz
Lm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlIDwgcmhzLm1fdGltZVNjYWxlKQotICAgICAgICAg
ICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA+IHJocy5tX3Rp
bWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJl
dHVybiBHcmVhdGVyVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA8IGIubV92YWx1ZSAmJiBh
Lm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpMZXNz
VGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPiBi
Lm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpHcmVhdGVyVGhhbjsKICAg
ICB9CiAKLSAgICBpbnQ2NF90IGxoc0ZhY3RvcjsKLSAgICBpbnQ2NF90IHJoc0ZhY3RvcjsKLSAg
ICBpZiAoc2FmZU11bHRpcGx5KG1fdGltZVZhbHVlLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihyaHMu
bV90aW1lU2NhbGUpLCBsaHNGYWN0b3IpCi0gICAgICAgICYmIHNhZmVNdWx0aXBseShyaHMubV90
aW1lVmFsdWUsIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fdGltZVNjYWxlKSwgcmhzRmFjdG9yKSkg
ewotICAgICAgICBpZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgICAgIHJldHVy
biBFcXVhbFRvOwotICAgICAgICByZXR1cm4gbGhzRmFjdG9yIDwgcmhzRmFjdG9yID8gTGVzc1Ro
YW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9CisgICAgaW50NjRfdCBhUHJvZHVjdDsKKyAgICBpbnQ2
NF90IGJQcm9kdWN0OworICAgIGludDY0X3QgYVRpbWVTY2FsZSA9IGEubV9zY2FsZTsKKyAgICBp
bnQ2NF90IGJUaW1lU2NhbGUgPSBiLm1fc2NhbGU7CisgICAgaWYgKHNhZmVNdWx0aXBseShhLm1f
dmFsdWUsIGFUaW1lU2NhbGUsIGFQcm9kdWN0KSAmJiBzYWZlTXVsdGlwbHkoYi5tX3ZhbHVlLCBi
VGltZVNjYWxlLCBiUHJvZHVjdCkpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhhUHJvZHVjdCwg
YlByb2R1Y3QpOworCisgICAgYXV0byBhUXVvdGllbnQgPSBhLm1fdmFsdWUgLyBhLm1fc2NhbGU7
CisgICAgYXV0byBiUXVvdGllbnQgPSBiLm1fdmFsdWUgLyBiLm1fc2NhbGU7CisgICAgaWYgKGFR
dW90aWVudCAhPSBiUXVvdGllbnQpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhhUXVvdGllbnQs
IGJRdW90aWVudCk7CiAKLSAgICBpbnQ2NF90IHJoc1dob2xlID0gcmhzLm1fdGltZVZhbHVlIC8g
cmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzV2hvbGUgPSBtX3RpbWVWYWx1ZSAvIG1f
dGltZVNjYWxlOwotICAgIGlmIChsaHNXaG9sZSA+IHJoc1dob2xlKQotICAgICAgICByZXR1cm4g
R3JlYXRlclRoYW47Ci0gICAgaWYgKGxoc1dob2xlIDwgcmhzV2hvbGUpCi0gICAgICAgIHJldHVy
biBMZXNzVGhhbjsKLQotICAgIGludDY0X3QgcmhzUmVtYWluID0gcmhzLm1fdGltZVZhbHVlICUg
cmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzUmVtYWluID0gbV90aW1lVmFsdWUgJSBt
X3RpbWVTY2FsZTsKLSAgICBsaHNGYWN0b3IgPSBsaHNSZW1haW4gKiByaHMubV90aW1lU2NhbGU7
Ci0gICAgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90aW1lU2NhbGU7Ci0KLSAgICBpZiAobGhz
RmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgcmV0dXJu
IGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47CisgICAgYXV0
byBhUmVtYWluZGVyID0gYS5tX3ZhbHVlICUgYS5tX3NjYWxlICogYS5tX3NjYWxlOworICAgIGF1
dG8gYlJlbWFpbmRlciA9IGIubV92YWx1ZSAlIGIubV9zY2FsZSAqIGIubV9zY2FsZTsKKyAgICBy
ZXR1cm4gb3JkZXJpbmcoYVJlbWFpbmRlciwgYlJlbWFpbmRlcik7CiB9CiAKLWJvb2wgTWVkaWFU
aW1lOjppc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiBhLCBjb25zdCBNZWRpYVRpbWUmIGIpIGNv
bnN0Citib29sIE1lZGlhVGltZTo6aXNCZXR3ZWVuKE1lZGlhVGltZSBhLCBNZWRpYVRpbWUgYikg
Y29uc3QKIHsKICAgICBpZiAoYSA+IGIpCiAgICAgICAgIHJldHVybiAqdGhpcyA+IGIgJiYgKnRo
aXMgPCBhOwogICAgIHJldHVybiAqdGhpcyA+IGEgJiYgKnRoaXMgPCBiOwogfQogCi1jb25zdCBN
ZWRpYVRpbWUmIE1lZGlhVGltZTo6emVyb1RpbWUoKQotewotICAgIHN0YXRpYyBjb25zdCBNZWRp
YVRpbWUgdGltZSgwLCAxLCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1l
ZGlhVGltZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1l
ZGlhVGltZSB0aW1lKC0xLCAxLCAwKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVk
aWFUaW1lJiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMg
Y29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgUG9zaXRpdmVJbmZpbml0ZSB8IFZhbGlkKTsKLSAg
ICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6Om5lZ2F0aXZl
SW5maW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoLTEsIDEs
IE5lZ2F0aXZlSW5maW5pdGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0
IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpCi17Ci0gICAgc3RhdGljIGNv
bnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIEluZGVmaW5pdGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJu
IHRpbWU7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6OnRvVGltZVNjYWxlKHVpbnQzMl90IHRp
bWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykgY29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6
OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdNb2RlIG1vZGUpIGNvbnN0
CiB7CiAgICAgTWVkaWFUaW1lIHJlc3VsdCA9ICp0aGlzOwotICAgIHJlc3VsdC5zZXRUaW1lU2Nh
bGUodGltZVNjYWxlLCBmbGFncyk7CisgICAgcmVzdWx0LnNldFRpbWVTY2FsZSh0aW1lU2NhbGUs
IG1vZGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTWVkaWFUaW1lOjpzZXRUaW1l
U2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ0ZsYWdzIGZsYWdzKQordm9pZCBNZWRp
YVRpbWU6OnNldFRpbWVTY2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nTW9kZSBtb2Rl
KQogewogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgICp0aGlzID0gTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUsIHRpbWVTY2FsZSk7Cisg
ICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJs
ZSwgdGltZVNjYWxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghdGltZVNj
YWxlKSB7Ci0gICAgICAgICp0aGlzID0gbV90aW1lVmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICp0aGlzID0gbV92YWx1
ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh0aW1lU2NhbGUgPT0gbV90aW1lU2Nh
bGUpCisgICAgaWYgKHRpbWVTY2FsZSA9PSBtX3NjYWxlKQogICAgICAgICByZXR1cm47CiAKICAg
ICB0aW1lU2NhbGUgPSBzdGQ6Om1pbihNYXhpbXVtVGltZVNjYWxlLCB0aW1lU2NhbGUpOwogCi0g
ICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8SW50MTI4PihtX3RpbWVWYWx1ZSkgKiB0
aW1lU2NhbGU7Ci0gICAgaW50NjRfdCByZW1haW5kZXIgPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihu
ZXdWYWx1ZSAlIG1fdGltZVNjYWxlKTsKLSAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlIC8gbV90aW1l
U2NhbGU7CisgICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8SW50MTI4PihtX3ZhbHVl
KSAqIHRpbWVTY2FsZTsKKyAgICBpbnQ2NF90IHJlbWFpbmRlciA9IHN0YXRpY19jYXN0PGludDY0
X3Q+KG5ld1ZhbHVlICUgbV9zY2FsZSk7CisgICAgbmV3VmFsdWUgPSBuZXdWYWx1ZSAvIG1fc2Nh
bGU7CiAKICAgICBpZiAobmV3VmFsdWUgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
aW4oKSkgewogICAgICAgICAqdGhpcyA9IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CkBAIC01MDMs
NDIgKzQyNCw0MiBAQCB2b2lkIE1lZGlhVGltZTo6c2V0VGltZVNjYWxlKHVpbnQzMl90IHRpbWVT
Y2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fdGltZVZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obmV3VmFsdWUpOwotICAgIHN0ZDo6
c3dhcChtX3RpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG5ld1ZhbHVlKTsKKyAgICBhdXRvIG9sZFRpbWVTY2FsZSA9IHN0ZDo6ZXhjaGFu
Z2UobV9zY2FsZSwgdGltZVNjYWxlKTsKIAogICAgIGlmICghcmVtYWluZGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3RpbWVGbGFncyB8PSBIYXNCZWVuUm91bmRlZDsKLSAgICBzd2l0Y2gg
KGZsYWdzKSB7Ci0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvOgotICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGxhYnMocmVtYWluZGVyKSkgKiAyID49IHN0
YXRpY19jYXN0PGludDY0X3Q+KHRpbWVTY2FsZSkpIHsKKyAgICBtX2ZsYWdzLmFkZChIYXNCZWVu
Um91bmRlZCk7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6Okhh
bGZBd2F5RnJvbVplcm86CisgICAgICAgIGlmIChzdGQ6OmFicyhyZW1haW5kZXIpICogMiA+PSBv
bGRUaW1lU2NhbGUpIHsKICAgICAgICAgICAgIC8vIHJvdW5kIHVwIChhd2F5IGZyb20gemVybykK
ICAgICAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgICAgIG1fdGltZVZh
bHVlLS07CisgICAgICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIG1fdGltZVZhbHVlKys7CisgICAgICAgICAgICAgICAgKyttX3ZhbHVlOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dh
cmRaZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUb3dhcmRaZXJvOgogICAgICAgICBicmVh
azsKIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvOgorICAgIGNhc2UgUm91
bmRpbmdNb2RlOjpBd2F5RnJvbVplcm86CiAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQotICAg
ICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAgICAgICAgICAgIC0tbV92YWx1ZTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICsrbV92YWx1ZTsK
ICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZl
SW5maW5pdHk6CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6
CiAgICAgICAgIGlmIChyZW1haW5kZXIgPiAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsK
KyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNh
c2UgUm91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToKKyAgICBjYXNlIFJvdW5k
aW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToKICAgICAgICAgaWYgKHJlbWFpbmRlciA8
IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZS0tOworICAgICAgICAgICAgLS1tX3ZhbHVlOwog
ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC01NDcsNyArNDY4LDcgQEAgdm9pZCBNZWRpYVRp
bWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoInsiKTsK
ICAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIG91dC5wcmludChtX3RpbWVWYWx1
ZSwgIi8iLCBtX3RpbWVTY2FsZSwgIiA9ICIpOworICAgICAgICBvdXQucHJpbnQobV92YWx1ZSwg
Ii8iLCBtX3NjYWxlLCAiID0gIik7CiAgICAgb3V0LnByaW50KHRvRG91YmxlKCksICJ9Iik7CiB9
CiAKQEAgLTU1Niw3ICs0NzcsNyBAQCBTdHJpbmcgTWVkaWFUaW1lOjp0b1N0cmluZygpIGNvbnN0
CiAgICAgY29uc3QgY2hhciogaW52YWxpZCA9IGlzSW52YWxpZCgpID8gIiwgaW52YWxpZCIgOiAi
IjsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
J3snLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKCd7
JywgbV90aW1lVmFsdWUsICcvJywgbV90aW1lU2NhbGUsICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZh
bGlkLCAnfScpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV92YWx1ZSwgJy8nLCBtX3Nj
YWxlLCAiID0gIiwgdG9Eb3VibGUoKSwgaW52YWxpZCwgJ30nKTsKIH0KIAogUmVmPEpTT046Ok9i
amVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdApAQCAtNTc5LDkgKzUwMCw5IEBA
IFJlZjxKU09OOjpPYmplY3Q+IE1lZGlhVGltZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKICAgICBl
bHNlCiAgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfcywgdG9Eb3VibGUoKSk7CiAK
LSAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9yIl9zLCBzdGF0aWNfY2FzdDxkb3VibGU+
KG1fdGltZVZhbHVlKSk7Ci0gICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRvciJfcywg
bV90aW1lU2NhbGUpOwotICAgIG9iamVjdC0+c2V0SW50ZWdlcigiZmxhZ3MiX3MsIG1fdGltZUZs
YWdzKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9yIl9zLCBtX3ZhbHVlKTsKKyAg
ICBvYmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9yIl9zLCBtX3NjYWxlKTsKKyAgICBvYmpl
Y3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX2ZsYWdzLnRvUmF3KCkpOwogCiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KQEAgLTU5MSwzMyArNTEyLDI4IEBAIFN0cmluZyBNZWRpYVRpbWU6OnRvSlNP
TlN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRvSlNPTk9iamVjdCgpLT50b0pTT05TdHJpbmco
KTsKIH0KIAotTWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocykKK01lZGlhVGltZSBh
YnMoTWVkaWFUaW1lIHRpbWUpCiB7Ci0gICAgaWYgKHJocy5pc0ludmFsaWQoKSkKLSAgICAgICAg
cmV0dXJuIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKLSAgICBpZiAocmhzLmlzTmVnYXRpdmVJ
bmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICBpZiAodGltZS5pc05l
Z2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZp
bml0ZVRpbWUoKTsKLSAgICBpZiAocmhzLmhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVy
biBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZmFicyhyaHMubV90aW1lVmFsdWVBc0RvdWJs
ZSkpOwotCi0gICAgTWVkaWFUaW1lIHZhbCA9IHJoczsKLSAgICB2YWwubV90aW1lVmFsdWUgPSBz
dGQ6OmFicyhyaHMubV90aW1lVmFsdWUpOwotICAgIHJldHVybiB2YWw7CisgICAgaWYgKHRpbWUu
aGFzRG91YmxlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERv
dWJsZShzdGQ6OmFicyh0aW1lLm1fdmFsdWVBc0RvdWJsZSkpOworICAgIE1lZGlhVGltZSByZXN1
bHQgPSB0aW1lOworICAgIHJlc3VsdC5tX3ZhbHVlID0gc3RkOjphYnMocmVzdWx0Lm1fdmFsdWUp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmluZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09O
U3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0KICAgICBvYmplY3QtPnNldE9iamVjdCgic3RhcnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVj
dCgpKTsKICAgICBvYmplY3QtPnNldE9iamVjdCgiZW5kIl9zLCBlbmQudG9KU09OT2JqZWN0KCkp
OwotCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiB9CiAKICNpZm5kZWYgTkRF
QlVHCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBN
ZWRpYVRpbWUmIHRpbWUpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVh
bSwgTWVkaWFUaW1lIHRpbWUpCiB7CiAgICAgcmV0dXJuIHN0cmVhbSA8PCB0aW1lLnRvSlNPTlN0
cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAppbmRleCA3MWFjZjMyOWViMzk4OTMzNTEyZmQ3ZjNmNThk
NjBiZWNmZjIzYzUwLi40NDEyMzY0MDIwNjVlYjA0YWYzYjMzMjA3N2E1OGJiMjMwMzgwNTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9NZWRpYVRpbWUuaApAQCAtMzAsMjEgKzMwLDE2IEBACiAKICNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5j
bHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50U3RyZWFtOwogCi1jbGFzcyBX
VEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGZpbmFsIHsKK2NsYXNzIE1lZGlhVGltZSBmaW5h
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZW51bSB7Cisg
ICAgZW51bSBGbGFnIDogdWludDhfdCB7CiAgICAgICAgIFZhbGlkID0gMSA8PCAwLAogICAgICAg
ICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwKICAgICAgICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEg
PDwgMiwKQEAgLTUyLDY3ICs0Nyw2NSBAQCBwdWJsaWM6CiAgICAgICAgIEluZGVmaW5pdGUgPSAx
IDw8IDQsCiAgICAgICAgIERvdWJsZVZhbHVlID0gMSA8PCA1LAogICAgIH07Ci0KLSAgICBjb25z
dGV4cHIgTWVkaWFUaW1lKCk7Ci0gICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVl
LCB1aW50MzJfdCBzY2FsZSwgdWludDhfdCBmbGFncyA9IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUo
Y29uc3QgTWVkaWFUaW1lJiByaHMpOwotCi0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRo
RmxvYXQoZmxvYXQgZmxvYXRUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhG
bG9hdChmbG9hdCBmbG9hdFRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0gICAgc3RhdGljIE1l
ZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lKTsKLSAgICBzdGF0aWMg
TWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUsIHVpbnQzMl90IHRp
bWVTY2FsZSk7Ci0KLSAgICBmbG9hdCB0b0Zsb2F0KCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91
YmxlKCkgY29uc3Q7Ci0KLSAgICBNZWRpYVRpbWUmIG9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUm
IHJocyk7Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvcis9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7
IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvci09
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzIC0gcmhzOyB9Ci0g
ICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAg
TWVkaWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVk
aWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0OwotICAgIE1lZGlhVGltZSBvcGVyYXRvciooaW50MzJf
dCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0
IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBMZXNzVGhhbjsgfQotICAgIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gR3Jl
YXRlclRoYW47IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNv
bnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0g
RXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29u
c3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87IH0KLSAgICBib29sIG9wZXJhdG9y
PD0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA8PSBF
cXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLSAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVmIGVudW0geworICAgIGNvbnN0ZXhwciBN
ZWRpYVRpbWUoKSA6IE1lZGlhVGltZSB7IGludDY0X3QgeyB9LCBEZWZhdWx0VGltZVNjYWxlIH0g
eyB9CisgICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2Fs
ZSwgT3B0aW9uU2V0PEZsYWc+ID0geyBWYWxpZCB9KTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCB2YWx1ZSk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZh
bHVlLCB1aW50MzJfdCBzY2FsZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRp
YVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFsdWUpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlLCB1aW50
MzJfdCBzY2FsZSk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9hdCgpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoKSBjb25zdDsKKwor
ICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShNZWRpYVRpbWUgcmhzKSB7IHJldHVybiAqdGhpcyA9
ICp0aGlzICsgcmhzOyB9CisgICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KE1lZGlhVGltZSByaHMp
IHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
TWVkaWFUaW1lIG9wZXJhdG9yKyhNZWRpYVRpbWUpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBNZWRpYVRpbWUgb3BlcmF0b3ItKE1lZGlhVGltZSkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvci0oKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90KSBjb25zdDsKKyAgICBib29sIG9wZXJh
dG9yPChNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gTGVzc1Ro
YW47IH0KKyAgICBib29sIG9wZXJhdG9yPihNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVybiBj
b21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KKyAgICBib29sIG9wZXJhdG9yIT0oTWVkaWFU
aW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpICE9IEVxdWFsVG87IH0KKyAgICBi
b29sIG9wZXJhdG9yPT0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMp
ID09IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPj0oTWVkaWFUaW1lIHJocykgY29uc3Qg
eyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPD0o
TWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpIDw9IEVxdWFsVG87IH0K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OworCisgICAgZW51
bSBDb21wYXJpc29uRmxhZ3MgewogICAgICAgICBMZXNzVGhhbiA9IC0xLAogICAgICAgICBFcXVh
bFRvID0gMCwKICAgICAgICAgR3JlYXRlclRoYW4gPSAxLAotICAgIH0gQ29tcGFyaXNvbkZsYWdz
OworICAgIH07CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWU6OkNvbXBh
cmlzb25GbGFncyBvcmRlcmluZyhNZWRpYVRpbWUsIE1lZGlhVGltZSk7CisgICAgQ29tcGFyaXNv
bkZsYWdzIGNvbXBhcmUoTWVkaWFUaW1lIG90aGVyKSBjb25zdCB7IHJldHVybiBvcmRlcmluZygq
dGhpcywgb3RoZXIpOyB9CiAKLSAgICBDb21wYXJpc29uRmxhZ3MgY29tcGFyZShjb25zdCBNZWRp
YVRpbWUmIHJocykgY29uc3Q7Ci0gICAgYm9vbCBpc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiwg
Y29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNC
ZXR3ZWVuKE1lZGlhVGltZSwgTWVkaWFUaW1lKSBjb25zdDsKIAotICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFsaWQ7IH0KKyAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFZhbGlkKTsgfQogICAgIGJvb2wgaXNJ
bnZhbGlkKCkgY29uc3QgeyByZXR1cm4gIWlzVmFsaWQoKTsgfQotICAgIGJvb2wgaGFzQmVlblJv
dW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEhhc0JlZW5Sb3VuZGVkOyB9Ci0g
ICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAm
IFBvc2l0aXZlSW5maW5pdGU7IH0KLSAgICBib29sIGlzTmVnYXRpdmVJbmZpbml0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgTmVnYXRpdmVJbmZpbml0ZTsgfQotICAgIGJvb2wgaXNJ
bmRlZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBJbmRlZmluaXRlOyB9Cisg
ICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMo
SGFzQmVlblJvdW5kZWQpOyB9CisgICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFBvc2l0aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBp
c05lZ2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKE5lZ2F0
aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBpc0luZGVmaW5pdGUoKSBjb25zdCB7IHJldHVybiBt
X2ZsYWdzLmNvbnRhaW5zKEluZGVmaW5pdGUpOyB9CiAgICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0
IHsgcmV0dXJuICFpc0ludmFsaWQoKSAmJiAhaXNJbmRlZmluaXRlKCkgJiYgIWlzUG9zaXRpdmVJ
bmZpbml0ZSgpICYmICFpc05lZ2F0aXZlSW5maW5pdGUoKTsgfQotICAgIGJvb2wgaGFzRG91Ymxl
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIERvdWJsZVZhbHVlOyB9Ci0gICAg
dWludDhfdCB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFnczsgfQorICAgIGJv
b2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKERvdWJs
ZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxGbGFnPiB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzOyB9CiAKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiB6ZXJvVGltZSgpOwot
ICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGludmFsaWRUaW1lKCk7Ci0gICAgc3RhdGljIGNv
bnN0IE1lZGlhVGltZSYgcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBzdGF0aWMgY29uc3Qg
TWVkaWFUaW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRp
YVRpbWUmIGluZGVmaW5pdGVUaW1lKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUg
emVyb1RpbWUoKSB7IHJldHVybiB7IDAsIDEsIFZhbGlkIH07IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIE1lZGlhVGltZSBpbnZhbGlkVGltZSgpIHsgcmV0dXJuIHsgLTEsIDEsIHsgfSB9OyB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJl
dHVybiB7IDAsIDEsIHsgUG9zaXRpdmVJbmZpbml0ZSwgVmFsaWQgfSB9OyB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBNZWRpYVRpbWUgbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVybiB7IC0x
LCAxLCB7IE5lZ2F0aXZlSW5maW5pdGUsIFZhbGlkIH0gfTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgTWVkaWFUaW1lIGluZGVmaW5pdGVUaW1lKCkgeyByZXR1cm4geyAwLCAxLCB7IEluZGVmaW5p
dGUsIFZhbGlkIH0gfTsgfQogCi0gICAgY29uc3QgaW50NjRfdCYgdGltZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV90aW1lVmFsdWU7IH0KLSAgICBjb25zdCB1aW50MzJfdCYgdGltZVNjYWxlKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKyAgICBpbnQ2NF90IHRpbWVWYWx1ZSgpIGNv
bnN0IHsgQVNTRVJUKCFoYXNEb3VibGVWYWx1ZSgpKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB1
aW50MzJfdCB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAKLSAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0
OwotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKLSAgICBSZWY8SlNPTjo6T2JqZWN0
PiB0b0pTT05PYmplY3QoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRv
SlNPTlN0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8SlNPTjo6T2Jq
ZWN0PiB0b0pTT05PYmplY3QoKSBjb25zdDsKIAogICAgIC8vIE1ha2UgdGhlIGZvbGxvd2luZyBj
YXN0cyBlcnJvcnM6CiAgICAgb3BlcmF0b3IgZG91YmxlKCkgY29uc3QgPSBkZWxldGU7CkBAIC0x
MjAsOTMgKzExMyw5OSBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgaW50KCkgY29uc3QgPSBkZWxl
dGU7CiAgICAgTWVkaWFUaW1lKGludCkgPSBkZWxldGU7CiAKLSAgICBmcmllbmQgV1RGX0VYUE9S
VF9QUklWQVRFIE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOworICAgIGZyaWVu
ZCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGFicyhNZWRpYVRpbWUpOwogCi0gICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAwMDAwMDsKLSAgICBzdGF0
aWMgY29uc3QgdWludDMyX3QgTWF4aW11bVRpbWVTY2FsZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAwMDAwMDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1heGltdW1UaW1lU2NhbGU7CiAKLSAgICBlbnVt
IGNsYXNzIFJvdW5kaW5nRmxhZ3MgewotICAgICAgICBIYWxmQXdheUZyb21aZXJvID0gMCwKKyAg
ICBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSB7CisgICAgICAgIEhhbGZBd2F5RnJvbVplcm8sCiAg
ICAgICAgIFRvd2FyZFplcm8sCiAgICAgICAgIEF3YXlGcm9tWmVybywKICAgICAgICAgVG93YXJk
UG9zaXRpdmVJbmZpbml0eSwKICAgICAgICAgVG93YXJkTmVnYXRpdmVJbmZpbml0eSwKICAgICB9
OwotCi0gICAgTWVkaWFUaW1lIHRvVGltZVNjYWxlKHVpbnQzMl90LCBSb3VuZGluZ0ZsYWdzID0g
Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50MzJfdCBzY2FsZSwgUm91bmRpbmdNb2Rl
ID0gUm91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKSBjb25zdDsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBNZWRpYVRpbWUmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldFRpbWVTY2FsZSh1
aW50MzJfdCwgUm91bmRpbmdGbGFncyA9IFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8p
OworICAgIGVudW0gVXNlRG91YmxlRmxhZyB7IFVzZURvdWJsZSB9OworICAgIGNvbnN0ZXhwciBN
ZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91YmxlIHZhbHVlKTsKKworICAgIHZvaWQgc2V0VGlt
ZVNjYWxlKHVpbnQzMl90LCBSb3VuZGluZ01vZGUgPSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJv
bVplcm8pOwogCiAgICAgdW5pb24gewotICAgICAgICBpbnQ2NF90IG1fdGltZVZhbHVlOwotICAg
ICAgICBkb3VibGUgbV90aW1lVmFsdWVBc0RvdWJsZTsKKyAgICAgICAgaW50NjRfdCBtX3ZhbHVl
OworICAgICAgICBkb3VibGUgbV92YWx1ZUFzRG91YmxlOwogICAgIH07Ci0gICAgdWludDMyX3Qg
bV90aW1lU2NhbGU7Ci0gICAgdWludDhfdCBtX3RpbWVGbGFnczsKKyAgICB1aW50MzJfdCBtX3Nj
YWxlIHsgRGVmYXVsdFRpbWVTY2FsZSB9OworICAgIE9wdGlvblNldDxGbGFnPiBtX2ZsYWdzIHsg
VmFsaWQgfTsKIH07CiAKLWNvbnN0ZXhwciBNZWRpYVRpbWU6Ok1lZGlhVGltZSgpCi0gICAgOiBt
X3RpbWVWYWx1ZSgwKQotICAgICwgbV90aW1lU2NhbGUoRGVmYXVsdFRpbWVTY2FsZSkKLSAgICAs
IG1fdGltZUZsYWdzKFZhbGlkKQotewotfQotCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRp
bWUoaW50NjRfdCB2YWx1ZSwgdWludDMyX3Qgc2NhbGUsIHVpbnQ4X3QgZmxhZ3MpCi0gICAgOiBt
X3RpbWVWYWx1ZSh2YWx1ZSkKLSAgICAsIG1fdGltZVNjYWxlKHNjYWxlKQotICAgICwgbV90aW1l
RmxhZ3MoZmxhZ3MpCi17Ci0gICAgaWYgKHNjYWxlIHx8ICEoZmxhZ3MgJiBWYWxpZCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgICp0aGlzID0gdmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci19CitXVEZfRVhQT1JUX1BSSVZBVEUgTWVk
aWFUaW1lIGFicyhNZWRpYVRpbWUpOwogCi1pbmxpbmUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQz
Ml90IGxocywgY29uc3QgTWVkaWFUaW1lJiByaHMpIHsgcmV0dXJuIHJocy5vcGVyYXRvcioobGhz
KTsgfQotCi1XVEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIE1lZGlhVGltZSBhYnMoY29uc3QgTWVk
aWFUaW1lJiByaHMpOwotCi1zdHJ1Y3QgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZVJhbmdl
IHsKK3N0cnVjdCBNZWRpYVRpbWVSYW5nZSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogCi0gICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBNZWRp
YVRpbWUgc3RhcnQ7Ci0gICAgY29uc3QgTWVkaWFUaW1lIGVuZDsKKyAgICBNZWRpYVRpbWUgc3Rh
cnQ7CisgICAgTWVkaWFUaW1lIGVuZDsKIH07CiAKLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12
b2lkIE1lZGlhVGltZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Citjb25zdGV4cHIg
TWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgdWludDMyX3Qgc2NhbGUsIE9wdGlv
blNldDxGbGFnPiBmbGFncykKKyAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgLCBtX3NjYWxlKHNj
YWxlKQorICAgICwgbV9mbGFncyhmbGFncykKK3sKKyAgICBpZiAoIShzY2FsZSB8fCAhKGZsYWdz
ICYgVmFsaWQpKSkKKyAgICAgICAgKnRoaXMgPSB2YWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRl
VGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIE1lZGlhVGltZSBvcGVyYXRvciooY29uc3QgVCYgYSwgTWVkaWFUaW1lIGIpCiB7
Ci0gICAgZW5jb2RlciA8PCBtX3RpbWVWYWx1ZSA8PCBtX3RpbWVTY2FsZSA8PCBtX3RpbWVGbGFn
czsKKyAgICByZXR1cm4gYiAqIGE7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1ib29s
IE1lZGlhVGltZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhVGltZSYgdGltZSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgTWVkaWFUaW1lOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUodGltZS5tX3RpbWVW
YWx1ZSkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3RpbWVTY2FsZSkKLSAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3RpbWVGbGFncyk7CisgICAgZW5jb2RlciA8PCBt
X3ZhbHVlIDw8IG1fc2NhbGUgPDwgbV9mbGFnczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4gYm9vbCBNZWRpYVRpbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVRpbWUm
IHRpbWUpCit7CisgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRpbWUubV92YWx1ZSkKKyAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3NjYWxlKQorICAgICAgICAmJiBkZWNvZGVyLmRl
Y29kZSh0aW1lLm1fZmxhZ3MpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExvZ0Fy
Z3VtZW50OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxNZWRpYVRpbWU+IHsKLSAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgeyByZXR1cm4g
dGltZS50b0pTT05TdHJpbmcoKTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoTWVkaWFU
aW1lIHRpbWUpIHsgcmV0dXJuIHRpbWUudG9KU09OU3RyaW5nKCk7IH0KIH07CiB0ZW1wbGF0ZTw+
IHN0cnVjdCBMb2dBcmd1bWVudDxNZWRpYVRpbWVSYW5nZT4gewogICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmcoY29uc3QgTWVkaWFUaW1lUmFuZ2UmIHJhbmdlKSB7IHJldHVybiByYW5nZS50b0pT
T05TdHJpbmcoKTsgfQogfTsKIAogI2lmbmRlZiBOREVCVUcKLVdURl9FWFBPUlRfUFJJVkFURSBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBNZWRpYVRpbWUmKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBNZWRp
YVRpbWUpOwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8TWVkaWFUaW1l
OjpGbGFnPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgTWVkaWFU
aW1lOjpGbGFnLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6OlZhbGlkLAorICAgICAgICBNZWRp
YVRpbWU6OkZsYWc6Okhhc0JlZW5Sb3VuZGVkLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6OlBv
c2l0aXZlSW5maW5pdGUsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6TmVnYXRpdmVJbmZpbml0
ZSwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpJbmRlZmluaXRlLAorICAgICAgICBNZWRpYVRp
bWU6OkZsYWc6OkRvdWJsZVZhbHVlCisgICAgPjsKK307CisKIH0KIAogdXNpbmcgV1RGOjpNZWRp
YVRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9TZWNvbmRzLmgKaW5kZXggZDI4MmRiYmY3MTViZTc0Mjc4OWVhMTBmMWNjYjI5YWQxNDUz
NTY0Zi4uMWEyOTY0YzZkZWExNTVkOTM2ZTA0YjUyZTMzMjNmMzJhZjE2YjRlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzcyLDQgKzM3MywzIEBAIGlubGlu
ZSBib29sIGlzZmluaXRlKFdURjo6U2Vjb25kcyBzZWNvbmRzKQogfSAvLyBuYW1lc3BhY2Ugc3Rk
CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OnNlY29uZHNfbGl0ZXJhbHM7Ci11c2luZyBXVEY6OlNl
Y29uZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKaW5kZXggZmQ1NTliMjQyZGRm
ZmQ1ZThkOGYxMzNlYzQxM2JhM2FiNWI1MjY0Ny4uZTVhM2NiNjM1ZWFmMWNhODg5ZGQyMjA5NzUy
NWZjZDQyOGUzMTg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAtMzIs
OSArMzIsOSBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
IAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggNDQ4ZGRl
ZTIxNjBlZjE4Y2E1ZTA2NjEzOTBlNTk4ZDUzYmM1NGQyYS4uMGM4ZjMzMTUwYjE1MzQ4NGZkNGMx
YzhhZDAwMWE0OWZiYmZhYWY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC05MjIsNyArOTIzLDcgQEAgYm9vbCBwb3J0QWxsb3dl
ZChjb25zdCBVUkwmIHVybCkKIAogICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hl
cyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KICAgICAvLyBTZWUg
aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBm
b3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tlZFBv
cnRMaXN0W10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBibG9ja2VkUG9ydExp
c3RbXSA9IHsKICAgICAgICAgMSwgICAgLy8gdGNwbXV4CiAgICAgICAgIDcsICAgIC8vIGVjaG8K
ICAgICAgICAgOSwgICAgLy8gZGlzY2FyZApAQCAtMTAwNiwxMCArMTAwNywxMCBAQCBib29sIHBv
cnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBs
ZSBhZGRpdGlvbl0KICAgICAgICAgMTAwODAsIC8vIGFtYW5kYQogICAgIH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBibG9ja2VkUG9ydFNldCB7IGJsb2NrZWRQb3J0TGlz
dCB9OwogCiAgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlz
dCwgYWxsb3cgaXQuCi0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4oYmxvY2tl
ZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSkpOwotICAgIGlmICghc3RkOjpi
aW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tl
ZFBvcnRMaXN0KSwgcG9ydC52YWx1ZSgpKSkKKyAgICBpZiAoIWJsb2NrZWRQb3J0U2V0LmNvbnRh
aW5zKCpwb3J0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBBbGxvdyBwb3J0cyAy
MSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRvZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9XYWxsVGltZS5oIGIvU291cmNlL1dURi93dGYvV2FsbFRpbWUuaAppbmRleCA1
NDM4Y2MwMWI2MWFhOWY2YzdjNDU2ZTVmODkxZTQ0NjZmNzMzYmJjLi4xY2U4ZDM3NTU2MWQyOWI1
ODk2MWJlM2ZjZjE5Mzk0MDRmZTg4OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XYWxs
VGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Nsb2NrVHlwZS5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0dlbmVyaWNUaW1lTWl4aW4uaD4KICNpbmNsdWRl
IDx3dGYvSW50MTI4Lmg+CiAKQEAgLTk5LDUgKzEwMCwzIEBAIGlubGluZSBib29sIGlzZmluaXRl
KFdURjo6V2FsbFRpbWUgdGltZSkKIH0KIAogfSAvLyBuYW1lc3BhY2Ugc3RkCi0KLXVzaW5nIFdU
Rjo6V2FsbFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50Q29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rl
ci5oCmluZGV4IGFmYzMzZjM4ZDQyMzM1YmQ5ZTYxMjZhNGE3OGE1MDcxMGRiMjYwOGEuLjIwN2Zh
MDQ0NjlmYjk0ODM4NzY4ZTlmNDFhMmEzMjg5N2Y1Y2IwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1Ro
cmVhZGluZ1BPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNw
cAppbmRleCBkOTI0NDkwZDFiNTdmM2VlMDZlZTVlYWQ4YTJkM2MxMWMyMGNiNWQxLi42ZDM0MGU0
NmYyYjI4NDQwYjExM2VkNzcwOWVhMzcxMDFhODJmODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgv
VGhyZWFkaW5nUE9TSVguY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1dURkNvbmZpZy5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9Xb3JkTG9jay5oPgogCiAjaWYgT1MoTElOVVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90aHJlYWRzL1NpZ25hbHMuaCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5o
CmluZGV4IDhiNDBjMTRjODQyM2ZkNGVjYmY2MzUwNmQ2MGJmZjFjMGZkODU2MGYuLjlmMTg2ZjYz
NTQ4NDFhNzU1YWJjMGQ4OWVjMzNmMGI1ZmUwZWY4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RocmVhZHMvU2lnbmFscy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFs
cy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBPUyhVTklYKQogCisjaW5jbHVkZSA8b3B0aW9u
YWw+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2lu
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4IGRjMjQ4OWZm
ODllOGY5Zjg5MTRiYzhlM2ZjMjk2NmY0ZGVlZTU3NGUuLmE5ZjU5NTI0YWZjNWNiYzczNmZiYzRl
ODE2ZGNkYmVkYzdmOTBhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRp
bmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCkBAIC05
NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgor
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5jcHAKaW5kZXggMDY1OTg0MDY4OWU0YWJiNTIyMGU1YmRkODA1MjNkNzQwMmY0
YWNlMi4uODg4YmVmMzIzNjgyZWEyMjk5N2VmNjQwOWEwZDcxZDg1NWZmZmVhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRp
bWVBVkZvdW5kYXRpb24uY3BwCkBAIC0zMiwzNyArMzIsMjggQEAKIAogbmFtZXNwYWNlIFBBTCB7
CiAKLXN0YXRpYyBib29sIENNVGltZUhhc0ZsYWdzKGNvbnN0IENNVGltZSYgY21UaW1lLCB1aW50
MzJfdCBmbGFncykKK01lZGlhVGltZSB0b01lZGlhVGltZShDTVRpbWUgdGltZSkKIHsKLSAgICBy
ZXR1cm4gKGNtVGltZS5mbGFncyAmIGZsYWdzKSA9PSBmbGFnczsKKyAgICBPcHRpb25TZXQ8TWVk
aWFUaW1lOjpGbGFnPiBmbGFnczsKKyAgICBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19W
YWxpZCkgeworICAgICAgICBmbGFncy5hZGQoTWVkaWFUaW1lOjpWYWxpZCk7CisgICAgICAgIGlm
ICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHkpCisgICAgICAgICAg
ICBmbGFncy5hZGQoTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBp
ZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5KQorICAgICAgICAg
ICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZSk7CisgICAgICAgIGVsc2Ug
aWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3NfSW5kZWZpbml0ZSkKKyAgICAgICAgICAgIGZs
YWdzLmFkZChNZWRpYVRpbWU6OkluZGVmaW5pdGUpOworICAgIH0KKyAgICByZXR1cm4gTWVkaWFU
aW1lKHRpbWUudmFsdWUsIHRpbWUudGltZXNjYWxlLCBmbGFncyk7CiB9CiAKLU1lZGlhVGltZSB0
b01lZGlhVGltZShjb25zdCBDTVRpbWUmIGNtVGltZSkKLXsKLSAgICB1aW50MzJfdCBmbGFncyA9
IDA7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkKSkK
LSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpWYWxpZDsKLSAgICBpZiAoQ01UaW1lSGFzRmxh
Z3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQgfCBrQ01UaW1lRmxhZ3NfSGFzQmVlblJvdW5k
ZWQpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6Okhhc0JlZW5Sb3VuZGVkOwotICAgIGlm
IChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFn
c19Qb3NpdGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpQb3NpdGl2
ZUluZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19W
YWxpZCB8IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0g
TWVkaWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRp
bWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKSkKLSAgICAg
ICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpJbmRlZmluaXRlOwotCi0gICAgcmV0dXJuIE1lZGlhVGlt
ZShjbVRpbWUudmFsdWUsIGNtVGltZS50aW1lc2NhbGUsIGZsYWdzKTsKLX0KLQotQ01UaW1lIHRv
Q01UaW1lKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lKQorQ01UaW1lIHRvQ01UaW1lKE1lZGlh
VGltZSBtZWRpYVRpbWUpCiB7CiAgICAgQ01UaW1lIHRpbWU7Ci0KICAgICBpZiAobWVkaWFUaW1l
Lmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHRpbWUgPSBDTVRpbWVNYWtlV2l0aFNlY29uZHMo
bWVkaWFUaW1lLnRvRG91YmxlKCksIG1lZGlhVGltZS50aW1lU2NhbGUoKSk7CiAgICAgZWxzZQog
ICAgICAgICB0aW1lID0gQ01UaW1lTWFrZShtZWRpYVRpbWUudGltZVZhbHVlKCksIG1lZGlhVGlt
ZS50aW1lU2NhbGUoKSk7Ci0KICAgICBpZiAobWVkaWFUaW1lLmlzVmFsaWQoKSkKICAgICAgICAg
dGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfVmFsaWQ7CiAgICAgaWYgKG1lZGlhVGltZS5oYXNC
ZWVuUm91bmRlZCgpKQpAQCAtNzEsNyArNjIsNiBAQCBDTVRpbWUgdG9DTVRpbWUoY29uc3QgTWVk
aWFUaW1lJiBtZWRpYVRpbWUpCiAgICAgICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX1Bv
c2l0aXZlSW5maW5pdHk7CiAgICAgaWYgKG1lZGlhVGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkK
ICAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfTmVnYXRpdmVJbmZpbml0eTsKLQog
ICAgIHJldHVybiB0aW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCmluZGV4IGIzZGJlMTdh
YTliYzEyNTFkY2UyZWM4YWRlZTdjYjg0OTQ3OWJmNzAuLmEyYmNkYWU5ZjhlOTlkMGYwNGUzZjNj
M2VkMjBhM2YzNmEyOTA2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZm
b3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCkBAIC0zMiw4ICszMiw4
IEBACiAKIG5hbWVzcGFjZSBQQUwgewogCi1QQUxfRVhQT1JUIENNVGltZSB0b0NNVGltZShjb25z
dCBNZWRpYVRpbWUmKTsKLVBBTF9FWFBPUlQgTWVkaWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0IENN
VGltZSYpOworUEFMX0VYUE9SVCBDTVRpbWUgdG9DTVRpbWUoTWVkaWFUaW1lKTsKK1BBTF9FWFBP
UlQgTWVkaWFUaW1lIHRvTWVkaWFUaW1lKENNVGltZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggMGUxYWQ3MjQ1
ZmUxNmUxZTk2ZTNkYTFjYjU4NGI5YTRhNmQ4OWYzYi4uODQ0NmRiOTg1NTFlMGM1MzgyYTk2ZmY4
NDcxZmJiNjcyMzEwYzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xMTksMTAgKzExOSwxMCBAQCBzdGF0aWMgaW5saW5l
IEdhcExlbmd0aCBibGVuZEZ1bmMoY29uc3QgR2FwTGVuZ3RoJiBmcm9tLCBjb25zdCBHYXBMZW5n
dGgmIHRvLCBjbwogICAgIHJldHVybiBibGVuZChmcm9tLmxlbmd0aCgpLCB0by5sZW5ndGgoKSwg
Y29udGV4dCwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogfQogCi1zdGF0aWMgaW5saW5lIFRh
YlNpemUgYmxlbmRGdW5jKGNvbnN0IFRhYlNpemUmIGZyb20sIGNvbnN0IFRhYlNpemUmIHRvLCBj
b25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3N0YXRpYyBpbmxpbmUg
VGFiU2l6ZSBibGVuZEZ1bmMoVGFiU2l6ZSBmcm9tLCBUYWJTaXplIHRvLCBjb25zdCBDU1NQcm9w
ZXJ0eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9
IGJsZW5kKGZyb20udmFsdWUoKSwgdG8udmFsdWUoKSwgY29udGV4dCk7Ci0gICAgcmV0dXJuIHsg
YmxlbmRlZFZhbHVlIDwgMCA/IDAgOiBibGVuZGVkVmFsdWUsIGZyb20uaXNTcGFjZXMoKSA/IFNw
YWNlVmFsdWVUeXBlIDogTGVuZ3RoVmFsdWVUeXBlIH07CisgICAgYXV0byBibGVuZGVkVmFsdWUg
PSBibGVuZChmcm9tLnZhbHVlLCB0by52YWx1ZSwgY29udGV4dCk7CisgICAgcmV0dXJuIHsgYmxl
bmRlZFZhbHVlIDwgMCA/IDAgOiBibGVuZGVkVmFsdWUsIGZyb20uaXNTcGFjZXMgPyBUYWJTaXpl
OjpTcGFjZXMgOiBUYWJTaXplOjpMZW5ndGggfTsKIH0KIAogc3RhdGljIGlubGluZSBMZW5ndGhT
aXplIGJsZW5kRnVuYyhjb25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0
bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCkBAIC05NzgsMTAg
Kzk3OCw5IEBAIHByaXZhdGU6CiAgICAgLy8gaXQncyBvbmx5IHBvc3NpYmxlIGlmIHRoZXkncmUg
Ym90aCBub3QgYXV0by4KICAgICBib29sIGNhbkludGVycG9sYXRlKGNvbnN0IFJlbmRlclN0eWxl
JiBmcm9tLCBjb25zdCBSZW5kZXJTdHlsZSYgdG8sIENvbXBvc2l0ZU9wZXJhdGlvbikgY29uc3Qg
ZmluYWwKICAgICB7Ci0gICAgICAgIGJvb2wgZnJvbUlzQXV0byA9IHZhbHVlKGZyb20pLngoKS5p
c0F1dG8oKSAmJiB2YWx1ZShmcm9tKS55KCkuaXNBdXRvKCk7Ci0gICAgICAgIGJvb2wgdG9Jc0F1
dG8gPSB2YWx1ZSh0bykueCgpLmlzQXV0bygpICYmIHZhbHVlKHRvKS55KCkuaXNBdXRvKCk7Ci0K
LSAgICAgICAgcmV0dXJuICghZnJvbUlzQXV0byAmJiAhdG9Jc0F1dG8pOyAKKyAgICAgICAgYm9v
bCBmcm9tSXNBdXRvID0gdmFsdWUoZnJvbSkueC5pc0F1dG8oKSAmJiB2YWx1ZShmcm9tKS55Lmlz
QXV0bygpOworICAgICAgICBib29sIHRvSXNBdXRvID0gdmFsdWUodG8pLnguaXNBdXRvKCkgJiYg
dmFsdWUodG8pLnkuaXNBdXRvKCk7CisgICAgICAgIHJldHVybiAhZnJvbUlzQXV0byAmJiAhdG9J
c0F1dG87CiAgICAgfQogfTsKIApAQCAtMTI5MiwyMCArMTI5MSwyMCBAQCBzdGF0aWMgaW5saW5l
IHNpemVfdCBzaGFkb3dMaXN0TGVuZ3RoKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdykKICAgICBy
ZXR1cm4gY291bnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSogc2hhZG93
Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRh
KiBvdGhlclNoYWRvdykKK3N0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSYgc2hhZG93Rm9y
QmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBv
dGhlclNoYWRvdykKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVm
YXVsdFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVu
Z3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0
aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIGZhbHNlLCBDb2xvcjo6
dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+
IGRlZmF1bHRJbnNldFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZp
eGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhl
ZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgZmFsc2Us
IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hh
ZG93RGF0YT4gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExl
bmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5n
dGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpO
b3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5n
dGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4
ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSwgU2hhZG93U3R5bGU6Okluc2V0LCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKExl
bmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0g
fSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
U2hhZG93U3R5bGU6Ok5vcm1hbCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0
YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhl
ZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhl
ZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFdlYktpdEJveFNo
YWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlw
ZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlw
ZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRC
bGFjayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNl
dFdlYktpdEJveFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0s
IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5n
dGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIHRydWUsIENvbG9yOjp0
cmFuc3BhcmVudEJsYWNrKTsKIAogICAgIGlmIChzcmNTaGFkb3cpCi0gICAgICAgIHJldHVybiBz
cmNTaGFkb3c7CisgICAgICAgIHJldHVybiAqc3JjU2hhZG93OwogCiAgICAgaWYgKG90aGVyU2hh
ZG93LT5zdHlsZSgpID09IFNoYWRvd1N0eWxlOjpJbnNldCkKLSAgICAgICAgcmV0dXJuIG90aGVy
U2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRv
d0RhdGEuZ2V0KCkgOiAmZGVmYXVsdEluc2V0U2hhZG93RGF0YS5nZXQoKTsKKyAgICAgICAgcmV0
dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gZGVmYXVsdEluc2V0V2ViS2l0
Qm94U2hhZG93RGF0YS5nZXQoKSA6IGRlZmF1bHRJbnNldFNoYWRvd0RhdGEuZ2V0KCk7CiAKLSAg
ICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdFdlYktp
dEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CisgICAgcmV0
dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gZGVmYXVsdFdlYktpdEJveFNo
YWRvd0RhdGEuZ2V0KCkgOiBkZWZhdWx0U2hhZG93RGF0YS5nZXQoKTsKIH0KIAogY2xhc3MgUHJv
cGVydHlXcmFwcGVyU2hhZG93IGZpbmFsIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBl
ckJhc2UgewpAQCAtMTQyOCwxMSArMTQyNywxMSBAQCBwcml2YXRlOgogICAgICAgICBTaGFkb3dE
YXRhKiBsYXN0U2hhZG93ID0gbnVsbHB0cjsKIAogICAgICAgICB3aGlsZSAoc2hhZG93QSB8fCBz
aGFkb3dCKSB7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFk
b3dGb3JCbGVuZGluZyhzaGFkb3dBLCBzaGFkb3dCKTsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRv
d0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0IsIHNoYWRvd0EpOwor
ICAgICAgICAgICAgYXV0byYgc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwg
c2hhZG93Qik7CisgICAgICAgICAgICBhdXRvJiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGlu
ZyhzaGFkb3dCLCBzaGFkb3dBKTsKIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRv
d0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoc3JjU2hhZG93LCBkc3RTaGFkb3csIGNv
bnRleHQpOwotICAgICAgICAgICAgU2hhZG93RGF0YSogYmxlbmRlZFNoYWRvd1B0ciA9IGJsZW5k
ZWRTaGFkb3cuZ2V0KCk7CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1
bmMoJnNyY1NoYWRvdywgJmRzdFNoYWRvdywgY29udGV4dCk7CisgICAgICAgICAgICBhdXRvIGJs
ZW5kZWRTaGFkb3dQdHIgPSBibGVuZGVkU2hhZG93LmdldCgpOwogCiAgICAgICAgICAgICBpZiAo
IWxhc3RTaGFkb3cpCiAgICAgICAgICAgICAgICAgbmV3U2hhZG93RGF0YSA9IFdURk1vdmUoYmxl
bmRlZFNoYWRvdyk7CkBAIC0xNDQxLDggKzE0NDAsOCBAQCBwcml2YXRlOgogCiAgICAgICAgICAg
ICBsYXN0U2hhZG93ID0gYmxlbmRlZFNoYWRvd1B0cjsKIAotICAgICAgICAgICAgc2hhZG93QSA9
IHNoYWRvd0EgPyBzaGFkb3dBLT5uZXh0KCkgOiAwOwotICAgICAgICAgICAgc2hhZG93QiA9IHNo
YWRvd0IgPyBzaGFkb3dCLT5uZXh0KCkgOiAwOworICAgICAgICAgICAgc2hhZG93QSA9IHNoYWRv
d0EgPyBzaGFkb3dBLT5uZXh0KCkgOiBudWxscHRyOworICAgICAgICAgICAgc2hhZG93QiA9IHNo
YWRvd0IgPyBzaGFkb3dCLT5uZXh0KCkgOiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIG5ld1NoYWRvd0RhdGE7CkBAIC0xNDcxLDEzICsxNDcwLDE0IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgaW50IG1heExlbmd0aCA9IHN0ZDo6bWF4KGZyb21MZW5ndGgsIHRvTGVuZ3RoKTsK
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhMZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgY29uc3QgU2hhZG93RGF0YSogZnJvbVNoYWRvdyA9IGkgPCBmcm9tTGVuZ3RoID8gZnJvbVNo
YWRvd3NbaV0gOiAwOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogdG9TaGFkb3cgPSBp
IDwgdG9MZW5ndGggPyB0b1NoYWRvd3NbaV0gOiAwOworICAgICAgICAgICAgYXV0byBmcm9tU2hh
ZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IG51bGxwdHI7CisgICAgICAg
ICAgICBhdXRvIHRvU2hhZG93ID0gaSA8IHRvTGVuZ3RoID8gdG9TaGFkb3dzW2ldIDogbnVsbHB0
cjsKKworICAgICAgICAgICAgYXV0byYgc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoZnJv
bVNoYWRvdywgdG9TaGFkb3cpOworICAgICAgICAgICAgYXV0byYgZHN0U2hhZG93ID0gc2hhZG93
Rm9yQmxlbmRpbmcodG9TaGFkb3csIGZyb21TaGFkb3cpOwogCi0gICAgICAgICAgICBjb25zdCBT
aGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1No
YWRvdyk7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dG
b3JCbGVuZGluZyh0b1NoYWRvdywgZnJvbVNoYWRvdyk7CisgICAgICAgICAgICBhdXRvIGJsZW5k
ZWRTaGFkb3cgPSBibGVuZEZ1bmMoJnNyY1NoYWRvdywgJmRzdFNoYWRvdywgY29udGV4dCk7CiAK
LSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0g
YmxlbmRGdW5jKHNyY1NoYWRvdywgZHN0U2hhZG93LCBjb250ZXh0KTsKICAgICAgICAgICAgIC8v
IEluc2VydCBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpc3QgdG8gcHJlc2VydmUgdGhlIG9yZGVyLgog
ICAgICAgICAgICAgYmxlbmRlZFNoYWRvdy0+c2V0TmV4dChXVEZNb3ZlKG5ld1NoYWRvd0RhdGEp
KTsKICAgICAgICAgICAgIG5ld1NoYWRvd0RhdGEgPSBXVEZNb3ZlKGJsZW5kZWRTaGFkb3cpOwpA
QCAtMjM0OCwxOCArMjM0OCwxOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLWNsYXNzIFRhYlNp
emVQcm9wZXJ0eVdyYXBwZXIgZmluYWwgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyPGNvbnN0IFRh
YlNpemUmPiB7CitjbGFzcyBUYWJTaXplUHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFBy
b3BlcnR5V3JhcHBlcjxUYWJTaXplPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgVGFiU2l6ZVByb3BlcnR5V3JhcHBlcigpCi0gICAgICAgIDogUHJvcGVydHlX
cmFwcGVyPGNvbnN0IFRhYlNpemUmPihDU1NQcm9wZXJ0eVRhYlNpemUsICZSZW5kZXJTdHlsZTo6
dGFiU2l6ZSwgJlJlbmRlclN0eWxlOjpzZXRUYWJTaXplKQorICAgICAgICA6IFByb3BlcnR5V3Jh
cHBlcjxUYWJTaXplPihDU1NQcm9wZXJ0eVRhYlNpemUsICZSZW5kZXJTdHlsZTo6dGFiU2l6ZSwg
JlJlbmRlclN0eWxlOjpzZXRUYWJTaXplKQogICAgIHsKICAgICB9CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBjYW5JbnRlcnBvbGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVy
U3R5bGUmIHRvLCBDb21wb3NpdGVPcGVyYXRpb24pIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAg
ICByZXR1cm4gdmFsdWUoZnJvbSkuaXNTcGFjZXMoKSA9PSB2YWx1ZSh0bykuaXNTcGFjZXMoKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlKGZyb20pLmlzU3BhY2VzID09IHZhbHVlKHRvKS5pc1NwYWNl
czsKICAgICB9CiAKICAgICB2b2lkIGJsZW5kKFJlbmRlclN0eWxlJiBkZXN0aW5hdGlvbiwgY29u
c3QgUmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJlbmRlclN0eWxlJiB0bywgY29uc3QgQ1NTUHJv
cGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0IGZpbmFsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDE2NWJl
ZGRjMDJmZWQ4ODNiOWEyYTZkN2Q1MWIyNzRlMjQ5NTM4MzQuLmFhNGMyZjU4MjlhM2FlY2VkZTg4
MzMzNjk5MTIxZjhiYWQyYTU0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNTMzLDE0ICsxNTMzLDE0IEBAIHN0YXRp
YyBFbGVtZW50KiBzdHlsZUVsZW1lbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiBzdGF0aWMgUmVmPENT
U1ZhbHVlPiB2YWx1ZUZvclBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
TGVuZ3RoUG9pbnQmIHBvc2l0aW9uKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZUZvckxlbmd0aChwb3NpdGlvbi54KCksIHN0eWxlKSk7Ci0gICAgbGlzdC0+YXBwZW5k
KHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueSgpLCBzdHlsZSkpOwor
ICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9u
LngsIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgocG9zaXRpb24ueSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JQb3NpdGlvbk9yQXV0byhjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvbnN0IExlbmd0aFBvaW50JiBwb3NpdGlvbikKIHsKLSAgICBpZiAocG9zaXRpb24u
eCgpLmlzQXV0bygpICYmIHBvc2l0aW9uLnkoKS5pc0F1dG8oKSkKKyAgICBpZiAocG9zaXRpb24u
eC5pc0F1dG8oKSAmJiBwb3NpdGlvbi55LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsK
IAogICAgIHJldHVybiB2YWx1ZUZvclBvc2l0aW9uKHN0eWxlLCBwb3NpdGlvbik7CkBAIC0xOTM2
LDcgKzE5MzYsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGF1dG8qIGNvbnRlbnREYXRhID0gc3R5
bGUuY29udGVudERhdGEoKTsgY29udGVudERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEt
Pm5leHQoKSkgewogICAgICAgICBpZiAoaXM8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERh
dGEpKQotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShk
b3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRlcigpLmlkZW50
aWZpZXIoKSwgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSX05BTUUpKTsKKyAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8Q291bnRlckNvbnRl
bnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVyLCBDU1NVbml0VHlwZTo6
Q1NTX0NPVU5URVJfTkFNRSkpOwogICAgICAgICBlbHNlIGlmIChpczxJbWFnZUNvbnRlbnREYXRh
PigqY29udGVudERhdGEpKQogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGRvd25jYXN0PEltYWdl
Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkuaW1hZ2UoKS5jc3NWYWx1ZSgpKTsKICAgICAgICAg
ZWxzZSBpZiAoaXM8VGV4dENvbnRlbnREYXRhPigqY29udGVudERhdGEpKQpAQCAtMzAyOSw3ICsz
MDI5LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZv
clByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogICAgICAg
ICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUuY29sdW1uV2lkdGgoKSwg
c3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKLSAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhl
bHMoMS4wKSwgc3R5bGUudGFiU2l6ZSgpLmlzU3BhY2VzKCkgPyBDU1NVbml0VHlwZTo6Q1NTX05V
TUJFUiA6IENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50YWJTaXplKCkud2lkdGhJblBpeGVscygxLjApLCBzdHls
ZS50YWJTaXplKCkuaXNTcGFjZXMgPyBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiA6IENTU1VuaXRU
eXBlOjpDU1NfUFgpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q3Vyc29yOiB7CiAgICAgICAg
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0OwogICAgICAgICAgICAgYXV0byogY3Vyc29y
cyA9IHN0eWxlLmN1cnNvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5n
dGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAK
aW5kZXggZjViYzhjYTk2YjkwZDYwNTUwZGNhNTgyMWU4Mzg1NDlhNGIyZjdlZi4uZDZhMTJjYmI5
NjkyMjczODU0MmY0ZTA5NzQ3M2U3YjhlYzdkZTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0
aEZ1bmN0aW9ucy5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBMYXlvdXRTaXplIHNpemVGb3JMZW5n
dGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aCwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11
bQogCiBMYXlvdXRQb2ludCBwb2ludEZvckxlbmd0aFBvaW50KGNvbnN0IExlbmd0aFBvaW50JiBs
ZW5ndGhQb2ludCwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bVZhbHVlKQogewotICAgIHJldHVy
biB7IHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngoKSwgbWF4aW11bVZhbHVlLndpZHRoKCkp
LCB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55KCksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkg
fTsKKyAgICByZXR1cm4geyB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54LCBtYXhpbXVtVmFs
dWUud2lkdGgoKSksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LnksIG1heGltdW1WYWx1ZS5o
ZWlnaHQoKSkgfTsKIH0KIAogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3Qg
TGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQpAQCAtMTMz
LDcgKzEzMyw3IEBAIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0
aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYKIAogRmxvYXRQb2ludCBmbG9hdFBv
aW50Rm9yTGVuZ3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0aFBvaW50LCBjb25zdCBG
bG9hdFNpemUmIGJveFNpemUpCiB7Ci0gICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChs
ZW5ndGhQb2ludC54KCksIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVu
Z3RoUG9pbnQueSgpLCBib3hTaXplLmhlaWdodCgpKSB9OworICAgIHJldHVybiB7IGZsb2F0VmFs
dWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueCwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZv
ckxlbmd0aChsZW5ndGhQb2ludC55LCBib3hTaXplLmhlaWdodCgpKSB9OwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5o
CmluZGV4IDdlZTMwYTNlMTMxMjk0YTNkNTVhY2VmNGNhYTBhNzFjM2QxMGFkNTguLjZmZWMzNzQ1
MGFjMGFiZmVkMGNhODA3NTM5MGVlMjY5ODRjYWMwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvY3NzL0Rpc3BsYXlTdHlsZS5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIGJv
b2wgcHJlc2VydmVOZXdsaW5lKCkgY29uc3Q7CiAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2Uo
KSBjb25zdDsKIAotICAgIGNvbnN0IFRhYlNpemUmIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBt
X3RhYlNpemU7IH0KKyAgICBUYWJTaXplIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNp
emU7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQmFja2dyb3VuZChjb25zdCBSZW5kZXJT
dHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNWI4YjM5MGI0MTAwMzJkYzg3OTdk
OGViZGI3M2RiMWY1MGU3MmE1YS4uYWM5MjI5MzFhODY4ZTBkZDE3OWVhZmMxMTQ4MWVhZGQyMGUz
YjA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yNzgsNiArMjc4LDcgQEAKICNpbmNs
dWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAu
aD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CkBAIC0xMjIzLDMyICsxMjI0LDM4
IEBAIHN0cnVjdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgewogICAgIFVDaGFyMzIgbWF4aW11bTsK
IH07CiAKLSNpZiBBU1NFUlRfRU5BQkxFRAotCi1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSYgYSwgY29uc3QgVW5pY29kZUNvZGVQb2ludFJh
bmdlJiBiKQorc3RhdGljIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChVbmljb2RlQ29kZVBvaW50
UmFuZ2UgYSwgVW5pY29kZUNvZGVQb2ludFJhbmdlIGIpCiB7Ci0gICAgQVNTRVJUKGEubWluaW11
bSA8PSBhLm1heGltdW0pOwotICAgIEFTU0VSVChiLm1pbmltdW0gPD0gYi5tYXhpbXVtKTsKKyAg
ICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoYS5taW5pbXVtIDw9IGEubWF4aW11bSk7
CisgICAgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKGIubWluaW11bSA8PSBiLm1heGlt
dW0pOwogICAgIHJldHVybiBhLm1heGltdW0gPCBiLm1pbmltdW07CiB9CiAKLSNlbmRpZiAvLyBB
U1NFUlRfRU5BQkxFRAotCi1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVuaWNv
ZGVDb2RlUG9pbnRSYW5nZSYgYSwgVUNoYXIzMiBiKQorc3RhdGljIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPChVbmljb2RlQ29kZVBvaW50UmFuZ2UgYSwgVUNoYXIzMiBiKQogewotICAgIEFTU0VS
VChhLm1pbmltdW0gPD0gYS5tYXhpbXVtKTsKKyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NP
TlRFWFQoYS5taW5pbXVtIDw9IGEubWF4aW11bSk7CiAgICAgcmV0dXJuIGEubWF4aW11bSA8IGI7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoVUNoYXIzMiBhLCBjb25zdCBVbmlj
b2RlQ29kZVBvaW50UmFuZ2UmIGIpCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFVD
aGFyMzIgYSwgVW5pY29kZUNvZGVQb2ludFJhbmdlIGIpCiB7Ci0gICAgQVNTRVJUKGIubWluaW11
bSA8PSBiLm1heGltdW0pOworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChiLm1p
bmltdW0gPD0gYi5tYXhpbXVtKTsKICAgICByZXR1cm4gYSA8IGIubWluaW11bTsKIH0KIAorc3Rh
dGljIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oVW5pY29kZUNvZGVQb2ludFJhbmdlIGEsIFVD
aGFyMzIgYikKK3sKKyAgICByZXR1cm4gIShhIDwgYikgJiYgIShiIDwgYSk7Cit9CisKK3N0YXRp
YyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KFVDaGFyMzIgYSwgVW5pY29kZUNvZGVQb2ludFJh
bmdlIGIpCit7CisgICAgcmV0dXJuIGIgPT0gYTsKK30KKwogc3RhdGljIGlubGluZSBib29sIGlz
UG90ZW50aWFsQ3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSByYW5nZXNbXSA9IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIFVuaWNvZGVDb2RlUG9pbnRSYW5nZSByYW5nZXNbXSA9IHsKICAg
ICAgICAgeyAnLScsICcuJyB9LAogICAgICAgICB7ICcwJywgJzknIH0sCiAgICAgICAgIHsgJ18n
LCAnXycgfSwKQEAgLTEyNjcsOSArMTI3NCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1BvdGVu
dGlhbEN1c3RvbUVsZW1lbnROYW1lQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgICAg
ICB7IDB4RkRGMCwgMHhGRkZEIH0sCiAgICAgICAgIHsgMHgxMDAwMCwgMHhFRkZGRiB9LAogICAg
IH07Ci0KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbihyYW5nZXMpLCBzdGQ6
OmVuZChyYW5nZXMpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2lu
KHJhbmdlcyksIHN0ZDo6ZW5kKHJhbmdlcyksIGNoYXJhY3Rlcik7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyByYW5nZXMgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRh
aW5zKGNoYXJhY3Rlcik7CiB9CiAKIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1cyBE
b2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShjb25zdCBBdG9tU3RyaW5nJiBsb2Nh
bE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAKaW5kZXggOWEzNjc1
OTZkZDAyNjlkNTlmNjNlYjBmNmM4OWUzNGRkODIxODJkOS4uYjVmNGNjMDVlMjc2N2ExOGM2NzNk
MDhlMzRjZDIyMDY5YzU4MTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50
LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IExlbmd0aFBvaW50JiBzaXplKQogewot
ICAgIHJldHVybiB0cyA8PCBzaXplLngoKSA8PCAiICIgPDwgc2l6ZS55KCk7CisgICAgcmV0dXJu
IHRzIDw8IHNpemUueCA8PCAiICIgPDwgc2l6ZS55OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuaAppbmRleCA4MTIwNWJiMTNkZGE1
MDMzYjJjOTBmYmVhMDUzMGMyZjU2Zjk5MzZiLi45OGJkY2NhMDcxZjhjMjE5YjJjYmE5MGJjYmMw
MWYzMjViNjIyMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQ
b2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKQEAgLTMy
LDQ0ICszMiwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQmxlbmRpbmdDb250ZXh0
OwogCiBzdHJ1Y3QgTGVuZ3RoUG9pbnQgewotcHVibGljOgotICAgIExlbmd0aFBvaW50KCkKLSAg
ICB7Ci0gICAgfQotICAgIAotICAgIExlbmd0aFBvaW50KExlbmd0aCB4LCBMZW5ndGggeSkKLSAg
ICAgICAgOiBtX3goV1RGTW92ZSh4KSkKLSAgICAgICAgLCBtX3koV1RGTW92ZSh5KSkKLSAgICB7
Ci0gICAgfQorICAgIExlbmd0aCB4OworICAgIExlbmd0aCB5OwogCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IExlbmd0aFBvaW50JiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBMZW5ndGhQb2ludCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV94ID09
IG8ubV94ICYmIG1feSA9PSBvLm1feTsKKyAgICAgICAgcmV0dXJuIHggPT0gb3RoZXIueCAmJiB5
ID09IG90aGVyLnk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aFBv
aW50JiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGhQb2ludCYgb3Ro
ZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICAgICAg
cmV0dXJuIHggIT0gb3RoZXIueCB8fCB5ICE9IG90aGVyLnk7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXRYKExlbmd0aCB4KSB7IG1feCA9IFdURk1vdmUoeCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHgo
KSBjb25zdCB7IHJldHVybiBtX3g7IH0KLQotICAgIHZvaWQgc2V0WShMZW5ndGggeSkgeyBtX3kg
PSBXVEZNb3ZlKHkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV95
OyB9Ci0KLSAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuIG1feC5pc1plcm8oKSAmJiBt
X3kuaXNaZXJvKCk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgbmlj
ZSB0byBwYWNrIHRoZSB0d28gTGVuZ3RocyB0b2dldGhlciBiZXR0ZXIgc29tZWhvdyAodG8gYXZv
aWQgcGFkZGluZyBiZXR3ZWVuIHRoZW0pLgotICAgIExlbmd0aCBtX3g7Ci0gICAgTGVuZ3RoIG1f
eTsKKyAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuIHguaXNaZXJvKCkgJiYgeS5pc1pl
cm8oKTsgfQogfTsKIAogaW5saW5lIExlbmd0aFBvaW50IGJsZW5kKGNvbnN0IExlbmd0aFBvaW50
JiBmcm9tLCBjb25zdCBMZW5ndGhQb2ludCYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICByZXR1cm4gTGVuZ3RoUG9pbnQoYmxlbmQoZnJvbS54KCksIHRvLngoKSwg
Y29udGV4dCksIGJsZW5kKGZyb20ueSgpLCB0by55KCksIGNvbnRleHQpKTsKKyAgICByZXR1cm4g
eyBibGVuZChmcm9tLngsIHRvLngsIGNvbnRleHQpLCBibGVuZChmcm9tLnksIHRvLnksIGNvbnRl
eHQpIH07CiB9CiAKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBMZW5ndGhQb2ludCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggYmFiZTk2Njg0ZTdjMTVjYjljYTk2OTNiYTM1NjBhOGFh
M2QyYzk2Yy4uZTlmMjY4YzEwZGFiNDI4NDY3OThhODZkOWY5OTJkYzVhNWZiODJkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xNjUs
OCArMTY1LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNz
KCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5mb250TWV0cmljcygpOyB9CiAgICAgZmxv
YXQgc3BhY2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlGb250KCkuc3BhY2VXaWR0aCgp
ICsgbV9sZXR0ZXJTcGFjaW5nOyB9Ci0gICAgZmxvYXQgdGFiV2lkdGgoY29uc3QgRm9udCYsIGNv
bnN0IFRhYlNpemUmLCBmbG9hdCkgY29uc3Q7Ci0gICAgZmxvYXQgdGFiV2lkdGgoY29uc3QgVGFi
U2l6ZSYgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0IHsgcmV0dXJuIHRhYldpZHRoKHBy
aW1hcnlGb250KCksIHRhYlNpemUsIHBvc2l0aW9uKTsgfQorICAgIGZsb2F0IHRhYldpZHRoKGNv
bnN0IEZvbnQmLCBUYWJTaXplLCBmbG9hdCkgY29uc3Q7CisgICAgZmxvYXQgdGFiV2lkdGgoVGFi
U2l6ZSB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJp
bWFyeUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CiAgICAgYm9vbCBoYXNWYWxpZEF2ZXJh
Z2VDaGFyV2lkdGgoKSBjb25zdDsKICAgICBib29sIGZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFp
bGFibGUoZmxvYXQgJndpZHRoKSBjb25zdDsgLy8gcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MKIApA
QCAtMzcwLDcgKzM3MCw3IEBAIGlubGluZSBGb250U2VsZWN0b3IqIEZvbnRDYXNjYWRlOjpmb250
U2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBtX2ZvbnRzID8gbV9mb250cy0+Zm9udFNlbGVj
dG9yKCkgOiBudWxscHRyOwogfQogCi1pbmxpbmUgZmxvYXQgRm9udENhc2NhZGU6OnRhYldpZHRo
KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRhYlNpemUmIHRhYlNpemUsIGZsb2F0IHBvc2l0aW9u
KSBjb25zdAoraW5saW5lIGZsb2F0IEZvbnRDYXNjYWRlOjp0YWJXaWR0aChjb25zdCBGb250JiBm
b250LCBUYWJTaXplIHRhYlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdAogewogICAgIGZsb2F0
IGJhc2VUYWJXaWR0aCA9IHRhYlNpemUud2lkdGhJblBpeGVscyhmb250LnNwYWNlV2lkdGgoKSk7
CiAgICAgaWYgKCFiYXNlVGFiV2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKaW5kZXggNzU0M2Y0NzVhMjdhNjUxNTkwNmNjMjJlYjNm
NjBhOTE0MDkyOTBiYS4uMDc1NjE5NGNmMmY1ZThiOWZiYjI3YTEwY2U3OGEyZTE4YzIzY2ZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNw
cApAQCAtNzQsNyArNzQsOCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZl
cjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVm
ZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZl
clNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IGlmIChidWZmZXJTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCisg
ICAgdWludDMyX3QgbWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7Cisg
ICAgaWYgKGJ1ZmZlclNpemUgPiBtYXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQoYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCmluZGV4IDM0YTcwODEwNjI4YWM5NTI3ZjRmNWNm
MDQ3NWQ4MzViN2NjMmVhY2YuLjM2NjQyZjhhOGM0NzQwN2VhY2U5MzUxMjI4MzYwZjJjODdkN2My
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKQEAgLTI5
LDQ5ICsyOSwzOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAotZW51bSBUYWJTaXplVmFsdWVUeXBlIHsK
LSAgICBMZW5ndGhWYWx1ZVR5cGUsCi0gICAgU3BhY2VWYWx1ZVR5cGUsCi19OworbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgVGFiU2l6ZSB7Ci0gICAgVGFiU2l6ZShmbG9hdCBudW1Pckxl
bmd0aCwgVGFiU2l6ZVZhbHVlVHlwZSBpc1NwYWNlcyA9IFNwYWNlVmFsdWVUeXBlKQotICAgICAg
ICA6IG1fdmFsdWUobnVtT3JMZW5ndGgpCi0gICAgICAgICwgbV9pc1NwYWNlcyhpc1NwYWNlcykK
LSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc1NwYWNlcygpIGNvbnN0CisgICAgZW51bSBWYWx1
ZVR5cGUgeyBMZW5ndGgsIFNwYWNlcyB9OworICAgIFRhYlNpemUoZmxvYXQgbnVtT3JMZW5ndGgs
IFZhbHVlVHlwZSB0eXBlID0gU3BhY2VzKQorICAgICAgICA6IHZhbHVlKG51bU9yTGVuZ3RoKQor
ICAgICAgICAsIGlzU3BhY2VzKHR5cGUgPT0gU3BhY2VzKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1faXNTcGFjZXM7CiAgICAgfQogCiAgICAgZmxvYXQgd2lkdGhJblBpeGVscyhmbG9hdCBzcGFj
ZVdpZHRoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNTcGFjZXMgPyBtX3ZhbHVl
ICogc3BhY2VXaWR0aCA6IG1fdmFsdWU7CisgICAgICAgIHJldHVybiBpc1NwYWNlcyA/IHZhbHVl
ICogc3BhY2VXaWR0aCA6IHZhbHVlOwogICAgIH0KIAotICAgIGZsb2F0IHZhbHVlKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0KKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KIAotICAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9Ci0KLSAgICBmbG9hdCBtX3ZhbHVlOwotICAgIGJv
b2wgbV9pc1NwYWNlczsKKyAgICBmbG9hdCB2YWx1ZTsKKyAgICBib29sIGlzU3BhY2VzOwogfTsK
IAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUYWJTaXplJiBhLCBjb25zdCBUYWJTaXpl
JiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShUYWJTaXplIGEsIFRhYlNpemUgYikKIHsKLSAg
ICByZXR1cm4gKGEubV92YWx1ZSA9PSBiLm1fdmFsdWUpICYmIChhLm1faXNTcGFjZXMgPT0gYi5t
X2lzU3BhY2VzKTsKKyAgICByZXR1cm4gYS52YWx1ZSA9PSBiLnZhbHVlICYmIGEuaXNTcGFjZXMg
PT0gYi5pc1NwYWNlczsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUYWJTaXpl
JiBhLCBjb25zdCBUYWJTaXplJiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShUYWJTaXplIGEs
IFRhYlNpemUgYikKIHsKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCitpbmxpbmUgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIFRhYlNpemUgc2l6ZSkgeyByZXR1
cm4gc3RyZWFtIDw8IHNpemUudmFsdWUgPDwgKHNpemUuaXNTcGFjZXMgPyAiIHNwYWNlcyIgOiAi
Iik7IH0KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IDFkNDdkNjVkNjgyNDYyNmUxNTkyODgwMGY0Njk3YzI3
NmNiMjc2MzQuLmEyMDk2Y2Y5ZGUzNWU4YTViMzkzYTdmYWMwYTQ4M2Q1NzFjNGYxYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTk1LDggKzk1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SG9yaXpvbnRhbEdseXBoU3RyZXRjaChmbG9hdCBzY2Fs
ZSkgeyBtX2hvcml6b250YWxHbHlwaFN0cmV0Y2ggPSBzY2FsZTsgfQogCiAgICAgYm9vbCBhbGxv
d1RhYnMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93VGFiczsgfQotICAgIGNvbnN0IFRhYlNpemUm
IHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7IH0KLSAgICB2b2lkIHNldFRhYlNp
emUoYm9vbCwgY29uc3QgVGFiU2l6ZSYpOworICAgIFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGFiU2l6ZTsgfQorICAgIHZvaWQgc2V0VGFiU2l6ZShib29sLCBUYWJTaXplKTsK
IAogICAgIGZsb2F0IHhQb3MoKSBjb25zdCB7IHJldHVybiBtX3hwb3M7IH0KICAgICB2b2lkIHNl
dFhQb3MoZmxvYXQgeFBvcykgeyBtX3hwb3MgPSB4UG9zOyB9CkBAIC0xMzYsNyArMTM2LDcgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2Rpc2FibGVTcGFjaW5nIDogMTsKIH07CiAKLWlubGlu
ZSB2b2lkIFRleHRSdW46OnNldFRhYlNpemUoYm9vbCBhbGxvdywgY29uc3QgVGFiU2l6ZSYgc2l6
ZSkKK2lubGluZSB2b2lkIFRleHRSdW46OnNldFRhYlNpemUoYm9vbCBhbGxvdywgVGFiU2l6ZSBz
aXplKQogewogICAgIG1fYWxsb3dUYWJzID0gYWxsb3c7CiAgICAgbV90YWJTaXplID0gc2l6ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3Bw
CmluZGV4IDkyZjQyYjY3N2Q1M2RkOWM2YTNmNmJkNmUzZDkxY2JhYzY2YWE0YjkuLjlkYjExMTEy
OGExZmI3Y2VmZWE0YWQwMmFlYzExYmE1ZTI5MWRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcApAQCAtMjcsMTMgKzI3LDE0IEBA
CiAjaW5jbHVkZSAiVlA5VXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGJvb2wgaXNWYWxpZFZQTGV2ZWwodWludDhfdCBsZXZlbCkKIHsKLSAgICBjb25zdGV4
cHIgdWludDhfdCB2YWxpZExldmVsc1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhf
dCB2YWxpZExldmVsc1tdID0gewogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxf
MSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzFfMSwKICAgICAgICAgVlBD
b25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzIsCkBAIC00OSwxNCArNTAsMTMgQEAgc3RhdGljIGJv
b2wgaXNWYWxpZFZQTGV2ZWwodWludDhfdCBsZXZlbCkKICAgICAgICAgVlBDb25maWd1cmF0aW9u
TGV2ZWw6OkxldmVsXzZfMSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzZf
MiwKICAgICB9OwotCi0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRM
ZXZlbHMpLCBzdGQ6OmVuZCh2YWxpZExldmVscykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlf
c2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRMZXZlbHMpLCBzdGQ6OmVuZCh2YWxpZExldmVscyksIGxl
dmVsKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHZhbGlkTGV2
ZWxzIH07CisgICAgcmV0dXJuIHNldC5jb250YWlucyhsZXZlbCk7CiB9CiAKIHN0YXRpYyBib29s
IGlzVmFsaWRWUENvbG9yUHJpbWFyaWVzKHVpbnQ4X3QgY29sb3JQcmltYXJpZXMpCiB7Ci0gICAg
Y29uc3RleHByIHVpbnQ4X3QgdmFsaWRDb2xvclByaW1hcmllc1tdID0geworICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDhfdCB2YWxpZENvbG9yUHJpbWFyaWVzW10gPSB7CiAgICAgICAgIFZQQ29u
ZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF83MDlfNiwKICAgICAgICAgVlBDb25maWd1cmF0
aW9uQ29sb3JQcmltYXJpZXM6OlVuc3BlY2lmaWVkLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25D
b2xvclByaW1hcmllczo6QlRfNDcwXzZfTSwKQEAgLTcwLDE0ICs3MCwxMyBAQCBzdGF0aWMgYm9v
bCBpc1ZhbGlkVlBDb2xvclByaW1hcmllcyh1aW50OF90IGNvbG9yUHJpbWFyaWVzKQogICAgICAg
ICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfRUdfNDMyXzEsCiAgICAgICAg
IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpFQlVfVGVjaF8zMjEzX0UsCiAgICAgfTsK
LQotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkQ29sb3JQcmltYXJp
ZXMpLCBzdGQ6OmVuZCh2YWxpZENvbG9yUHJpbWFyaWVzKSkpOwotICAgIHJldHVybiBzdGQ6OmJp
bmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZENvbG9yUHJpbWFyaWVzKSwgc3RkOjplbmQodmFs
aWRDb2xvclByaW1hcmllcyksIGNvbG9yUHJpbWFyaWVzKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNvcnRlZEFycmF5U2V0IHNldCB7IHZhbGlkQ29sb3JQcmltYXJpZXMgfTsKKyAgICByZXR1cm4g
c2V0LmNvbnRhaW5zKGNvbG9yUHJpbWFyaWVzKTsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZFZQ
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3ModWludDhfdCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcykK
IHsKLSAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzW10g
PSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3NbXSA9IHsKICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3M6OkJUXzcwOV82LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3Rlcmlz
dGljczo6VW5zcGVjaWZpZWQsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzOjpCVF80NzBfNl9NLApAQCAtOTYsMTMgKzk1LDEzIEBAIHN0YXRpYyBib29sIGlz
VmFsaWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKHVpbnQ4X3QgdHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3MpCiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpT
TVBURV9TVF80MjhfMSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzIxMDBfSExHLAogICAgIH07Ci0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0
ZDo6YmVnaW4odmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyksIHN0ZDo6ZW5kKHZhbGlkVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChz
dGQ6OmJlZ2luKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpLCBzdGQ6OmVuZCh2YWxpZFRy
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSwgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOworICAgIHN0
YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRUcmFuc2ZlckNoYXJhY3Rl
cmlzdGljcyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnModHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3MpOwogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBNYXRyaXhDb2VmZmljaWVudHModWludDhf
dCBtYXRyaXhDb2VmZmljaWVudHMpCiB7Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRNYXRy
aXhDb2VmZmljaWVudHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRN
YXRyaXhDb2VmZmljaWVudHNbXSA9IHsKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29l
ZmZpY2llbnRzOjpJZGVudGl0eSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZp
Y2llbnRzOjpCVF83MDlfNiwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2ll
bnRzOjpVbnNwZWNpZmllZCwKQEAgLTExOCw4ICsxMTcsOCBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlk
VlBNYXRyaXhDb2VmZmljaWVudHModWludDhfdCBtYXRyaXhDb2VmZmljaWVudHMpCiAgICAgICAg
IFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6Q2hyb21hY2l0eV9Ob25jb25zdGFu
dF9MdW1pbmFuY2UsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6
QlRfMjEwMF9JQ0MsCiAgICAgfTsKLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdp
bih2YWxpZE1hdHJpeENvZWZmaWNpZW50cyksIHN0ZDo6ZW5kKHZhbGlkTWF0cml4Q29lZmZpY2ll
bnRzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZE1h
dHJpeENvZWZmaWNpZW50cyksIHN0ZDo6ZW5kKHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSwgbWF0
cml4Q29lZmZpY2llbnRzKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNl
dCB7IHZhbGlkTWF0cml4Q29lZmZpY2llbnRzIH07CisgICAgcmV0dXJuIHNldC5jb250YWlucyht
YXRyaXhDb2VmZmljaWVudHMpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1By
aXZhdGVBVkZPYmpDLmgKaW5kZXggZWUxYTM3OWE1YmQ4MmEyNmFjMzIxMmMzZGRmNmU3YzA0MGMx
OGM1NS4uZTJkMTk4ZmNhMmI0YzFjOGY3ZmU2NDg0M2IxYzQxM2Q3YjE4NGY3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5i
YW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRl
QVZGT2JqQy5oCkBAIC02MCwxMyArNjAsMTMgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSW5iYW5kQ2hhcHRlclRyYWNrUHJp
dmF0ZUFWRk9iakMiOyB9CiAKICAgICBzdHJ1Y3QgQ2hhcHRlckRhdGEgewotICAgICAgICBNZWRp
YVRpbWUgbV9zdGFydFRpbWU7Ci0gICAgICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOwotICAgICAg
ICBTdHJpbmcgbV90aXRsZTsKKyAgICAgICAgTWVkaWFUaW1lIHN0YXJ0VGltZTsKKyAgICAgICAg
TWVkaWFUaW1lIGR1cmF0aW9uOworICAgICAgICBTdHJpbmcgdGl0bGU7CiAKICAgICAgICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaGFwdGVyRGF0YSYgb3RoZXIpIGNvbnN0CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3N0YXJ0VGltZSA9PSBvdGhlci5tX3N0YXJ0
VGltZSAmJiBtX2R1cmF0aW9uID09IG90aGVyLm1fZHVyYXRpb24gJiYgbV90aXRsZSA9PSBvdGhl
ci5tX3RpdGxlOworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0VGltZSA9PSBvdGhlci5zdGFydFRp
bWUgJiYgZHVyYXRpb24gPT0gb3RoZXIuZHVyYXRpb24gJiYgdGl0bGUgPT0gb3RoZXIudGl0bGU7
CiAgICAgICAgIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVv
T3V0cHV0Lm1tCmluZGV4IDBiYzA4MzgxNGMwOGM3ZGVlZDYxYzkwNzljMjJiZTNmNTA3OGE3N2Uu
Ljk0OWM2MGJjNDhlNWE5YTBiMjU4MGYxYTIxMjJlZWU4NzU0NTE1ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZp
ZGVvT3V0cHV0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tCkBAIC0yMzEsMTQgKzIzMSwxMyBAQCB2
b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQog
ICAgIGlmIChtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gY3VycmVudFRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50
VGltZV0pOwotICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywg
Y3VycmVudFRpbWUpOworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0Zy
YW1lcywgUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3VycmVudFRpbWVdKSk7CiAgICAgaWYg
KGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSB8fCArK2l0ZXIgPT0gbV92aWRlb0ZyYW1lcy5l
bmQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBuZXh0SW1hZ2VUaW1lID0gaXRlci0+
Zmlyc3Q7CiAKLSAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRk
Qm91bmRhcnlUaW1lT2JzZXJ2ZXJGb3JUaW1lczpAW1tOU1ZhbHVlIHZhbHVlV2l0aENNVGltZTpQ
QUw6OnRvQ01UaW1lKGN1cnJlbnRUaW1lKV1dIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVl
dWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWRE
ZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdICgp
IG11dGFibGUgeworICAgIG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBh
ZGRCb3VuZGFyeVRpbWVPYnNlcnZlckZvclRpbWVzOkBbW05TVmFsdWUgdmFsdWVXaXRoQ01UaW1l
OlBBTDo6dG9DTVRpbWUobmV4dEltYWdlVGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0
ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVj
dGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyldIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAg
ICAgICB3ZWFrVGhpcy0+bmV4dEltYWdlVGltZVJlYWNoZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKaW5kZXggMDVhODMxNmRjMjdlNjMwMTdmMzk3ZjE5MjQ2OWI4MmEzM2I3
YjAzNC4uMDRjMDAzYjRlMmU4NzY4Y2Q1ODc3NzRlNWQxZWM2MzI3OWM4OGJkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTE0MjIsMTggKzE0MjIsMTggQEAgd2VibTo6
U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJh
bWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BP
U1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJyb3IiLCBl
cnIpOwogICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5n
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIE9wdXNDb29raWVDb250ZW50cyBjb29raWVD
b250ZW50czsKLSAgICAgICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURh
dGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxv
Y2tCdWZmZXJEYXRhLCBjb29raWVDb250ZW50cykpIHsKKyAgICAgICAgICAgIGF1dG8gY29va2ll
Q29udGVudHMgPSBwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZh
dGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEpOwor
ICAgICAgICAgICAgaWYgKCFjb29raWVDb250ZW50cykgewogICAgICAgICAgICAgICAgIFBBUlNF
Ul9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkZhaWxlZCB0byBwYXJzZSBPcHVzIHByaXZhdGUgZGF0
YSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5n
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghY29va2llQ29udGVudHMuZnJhbWVz
UGVyUGFja2V0KSB7CisgICAgICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzLT5mcmFtZXNQZXJQ
YWNrZXQpIHsKICAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJP
cHVzIHByaXZhdGUgZGF0YSBpbmRpY2F0ZXMgMCBmcmFtZXMgcGVyIHBhY2tldDsgYmFpbGluZyIp
OwogICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fZnJhbWVzUGVyUGFja2V0ID0gY29va2llQ29u
dGVudHMuZnJhbWVzUGVyUGFja2V0OwotICAgICAgICAgICAgbV9mcmFtZUR1cmF0aW9uID0gY29v
a2llQ29udGVudHMuZnJhbWVEdXJhdGlvbjsKLSAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9u
ID0gY3JlYXRlT3B1c0F1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29va2llQ29udGVudHMpOworICAg
ICAgICAgICAgbV9mcmFtZXNQZXJQYWNrZXQgPSBjb29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFj
a2V0OworICAgICAgICAgICAgbV9mcmFtZUR1cmF0aW9uID0gY29va2llQ29udGVudHMtPmZyYW1l
RHVyYXRpb247CisgICAgICAgICAgICBmb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZU9wdXNBdWRp
b0Zvcm1hdERlc2NyaXB0aW9uKCpjb29raWVDb250ZW50cyk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIWZvcm1hdERlc2NyaXB0aW9uKSB7CkBAIC0xNDUzLDcgKzE0NTMsNiBAQCB3ZWJtOjpT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFt
ZURhdGEod2VibTo6UmVhZAogICAgICAgICAvLyBPcHVzIHRlY2huaWNhbGx5IGFsbG93cyB0aGUg
ZnJhbWUgZHVyYXRpb24gYW5kIGZyYW1lcy1wZXItcGFja2V0IHZhbHVlcyB0byBjaGFuZ2UgZnJv
bSBwYWNrZXQgdG8gcGFja2V0LgogICAgICAgICAvLyBDb3JlQXVkaW8gZG9lc24ndCBzdXBwb3J0
IEFTQkQgdmFsdWVzIGxpa2UgdGhlc2UgdG8gY2hhbmdlIG9uIGEgcGVyLXBhY2tldCBiYXNpcywg
c28gdGhyb3cgYW4gZXJyb3Igd2hlbgogICAgICAgICAvLyB0aGF0IGtpbmQgb2YgdmFyaWFiaWxp
dHkgaXMgZW5jb3VudGVyZWQuCi0gICAgICAgIE9wdXNDb29raWVDb250ZW50cyBjb29raWVDb250
ZW50czsKICAgICAgICAgYXV0byYgcHJpdmF0ZURhdGEgPSB0cmFjaygpLmNvZGVjX3ByaXZhdGUu
dmFsdWUoKTsKICAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBs
ZXRlQmxvY2tCdWZmZXIobV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNr
ZXRTaXplKTsKICAgICAgICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7CkBAIC0xNDY2LDkgKzE0
NjUsOCBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0Rh
dGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRo
IGVycm9yIiwgZXJyKTsKICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVt
YWluaW5nKTsKICAgICAgICAgfQotICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHBy
aXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNp
emUsIGJsb2NrQnVmZmVyRGF0YSwgY29va2llQ29udGVudHMpCi0gICAgICAgICAgICB8fCBjb29r
aWVDb250ZW50cy5mcmFtZXNQZXJQYWNrZXQgIT0gbV9mcmFtZXNQZXJQYWNrZXQKLSAgICAgICAg
ICAgIHx8IGNvb2tpZUNvbnRlbnRzLmZyYW1lRHVyYXRpb24gIT0gbV9mcmFtZUR1cmF0aW9uKSB7
CisgICAgICAgIGF1dG8gY29va2llQ29udGVudHMgPSBwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2
YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXpl
LCBibG9ja0J1ZmZlckRhdGEpOworICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzIHx8IGNvb2tp
ZUNvbnRlbnRzLT5mcmFtZXNQZXJQYWNrZXQgIT0gbV9mcmFtZXNQZXJQYWNrZXQgfHwgY29va2ll
Q29udGVudHMtPmZyYW1lRHVyYXRpb24gIT0gbV9mcmFtZUR1cmF0aW9uKSB7CiAgICAgICAgICAg
ICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJPcHVzIGZyYW1lcy1wZXItcGFja2V0IGNo
YW5nZWQgd2l0aGluIGEgdHJhY2s7IGVycm9yIik7CiAgICAgICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlZhcmlhYmxlRnJhbWVEdXJhdGlvbikpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaAppbmRleCA4NzEwNGQ4YjdiMzU3YzE2
MGI2ZGNjYzQxYmZlMWY4OWUwYTZjMjcxLi44YjY3ZGU2ZjQ5MzAxYmEwMTE1OGE5ODAwOTk1OTI3
NzA0NDUyMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgKQEAgLTI4LDggKzI4
LDggQEAKICNpZiBQTEFURk9STShDT0NPQSkKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCi1jbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTUsOSArNTUsOSBA
QCBzdHJ1Y3QgT3B1c0Nvb2tpZUNvbnRlbnRzIHsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc09w
dXNEZWNvZGVyQXZhaWxhYmxlKCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIHJlZ2lzdGVyT3B1c0Rl
Y29kZXJJZk5lZWRlZCgpOwotYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgcHJpdmF0
ZURhdGFTaXplLCBjb25zdCB2b2lkKiBwcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUs
IGNvbnN0IHZvaWQqIGZyYW1lRGF0YSwgT3B1c0Nvb2tpZUNvbnRlbnRzJik7CitzdGQ6Om9wdGlv
bmFsPE9wdXNDb29raWVDb250ZW50cz4gcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IHByaXZh
dGVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogcHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZURhdGFTaXpl
LCBjb25zdCB2b2lkKiBmcmFtZURhdGEpOwogUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY+IGNyZWF0ZU9wdXNBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IE9wdXNDb29raWVDb250
ZW50cyYpOwogCiB9CiAKLSNlbmRpZiAvLyAmJiBQTEFURk9STShDT0NPQSkKKyNlbmRpZiAvLyBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggN2Uw
YWZiMjkwZGQ4NWE3N2Y5YmVmZmY0OTQ3YTQ3Yjc1MzVlYjJmNC4uYWI1YmExZjI1MmNlYzI3MTZi
NTAwZjZmOWE1YzRiYmE2NzQyODE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
bW0KQEAgLTE2OSw3ICsxNjksNyBAQCBjb25zdGV4cHIgaW50MzJfdCBvcHVzQ29uZmlnVG9CYW5k
d2lkdGgodWludDhfdCBjb25maWcpCiB9CiAjZW5kaWYKIAotYm9vbCBwYXJzZU9wdXNQcml2YXRl
RGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0
YSwgc2l6ZV90IGZyYW1lU2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhLCBPcHVzQ29va2llQ29u
dGVudHMmIGNvb2tpZSkKK3N0ZDo6b3B0aW9uYWw8T3B1c0Nvb2tpZUNvbnRlbnRzPiBwYXJzZU9w
dXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQ
cml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhKQogewog
I2lmIEVOQUJMRShPUFVTKQogICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3
ODQ1CkBAIC0yMDEsMTYgKzIwMSwxNyBAQCBib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVf
dCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLAogICAgIGF1
dG8qIHByaXZhdGVEYXRhUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNvZGVjUHJp
dmF0ZURhdGEpOwogCiAgICAgaWYgKGNvZGVjUHJpdmF0ZVNpemUgPCAxOSkKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDEuIE1hZ2lj
IFNpZ25hdHVyZToKICAgICAvLwogICAgIC8vICAgICBUaGlzIGlzIGFuIDgtb2N0ZXQgKDY0LWJp
dCkgZmllbGQgdGhhdCBhbGxvd3MgY29kZWMKICAgICAvLyAgICAgaWRlbnRpZmljYXRpb24gYW5k
IGlzIGh1bWFuIHJlYWRhYmxlLgogICAgIGlmIChzdHJuY21wKCJPcHVzSGVhZCIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHByaXZhdGVEYXRhUHRyKSwgOCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDIuIFZlcnNp
b24gKDggYml0cywgdW5zaWduZWQpOgorICAgIE9wdXNDb29raWVDb250ZW50cyBjb29raWU7CiAg
ICAgY29va2llLnZlcnNpb24gPSAqKHByaXZhdGVEYXRhUHRyICsgOCk7CiAKICAgICAvLyAzLiBP
dXRwdXQgQ2hhbm5lbCBDb3VudCAnQycgKDggYml0cywgdW5zaWduZWQpOgpAQCAtMjMxLDcgKzIz
Miw3IEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUs
IGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsCiAgICAgYXV0byBmcmFtZVB0ciA9IHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZURhdGEpOwogCiAgICAgaWYgKGZyYW1lU2l6ZSA8
IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NzE2CiAgICAgLy8gMy4x
LiBUaGUgVE9DIEJ5dGUKQEAgLTI4NSwyMSArMjg2LDIwIEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0
ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURh
dGEsCiAgICAgICAgIC8vCiAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBGaWd1cmUg
NTogVGhlIGZyYW1lIGNvdW50IGJ5dGUKICAgICAgICAgaWYgKGZyYW1lU2l6ZSA8IDIpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIHVpbnQ4X3QgZnJhbWVDb3VudEJ5dGUgPSAqKGZyYW1lUHRyICsgMSk7CiAgICAg
ICAgIGNvb2tpZS5pc1ZCUiA9ICgoZnJhbWVDb3VudEJ5dGUgJiAwYjEwMDAwMDAwKSA+PiA3KSA9
PSAxOwogICAgICAgICBjb29raWUuaGFzUGFkZGluZyA9ICgoZnJhbWVDb3VudEJ5dGUgJiAwYjAx
MDAwMDAwKSA+PiA2KSA9PSAxOwogICAgICAgICBjb29raWUuZnJhbWVzUGVyUGFja2V0ID0gKGZy
YW1lQ291bnRCeXRlICYgMGIwMDExMTExMSk7CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBjb29raWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb2RlY1ByaXZhdGVTaXpl
KTsKICAgICBVTlVTRURfUEFSQU0oY29kZWNQcml2YXRlRGF0YSk7CiAgICAgVU5VU0VEX1BBUkFN
KGZyYW1lU2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lRGF0YSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGNvb2tpZSk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVMYXllclBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlTGF5ZXJQb29sLmgKaW5kZXggOGRjMjEzZjQ3ZDRmODE5MjExMTFhNGE2OWM0OTk2MmVhNzNm
Y2YwYS4uZGNkNmE0N2JhNjA4NTNkYTA4ZTEyZjAyMDI4NzlkNDlkYjM2MzQ4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxU
aW1lLmg+CiAKIEBjbGFzcyBMZWdhY3lUaWxlTGF5ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQppbmRleCBiNTJjODYxODZmMGJiMDZmZDMyM2Vk
MjlmODJkNzdjOTU4ZmUyNjA4Li45ZjhkZWJlOTU0NjExZWEwZThhZDczMzBjZDkyNmFjMmEzMDkx
NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xp
c3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1t
CkBAIC0zNSw0MyArMzUsMjkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IE9TQnVp
bGRJbmZvIHsKLSAgICBPU0J1aWxkSW5mbygpCi0gICAgICAgIDogbWFqb3IoMCkKLSAgICAgICAg
LCBtaW5vcigwKQotICAgICAgICAsIGJ1aWxkKDApCi0gICAgewotICAgIH0KLQotICAgIE9TQnVp
bGRJbmZvKGludCBtYWpvciwgaW50IG1pbm9yLCBpbnQgYnVpbGQpCi0gICAgICAgIDogbWFqb3Io
bWFqb3IpCi0gICAgICAgICwgbWlub3IobWlub3IpCi0gICAgICAgICwgYnVpbGQoYnVpbGQpCi0g
ICAgewotICAgIH0KKyAgICBpbnQgbWFqb3IgeyAwIH07IC8vIFJlcHJlc2VudHMgdGhlIDEzIGlu
IDEzQzY0LgorICAgIGludCBtaW5vciB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgQyBpbiAxM0M2
NCAoYXMgYSBudW1iZXIgd2hlcmUgQSA9PSAxLCBpLmUuIDMpLgorICAgIGludCBidWlsZCB7IDAg
fTsgLy8gUmVwcmVzZW50cyB0aGUgNjQgaW4gMTNDNjQuCiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oT1NCdWlsZEluZm8gb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFq
b3IgPT0gb3RoZXIubWFqb3IgJiYgbWlub3IgPT0gb3RoZXIubWlub3IgJiYgYnVpbGQgPT0gb3Ro
ZXIuYnVpbGQ7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgT1NCdWlsZEluZm8m
IG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihPU0J1aWxkSW5mbyBv
dGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3Is
IGJ1aWxkKSA+IHN0ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQp
OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIp
IGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShPU0J1aWxkSW5mbyBvdGhlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxk
KSA8PSBzdGQ6OnRpZShvdGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKICAg
ICB9CiAKLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0
CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpIDwgc3Rk
Ojp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CiAgICAgfQotCi0g
ICAgaW50IG1ham9yOyAvLyBSZXByZXNlbnRzIHRoZSAxMyBpbiAxM0M2NC4KLSAgICBpbnQgbWlu
b3I7IC8vIFJlcHJlc2VudHMgdGhlIEMgaW4gMTNDNjQgKGFzIGEgbnVtYmVyIHdoZXJlIEEgPT0g
MSwgaS5lLiAzKS4KLSAgICBpbnQgYnVpbGQ7IC8vIFJlcHJlc2VudHMgdGhlIDY0IGluIDEzQzY0
LgogfTsKIAogc3RhdGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5T
U3RyaW5nICpidWlsZFN0cmluZykKQEAgLTgzLDcgKzY5LDcgQEAgc3RhdGljIE9TQnVpbGRJbmZv
IGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5TU3RyaW5nICpidWlsZFN0cmluZykKICNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIE5TTG9nKEAiV2ViR0xCbG9ja2xpc3QgY291bGQgbm90IHBhcnNl
IE9TQnVpbGQgZW50cnk6ICVAIiwgYnVpbGRTdHJpbmcpOwogI2VuZGlmCi0gICAgICAgIHJldHVy
biBPU0J1aWxkSW5mbygpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIE5TVGV4
dENoZWNraW5nUmVzdWx0ICptYXRjaFJlc3VsdCA9IFttYXRjaGVzIG9iamVjdEF0SW5kZXg6MF07
CkBAIC05MiwxNCArNzgsMTQgQEAgc3RhdGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1
aWxkU3RyaW5nKE5TU3RyaW5nICpidWlsZFN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgICAg
IE5TTG9nKEAiV2ViR0xCbG9ja2xpc3QgY291bGQgbm90IHBhcnNlIE9TQnVpbGQgZW50cnk6ICVA
IiwgYnVpbGRTdHJpbmcpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiBPU0J1aWxkSW5mbygpOwor
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGludCBtYWpvclZlcnNpb24gPSBbW2J1
aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpbbWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjFd
XSBpbnRWYWx1ZV07CiAgICAgaW50IG1pbm9yVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3Ry
aW5nV2l0aFJhbmdlOlttYXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6Ml1dIGNoYXJhY3RlckF0SW5k
ZXg6MF0gLSAnQScgKyAxOwogICAgIGludCBidWlsZFZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1
YnN0cmluZ1dpdGhSYW5nZTpbbWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjNdXSBpbnRWYWx1ZV07
CiAKLSAgICByZXR1cm4gT1NCdWlsZEluZm8obWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1
aWxkVmVyc2lvbik7CisgICAgcmV0dXJuIHsgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1
aWxkVmVyc2lvbiB9OwogfQogCiBib29sIFdlYkdMQmxvY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdM
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9C
YXNlQXVkaW9TaGFyZWRVbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oCmluZGV4IDhjYTVmMzE5ZTJiODA2Y2VhYTkwMjYx
N2M1YzNhMjQ5YTFjNzRhNGEuLjBhMTZlNTRmZGJhNDhkYjVhYTYzZWM2NDcyNmYyNzVmMGRiMTA4
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9C
YXNlQXVkaW9TaGFyZWRVbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
TWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRy
aWNzLm1tCmluZGV4IDYzMTJlMDY4NDI5N2I0M2MzMzExZTQ3MzliNjgxYWI0NDVjMzM2NzIuLmJm
NWM3NGY0Y2ZkY2EzNzVlM2JlNDIzMmU0NzVjMjJkYWZmY2VjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRy
aWNzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL05TVVJMQ29ubmVjdGlvblNQSS5oPgorI2ltcG9ydCA8d3Rm
L1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWQuY3BwCmluZGV4IDU2MDJkN2MyZDRkNWJjYTkzMjQ1NDRiNzVhZDIyY2IyNjU4ZWQwMmMuLjBk
Zjc0MjY1MWZmN2JkYzhiYjY0MzM0NmY5YmNjYmMyMDRjMTllMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBib29sIEdyaWRJdGVyYXRvcjo6aXNFbXB0
eUFyZWFFbm91Z2godW5zaWduZWQgcm93U3BhbiwgdW5zaWduZWQgY29sdW1uU3BhbikgY29ucwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVy
YXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVk
IHZhcnlpbmdUcmFja1NwYW4pCitzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6
Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5
aW5nVHJhY2tTcGFuKQogewogICAgIEFTU0VSVCghbV9ncmlkLmlzRW1wdHkoKSk7CiAgICAgQVNT
RVJUKCFtX2dyaWRbMF0uaXNFbXB0eSgpKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQg
Zml4ZWRUcmFja1NwYQogICAgIEFTU0VSVCh2YXJ5aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAg
aWYgKG1fZ3JpZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgcm93U3BhbiA9IChtX2RpcmVjdGlv
biA9PSBGb3JDb2x1bW5zKSA/IHZhcnlpbmdUcmFja1NwYW4gOiBmaXhlZFRyYWNrU3BhbjsKICAg
ICB1bnNpZ25lZCBjb2x1bW5TcGFuID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4
ZWRUcmFja1NwYW4gOiB2YXJ5aW5nVHJhY2tTcGFuOwpAQCAtMjMxLDEzICsyMzEsMTMgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVu
c2lnbmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFj
a0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1f
Z3JpZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5
aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0
eUFyZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46
OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dT
cGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgs
IG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IEdyaWRBcmVhKEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4
LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlk
U3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAg
ICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3
aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAg
ICAgICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWQuaAppbmRleCA3MmNhZGY2OGVmNGQzMjY2Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi41OTQ3
ZmU1ZTUzODY1M2QwYWFjODQ5NGZlYThkYTk2N2MzMDg1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkLmgKQEAgLTM3LDEwICszNywxMSBAQCB0eXBlZGVmIFZlY3RvcjxXZWFrUHRyPFJlbmRlckJv
eD4sIDE+IEdyaWRDZWxsOwogdHlwZWRlZiBWZWN0b3I8VmVjdG9yPEdyaWRDZWxsPj4gR3JpZEFz
TWF0cml4OwogdHlwZWRlZiBMaXN0SGFzaFNldDxzaXplX3Q+IE9yZGVyZWRUcmFja0luZGV4U2V0
OwogCi1jbGFzcyBHcmlkQXJlYTsKIGNsYXNzIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjsKIGNsYXNz
IFJlbmRlckdyaWQ7CiAKK3N0cnVjdCBHcmlkQXJlYTsKKwogY2xhc3MgR3JpZCBmaW5hbCB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgR3JpZChSZW5kZXJHcmlkJik7CkBAIC0xMTEsNyArMTEyLDcg
QEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94KiBuZXh0R3JpZEl0ZW0oKTsKICAgICBib29sIGlz
RW1wdHlBcmVhRW5vdWdoKHVuc2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNv
bnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5z
aWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pOworICAgIHN0
ZDo6b3B0aW9uYWw8R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJh
Y2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKIAogcHJpdmF0ZToKICAgICBjb25z
dCBHcmlkQXNNYXRyaXgmIG1fZ3JpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJD
b3VudGVyLmNwcAppbmRleCBjZWNlZDM1ZTVjZTg3YmZiYzE0MDE4MzZjZDEzZWExYWVkZDdhZmMw
Li4wMGViZDVmZmMwNWI3MjIyYTRmN2E0M2IwYzQyMWIyYzM5NjU2ZDIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC00MzAsMjAgKzQzMCwxOSBAQCBT
dHJpbmcgUmVuZGVyQ291bnRlcjo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGJlZm9yZUFmdGVyQ29udGFpbmVyID0gYmVmb3JlQWZ0ZXJD
b250YWluZXItPnBhcmVudCgpOwogICAgICAgICB9Ci0gICAgICAgIG1ha2VDb3VudGVyTm9kZSgq
YmVmb3JlQWZ0ZXJDb250YWluZXIsIG1fY291bnRlci5pZGVudGlmaWVyKCksIHRydWUpLT5hZGRS
ZW5kZXJlcihjb25zdF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykpOworICAgICAgICBtYWtl
Q291bnRlck5vZGUoKmJlZm9yZUFmdGVyQ29udGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllciwg
dHJ1ZSktPmFkZFJlbmRlcmVyKGNvbnN0X2Nhc3Q8UmVuZGVyQ291bnRlciY+KCp0aGlzKSk7CiAg
ICAgICAgIEFTU0VSVChtX2NvdW50ZXJOb2RlKTsKICAgICB9CiAgICAgQ291bnRlck5vZGUqIGNo
aWxkID0gbV9jb3VudGVyTm9kZTsKICAgICBpbnQgdmFsdWUgPSBjaGlsZC0+YWN0c0FzUmVzZXQo
KSA/IGNoaWxkLT52YWx1ZSgpIDogY2hpbGQtPmNvdW50SW5QYXJlbnQoKTsKIAotICAgIFN0cmlu
ZyB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCB2YWx1ZSk7Cisg
ICAgU3RyaW5nIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCB2YWx1
ZSk7CiAKLSAgICBpZiAoIW1fY291bnRlci5zZXBhcmF0b3IoKS5pc051bGwoKSkgeworICAgIGlm
ICghbV9jb3VudGVyLnNlcGFyYXRvci5pc051bGwoKSkgewogICAgICAgICBpZiAoIWNoaWxkLT5h
Y3RzQXNSZXNldCgpKQogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+cGFyZW50KCk7CiAgICAg
ICAgIHdoaWxlIChDb3VudGVyTm9kZSogcGFyZW50ID0gY2hpbGQtPnBhcmVudCgpKSB7Ci0gICAg
ICAgICAgICB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCBjaGls
ZC0+Y291bnRJblBhcmVudCgpKQotICAgICAgICAgICAgICAgICsgbV9jb3VudGVyLnNlcGFyYXRv
cigpICsgdGV4dDsKKyAgICAgICAgICAgIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIu
bGlzdFN0eWxlLCBjaGlsZC0+Y291bnRJblBhcmVudCgpKSArIG1fY291bnRlci5zZXBhcmF0b3Ig
KyB0ZXh0OwogICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMjZmOGZjYmMwYWIyNzk2
MGM0OTM5MjIzZTc0OGQ5M2MzYjgzYzk5YS4uMWI2NzQ1YTllNzkwYjgwNWIxMzUwMDA0MmU0MWUw
OTNlZDgxNjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAt
NzY1LDEzICs3NjUsMTMgQEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFu
ZE9yZGVySXRlcmF0b3IoR3JpZCYgZ3JpZCkgY29uc3QKICAgICBncmlkLmVuc3VyZUdyaWRTaXpl
KG1heGltdW1Sb3dJbmRleCArIGV4cGxpY2l0Um93U3RhcnQsIG1heGltdW1Db2x1bW5JbmRleCAr
IGV4cGxpY2l0Q29sdW1uU3RhcnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJl
bmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVH
cmlkKEdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQ
b3NpdGlvbnMpIGNvbnN0CitHcmlkQXJlYSBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVh
QXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJC
b3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9u
LCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBjb25zdAogewogICAgIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBjcm9zc0RpcmVjdGlvbiA9IHNwZWNpZmllZERpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zID8gRm9yUm93cyA6IEZvckNvbHVtbnM7CiAgICAgY29uc3QgdW5zaWduZWQg
ZW5kT2ZDcm9zc0RpcmVjdGlvbiA9IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAg
ICB1bnNpZ25lZCBjcm9zc0RpcmVjdGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAg
ICAgR3JpZFNwYW4gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRl
ZERlZmluaXRlR3JpZFNwYW4oZW5kT2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlv
biArIGNyb3NzRGlyZWN0aW9uU3BhblNpemUpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRB
cmVhPihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9z
aXRpb25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29s
dW1ucyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAg
ICByZXR1cm4gR3JpZEFyZWEoc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9z
c0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0
aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBv
c2l0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJ
dGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9Hcmlk
SXRlbXMpIGNvbnN0CkBAIC03OTIsNyArNzkyLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNw
ZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW4K
ICAgICAgICAgdW5zaWduZWQgbWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uID0gbWFqb3JBeGlzUG9z
aXRpb25zLnN0YXJ0TGluZSgpOwogCiAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlk
LCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy5z
dGFydExpbmUoKSwgaXNHcmlkQXV0b0Zsb3dEZW5zZSA/IDAgOiBtaW5vckF4aXNDdXJzb3JzLmdl
dChtYWpvckF4aXNJbml0aWFsUG9zaXRpb24pKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdy
aWRBcmVhPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JB
eGlzUG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKKyAgICAgICAg
YXV0byBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlz
UG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYg
KCFlbXB0eUdyaWRBcmVhKQogICAgICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5
R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0
ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25z
KTsKIApAQCAtODI3LDcgKzgyNyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JB
eGlzSXRlbU9uR3JpZChHcmlkJiBncmlkLCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBBCiAgICAgdW5z
aWduZWQgbWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4
aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zID8gYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQg
OiBhdXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0OwogICAgIHVuc2lnbmVkIG1pbm9yQXhpc0F1dG9Q
bGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9y
Q29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3IuZmlyc3QgOiBhdXRvUGxhY2VtZW50Q3Vyc29y
LnNlY29uZDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhOwogICAgIEdyaWRTcGFu
IG1pbm9yQXhpc1Bvc2l0aW9ucyA9IGdyaWQuZ3JpZEl0ZW1TcGFuKGdyaWRJdGVtLCBhdXRvUGxh
Y2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkpOwogICAgIGlmIChtaW5vckF4aXNQb3NpdGlvbnMu
aXNUcmFuc2xhdGVkRGVmaW5pdGUoKSkgewogICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHRy
YWNrIGluIG1ham9yIGF4aXMgaWYgaW5pdGlhbCBwb3NpdGlvbiBpbiBtaW5vciBheGlzIGlzIGJl
Zm9yZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IuCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBSZW5k
ZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKEdyaWQmIGdyaWQsIFJlbmRlckJv
eCYgZ3JpZEl0ZW0sIEEKIAogICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgZW1wdHkgZ3JpZCBh
cmVhIGFzIGl0IGRvZXMgbm90IGZpdCBpbiB0aGUgbWlub3IgYXhpcyBkaXJlY3Rpb24uCiAgICAg
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZW1wdHkgZ3JpZCBh
cmVhIHlldCBhcyB3ZSBtaWdodCBmaW5kIGEgdmFsaWQgb25lIGluIHRoZSBuZXh0IGl0ZXJhdGlv
bi4KLSAgICAgICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gbnVsbHB0cjsKKyAgICAgICAgICAg
ICAgICBlbXB0eUdyaWRBcmVhID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBBcyB3ZSdyZSBtb3ZpbmcgdG8gdGhlIG5leHQgdHJhY2sgaW4gdGhlIG1ham9y
IGF4aXMgd2Ugc2hvdWxkIHJlc2V0IHRoZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IgaW4gdGhlIG1p
bm9yIGF4aXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAyOWFlNTk0
ODAwM2VlNmQyZGQ0NDNiNTY5OWRjYjJkN2MxN2I5NjI2Li42NWM5ZTZlMjUyNjg0OTcwMzM4NGRk
ZGNiYTE3ODNjNGJiNzdiMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgK
QEAgLTMyLDkgKzMyLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JpZEFy
ZWE7CiBjbGFzcyBHcmlkU3BhbjsKIAorc3RydWN0IEdyaWRBcmVhOworCiBzdHJ1Y3QgQ29udGVu
dEFsaWdubWVudERhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRBbGlnbm1l
bnREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMTEsNyArMTEy
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0mLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCkgY29uc3Q7CiAgICAgdm9pZCBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0
b3IoR3JpZCYpIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJl
bmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25z
dDsKKyAgICBHcmlkQXJlYSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNP
dXRzaWRlR3JpZChHcmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uLCBjb25zdCBHcmlkU3BhbiYpIGNvbnN0OwogICAgIHZvaWQgcGxhY2VTcGVjaWZpZWRNYWpv
ckF4aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7
CiAgICAgdm9pZCBwbGFjZUF1dG9NYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVj
dG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBBdXRvUGxhY2VtZW50Q3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA3ZThkZDY4ODI0Y2ZiNDU2
MjA4MGU1OTRlY2Q4NDAyYTZjOWZjMDMyLi5mOWVkZTFkOTBiMzkzNmYxMzA5ZDQ3YjI0MDM1MTU0
MmEyNzdjNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtOTcsNyArOTcsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIFdl
YkNvcmVIYXMzRFJlbmRlcmluZyA9IHRydWU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAh
VVNFKENPTVBPU0lUSU5HX0ZPUl9TTUFMTF9DQU5WQVNFUykKLXN0YXRpYyBjb25zdCBpbnQgY2Fu
dmFzQXJlYVRocmVzaG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CitzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGlu
ZyA9IDUwICogMTAwOwogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBlOTYzN2VlYmUy
MDYwOWFlMGM1ZDJiMWQ2ZjZiM2U2MWJjOWYxMjk4Li44NDZhZDE1MjVhZjIwNjYwN2I0MmJmNGVk
MTEwY2ZhYTkxNGU5M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAKQEAgLTQ2Nyw4ICs0NjcsOCBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpy
ZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAKICAg
ICBMZW5ndGhQb2ludCBvYmplY3RQb3NpdGlvbiA9IHN0eWxlKCkub2JqZWN0UG9zaXRpb24oKTsK
IAotICAgIExheW91dFVuaXQgeE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQ
b3NpdGlvbi54KCksIGNvbnRlbnRSZWN0LndpZHRoKCkgLSBmaW5hbFJlY3Qud2lkdGgoKSk7Ci0g
ICAgTGF5b3V0VW5pdCB5T2Zmc2V0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0
aW9uLnkoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOworICAg
IExheW91dFVuaXQgeE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlv
bi54LCBjb250ZW50UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRoKCkpOworICAgIExheW91
dFVuaXQgeU9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi55LCBj
b250ZW50UmVjdC5oZWlnaHQoKSAtIGZpbmFsUmVjdC5oZWlnaHQoKSk7CiAKICAgICBmaW5hbFJl
Y3QubW92ZSh4T2Zmc2V0LCB5T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Qm94UGFpbnRlci5jcHAKaW5kZXggY2E1Yjc0MGQ5MDQ0YmQ2NWUzNjZiNTdkNzZjMzQyOGMz
ZjllZTNmNi4uNGM0NzRjOTVlM2VlYzIyMmYwNTM5OTM1MjI1ZDRhMjE5YTYwMjhkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC02NDAsNyArNjQw
LDcgQEAgY29uc3QgU2hhZG93RGF0YSogVGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdygp
IGNvbnN0CiAgICAgaWYgKCF0ZXh0Qm94KCkubGVnYWN5SW5saW5lQm94KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRl
YnVnVGV4dFNoYWRvdyhMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5n
dGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExl
bmd0aCgyMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBT
UkdCQTx1aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTaGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFkb3coTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5
cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoMTAsIExlbmd0aFR5
cGU6OkZpeGVkKSwgTGVuZ3RoKDIwLCBMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpO
b3JtYWwsIHRydWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMTUwLCAwLCAwLCAxOTAgfSk7CiAgICAgcmV0
dXJuICZkZWJ1Z1RleHRTaGFkb3cuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludFN0eWxlLmgKaW5kZXggNDU5YmFmMTEyZmMwMzI3MGFmZTQ2ZmZlODRlZDBkNWJh
NmIyNmUzOS4uMjVjZjQ4Y2Y0OTI4MTJlYTNlYjBmZmY0NjAwMmNkZDBkNzc2ZWIyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTMzLDEzICszMywxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwotY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVy
VGV4dDsKIGNsYXNzIFNoYWRvd0RhdGE7CisKIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBU
ZXh0UGFpbnRTdHlsZSB7Ci0gICAgVGV4dFBhaW50U3R5bGUoKSB7IH0KKyAgICBUZXh0UGFpbnRT
dHlsZSgpID0gZGVmYXVsdDsKICAgICBUZXh0UGFpbnRTdHlsZShjb25zdCBDb2xvciYpOwogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRQYWludFN0eWxlJikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCmluZGV4IDU4NmNj
NjY5ODAyNjVkOTg2M2FjYWFhN2VlNmI4YTk4NjQ4MzI2YzYuLjdiZjViYzkwNmU4OGM1Mzc1ODEw
Y2MzZTFmYzI4ODk5MDlkNTBhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Db3VudGVyQ29udGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db3VudGVyQ29udGVudC5oCkBAIC0yOSwzMiArMjksMTkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDb3VudGVyQ29udGVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ291bnRlckNvbnRlbnQoY29uc3QgQXRvbVN0cmluZyYgaWRl
bnRpZmllciwgTGlzdFN0eWxlVHlwZSBzdHlsZSwgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9y
KQotICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbGlzdFN0
eWxlKHN0eWxlKQotICAgICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChzdHlsZSAhPSBMaXN0U3R5bGVUeXBlOjpTdHJpbmcpOwotICAgIH0KK3N0cnVj
dCBDb3VudGVyQ29udGVudCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQotICAgIExpc3RTdHlsZVR5cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4g
bV9saXN0U3R5bGU7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7
IHJldHVybiBtX3NlcGFyYXRvcjsgfQotCi1wcml2YXRlOgotICAgIEF0b21TdHJpbmcgbV9pZGVu
dGlmaWVyOwotICAgIExpc3RTdHlsZVR5cGUgbV9saXN0U3R5bGU7Ci0gICAgQXRvbVN0cmluZyBt
X3NlcGFyYXRvcjsKKyAgICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7CisgICAgTGlzdFN0eWxlVHlw
ZSBsaXN0U3R5bGU7CisgICAgQXRvbVN0cmluZyBzZXBhcmF0b3I7CiB9OwogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyQ29udGVudCYgYSwgY29uc3QgQ291bnRl
ckNvbnRlbnQmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50
JiBhLCBjb25zdCBDb3VudGVyQ29udGVudCYgYikKIHsKLSAgICByZXR1cm4gYS5pZGVudGlmaWVy
KCkgPT0gYi5pZGVudGlmaWVyKCkKLSAgICAgICAgJiYgYS5saXN0U3R5bGUoKSA9PSBiLmxpc3RT
dHlsZSgpCi0gICAgICAgICYmIGEuc2VwYXJhdG9yKCkgPT0gYi5zZXBhcmF0b3IoKTsKKyAgICBy
ZXR1cm4gYS5pZGVudGlmaWVyID09IGIuaWRlbnRpZmllcgorICAgICAgICAmJiBhLmxpc3RTdHls
ZSA9PSBiLmxpc3RTdHlsZQorICAgICAgICAmJiBhLnNlcGFyYXRvciA9PSBiLnNlcGFyYXRvcjsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5oCmluZGV4IDk1ZDM4NjI3ZTE0MTNmNTI2MWMwOWM5ZmQ5ZmIxYWEyMjBk
NTQ4YjQuLjcyNDBiOTZiZTgwZTk3MzM2YmNkY2JjZDRlZTdlMjhkYzY3ODg5ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTM1LDE4ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIHN0cnVjdCBGaWxs
U2l6ZSB7Ci0gICAgRmlsbFNpemUoKQotICAgICAgICA6IHR5cGUoRmlsbFNpemVUeXBlOjpTaXpl
KQotICAgIHsKLSAgICB9Ci0KLSAgICBGaWxsU2l6ZShGaWxsU2l6ZVR5cGUgdHlwZSwgY29uc3Qg
TGVuZ3RoU2l6ZSYgc2l6ZSkKLSAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICwgc2l6ZShz
aXplKQotICAgIHsKLSAgICB9Ci0KLSAgICBGaWxsU2l6ZVR5cGUgdHlwZTsKKyAgICBGaWxsU2l6
ZVR5cGUgdHlwZSB7IEZpbGxTaXplVHlwZTo6U2l6ZSB9OwogICAgIExlbmd0aFNpemUgc2l6ZTsK
IH07CiAKQEAgLTg0LDcgKzczLDcgQEAgcHVibGljOgogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKTsgfQog
ICAgIGNvbnN0IExlbmd0aFNpemUmIHNpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NpemVM
ZW5ndGg7IH0KICAgICBGaWxsU2l6ZVR5cGUgc2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxGaWxsU2l6ZVR5cGU+KG1fc2l6ZVR5cGUpOyB9Ci0gICAgRmlsbFNpemUgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIEZpbGxTaXplKHN0YXRpY19jYXN0PEZpbGxTaXplVHlwZT4obV9zaXpl
VHlwZSksIG1fc2l6ZUxlbmd0aCk7IH0KKyAgICBGaWxsU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1
cm4geyBzaXplVHlwZSgpLCBtX3NpemVMZW5ndGggfTsgfQogICAgIE1hc2tNb2RlIG1hc2tNb2Rl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWFza01vZGU+KG1fbWFza01vZGUpOyB9CiAK
ICAgICBjb25zdCBGaWxsTGF5ZXIqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQx
ZDk2MWRlODgyNmZiODMwMzMwOWI4ZTYzNTJmMjBmOWVhYi4uZDQ3NmY5MzE5ODdjZmNhNzE0MTRj
YmZkZWNkODFhYmIxZWRmY2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0dyaWRBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRBcmVhLmgKQEAgLTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRGVzcGl0
ZSBsaW5lIG51bWJlcnMgaW4gdGhlIHNwZWMgc3RhcnQgaW4gIjEiLCB0aGUgaW5kZXhlcyBoZXJl
IHN0YXJ0IGluICIwIi4KIGNsYXNzIEdyaWRTcGFuIHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBH
cmlkU3BhbiB1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQogICAgIHsKICAgICAgICAgcmV0dXJuIEdyaWRTcGFuKHN0YXJ0TGluZSwgZW5kTGlu
ZSwgVW50cmFuc2xhdGVkRGVmaW5pdGUpOwpAQCAtMTQyLDggKzE0MSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0KLSAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVm
aW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CisgICAgZW51bSBHcmlkU3Bh
blR5cGUgOiB1aW50OF90IHsgVW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0
ZSwgSW5kZWZpbml0ZSB9OwogCiAgICAgR3JpZFNwYW4oaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUsIEdyaWRTcGFuVHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQpAQCAtMTYzLDI0
ICsxNjEsMjQgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9zdGFydExpbmU7CiAgICAgaW50IG1fZW5k
TGluZTsKICAgICBHcmlkU3BhblR5cGUgbV90eXBlOwotCi0KIH07CiAKIC8vIFRoaXMgcmVwcmVz
ZW50cyBhIGdyaWQgYXJlYSB0aGF0IHNwYW5zIGluIGJvdGggcm93cycgYW5kIGNvbHVtbnMnIGRp
cmVjdGlvbi4KLWNsYXNzIEdyaWRBcmVhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICAvLyBIYXNoTWFwIHJlcXVpcmVzIGEgZGVmYXVsdCBjb25zdHVjdG9yLgor
c3RydWN0IEdyaWRBcmVhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisK
KyAgICBHcmlkU3BhbiByb3dzOworICAgIEdyaWRTcGFuIGNvbHVtbnM7CisKICAgICBHcmlkQXJl
YSgpCi0gICAgICAgIDogY29sdW1ucyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCi0g
ICAgICAgICwgcm93cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgIDog
cm93cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgICwgY29sdW1ucyhH
cmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCiAgICAgewogICAgIH0KIAotICAgIEdyaWRB
cmVhKGNvbnN0IEdyaWRTcGFuJiByLCBjb25zdCBHcmlkU3BhbiYgYykKLSAgICAgICAgOiBjb2x1
bW5zKGMpCi0gICAgICAgICwgcm93cyhyKQorICAgIEdyaWRBcmVhKEdyaWRTcGFuIHJvd3MsIEdy
aWRTcGFuIGNvbHVtbnMpCisgICAgICAgIDogcm93cyhyb3dzKQorICAgICAgICAsIGNvbHVtbnMo
Y29sdW1ucykKICAgICB7CiAgICAgfQogCkBAIC0xOTMsMTEgKzE5MSw4IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KLQotICAgIEdyaWRTcGFu
IGNvbHVtbnM7Ci0gICAgR3JpZFNwYW4gcm93czsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIEdyaWRBcmVhPiBOYW1lZEdyaWRBcmVhTWFwOwordXNpbmcgTmFtZWRHcmlkQXJlYU1hcCA9
IEhhc2hNYXA8U3RyaW5nLCBHcmlkQXJlYT47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oCmluZGV4IDg2YWNkMzMw
ZGY2OWY4M2IwZDJmZDMyMjdlYmI4MGU5ZWZlN2U4N2EuLjVmODhkZTFmYzljMjEyMmNlMjJhZDdl
MzBhMzBiMDg0OTM4NWU5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9HcmlkTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRMZW5ndGguaApAQCAtNDIsNyArNDIsNiBAQCBjbGFzcyBHcmlkTGVuZ3RoIHsKIHB1YmxpYzoK
ICAgICBHcmlkTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3Ro
KGxlbmd0aCkKLSAgICAgICAgLCBtX2ZsZXgoMCkKICAgICAgICAgLCBtX3R5cGUoTGVuZ3RoVHlw
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbGVuZ3RoLmlzVW5kZWZpbmVkKCkpOwpAQCAtNzIs
MTQgKzcxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBMZW5ndGhUeXBlICYmIG1fbGVuZ3RoLmlzQXV0bygpOyB9CiAKIHByaXZhdGU6Ci0g
ICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBwdXQgdGhlIDIgZm9sbG93aW5nIGZpZWxkcyBpbiBhIHVu
aW9uLCBidXQgTGVuZ3RoIGhhcyBhIGNvbnN0cnVjdG9yLAotICAgIC8vIGEgZGVzdHJ1Y3RvciBh
bmQgYSBjb3B5IGFzc2lnbm1lbnQgd2hpY2ggaXNuJ3QgYWxsb3dlZC4KKyAgICAvLyBDb3VsZCB1
c2UgYSBWYXJpYW50IGhlcmUgc2luY2Ugd2Ugb25seSB1c2UgbV9sZW5ndGggb3IgbV9mbGV4LCBh
bmQgbV90eXBlIGRldGVybWluZXMgd2hpY2guCiAgICAgTGVuZ3RoIG1fbGVuZ3RoOwotICAgIGRv
dWJsZSBtX2ZsZXg7Ci0gICAgZW51bSBHcmlkTGVuZ3RoVHlwZSB7Ci0gICAgICAgIExlbmd0aFR5
cGUsCi0gICAgICAgIEZsZXhUeXBlCi0gICAgfTsKKyAgICBkb3VibGUgbV9mbGV4IHsgMCB9Owor
ICAgIGVudW0gR3JpZExlbmd0aFR5cGUgOiBib29sIHsgTGVuZ3RoVHlwZSwgRmxleFR5cGUgfTsK
ICAgICBHcmlkTGVuZ3RoVHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBhZDVhYmFkYWMwNGY3ZDJlYmJjYzY3
MDRlMDEyOTNiMWRkZmFlM2E0Li4yZThkNTI2YTlmYTE5NWQ0NTc0MTYyZWU2MTc5ZjNlY2U2M2M3
ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKQEAgLTE0OTcsNyArMTQ5Nyw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0
aFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zCiAgICAgLy8g
U2hpZnQgZWxlbWVudCB0byB0aGUgYW5jaG9yIHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgog
ICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5z
Zm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlv
bigpOwogICAgIGF1dG8gYW5jaG9yID0gdHJhbnNmb3JtT3JpZ2luOwotICAgIGlmICghb2Zmc2V0
QW5jaG9yKCkueCgpLmlzQXV0bygpKQorICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueC5pc0F1dG8o
KSkKICAgICAgICAgYW5jaG9yID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hv
cigpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICB0
cmFuc2Zvcm0udHJhbnNsYXRlKC1hbmNob3IueCgpLCAtYW5jaG9yLnkoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNzRkZTkyN2ZmYzcy
NjI3YjI1MzRlNWE5Zjk4YmU3YmZlNTAwYTgzOC4uMjg5NTYzZWQyZmZlY2U5ZGIzY2U1OWU3YzJj
NTk5ODA5OGI2NTNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTEwOSw3ICsxMDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEJvcmRlckRhdGE7CiBjbGFzcyBDb250ZW50RGF0YTsKLWNsYXNzIENvdW50ZXJDb250ZW50Owog
Y2xhc3MgQ3Vyc29yTGlzdDsKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRm9udE1ldHJpY3M7
CkBAIC0xMjEsNiArMTIwLDcgQEAgY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhOwogY2xhc3MgU3R5
bGVTY3JvbGxTbmFwQXJlYTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCitzdHJ1Y3Qg
Q291bnRlckNvbnRlbnQ7CiBzdHJ1Y3QgU2Nyb2xsU25hcEFsaWduOwogc3RydWN0IFNjcm9sbFNu
YXBUeXBlOwogCkBAIC02OTksNyArNjk5LDcgQEAgcHVibGljOgogICAgIFRleHRDb21iaW5lIHRl
eHRDb21iaW5lKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRDb21iaW5lKTsgfQogICAgIGJvb2wgaGFzVGV4dENvbWJpbmUo
KSBjb25zdCB7IHJldHVybiB0ZXh0Q29tYmluZSgpICE9IFRleHRDb21iaW5lOjpOb25lOyB9CiAK
LSAgICBjb25zdCBUYWJTaXplJiB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+dGFiU2l6ZTsgfQorICAgIFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemU7IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRl
cnMKIApAQCAtMTI3NCw3ICsxMjc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2Ryb3BG
aWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGJhY2tkcm9wRmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAj
ZW5kaWYKIAotICAgIHZvaWQgc2V0VGFiU2l6ZShjb25zdCBUYWJTaXplJiBzaXplKSB7IFNFVF9W
QVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNldFRh
YlNpemUoVGFiU2l6ZSBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6
ZSwgc2l6ZSk7IH0KIAogICAgIHZvaWQgc2V0QnJlYWtCZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFr
QmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0JlZm9yZSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJyZWFrQmVoYXZpb3IpKTsgfQogICAgIHZvaWQgc2V0QnJl
YWtBZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGJyZWFrQWZ0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2
aW9yKSk7IH0KQEAgLTE1ODIsNyArMTU4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENv
bWJpbmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0K
ICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJl
dHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0
aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0Rml0OjpGaWxsOyB9Ci0gICAgc3RhdGljIExl
bmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExl
bmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlw
ZTo6UGVyY2VudCkpOyB9CisgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3Np
dGlvbigpIHsgcmV0dXJuIHsgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVu
Z3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSB9OyB9CiAgICAgc3RhdGljIEVtcHR5Q2Vs
bCBpbml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJuIEVtcHR5Q2VsbDo6U2hvdzsgfQogICAgIHN0
YXRpYyBMaXN0U3R5bGVQb3NpdGlvbiBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVy
biBMaXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lkZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0aWFsTGlzdFN0eWxlU3RyaW5nVmFsdWUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9
CkBAIC0xODk1LDExICsxODk1LDExIEBAIHB1YmxpYzoKIAogICAgIExlbmd0aFBvaW50IG9mZnNl
dFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0
UG9zaXRpb247IH0KICAgICB2b2lkIHNldE9mZnNldFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9z
aXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvZmZzZXRQb3NpdGlvbiwg
V1RGTW92ZShwb3NpdGlvbikpOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZz
ZXRQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRv
KSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBp
bml0aWFsT2Zmc2V0UG9zaXRpb24oKSB7IHJldHVybiB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7
IExlbmd0aFR5cGU6OkF1dG8gfSB9OyB9CiAKICAgICBMZW5ndGhQb2ludCBvZmZzZXRBbmNob3Io
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vZmZzZXRBbmNob3I7IH0K
ICAgICB2b2lkIHNldE9mZnNldEFuY2hvcihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zmc2V0QW5jaG9yLCBXVEZNb3ZlKHBvc2l0aW9u
KSk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0
dXJuIExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5
cGU6OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0QW5jaG9y
KCkgeyByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0g
fTsgfQogCiAgICAgT2Zmc2V0Um90YXRpb24gb2Zmc2V0Um90YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0Um90YXRlOyB9CiAgICAgdm9pZCBzZXRPZmZz
ZXRSb3RhdGUoT2Zmc2V0Um90YXRpb24mJiByb3RhdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIG9mZnNldFJvdGF0ZSwgV1RGTW92ZShyb3RhdGlvbikpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggODdjYTJiMjUy
Zjk2Zjg1ZTRiNDQwYjZmZDJjMGY4ZTkzYWRlN2EwYy4uZGUzZGM2YzRjZGUxMjk3ZWVhMGNmY2Q2
ZDYxZDY0NDEyODEwZTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcApAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
aGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCi0gICAgOiBtX2xvY2F0
aW9uKG8ubV9sb2NhdGlvbi54KCksIG8ubV9sb2NhdGlvbi55KCkpCisgICAgOiBtX2xvY2F0aW9u
KG8ubV9sb2NhdGlvbikKICAgICAsIG1fc3ByZWFkKG8ubV9zcHJlYWQpCiAgICAgLCBtX3JhZGl1
cyhvLm1fcmFkaXVzKQogICAgICwgbV9jb2xvcihvLm1fY29sb3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAppbmRleCAyMmZlZjc2MmJjYTMxMGI2M2FlZmU4
NTg2ZjQyMmFiOWY4M2MwNWYyLi5kOWE0MWExNWJhMGQxZWZhOWM4ZmU1NDA3YjNkNTBlOWYyZWUw
YWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIFNoYWRvd0RhdGEoKSA9IGRlZmF1bHQ7CiAKICAg
ICBTaGFkb3dEYXRhKGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbiwgTGVuZ3RoIHJhZGl1cywg
TGVuZ3RoIHNwcmVhZCwgU2hhZG93U3R5bGUgc3R5bGUsIGJvb2wgaXNXZWJraXRCb3hTaGFkb3cs
IGNvbnN0IENvbG9yJiBjb2xvcikKLSAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uLngoKSwg
bG9jYXRpb24ueSgpKQorICAgICAgICA6IG1fbG9jYXRpb24obG9jYXRpb24pCiAgICAgICAgICwg
bV9zcHJlYWQoc3ByZWFkKQogICAgICAgICAsIG1fcmFkaXVzKHJhZGl1cykKICAgICAgICAgLCBt
X2NvbG9yKGNvbG9yKQpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG8pOwogICAgIH0KICAgICAKLSAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7
IHJldHVybiBtX2xvY2F0aW9uLngoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9jYXRpb24ueSgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NhdGlvbi54OyB9CisgICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1
cm4gbV9sb2NhdGlvbi55OyB9CiAgICAgY29uc3QgTGVuZ3RoUG9pbnQmIGxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQogICAgIGNvbnN0IExlbmd0aCYgcmFkaXVzKCkgY29u
c3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KICAgICBMYXlvdXRVbml0IHBhaW50aW5nRXh0ZW50KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNj
cm9sbFNuYXBQb2ludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNj
cm9sbFNuYXBQb2ludHMuaAppbmRleCBhMmM3YjBkYjNkNmU1ZmVkNjUzNmE1NjM5YjQ1NzkyZTQ3
ODAxMTc5Li41Mzc0NzIyYWIwOTRjNTc4Mzc4Y2RkMWU1ZDI5YWYwZWQ5OWE1YjYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBv
aW50cy5oCkBAIC0yNSwxMSArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkxl
bmd0aEJveC5oIgotI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZUNvbnN0YW50cy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggOTE1MDQwMWE2NDVlNDI4NGU5MTY5MWJh
MGJhNWM5NzhjOTgyZWZiZC4uMTI3ZWYzMjcyNDQ2NmNkNDhjMzc0MDJkZTc2MGE1Yjk3MGE2ZmE0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAg
LTI2OCw4ICsyNjgsOCBAQCBpbmxpbmUgVGFiU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VGFiU2l6ZShjb25zdCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogewogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIFRhYlNpemUocHJp
bWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpLCBTcGFjZVZhbHVlVHlwZSk7Ci0gICAgcmV0dXJuIFRh
YlNpemUocHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNz
c1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSksIExlbmd0aFZhbHVlVHlwZSk7CisgICAgICAgIHJl
dHVybiB7IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSwgVGFiU2l6ZTo6U3BhY2VzIH07Cisg
ICAgcmV0dXJuIHsgcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0
YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSksIFRhYlNpemU6Okxlbmd0aCB9OwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNDE3LDcgKzQxNyw3IEBAIGlubGluZSBMZW5ndGhQ
b2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24oQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsCiAgICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8
Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihidWlsZGVyU3RhdGUsICpwYWlyLT5maXJzdCgp
KTsKICAgICBMZW5ndGggbGVuZ3RoWSA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1
ZVRvcCwgQ1NTVmFsdWVCb3R0b20+KGJ1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKIAot
ICAgIHJldHVybiBMZW5ndGhQb2ludChsZW5ndGhYLCBsZW5ndGhZKTsKKyAgICByZXR1cm4geyBs
ZW5ndGhYLCBsZW5ndGhZIH07CiB9CiAKIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UG9zaXRpb25PckF1dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTQyNyw3ICs0MjcsNyBAQCBpbmxpbmUgTGVuZ3RoUG9p
bnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlcgogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1BhaXIoKSkKICAgICAgICAgcmV0dXJu
IGNvbnZlcnRQb3NpdGlvbihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIAotICAgIHJldHVybiBMZW5n
dGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRv
KSk7CisgICAgcmV0dXJuIHsgeyBMZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0
byB9IH07CiB9CiAKIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWls
ZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaApp
bmRleCAxM2NhZDliN2ZkNzcyYTZjZDIzOTgzNDBlMjgyNzcxYmQ0OWI0NDYxLi5lODNlZjljNGE3
ZjJkNGNlMTAyYWRkYjc5YzlhN2QwMjliMzA4Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtOTU2LDcgKzk1Niw3IEBAIGlubGluZSB2b2lkIEJ1aWxk
ZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gYnVpbGRlclN0YXRlLnN0
eWxlKCkuY29sb3IoKTsKIAotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNo
YWRvd0RhdGE+KExlbmd0aFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8g
Y29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0
YSA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oTGVuZ3RoUG9pbnQgeyB4LCB5IH0sIGJsdXIsIHNw
cmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93
LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAg
ICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwg
IWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmly
c3QgZW50cnkKICAgICAgICAgZWxzZQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgaW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIENTU1ZhbHUKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3Vu
dGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRl
bnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0
aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0g
ICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3Vu
dGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBh
cmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJD
b250ZW50PihDb3VudGVyQ29udGVudCB7IGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0
U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpIH0pOwogICAgICAgICAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwog
ICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggMzM1ZjNmYWRmYWFlZWUzZWI2
MjUxZWZiOTg5OTUzOTE0ZDYwMTYzNS4uZDhmNzdmNmFmMWI1N2EyMDhhNGVlMmRlMzM1OWE1YmFh
ODlkMmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFn
ZU9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRl
IDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDdiOTcxOWRhNGFjMzk3ODk3MzNlZTdhODMyYTMzMWZjNWVlMTRhMDcuLmRjMTkwMDY4MjM3
OWM5YzhlMTNjOTE4YWJjZGFlMmFjZWZkMTVkMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBs
aWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9NZWRpYVRpbWUuY3BwOiBVcGRhdGVkIHRlc3RzIGZvciBjaGFuZ2UgdG8gT3B0aW9uU2V0IGZv
cgorICAgICAgICBNZWRpYVRpbWUgZmxhZ3MsIGFuZCBmb3IgbmFtZSBjaGFuZ2UgZnJvbSBSb3Vu
ZGluZ0ZsYWdzIHRvIFJvdW5kaW5nTW9kZS4KKwogMjAyMi0wMS0yNCAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEZpeGVkVmVjdG9yOjpjbGVhcigpLCBjb250
YWlucygpLCBmaW5kKCksIGFuZCBmaW5kTWF0Y2hpbmcoKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCmluZGV4IGIwYjU0YTgwM2ZhYzg1ZDE1ODRlNzIzYzg2
ZTFkOWNiYTQ0ZGNlN2EuLmRjOGUyODk4NGFlM2E4MDJlNTczODY3NjYxNTI5NTk0YWM1OWQ0Nzkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcApAQCAtMTcx
LDcgKzE3MSw3IEBAIFRFU1QoV1RGLCBNZWRpYVRpbWUpCiAKICAgICAvLyBDb25zdGFudHMKICAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBNZWRpYVRpbWUoMCwgMSkpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIE1lZGlhVGltZSgtMSwgMSwgMCkp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIE1lZGlhVGltZSgtMSwg
MSwgeyB9KSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUo
KSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6UG9zaXRpdmVJbmZpbml0ZSkpOwogICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAx
LCBNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGUpKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
OjppbmRlZmluaXRlVGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpJbmRlZmluaXRl
KSk7CkBAIC0yNTQsNjkgKzI1NCw2OSBAQCBURVNUKFdURiwgTWVkaWFUaW1lKQogICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMiwgMikudG9UaW1lU2NhbGUoMSkudGltZVZhbHVlKCksIDEpOwogICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgNikudG9UaW1lU2NhbGUoMykudGltZVZhbHVlKCksIDEp
OwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSkuaGFzQmVlblJv
dW5kZWQoKSwgdHJ1ZSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCks
IDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMCk7
Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdz
OjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6
SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3
YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0x
NTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdh
eUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0
OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5
RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRp
bWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAw
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6
VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEs
IDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybyku
dGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVl
KCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6
OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgx
LCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVy
bykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFs
dWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsK
LSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdz
OjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5
RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDks
IDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVpl
cm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVW
YWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUo
KSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0y
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDAp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMik7
Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwg
Mik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZp
bml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZp
bml0eSkudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZp
bml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZp
bml0eSkudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEs
IDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01
MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5l
Z2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dh
cmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdz
OjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6
OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxm
QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgz
LCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJv
KS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRp
bWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVl
KCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCks
IC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDAp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRa
ZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVl
KCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9k
ZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
LTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRa
ZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVW
YWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3
YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEs
IDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUo
KSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpB
d2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
NDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1l
VmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUo
KSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMik7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDAp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwg
MCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAt
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZh
bHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1
ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVl
KCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZh
bHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5p
dHkpLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxKS50b1RpbWVTY2FsZSgyKSwgTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptaW4oKSwgMSkudG9UaW1lU2NhbGUoMiksIE1lZGlhVGltZTo6bmVn
YXRpdmVJbmZpbml0ZVRpbWUoKSk7CiAgICAgaW50NjRfdCBtYXhJbnQzMiA9IG51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptYXgoKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG1heEludDMyICog
MiwgMSkudG9UaW1lU2NhbGUoMikudGltZVZhbHVlKCksIG1heEludDMyICogNCk7CiAgICAgaW50
NjRfdCBiaWdJbnQgPSAxTEwgPDwgNjI7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQs
IDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAyOSkudGltZVZhbHVlKCksIGJpZ0ludCAvIDQp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50ICsgMSwgMVUgPDwgMzEpLnRvVGltZVNj
YWxlKDFVIDw8IDI5LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVW
YWx1ZSgpLCBiaWdJbnQgLyA0KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCArIDEs
IDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAyOSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6
OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCBiaWdJbnQgLyA0KTsKICAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKGJpZ0ludCArIDEsIDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAyOSkuaGFzQmVl
blJvdW5kZWQoKSwgdHJ1ZSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQgLSAyLCBN
ZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUpLnRvVGltZVNjYWxlKE1lZGlhVGltZTo6TWF4aW11
bVRpbWVTY2FsZSAtIDEpLmhhc0JlZW5Sb3VuZGVkKCksIHRydWUpOwogICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoYmlnSW50LCAxKS50b1RpbWVTY2FsZShNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2Nh
bGUpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOwo=
</data>
<flag name="commit-queue"
          id="476094"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449874</attachid>
            <date>2022-01-24 15:32:39 -0800</date>
            <delta_ts>2022-01-24 16:32:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220124153238.patch</filename>
            <type>text/plain</type>
            <size>147174</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTE3NzcyM2RlNTdjZWM5YmY2ZmE2ZjZmYjI3MGI5NGZjMjIwNzk1Li5mOTE1NDAwMTcyNzhkZjcy
NWZjNTM5NTI3MTJmNDY1MmIwZjdmN2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBTdXBwb3J0IGltcG9ydCBhc3NlcnRpb24gc3ludGF4CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5N2NlODJi
MGYwNDYwNzliZGUzMTFjMTNjMDg2M2E0MTJiZmY2OGUuLjkwODI5YjU1YzE4N2VmMWIyOGY1YjU4
MjYxZmRhMjE1MTIwZGJmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA1IEBACisyMDIyLTAxLTI0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxp
ZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Gb3J3YXJkLmg6IEFkZCBTZWNv
bmRzIGFuZCBXYWxsVGltZSB0byB0aGUgdXNpbmcgc2VjdGlvbi4KKworICAgICAgICAqIHd0Zi9M
b2NrLmg6IFVzZSBGb3J3YXJkLmggaW5zdGVhZCBvZiBTZWNvbmRzLmggc2luY2UgU2Vjb25kcyBp
cyBvbmx5IHVzZWQKKyAgICAgICAgaGVyZSBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJuIHR5cGUs
IG5vIGFjdHVhbCB1c2Ugb2YgdGhlIGNsYXNzIGluIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiB3
dGYvTWVkaWFUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRpbWUpOiBE
ZWxldGVkIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHRoYXQgdXNlZCB0aGUgYXNzaWdubWVudAorICAg
ICAgICBvcGVyYXRvci4gVGhlIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciB3b3JrcyBmaW5lLCB3
ZSBkb24ndCBoYXZlIHRvIHdyaXRlIG9uZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpNZWRp
YVRpbWUpOiBBZGRlZCBhIEhhc0RvdWJsZSBjb25zdHJ1Y3RvciBmb3IgdXNlIGluIGNyZWF0ZQor
ICAgICAgICBmdW5jdGlvbnMuIEl0J3MgY29uc3RleHByIGJ1dCBpdCdzIGluIHRoZSAuY3BwIGZp
bGUgYmVjYXVzZSBpdCdzIHByaXZhdGUuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRl
V2l0aEZsb2F0KTogU2ltcGxpZmllZCBieSB1c2luZyB0aGUgSGFzRG91YmxlIGNvbnN0cnVjdG9y
LgorICAgICAgICBBbHNvIHVzZSBzdGQ6OmlzbmFuIGluc3RlYWQgb2YgYSB0cmlja3kgYWx0ZXJu
YXRlIHdheSBvZiBkb2luZyBpdC4gUmVtb3ZlZCBhCisgICAgICAgIHNwZWNpYWwgY2FzZSBmb3Ig
aW5maW5pdHkgc2luY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gY2FzZXMgYWxyZWFkeSBjb3Zl
ciB0aGF0LgorICAgICAgICBBbmQgcmVwbGFjZWQgYSBzdGF0aWNfY2FzdCB3aXRoIGFuIGFzc2ln
bm1lbnQgdG8gdGhlIGRlc2lyZWQgdHlwZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKTogRGl0dG8uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgc28gc2ltaWxhciB0aGUK
KyAgICAgICAgc2hvdWxkIHByb2JhYmx5IGJlIHRlbXBsYXRlZCBpbnN0ZWFkIG9mIHJlcGVhdGVk
IHR3aWNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvRmxvYXQgY29uc3QpOiBSZXBsYWNl
ZCBhIHN0YXRpY19jYXN0IHdpdGggYXNzaWdubWVudCB0byB0aGUKKyAgICAgICAgZGVzaXJlZCB0
eXBlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvRG91YmxlIGNvbnN0KTogRGl0dG8uCisg
ICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I9KTogRGVsZXRlZC4gVGhlIGRlZmF1bHQg
YXNzaWdubWVudCBvcGVyYXRvciB3b3JrcyBmaW5lLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6
Om9wZXJhdG9yKyBjb25zdCk6IFRha2UgdGhlIGFyZ3VtZW50IGJ5IHZhbHVlIGluc3RlYWQgb2Yg
cmVmZXJlbmNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yLSBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yKiBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yISBjb25zdCk6IFNpbXBsaWZpZWQgdGhl
IGltcGxlbWVudGF0aW9uIGJ5IHVzaW5nCisgICAgICAgIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGNo
ZWNraW5nIHRoZSBmbGFncyBkaXJlY3RseS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVy
YXRvciBib29sIGNvbnN0KTogQ2FsbCBvcGVyYXRvciEgaW5zdGVhZCBvZiByZXBlYXRpbmcgdGhl
CisgICAgICAgIGxvZ2ljIHR3aWNlLgorICAgICAgICAoV1RGOjpvcmRlcmluZyk6IEFkZGVkIHR3
byBvdmVybG9hZGVkIGZ1bmN0aW9ucy4gT25lIGlzIGEgdGVtcGxhdGUgdGhhdCBjb21wYXJlcwor
ICAgICAgICBzY2FsYXJzIGFuZCB0aGUgb3RoZXIgY29tcGFyZXMgdHdvIE1lZGlhVGltZSBvYmpl
Y3RzLiBUaGUgc2Vjb25kIG9uZSByZXBsYWNlcyB0aGUKKyAgICAgICAgTWVkaWFUaW1lOjpjb21w
YXJlIGZ1bmN0aW9uLCB3aGljaCBpcyBub3cganVzdCBhIGxpZ2h0d2VpZ2h0IGNvdmVyIGZvciB0
aGlzLgorICAgICAgICBUaGUgb2xkIGNvZGUgaGFkIHRyaWNreSBsb2dpYywgYW5kIHRoaXMgbmV3
IGZ1bmN0aW9uIGlzIGEgY29tcGxldGUgcmV3cml0ZS4KKyAgICAgICAgVG8gbWFrZSB0aGUgbG9n
aWMgZWFzeSB0byBmb2xsb3csIHdlIGV4dHJhY3QgdGhlIHBpZWNlcyBvZiB0aGUgTWVkaWFUaW1l
IGFuZAorICAgICAgICBjb21wYXJlIHRoZW0uIElmIHRoZXkgYXJlIGVxdWFsIHRoZW4gd2UgZmFs
bCB0aHJvdWdoIHRvIHRoZSBuZXh0LCBhbmQgc28gb24uCisgICAgICAgIEF0IHRoZSBlbmQgdGhl
cmUgYXJlIHZhcmlvdXMgY2FzZXMgZm9yIHRpbWVzIHdlIGNhbiBjb21wYXJlIHdpdGhvdXQgZG9p
bmcKKyAgICAgICAgYXJpdGhtZXRpYywgYW5kIHRoZXNlIGFyZSB0aGUgc2FtZSBhcyB0aGUgb25l
cyB0aGF0IHdlcmUgYWxyZWFkeSBoZXJlLCBidXQgd2l0aAorICAgICAgICBzaW1wbGlmaWVkIGxv
Z2ljIGluIHNvbWUgY2FzZXMgdGhhdCBzaG91ZGwgYmUgZWFzaWVyIHRvIGZvbGxvdywgYW5kIG5v
IHVzZXMgb2YKKyAgICAgICAgc3RhdGljX2Nhc3QgYW55IG1vcmUuCisgICAgICAgIChXVEY6Ok1l
ZGlhVGltZTo6aXNCZXR3ZWVuIGNvbnN0KTogVGFrZSBhcmd1bWVudHMgYnkgdmFsdWUgaW5zdGVh
ZCBvZiByZWZlcmVuY2UuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6emVyb1RpbWUpOiBEZWxl
dGVkLiBOb3cgYSBjb25zdGV4cHIgaW4gdGhlIGhlYWRlci4KKyAgICAgICAgKFdURjo6TWVkaWFU
aW1lOjppbnZhbGlkVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXVEY6
Ok1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAg
ICAgKFdURjo6TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAg
ICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvVGltZVNjYWxlIGNvbnN0KTogVXBkYXRlZCBzaW5jZSBS
b3VuZGluZ0ZsYWdzIGlzIG5vdworICAgICAgICBSb3VuZGluZ01vZGUuIEl0IGRpZG4ndCBtYWtl
IHNlbnNlIHRvIHRyZWF0IG11dHVhbGx5IGV4Y2x1c2l2ZSByb3VuZGluZyBwb2xpY2llcworICAg
ICAgICBhcyAiZmxhZ3MiLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSk6
IERpdHRvLiBBbHNvIHVzZSBzdGQ6OmV4Y2hhbmdlIGluc3RlYWQgb2Ygc3RkOjpzd2FwCisgICAg
ICAgIGFuZCB1c2Ugc3RkOjphYnMgaW5zdGVhZCBvZiBsbGFicy4KKyAgICAgICAgKFdURjo6TWVk
aWFUaW1lOjp0b0pTT05PYmplY3QgY29uc3QpOiBSZW1vdmVkIHN0YXRpY19jYXN0IHRvIGRvdWJs
ZS4KKyAgICAgICAgKFdURjo6YWJzKTogVGFrZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0ZWFkIG9m
IHJlZmVyZW5jZS4gUmVuYW1lZCBhcmd1bWVudCBmcm9tIHJocworICAgICAgICBzaW5jZSB0aGUg
YXJndW1lbnQgaXMgbm90IHRoZSByaWdodC1oYW5kIHNpZGUgb2YgYW4gb3BlcmF0b3IuIFJlbW92
ZWQgdW5uZWVkZWQKKyAgICAgICAgc3BlY2lhbCBjYXNlIHRvIGhhbmRsZSBpbnZhbGlkIGJlY2F1
c2UgdGhlIGZ1bmN0aW9uIHdvcmtzIGZpbmUgb24gaW52YWxpZCB3aXRob3V0IGl0LgorICAgICAg
ICBVc2Ugc3RkOjphYnMgaW5zdGVhZCBvZiBmYWJzLgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8
KTogVGFrZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0ZWFkIG9mIHJlZmVyZW5jZS4KKworICAgICAg
ICAqIHd0Zi9NZWRpYVRpbWUuaDogUmVtb3ZlZCBtYW55IHVubmVlZGVkIGluY2x1ZGVzLiBSZW1v
dmVkIFdURl9FWFBPUlRfUFJJVkFURQorICAgICAgICBmcm9tIHRoZSBjbGFzcyBiZWNhdXNlIGl0
J3Mgbm90IGNvbXBhdGlibGUgd2l0aCBpbmxpbmVkIGZ1bmN0aW9ucyBhY2NvcmRpbmcgdG8KKyAg
ICAgICAgdGhlIHN0eWxlIGNoZWNrZXIgc2NyaXB0LCBpbnN0ZWFkIGV4cG9ydGluZyBpbmRpdmlk
dWFsIGZ1bmN0aW9ucy4gVXNlIE9wdGlvblNldAorICAgICAgICBmb3IgdGhlIGZsYWdzLiBDaGFu
Z2VkIGZ1bmN0aW9ucyB0byB0YWtlIE1lZGlhVGltZSBieSB2YWx1ZSwgc2luY2UgaXQncyBqdXN0
IGEKKyAgICAgICAgZmV3IHNjYWxhcnMsIG5vIHNpZ25pZmljYW50IGNvc3QgdG8gY29weWluZyBp
dCwgYW5kIHBhc3NpbmcgYnkgdmFsdWUgbWVhbnMgdGhlCisgICAgICAgIHdob2xlIHRoaW5nIG1p
Z2h0IGVuZCB1cCBpbiByZWdpc3RlcnMgc2luY2Ugd2Ugd29uJ3QgbmVlZCBhIHBvaW50ZXIgdG8g
aXQgdG8KKyAgICAgICAgcGFzcyBhcyB0aGUgcmVmZXJlbmNlLiBNYWRlIHRoZSB2YXJpb3VzIHNw
ZWNpYWwgdGltZXMgcmV0dXJuIGNvbnN0ZXhwciB2YWx1ZXMsCisgICAgICAgIHdoaWNoIHdpbGwg
Y29tcGlsZSB0aGUgYXBwcm9wcmlhdGUgYml0IHBhdHRlcm4gd2l0aG91dCBhbnkgY29tcHV0YXRp
b24gbmVlZGVkLgorICAgICAgICBDaGFuZ2VkIHRoZSB0aW1lVmFsdWUgYW5kIHRpbWVTY2FsZSBm
dW5jdGlvbnMgdG8gcmV0dXJuIHRoZSBzY2FsYXJzLCBub3QgYQorICAgICAgICBjb25zdCByZWZl
cmVuY2UuIFJlbmFtZWQgUm91bmRpbmdGbGFncyB0byBSb3VuZGluZ01vZGUgc2luY2UgaXQncyBh
IGJ1bmNoIG9mCisgICAgICAgIG11dHVhbGx5IGV4Y2x1c2l2ZSByb3VuZGluZyBtb2Rlcywgbm90
IGEgc2V0IG9mIGZsYWdzIHdlIGNhbiBjb21iaW5lLiBSZW5hbWVkCisgICAgICAgIHRoZSBkYXRh
IG1lbWJlcnMsIHNpbmNlIHRoZXkgZG9u4oCZdCBhbGwgbmVlZCBhICJ0aW1lIiBwcmVmaXggaW4g
YSBjbGFzcyB0aGF0IGlzCisgICAgICAgIGFscmVhZHkgbmFtZWQgTWVkaWFUaW1lLiBUb29rIHNv
bWUgdW5uZWVkZWQgY29uc3Qgb3V0IG9mIE1lZGlhVGltZVJhbmdlLgorICAgICAgICBBZGRlZCB0
aGUgRW51bVRyYWl0cyBmb3IgdGhlIGZsYWdzIHNvIHRoZXkgY2FuIGJlIGVuY29kZWQgYW5kIGRl
Y29kZWQuIEJlZm9yZQorICAgICAgICB3ZSB3ZXJlIGVuY29kaW5nIHRoZSBzZXQgb2YgZmxhZ3Mg
YXMgYSB1aW50OF90LCB0aGlzIGlzIGJldHRlci4KKworICAgICAgICAqIHd0Zi9TZWNvbmRzLmg6
IE1vdmVkIHRoZSAidXNpbmcgV1RGOjpTZWNvbmRzIiB0byBGb3J3YXJkLmguCisKKyAgICAgICAg
KiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOiBJbmNsdWRlIEZvcndhcmQuaCBpbnN0ZWFkIG9m
IFdhbGxUaW1lLmggc2luY2UKKyAgICAgICAgdGhpcyBmaWxlIG9ubHkgZGVmaW5lcyBhIGZ1bmN0
aW9uIHdpdGggYSBXYWxsVGltZSBhcmd1bWVudCBhbmQgZG9lc24ndCBuZWVkCisgICAgICAgIHRv
IHB1bGwgdGhlIGVudGlyZSBjbGFzcyBkZWZpbml0aW9uIGluLgorCisgICAgICAgICogd3RmL1VS
TC5jcHA6CisgICAgICAgIChXVEY6OnBvcnRBbGxvd2VkKTogVXNlIFNvcnRlZEFycmF5U2V0Lgor
CisgICAgICAgICogd3RmL1dhbGxUaW1lLmg6IE1vdmVkIHRoZSAidXNpbmcgV1RGOjpXYWxsVGlt
ZSIgdG8gRm9yd2FyZC5oLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRD
b2Rlci5oOiBJbmNsdWRlIDxvcHRpb25hbD4gaW5zdGVhZCBvZiBGb3J3YXJkLmguCisgICAgICAg
IFRoZSBmb3JtZXIgaXMgYWxsIHRoYXQncyBuZWVkZWQuCisKKyAgICAgICAgKiB3dGYvcG9zaXgv
VGhyZWFkaW5nUE9TSVguY3BwOiBBZGRlZCBhbiBpbmNsdWRlIG9mIFdhbGxUaW1lLmggc2luY2UK
KyAgICAgICAgVGhyZWFkaW5nUHJpbWl0aXZlcy5oIG5vIGxvbmdlciBwdWxscyBpdCBpbi4KKwor
ICAgICAgICAqIHd0Zi90aHJlYWRzL1NpZ25hbHMuaDogQWRkZWQgYW4gaW5jbHVkZSBvZiA8b3B0
aW9uYWw+IHNpbmNlIExvY2suaCBubworICAgICAgICBsb25nZXIgcHVsbHMgaXQgaW4gYnkgaW5j
bHVkaW5nIFNlY29uZHMuaC4KKworICAgICAgICAqIHd0Zi93aW4vVGhyZWFkaW5nV2luLmNwcDog
QWRkZWQgaW5jbHVkZSBvZiBXYWxsVGltZS5oIHNpbmNlCisgICAgICAgIFRocmVhZGluZ1ByaW1p
dGl2ZXMuaCBubyBsb25nZXIgcHVsbHMgaXQgaW4uCisKKwogMjAyMi0wMS0yNCAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAgICBCdWlsZCBmYWlsdXJl
IHdpdGggR0NDIDEyOiBubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byAnZW5kKExDaGFy
IFs3XSknCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNDQyOGUwMTdlYzYyOGUwY2Y2YmQzYmIzY2NjYzY2YmFjYWIy
MmNiMS4uYzU2MTgzNzhmMWM1ZjlhN2E0NTU2YzFlZTgwOGRiYzIxYjExZmEyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMi0wMS0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFy
aW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRh
Lmg6IEFkZGVkIGluY2x1ZGUgb2YKKyAgICAgICAgPG9wdGlvbmFsPiBzaW5jZSBub3RoaW5nIHB1
bGxzIHRoZW0gaW4uCisKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKTogVXBkYXRlZCBzaW5jZSBUYWJTaXpl
IGFuZCBMZW5ndGhQb2ludCBhcmUgYm90aCBub3cKKyAgICAgICAgc3RydWN0dXJlcywgYW5kIGhh
dmUgcHVibGljIGRhdGEgbWVtYmVycyByYXRoZXIgdGhhbiBnZXR0ZXIgZnVuY3Rpb25zLgorICAg
ICAgICAoV2ViQ29yZTo6c2hhZG93Rm9yQmxlbmRpbmcpOiAgVXBkYXRlZCB0byByZXR1cm4gYSBy
ZWZlcmVuY2UgcmF0aGVyIHRoYW4KKyAgICAgICAgYSBuZXZlci1udWxsIHBvaW50ZXIgYW5kIGZv
ciBjaGFuZ2VzIHRvIExlbmd0aFBvaW50LgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvclBvc2l0aW9uKTog
VXBkYXRlZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBhIHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNv
cmU6OnZhbHVlRm9yUG9zaXRpb25PckF1dG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNv
bnRlbnRUb0NTU1ZhbHVlKTogVXBkYXRlZCBzaW5jZSBDb3VudGVyQ29udGVudCBpcyBhIHN0cnVj
dHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlJblN0eWxlKTogVXBkYXRlZAorICAgICAgICBzaW5jZSBUYWJTaXplIGlzIGEgc3Ry
dWN0dXJlLgorCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwb2ludEZvckxlbmd0aFBvaW50KTogVXBkYXRlZCBzaW5jZSBMZW5ndGhQb2ludCBp
cyBhIHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0UG9pbnRGb3JMZW5ndGhQb2lu
dCk6IERpdHRvLgorCisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpTdHlsZTo6dGFiU2l6ZSBjb25zdCk6IFBhc3MgVGFiU2l6
ZSBieSB2YWx1ZSBpbnN0ZWFkCisgICAgICAgIG9mIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1BvdGVudGlhbEN1c3RvbUVs
ZW1lbnROYW1lQ2hhcmFjdGVyKTogVXNlIFNvcnRlZEFycmF5U2V0LgorICAgICAgICBJdCBkb2Vz
IHRoZSBzb3J0ZWQgY2hlY2sgYXQgY29tcGlsZSB0aW1lIGluc3RlYWQgb2YgYXQgcnVudGltZSBp
biBkZWJ1ZworICAgICAgICBidWlsZHMsIGFuZCBhbHNvIHNlbGVjdHMgbGluZWFyIHNlYXJjaCBp
ZiBpdCdzIGZhc3RlciB0aGFuIGJpbmFyeSBzZWFyY2guCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oOiBBZGRlZCBpbmNsdWRlIG9mIFdhbGxUaW1lLmgsIG5v
CisgICAgICAgIGxvbmdlciBwdWxsZWQgaW4gYnkgVGhyZWFkaW5nLmguCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9MZW5ndGhQb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTog
VXBkYXRlZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBhIHN0cnVjdHVyZS4KKworICAgICAgICAqIHBs
YXRmb3JtL0xlbmd0aFBvaW50Lmg6IENoYW5nZWQgTGVuZ3RoUG9pbnQgdG8gYmUgYSB0cnVlIHN0
cnVjdHVyZQorICAgICAgICB3aXRoIHB1YmxpYyBkYXRhIG1lbWJlcnMuIFRoZSBvbGQgb25lIHdh
cywgc3RyYW5nZWx5LCBhIHN0cnVjdCwgYnV0CisgICAgICAgIHdpdGggcHJpdmF0ZSBkYXRhLiBS
ZW1vdmVkIHRoZSBjb25zdHJ1Y3RvcnMsIGdldHRlcnMsIGFuZCBzZXR0ZXJzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZSk6IEF2b2lkIGEgd2FybmluZyBhYm91dCBtaXhlZCBpbnRl
Z2VyCisgICAgICAgIHR5cGVzIGJ5IHVzaW5nIGEgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OnRhYldpZHRoIGNvbnN0KTogUGFzcyBUYWJTaXplIGJ5IHZhbHVlIGluc3RlYWQK
KyAgICAgICAgb2YgYnkgcmVmZXJlbmNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
VGFiU2l6ZS5oOiBSZW1vdmVkIHRoZSBtXyBwcmVmaXhlcyBmcm9tIHRoZSBkYXRhCisgICAgICAg
IG1lbWJlcnMgc2luY2UgVGFiU2l6ZSBpcyBhIHN0cnVjdC4gUmVtb3ZlZCB0aGUgZ2V0dGVycy4g
TWFya2VkIHRoZQorICAgICAgICBvcGVyYXRvciBib29sIGV4cGxpY2l0IHNpbmNlIHdlIGRvbid0
IHdhbnQgdG8gYWNjaWRlbnRhbGx5IHBhc3MgdGhpcworICAgICAgICB0byBzb21ldGhpbmcgdGFr
aW5nIGFuIGludGVnZXIgYW5kIGdldHRpbmcgYSAwIG9yIDEuIEFkZGVkIGEgVGV4dFN0cmVhbQor
ICAgICAgICBvdmVybG9hZCBzbyB3ZSBjYW4gc3RyZWFtIHRoaXMgd2l0aG91dCBleHBsaWNpdGx5
IHBpY2tpbmcgaXQgYXBhcnQgYXQKKyAgICAgICAgZWFjaCBjYWxsIHNpdGUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVu
Ojp0YWJTaXplIGNvbnN0KTogUGFzcyBUYWJTaXplIGJ5IHZhbHVlIGluc3RlYWQgb2YKKyAgICAg
ICAgYnkgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6c2V0VGFiU2l6ZSk6
IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUExldmVsKTogVXNlIFNvcnRlZEFycmF5U2V0LiBT
YW1lIHJlYXNvbnMgYXMgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBDb2xvclBy
aW1hcmllcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUE1hdHJpeENv
ZWZmaWNpZW50cyk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAg
UmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZG
T2JqQzo6Q2hhcHRlckRhdGEKKyAgICAgICAgZGF0YSBtZW1iZXJzIHNpbmNlIGl0J3MgYSBzdHJ1
Y3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0Ojpj
b25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIpOiBGaXhlZCBhCisgICAgICAgIGJ1ZyB3aGVy
ZSB0aGlzIHVzZWQgY3VycmVudEltYWdlVGltZSBpbnN0ZWFkIG9mIG5leHRJbWFnZSB0aW1lLCBl
eHBvc2VkCisgICAgICAgIGJlY2F1c2UgdGhlIGNoYW5nZXMgdG8gTWVkaWFUaW1lIG1hZGUgaXQg
Z2l2ZSB1cyBhbiB1bnVzZWQgdmFyaWFibGUgd2FybmluZy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFt
ZURhdGEpOgorICAgICAgICBVcGRhdGVkIHNpbmNlIHBhcnNlT3B1c1ByaXZhdGVEYXRhIG5vdyBy
ZXR1cm5zIGFuIG9wdGlvbmFsIGluc3RlYWQgb2YKKyAgICAgICAgcmV0dXJuaW5nIGEgYm9vbGVh
biBhbmQgdXNpbmcgYW4gb3V0IGFyZ3VtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaDogQWRkZWQgYW4gaW5jbHVkZQorICAg
ICAgICBvZiBTZWNvbmRzLmggc2luY2UgaXQncyBubyBsb25nZXIgcHVsbGVkIGluIGJ5IG90aGVy
IGluY2x1ZGVzIGFuZAorICAgICAgICB0aGlzIHN0cnVjdHVyZSBoYXMgYSBTZWNvbmRzIGRhdGEg
bWVtYmVyLiBDaGFuZ2VkIHRoZSBwYXJzZU9wdXNQcml2YXRlRGF0YQorICAgICAgICBmdW5jdGlv
biB0byByZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBib29sIGFuZCB1
c2luZworICAgICAgICBhbiBvdXQgYXJndW1lbnQgZm9yIHdoYXQgaXMgcGFyc2VkLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU9wdXNQcml2YXRlRGF0YSk6IERpdHRvLgorCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tOiBSZW1vdmVkIHRoZSBjb25zdHJ1
Y3RvcnMgZnJvbQorICAgICAgICBPU0J1aWxkSW5mbyBhbmQgbWFkZSBhbGwgaXRzIG9wZXJhdG9y
cyBjb25zdGV4cHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1
ZGlvU2hhcmVkVW5pdC5oOiBBZGRlZCBhbiBpbmNsdWRlCisgICAgICAgIG9mIFNlY29uZHMuaCwg
bm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBMb2NrLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbTogQWRkZWQgYW4gaW5jbHVkZSBvZgorICAg
ICAgICBXYWxsVGltZS5oLCBubyBsb25nZXIgcHVsbGVkIGluIGJ5IFRocmVhZGluZ1ByaW1pdGl2
ZXMuaC4KKworICAgICAgICAqIHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEpOiBSZXR1cm4gYW4gb3B0aW9uYWwgaW5z
dGVhZCBvZgorICAgICAgICBhIHVuaXF1ZV9wdHIuIE5vIHJlYXNvbiB0byB1c2UgYSBoZWFwIGJs
b2NrIGZvciB0aGlzLgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkLmg6IFVwZGF0ZWQgc2luY2Ug
R3JpZEFyZWEgaXMgbm93IGEgc3RydWN0IGFuZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291
bnRlcjo6b3JpZ2luYWxUZXh0IGNvbnN0KTogVXBkYXRlZCBzaW5jZSBDb3VudGVyQ29udGVudAor
ICAgICAgICBpcyBub3cgYSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRB
cmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25zdCk6CisgICAgICAgIFJldHVy
biBhIEdyaWRBcmVhIGluc3RlYWQgb2YgYSB1bmlxdWVfcHRyLiBUaGUgcmV0dXJuIHZhbHVlIGlz
IG5ldmVyIG51bGwgYW5kCisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHV0IGl0IG9uIHRo
ZSBoZWFwLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpv
ckF4aXNJdGVtc09uR3JpZCBjb25zdCk6IFVwZGF0ZWQgZm9yCisgICAgICAgIHRoZSBhYm92ZSBj
aGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJ
dGVtT25HcmlkIGNvbnN0KTogVXNlIG9wdGlvbmFsIGluc3RlYWQKKyAgICAgICAgb2YgdW5pcXVl
X3B0ciBmb3IgYSBsb2NhbCB2YXJpYWJsZSB3aXRoIHRoZSBlbXB0eSBncmlkIGFyZWEgaW4gaXQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDogVXBkYXRlZCBzaW5jZSBHcmlkQXJl
YSBpcyBhIHN0cnVjdCBhbmQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOiBVc2UgY29uc3RleHByLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxh
Y2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0IGNvbnN0KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBM
ZW5ndGhQb2ludCBpcyBhIHN0cnVjdHVyZS4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEJveFBh
aW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNo
YWRvdyBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxl
Lmg6IFN0eWxlIHR3ZWFrcy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29u
dGVudC5oOiBUdXJuZWQgdGhlIENvdW50ZXJDb250ZW50IGNsYXNzIGludG8gYQorICAgICAgICBz
dHJ1Y3R1cmUgd2l0aCBwdWJsaWMgZGF0YSBtZW1iZXJzLgorCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL0ZpbGxMYXllci5oOiBSZW1vdmVkIHRoZSBGaWxsU2l6ZSBjb25zdHJ1Y3RvcnMuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaDogTWFkZSBHcmlkU3BhblR5cGUg
YmUgYmFzZWQgb24gYSB1aW50OF90LgorICAgICAgICBSZW9yZGVyZWQgdGhlIGRhdGEgbWVtYmVy
cyBvZiBHcmlkQXJlYSB0byBiZSByb3dzIGZpcnN0IGFuZCB0aGVuIGNvbHVtbnMKKyAgICAgICAg
dG8gZm9sbG93IHRoZSBvcmRlciBmcm9tIHRoZSBjb25zdHJ1Y3RvciBhbmQgYWxzbyB0aGUgY29u
dmVudGlvbmFsCisgICAgICAgICJ4IGJlZm9yZSB5IiBvcmRlcmluZy4gVGhpcyB3aWxsIGFsc28g
YmUgZ29vZCBzb21lIGRheSB3aGVuIHdlIGNhbiB1c2UgdGhlCisgICAgICAgIGRlZmF1bHQgPD0+
IGZyb20gQysrMjAsIHdoaWNoIGRlcGVuZHMgb24gZGF0YSBtZW1iZXIgb3JkZXJpbmcuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oOiBUd2Vha2VkIGNvbW1lbnRzIGFu
ZCBtb3ZlZCBpbml0aWFsaXphdGlvbgorICAgICAgICBvZiBtX2ZsZXggZnJvbSB0aGUgY29uc3Ry
dWN0b3IgdG8gdGhlIGRhdGEgbWVtYmVyIGRlZmluaXRpb24uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybSBjb25zdCk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAg
TGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDogVXBkYXRlZCBzaW5jZSBDb3VudGVyQ29udGVudCBhbmQgTGVuZ2h0UG9p
bnQKKyAgICAgICAgYXJlIHN0cnVjdHVyZXMsIGFuZCB0byBwYXNzIFRhYlNpemUgYnkgdmFsdWUu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKTogU2ltcGxpZmllZCBjb25zdHJ1Y3RvciBz
aW5jZSBtX2xvY2F0aW9uCisgICAgICAgIGRvZXMgbm90IGhhdmUgdG8gYmUgc3BsaXQgb3V0IGlu
dG8geCBhbmQgeSBqdXN0IHRvIGNvcHkgaXQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1No
YWRvd0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OlNoYWRvd0RhdGEpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OnggY29uc3QpOiBVcGRhdGVkIHNp
bmNlIExlbmd0aFBvaW50IGlzIG5vdyBhIHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0RhdGE6OnkgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVNjcm9sbFNuYXBQb2ludHMuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKworICAg
ICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYWJTaXplKTogVXBkYXRlZCBzaW5jZSBU
YWJTaXplCisgICAgICAgIG5vIGxvbmdlciBoYXMgY29uc3RydWN0b3JzLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbik6IFVwZGF0ZWQg
c2luY2UgTGVuZ3RoUG9pbnQKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9u
T3JBdXRvKTogRGl0dG8uCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFk
b3dWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVDb250ZW50KTogVXBkYXRlZCBzaW5jZSBDb3VudGVyQ29udGVudAorICAgICAg
ICBubyBsb25nZXIgaGFzIGNvbnN0cnVjdG9ycy4KKwogMjAyMi0wMS0yNCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChpT1MgMTUp
OiBIVE1MQXVkaW9FbGVtZW50IGZhaWxzIHRvIGxvYWQgbmV3IGF1ZGlvIHdoZW4gZGV2aWNlIGlz
IGxvY2tlZCBvciBzYWZhcmkgaXMgaW4gYmFja2dyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXgg
MTAzYzk0OTNmYzgzZDRjNzMwYTAzYTMxNDAwNTVlNGM3NzAwMjQwMy4uOTNiNWVkYmM1ODMzZTli
MGNhODQ5NmRhOTAxZTBjNDQwZWUyNWU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMjItMDEtMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIE9wdGltaXplIGFuZCBzaW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxlIHN0
cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoUEFM
OjpDTVRpbWVIYXNGbGFncyk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OnRvTWVkaWFUaW1lKTog
VGFrZSBDTVRpbWUgYnkgdmFsdWUuIEFsc28gc2ltcGxpZmllZCBsb2dpYworICAgICAgICB0byBq
dXN0IGNoZWNrIG9uZSBmbGFnIGF0IGEgdGltZSwgd2hpY2ggbWVhbnMgdGhlIENNVGltZUhhc0Zs
YWdzCisgICAgICAgIGZ1bmN0aW9uIGlzbid0IG5lZWRlZCBhbnkgbW9yZS4gQWxzbyBub3cgdXNl
cyBPcHRpb25TZXQgYmVjYXVzZQorICAgICAgICB0aGF0IGlzIGhvdyBNZWRpYVRpbWUgd29ya3Mu
CisgICAgICAgIChQQUw6OnRvQ01UaW1lKTogVGFrZSBNZWRpYVRpbWUgYnkgdmFsdWUuCisgICAg
ICAgICogcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaDogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlLgorCiAyMDIyLTAxLTI0ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2Fk
YUBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgYWNjZXNzZXMgdG8gU3lzdGVtVmVyc2lv
bi5wbGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAwYTgxNmNmM2RjNjA4ZmY1YzM2Y2QwNjkyYjI4MjJhMWRkNjFm
ZmFmLi4yMjIxMGI5ZjQ3YjMxMThmNjBkNzMzMjgxMWM3NmU1ZmYxYzBiNTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIyLTAxLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3Vz
IHNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGUuaDoKKyAgICAgICAgQWRkZWQgYW4gaW5jbHVkZSBvZiA8b3B0aW9uYWw+LCBubyBs
b25nZXIgcHVsbGVkIGluIGJvdGggb3RoZXIgaGVhZGVycy4KKwogMjAyMi0wMS0yNCAgQWRhIENo
YW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTb2Z0IGxpbmsgQVJLaXQgaW4gYSBz
ZXBhcmF0ZSBBUktpdFNvZnRMaW5rIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAKaW5kZXggNWY2NjNiMmZmNWE1ZTNjZTA4Y2U0MTI5NWI4
MGE5YjcxMDZjODk3OS4uNTQ2Y2FkNzZlYzg4ZDcxMDU0MWU2YTNlNTk4NWZhNjQ5NWZiNGY5MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0Rh
dGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApp
bmRleCAzY2U3NjEyNDJjMzJlYzE2OTRjNjVhNzdlNzQwZTljNjY5M2MzYmI0Li4zNjQ4NzJhMjAx
YzZkYmVmZmM5N2U0YzkwYzY1NjFiZjU5ZDA3NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0xNDksNiArMTQ5
LDcgQEAgdXNpbmcgV1RGOjpSZWZQdHI7CiB1c2luZyBXVEY6OlJldGFpblB0cjsKIHVzaW5nIFdU
Rjo6U0hBMTsKIHVzaW5nIFdURjo6U2NvcGVkTGFtYmRhOwordXNpbmcgV1RGOjpTZWNvbmRzOwog
dXNpbmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6OlN0cmluZ0J1ZmZlcjsKIHVzaW5nIFdURjo6
U3RyaW5nQnVpbGRlcjsKQEAgLTE2MSw2ICsxNjIsNyBAQCB1c2luZyBXVEY6OlRleHRTdHJlYW07
CiB1c2luZyBXVEY6OlVSTDsKIHVzaW5nIFdURjo6VW5pcXVlUmVmOwogdXNpbmcgV1RGOjpWZWN0
b3I7Cit1c2luZyBXVEY6OldhbGxUaW1lOwogdXNpbmcgV1RGOjpXZWFrUHRyOwogCiB0ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcyBFPiB1c2luZyBFeHBlY3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjpl
eHBlY3RlZDxULCBFPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvY2suaCBiL1NvdXJj
ZS9XVEYvd3RmL0xvY2suaAppbmRleCA0MmU0YWFjMGM5YTRhYWU1OWU3MWI1ZTkzNThjYjg2MDE4
ZDdlNDNhLi5jOGY2YzMwZDJmMDcwZDMxNjkwYzY0MmViYjdiYjc2ZWE3Njk5MDg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9jay5oCkBA
IC0yNiwxMCArMjYsMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZldHlBbmFseXNpcy5o
PgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9NZWRpYVRpbWUuY3BwIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAppbmRleCAyMjRl
Nzc0OTVmYjkzODM0ZjU4ZjljZjMyMzQzN2YzOTE2OTM5NDJmLi5hOGI5YzM0M2M3MzhjYzA2N2Uz
MDBlZTMwYWMzMWU3NmY0ZWI3ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRp
bWUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTcyLDkgKzcyLDkg
QEAgc3RhdGljIGludDY0X3Qgc2lnbnVtKGludDY0X3QgdmFsKQogCiBjb25zdCB1aW50MzJfdCBN
ZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUgPSAxMDAwMDAwMDAwOwogCi1NZWRpYVRpbWU6Ok1l
ZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHJocykKK2NvbnN0ZXhwciBNZWRpYVRpbWU6Ok1lZGlh
VGltZShVc2VEb3VibGVGbGFnLCBkb3VibGUgdmFsdWUpCisgICAgOiBtX3ZhbHVlQXNEb3VibGUo
dmFsdWUpCiB7Ci0gICAgKnRoaXMgPSByaHM7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUpCkBAIC04NCw1NyArODQsNTEgQEAgTWVkaWFU
aW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSkKICAgICBpZiAo
c3RkOjppc2luZihmbG9hdFRpbWUpKQogICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0
VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsK
IAotICAgIE1lZGlhVGltZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxpZCB8IERvdWJs
ZVZhbHVlKTsKLSAgICB2YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZmxvYXRUaW1lOwotICAg
IHJldHVybiB2YWx1ZTsKKyAgICBkb3VibGUgdmFsdWUgPSBmbG9hdFRpbWU7CisgICAgcmV0dXJu
IHsgVXNlRG91YmxlLCB2YWx1ZSB9OwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpCitNZWRpYVRpbWUg
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgdmFsdWUsIHVpbnQzMl90IHRpbWVTY2Fs
ZSkKIHsKLSAgICBpZiAoZmxvYXRUaW1lICE9IGZsb2F0VGltZSkKKyAgICBpZiAoc3RkOjppc25h
bih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwotICAgIGlmIChzdGQ6Omlz
aW5mKGZsb2F0VGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZmxvYXRUaW1lKSA/
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlm
IChmbG9hdFRpbWUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKKyAgICBpZiAodmFsdWUgPj0gbWF4
UGx1c09uZTxpbnQ2NF90PikKICAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
Ci0gICAgaWYgKGZsb2F0VGltZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigp
KQorICAgIGlmICh2YWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQog
ICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoIXRpbWVTY2Fs
ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5p
dGVUaW1lKCk7CiAKLSAgICB3aGlsZSAoZmxvYXRUaW1lICogdGltZVNjYWxlID49IG1heFBsdXNP
bmU8aW50NjRfdD4pCisgICAgd2hpbGUgKHZhbHVlICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8
aW50NjRfdD4pCiAgICAgICAgIHRpbWVTY2FsZSAvPSAyOwotICAgIHJldHVybiBNZWRpYVRpbWUo
c3RhdGljX2Nhc3Q8aW50NjRfdD4oZmxvYXRUaW1lICogdGltZVNjYWxlKSwgdGltZVNjYWxlLCBW
YWxpZCk7CisgICAgaW50NjRfdCBzY2FsZWRWYWx1ZSA9IHZhbHVlICogdGltZVNjYWxlOworICAg
IHJldHVybiB7IHNjYWxlZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0KIAotTWVkaWFUaW1lIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSkKK01lZGlhVGltZSBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlKQogewotICAgIGlmIChkb3VibGVU
aW1lICE9IGRvdWJsZVRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICBy
ZXR1cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVU
aW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotCi0gICAgTWVkaWFUaW1lIHZhbHVlKDAs
IERlZmF1bHRUaW1lU2NhbGUsIFZhbGlkIHwgRG91YmxlVmFsdWUpOwotICAgIHZhbHVlLm1fdGlt
ZVZhbHVlQXNEb3VibGUgPSBkb3VibGVUaW1lOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBpZiAo
c3RkOjppc2luZih2YWx1ZSkpCisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8g
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgcmV0
dXJuIHsgVXNlRG91YmxlLCB2YWx1ZSB9OwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpCitNZWRp
YVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSwgdWludDMyX3Qg
dGltZVNjYWxlKQogewotICAgIGlmIChkb3VibGVUaW1lICE9IGRvdWJsZVRpbWUpCisgICAgaWYg
KHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKLSAgICBp
ZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChk
b3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGlt
ZSgpOwotICAgIGlmIChkb3VibGVUaW1lID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAgaWYg
KHZhbHVlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHJldHVybiBwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpOwotICAgIGlmIChkb3VibGVUaW1lIDwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWluKCkpCisgICAgaWYgKHZhbHVlIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWluKCkpCiAgICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAg
IGlmICghdGltZVNjYWxlKQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGRvdWJsZVRpbWUp
ID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAg
ICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAgICB3aGlsZSAoZG91YmxlVGltZSAqIHRpbWVT
Y2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIHdoaWxlICh2YWx1ZSAqIHRpbWVTY2Fs
ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICB0aW1lU2NhbGUgLz0gMjsKLSAgICBy
ZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6cm91bmQoZG91YmxlVGlt
ZSAqIHRpbWVTY2FsZSkpLCB0aW1lU2NhbGUsIFZhbGlkKTsKKyAgICBpbnQ2NF90IHNjYWxlZFZh
bHVlID0gc3RkOjpyb3VuZCh2YWx1ZSAqIHRpbWVTY2FsZSk7CisgICAgcmV0dXJuIHsgc2NhbGVk
VmFsdWUsIHRpbWVTY2FsZSB9OwogfQogCiBmbG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25z
dApAQCAtMTQ2LDggKzE0MCw5IEBAIGZsb2F0IE1lZGlhVGltZTo6dG9GbG9hdCgpIGNvbnN0CiAg
ICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKQot
ICAgICAgICByZXR1cm4gbV90aW1lVmFsdWVBc0RvdWJsZTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG1fdGltZVZhbHVlKSAvIG1fdGltZVNjYWxlOworICAgICAgICByZXR1cm4gbV92
YWx1ZUFzRG91YmxlOworICAgIGZsb2F0IHZhbHVlID0gbV92YWx1ZTsKKyAgICByZXR1cm4gdmFs
dWUgLyBtX3NjYWxlOwogfQogCiBkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0CkBA
IC0xNTksMTkgKzE1NCwxMiBAQCBkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0CiAg
ICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkK
LSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlQXNEb3VibGU7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGRvdWJsZT4obV90aW1lVmFsdWUpIC8gbV90aW1lU2NhbGU7CisgICAgICAgIHJldHVybiBt
X3ZhbHVlQXNEb3VibGU7CisgICAgZG91YmxlIHZhbHVlID0gbV92YWx1ZTsKKyAgICByZXR1cm4g
dmFsdWUgLyBtX3NjYWxlOwogfQogCi1NZWRpYVRpbWUmIE1lZGlhVGltZTo6b3BlcmF0b3I9KGNv
bnN0IE1lZGlhVGltZSYgcmhzKQotewotICAgIG1fdGltZVZhbHVlID0gcmhzLm1fdGltZVZhbHVl
OwotICAgIG1fdGltZVNjYWxlID0gcmhzLm1fdGltZVNjYWxlOwotICAgIG1fdGltZUZsYWdzID0g
cmhzLm1fdGltZUZsYWdzOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotTWVkaWFUaW1lIE1lZGlh
VGltZTo6b3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAorTWVkaWFUaW1lIE1l
ZGlhVGltZTo6b3BlcmF0b3IrKE1lZGlhVGltZSByaHMpIGNvbnN0CiB7CiAgICAgaWYgKHJocy5p
c0ludmFsaWQoKSB8fCBpc0ludmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7
CkBAIC0xOTIsNyArMTgwLDcgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IrKGNvbnN0
IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKTsKIAogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpICYmIHJocy5oYXNEb3VibGVWYWx1ZSgp
KQotICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVl
QXNEb3VibGUgKyByaHMubV90aW1lVmFsdWVBc0RvdWJsZSk7CisgICAgICAgIHJldHVybiBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV92YWx1ZUFzRG91YmxlICsgcmhzLm1fdmFsdWVBc0Rv
dWJsZSk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSB8fCByaHMuaGFzRG91YmxlVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSh0b0RvdWJsZSgp
ICsgcmhzLnRvRG91YmxlKCkpOwpAQCAtMjAxLDEzICsxODksMTMgQEAgTWVkaWFUaW1lIE1lZGlh
VGltZTo6b3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgIE1lZGlhVGlt
ZSBiID0gcmhzOwogCiAgICAgdWludDMyX3QgY29tbW9uVGltZVNjYWxlOwotICAgIGlmICghbGVh
c3RDb21tb25NdWx0aXBsZShhLm1fdGltZVNjYWxlLCBiLm1fdGltZVNjYWxlLCBjb21tb25UaW1l
U2NhbGUpIHx8IGNvbW1vblRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCisgICAgaWYgKCFs
ZWFzdENvbW1vbk11bHRpcGxlKGEubV9zY2FsZSwgYi5tX3NjYWxlLCBjb21tb25UaW1lU2NhbGUp
IHx8IGNvbW1vblRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCiAgICAgICAgIGNvbW1vblRp
bWVTY2FsZSA9IE1heGltdW1UaW1lU2NhbGU7CiAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGlt
ZVNjYWxlKTsKICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwotICAgIHdoaWxl
ICghc2FmZUFkZChhLm1fdGltZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkg
eworICAgIHdoaWxlICghc2FmZUFkZChhLm1fdmFsdWUsIGIubV92YWx1ZSwgYS5tX3ZhbHVlKSkg
ewogICAgICAgICBpZiAoY29tbW9uVGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1cm4g
YS5tX3RpbWVWYWx1ZSA+IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKTsKKyAgICAgICAgICAgIHJldHVybiBhLm1fdmFsdWUgPiAwID8gcG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgICAgIGNvbW1vblRp
bWVTY2FsZSAvPSAyOwogICAgICAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwog
ICAgICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwpAQCAtMjE1LDcgKzIwMyw3
IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QKICAgICByZXR1cm4gYTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3It
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0
b3ItKE1lZGlhVGltZSByaHMpIGNvbnN0CiB7CiAgICAgaWYgKHJocy5pc0ludmFsaWQoKSB8fCBp
c0ludmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CkBAIC0yMzYsNyArMjI0
LDcgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhz
KSBjb25zdAogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKIAogICAgIGlm
IChoYXNEb3VibGVWYWx1ZSgpICYmIHJocy5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1
cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUgLSByaHMu
bV90aW1lVmFsdWVBc0RvdWJsZSk7CisgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUobV92YWx1ZUFzRG91YmxlIC0gcmhzLm1fdmFsdWVBc0RvdWJsZSk7CiAKICAgICBp
ZiAoaGFzRG91YmxlVmFsdWUoKSB8fCByaHMuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSh0b0RvdWJsZSgpIC0gcmhzLnRvRG91Ymxl
KCkpOwpAQCAtMjQ1LDEzICsyMzMsMTMgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3It
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBiID0gcmhzOwogCiAg
ICAgdWludDMyX3QgY29tbW9uVGltZVNjYWxlOwotICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBs
ZSh0aGlzLT5tX3RpbWVTY2FsZSwgcmhzLm1fdGltZVNjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8
IGNvbW1vblRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCisgICAgaWYgKCFsZWFzdENvbW1v
bk11bHRpcGxlKHRoaXMtPm1fc2NhbGUsIHJocy5tX3NjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8
IGNvbW1vblRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCiAgICAgICAgIGNvbW1vblRpbWVT
Y2FsZSA9IE1heGltdW1UaW1lU2NhbGU7CiAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNj
YWxlKTsKICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwotICAgIHdoaWxlICgh
c2FmZVN1YihhLm1fdGltZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgewor
ICAgIHdoaWxlICghc2FmZVN1YihhLm1fdmFsdWUsIGIubV92YWx1ZSwgYS5tX3ZhbHVlKSkgewog
ICAgICAgICBpZiAoY29tbW9uVGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1cm4gYS5t
X3RpbWVWYWx1ZSA+IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKTsKKyAgICAgICAgICAgIHJldHVybiBhLm1fdmFsdWUgPiAwID8gcG9zaXRpdmVJbmZp
bml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgICAgIGNvbW1vblRpbWVT
Y2FsZSAvPSAyOwogICAgICAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwogICAg
ICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwpAQCAtMjc1LDkgKzI2Myw5IEBA
IE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLSgpIGNvbnN0CiAKICAgICBNZWRpYVRpbWUg
bmVnYXRpdmVUaW1lID0gKnRoaXM7CiAgICAgaWYgKG5lZ2F0aXZlVGltZS5oYXNEb3VibGVWYWx1
ZSgpKQotICAgICAgICBuZWdhdGl2ZVRpbWUubV90aW1lVmFsdWVBc0RvdWJsZSA9IC1uZWdhdGl2
ZVRpbWUubV90aW1lVmFsdWVBc0RvdWJsZTsKKyAgICAgICAgbmVnYXRpdmVUaW1lLm1fdmFsdWVB
c0RvdWJsZSA9IC1uZWdhdGl2ZVRpbWUubV92YWx1ZUFzRG91YmxlOwogICAgIGVsc2UKLSAgICAg
ICAgbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlID0gLW5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZTsK
KyAgICAgICAgbmVnYXRpdmVUaW1lLm1fdmFsdWUgPSAtbmVnYXRpdmVUaW1lLm1fdmFsdWU7CiAg
ICAgcmV0dXJuIG5lZ2F0aXZlVGltZTsKIH0KIApAQCAtMzA3LDE0ICsyOTUsMTQgQEAgTWVkaWFU
aW1lIE1lZGlhVGltZTo6b3BlcmF0b3IqKGludDMyX3QgcmhzKSBjb25zdAogICAgIE1lZGlhVGlt
ZSBhID0gKnRoaXM7CiAKICAgICBpZiAoYS5oYXNEb3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgIGEu
bV90aW1lVmFsdWVBc0RvdWJsZSAqPSByaHM7CisgICAgICAgIGEubV92YWx1ZUFzRG91YmxlICo9
IHJoczsKICAgICAgICAgcmV0dXJuIGE7CiAgICAgfQogCi0gICAgd2hpbGUgKCFzYWZlTXVsdGlw
bHkoYS5tX3RpbWVWYWx1ZSwgcmhzLCBhLm1fdGltZVZhbHVlKSkgewotICAgICAgICBpZiAoYS5t
X3RpbWVTY2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIHNpZ251bShhLm1fdGltZVZhbHVl
KSA9PSBzaWdudW0ocmhzKSA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmlu
aXRlVGltZSgpOwotICAgICAgICBhLnNldFRpbWVTY2FsZShhLm1fdGltZVNjYWxlIC8gMik7Cisg
ICAgd2hpbGUgKCFzYWZlTXVsdGlwbHkoYS5tX3ZhbHVlLCByaHMsIGEubV92YWx1ZSkpIHsKKyAg
ICAgICAgaWYgKGEubV9zY2FsZSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIHNpZ251bShhLm1f
dmFsdWUpID09IHNpZ251bShyaHMpID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CisgICAgICAgIGEuc2V0VGltZVNjYWxlKGEubV9zY2FsZSAvIDIpOwog
ICAgIH0KIAogICAgIHJldHVybiBhOwpAQCAtMzIyLDE3NiArMzEwLDEwOSBAQCBNZWRpYVRpbWUg
TWVkaWFUaW1lOjpvcGVyYXRvciooaW50MzJfdCByaHMpIGNvbnN0CiAKIGJvb2wgTWVkaWFUaW1l
OjpvcGVyYXRvciEoKSBjb25zdAogewotICAgIHJldHVybiAobV90aW1lRmxhZ3MgPT0gVmFsaWQg
JiYgIW1fdGltZVZhbHVlKQotICAgICAgICB8fCAobV90aW1lRmxhZ3MgPT0gKFZhbGlkIHwgRG91
YmxlVmFsdWUpICYmICFtX3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICB8fCBpc0ludmFsaWQo
KTsKKyAgICByZXR1cm4gaXNJbnZhbGlkKCkgfHwgKGhhc0RvdWJsZVZhbHVlKCkgPyAhbV92YWx1
ZUFzRG91YmxlIDogIW1fdmFsdWUpOwogfQogCiBNZWRpYVRpbWU6Om9wZXJhdG9yIGJvb2woKSBj
b25zdAogewotICAgIHJldHVybiAhKG1fdGltZUZsYWdzID09IFZhbGlkICYmICFtX3RpbWVWYWx1
ZSkKLSAgICAgICAgJiYgIShtX3RpbWVGbGFncyA9PSAoVmFsaWQgfCBEb3VibGVWYWx1ZSkgJiYg
IW1fdGltZVZhbHVlQXNEb3VibGUpCi0gICAgICAgICYmICFpc0ludmFsaWQoKTsKKyAgICByZXR1
cm4gISEqdGhpczsKIH0KIAotTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3MgTWVkaWFUaW1lOjpj
b21wYXJlKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RhdGljIE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzIG9yZGVyaW5nKFQgYSwgVCBiKQogewot
ICAgIGF1dG8gYW5kRmxhZ3MgPSBtX3RpbWVGbGFncyAmIHJocy5tX3RpbWVGbGFnczsKLSAgICBp
ZiAoYW5kRmxhZ3MgJiAoUG9zaXRpdmVJbmZpbml0ZSB8IE5lZ2F0aXZlSW5maW5pdGUgfCBJbmRl
ZmluaXRlKSkKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICBhdXRvIG9yRmxhZ3MgPSBt
X3RpbWVGbGFncyB8IHJocy5tX3RpbWVGbGFnczsKLSAgICBpZiAoIShvckZsYWdzICYgVmFsaWQp
KQotICAgICAgICByZXR1cm4gRXF1YWxUbzsKLQotICAgIGlmICghKGFuZEZsYWdzICYgVmFsaWQp
KQotICAgICAgICByZXR1cm4gaXNJbnZhbGlkKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwot
Ci0gICAgaWYgKG9yRmxhZ3MgJiBOZWdhdGl2ZUluZmluaXRlKQotICAgICAgICByZXR1cm4gaXNO
ZWdhdGl2ZUluZmluaXRlKCkgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotCi0gICAgaWYgKG9y
RmxhZ3MgJiBQb3NpdGl2ZUluZmluaXRlKQotICAgICAgICByZXR1cm4gaXNQb3NpdGl2ZUluZmlu
aXRlKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwotCi0gICAgaWYgKG9yRmxhZ3MgJiBJbmRl
ZmluaXRlKQotICAgICAgICByZXR1cm4gaXNJbmRlZmluaXRlKCkgPyBHcmVhdGVyVGhhbiA6IExl
c3NUaGFuOwotCi0gICAgaWYgKGFuZEZsYWdzICYgRG91YmxlVmFsdWUpIHsKLSAgICAgICAgaWYg
KG1fdGltZVZhbHVlQXNEb3VibGUgPT0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpCi0gICAgICAg
ICAgICByZXR1cm4gRXF1YWxUbzsKLQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWVBc0RvdWJs
ZSA8IHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAg
ICB9Ci0KLSAgICBpZiAob3JGbGFncyAmIERvdWJsZVZhbHVlKSB7Ci0gICAgICAgIGRvdWJsZSBh
ID0gdG9Eb3VibGUoKTsKLSAgICAgICAgZG91YmxlIGIgPSByaHMudG9Eb3VibGUoKTsKLSAgICAg
ICAgaWYgKGEgPiBiKQotICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOwotICAgICAgICBp
ZiAoYSA8IGIpCi0gICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47Ci0gICAgICAgIHJldHVybiBF
cXVhbFRvOwotICAgIH0KLQotICAgIGlmICgobV90aW1lVmFsdWUgPCAwKSAhPSAocmhzLm1fdGlt
ZVZhbHVlIDwgMCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8IDAgPyBMZXNzVGhhbiA6
IEdyZWF0ZXJUaGFuOworICAgIHJldHVybiBhIDwgYiA/IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZs
YWdzOjpMZXNzVGhhbiA6IGIgPCBhID8gTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3M6OkdyZWF0
ZXJUaGFuIDogTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3M6OkVxdWFsVG87Cit9CiAKLSAgICBp
ZiAoIW1fdGltZVZhbHVlICYmICFyaHMubV90aW1lVmFsdWUpCi0gICAgICAgIHJldHVybiBFcXVh
bFRvOworTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3Mgb3JkZXJpbmcoTWVkaWFUaW1lIGEsIE1l
ZGlhVGltZSBiKQoreworICAgIGF1dG8gb3JkZXJpbmdDbGFzcyA9IFtdKE1lZGlhVGltZSB0aW1l
KSB7CisgICAgICAgIGlmICh0aW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIC0xOworICAgICAgICBpZiAodGltZS5pc0luZGVmaW5pdGUoKSkKKyAgICAgICAgICAg
IHJldHVybiAxOworICAgICAgICBpZiAodGltZS5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAg
ICAgICAgIHJldHVybiAyOworICAgICAgICBpZiAodGltZS5pc0ludmFsaWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiAzOworICAgICAgICByZXR1cm4gMDsKKyAgICB9OworICAgIGF1dG8gYUNsYXNz
ID0gb3JkZXJpbmdDbGFzcyhhKTsKKyAgICBhdXRvIGJDbGFzcyA9IG9yZGVyaW5nQ2xhc3MoYik7
CisgICAgaWYgKGFDbGFzcyB8fCBiQ2xhc3MpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhhQ2xh
c3MsIGJDbGFzcyk7CiAKLSAgICBpZiAobV90aW1lU2NhbGUgPT0gcmhzLm1fdGltZVNjYWxlKSB7
Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA9PSByaHMubV90aW1lVmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm4gRXF1YWxUbzsKLSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlIDwgcmhzLm1fdGlt
ZVZhbHVlID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9CisgICAgaWYgKGEuaGFzRG91
YmxlVmFsdWUoKSB8fCBiLmhhc0RvdWJsZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBvcmRlcmlu
ZyhhLnRvRG91YmxlKCksIGIudG9Eb3VibGUoKSk7CiAKLSAgICBpZiAobV90aW1lVmFsdWUgPT0g
cmhzLm1fdGltZVZhbHVlKQotICAgICAgICByZXR1cm4gbV90aW1lU2NhbGUgPCByaHMubV90aW1l
U2NhbGUgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOworICAgIGlmICgoYS5tX3ZhbHVlIDwgMCkg
IT0gKGIubV92YWx1ZSA8IDApIHx8ICFhLm1fdmFsdWUgfHwgIWIubV92YWx1ZSB8fCBhLm1fc2Nh
bGUgPT0gYi5tX3NjYWxlKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYS5tX3ZhbHVlLCBiLm1f
dmFsdWUpOwogCi0gICAgaWYgKG1fdGltZVZhbHVlID49IDApIHsKLSAgICAgICAgaWYgKG1fdGlt
ZVZhbHVlIDwgcmhzLm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlID4gcmhzLm1fdGltZVNjYWxl
KQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOworICAgIGlmIChhLm1fdmFsdWUgPT0gYi5t
X3ZhbHVlKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYi5tX3NjYWxlLCBhLm1fc2NhbGUpOwog
Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA+IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2Fs
ZSA8IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAg
ICBpZiAoYS5tX3ZhbHVlID49IDApIHsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA8IGIubV92YWx1
ZSAmJiBhLm1fc2NhbGUgPiBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1l
OjpMZXNzVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIubV92YWx1ZSAmJiBhLm1fc2Nh
bGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpHcmVhdGVyVGhh
bjsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAobV90aW1lVmFsdWUgPCByaHMubV90aW1lVmFs
dWUgJiYgbV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4g
TGVzc1RoYW47Ci0KLSAgICAgICAgaWYgKG1fdGltZVZhbHVlID4gcmhzLm1fdGltZVZhbHVlICYm
IG1fdGltZVNjYWxlID4gcmhzLm1fdGltZVNjYWxlKQotICAgICAgICAgICAgcmV0dXJuIEdyZWF0
ZXJUaGFuOworICAgICAgICBpZiAoYS5tX3ZhbHVlIDwgYi5tX3ZhbHVlICYmIGEubV9zY2FsZSA8
IGIubV9zY2FsZSkKKyAgICAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6Okxlc3NUaGFuOworICAg
ICAgICBpZiAoYS5tX3ZhbHVlID4gYi5tX3ZhbHVlICYmIGEubV9zY2FsZSA+IGIubV9zY2FsZSkK
KyAgICAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OkdyZWF0ZXJUaGFuOwogICAgIH0KIAotICAg
IGludDY0X3QgbGhzRmFjdG9yOwotICAgIGludDY0X3QgcmhzRmFjdG9yOwotICAgIGlmIChzYWZl
TXVsdGlwbHkobV90aW1lVmFsdWUsIHN0YXRpY19jYXN0PGludDY0X3Q+KHJocy5tX3RpbWVTY2Fs
ZSksIGxoc0ZhY3RvcikKLSAgICAgICAgJiYgc2FmZU11bHRpcGx5KHJocy5tX3RpbWVWYWx1ZSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4obV90aW1lU2NhbGUpLCByaHNGYWN0b3IpKSB7Ci0gICAgICAg
IGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9yKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87
Ci0gICAgICAgIHJldHVybiBsaHNGYWN0b3IgPCByaHNGYWN0b3IgPyBMZXNzVGhhbiA6IEdyZWF0
ZXJUaGFuOwotICAgIH0KKyAgICBpbnQ2NF90IGFQcm9kdWN0OworICAgIGludDY0X3QgYlByb2R1
Y3Q7CisgICAgaW50NjRfdCBhVGltZVNjYWxlID0gYS5tX3NjYWxlOworICAgIGludDY0X3QgYlRp
bWVTY2FsZSA9IGIubV9zY2FsZTsKKyAgICBpZiAoc2FmZU11bHRpcGx5KGEubV92YWx1ZSwgYVRp
bWVTY2FsZSwgYVByb2R1Y3QpICYmIHNhZmVNdWx0aXBseShiLm1fdmFsdWUsIGJUaW1lU2NhbGUs
IGJQcm9kdWN0KSkKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGFQcm9kdWN0LCBiUHJvZHVjdCk7
CisKKyAgICBhdXRvIGFRdW90aWVudCA9IGEubV92YWx1ZSAvIGEubV9zY2FsZTsKKyAgICBhdXRv
IGJRdW90aWVudCA9IGIubV92YWx1ZSAvIGIubV9zY2FsZTsKKyAgICBpZiAoYVF1b3RpZW50ICE9
IGJRdW90aWVudCkKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGFRdW90aWVudCwgYlF1b3RpZW50
KTsKIAotICAgIGludDY0X3QgcmhzV2hvbGUgPSByaHMubV90aW1lVmFsdWUgLyByaHMubV90aW1l
U2NhbGU7Ci0gICAgaW50NjRfdCBsaHNXaG9sZSA9IG1fdGltZVZhbHVlIC8gbV90aW1lU2NhbGU7
Ci0gICAgaWYgKGxoc1dob2xlID4gcmhzV2hvbGUpCi0gICAgICAgIHJldHVybiBHcmVhdGVyVGhh
bjsKLSAgICBpZiAobGhzV2hvbGUgPCByaHNXaG9sZSkKLSAgICAgICAgcmV0dXJuIExlc3NUaGFu
OwotCi0gICAgaW50NjRfdCByaHNSZW1haW4gPSByaHMubV90aW1lVmFsdWUgJSByaHMubV90aW1l
U2NhbGU7Ci0gICAgaW50NjRfdCBsaHNSZW1haW4gPSBtX3RpbWVWYWx1ZSAlIG1fdGltZVNjYWxl
OwotICAgIGxoc0ZhY3RvciA9IGxoc1JlbWFpbiAqIHJocy5tX3RpbWVTY2FsZTsKLSAgICByaHNG
YWN0b3IgPSByaHNSZW1haW4gKiBtX3RpbWVTY2FsZTsKLQotICAgIGlmIChsaHNGYWN0b3IgPT0g
cmhzRmFjdG9yKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAgICByZXR1cm4gbGhzRmFjdG9y
ID4gcmhzRmFjdG9yID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKKyAgICBhdXRvIGFSZW1haW5k
ZXIgPSBhLm1fdmFsdWUgJSBhLm1fc2NhbGUgKiBhLm1fc2NhbGU7CisgICAgYXV0byBiUmVtYWlu
ZGVyID0gYi5tX3ZhbHVlICUgYi5tX3NjYWxlICogYi5tX3NjYWxlOworICAgIHJldHVybiBvcmRl
cmluZyhhUmVtYWluZGVyLCBiUmVtYWluZGVyKTsKIH0KIAotYm9vbCBNZWRpYVRpbWU6OmlzQmV0
d2Vlbihjb25zdCBNZWRpYVRpbWUmIGEsIGNvbnN0IE1lZGlhVGltZSYgYikgY29uc3QKK2Jvb2wg
TWVkaWFUaW1lOjppc0JldHdlZW4oTWVkaWFUaW1lIGEsIE1lZGlhVGltZSBiKSBjb25zdAogewog
ICAgIGlmIChhID4gYikKICAgICAgICAgcmV0dXJuICp0aGlzID4gYiAmJiAqdGhpcyA8IGE7CiAg
ICAgcmV0dXJuICp0aGlzID4gYSAmJiAqdGhpcyA8IGI7CiB9CiAKLWNvbnN0IE1lZGlhVGltZSYg
TWVkaWFUaW1lOjp6ZXJvVGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1l
KDAsIDEsIFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRp
bWUoLTEsIDEsIDApOwotICAgIHJldHVybiB0aW1lOwotfQotCi1jb25zdCBNZWRpYVRpbWUmIE1l
ZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKQotewotICAgIHN0YXRpYyBjb25zdCBNZWRp
YVRpbWUgdGltZSgwLCAxLCBQb3NpdGl2ZUluZmluaXRlIHwgVmFsaWQpOwotICAgIHJldHVybiB0
aW1lOwotfQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRp
bWUoKQotewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgtMSwgMSwgTmVnYXRpdmVJ
bmZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1l
JiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFU
aW1lIHRpbWUoMCwgMSwgSW5kZWZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0K
LQotTWVkaWFUaW1lIE1lZGlhVGltZTo6dG9UaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBS
b3VuZGluZ0ZsYWdzIGZsYWdzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6dG9UaW1lU2Nh
bGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ01vZGUgbW9kZSkgY29uc3QKIHsKICAgICBN
ZWRpYVRpbWUgcmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0LnNldFRpbWVTY2FsZSh0aW1lU2Nh
bGUsIGZsYWdzKTsKKyAgICByZXN1bHQuc2V0VGltZVNjYWxlKHRpbWVTY2FsZSwgbW9kZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSh1aW50
MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nRmxhZ3MgZmxhZ3MpCit2b2lkIE1lZGlhVGltZTo6c2V0
VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdNb2RlIG1vZGUpCiB7CiAgICAg
aWYgKGhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgKnRoaXMgPSBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUobV90aW1lVmFsdWVBc0RvdWJsZSwgdGltZVNjYWxlKTsKKyAgICAgICAgKnRo
aXMgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV92YWx1ZUFzRG91YmxlLCB0aW1lU2Nh
bGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCF0aW1lU2NhbGUpIHsKLSAg
ICAgICAgKnRoaXMgPSBtX3RpbWVWYWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDog
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgKnRoaXMgPSBtX3ZhbHVlIDwgMCA/IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHRpbWVTY2FsZSA9PSBtX3RpbWVTY2FsZSkKKyAgICBp
ZiAodGltZVNjYWxlID09IG1fc2NhbGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRpbWVTY2Fs
ZSA9IHN0ZDo6bWluKE1heGltdW1UaW1lU2NhbGUsIHRpbWVTY2FsZSk7CiAKLSAgICBJbnQxMjgg
bmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxJbnQxMjg+KG1fdGltZVZhbHVlKSAqIHRpbWVTY2FsZTsK
LSAgICBpbnQ2NF90IHJlbWFpbmRlciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG5ld1ZhbHVlICUg
bV90aW1lU2NhbGUpOwotICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgLyBtX3RpbWVTY2FsZTsKKyAg
ICBJbnQxMjggbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxJbnQxMjg+KG1fdmFsdWUpICogdGltZVNj
YWxlOworICAgIGludDY0X3QgcmVtYWluZGVyID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obmV3VmFs
dWUgJSBtX3NjYWxlKTsKKyAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlIC8gbV9zY2FsZTsKIAogICAg
IGlmIChuZXdWYWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSB7CiAg
ICAgICAgICp0aGlzID0gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKQEAgLTUwMyw0MiArNDI0LDQy
IEBAIHZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3Vu
ZGluZ0ZsYWdzIGZsYWdzKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV90aW1lVmFs
dWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1ZSk7Ci0gICAgc3RkOjpzd2FwKG1fdGlt
ZVNjYWxlLCB0aW1lU2NhbGUpOworICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bmV3VmFsdWUpOworICAgIGF1dG8gb2xkVGltZVNjYWxlID0gc3RkOjpleGNoYW5nZShtX3NjYWxl
LCB0aW1lU2NhbGUpOwogCiAgICAgaWYgKCFyZW1haW5kZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fdGltZUZsYWdzIHw9IEhhc0JlZW5Sb3VuZGVkOwotICAgIHN3aXRjaCAoZmxhZ3MpIHsK
LSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm86Ci0gICAgICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQ2NF90PihsbGFicyhyZW1haW5kZXIpKSAqIDIgPj0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4odGltZVNjYWxlKSkgeworICAgIG1fZmxhZ3MuYWRkKEhhc0JlZW5Sb3VuZGVkKTsK
KyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9t
WmVybzoKKyAgICAgICAgaWYgKHN0ZDo6YWJzKHJlbWFpbmRlcikgKiAyID49IG9sZFRpbWVTY2Fs
ZSkgewogICAgICAgICAgICAgLy8gcm91bmQgdXAgKGF3YXkgZnJvbSB6ZXJvKQogICAgICAgICAg
ICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAg
ICAgICAgICAgICAgICAtLW1fdmFsdWU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICAgICArK21fdmFsdWU7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm86Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OlRvd2FyZFplcm86CiAgICAgICAgIGJyZWFrOwogCi0gICAg
Y2FzZSBSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm86CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OkF3YXlGcm9tWmVybzoKICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICBt
X3RpbWVWYWx1ZS0tOworICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3RpbWVWYWx1ZSsrOworICAgICAgICAgICAgKyttX3ZhbHVlOwogICAgICAgICBi
cmVhazsKIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eToK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eToKICAgICAgICAg
aWYgKHJlbWFpbmRlciA+IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZSsrOworICAgICAgICAg
ICAgKyttX3ZhbHVlOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBSb3VuZGlu
Z0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5OgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpU
b3dhcmROZWdhdGl2ZUluZmluaXR5OgogICAgICAgICBpZiAocmVtYWluZGVyIDwgMCkKLSAgICAg
ICAgICAgIG1fdGltZVZhbHVlLS07CisgICAgICAgICAgICAtLW1fdmFsdWU7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KQEAgLTU0Nyw3ICs0NjgsNyBAQCB2b2lkIE1lZGlhVGltZTo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91dC5wcmludCgieyIpOwogICAgIGlmICgh
aGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgb3V0LnByaW50KG1fdGltZVZhbHVlLCAiLyIsIG1f
dGltZVNjYWxlLCAiID0gIik7CisgICAgICAgIG91dC5wcmludChtX3ZhbHVlLCAiLyIsIG1fc2Nh
bGUsICIgPSAiKTsKICAgICBvdXQucHJpbnQodG9Eb3VibGUoKSwgIn0iKTsKIH0KIApAQCAtNTU2
LDcgKzQ3Nyw3IEBAIFN0cmluZyBNZWRpYVRpbWU6OnRvU3RyaW5nKCkgY29uc3QKICAgICBjb25z
dCBjaGFyKiBpbnZhbGlkID0gaXNJbnZhbGlkKCkgPyAiLCBpbnZhbGlkIiA6ICIiOwogICAgIGlm
IChoYXNEb3VibGVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygneycsIHRvRG91
YmxlKCksIGludmFsaWQsICd9Jyk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCBtX3RpbWVW
YWx1ZSwgJy8nLCBtX3RpbWVTY2FsZSwgIiA9ICIsIHRvRG91YmxlKCksIGludmFsaWQsICd9Jyk7
CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCBtX3ZhbHVlLCAnLycsIG1fc2NhbGUsICIgPSAi
LCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwogfQogCiBSZWY8SlNPTjo6T2JqZWN0PiBNZWRp
YVRpbWU6OnRvSlNPTk9iamVjdCgpIGNvbnN0CkBAIC01NzksOSArNTAwLDkgQEAgUmVmPEpTT046
Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdAogICAgIGVsc2UKICAgICAg
ICAgb2JqZWN0LT5zZXREb3VibGUoInZhbHVlIl9zLCB0b0RvdWJsZSgpKTsKIAotICAgIG9iamVj
dC0+c2V0RG91YmxlKCJudW1lcmF0b3IiX3MsIHN0YXRpY19jYXN0PGRvdWJsZT4obV90aW1lVmFs
dWUpKTsKLSAgICBvYmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9yIl9zLCBtX3RpbWVTY2Fs
ZSk7Ci0gICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJmbGFncyJfcywgbV90aW1lRmxhZ3MpOworICAg
IG9iamVjdC0+c2V0RG91YmxlKCJudW1lcmF0b3IiX3MsIG1fdmFsdWUpOworICAgIG9iamVjdC0+
c2V0SW50ZWdlcigiZGVub21pbmF0b3IiX3MsIG1fc2NhbGUpOworICAgIG9iamVjdC0+c2V0SW50
ZWdlcigiZmxhZ3MiX3MsIG1fZmxhZ3MudG9SYXcoKSk7CiAKICAgICByZXR1cm4gb2JqZWN0Owog
fQpAQCAtNTkxLDMzICs1MTIsMjggQEAgU3RyaW5nIE1lZGlhVGltZTo6dG9KU09OU3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gdG9KU09OT2JqZWN0KCktPnRvSlNPTlN0cmluZygpOwogfQogCi1N
ZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKQorTWVkaWFUaW1lIGFicyhNZWRpYVRp
bWUgdGltZSkKIHsKLSAgICBpZiAocmhzLmlzSW52YWxpZCgpKQotICAgICAgICByZXR1cm4gTWVk
aWFUaW1lOjppbnZhbGlkVGltZSgpOwotICAgIGlmIChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkg
fHwgcmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgIGlmICh0aW1lLmlzTmVnYXRpdmVJbmZp
bml0ZSgpKQogICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgp
OwotICAgIGlmIChyaHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZShmYWJzKHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlKSk7Ci0KLSAg
ICBNZWRpYVRpbWUgdmFsID0gcmhzOwotICAgIHZhbC5tX3RpbWVWYWx1ZSA9IHN0ZDo6YWJzKHJo
cy5tX3RpbWVWYWx1ZSk7Ci0gICAgcmV0dXJuIHZhbDsKKyAgICBpZiAodGltZS5oYXNEb3VibGVW
YWx1ZSgpKQorICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0ZDo6
YWJzKHRpbWUubV92YWx1ZUFzRG91YmxlKSk7CisgICAgTWVkaWFUaW1lIHJlc3VsdCA9IHRpbWU7
CisgICAgcmVzdWx0Lm1fdmFsdWUgPSBzdGQ6OmFicyhyZXN1bHQubV92YWx1ZSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogU3RyaW5nIE1lZGlhVGltZVJhbmdlOjp0b0pTT05TdHJpbmcoKSBj
b25zdAogewogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLQogICAg
IG9iamVjdC0+c2V0T2JqZWN0KCJzdGFydCJfcywgc3RhcnQudG9KU09OT2JqZWN0KCkpOwogICAg
IG9iamVjdC0+c2V0T2JqZWN0KCJlbmQiX3MsIGVuZC50b0pTT05PYmplY3QoKSk7Ci0KICAgICBy
ZXR1cm4gb2JqZWN0LT50b0pTT05TdHJpbmcoKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IE1lZGlhVGltZSYg
dGltZSkKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBNZWRpYVRp
bWUgdGltZSkKIHsKICAgICByZXR1cm4gc3RyZWFtIDw8IHRpbWUudG9KU09OU3RyaW5nKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5oCmluZGV4IDcxYWNmMzI5ZWIzOTg5MzM1MTJmZDdmM2Y1OGQ2MGJlY2ZmMjNj
NTAuLjQ0MTIzNjQwMjA2NWViMDRhZjNiMzMyMDc3YTU4YmIyMzAzODA1MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5oCkBAIC0zMCwyMSArMzAsMTYgQEAKIAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotI2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDxtYXRo
Lmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUHJpbnRTdHJlYW07CiAKLWNsYXNzIFdURl9FWFBPUlRf
UFJJVkFURSBNZWRpYVRpbWUgZmluYWwgeworY2xhc3MgTWVkaWFUaW1lIGZpbmFsIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBlbnVtIHsKKyAgICBlbnVtIEZs
YWcgOiB1aW50OF90IHsKICAgICAgICAgVmFsaWQgPSAxIDw8IDAsCiAgICAgICAgIEhhc0JlZW5S
b3VuZGVkID0gMSA8PCAxLAogICAgICAgICBQb3NpdGl2ZUluZmluaXRlID0gMSA8PCAyLApAQCAt
NTIsNjcgKzQ3LDY1IEBAIHB1YmxpYzoKICAgICAgICAgSW5kZWZpbml0ZSA9IDEgPDwgNCwKICAg
ICAgICAgRG91YmxlVmFsdWUgPSAxIDw8IDUsCiAgICAgfTsKLQotICAgIGNvbnN0ZXhwciBNZWRp
YVRpbWUoKTsKLSAgICBjb25zdGV4cHIgTWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90
IHNjYWxlLCB1aW50OF90IGZsYWdzID0gVmFsaWQpOwotICAgIE1lZGlhVGltZShjb25zdCBNZWRp
YVRpbWUmIHJocyk7Ci0KLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9h
dCBmbG9hdFRpbWUpOwotICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0
IGZsb2F0VGltZSwgdWludDMyX3QgdGltZVNjYWxlKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNy
ZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUpOwotICAgIHN0YXRpYyBNZWRpYVRpbWUg
Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSwgdWludDMyX3QgdGltZVNjYWxlKTsK
LQotICAgIGZsb2F0IHRvRmxvYXQoKSBjb25zdDsKLSAgICBkb3VibGUgdG9Eb3VibGUoKSBjb25z
dDsKLQotICAgIE1lZGlhVGltZSYgb3BlcmF0b3I9KGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKLSAg
ICBNZWRpYVRpbWUmIG9wZXJhdG9yKz0oY29uc3QgTWVkaWFUaW1lJiByaHMpIHsgcmV0dXJuICp0
aGlzID0gKnRoaXMgKyByaHM7IH0KLSAgICBNZWRpYVRpbWUmIG9wZXJhdG9yLT0oY29uc3QgTWVk
aWFUaW1lJiByaHMpIHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0KLSAgICBNZWRpYVRp
bWUgb3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKLSAgICBNZWRpYVRpbWUg
b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKLSAgICBNZWRpYVRpbWUgb3Bl
cmF0b3ItKCkgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90KSBjb25zdDsK
LSAgICBib29sIG9wZXJhdG9yPChjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4g
Y29tcGFyZShyaHMpID09IExlc3NUaGFuOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgTWVk
aWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBHcmVhdGVyVGhhbjsg
fQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1
cm4gY29tcGFyZShyaHMpICE9IEVxdWFsVG87IH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
TWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBFcXVhbFRvOyB9
Ci0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVy
biBjb21wYXJlKHJocykgPj0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpIDw9IEVxdWFsVG87IH0K
LSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdDsKLQotICAgIHR5cGVkZWYgZW51bSB7CisgICAgY29uc3RleHByIE1lZGlhVGltZSgp
IDogTWVkaWFUaW1lIHsgaW50NjRfdCB7IH0sIERlZmF1bHRUaW1lU2NhbGUgfSB7IH0KKyAgICBj
b25zdGV4cHIgTWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCBPcHRpb25T
ZXQ8RmxhZz4gPSB7IFZhbGlkIH0pOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBN
ZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgdmFsdWUsIHVpbnQz
Ml90IHNjYWxlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lZGlhVGltZSBjcmVh
dGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBNZWRpYVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFsdWUsIHVpbnQzMl90IHNjYWxl
KTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCB0b0Zsb2F0KCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b0RvdWJsZSgpIGNvbnN0OworCisgICAgTWVkaWFU
aW1lJiBvcGVyYXRvcis9KE1lZGlhVGltZSByaHMpIHsgcmV0dXJuICp0aGlzID0gKnRoaXMgKyBy
aHM7IH0KKyAgICBNZWRpYVRpbWUmIG9wZXJhdG9yLT0oTWVkaWFUaW1lIHJocykgeyByZXR1cm4g
KnRoaXMgPSAqdGhpcyAtIHJoczsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUg
b3BlcmF0b3IrKE1lZGlhVGltZSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlh
VGltZSBvcGVyYXRvci0oTWVkaWFUaW1lKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
TWVkaWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZWRp
YVRpbWUgb3BlcmF0b3IqKGludDMyX3QpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I8KE1lZGlh
VGltZSByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBMZXNzVGhhbjsgfQorICAg
IGJvb2wgb3BlcmF0b3I+KE1lZGlhVGltZSByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhz
KSA9PSBHcmVhdGVyVGhhbjsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShNZWRpYVRpbWUgcmhzKSBj
b25zdCB7IHJldHVybiBjb21wYXJlKHJocykgIT0gRXF1YWxUbzsgfQorICAgIGJvb2wgb3BlcmF0
b3I9PShNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gRXF1YWxU
bzsgfQorICAgIGJvb2wgb3BlcmF0b3I+PShNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVybiBj
b21wYXJlKHJocykgPj0gRXF1YWxUbzsgfQorICAgIGJvb2wgb3BlcmF0b3I8PShNZWRpYVRpbWUg
cmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPD0gRXF1YWxUbzsgfQorICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yISgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7CisKKyAgICBlbnVtIENvbXBhcmlz
b25GbGFncyB7CiAgICAgICAgIExlc3NUaGFuID0gLTEsCiAgICAgICAgIEVxdWFsVG8gPSAwLAog
ICAgICAgICBHcmVhdGVyVGhhbiA9IDEsCi0gICAgfSBDb21wYXJpc29uRmxhZ3M7CisgICAgfTsK
KyAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdz
IG9yZGVyaW5nKE1lZGlhVGltZSwgTWVkaWFUaW1lKTsKKyAgICBDb21wYXJpc29uRmxhZ3MgY29t
cGFyZShNZWRpYVRpbWUgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9yZGVyaW5nKCp0aGlzLCBvdGhl
cik7IH0KIAotICAgIENvbXBhcmlzb25GbGFncyBjb21wYXJlKGNvbnN0IE1lZGlhVGltZSYgcmhz
KSBjb25zdDsKLSAgICBib29sIGlzQmV0d2Vlbihjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRp
YVRpbWUmKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0JldHdlZW4oTWVk
aWFUaW1lLCBNZWRpYVRpbWUpIGNvbnN0OwogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lRmxhZ3MgJiBWYWxpZDsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoVmFsaWQpOyB9CiAgICAgYm9vbCBpc0ludmFsaWQoKSBj
b25zdCB7IHJldHVybiAhaXNWYWxpZCgpOyB9Ci0gICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSGFzQmVlblJvdW5kZWQ7IH0KLSAgICBib29sIGlz
UG9zaXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgUG9zaXRpdmVJ
bmZpbml0ZTsgfQotICAgIGJvb2wgaXNOZWdhdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lRmxhZ3MgJiBOZWdhdGl2ZUluZmluaXRlOyB9Ci0gICAgYm9vbCBpc0luZGVmaW5pdGUo
KSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEluZGVmaW5pdGU7IH0KKyAgICBib29sIGhh
c0JlZW5Sb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhIYXNCZWVuUm91
bmRlZCk7IH0KKyAgICBib29sIGlzUG9zaXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmxhZ3MuY29udGFpbnMoUG9zaXRpdmVJbmZpbml0ZSk7IH0KKyAgICBib29sIGlzTmVnYXRpdmVJ
bmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoTmVnYXRpdmVJbmZpbml0
ZSk7IH0KKyAgICBib29sIGlzSW5kZWZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29u
dGFpbnMoSW5kZWZpbml0ZSk7IH0KICAgICBib29sIGlzRmluaXRlKCkgY29uc3QgeyByZXR1cm4g
IWlzSW52YWxpZCgpICYmICFpc0luZGVmaW5pdGUoKSAmJiAhaXNQb3NpdGl2ZUluZmluaXRlKCkg
JiYgIWlzTmVnYXRpdmVJbmZpbml0ZSgpOyB9Ci0gICAgYm9vbCBoYXNEb3VibGVWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgRG91YmxlVmFsdWU7IH0KLSAgICB1aW50OF90IHRp
bWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzOyB9CisgICAgYm9vbCBoYXNEb3Vi
bGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRG91YmxlVmFsdWUpOyB9
CisgICAgT3B0aW9uU2V0PEZsYWc+IHRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7
IH0KIAotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIHplcm9UaW1lKCk7Ci0gICAgc3RhdGlj
IGNvbnN0IE1lZGlhVGltZSYgaW52YWxpZFRpbWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFU
aW1lJiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUm
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW5k
ZWZpbml0ZVRpbWUoKTsKKyAgICBzdGF0aWMgY29uc3RleHByIE1lZGlhVGltZSB6ZXJvVGltZSgp
IHsgcmV0dXJuIHsgMCwgMSwgVmFsaWQgfTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFU
aW1lIGludmFsaWRUaW1lKCkgeyByZXR1cm4geyAtMSwgMSwgeyB9IH07IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIE1lZGlhVGltZSBwb3NpdGl2ZUluZmluaXRlVGltZSgpIHsgcmV0dXJuIHsgMCwg
MSwgeyBQb3NpdGl2ZUluZmluaXRlLCBWYWxpZCB9IH07IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IE1lZGlhVGltZSBuZWdhdGl2ZUluZmluaXRlVGltZSgpIHsgcmV0dXJuIHsgLTEsIDEsIHsgTmVn
YXRpdmVJbmZpbml0ZSwgVmFsaWQgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRp
bWUgaW5kZWZpbml0ZVRpbWUoKSB7IHJldHVybiB7IDAsIDEsIHsgSW5kZWZpbml0ZSwgVmFsaWQg
fSB9OyB9CiAKLSAgICBjb25zdCBpbnQ2NF90JiB0aW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3RpbWVWYWx1ZTsgfQotICAgIGNvbnN0IHVpbnQzMl90JiB0aW1lU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX3RpbWVTY2FsZTsgfQorICAgIGludDY0X3QgdGltZVZhbHVlKCkgY29uc3QgeyBBU1NF
UlQoIWhhc0RvdWJsZVZhbHVlKCkpOyByZXR1cm4gbV92YWx1ZTsgfQorICAgIHVpbnQzMl90IHRp
bWVTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KIAotICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwotICAgIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9i
amVjdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdG9KU09OU3RyaW5n
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNP
Tk9iamVjdCgpIGNvbnN0OwogCiAgICAgLy8gTWFrZSB0aGUgZm9sbG93aW5nIGNhc3RzIGVycm9y
czoKICAgICBvcGVyYXRvciBkb3VibGUoKSBjb25zdCA9IGRlbGV0ZTsKQEAgLTEyMCw5MyArMTEz
LDk5IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBpbnQoKSBjb25zdCA9IGRlbGV0ZTsKICAgICBN
ZWRpYVRpbWUoaW50KSA9IGRlbGV0ZTsKIAotICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUg
TWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocyk7CisgICAgZnJpZW5kIFdURl9FWFBP
UlRfUFJJVkFURSBNZWRpYVRpbWUgYWJzKE1lZGlhVGltZSk7CiAKLSAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9IDEwMDAwMDAwOwotICAgIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBNYXhpbXVtVGltZVNjYWxlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
RGVmYXVsdFRpbWVTY2FsZSA9IDEwMDAwMDAwOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgY29uc3QgdWludDMyX3QgTWF4aW11bVRpbWVTY2FsZTsKIAotICAgIGVudW0gY2xhc3MgUm91
bmRpbmdGbGFncyB7Ci0gICAgICAgIEhhbGZBd2F5RnJvbVplcm8gPSAwLAorICAgIGVudW0gY2xh
c3MgUm91bmRpbmdNb2RlIHsKKyAgICAgICAgSGFsZkF3YXlGcm9tWmVybywKICAgICAgICAgVG93
YXJkWmVybywKICAgICAgICAgQXdheUZyb21aZXJvLAogICAgICAgICBUb3dhcmRQb3NpdGl2ZUlu
ZmluaXR5LAogICAgICAgICBUb3dhcmROZWdhdGl2ZUluZmluaXR5LAogICAgIH07Ci0KLSAgICBN
ZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3QsIFJvdW5kaW5nRmxhZ3MgPSBSb3VuZGluZ0Zs
YWdzOjpIYWxmQXdheUZyb21aZXJvKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVk
aWFUaW1lIHRvVGltZVNjYWxlKHVpbnQzMl90IHNjYWxlLCBSb3VuZGluZ01vZGUgPSBSb3VuZGlu
Z01vZGU6OkhhbGZBd2F5RnJvbVplcm8pIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIE1l
ZGlhVGltZSYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgc2V0VGltZVNjYWxlKHVpbnQzMl90LCBS
b3VuZGluZ0ZsYWdzID0gUm91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybyk7CisgICAgZW51
bSBVc2VEb3VibGVGbGFnIHsgVXNlRG91YmxlIH07CisgICAgY29uc3RleHByIE1lZGlhVGltZShV
c2VEb3VibGVGbGFnLCBkb3VibGUgdmFsdWUpOworCisgICAgdm9pZCBzZXRUaW1lU2NhbGUodWlu
dDMyX3QsIFJvdW5kaW5nTW9kZSA9IFJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybyk7CiAK
ICAgICB1bmlvbiB7Ci0gICAgICAgIGludDY0X3QgbV90aW1lVmFsdWU7Ci0gICAgICAgIGRvdWJs
ZSBtX3RpbWVWYWx1ZUFzRG91YmxlOworICAgICAgICBpbnQ2NF90IG1fdmFsdWU7CisgICAgICAg
IGRvdWJsZSBtX3ZhbHVlQXNEb3VibGU7CiAgICAgfTsKLSAgICB1aW50MzJfdCBtX3RpbWVTY2Fs
ZTsKLSAgICB1aW50OF90IG1fdGltZUZsYWdzOworICAgIHVpbnQzMl90IG1fc2NhbGUgeyBEZWZh
dWx0VGltZVNjYWxlIH07CisgICAgT3B0aW9uU2V0PEZsYWc+IG1fZmxhZ3MgeyBWYWxpZCB9Owog
fTsKIAotY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFUaW1lKCkKLSAgICA6IG1fdGltZVZhbHVl
KDApCi0gICAgLCBtX3RpbWVTY2FsZShEZWZhdWx0VGltZVNjYWxlKQotICAgICwgbV90aW1lRmxh
Z3MoVmFsaWQpCi17Ci19Ci0KLWNvbnN0ZXhwciBNZWRpYVRpbWU6Ok1lZGlhVGltZShpbnQ2NF90
IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgdWludDhfdCBmbGFncykKLSAgICA6IG1fdGltZVZhbHVl
KHZhbHVlKQotICAgICwgbV90aW1lU2NhbGUoc2NhbGUpCi0gICAgLCBtX3RpbWVGbGFncyhmbGFn
cykKLXsKLSAgICBpZiAoc2NhbGUgfHwgIShmbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgKnRoaXMgPSB2YWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKTsKLX0KK1dURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgYWJz
KE1lZGlhVGltZSk7CiAKLWlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGludDMyX3QgbGhzLCBj
b25zdCBNZWRpYVRpbWUmIHJocykgeyByZXR1cm4gcmhzLm9wZXJhdG9yKihsaHMpOyB9Ci0KLVdU
Rl9FWFBPUlRfUFJJVkFURSBleHRlcm4gTWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJo
cyk7Ci0KLXN0cnVjdCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lUmFuZ2Ugeworc3RydWN0
IE1lZGlhVGltZVJhbmdlIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAK
LSAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKIAotICAgIGNvbnN0IE1lZGlhVGltZSBzdGFy
dDsKLSAgICBjb25zdCBNZWRpYVRpbWUgZW5kOworICAgIE1lZGlhVGltZSBzdGFydDsKKyAgICBN
ZWRpYVRpbWUgZW5kOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgTWVkaWFU
aW1lOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK2NvbnN0ZXhwciBNZWRpYVRpbWU6
Ok1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgT3B0aW9uU2V0PEZsYWc+
IGZsYWdzKQorICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAsIG1fc2NhbGUoc2NhbGUpCisgICAg
LCBtX2ZsYWdzKGZsYWdzKQoreworICAgIGlmICghKHNjYWxlIHx8ICEoZmxhZ3MgJiBWYWxpZCkp
KQorICAgICAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBw
b3NpdGl2ZUluZmluaXRlVGltZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
TWVkaWFUaW1lIG9wZXJhdG9yKihjb25zdCBUJiBhLCBNZWRpYVRpbWUgYikKIHsKLSAgICBlbmNv
ZGVyIDw8IG1fdGltZVZhbHVlIDw8IG1fdGltZVNjYWxlIDw8IG1fdGltZUZsYWdzOworICAgIHJl
dHVybiBiICogYTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgTWVkaWFUaW1l
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFUaW1lJiB0aW1lKQordGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fdGltZVZhbHVlKQotICAg
ICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fdGltZVNjYWxlKQotICAgICAgICAmJiBkZWNv
ZGVyLmRlY29kZSh0aW1lLm1fdGltZUZsYWdzKTsKKyAgICBlbmNvZGVyIDw8IG1fdmFsdWUgPDwg
bV9zY2FsZSA8PCBtX2ZsYWdzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBib29s
IE1lZGlhVGltZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhVGltZSYgdGltZSkKK3sK
KyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUodGltZS5tX3ZhbHVlKQorICAgICAgICAmJiBkZWNv
ZGVyLmRlY29kZSh0aW1lLm1fc2NhbGUpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUu
bV9mbGFncyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CiAK
IHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PE1lZGlhVGltZT4gewotICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSB7IHJldHVybiB0aW1lLnRvSlNP
TlN0cmluZygpOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhNZWRpYVRpbWUgdGltZSkg
eyByZXR1cm4gdGltZS50b0pTT05TdHJpbmcoKTsgfQogfTsKIHRlbXBsYXRlPD4gc3RydWN0IExv
Z0FyZ3VtZW50PE1lZGlhVGltZVJhbmdlPiB7CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhj
b25zdCBNZWRpYVRpbWVSYW5nZSYgcmFuZ2UpIHsgcmV0dXJuIHJhbmdlLnRvSlNPTlN0cmluZygp
OyB9CiB9OwogCiAjaWZuZGVmIE5ERUJVRwotV1RGX0VYUE9SVF9QUklWQVRFIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IE1lZGlhVGltZSYpOworV1RGX0VYUE9SVF9Q
UklWQVRFIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIE1lZGlhVGltZSk7CiAj
ZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxNZWRpYVRpbWU6OkZsYWc+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBNZWRpYVRpbWU6OkZsYWcs
CisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6VmFsaWQsCisgICAgICAgIE1lZGlhVGltZTo6Rmxh
Zzo6SGFzQmVlblJvdW5kZWQsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6UG9zaXRpdmVJbmZp
bml0ZSwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpOZWdhdGl2ZUluZmluaXRlLAorICAgICAg
ICBNZWRpYVRpbWU6OkZsYWc6OkluZGVmaW5pdGUsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6
RG91YmxlVmFsdWUKKyAgICA+OworfTsKKwogfQogCiB1c2luZyBXVEY6Ok1lZGlhVGltZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaCBiL1NvdXJjZS9XVEYvd3RmL1NlY29u
ZHMuaAppbmRleCBkMjgyZGJiZjcxNWJlNzQyNzg5ZWExMGYxY2NiMjlhZDE0NTM1NjRmLi4xYTI5
NjRjNmRlYTE1NWQ5MzZlMDRiNTJlMzMyM2YzMmFmMTZiNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9TZWNvbmRzLmgKKysrIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0zNzIsNCArMzczLDMgQEAgaW5saW5lIGJvb2wgaXNm
aW5pdGUoV1RGOjpTZWNvbmRzIHNlY29uZHMpCiB9IC8vIG5hbWVzcGFjZSBzdGQKIAogdXNpbmcg
bmFtZXNwYWNlIFdURjo6c2Vjb25kc19saXRlcmFsczsKLXVzaW5nIFdURjo6U2Vjb25kczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAppbmRleCBmZDU1OWIyNDJkZGZmZDVlOGQ4ZjEz
M2VjNDEzYmEzYWI1YjUyNjQ3Li5lNWEzY2I2MzVlYWYxY2E4ODlkZDIyMDk3NTI1ZmNkNDI4ZTMx
ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKKysr
IGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCkBAIC0zMiw5ICszMiw5IEBA
CiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiAjaWYgT1Mo
V0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9VUkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCA0NDhkZGVlMjE2MGVmMThj
YTVlMDY2MTM5MGU1OThkNTNiYzU0ZDJhLi4wYzhmMzMxNTBiMTUzNDg0ZmQ0YzFjOGFkMDAxYTQ5
ZmJiZmFhZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KQEAgLTkyMiw3ICs5MjMsNyBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVS
TCYgdXJsKQogCiAgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBtYXRjaGVzIHRoZSBwb3J0
IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgogICAgIC8vIFNlZSBodHRwOi8vd3d3
Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5odG1sIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgotICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBibG9ja2VkUG9ydExpc3RbXSA9
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IGJsb2NrZWRQb3J0TGlzdFtdID0gewog
ICAgICAgICAxLCAgICAvLyB0Y3BtdXgKICAgICAgICAgNywgICAgLy8gZWNobwogICAgICAgICA5
LCAgICAvLyBkaXNjYXJkCkBAIC0xMDA2LDEwICsxMDA3LDEwIEBAIGJvb2wgcG9ydEFsbG93ZWQo
Y29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0aW9u
XQogICAgICAgICAxMDA4MCwgLy8gYW1hbmRhCiAgICAgfTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNvcnRlZEFycmF5U2V0IGJsb2NrZWRQb3J0U2V0IHsgYmxvY2tlZFBvcnRMaXN0IH07CiAKICAg
ICAvLyBJZiB0aGUgcG9ydCBpcyBub3QgaW4gdGhlIGJsb2NrZWQgcG9ydCBsaXN0LCBhbGxvdyBp
dC4KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbihibG9ja2VkUG9ydExpc3Qp
LCBzdGQ6OmVuZChibG9ja2VkUG9ydExpc3QpKSk7Ci0gICAgaWYgKCFzdGQ6OmJpbmFyeV9zZWFy
Y2goc3RkOjpiZWdpbihibG9ja2VkUG9ydExpc3QpLCBzdGQ6OmVuZChibG9ja2VkUG9ydExpc3Qp
LCBwb3J0LnZhbHVlKCkpKQorICAgIGlmICghYmxvY2tlZFBvcnRTZXQuY29udGFpbnMoKnBvcnQp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEFsbG93IHBvcnRzIDIxIGFuZCAyMiBm
b3IgRlRQIFVSTHMsIGFzIE1vemlsbGEgZG9lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1dhbGxUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCmluZGV4IDU0MzhjYzAxYjYx
YWE5ZjZjN2M0NTZlNWY4OTFlNDQ2NmY3MzNiYmMuLjFjZThkMzc1NTYxZDI5YjU4OTYxYmUzZmNm
MTkzOTQwNGZlODg5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKKysr
IGIvU291cmNlL1dURi93dGYvV2FsbFRpbWUuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDx3dGYvQ2xvY2tUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvR2VuZXJpY1RpbWVNaXhpbi5oPgogI2luY2x1ZGUgPHd0Zi9JbnQx
MjguaD4KIApAQCAtOTksNSArMTAwLDMgQEAgaW5saW5lIGJvb2wgaXNmaW5pdGUoV1RGOjpXYWxs
VGltZSB0aW1lKQogfQogCiB9IC8vIG5hbWVzcGFjZSBzdGQKLQotdXNpbmcgV1RGOjpXYWxsVGlt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rl
ci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmgKaW5kZXgg
YWZjMzNmMzhkNDIzMzViZDllNjEyNmE0YTc4YTUwNzEwZGIyNjA4YS4uMjA3ZmEwNDQ2OWZiOTQ4
Mzg3NjhlOWY0MWEyYTMyODk3ZjVjYjA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudENvZGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9T
SVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCmluZGV4IGQ5
MjQ0OTBkMWI1N2YzZWUwNmVlNWVhZDhhMmQzYzExYzIwY2I1ZDEuLjZkMzQwZTQ2ZjJiMjg0NDBi
MTEzZWQ3NzA5ZWEzNzEwMWE4MmY4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L1RocmVhZGluZ1BPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQ
T1NJWC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvV1RG
Q29uZmlnLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmRM
b2NrLmg+CiAKICNpZiBPUyhMSU5VWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVh
ZHMvU2lnbmFscy5oIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKaW5kZXggOGI0
MGMxNGM4NDIzZmQ0ZWNiZjYzNTA2ZDYwYmZmMWMwZmQ4NTYwZi4uOWYxODZmNjM1NDg0MWE3NTVh
YmMwZDg5ZWMzM2YwYjVmZTBlZjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFk
cy9TaWduYWxzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIE9TKFVOSVgpCiAKKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNs
dWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggZGMyNDg5ZmY4OWU4ZjlmODkx
NGJjOGUzZmMyOTY2ZjRkZWVlNTc0ZS4uYTlmNTk1MjRhZmM1Y2JjNzM2ZmJjNGU4MTZkY2RiZWRj
N2Y5MGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAKQEAgLTk1LDYgKzk1LDcg
QEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRh
LmgKaW5kZXggOTI2MjIxNzBjOGFhZDY5ODliOGExMmNlNDgzNTZkYzY4N2JmNmUzNS4uZTIyY2M5
NDY2YTdhYTM3ZDE3NTc4NzU1ZWUzZDY0YmQwZjJhZmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxjbWF0aD4K
KyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZv
dW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggMDY1OTg0MDY4
OWU0YWJiNTIyMGU1YmRkODA1MjNkNzQwMmY0YWNlMi4uODg4YmVmMzIzNjgyZWEyMjk5N2VmNjQw
OWEwZDcxZDg1NWZmZmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZv
dW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwCkBAIC0zMiwzNyAr
MzIsMjggQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLXN0YXRpYyBib29sIENNVGltZUhhc0ZsYWdz
KGNvbnN0IENNVGltZSYgY21UaW1lLCB1aW50MzJfdCBmbGFncykKK01lZGlhVGltZSB0b01lZGlh
VGltZShDTVRpbWUgdGltZSkKIHsKLSAgICByZXR1cm4gKGNtVGltZS5mbGFncyAmIGZsYWdzKSA9
PSBmbGFnczsKKyAgICBPcHRpb25TZXQ8TWVkaWFUaW1lOjpGbGFnPiBmbGFnczsKKyAgICBpZiAo
dGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19WYWxpZCkgeworICAgICAgICBmbGFncy5hZGQoTWVk
aWFUaW1lOjpWYWxpZCk7CisgICAgICAgIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX1Bv
c2l0aXZlSW5maW5pdHkpCisgICAgICAgICAgICBmbGFncy5hZGQoTWVkaWFUaW1lOjpQb3NpdGl2
ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19O
ZWdhdGl2ZUluZmluaXR5KQorICAgICAgICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6TmVnYXRp
dmVJbmZpbml0ZSk7CisgICAgICAgIGVsc2UgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3Nf
SW5kZWZpbml0ZSkKKyAgICAgICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6OkluZGVmaW5pdGUp
OworICAgIH0KKyAgICByZXR1cm4gTWVkaWFUaW1lKHRpbWUudmFsdWUsIHRpbWUudGltZXNjYWxl
LCBmbGFncyk7CiB9CiAKLU1lZGlhVGltZSB0b01lZGlhVGltZShjb25zdCBDTVRpbWUmIGNtVGlt
ZSkKLXsKLSAgICB1aW50MzJfdCBmbGFncyA9IDA7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNt
VGltZSwga0NNVGltZUZsYWdzX1ZhbGlkKSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpW
YWxpZDsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQg
fCBrQ01UaW1lRmxhZ3NfSGFzQmVlblJvdW5kZWQpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRp
bWU6Okhhc0JlZW5Sb3VuZGVkOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRp
bWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19Qb3NpdGl2ZUluZmluaXR5KSkKLSAgICAgICAg
ZmxhZ3MgfD0gTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNG
bGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUlu
ZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlOwot
ICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRp
bWVGbGFnc19JbmRlZmluaXRlKSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpJbmRlZmlu
aXRlOwotCi0gICAgcmV0dXJuIE1lZGlhVGltZShjbVRpbWUudmFsdWUsIGNtVGltZS50aW1lc2Nh
bGUsIGZsYWdzKTsKLX0KLQotQ01UaW1lIHRvQ01UaW1lKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFU
aW1lKQorQ01UaW1lIHRvQ01UaW1lKE1lZGlhVGltZSBtZWRpYVRpbWUpCiB7CiAgICAgQ01UaW1l
IHRpbWU7Ci0KICAgICBpZiAobWVkaWFUaW1lLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHRp
bWUgPSBDTVRpbWVNYWtlV2l0aFNlY29uZHMobWVkaWFUaW1lLnRvRG91YmxlKCksIG1lZGlhVGlt
ZS50aW1lU2NhbGUoKSk7CiAgICAgZWxzZQogICAgICAgICB0aW1lID0gQ01UaW1lTWFrZShtZWRp
YVRpbWUudGltZVZhbHVlKCksIG1lZGlhVGltZS50aW1lU2NhbGUoKSk7Ci0KICAgICBpZiAobWVk
aWFUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfVmFs
aWQ7CiAgICAgaWYgKG1lZGlhVGltZS5oYXNCZWVuUm91bmRlZCgpKQpAQCAtNzEsNyArNjIsNiBA
QCBDTVRpbWUgdG9DTVRpbWUoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpCiAgICAgICAgIHRp
bWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHk7CiAgICAgaWYgKG1lZGlh
VGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1l
RmxhZ3NfTmVnYXRpdmVJbmZpbml0eTsKLQogICAgIHJldHVybiB0aW1lOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5oCmluZGV4IGIzZGJlMTdhYTliYzEyNTFkY2UyZWM4YWRlZTdjYjg0OTQ3OWJm
NzAuLmEyYmNkYWU5ZjhlOTlkMGYwNGUzZjNjM2VkMjBhM2YzNmEyOTA2ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5oCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBQQUwgewogCi1QQUxf
RVhQT1JUIENNVGltZSB0b0NNVGltZShjb25zdCBNZWRpYVRpbWUmKTsKLVBBTF9FWFBPUlQgTWVk
aWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0IENNVGltZSYpOworUEFMX0VYUE9SVCBDTVRpbWUgdG9D
TVRpbWUoTWVkaWFUaW1lKTsKK1BBTF9FWFBPUlQgTWVkaWFUaW1lIHRvTWVkaWFUaW1lKENNVGlt
ZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3Bl
cnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAKaW5kZXggMGUxYWQ3MjQ1ZmUxNmUxZTk2ZTNkYTFjYjU4NGI5YTRhNmQ4OWYz
Yi4uODQ0NmRiOTg1NTFlMGM1MzgyYTk2ZmY4NDcxZmJiNjcyMzEwYzRiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xMTks
MTAgKzExOSwxMCBAQCBzdGF0aWMgaW5saW5lIEdhcExlbmd0aCBibGVuZEZ1bmMoY29uc3QgR2Fw
TGVuZ3RoJiBmcm9tLCBjb25zdCBHYXBMZW5ndGgmIHRvLCBjbwogICAgIHJldHVybiBibGVuZChm
cm9tLmxlbmd0aCgpLCB0by5sZW5ndGgoKSwgY29udGV4dCwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRp
dmUpOwogfQogCi1zdGF0aWMgaW5saW5lIFRhYlNpemUgYmxlbmRGdW5jKGNvbnN0IFRhYlNpemUm
IGZyb20sIGNvbnN0IFRhYlNpemUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4
dCYgY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgVGFiU2l6ZSBibGVuZEZ1bmMoVGFiU2l6ZSBmcm9t
LCBUYWJTaXplIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkK
IHsKLSAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9IGJsZW5kKGZyb20udmFsdWUoKSwgdG8udmFsdWUo
KSwgY29udGV4dCk7Ci0gICAgcmV0dXJuIHsgYmxlbmRlZFZhbHVlIDwgMCA/IDAgOiBibGVuZGVk
VmFsdWUsIGZyb20uaXNTcGFjZXMoKSA/IFNwYWNlVmFsdWVUeXBlIDogTGVuZ3RoVmFsdWVUeXBl
IH07CisgICAgYXV0byBibGVuZGVkVmFsdWUgPSBibGVuZChmcm9tLnZhbHVlLCB0by52YWx1ZSwg
Y29udGV4dCk7CisgICAgcmV0dXJuIHsgYmxlbmRlZFZhbHVlIDwgMCA/IDAgOiBibGVuZGVkVmFs
dWUsIGZyb20uaXNTcGFjZXMgPyBUYWJTaXplOjpTcGFjZXMgOiBUYWJTaXplOjpMZW5ndGggfTsK
IH0KIAogc3RhdGljIGlubGluZSBMZW5ndGhTaXplIGJsZW5kRnVuYyhjb25zdCBMZW5ndGhTaXpl
JiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0Nv
bnRleHQmIGNvbnRleHQpCkBAIC05NzgsMTAgKzk3OCw5IEBAIHByaXZhdGU6CiAgICAgLy8gaXQn
cyBvbmx5IHBvc3NpYmxlIGlmIHRoZXkncmUgYm90aCBub3QgYXV0by4KICAgICBib29sIGNhbklu
dGVycG9sYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHlsZSYgdG8s
IENvbXBvc2l0ZU9wZXJhdGlvbikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGJvb2wgZnJv
bUlzQXV0byA9IHZhbHVlKGZyb20pLngoKS5pc0F1dG8oKSAmJiB2YWx1ZShmcm9tKS55KCkuaXNB
dXRvKCk7Ci0gICAgICAgIGJvb2wgdG9Jc0F1dG8gPSB2YWx1ZSh0bykueCgpLmlzQXV0bygpICYm
IHZhbHVlKHRvKS55KCkuaXNBdXRvKCk7Ci0KLSAgICAgICAgcmV0dXJuICghZnJvbUlzQXV0byAm
JiAhdG9Jc0F1dG8pOyAKKyAgICAgICAgYm9vbCBmcm9tSXNBdXRvID0gdmFsdWUoZnJvbSkueC5p
c0F1dG8oKSAmJiB2YWx1ZShmcm9tKS55LmlzQXV0bygpOworICAgICAgICBib29sIHRvSXNBdXRv
ID0gdmFsdWUodG8pLnguaXNBdXRvKCkgJiYgdmFsdWUodG8pLnkuaXNBdXRvKCk7CisgICAgICAg
IHJldHVybiAhZnJvbUlzQXV0byAmJiAhdG9Jc0F1dG87CiAgICAgfQogfTsKIApAQCAtMTI5Miwy
MCArMTI5MSwyMCBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBzaGFkb3dMaXN0TGVuZ3RoKGNvbnN0
IFNoYWRvd0RhdGEqIHNoYWRvdykKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgY29uc3QgU2hhZG93RGF0YSogc2hhZG93Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSog
c3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBvdGhlclNoYWRvdykKK3N0YXRpYyBpbmxpbmUg
Y29uc3QgU2hhZG93RGF0YSYgc2hhZG93Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3Jj
U2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBvdGhlclNoYWRvdykKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVu
Z3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0
aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0
eWxlOjpOb3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFNoYWRvd0RhdGEoTGVuZ3Ro
UG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCks
IFNoYWRvd1N0eWxlOjpJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFdlYktpdEJveFNoYWRv
d0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0
aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhU
eXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVu
dEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdElu
c2V0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4
ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCB0cnVlLCBD
b2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRv
d0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhl
ZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgZmFsc2UsIENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93
RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhl
ZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgZmFsc2Us
IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hh
ZG93RGF0YT4gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0
aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlw
ZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFs
LCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEoTGVuZ3RoUG9p
bnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5n
dGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dT
dHlsZTo6SW5zZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKIAogICAgIGlmIChz
cmNTaGFkb3cpCi0gICAgICAgIHJldHVybiBzcmNTaGFkb3c7CisgICAgICAgIHJldHVybiAqc3Jj
U2hhZG93OwogCiAgICAgaWYgKG90aGVyU2hhZG93LT5zdHlsZSgpID09IFNoYWRvd1N0eWxlOjpJ
bnNldCkKLSAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8g
JmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdEluc2V0U2hh
ZG93RGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNo
YWRvdygpID8gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6IGRlZmF1bHRJ
bnNldFNoYWRvd0RhdGEuZ2V0KCk7CiAKLSAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0
Qm94U2hhZG93KCkgPyAmZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVs
dFNoYWRvd0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNo
YWRvdygpID8gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiBkZWZhdWx0U2hhZG93
RGF0YS5nZXQoKTsKIH0KIAogY2xhc3MgUHJvcGVydHlXcmFwcGVyU2hhZG93IGZpbmFsIDogcHVi
bGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewpAQCAtMTQyOCwxMSArMTQyNywxMSBA
QCBwcml2YXRlOgogICAgICAgICBTaGFkb3dEYXRhKiBsYXN0U2hhZG93ID0gbnVsbHB0cjsKIAog
ICAgICAgICB3aGlsZSAoc2hhZG93QSB8fCBzaGFkb3dCKSB7Ci0gICAgICAgICAgICBjb25zdCBT
aGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dBLCBzaGFkb3dC
KTsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJs
ZW5kaW5nKHNoYWRvd0IsIHNoYWRvd0EpOworICAgICAgICAgICAgYXV0byYgc3JjU2hhZG93ID0g
c2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwgc2hhZG93Qik7CisgICAgICAgICAgICBhdXRvJiBk
c3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dCLCBzaGFkb3dBKTsKIAotICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1
bmMoc3JjU2hhZG93LCBkc3RTaGFkb3csIGNvbnRleHQpOwotICAgICAgICAgICAgU2hhZG93RGF0
YSogYmxlbmRlZFNoYWRvd1B0ciA9IGJsZW5kZWRTaGFkb3cuZ2V0KCk7CisgICAgICAgICAgICBh
dXRvIGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoJnNyY1NoYWRvdywgJmRzdFNoYWRvdywgY29u
dGV4dCk7CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRTaGFkb3dQdHIgPSBibGVuZGVkU2hhZG93
LmdldCgpOwogCiAgICAgICAgICAgICBpZiAoIWxhc3RTaGFkb3cpCiAgICAgICAgICAgICAgICAg
bmV3U2hhZG93RGF0YSA9IFdURk1vdmUoYmxlbmRlZFNoYWRvdyk7CkBAIC0xNDQxLDggKzE0NDAs
OCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBsYXN0U2hhZG93ID0gYmxlbmRlZFNoYWRvd1B0
cjsKIAotICAgICAgICAgICAgc2hhZG93QSA9IHNoYWRvd0EgPyBzaGFkb3dBLT5uZXh0KCkgOiAw
OwotICAgICAgICAgICAgc2hhZG93QiA9IHNoYWRvd0IgPyBzaGFkb3dCLT5uZXh0KCkgOiAwOwor
ICAgICAgICAgICAgc2hhZG93QSA9IHNoYWRvd0EgPyBzaGFkb3dBLT5uZXh0KCkgOiBudWxscHRy
OworICAgICAgICAgICAgc2hhZG93QiA9IHNoYWRvd0IgPyBzaGFkb3dCLT5uZXh0KCkgOiBudWxs
cHRyOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ld1NoYWRvd0RhdGE7CkBAIC0xNDcx
LDEzICsxNDcwLDE0IEBAIHByaXZhdGU6CiAKICAgICAgICAgaW50IG1heExlbmd0aCA9IHN0ZDo6
bWF4KGZyb21MZW5ndGgsIHRvTGVuZ3RoKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBt
YXhMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZnJvbVNoYWRv
dyA9IGkgPCBmcm9tTGVuZ3RoID8gZnJvbVNoYWRvd3NbaV0gOiAwOwotICAgICAgICAgICAgY29u
c3QgU2hhZG93RGF0YSogdG9TaGFkb3cgPSBpIDwgdG9MZW5ndGggPyB0b1NoYWRvd3NbaV0gOiAw
OworICAgICAgICAgICAgYXV0byBmcm9tU2hhZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hh
ZG93c1tpXSA6IG51bGxwdHI7CisgICAgICAgICAgICBhdXRvIHRvU2hhZG93ID0gaSA8IHRvTGVu
Z3RoID8gdG9TaGFkb3dzW2ldIDogbnVsbHB0cjsKKworICAgICAgICAgICAgYXV0byYgc3JjU2hh
ZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoZnJvbVNoYWRvdywgdG9TaGFkb3cpOworICAgICAgICAg
ICAgYXV0byYgZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcodG9TaGFkb3csIGZyb21TaGFk
b3cpOwogCi0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dG
b3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1NoYWRvdyk7Ci0gICAgICAgICAgICBjb25zdCBTaGFk
b3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyh0b1NoYWRvdywgZnJvbVNoYWRv
dyk7CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoJnNyY1NoYWRv
dywgJmRzdFNoYWRvdywgY29udGV4dCk7CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKHNyY1NoYWRvdywgZHN0U2hhZG93
LCBjb250ZXh0KTsKICAgICAgICAgICAgIC8vIEluc2VydCBhdCB0aGUgc3RhcnQgb2YgdGhlIGxp
c3QgdG8gcHJlc2VydmUgdGhlIG9yZGVyLgogICAgICAgICAgICAgYmxlbmRlZFNoYWRvdy0+c2V0
TmV4dChXVEZNb3ZlKG5ld1NoYWRvd0RhdGEpKTsKICAgICAgICAgICAgIG5ld1NoYWRvd0RhdGEg
PSBXVEZNb3ZlKGJsZW5kZWRTaGFkb3cpOwpAQCAtMjM0OCwxOCArMjM0OCwxOCBAQCBwcml2YXRl
OgogICAgIH0KIH07CiAKLWNsYXNzIFRhYlNpemVQcm9wZXJ0eVdyYXBwZXIgZmluYWwgOiBwdWJs
aWMgUHJvcGVydHlXcmFwcGVyPGNvbnN0IFRhYlNpemUmPiB7CitjbGFzcyBUYWJTaXplUHJvcGVy
dHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxUYWJTaXplPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVGFiU2l6ZVByb3BlcnR5V3Jh
cHBlcigpCi0gICAgICAgIDogUHJvcGVydHlXcmFwcGVyPGNvbnN0IFRhYlNpemUmPihDU1NQcm9w
ZXJ0eVRhYlNpemUsICZSZW5kZXJTdHlsZTo6dGFiU2l6ZSwgJlJlbmRlclN0eWxlOjpzZXRUYWJT
aXplKQorICAgICAgICA6IFByb3BlcnR5V3JhcHBlcjxUYWJTaXplPihDU1NQcm9wZXJ0eVRhYlNp
emUsICZSZW5kZXJTdHlsZTo6dGFiU2l6ZSwgJlJlbmRlclN0eWxlOjpzZXRUYWJTaXplKQogICAg
IHsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5JbnRlcnBvbGF0ZShjb25zdCBSZW5k
ZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBDb21wb3NpdGVPcGVyYXRpb24p
IGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gdmFsdWUoZnJvbSkuaXNTcGFjZXMo
KSA9PSB2YWx1ZSh0bykuaXNTcGFjZXMoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlKGZyb20pLmlz
U3BhY2VzID09IHZhbHVlKHRvKS5pc1NwYWNlczsKICAgICB9CiAKICAgICB2b2lkIGJsZW5kKFJl
bmRlclN0eWxlJiBkZXN0aW5hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJl
bmRlclN0eWxlJiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IDY3ODQ3Nzg0N2NjNjNmMDNjMzAzMmE4ZDJhMjRhYTkyNTY2
ZDk3MmQuLjg2Y2Q2ODQ1NzNkNjE3Mzk0MjI1ZTAxNGNjNTRhYWFjOWZjNWFhYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC0xNTMzLDE0ICsxNTMzLDE0IEBAIHN0YXRpYyBFbGVtZW50KiBzdHlsZUVsZW1lbnRGb3JOb2Rl
KE5vZGUqIG5vZGUpCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclBvc2l0aW9uKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGVuZ3RoUG9pbnQmIHBvc2l0aW9uKQogewogICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBs
aXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3NpdGlvbi54KCks
IHN0eWxlKSk7Ci0gICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5n
dGgocG9zaXRpb24ueSgpLCBzdHlsZSkpOworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLngsIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5k
KHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueSwgc3R5bGUpKTsKICAg
ICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JQb3NpdGlv
bk9yQXV0byhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExlbmd0aFBvaW50JiBwb3Np
dGlvbikKIHsKLSAgICBpZiAocG9zaXRpb24ueCgpLmlzQXV0bygpICYmIHBvc2l0aW9uLnkoKS5p
c0F1dG8oKSkKKyAgICBpZiAocG9zaXRpb24ueC5pc0F1dG8oKSAmJiBwb3NpdGlvbi55LmlzQXV0
bygpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKIAogICAgIHJldHVybiB2YWx1ZUZvclBvc2l0aW9u
KHN0eWxlLCBwb3NpdGlvbik7CkBAIC0xOTM2LDcgKzE5MzYsNyBAQCBzdGF0aWMgUmVmPENTU1Zh
bHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBm
b3IgKGF1dG8qIGNvbnRlbnREYXRhID0gc3R5bGUuY29udGVudERhdGEoKTsgY29udGVudERhdGE7
IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5leHQoKSkgewogICAgICAgICBpZiAoaXM8Q291
bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpKQotICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpj
b250ZW50RGF0YSkuY291bnRlcigpLmlkZW50aWZpZXIoKSwgQ1NTVW5pdFR5cGU6OkNTU19DT1VO
VEVSX05BTUUpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIo
KS5pZGVudGlmaWVyLCBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFNRSkpOwogICAgICAgICBl
bHNlIGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKQogICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKGRvd25jYXN0PEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuaW1h
Z2UoKS5jc3NWYWx1ZSgpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8VGV4dENvbnRlbnREYXRhPigq
Y29udGVudERhdGEpKQpAQCAtMzAyOSw3ICszMDI5LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJT
dHkKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUF1dG8pOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUoc3R5bGUuY29sdW1uV2lkdGgoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5VGFiU2l6ZToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhlbHMoMS4wKSwgc3R5bGUudGFiU2l6ZSgpLmlzU3Bh
Y2VzKCkgPyBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiA6IENTU1VuaXRUeXBlOjpDU1NfUFgpOwor
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50YWJTaXpl
KCkud2lkdGhJblBpeGVscygxLjApLCBzdHlsZS50YWJTaXplKCkuaXNTcGFjZXMgPyBDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUiA6IENTU1VuaXRUeXBlOjpDU1NfUFgpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Q3Vyc29yOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
OwogICAgICAgICAgICAgYXV0byogY3Vyc29ycyA9IHN0eWxlLmN1cnNvcnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKaW5kZXggZjViYzhjYTk2YjkwZDYwNTUwZGNhNTgy
MWU4Mzg1NDlhNGIyZjdlZi4uZDZhMTJjYmI5NjkyMjczODU0MmY0ZTA5NzQ3M2U3YjhlYzdkZTY4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKQEAgLTEyMyw3ICsxMjMs
NyBAQCBMYXlvdXRTaXplIHNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0
aCwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bQogCiBMYXlvdXRQb2ludCBwb2ludEZvckxlbmd0
aFBvaW50KGNvbnN0IExlbmd0aFBvaW50JiBsZW5ndGhQb2ludCwgY29uc3QgTGF5b3V0U2l6ZSYg
bWF4aW11bVZhbHVlKQogewotICAgIHJldHVybiB7IHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50
LngoKSwgbWF4aW11bVZhbHVlLndpZHRoKCkpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55
KCksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsKKyAgICByZXR1cm4geyB2YWx1ZUZvckxlbmd0
aChsZW5ndGhQb2ludC54LCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZhbHVlRm9yTGVuZ3RoKGxl
bmd0aFBvaW50LnksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsKIH0KIAogRmxvYXRTaXplIGZs
b2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBib3hTaXplKQpAQCAtMTMzLDcgKzEzMyw3IEBAIEZsb2F0U2l6ZSBmbG9hdFNp
emVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYKIAogRmxvYXRQb2ludCBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQoY29uc3QgTGVuZ3Ro
UG9pbnQmIGxlbmd0aFBvaW50LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCiB7Ci0gICAgcmV0
dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54KCksIGJveFNpemUud2lkdGgo
KSksIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSgpLCBib3hTaXplLmhlaWdodCgp
KSB9OworICAgIHJldHVybiB7IGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueCwgYm94
U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55LCBib3hTaXpl
LmhlaWdodCgpKSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oCmluZGV4IDdlZTMwYTNlMTMxMjk0YTNkNTVhY2Vm
NGNhYTBhNzFjM2QxMGFkNTguLjZmZWMzNzQ1MGFjMGFiZmVkMGNhODA3NTM5MGVlMjY5ODRjYWMw
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oCkBAIC0xMDAs
NyArMTAwLDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJlc2VydmVOZXdsaW5lKCkgY29uc3Q7CiAg
ICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBjb25zdDsKIAotICAgIGNvbnN0IFRhYlNpemUm
IHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7IH0KKyAgICBUYWJTaXplIHRhYlNp
emUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIHNl
dHVwQmFja2dyb3VuZChjb25zdCBSZW5kZXJTdHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggNWI4YjM5MGI0MTAwMzJkYzg3OTdkOGViZGI3M2RiMWY1MGU3MmE1YS4uYWM5MjI5MzFh
ODY4ZTBkZDE3OWVhZmMxMTQ4MWVhZGQyMGUzYjA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0yNzgsNiArMjc4LDcgQEAKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNp
bmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2lu
Zy5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVm
ZmVyLmg+CkBAIC0xMjIzLDMyICsxMjI0LDM4IEBAIHN0cnVjdCBVbmljb2RlQ29kZVBvaW50UmFu
Z2UgewogICAgIFVDaGFyMzIgbWF4aW11bTsKIH07CiAKLSNpZiBBU1NFUlRfRU5BQkxFRAotCi1z
dGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSYg
YSwgY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBiKQorc3RhdGljIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChVbmljb2RlQ29kZVBvaW50UmFuZ2UgYSwgVW5pY29kZUNvZGVQb2ludFJhbmdl
IGIpCiB7Ci0gICAgQVNTRVJUKGEubWluaW11bSA8PSBhLm1heGltdW0pOwotICAgIEFTU0VSVChi
Lm1pbmltdW0gPD0gYi5tYXhpbXVtKTsKKyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRF
WFQoYS5taW5pbXVtIDw9IGEubWF4aW11bSk7CisgICAgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9D
T05URVhUKGIubWluaW11bSA8PSBiLm1heGltdW0pOwogICAgIHJldHVybiBhLm1heGltdW0gPCBi
Lm1pbmltdW07CiB9CiAKLSNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAotCi1zdGF0aWMgaW5saW5l
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSYgYSwgVUNoYXIzMiBi
KQorc3RhdGljIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChVbmljb2RlQ29kZVBvaW50UmFuZ2Ug
YSwgVUNoYXIzMiBiKQogewotICAgIEFTU0VSVChhLm1pbmltdW0gPD0gYS5tYXhpbXVtKTsKKyAg
ICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoYS5taW5pbXVtIDw9IGEubWF4aW11bSk7
CiAgICAgcmV0dXJuIGEubWF4aW11bSA8IGI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBvcGVy
YXRvcjwoVUNoYXIzMiBhLCBjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UmIGIpCitzdGF0aWMg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFVDaGFyMzIgYSwgVW5pY29kZUNvZGVQb2ludFJhbmdl
IGIpCiB7Ci0gICAgQVNTRVJUKGIubWluaW11bSA8PSBiLm1heGltdW0pOworICAgIEFTU0VSVF9V
TkRFUl9DT05TVEVYUFJfQ09OVEVYVChiLm1pbmltdW0gPD0gYi5tYXhpbXVtKTsKICAgICByZXR1
cm4gYSA8IGIubWluaW11bTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0o
VW5pY29kZUNvZGVQb2ludFJhbmdlIGEsIFVDaGFyMzIgYikKK3sKKyAgICByZXR1cm4gIShhIDwg
YikgJiYgIShiIDwgYSk7Cit9CisKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KFVD
aGFyMzIgYSwgVW5pY29kZUNvZGVQb2ludFJhbmdlIGIpCit7CisgICAgcmV0dXJuIGIgPT0gYTsK
K30KKwogc3RhdGljIGlubGluZSBib29sIGlzUG90ZW50aWFsQ3VzdG9tRWxlbWVudE5hbWVDaGFy
YWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiB7Ci0gICAgc3RhdGljIGNvbnN0IFVuaWNvZGVDb2Rl
UG9pbnRSYW5nZSByYW5nZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIFVuaWNvZGVDb2Rl
UG9pbnRSYW5nZSByYW5nZXNbXSA9IHsKICAgICAgICAgeyAnLScsICcuJyB9LAogICAgICAgICB7
ICcwJywgJzknIH0sCiAgICAgICAgIHsgJ18nLCAnXycgfSwKQEAgLTEyNjcsOSArMTI3NCw4IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1BvdGVudGlhbEN1c3RvbUVsZW1lbnROYW1lQ2hhcmFjdGVy
KFVDaGFyMzIgY2hhcmFjdGVyKQogICAgICAgICB7IDB4RkRGMCwgMHhGRkZEIH0sCiAgICAgICAg
IHsgMHgxMDAwMCwgMHhFRkZGRiB9LAogICAgIH07Ci0KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0
ZWQoc3RkOjpiZWdpbihyYW5nZXMpLCBzdGQ6OmVuZChyYW5nZXMpKSk7Ci0gICAgcmV0dXJuIHN0
ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHJhbmdlcyksIHN0ZDo6ZW5kKHJhbmdlcyksIGNo
YXJhY3Rlcik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyByYW5n
ZXMgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKGNoYXJhY3Rlcik7CiB9CiAKIEN1c3RvbUVs
ZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1cyBEb2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50
TmFtZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGhQb2ludC5jcHAKaW5kZXggOWEzNjc1OTZkZDAyNjlkNTlmNjNlYjBmNmM4OWUzNGRkODIx
ODJkOS4uYjVmNGNjMDVlMjc2N2ExOGM2NzNkMDhlMzRjZDIyMDY5YzU4MTkyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IExlbmd0aFBvaW50JiBzaXplKQogewotICAgIHJldHVybiB0cyA8PCBzaXplLngoKSA8PCAi
ICIgPDwgc2l6ZS55KCk7CisgICAgcmV0dXJuIHRzIDw8IHNpemUueCA8PCAiICIgPDwgc2l6ZS55
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
UG9pbnQuaAppbmRleCA4MTIwNWJiMTNkZGE1MDMzYjJjOTBmYmVhMDUzMGMyZjU2Zjk5MzZiLi45
OGJkY2NhMDcxZjhjMjE5YjJjYmE5MGJjYmMwMWYzMjViNjIyMjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aFBvaW50LmgKQEAgLTMyLDQ0ICszMiwyNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgQmxlbmRpbmdDb250ZXh0OwogCiBzdHJ1Y3QgTGVuZ3RoUG9pbnQgewotcHVi
bGljOgotICAgIExlbmd0aFBvaW50KCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIExlbmd0aFBv
aW50KExlbmd0aCB4LCBMZW5ndGggeSkKLSAgICAgICAgOiBtX3goV1RGTW92ZSh4KSkKLSAgICAg
ICAgLCBtX3koV1RGTW92ZSh5KSkKLSAgICB7Ci0gICAgfQorICAgIExlbmd0aCB4OworICAgIExl
bmd0aCB5OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFBvaW50JiBvKSBjb25z
dAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhQb2ludCYgb3RoZXIpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gbV94ID09IG8ubV94ICYmIG1feSA9PSBvLm1feTsKKyAgICAg
ICAgcmV0dXJuIHggPT0gb3RoZXIueCAmJiB5ID09IG90aGVyLnk7CiAgICAgfQogCi0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aFBvaW50JiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBMZW5ndGhQb2ludCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvKTsKKyAgICAgICAgcmV0dXJuIHggIT0gb3RoZXIueCB8fCB5ICE9IG90
aGVyLnk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRYKExlbmd0aCB4KSB7IG1feCA9IFdURk1vdmUo
eCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KLQotICAg
IHZvaWQgc2V0WShMZW5ndGggeSkgeyBtX3kgPSBXVEZNb3ZlKHkpOyB9Ci0gICAgY29uc3QgTGVu
Z3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9Ci0KLSAgICBib29sIGlzWmVybygpIGNvbnN0
IHsgcmV0dXJuIG1feC5pc1plcm8oKSAmJiBtX3kuaXNaZXJvKCk7IH0KLQotcHJpdmF0ZToKLSAg
ICAvLyBGSVhNRTogaXQgd291bGQgYmUgbmljZSB0byBwYWNrIHRoZSB0d28gTGVuZ3RocyB0b2dl
dGhlciBiZXR0ZXIgc29tZWhvdyAodG8gYXZvaWQgcGFkZGluZyBiZXR3ZWVuIHRoZW0pLgotICAg
IExlbmd0aCBtX3g7Ci0gICAgTGVuZ3RoIG1feTsKKyAgICBib29sIGlzWmVybygpIGNvbnN0IHsg
cmV0dXJuIHguaXNaZXJvKCkgJiYgeS5pc1plcm8oKTsgfQogfTsKIAogaW5saW5lIExlbmd0aFBv
aW50IGJsZW5kKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBjb25zdCBMZW5ndGhQb2ludCYgdG8s
IGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gTGVuZ3RoUG9p
bnQoYmxlbmQoZnJvbS54KCksIHRvLngoKSwgY29udGV4dCksIGJsZW5kKGZyb20ueSgpLCB0by55
KCksIGNvbnRleHQpKTsKKyAgICByZXR1cm4geyBibGVuZChmcm9tLngsIHRvLngsIGNvbnRleHQp
LCBibGVuZChmcm9tLnksIHRvLnksIGNvbnRleHQpIH07CiB9CiAKIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBMZW5ndGhQb2ludCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggYmFiZTk2
Njg0ZTdjMTVjYjljYTk2OTNiYTM1NjBhOGFhM2QyYzk2Yy4uZTlmMjY4YzEwZGFiNDI4NDY3OThh
ODZkOWY5OTJkYzVhNWZiODJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xNjUsOCArMTY1LDggQEAgcHVibGljOgogCiAgICAgY29u
c3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQo
KS5mb250TWV0cmljcygpOyB9CiAgICAgZmxvYXQgc3BhY2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IHByaW1hcnlGb250KCkuc3BhY2VXaWR0aCgpICsgbV9sZXR0ZXJTcGFjaW5nOyB9Ci0gICAgZmxv
YXQgdGFiV2lkdGgoY29uc3QgRm9udCYsIGNvbnN0IFRhYlNpemUmLCBmbG9hdCkgY29uc3Q7Ci0g
ICAgZmxvYXQgdGFiV2lkdGgoY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24p
IGNvbnN0IHsgcmV0dXJuIHRhYldpZHRoKHByaW1hcnlGb250KCksIHRhYlNpemUsIHBvc2l0aW9u
KTsgfQorICAgIGZsb2F0IHRhYldpZHRoKGNvbnN0IEZvbnQmLCBUYWJTaXplLCBmbG9hdCkgY29u
c3Q7CisgICAgZmxvYXQgdGFiV2lkdGgoVGFiU2l6ZSB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikg
Y29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJpbWFyeUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24p
OyB9CiAgICAgYm9vbCBoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGgoKSBjb25zdDsKICAgICBib29s
IGZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxvYXQgJndpZHRoKSBjb25zdDsgLy8g
cmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MKIApAQCAtMzcwLDcgKzM3MCw3IEBAIGlubGluZSBGb250
U2VsZWN0b3IqIEZvbnRDYXNjYWRlOjpmb250U2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBt
X2ZvbnRzID8gbV9mb250cy0+Zm9udFNlbGVjdG9yKCkgOiBudWxscHRyOwogfQogCi1pbmxpbmUg
ZmxvYXQgRm9udENhc2NhZGU6OnRhYldpZHRoKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRhYlNp
emUmIHRhYlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdAoraW5saW5lIGZsb2F0IEZvbnRDYXNj
YWRlOjp0YWJXaWR0aChjb25zdCBGb250JiBmb250LCBUYWJTaXplIHRhYlNpemUsIGZsb2F0IHBv
c2l0aW9uKSBjb25zdAogewogICAgIGZsb2F0IGJhc2VUYWJXaWR0aCA9IHRhYlNpemUud2lkdGhJ
blBpeGVscyhmb250LnNwYWNlV2lkdGgoKSk7CiAgICAgaWYgKCFiYXNlVGFiV2lkdGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKaW5kZXgg
NzU0M2Y0NzVhMjdhNjUxNTkwNmNjMjJlYjNmNjBhOTE0MDkyOTBiYS4uMDc1NjE5NGNmMmY1ZThi
OWZiYjI3YTEwY2U3OGEyZTE4YzIzY2ZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtNzQsNyArNzQsOCBAQCBzdGQ6Om9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVy
Rm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZv
cm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmIChidWZmZXJTaXplID4gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCisgICAgdWludDMyX3QgbWF4ID0gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAgaWYgKGJ1ZmZlclNpemUgPiBtYXgpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFt
cGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFw
aXhlbEFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGFiU2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCmlu
ZGV4IDM0YTcwODEwNjI4YWM5NTI3ZjRmNWNmMDQ3NWQ4MzViN2NjMmVhY2YuLjM2NjQyZjhhOGM0
NzQwN2VhY2U5MzUxMjI4MzYwZjJjODdkN2MyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UYWJTaXplLmgKQEAgLTI5LDQ5ICsyOSwzOSBAQAogCiAjcHJhZ21hIG9uY2UK
IAotbmFtZXNwYWNlIFdlYkNvcmUgeworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
IAotZW51bSBUYWJTaXplVmFsdWVUeXBlIHsKLSAgICBMZW5ndGhWYWx1ZVR5cGUsCi0gICAgU3Bh
Y2VWYWx1ZVR5cGUsCi19OworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVGFiU2l6ZSB7
Ci0gICAgVGFiU2l6ZShmbG9hdCBudW1Pckxlbmd0aCwgVGFiU2l6ZVZhbHVlVHlwZSBpc1NwYWNl
cyA9IFNwYWNlVmFsdWVUeXBlKQotICAgICAgICA6IG1fdmFsdWUobnVtT3JMZW5ndGgpCi0gICAg
ICAgICwgbV9pc1NwYWNlcyhpc1NwYWNlcykKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc1Nw
YWNlcygpIGNvbnN0CisgICAgZW51bSBWYWx1ZVR5cGUgeyBMZW5ndGgsIFNwYWNlcyB9OworICAg
IFRhYlNpemUoZmxvYXQgbnVtT3JMZW5ndGgsIFZhbHVlVHlwZSB0eXBlID0gU3BhY2VzKQorICAg
ICAgICA6IHZhbHVlKG51bU9yTGVuZ3RoKQorICAgICAgICAsIGlzU3BhY2VzKHR5cGUgPT0gU3Bh
Y2VzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNTcGFjZXM7CiAgICAgfQogCiAgICAgZmxv
YXQgd2lkdGhJblBpeGVscyhmbG9hdCBzcGFjZVdpZHRoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1faXNTcGFjZXMgPyBtX3ZhbHVlICogc3BhY2VXaWR0aCA6IG1fdmFsdWU7CisgICAg
ICAgIHJldHVybiBpc1NwYWNlcyA/IHZhbHVlICogc3BhY2VXaWR0aCA6IHZhbHVlOwogICAgIH0K
IAotICAgIGZsb2F0IHZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVl
OwotICAgIH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFs
dWU7IH0KIAotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9Ci0K
LSAgICBmbG9hdCBtX3ZhbHVlOwotICAgIGJvb2wgbV9pc1NwYWNlczsKKyAgICBmbG9hdCB2YWx1
ZTsKKyAgICBib29sIGlzU3BhY2VzOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUYWJTaXplJiBhLCBjb25zdCBUYWJTaXplJiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShU
YWJTaXplIGEsIFRhYlNpemUgYikKIHsKLSAgICByZXR1cm4gKGEubV92YWx1ZSA9PSBiLm1fdmFs
dWUpICYmIChhLm1faXNTcGFjZXMgPT0gYi5tX2lzU3BhY2VzKTsKKyAgICByZXR1cm4gYS52YWx1
ZSA9PSBiLnZhbHVlICYmIGEuaXNTcGFjZXMgPT0gYi5pc1NwYWNlczsKIH0KIAotaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBUYWJTaXplJiBhLCBjb25zdCBUYWJTaXplJiBiKQoraW5saW5l
IGJvb2wgb3BlcmF0b3IhPShUYWJTaXplIGEsIFRhYlNpemUgYikKIHsKICAgICByZXR1cm4gIShh
ID09IGIpOwogfQogCitpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBz
dHJlYW0sIFRhYlNpemUgc2l6ZSkgeyByZXR1cm4gc3RyZWFtIDw8IHNpemUudmFsdWUgPDwgKHNp
emUuaXNTcGFjZXMgPyAiIHNwYWNlcyIgOiAiIik7IH0KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IDFkNDdk
NjVkNjgyNDYyNmUxNTkyODgwMGY0Njk3YzI3NmNiMjc2MzQuLmEyMDk2Y2Y5ZGUzNWU4YTViMzkz
YTdmYWMwYTQ4M2Q1NzFjNGYxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RleHRSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UZXh0UnVuLmgKQEAgLTk1LDggKzk1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SG9yaXpv
bnRhbEdseXBoU3RyZXRjaChmbG9hdCBzY2FsZSkgeyBtX2hvcml6b250YWxHbHlwaFN0cmV0Y2gg
PSBzY2FsZTsgfQogCiAgICAgYm9vbCBhbGxvd1RhYnMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93
VGFiczsgfQotICAgIGNvbnN0IFRhYlNpemUmIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3Rh
YlNpemU7IH0KLSAgICB2b2lkIHNldFRhYlNpemUoYm9vbCwgY29uc3QgVGFiU2l6ZSYpOworICAg
IFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6ZTsgfQorICAgIHZvaWQg
c2V0VGFiU2l6ZShib29sLCBUYWJTaXplKTsKIAogICAgIGZsb2F0IHhQb3MoKSBjb25zdCB7IHJl
dHVybiBtX3hwb3M7IH0KICAgICB2b2lkIHNldFhQb3MoZmxvYXQgeFBvcykgeyBtX3hwb3MgPSB4
UG9zOyB9CkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2Rpc2Fi
bGVTcGFjaW5nIDogMTsKIH07CiAKLWlubGluZSB2b2lkIFRleHRSdW46OnNldFRhYlNpemUoYm9v
bCBhbGxvdywgY29uc3QgVGFiU2l6ZSYgc2l6ZSkKK2lubGluZSB2b2lkIFRleHRSdW46OnNldFRh
YlNpemUoYm9vbCBhbGxvdywgVGFiU2l6ZSBzaXplKQogewogICAgIG1fYWxsb3dUYWJzID0gYWxs
b3c7CiAgICAgbV90YWJTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4IDkyZjQyYjY3N2Q1M2RkOWM2YTNmNmJk
NmUzZDkxY2JhYzY2YWE0YjkuLjlkYjExMTEyOGExZmI3Y2VmZWE0YWQwMmFlYzExYmE1ZTI5MWRj
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0
aWVzLmNwcApAQCAtMjcsMTMgKzI3LDE0IEBACiAjaW5jbHVkZSAiVlA5VXRpbGl0aWVzLmgiCiAK
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU29ydGVkQXJy
YXlNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgaXNWYWxpZFZQTGV2ZWwodWlu
dDhfdCBsZXZlbCkKIHsKLSAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZExldmVsc1tdID0gewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZExldmVsc1tdID0gewogICAgICAgICBW
UENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfMSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2
ZWw6OkxldmVsXzFfMSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzIsCkBA
IC00OSwxNCArNTAsMTMgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZQTGV2ZWwodWludDhfdCBsZXZl
bCkKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzZfMSwKICAgICAgICAgVlBD
b25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzZfMiwKICAgICB9OwotCi0gICAgQVNTRVJUKHN0ZDo6
aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRMZXZlbHMpLCBzdGQ6OmVuZCh2YWxpZExldmVscykp
KTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRMZXZlbHMp
LCBzdGQ6OmVuZCh2YWxpZExldmVscyksIGxldmVsKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNv
cnRlZEFycmF5U2V0IHNldCB7IHZhbGlkTGV2ZWxzIH07CisgICAgcmV0dXJuIHNldC5jb250YWlu
cyhsZXZlbCk7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRWUENvbG9yUHJpbWFyaWVzKHVpbnQ4
X3QgY29sb3JQcmltYXJpZXMpCiB7Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRDb2xvclBy
aW1hcmllc1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZENvbG9yUHJp
bWFyaWVzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF83
MDlfNiwKICAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlVuc3BlY2lmaWVk
LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNDcwXzZfTSwKQEAg
LTcwLDE0ICs3MCwxMyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBDb2xvclByaW1hcmllcyh1aW50
OF90IGNvbG9yUHJpbWFyaWVzKQogICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmll
czo6U01QVEVfRUdfNDMyXzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVz
OjpFQlVfVGVjaF8zMjEzX0UsCiAgICAgfTsKLQotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChz
dGQ6OmJlZ2luKHZhbGlkQ29sb3JQcmltYXJpZXMpLCBzdGQ6OmVuZCh2YWxpZENvbG9yUHJpbWFy
aWVzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZENv
bG9yUHJpbWFyaWVzKSwgc3RkOjplbmQodmFsaWRDb2xvclByaW1hcmllcyksIGNvbG9yUHJpbWFy
aWVzKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHZhbGlkQ29s
b3JQcmltYXJpZXMgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKGNvbG9yUHJpbWFyaWVzKTsK
IH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3ModWludDhf
dCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcykKIHsKLSAgICBjb25zdGV4cHIgdWludDhfdCB2YWxp
ZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
OF90IHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3NbXSA9IHsKICAgICAgICAgVlBDb25maWd1
cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzcwOV82LAogICAgICAgICBWUENvbmZp
Z3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6VW5zcGVjaWZpZWQsCiAgICAgICAgIFZQ
Q29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF80NzBfNl9NLApAQCAtOTYs
MTMgKzk1LDEzIEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
KHVpbnQ4X3QgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpCiAgICAgICAgIFZQQ29uZmlndXJhdGlv
blRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpTTVBURV9TVF80MjhfMSwKICAgICAgICAgVlBDb25m
aWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIxMDBfSExHLAogICAgIH07Ci0g
ICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRUcmFuc2ZlckNoYXJhY3Rl
cmlzdGljcyksIHN0ZDo6ZW5kKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpKSk7Ci0gICAg
cmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkVHJhbnNmZXJDaGFyYWN0
ZXJpc3RpY3MpLCBzdGQ6OmVuZCh2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSwgdHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQg
c2V0IHsgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyB9OworICAgIHJldHVybiBzZXQuY29u
dGFpbnModHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOwogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlk
VlBNYXRyaXhDb2VmZmljaWVudHModWludDhfdCBtYXRyaXhDb2VmZmljaWVudHMpCiB7Ci0gICAg
Y29uc3RleHByIHVpbnQ4X3QgdmFsaWRNYXRyaXhDb2VmZmljaWVudHNbXSA9IHsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRNYXRyaXhDb2VmZmljaWVudHNbXSA9IHsKICAgICAg
ICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpJZGVudGl0eSwKICAgICAgICAg
VlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF83MDlfNiwKICAgICAgICAgVlBD
b25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpVbnNwZWNpZmllZCwKQEAgLTExOCw4ICsx
MTcsOCBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBNYXRyaXhDb2VmZmljaWVudHModWludDhfdCBt
YXRyaXhDb2VmZmljaWVudHMpCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNp
ZW50czo6Q2hyb21hY2l0eV9Ob25jb25zdGFudF9MdW1pbmFuY2UsCiAgICAgICAgIFZQQ29uZmln
dXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfMjEwMF9JQ0MsCiAgICAgfTsKLSAgICBBU1NF
UlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZE1hdHJpeENvZWZmaWNpZW50cyksIHN0
ZDo6ZW5kKHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFy
eV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZE1hdHJpeENvZWZmaWNpZW50cyksIHN0ZDo6ZW5kKHZh
bGlkTWF0cml4Q29lZmZpY2llbnRzKSwgbWF0cml4Q29lZmZpY2llbnRzKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHZhbGlkTWF0cml4Q29lZmZpY2llbnRzIH07
CisgICAgcmV0dXJuIHNldC5jb250YWlucyhtYXRyaXhDb2VmZmljaWVudHMpOwogfQogCiBzdGQ6
Om9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0
ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmgKaW5kZXggZWUxYTM3OWE1
YmQ4MmEyNmFjMzIxMmMzZGRmNmU3YzA0MGMxOGM1NS4uZTJkMTk4ZmNhMmI0YzFjOGY3ZmU2NDg0
M2IxYzQxM2Q3YjE4NGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oCkBAIC02MCwxMyArNjAsMTMgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMiOyB9CiAKICAgICBzdHJ1Y3Qg
Q2hhcHRlckRhdGEgewotICAgICAgICBNZWRpYVRpbWUgbV9zdGFydFRpbWU7Ci0gICAgICAgIE1l
ZGlhVGltZSBtX2R1cmF0aW9uOwotICAgICAgICBTdHJpbmcgbV90aXRsZTsKKyAgICAgICAgTWVk
aWFUaW1lIHN0YXJ0VGltZTsKKyAgICAgICAgTWVkaWFUaW1lIGR1cmF0aW9uOworICAgICAgICBT
dHJpbmcgdGl0bGU7CiAKICAgICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
aGFwdGVyRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
X3N0YXJ0VGltZSA9PSBvdGhlci5tX3N0YXJ0VGltZSAmJiBtX2R1cmF0aW9uID09IG90aGVyLm1f
ZHVyYXRpb24gJiYgbV90aXRsZSA9PSBvdGhlci5tX3RpdGxlOworICAgICAgICAgICAgcmV0dXJu
IHN0YXJ0VGltZSA9PSBvdGhlci5zdGFydFRpbWUgJiYgZHVyYXRpb24gPT0gb3RoZXIuZHVyYXRp
b24gJiYgdGl0bGUgPT0gb3RoZXIudGl0bGU7CiAgICAgICAgIH0KICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9R
dWV1ZWRWaWRlb091dHB1dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tCmluZGV4IDBiYzA4MzgxNGMwOGM3
ZGVlZDYxYzkwNzljMjJiZTNmNTA3OGE3N2UuLjk0OWM2MGJjNDhlNWE5YTBiMjU4MGYxYTIxMjJl
ZWU4NzU0NTE1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0
Lm1tCkBAIC0yMzEsMTQgKzIzMSwxMyBAQCB2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1
cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQogICAgIGlmIChtX25leHRJbWFnZVRpbWViYXNlT2Jz
ZXJ2ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY3VycmVudFRpbWUgPSBQQUw6OnRv
TWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pOwotICAgIGF1dG8gaXRlciA9IGZpbmRJ
bWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgY3VycmVudFRpbWUpOworICAgIGF1dG8gaXRlciA9
IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgUEFMOjp0b01lZGlhVGltZShbbV9wbGF5
ZXIgY3VycmVudFRpbWVdKSk7CiAgICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSB8
fCArK2l0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byBuZXh0SW1hZ2VUaW1lID0gaXRlci0+Zmlyc3Q7CiAKLSAgICBtX25leHRJbWFnZVRpbWVi
YXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkQm91bmRhcnlUaW1lT2JzZXJ2ZXJGb3JUaW1lczpA
W1tOU1ZhbHVlIHZhbHVlV2l0aENNVGltZTpQQUw6OnRvQ01UaW1lKGN1cnJlbnRUaW1lKV1dIHF1
ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3Rl
ZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdICgpIG11dGFibGUgeworICAgIG1fbmV4dEltYWdlVGlt
ZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRCb3VuZGFyeVRpbWVPYnNlcnZlckZvclRpbWVz
OkBbW05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lOlBBTDo6dG9DTVRpbWUobmV4dEltYWdlVGltZSld
XSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90
ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKICAgICAgICAgICAg
IGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bmV4dEltYWdlVGltZVJl
YWNoZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMDVhODMxNmRj
MjdlNjMwMTdmMzk3ZjE5MjQ2OWI4MmEzM2I3YjAzNC4uMDRjMDAzYjRlMmU4NzY4Y2Q1ODc3NzRl
NWQxZWM2MzI3OWM4OGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAg
LTE0MjIsMTggKzE0MjIsMTggQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgICAg
ICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBv
aW50ZXIgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwogICAgICAgICAgICAgICAgIHJldHVybiBT
a2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IE9wdXNDb29raWVDb250ZW50cyBjb29raWVDb250ZW50czsKLSAgICAgICAgICAgIGlmICghcGFy
c2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCks
ICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhLCBjb29raWVDb250ZW50cykp
IHsKKyAgICAgICAgICAgIGF1dG8gY29va2llQ29udGVudHMgPSBwYXJzZU9wdXNQcml2YXRlRGF0
YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNr
ZXRTaXplLCBibG9ja0J1ZmZlckRhdGEpOworICAgICAgICAgICAgaWYgKCFjb29raWVDb250ZW50
cykgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkZhaWxl
ZCB0byBwYXJzZSBPcHVzIHByaXZhdGUgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBT
a2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICghY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0KSB7CisgICAgICAgICAgICBpZiAo
IWNvb2tpZUNvbnRlbnRzLT5mcmFtZXNQZXJQYWNrZXQpIHsKICAgICAgICAgICAgICAgICBQQVJT
RVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJPcHVzIHByaXZhdGUgZGF0YSBpbmRpY2F0ZXMgMCBm
cmFtZXMgcGVyIHBhY2tldDsgYmFpbGluZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBTa2lw
KCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1f
ZnJhbWVzUGVyUGFja2V0ID0gY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0OwotICAgICAg
ICAgICAgbV9mcmFtZUR1cmF0aW9uID0gY29va2llQ29udGVudHMuZnJhbWVEdXJhdGlvbjsKLSAg
ICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlT3B1c0F1ZGlvRm9ybWF0RGVzY3Jp
cHRpb24oY29va2llQ29udGVudHMpOworICAgICAgICAgICAgbV9mcmFtZXNQZXJQYWNrZXQgPSBj
b29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFja2V0OworICAgICAgICAgICAgbV9mcmFtZUR1cmF0
aW9uID0gY29va2llQ29udGVudHMtPmZyYW1lRHVyYXRpb247CisgICAgICAgICAgICBmb3JtYXRE
ZXNjcmlwdGlvbiA9IGNyZWF0ZU9wdXNBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKCpjb29raWVDb250
ZW50cyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZvcm1hdERlc2NyaXB0aW9uKSB7CkBA
IC0xNDUzLDcgKzE0NTMsNiBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAvLyBP
cHVzIHRlY2huaWNhbGx5IGFsbG93cyB0aGUgZnJhbWUgZHVyYXRpb24gYW5kIGZyYW1lcy1wZXIt
cGFja2V0IHZhbHVlcyB0byBjaGFuZ2UgZnJvbSBwYWNrZXQgdG8gcGFja2V0LgogICAgICAgICAv
LyBDb3JlQXVkaW8gZG9lc24ndCBzdXBwb3J0IEFTQkQgdmFsdWVzIGxpa2UgdGhlc2UgdG8gY2hh
bmdlIG9uIGEgcGVyLXBhY2tldCBiYXNpcywgc28gdGhyb3cgYW4gZXJyb3Igd2hlbgogICAgICAg
ICAvLyB0aGF0IGtpbmQgb2YgdmFyaWFiaWxpdHkgaXMgZW5jb3VudGVyZWQuCi0gICAgICAgIE9w
dXNDb29raWVDb250ZW50cyBjb29raWVDb250ZW50czsKICAgICAgICAgYXV0byYgcHJpdmF0ZURh
dGEgPSB0cmFjaygpLmNvZGVjX3ByaXZhdGUudmFsdWUoKTsKICAgICAgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIobV9jdXJyZW50UGFja2V0
Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsKICAgICAgICAgaWYgKCFjb250aWd1
b3VzQnVmZmVyKSB7CkBAIC0xNDY2LDkgKzE0NjUsOCBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVh
ZAogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZl
ckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAgICAgIHJl
dHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEu
ZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSwgY29va2llQ29u
dGVudHMpCi0gICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZXNQZXJQYWNrZXQgIT0g
bV9mcmFtZXNQZXJQYWNrZXQKLSAgICAgICAgICAgIHx8IGNvb2tpZUNvbnRlbnRzLmZyYW1lRHVy
YXRpb24gIT0gbV9mcmFtZUR1cmF0aW9uKSB7CisgICAgICAgIGF1dG8gY29va2llQ29udGVudHMg
PSBwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRh
dGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEpOworICAgICAgICBp
ZiAoIWNvb2tpZUNvbnRlbnRzIHx8IGNvb2tpZUNvbnRlbnRzLT5mcmFtZXNQZXJQYWNrZXQgIT0g
bV9mcmFtZXNQZXJQYWNrZXQgfHwgY29va2llQ29udGVudHMtPmZyYW1lRHVyYXRpb24gIT0gbV9m
cmFtZUR1cmF0aW9uKSB7CiAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxF
KCJPcHVzIGZyYW1lcy1wZXItcGFja2V0IGNoYW5nZWQgd2l0aGluIGEgdHJhY2s7IGVycm9yIik7
CiAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlZhcmlh
YmxlRnJhbWVEdXJhdGlvbikpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29j
b2EuaAppbmRleCA4NzEwNGQ4YjdiMzU3YzE2MGI2ZGNjYzQxYmZlMWY4OWUwYTZjMjcxLi44YjY3
ZGU2ZjQ5MzAxYmEwMTE1OGE5ODAwOTk1OTI3NzA0NDUyMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0
aWxpdGllc0NvY29hLmgKQEAgLTI4LDggKzI4LDggQEAKICNpZiBQTEFURk9STShDT0NPQSkKIAog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCi1j
bGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVl
Q01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTUsOSArNTUsOSBAQCBzdHJ1Y3QgT3B1c0Nvb2tpZUNvbnRlbnRzIHsK
IAogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc09wdXNEZWNvZGVyQXZhaWxhYmxlKCk7CiBXRUJDT1JF
X0VYUE9SVCBib29sIHJlZ2lzdGVyT3B1c0RlY29kZXJJZk5lZWRlZCgpOwotYm9vbCBwYXJzZU9w
dXNQcml2YXRlRGF0YShzaXplX3QgcHJpdmF0ZURhdGFTaXplLCBjb25zdCB2b2lkKiBwcml2YXRl
RGF0YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSwgT3B1c0Nv
b2tpZUNvbnRlbnRzJik7CitzdGQ6Om9wdGlvbmFsPE9wdXNDb29raWVDb250ZW50cz4gcGFyc2VP
cHVzUHJpdmF0ZURhdGEoc2l6ZV90IHByaXZhdGVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogcHJpdmF0
ZURhdGEsIHNpemVfdCBmcmFtZURhdGFTaXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEpOwogUmV0
YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZU9wdXNBdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uKGNvbnN0IE9wdXNDb29raWVDb250ZW50cyYpOwogCiB9CiAKLSNlbmRpZiAvLyAmJiBQ
TEFURk9STShDT0NPQSkKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KaW5kZXggN2UwYWZiMjkwZGQ4NWE3N2Y5YmVmZmY0OTQ3YTQ3Yjc1
MzVlYjJmNC4uYWI1YmExZjI1MmNlYzI3MTZiNTAwZjZmOWE1YzRiYmE2NzQyODE5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRp
bGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KQEAgLTE2OSw3ICsxNjksNyBAQCBjb25zdGV4
cHIgaW50MzJfdCBvcHVzQ29uZmlnVG9CYW5kd2lkdGgodWludDhfdCBjb25maWcpCiB9CiAjZW5k
aWYKIAotYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwg
Y29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSwgY29uc3Qgdm9p
ZCogZnJhbWVEYXRhLCBPcHVzQ29va2llQ29udGVudHMmIGNvb2tpZSkKK3N0ZDo6b3B0aW9uYWw8
T3B1c0Nvb2tpZUNvbnRlbnRzPiBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2
YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSwg
Y29uc3Qgdm9pZCogZnJhbWVEYXRhKQogewogI2lmIEVOQUJMRShPUFVTKQogICAgIC8vIGh0dHBz
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3ODQ1CkBAIC0yMDEsMTYgKzIwMSwxNyBAQCBib29s
IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lk
KiBjb2RlY1ByaXZhdGVEYXRhLAogICAgIGF1dG8qIHByaXZhdGVEYXRhUHRyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGNvZGVjUHJpdmF0ZURhdGEpOwogCiAgICAgaWYgKGNvZGVjUHJp
dmF0ZVNpemUgPCAxOSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIDEuIE1hZ2ljIFNpZ25hdHVyZToKICAgICAvLwogICAgIC8vICAg
ICBUaGlzIGlzIGFuIDgtb2N0ZXQgKDY0LWJpdCkgZmllbGQgdGhhdCBhbGxvd3MgY29kZWMKICAg
ICAvLyAgICAgaWRlbnRpZmljYXRpb24gYW5kIGlzIGh1bWFuIHJlYWRhYmxlLgogICAgIGlmIChz
dHJuY21wKCJPcHVzSGVhZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHByaXZhdGVE
YXRhUHRyKSwgOCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIDIuIFZlcnNpb24gKDggYml0cywgdW5zaWduZWQpOgorICAgIE9w
dXNDb29raWVDb250ZW50cyBjb29raWU7CiAgICAgY29va2llLnZlcnNpb24gPSAqKHByaXZhdGVE
YXRhUHRyICsgOCk7CiAKICAgICAvLyAzLiBPdXRwdXQgQ2hhbm5lbCBDb3VudCAnQycgKDggYml0
cywgdW5zaWduZWQpOgpAQCAtMjMxLDcgKzIzMiw3IEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURh
dGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEs
CiAgICAgYXV0byBmcmFtZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZURh
dGEpOwogCiAgICAgaWYgKGZyYW1lU2l6ZSA8IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM2NzE2CiAgICAgLy8gMy4xLiBUaGUgVE9DIEJ5dGUKQEAgLTI4NSwyMSArMjg2
LDIwIEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUs
IGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsCiAgICAgICAgIC8vCiAgICAgICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICBGaWd1cmUgNTogVGhlIGZyYW1lIGNvdW50IGJ5dGUKICAgICAg
ICAgaWYgKGZyYW1lU2l6ZSA8IDIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHVpbnQ4X3QgZnJhbWVDb3VudEJ5
dGUgPSAqKGZyYW1lUHRyICsgMSk7CiAgICAgICAgIGNvb2tpZS5pc1ZCUiA9ICgoZnJhbWVDb3Vu
dEJ5dGUgJiAwYjEwMDAwMDAwKSA+PiA3KSA9PSAxOwogICAgICAgICBjb29raWUuaGFzUGFkZGlu
ZyA9ICgoZnJhbWVDb3VudEJ5dGUgJiAwYjAxMDAwMDAwKSA+PiA2KSA9PSAxOwogICAgICAgICBj
b29raWUuZnJhbWVzUGVyUGFja2V0ID0gKGZyYW1lQ291bnRCeXRlICYgMGIwMDExMTExMSk7CiAg
ICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBjb29raWU7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShjb2RlY1ByaXZhdGVTaXplKTsKICAgICBVTlVTRURfUEFSQU0oY29kZWNQcml2
YXRlRGF0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lU2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGZyYW1lRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvb2tpZSk7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgKaW5kZXggOGRjMjEzZjQ3
ZDRmODE5MjExMTFhNGE2OWM0OTk2MmVhNzNmY2YwYS4uZGNkNmE0N2JhNjA4NTNkYTA4ZTEyZjAy
MDI4NzlkNDlkYjM2MzQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVMYXllclBvb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUxheWVyUG9vbC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIEBjbGFzcyBMZWdhY3lUaWxlTGF5
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2Nr
bGlzdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQpp
bmRleCBiNTJjODYxODZmMGJiMDZmZDMyM2VkMjlmODJkNzdjOTU4ZmUyNjA4Li45ZjhkZWJlOTU0
NjExZWEwZThhZDczMzBjZDkyNmFjMmEzMDkxNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCkBAIC0zNSw0MyArMzUsMjkgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RydWN0IE9TQnVpbGRJbmZvIHsKLSAgICBPU0J1aWxkSW5mbygpCi0g
ICAgICAgIDogbWFqb3IoMCkKLSAgICAgICAgLCBtaW5vcigwKQotICAgICAgICAsIGJ1aWxkKDAp
Ci0gICAgewotICAgIH0KLQotICAgIE9TQnVpbGRJbmZvKGludCBtYWpvciwgaW50IG1pbm9yLCBp
bnQgYnVpbGQpCi0gICAgICAgIDogbWFqb3IobWFqb3IpCi0gICAgICAgICwgbWlub3IobWlub3Ip
Ci0gICAgICAgICwgYnVpbGQoYnVpbGQpCi0gICAgewotICAgIH0KKyAgICBpbnQgbWFqb3IgeyAw
IH07IC8vIFJlcHJlc2VudHMgdGhlIDEzIGluIDEzQzY0LgorICAgIGludCBtaW5vciB7IDAgfTsg
Ly8gUmVwcmVzZW50cyB0aGUgQyBpbiAxM0M2NCAoYXMgYSBudW1iZXIgd2hlcmUgQSA9PSAxLCBp
LmUuIDMpLgorICAgIGludCBidWlsZCB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgNjQgaW4gMTND
NjQuCiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25z
dAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oT1NCdWlsZEluZm8gb3RoZXIpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbWFqb3IgPT0gb3RoZXIubWFqb3IgJiYgbWlub3IgPT0g
b3RoZXIubWlub3IgJiYgYnVpbGQgPT0gb3RoZXIuYnVpbGQ7CiAgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj4oY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPihPU0J1aWxkSW5mbyBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA+IHN0ZDo6dGllKG90aGVyLm1ham9y
LCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I8
PShjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I8PShPU0J1aWxkSW5mbyBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBz
dGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA8PSBzdGQ6OnRpZShvdGhlci5tYWpvciwgb3Ro
ZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPChjb25z
dCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dGll
KG1ham9yLCBtaW5vciwgYnVpbGQpIDwgc3RkOjp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9y
LCBvdGhlci5idWlsZCk7CiAgICAgfQotCi0gICAgaW50IG1ham9yOyAvLyBSZXByZXNlbnRzIHRo
ZSAxMyBpbiAxM0M2NC4KLSAgICBpbnQgbWlub3I7IC8vIFJlcHJlc2VudHMgdGhlIEMgaW4gMTND
NjQgKGFzIGEgbnVtYmVyIHdoZXJlIEEgPT0gMSwgaS5lLiAzKS4KLSAgICBpbnQgYnVpbGQ7IC8v
IFJlcHJlc2VudHMgdGhlIDY0IGluIDEzQzY0LgogfTsKIAogc3RhdGljIE9TQnVpbGRJbmZvIGJ1
aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5TU3RyaW5nICpidWlsZFN0cmluZykKQEAgLTgzLDcg
KzY5LDcgQEAgc3RhdGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5T
U3RyaW5nICpidWlsZFN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIE5TTG9nKEAiV2Vi
R0xCbG9ja2xpc3QgY291bGQgbm90IHBhcnNlIE9TQnVpbGQgZW50cnk6ICVAIiwgYnVpbGRTdHJp
bmcpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiBPU0J1aWxkSW5mbygpOworICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAogICAgIE5TVGV4dENoZWNraW5nUmVzdWx0ICptYXRjaFJlc3VsdCA9
IFttYXRjaGVzIG9iamVjdEF0SW5kZXg6MF07CkBAIC05MiwxNCArNzgsMTQgQEAgc3RhdGljIE9T
QnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5TU3RyaW5nICpidWlsZFN0cmlu
ZykKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIE5TTG9nKEAiV2ViR0xCbG9ja2xpc3QgY291bGQg
bm90IHBhcnNlIE9TQnVpbGQgZW50cnk6ICVAIiwgYnVpbGRTdHJpbmcpOwogI2VuZGlmCi0gICAg
ICAgIHJldHVybiBPU0J1aWxkSW5mbygpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAog
ICAgIGludCBtYWpvclZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpb
bWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjFdXSBpbnRWYWx1ZV07CiAgICAgaW50IG1pbm9yVmVy
c2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOlttYXRjaFJlc3VsdCByYW5n
ZUF0SW5kZXg6Ml1dIGNoYXJhY3RlckF0SW5kZXg6MF0gLSAnQScgKyAxOwogICAgIGludCBidWls
ZFZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpbbWF0Y2hSZXN1bHQg
cmFuZ2VBdEluZGV4OjNdXSBpbnRWYWx1ZV07CiAKLSAgICByZXR1cm4gT1NCdWlsZEluZm8obWFq
b3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1aWxkVmVyc2lvbik7CisgICAgcmV0dXJuIHsgbWFq
b3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1aWxkVmVyc2lvbiB9OwogfQogCiBib29sIFdlYkdM
QmxvY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oCmlu
ZGV4IDhjYTVmMzE5ZTJiODA2Y2VhYTkwMjYxN2M1YzNhMjQ5YTFjNzRhNGEuLjBhMTZlNTRmZGJh
NDhkYjVhYTYzZWM2NDcyNmYyNzVmMGRiMTA4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQu
aApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCmluZGV4IDYzMTJlMDY4NDI5N2I0M2Mz
MzExZTQ3MzliNjgxYWI0NDVjMzM2NzIuLmJmNWM3NGY0Y2ZkY2EzNzVlM2JlNDIzMmU0NzVjMjJk
YWZmY2VjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TVVJMQ29u
bmVjdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IDU2MDJkN2MyZDRkNWJjYTkz
MjQ1NDRiNzVhZDIyY2IyNjU4ZWQwMmMuLjBkZjc0MjY1MWZmN2JkYzhiYjY0MzM0NmY5YmNjYmMy
MDRjMTllMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBA
QCBib29sIEdyaWRJdGVyYXRvcjo6aXNFbXB0eUFyZWFFbm91Z2godW5zaWduZWQgcm93U3Bhbiwg
dW5zaWduZWQgY29sdW1uU3BhbikgY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWdu
ZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pCitzdGQ6Om9wdGlv
bmFsPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZp
eGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKQogewogICAgIEFTU0VSVCgh
bV9ncmlkLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2dyaWRbMF0uaXNFbXB0eSgpKTsKQEAg
LTIyMiw3ICsyMjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6
bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYQogICAgIEFTU0VSVCh2YXJ5
aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAgaWYgKG1fZ3JpZC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5z
aWduZWQgcm93U3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHZhcnlpbmdUcmFj
a1NwYW4gOiBmaXhlZFRyYWNrU3BhbjsKICAgICB1bnNpZ25lZCBjb2x1bW5TcGFuID0gKG1fZGly
ZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja1NwYW4gOiB2YXJ5aW5nVHJhY2tTcGFu
OwpAQCAtMjMxLDEzICsyMzEsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRl
cmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25z
dCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNv
bHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZh
cnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJ
bmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3Bh
bikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1f
cm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZp
bml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEdyaWRBcmVhKEdyaWRTcGFuOjp0cmFuc2xhdGVk
RGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRT
cGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbklu
ZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3Ig
dG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUg
Z3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAppbmRleCA3MmNhZGY2OGVmNGQzMjY2Y2Ux
ZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi41OTQ3ZmU1ZTUzODY1M2QwYWFjODQ5NGZlYThkYTk2N2Mz
MDg1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTM3LDEwICszNywxMSBAQCB0eXBl
ZGVmIFZlY3RvcjxXZWFrUHRyPFJlbmRlckJveD4sIDE+IEdyaWRDZWxsOwogdHlwZWRlZiBWZWN0
b3I8VmVjdG9yPEdyaWRDZWxsPj4gR3JpZEFzTWF0cml4OwogdHlwZWRlZiBMaXN0SGFzaFNldDxz
aXplX3Q+IE9yZGVyZWRUcmFja0luZGV4U2V0OwogCi1jbGFzcyBHcmlkQXJlYTsKIGNsYXNzIEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjsKIGNsYXNzIFJlbmRlckdyaWQ7CiAKK3N0cnVjdCBHcmlkQXJl
YTsKKwogY2xhc3MgR3JpZCBmaW5hbCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR3JpZChSZW5k
ZXJHcmlkJik7CkBAIC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94KiBu
ZXh0R3JpZEl0ZW0oKTsKICAgICBib29sIGlzRW1wdHlBcmVhRW5vdWdoKHVuc2lnbmVkIHJvd1Nw
YW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlk
QXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVk
IHZhcnlpbmdUcmFja1NwYW4pOworICAgIHN0ZDo6b3B0aW9uYWw8R3JpZEFyZWE+IG5leHRFbXB0
eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tT
cGFuKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBHcmlkQXNNYXRyaXgmIG1fZ3JpZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBjZWNlZDM1ZTVjZTg3
YmZiYzE0MDE4MzZjZDEzZWExYWVkZDdhZmMwLi4wMGViZDVmZmMwNWI3MjIyYTRmN2E0M2IwYzQy
MWIyYzM5NjU2ZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIu
Y3BwCkBAIC00MzAsMjAgKzQzMCwxOSBAQCBTdHJpbmcgUmVuZGVyQ291bnRlcjo6b3JpZ2luYWxU
ZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGJlZm9yZUFm
dGVyQ29udGFpbmVyID0gYmVmb3JlQWZ0ZXJDb250YWluZXItPnBhcmVudCgpOwogICAgICAgICB9
Ci0gICAgICAgIG1ha2VDb3VudGVyTm9kZSgqYmVmb3JlQWZ0ZXJDb250YWluZXIsIG1fY291bnRl
ci5pZGVudGlmaWVyKCksIHRydWUpLT5hZGRSZW5kZXJlcihjb25zdF9jYXN0PFJlbmRlckNvdW50
ZXImPigqdGhpcykpOworICAgICAgICBtYWtlQ291bnRlck5vZGUoKmJlZm9yZUFmdGVyQ29udGFp
bmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllciwgdHJ1ZSktPmFkZFJlbmRlcmVyKGNvbnN0X2Nhc3Q8
UmVuZGVyQ291bnRlciY+KCp0aGlzKSk7CiAgICAgICAgIEFTU0VSVChtX2NvdW50ZXJOb2RlKTsK
ICAgICB9CiAgICAgQ291bnRlck5vZGUqIGNoaWxkID0gbV9jb3VudGVyTm9kZTsKICAgICBpbnQg
dmFsdWUgPSBjaGlsZC0+YWN0c0FzUmVzZXQoKSA/IGNoaWxkLT52YWx1ZSgpIDogY2hpbGQtPmNv
dW50SW5QYXJlbnQoKTsKIAotICAgIFN0cmluZyB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3Vu
dGVyLmxpc3RTdHlsZSgpLCB2YWx1ZSk7CisgICAgU3RyaW5nIHRleHQgPSBsaXN0TWFya2VyVGV4
dChtX2NvdW50ZXIubGlzdFN0eWxlLCB2YWx1ZSk7CiAKLSAgICBpZiAoIW1fY291bnRlci5zZXBh
cmF0b3IoKS5pc051bGwoKSkgeworICAgIGlmICghbV9jb3VudGVyLnNlcGFyYXRvci5pc051bGwo
KSkgewogICAgICAgICBpZiAoIWNoaWxkLT5hY3RzQXNSZXNldCgpKQogICAgICAgICAgICAgY2hp
bGQgPSBjaGlsZC0+cGFyZW50KCk7CiAgICAgICAgIHdoaWxlIChDb3VudGVyTm9kZSogcGFyZW50
ID0gY2hpbGQtPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICB0ZXh0ID0gbGlzdE1hcmtlclRleHQo
bV9jb3VudGVyLmxpc3RTdHlsZSgpLCBjaGlsZC0+Y291bnRJblBhcmVudCgpKQotICAgICAgICAg
ICAgICAgICsgbV9jb3VudGVyLnNlcGFyYXRvcigpICsgdGV4dDsKKyAgICAgICAgICAgIHRleHQg
PSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCBjaGlsZC0+Y291bnRJblBhcmVu
dCgpKSArIG1fY291bnRlci5zZXBhcmF0b3IgKyB0ZXh0OwogICAgICAgICAgICAgY2hpbGQgPSBw
YXJlbnQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAKaW5kZXggMjZmOGZjYmMwYWIyNzk2MGM0OTM5MjIzZTc0OGQ5M2MzYjgzYzk5YS4uMWI2
NzQ1YTllNzkwYjgwNWIxMzUwMDA0MmU0MWUwOTNlZDgxNjkzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzY1LDEzICs3NjUsMTMgQEAgdm9pZCBSZW5kZXJH
cmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYgZ3JpZCkgY29u
c3QKICAgICBncmlkLmVuc3VyZUdyaWRTaXplKG1heGltdW1Sb3dJbmRleCArIGV4cGxpY2l0Um93
U3RhcnQsIG1heGltdW1Db2x1bW5JbmRleCArIGV4cGxpY2l0Q29sdW1uU3RhcnQpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFB
dFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJv
eCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rpb24s
IGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlvbnMpIGNvbnN0CitHcmlkQXJlYSBSZW5k
ZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3Jp
ZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9z
aXRpb25zKSBjb25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjcm9zc0RpcmVj
dGlvbiA9IHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gRm9yUm93cyA6IEZvckNv
bHVtbnM7CiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZDcm9zc0RpcmVjdGlvbiA9IGdyaWQubnVt
VHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1bnNpZ25lZCBjcm9zc0RpcmVjdGlvblNwYW5T
aXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGdy
aWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAgR3JpZFNwYW4gY3Jvc3NEaXJlY3Rpb25Qb3Np
dGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oZW5kT2ZDcm9zc0Rp
cmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiArIGNyb3NzRGlyZWN0aW9uU3BhblNpemUpOwot
ICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRBcmVhPihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBz
cGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNy
b3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAgICByZXR1cm4gR3JpZEFyZWEoc3BlY2lmaWVkRGly
ZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmll
ZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQ
b3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyR3Jp
ZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBW
ZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRlbXMpIGNvbnN0CkBAIC03OTIsNyArNzkyLDcg
QEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdy
aWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW4KICAgICAgICAgdW5zaWduZWQgbWFqb3JBeGlzSW5p
dGlhbFBvc2l0aW9uID0gbWFqb3JBeGlzUG9zaXRpb25zLnN0YXJ0TGluZSgpOwogCiAgICAgICAg
IEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0
aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFydExpbmUoKSwgaXNHcmlkQXV0b0Zsb3dEZW5z
ZSA/IDAgOiBtaW5vckF4aXNDdXJzb3JzLmdldChtYWpvckF4aXNJbml0aWFsUG9zaXRpb24pKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0
b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1p
bm9yQXhpc1NwYW5TaXplKTsKKyAgICAgICAgYXV0byBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3Iu
bmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9y
QXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYgKCFlbXB0eUdyaWRBcmVhKQogICAgICAgICAgICAg
ZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091
dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJl
Y3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKIApAQCAtODI3LDcgKzgyNyw3IEBAIHZvaWQg
UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChHcmlkJiBncmlkLCBSZW5k
ZXJCb3gmIGdyaWRJdGVtLCBBCiAgICAgdW5zaWduZWQgbWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1
cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zID8g
YXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0Owog
ICAgIHVuc2lnbmVkIG1pbm9yQXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50
TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3Iu
Zmlyc3QgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLnNlY29uZDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBl
bXB0eUdyaWRBcmVhOwogICAgIEdyaWRTcGFuIG1pbm9yQXhpc1Bvc2l0aW9ucyA9IGdyaWQuZ3Jp
ZEl0ZW1TcGFuKGdyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkpOwog
ICAgIGlmIChtaW5vckF4aXNQb3NpdGlvbnMuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSkgewogICAg
ICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHRyYWNrIGluIG1ham9yIGF4aXMgaWYgaW5pdGlhbCBw
b3NpdGlvbiBpbiBtaW5vciBheGlzIGlzIGJlZm9yZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IuCkBA
IC04NTcsNyArODU3LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVt
T25HcmlkKEdyaWQmIGdyaWQsIFJlbmRlckJveCYgZ3JpZEl0ZW0sIEEKIAogICAgICAgICAgICAg
ICAgIC8vIERpc2NhcmQgZW1wdHkgZ3JpZCBhcmVhIGFzIGl0IGRvZXMgbm90IGZpdCBpbiB0aGUg
bWlub3IgYXhpcyBkaXJlY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0
byBjcmVhdGUgYSBuZXcgZW1wdHkgZ3JpZCBhcmVhIHlldCBhcyB3ZSBtaWdodCBmaW5kIGEgdmFs
aWQgb25lIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAgICAgICAgICBlbXB0eUdyaWRB
cmVhID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBBcyB3ZSdyZSBtb3ZpbmcgdG8g
dGhlIG5leHQgdHJhY2sgaW4gdGhlIG1ham9yIGF4aXMgd2Ugc2hvdWxkIHJlc2V0IHRoZSBhdXRv
LXBsYWNlbWVudCBjdXJzb3IgaW4gdGhlIG1pbm9yIGF4aXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuaAppbmRleCAyOWFlNTk0ODAwM2VlNmQyZGQ0NDNiNTY5OWRjYjJkN2MxN2I5
NjI2Li42NWM5ZTZlMjUyNjg0OTcwMzM4NGRkZGNiYTE3ODNjNGJiNzdiMTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTMyLDkgKzMyLDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JpZEFyZWE7CiBjbGFzcyBHcmlkU3BhbjsKIAorc3RydWN0
IEdyaWRBcmVhOworCiBzdHJ1Y3QgQ29udGVudEFsaWdubWVudERhdGEgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENvbnRlbnRBbGlnbm1lbnREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CkBAIC0xMTEsNyArMTEyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxh
Y2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mLCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkgY29uc3Q7CiAgICAgdm9pZCBwb3B1bGF0
ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYpIGNvbnN0OwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25z
T3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsKKyAgICBHcmlkQXJlYSBjcmVhdGVFbXB0eUdy
aWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiwgY29uc3QgUmVuZGVy
Qm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYpIGNvbnN0Owog
ICAgIHZvaWQgcGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3Qg
VmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAgICAgdm9pZCBwbGFjZUF1dG9NYWpvckF4aXNJ
dGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAgICAg
dHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBdXRvUGxhY2VtZW50Q3Vyc29y
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcAppbmRleCA3ZThkZDY4ODI0Y2ZiNDU2MjA4MGU1OTRlY2Q4NDAyYTZjOWZjMDMyLi5mOWVk
ZTFkOTBiMzkzNmYxMzA5ZDQ3YjI0MDM1MTU0MmEyNzdjNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtOTcsNyArOTcs
NyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIFdlYkNvcmVIYXMzRFJlbmRlcmluZyA9IHRydWU7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhVVNFKENPTVBPU0lUSU5HX0ZPUl9TTUFMTF9DQU5W
QVNFUykKLXN0YXRpYyBjb25zdCBpbnQgY2FudmFzQXJlYVRocmVzaG9sZFJlcXVpcmluZ0NvbXBv
c2l0aW5nID0gNTAgKiAxMDA7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNhbnZhc0FyZWFU
aHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAwOwogI2VuZGlmCiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcAppbmRleCBlOTYzN2VlYmUyMDYwOWFlMGM1ZDJiMWQ2ZjZiM2U2MWJjOWYxMjk4
Li44NDZhZDE1MjVhZjIwNjYwN2I0MmJmNGVkMTEwY2ZhYTkxNGU5M2VlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTQ2Nyw4ICs0NjcsOCBAQCBM
YXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91
dFNpemUmIGludHJpbnNpY1NpemUpCiAKICAgICBMZW5ndGhQb2ludCBvYmplY3RQb3NpdGlvbiA9
IHN0eWxlKCkub2JqZWN0UG9zaXRpb24oKTsKIAotICAgIExheW91dFVuaXQgeE9mZnNldCA9IG1p
bmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54KCksIGNvbnRlbnRSZWN0LndpZHRo
KCkgLSBmaW5hbFJlY3Qud2lkdGgoKSk7Ci0gICAgTGF5b3V0VW5pdCB5T2Zmc2V0ID0gbWluaW11
bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0aW9uLnkoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkg
LSBmaW5hbFJlY3QuaGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgeE9mZnNldCA9IG1pbmltdW1W
YWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54LCBjb250ZW50UmVjdC53aWR0aCgpIC0gZmlu
YWxSZWN0LndpZHRoKCkpOworICAgIExheW91dFVuaXQgeU9mZnNldCA9IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChvYmplY3RQb3NpdGlvbi55LCBjb250ZW50UmVjdC5oZWlnaHQoKSAtIGZpbmFsUmVj
dC5oZWlnaHQoKSk7CiAKICAgICBmaW5hbFJlY3QubW92ZSh4T2Zmc2V0LCB5T2Zmc2V0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKaW5kZXggY2E1Yjc0
MGQ5MDQ0YmQ2NWUzNjZiNTdkNzZjMzQyOGMzZjllZTNmNi4uNGM0NzRjOTVlM2VlYzIyMmYwNTM5
OTM1MjI1ZDRhMjE5YTYwMjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJv
eFBhaW50ZXIuY3BwCkBAIC02NDAsNyArNjQwLDcgQEAgY29uc3QgU2hhZG93RGF0YSogVGV4dEJv
eFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdygpIGNvbnN0CiAgICAgaWYgKCF0ZXh0Qm94KCkubGVn
YWN5SW5saW5lQm94KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlYnVnVGV4dFNoYWRvdyhMZW5ndGhQb2ludChMZW5n
dGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3Ro
KDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgyMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBT
aGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1aW50OF90PiB7IDE1MCwgMCwgMCwgMTkw
IH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFk
b3coTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4
ZWQgfSB9LCBMZW5ndGgoMTAsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKDIwLCBMZW5ndGhU
eXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIFNSR0JBPHVpbnQ4X3Q+IHsg
MTUwLCAwLCAwLCAxOTAgfSk7CiAgICAgcmV0dXJuICZkZWJ1Z1RleHRTaGFkb3cuZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKaW5kZXggNDU5YmFm
MTEyZmMwMzI3MGFmZTQ2ZmZlODRlZDBkNWJhNmIyNmUzOS4uMjVjZjQ4Y2Y0OTI4MTJlYTNlYjBm
ZmY0NjAwMmNkZDBkNzc2ZWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dFN0eWxlLmgKQEAgLTMzLDEzICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNz
IFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFNoYWRvd0RhdGE7CisKIHN0
cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBUZXh0UGFpbnRTdHlsZSB7Ci0gICAgVGV4dFBhaW50
U3R5bGUoKSB7IH0KKyAgICBUZXh0UGFpbnRTdHlsZSgpID0gZGVmYXVsdDsKICAgICBUZXh0UGFp
bnRTdHlsZShjb25zdCBDb2xvciYpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRQ
YWludFN0eWxlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ291bnRlckNvbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b3VudGVyQ29udGVudC5oCmluZGV4IDU4NmNjNjY5ODAyNjVkOTg2M2FjYWFhN2VlNmI4YTk4NjQ4
MzI2YzYuLjdiZjViYzkwNmU4OGM1Mzc1ODEwY2MzZTFmYzI4ODk5MDlkNTBhYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCkBAIC0yOSwz
MiArMjksMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb3VudGVyQ29udGVu
dCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ291bnRlckNv
bnRlbnQoY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllciwgTGlzdFN0eWxlVHlwZSBzdHlsZSwg
Y29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKQotICAgICAgICA6IG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQotICAgICAgICAsIG1fbGlzdFN0eWxlKHN0eWxlKQotICAgICAgICAsIG1fc2VwYXJh
dG9yKHNlcGFyYXRvcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzdHlsZSAhPSBMaXN0U3R5bGVU
eXBlOjpTdHJpbmcpOwotICAgIH0KK3N0cnVjdCBDb3VudGVyQ29udGVudCB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIExpc3RTdHlsZVR5cGUg
bGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGU7IH0KLSAgICBjb25zdCBBdG9t
U3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlcGFyYXRvcjsgfQotCi1wcml2
YXRlOgotICAgIEF0b21TdHJpbmcgbV9pZGVudGlmaWVyOwotICAgIExpc3RTdHlsZVR5cGUgbV9s
aXN0U3R5bGU7Ci0gICAgQXRvbVN0cmluZyBtX3NlcGFyYXRvcjsKKyAgICBBdG9tU3RyaW5nIGlk
ZW50aWZpZXI7CisgICAgTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGU7CisgICAgQXRvbVN0cmluZyBz
ZXBhcmF0b3I7CiB9OwogCi1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3Vu
dGVyQ29udGVudCYgYSwgY29uc3QgQ291bnRlckNvbnRlbnQmIGIpCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50JiBhLCBjb25zdCBDb3VudGVyQ29udGVudCYgYikK
IHsKLSAgICByZXR1cm4gYS5pZGVudGlmaWVyKCkgPT0gYi5pZGVudGlmaWVyKCkKLSAgICAgICAg
JiYgYS5saXN0U3R5bGUoKSA9PSBiLmxpc3RTdHlsZSgpCi0gICAgICAgICYmIGEuc2VwYXJhdG9y
KCkgPT0gYi5zZXBhcmF0b3IoKTsKKyAgICByZXR1cm4gYS5pZGVudGlmaWVyID09IGIuaWRlbnRp
ZmllcgorICAgICAgICAmJiBhLmxpc3RTdHlsZSA9PSBiLmxpc3RTdHlsZQorICAgICAgICAmJiBh
LnNlcGFyYXRvciA9PSBiLnNlcGFyYXRvcjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCmluZGV4IDk1ZDM4NjI3
ZTE0MTNmNTI2MWMwOWM5ZmQ5ZmIxYWEyMjBkNTQ4YjQuLjcyNDBiOTZiZTgwZTk3MzM2YmNkY2Jj
ZDRlZTdlMjhkYzY3ODg5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmgKQEAgLTM1LDE4ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
bmRlckVsZW1lbnQ7CiAKIHN0cnVjdCBGaWxsU2l6ZSB7Ci0gICAgRmlsbFNpemUoKQotICAgICAg
ICA6IHR5cGUoRmlsbFNpemVUeXBlOjpTaXplKQotICAgIHsKLSAgICB9Ci0KLSAgICBGaWxsU2l6
ZShGaWxsU2l6ZVR5cGUgdHlwZSwgY29uc3QgTGVuZ3RoU2l6ZSYgc2l6ZSkKLSAgICAgICAgOiB0
eXBlKHR5cGUpCi0gICAgICAgICwgc2l6ZShzaXplKQotICAgIHsKLSAgICB9Ci0KLSAgICBGaWxs
U2l6ZVR5cGUgdHlwZTsKKyAgICBGaWxsU2l6ZVR5cGUgdHlwZSB7IEZpbGxTaXplVHlwZTo6U2l6
ZSB9OwogICAgIExlbmd0aFNpemUgc2l6ZTsKIH07CiAKQEAgLTg0LDcgKzczLDcgQEAgcHVibGlj
OgogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxC
bGVuZE1vZGU+KG1fYmxlbmRNb2RlKTsgfQogICAgIGNvbnN0IExlbmd0aFNpemUmIHNpemVMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX3NpemVMZW5ndGg7IH0KICAgICBGaWxsU2l6ZVR5cGUgc2l6
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGaWxsU2l6ZVR5cGU+KG1fc2l6ZVR5
cGUpOyB9Ci0gICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZpbGxTaXplKHN0YXRp
Y19jYXN0PEZpbGxTaXplVHlwZT4obV9zaXplVHlwZSksIG1fc2l6ZUxlbmd0aCk7IH0KKyAgICBG
aWxsU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4geyBzaXplVHlwZSgpLCBtX3NpemVMZW5ndGgg
fTsgfQogICAgIE1hc2tNb2RlIG1hc2tNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TWFza01vZGU+KG1fbWFza01vZGUpOyB9CiAKICAgICBjb25zdCBGaWxsTGF5ZXIqIG5leHQoKSBj
b25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQxZDk2MWRlODgyNmZiODMwMzMwOWI4ZTYzNTJmMjBm
OWVhYi4uZDQ3NmY5MzE5ODdjZmNhNzE0MTRjYmZkZWNkODFhYmIxZWRmY2UzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKQEAgLTQyLDcgKzQyLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gRGVzcGl0ZSBsaW5lIG51bWJlcnMgaW4gdGhlIHNwZWMgc3Rh
cnQgaW4gIjEiLCB0aGUgaW5kZXhlcyBoZXJlIHN0YXJ0IGluICIwIi4KIGNsYXNzIEdyaWRTcGFu
IHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBHcmlkU3BhbiB1bnRyYW5zbGF0ZWREZWZpbml0ZUdy
aWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgcmV0dXJu
IEdyaWRTcGFuKHN0YXJ0TGluZSwgZW5kTGluZSwgVW50cmFuc2xhdGVkRGVmaW5pdGUpOwpAQCAt
MTQyLDggKzE0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0KLSAgICBlbnVtIEdy
aWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5k
ZWZpbml0ZX07CisgICAgZW51bSBHcmlkU3BhblR5cGUgOiB1aW50OF90IHsgVW50cmFuc2xhdGVk
RGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZSB9OwogCiAgICAgR3JpZFNw
YW4oaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIEdyaWRTcGFuVHlwZSB0eXBlKQogICAgICAg
ICA6IG1fdHlwZSh0eXBlKQpAQCAtMTYzLDI0ICsxNjEsMjQgQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9zdGFydExpbmU7CiAgICAgaW50IG1fZW5kTGluZTsKICAgICBHcmlkU3BhblR5cGUgbV90eXBl
OwotCi0KIH07CiAKIC8vIFRoaXMgcmVwcmVzZW50cyBhIGdyaWQgYXJlYSB0aGF0IHNwYW5zIGlu
IGJvdGggcm93cycgYW5kIGNvbHVtbnMnIGRpcmVjdGlvbi4KLWNsYXNzIEdyaWRBcmVhIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBIYXNoTWFwIHJlcXVp
cmVzIGEgZGVmYXVsdCBjb25zdHVjdG9yLgorc3RydWN0IEdyaWRBcmVhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBHcmlkU3BhbiByb3dzOworICAgIEdyaWRT
cGFuIGNvbHVtbnM7CisKICAgICBHcmlkQXJlYSgpCi0gICAgICAgIDogY29sdW1ucyhHcmlkU3Bh
bjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCi0gICAgICAgICwgcm93cyhHcmlkU3Bhbjo6aW5kZWZp
bml0ZUdyaWRTcGFuKCkpCisgICAgICAgIDogcm93cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRT
cGFuKCkpCisgICAgICAgICwgY29sdW1ucyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkp
CiAgICAgewogICAgIH0KIAotICAgIEdyaWRBcmVhKGNvbnN0IEdyaWRTcGFuJiByLCBjb25zdCBH
cmlkU3BhbiYgYykKLSAgICAgICAgOiBjb2x1bW5zKGMpCi0gICAgICAgICwgcm93cyhyKQorICAg
IEdyaWRBcmVhKEdyaWRTcGFuIHJvd3MsIEdyaWRTcGFuIGNvbHVtbnMpCisgICAgICAgIDogcm93
cyhyb3dzKQorICAgICAgICAsIGNvbHVtbnMoY29sdW1ucykKICAgICB7CiAgICAgfQogCkBAIC0x
OTMsMTEgKzE5MSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG8pOwogICAgIH0KLQotICAgIEdyaWRTcGFuIGNvbHVtbnM7Ci0gICAgR3JpZFNwYW4gcm93czsK
IH07CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEdyaWRBcmVhPiBOYW1lZEdyaWRBcmVhTWFw
OwordXNpbmcgTmFtZWRHcmlkQXJlYU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBHcmlkQXJlYT47CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZExlbmd0aC5oCmluZGV4IDg2YWNkMzMwZGY2OWY4M2IwZDJmZDMyMjdlYmI4MGU5ZWZlN2U4
N2EuLjVmODhkZTFmYzljMjEyMmNlMjJhZDdlMzBhMzBiMDg0OTM4NWU5MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaApAQCAtNDIsNyArNDIsNiBAQCBj
bGFzcyBHcmlkTGVuZ3RoIHsKIHB1YmxpYzoKICAgICBHcmlkTGVuZ3RoKGNvbnN0IExlbmd0aCYg
bGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAgICAgLCBtX2ZsZXgoMCkK
ICAgICAgICAgLCBtX3R5cGUoTGVuZ3RoVHlwZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbGVu
Z3RoLmlzVW5kZWZpbmVkKCkpOwpAQCAtNzIsMTQgKzcxLDEwIEBAIHB1YmxpYzoKICAgICBib29s
IGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBMZW5ndGhUeXBlICYmIG1fbGVuZ3Ro
LmlzQXV0bygpOyB9CiAKIHByaXZhdGU6Ci0gICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBwdXQgdGhl
IDIgZm9sbG93aW5nIGZpZWxkcyBpbiBhIHVuaW9uLCBidXQgTGVuZ3RoIGhhcyBhIGNvbnN0cnVj
dG9yLAotICAgIC8vIGEgZGVzdHJ1Y3RvciBhbmQgYSBjb3B5IGFzc2lnbm1lbnQgd2hpY2ggaXNu
J3QgYWxsb3dlZC4KKyAgICAvLyBDb3VsZCB1c2UgYSBWYXJpYW50IGhlcmUgc2luY2Ugd2Ugb25s
eSB1c2UgbV9sZW5ndGggb3IgbV9mbGV4LCBhbmQgbV90eXBlIGRldGVybWluZXMgd2hpY2guCiAg
ICAgTGVuZ3RoIG1fbGVuZ3RoOwotICAgIGRvdWJsZSBtX2ZsZXg7Ci0gICAgZW51bSBHcmlkTGVu
Z3RoVHlwZSB7Ci0gICAgICAgIExlbmd0aFR5cGUsCi0gICAgICAgIEZsZXhUeXBlCi0gICAgfTsK
KyAgICBkb3VibGUgbV9mbGV4IHsgMCB9OworICAgIGVudW0gR3JpZExlbmd0aFR5cGUgOiBib29s
IHsgTGVuZ3RoVHlwZSwgRmxleFR5cGUgfTsKICAgICBHcmlkTGVuZ3RoVHlwZSBtX3R5cGU7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApp
bmRleCBhZDVhYmFkYWMwNGY3ZDJlYmJjYzY3MDRlMDEyOTNiMWRkZmFlM2E0Li4yZThkNTI2YTlm
YTE5NWQ0NTc0MTYyZWU2MTc5ZjNlY2U2M2M3ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTE0OTcsNyArMTQ5Nyw3IEBAIHZvaWQg
UmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBjb25zCiAgICAgLy8gU2hpZnQgZWxlbWVudCB0byB0aGUgYW5jaG9yIHNw
ZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgogICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gZmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNp
emUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOwogICAgIGF1dG8gYW5jaG9yID0gdHJhbnNm
b3JtT3JpZ2luOwotICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueCgpLmlzQXV0bygpKQorICAgIGlm
ICghb2Zmc2V0QW5jaG9yKCkueC5pc0F1dG8oKSkKICAgICAgICAgYW5jaG9yID0gZmxvYXRQb2lu
dEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hvcigpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91
bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1hbmNob3IueCgp
LCAtYW5jaG9yLnkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKaW5kZXggNGYyMTM1ZWFhZWQ2MjE4NzE5YWVjYjZiYmMwYTIyMDVjOTk4ZDM1OS4u
M2RhYzc3MzNlMDYxNDA1MDM0ODU2ZjAzODMzMGRkMWRlOTE2YTk5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEwOSw3ICsxMDksNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJvcmRlckRhdGE7CiBjbGFzcyBDb250ZW50RGF0
YTsKLWNsYXNzIENvdW50ZXJDb250ZW50OwogY2xhc3MgQ3Vyc29yTGlzdDsKIGNsYXNzIEZvbnRD
YXNjYWRlOwogY2xhc3MgRm9udE1ldHJpY3M7CkBAIC0xMjEsNiArMTIwLDcgQEAgY2xhc3MgU3R5
bGVJbmhlcml0ZWREYXRhOwogY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYTsKIGNsYXNzIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OwogCitzdHJ1Y3QgQ291bnRlckNvbnRlbnQ7CiBzdHJ1Y3QgU2Nyb2xs
U25hcEFsaWduOwogc3RydWN0IFNjcm9sbFNuYXBUeXBlOwogCkBAIC03MDAsNyArNzAwLDcgQEAg
cHVibGljOgogICAgIFRleHRDb21iaW5lIHRleHRDb21iaW5lKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGV4dENvbWJpbmU+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRDb21iaW5lKTsg
fQogICAgIGJvb2wgaGFzVGV4dENvbWJpbmUoKSBjb25zdCB7IHJldHVybiB0ZXh0Q29tYmluZSgp
ICE9IFRleHRDb21iaW5lOjpOb25lOyB9CiAKLSAgICBjb25zdCBUYWJTaXplJiB0YWJTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGFiU2l6ZTsgfQorICAgIFRhYlNp
emUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemU7
IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMKIApAQCAtMTI3Niw3ICsxMjc2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0QmFja2Ryb3BGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJhY2tkcm9wRmls
dGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0VGFiU2l6ZShj
b25zdCBUYWJTaXplJiBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6
ZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNldFRhYlNpemUoVGFiU2l6ZSBzaXplKSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KIAogICAgIHZvaWQgc2V0QnJl
YWtCZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBicmVha0JlZm9yZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJyZWFrQmVo
YXZpb3IpKTsgfQogICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhh
dmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFrQWZ0ZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KQEAgLTE1ODQsNyArMTU4NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyBy
ZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0KICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGlu
aXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9
CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0
Rml0OjpGaWxsOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlv
bigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2Vu
dCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOyB9CisgICAgc3RhdGljIExl
bmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIHsgTGVuZ3RoKDUwLjBm
LCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50
KSB9OyB9CiAgICAgc3RhdGljIEVtcHR5Q2VsbCBpbml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJu
IEVtcHR5Q2VsbDo6U2hvdzsgfQogICAgIHN0YXRpYyBMaXN0U3R5bGVQb3NpdGlvbiBpbml0aWFs
TGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBMaXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lkZTsg
fQogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbml0aWFsTGlzdFN0eWxlU3RyaW5nVmFs
dWUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CkBAIC0xODk4LDExICsxODk4LDExIEBAIHB1Ymxp
YzoKIAogICAgIExlbmd0aFBvaW50IG9mZnNldFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0UG9zaXRpb247IH0KICAgICB2b2lkIHNldE9mZnNl
dFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBvZmZzZXRQb3NpdGlvbiwgV1RGTW92ZShwb3NpdGlvbikpOyB9Ci0gICAgc3Rh
dGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBv
aW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsg
fQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0UG9zaXRpb24oKSB7IHJldHVy
biB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6OkF1dG8gfSB9OyB9CiAKICAg
ICBMZW5ndGhQb2ludCBvZmZzZXRBbmNob3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5vZmZzZXRBbmNob3I7IH0KICAgICB2b2lkIHNldE9mZnNldEFuY2hvcihMZW5n
dGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zm
c2V0QW5jaG9yLCBXVEZNb3ZlKHBvc2l0aW9uKSk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoUG9pbnQg
aW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhU
eXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5n
dGhQb2ludCBpbml0aWFsT2Zmc2V0QW5jaG9yKCkgeyByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1
dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsgfQogCiAgICAgT2Zmc2V0Um90YXRpb24gb2Zm
c2V0Um90YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0
Um90YXRlOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRSb3RhdGUoT2Zmc2V0Um90YXRpb24mJiByb3Rh
dGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9mZnNldFJvdGF0ZSwgV1RG
TW92ZShyb3RhdGlvbikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hh
ZG93RGF0YS5jcHAKaW5kZXggODdjYTJiMjUyZjk2Zjg1ZTRiNDQwYjZmZDJjMGY4ZTkzYWRlN2Ew
Yy4uZGUzZGM2YzRjZGUxMjk3ZWVhMGNmY2Q2ZDYxZDY0NDEyODEwZTJiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMjgsNyArMjgsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNo
YWRvd0RhdGEmIG8pCi0gICAgOiBtX2xvY2F0aW9uKG8ubV9sb2NhdGlvbi54KCksIG8ubV9sb2Nh
dGlvbi55KCkpCisgICAgOiBtX2xvY2F0aW9uKG8ubV9sb2NhdGlvbikKICAgICAsIG1fc3ByZWFk
KG8ubV9zcHJlYWQpCiAgICAgLCBtX3JhZGl1cyhvLm1fcmFkaXVzKQogICAgICwgbV9jb2xvcihv
Lm1fY29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hh
ZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaApp
bmRleCAyMmZlZjc2MmJjYTMxMGI2M2FlZmU4NTg2ZjQyMmFiOWY4M2MwNWYyLi5kOWE0MWExNWJh
MGQxZWZhOWM4ZmU1NDA3YjNkNTBlOWYyZWUwYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIFNo
YWRvd0RhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFkb3dEYXRhKGNvbnN0IExlbmd0aFBvaW50
JiBsb2NhdGlvbiwgTGVuZ3RoIHJhZGl1cywgTGVuZ3RoIHNwcmVhZCwgU2hhZG93U3R5bGUgc3R5
bGUsIGJvb2wgaXNXZWJraXRCb3hTaGFkb3csIGNvbnN0IENvbG9yJiBjb2xvcikKLSAgICAgICAg
OiBtX2xvY2F0aW9uKGxvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgpKQorICAgICAgICA6IG1fbG9j
YXRpb24obG9jYXRpb24pCiAgICAgICAgICwgbV9zcHJlYWQoc3ByZWFkKQogICAgICAgICAsIG1f
cmFkaXVzKHJhZGl1cykKICAgICAgICAgLCBtX2NvbG9yKGNvbG9yKQpAQCAtNjIsOCArNjIsOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KICAgICAKLSAg
ICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uLngoKTsgfQotICAg
IGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ueSgpOyB9CisgICAg
Y29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi54OyB9CisgICAgY29u
c3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi55OyB9CiAgICAgY29uc3Qg
TGVuZ3RoUG9pbnQmIGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQogICAg
IGNvbnN0IExlbmd0aCYgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KICAgICBM
YXlvdXRVbml0IHBhaW50aW5nRXh0ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaAppbmRleCBhMmM3YjBk
YjNkNmU1ZmVkNjUzNmE1NjM5YjQ1NzkyZTQ3ODAxMTc5Li41Mzc0NzIyYWIwOTRjNTc4Mzc4Y2Rk
MWU1ZDI5YWYwZWQ5OWE1YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCkBAIC0yNSwxMSArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkxlbmd0aEJveC5oIgotI2luY2x1ZGUgIkxlbmd0aFNp
emUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5k
ZXggOTE1MDQwMWE2NDVlNDI4NGU5MTY5MWJhMGJhNWM5NzhjOTgyZWZiZC4uMTI3ZWYzMjcyNDQ2
NmNkNDhjMzc0MDJkZTc2MGE1Yjk3MGE2ZmE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTI2OCw4ICsyNjgsOCBAQCBpbmxpbmUgVGFiU2l6
ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZShjb25zdCBCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkK
LSAgICAgICAgcmV0dXJuIFRhYlNpemUocHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpLCBTcGFj
ZVZhbHVlVHlwZSk7Ci0gICAgcmV0dXJuIFRhYlNpemUocHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxl
bmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSksIExl
bmd0aFZhbHVlVHlwZSk7CisgICAgICAgIHJldHVybiB7IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFs
dWUoKSwgVGFiU2l6ZTo6U3BhY2VzIH07CisgICAgcmV0dXJuIHsgcHJpbWl0aXZlVmFsdWUuY29t
cHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEo
KSksIFRhYlNpemU6Okxlbmd0aCB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNDE3
LDcgKzQxNyw3IEBAIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
UG9zaXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgTGVuZ3RoIGxlbmd0aFgg
PSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0Pihi
dWlsZGVyU3RhdGUsICpwYWlyLT5maXJzdCgpKTsKICAgICBMZW5ndGggbGVuZ3RoWSA9IGNvbnZl
cnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20+KGJ1aWxkZXJT
dGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKIAotICAgIHJldHVybiBMZW5ndGhQb2ludChsZW5ndGhY
LCBsZW5ndGhZKTsKKyAgICByZXR1cm4geyBsZW5ndGhYLCBsZW5ndGhZIH07CiB9CiAKIGlubGlu
ZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25PckF1dG8oQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTQyNyw3
ICs0MjcsNyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBv
c2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlcgogICAgIGlmIChwcmltaXRpdmVWYWx1
ZS5pc1BhaXIoKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRQb3NpdGlvbihidWlsZGVyU3RhdGUs
IHZhbHVlKTsKIAotICAgIHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0
byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7CisgICAgcmV0dXJuIHsgeyBMZW5ndGhUeXBl
OjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9IH07CiB9CiAKIGlubGluZSBPcHRpb25TZXQ8
VGV4dERlY29yYXRpb25MaW5lPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRp
b24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAxM2NhZDliN2ZkNzcyYTZjZDIzOTgzNDBl
MjgyNzcxYmQ0OWI0NDYxLi5lODNlZjljNGE3ZjJkNGNlMTAyYWRkYjc5YzlhN2QwMjliMzA4Mzg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtOTU2LDcg
Kzk1Niw3IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93
VmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbG9yID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuY29sb3IoKTsKIAotICAgICAgICBhdXRv
IHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KExlbmd0aFBvaW50KHgsIHkpLCBi
bHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFj
ayk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oTGVu
Z3RoUG9pbnQgeyB4LCB5IH0sIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09
IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRT
aGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUg
bGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQpAQCAtMTU4
Myw3ICsxNTgzLDcgQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRl
bnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHUKICAgICAgICAgICAgIENTU1Zh
bHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAg
ICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAg
ICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5
bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtl
VW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0
eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNv
dW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50PihDb3VudGVyQ29udGVudCB7IGNvdW50
ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFy
YXRvcigpIH0pOwogICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChX
VEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAg
ICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmgKaW5kZXggMzM1ZjNmYWRmYWFlZWUzZWI2MjUxZWZiOTg5OTUzOTE0ZDYwMTYzNS4uZDhmNzdm
NmFmMWI1N2EyMDhhNGVlMmRlMzM1OWE1YmFhODlkMmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZiNzQ0NWIyM2UyNDI3MjNjNWY1MDYyYTY4
MWVlZDU4M2E0NzA1MjkuLjczYjNmNjY1MjViNjhmNjEzNTY1YTZiOWE1MGFjNzBjNmRlMWQ0MDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwOiBVcGRhdGVkIHRlc3Rz
IGZvciBjaGFuZ2UgdG8gT3B0aW9uU2V0IGZvcgorICAgICAgICBNZWRpYVRpbWUgZmxhZ3MsIGFu
ZCBmb3IgbmFtZSBjaGFuZ2UgZnJvbSBSb3VuZGluZ0ZsYWdzIHRvIFJvdW5kaW5nTW9kZS4KKwog
MjAyMi0wMS0yNCAgSm9uYXRoYW4gQmVkYXJkICA8Sm9uV0JlZGFyZEBnbWFpbC5jb20+CiAKICAg
ICAgICAgW0VXU10gVXNlIGdpdGh1Yi5oZWFkLnNoYSBpbnN0ZWFkIG9mIHJldmlzaW9uCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcAppbmRleCBiMGI1NGE4MDNm
YWM4NWQxNTg0ZTcyM2M4NmUxZDljYmE0NGRjZTdhLi5kYzhlMjg5ODRhZTNhODAyZTU3Mzg2NzY2
MTUyOTU5NGFjNTlkNDc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9NZWRpYVRpbWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlh
VGltZS5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBURVNUKFdURiwgTWVkaWFUaW1lKQogCiAgICAg
Ly8gQ29uc3RhbnRzCiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgTWVkaWFU
aW1lKDAsIDEpKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRp
YVRpbWUoLTEsIDEsIDApKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
LCBNZWRpYVRpbWUoLTEsIDEsIHsgfSkpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0
aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRpYVRpbWU6OlBvc2l0aXZlSW5m
aW5pdGUpKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgp
LCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlKSk7CiAgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlh
VGltZTo6SW5kZWZpbml0ZSkpOwpAQCAtMjU0LDY5ICsyNTQsNjkgQEAgVEVTVChXVEYsIE1lZGlh
VGltZSkKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDIsIDIpLnRvVGltZVNjYWxlKDEpLnRpbWVW
YWx1ZSgpLCAxKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDIsIDYpLnRvVGltZVNjYWxlKDMp
LnRpbWVWYWx1ZSgpLCAxKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNj
YWxlKDEpLmhhc0JlZW5Sb3VuZGVkKCksIHRydWUpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
MSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZy
b21aZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSg1MSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVpl
cm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDQ5LCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybyku
dGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFs
dWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUo
KSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
MSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdz
OjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
MSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJv
KS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgp
LCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2Fy
ZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRp
bWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAt
MSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdG
bGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdh
eUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1
MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEw
MCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0
eSkudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZp
bml0eSkudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZp
bml0eSkudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMs
IDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0x
NTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQ
b3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6
OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0y
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSg0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6
SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxm
QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
MSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJv
bVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEw
MCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVpl
cm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZh
bHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2Fy
ZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGlt
ZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwg
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpU
b3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywg
MikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRp
bWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9k
ZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRp
bWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUo
KSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3
YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0x
NTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEw
MCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybyku
dGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50
aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50
aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0
eSkudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZp
bml0eSkudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEw
MCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZl
SW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5m
aW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2
ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwg
MikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZl
SW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEs
IDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0
aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
NDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5l
Z2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5l
Z2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dh
cmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6
VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKICAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgMSkudG9UaW1lU2NhbGUo
MiksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CiAgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIDEpLnRvVGltZVNjYWxlKDIp
LCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOwogICAgIGludDY0X3QgbWF4SW50
MzIgPSBudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CiAgICAgRVhQRUNUX0VRKE1lZGlh
VGltZShtYXhJbnQzMiAqIDIsIDEpLnRvVGltZVNjYWxlKDIpLnRpbWVWYWx1ZSgpLCBtYXhJbnQz
MiAqIDQpOwogICAgIGludDY0X3QgYmlnSW50ID0gMUxMIDw8IDYyOwogICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoYmlnSW50LCAxVSA8PCAzMSkudG9UaW1lU2NhbGUoMVUgPDwgMjkpLnRpbWVWYWx1
ZSgpLCBiaWdJbnQgLyA0KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCArIDEsIDFV
IDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAyOSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpU
b3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgYmlnSW50IC8gNCk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZShiaWdJbnQgKyAxLCAxVSA8PCAzMSkudG9UaW1lU2NhbGUoMVUgPDwgMjksIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgYmlnSW50IC8gNCk7CiAg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQgKyAxLCAxVSA8PCAzMSkudG9UaW1lU2NhbGUo
MVUgPDwgMjkpLmhhc0JlZW5Sb3VuZGVkKCksIHRydWUpOwogICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoYmlnSW50IC0gMiwgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNjYWxlKS50b1RpbWVTY2FsZShN
ZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUgLSAxKS5oYXNCZWVuUm91bmRlZCgpLCB0cnVlKTsK
ICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCwgMSkudG9UaW1lU2NhbGUoTWVkaWFUaW1l
OjpNYXhpbXVtVGltZVNjYWxlKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsK
</data>
<flag name="commit-queue"
          id="476102"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449881</attachid>
            <date>2022-01-24 16:30:50 -0800</date>
            <delta_ts>2022-01-24 17:03:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220124163049.patch</filename>
            <type>text/plain</type>
            <size>147724</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODc0NDFhNWRkODlkMjA2ZDI2NzQxZDA0MmRlYjY4NjRhZTdiZmVkLi5mMTA5NDRiYTBiMDhhZWRl
M2NmYWNlYjkwOTgzY2FhYmFkNDFjM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjQgIE1pa2hhaWwgUi4gR2FkZWxoYSAgPG1pa2hhaWxAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbSlNDXVszMmJpdF0gRml4IHJlZ2V4cCBjcmFzaCBvbiBBUk12NwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1
OTdjZTgyYjBmMDQ2MDc5YmRlMzExYzEzYzA4NjNhNDEyYmZmNjhlLi45MDgyOWI1NWMxODdlZjFi
MjhmNWI1ODI2MWZkYTIxNTEyMGRiZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMi0wMS0y
NCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5k
IHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOiBB
ZGQgU2Vjb25kcyBhbmQgV2FsbFRpbWUgdG8gdGhlIHVzaW5nIHNlY3Rpb24uCisKKyAgICAgICAg
KiB3dGYvTG9jay5oOiBVc2UgRm9yd2FyZC5oIGluc3RlYWQgb2YgU2Vjb25kcy5oIHNpbmNlIFNl
Y29uZHMgaXMgb25seSB1c2VkCisgICAgICAgIGhlcmUgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVy
biB0eXBlLCBubyBhY3R1YWwgdXNlIG9mIHRoZSBjbGFzcyBpbiB0aGUgaGVhZGVyLgorCisgICAg
ICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVkaWFU
aW1lKTogRGVsZXRlZCB0aGUgY29weSBjb25zdHJ1Y3RvciB0aGF0IHVzZWQgdGhlIGFzc2lnbm1l
bnQKKyAgICAgICAgb3BlcmF0b3IuIFRoZSBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3Igd29ya3Mg
ZmluZSwgd2UgZG9uJ3QgaGF2ZSB0byB3cml0ZSBvbmUuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6TWVkaWFUaW1lKTogQWRkZWQgYSBIYXNEb3VibGUgY29uc3RydWN0b3IgZm9yIHVzZSBpbiBj
cmVhdGUKKyAgICAgICAgZnVuY3Rpb25zLiBJdCdzIGNvbnN0ZXhwciBidXQgaXQncyBpbiB0aGUg
LmNwcCBmaWxlIGJlY2F1c2UgaXQncyBwcml2YXRlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhGbG9hdCk6IFNpbXBsaWZpZWQgYnkgdXNpbmcgdGhlIEhhc0RvdWJsZSBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgQWxzbyB1c2Ugc3RkOjppc25hbiBpbnN0ZWFkIG9mIGEgdHJpY2t5
IGFsdGVybmF0ZSB3YXkgb2YgZG9pbmcgaXQuIFJlbW92ZWQgYQorICAgICAgICBzcGVjaWFsIGNh
c2UgZm9yIGluZmluaXR5IHNpbmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIGNhc2VzIGFscmVh
ZHkgY292ZXIgdGhhdC4KKyAgICAgICAgQW5kIHJlcGxhY2VkIGEgc3RhdGljX2Nhc3Qgd2l0aCBh
biBhc3NpZ25tZW50IHRvIHRoZSBkZXNpcmVkIHR5cGUuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZSk6IERpdHRvLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHNvIHNpbWls
YXIgdGhlCisgICAgICAgIHNob3VsZCBwcm9iYWJseSBiZSB0ZW1wbGF0ZWQgaW5zdGVhZCBvZiBy
ZXBlYXRlZCB0d2ljZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0Zsb2F0IGNvbnN0KTog
UmVwbGFjZWQgYSBzdGF0aWNfY2FzdCB3aXRoIGFzc2lnbm1lbnQgdG8gdGhlCisgICAgICAgIGRl
c2lyZWQgdHlwZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0RvdWJsZSBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuIFRoZSBk
ZWZhdWx0IGFzc2lnbm1lbnQgb3BlcmF0b3Igd29ya3MgZmluZS4KKyAgICAgICAgKFdURjo6TWVk
aWFUaW1lOjpvcGVyYXRvcisgY29uc3QpOiBUYWtlIHRoZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0
ZWFkIG9mIHJlZmVyZW5jZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvci0gY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciogY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciEgY29uc3QpOiBTaW1wbGlm
aWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBieSB1c2luZworICAgICAgICBmdW5jdGlvbnMgaW5zdGVh
ZCBvZiBjaGVja2luZyB0aGUgZmxhZ3MgZGlyZWN0bHkuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IENhbGwgb3BlcmF0b3IhIGluc3RlYWQgb2YgcmVwZWF0
aW5nIHRoZQorICAgICAgICBsb2dpYyB0d2ljZS4KKyAgICAgICAgKFdURjo6b3JkZXJpbmcpOiBB
ZGRlZCB0d28gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuIE9uZSBpcyBhIHRlbXBsYXRlIHRoYXQgY29t
cGFyZXMKKyAgICAgICAgc2NhbGFycyBhbmQgdGhlIG90aGVyIGNvbXBhcmVzIHR3byBNZWRpYVRp
bWUgb2JqZWN0cy4gVGhlIHNlY29uZCBvbmUgcmVwbGFjZXMgdGhlCisgICAgICAgIE1lZGlhVGlt
ZTo6Y29tcGFyZSBmdW5jdGlvbiwgd2hpY2ggaXMgbm93IGp1c3QgYSBsaWdodHdlaWdodCBjb3Zl
ciBmb3IgdGhpcy4KKyAgICAgICAgVGhlIG9sZCBjb2RlIGhhZCB0cmlja3kgbG9naWMsIGFuZCB0
aGlzIG5ldyBmdW5jdGlvbiBpcyBhIGNvbXBsZXRlIHJld3JpdGUuCisgICAgICAgIFRvIG1ha2Ug
dGhlIGxvZ2ljIGVhc3kgdG8gZm9sbG93LCB3ZSBleHRyYWN0IHRoZSBwaWVjZXMgb2YgdGhlIE1l
ZGlhVGltZSBhbmQKKyAgICAgICAgY29tcGFyZSB0aGVtLiBJZiB0aGV5IGFyZSBlcXVhbCB0aGVu
IHdlIGZhbGwgdGhyb3VnaCB0byB0aGUgbmV4dCwgYW5kIHNvIG9uLgorICAgICAgICBBdCB0aGUg
ZW5kIHRoZXJlIGFyZSB2YXJpb3VzIGNhc2VzIGZvciB0aW1lcyB3ZSBjYW4gY29tcGFyZSB3aXRo
b3V0IGRvaW5nCisgICAgICAgIGFyaXRobWV0aWMsIGFuZCB0aGVzZSBhcmUgdGhlIHNhbWUgYXMg
dGhlIG9uZXMgdGhhdCB3ZXJlIGFscmVhZHkgaGVyZSwgYnV0IHdpdGgKKyAgICAgICAgc2ltcGxp
ZmllZCBsb2dpYyBpbiBzb21lIGNhc2VzIHRoYXQgc2hvdWRsIGJlIGVhc2llciB0byBmb2xsb3cs
IGFuZCBubyB1c2VzIG9mCisgICAgICAgIHN0YXRpY19jYXN0IGFueSBtb3JlLgorICAgICAgICAo
V1RGOjpNZWRpYVRpbWU6OmlzQmV0d2VlbiBjb25zdCk6IFRha2UgYXJndW1lbnRzIGJ5IHZhbHVl
IGluc3RlYWQgb2YgcmVmZXJlbmNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9UaW1l
KTogRGVsZXRlZC4gTm93IGEgY29uc3RleHByIGluIHRoZSBoZWFkZXIuCisgICAgICAgIChXVEY6
Ok1lZGlhVGltZTo6aW52YWxpZFRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKTogRGVsZXRlZC4gRGl0dG8u
CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUpOiBEZWxldGVkLiBEaXR0
by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b1RpbWVTY2FsZSBjb25zdCk6IFVwZGF0ZWQg
c2luY2UgUm91bmRpbmdGbGFncyBpcyBub3cKKyAgICAgICAgUm91bmRpbmdNb2RlLiBJdCBkaWRu
J3QgbWFrZSBzZW5zZSB0byB0cmVhdCBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgcG9saWNp
ZXMKKyAgICAgICAgYXMgImZsYWdzIi4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpzZXRUaW1l
U2NhbGUpOiBEaXR0by4gQWxzbyB1c2Ugc3RkOjpleGNoYW5nZSBpbnN0ZWFkIG9mIHN0ZDo6c3dh
cAorICAgICAgICBhbmQgdXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgbGxhYnMuCisgICAgICAgIChX
VEY6Ok1lZGlhVGltZTo6dG9KU09OT2JqZWN0IGNvbnN0KTogUmVtb3ZlZCBzdGF0aWNfY2FzdCB0
byBkb3VibGUuCisgICAgICAgIChXVEY6OmFicyk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5z
dGVhZCBvZiByZWZlcmVuY2UuIFJlbmFtZWQgYXJndW1lbnQgZnJvbSByaHMKKyAgICAgICAgc2lu
Y2UgdGhlIGFyZ3VtZW50IGlzIG5vdCB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG9wZXJhdG9y
LiBSZW1vdmVkIHVubmVlZGVkCisgICAgICAgIHNwZWNpYWwgY2FzZSB0byBoYW5kbGUgaW52YWxp
ZCBiZWNhdXNlIHRoZSBmdW5jdGlvbiB3b3JrcyBmaW5lIG9uIGludmFsaWQgd2l0aG91dCBpdC4K
KyAgICAgICAgVXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgZmFicy4KKyAgICAgICAgKFdURjo6b3Bl
cmF0b3I8PCk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5zdGVhZCBvZiByZWZlcmVuY2UuCisK
KyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmg6IFJlbW92ZWQgbWFueSB1bm5lZWRlZCBpbmNsdWRl
cy4gUmVtb3ZlZCBXVEZfRVhQT1JUX1BSSVZBVEUKKyAgICAgICAgZnJvbSB0aGUgY2xhc3MgYmVj
YXVzZSBpdCdzIG5vdCBjb21wYXRpYmxlIHdpdGggaW5saW5lZCBmdW5jdGlvbnMgYWNjb3JkaW5n
IHRvCisgICAgICAgIHRoZSBzdHlsZSBjaGVja2VyIHNjcmlwdCwgaW5zdGVhZCBleHBvcnRpbmcg
aW5kaXZpZHVhbCBmdW5jdGlvbnMuIFVzZSBPcHRpb25TZXQKKyAgICAgICAgZm9yIHRoZSBmbGFn
cy4gQ2hhbmdlZCBmdW5jdGlvbnMgdG8gdGFrZSBNZWRpYVRpbWUgYnkgdmFsdWUsIHNpbmNlIGl0
J3MganVzdCBhCisgICAgICAgIGZldyBzY2FsYXJzLCBubyBzaWduaWZpY2FudCBjb3N0IHRvIGNv
cHlpbmcgaXQsIGFuZCBwYXNzaW5nIGJ5IHZhbHVlIG1lYW5zIHRoZQorICAgICAgICB3aG9sZSB0
aGluZyBtaWdodCBlbmQgdXAgaW4gcmVnaXN0ZXJzIHNpbmNlIHdlIHdvbid0IG5lZWQgYSBwb2lu
dGVyIHRvIGl0IHRvCisgICAgICAgIHBhc3MgYXMgdGhlIHJlZmVyZW5jZS4gTWFkZSB0aGUgdmFy
aW91cyBzcGVjaWFsIHRpbWVzIHJldHVybiBjb25zdGV4cHIgdmFsdWVzLAorICAgICAgICB3aGlj
aCB3aWxsIGNvbXBpbGUgdGhlIGFwcHJvcHJpYXRlIGJpdCBwYXR0ZXJuIHdpdGhvdXQgYW55IGNv
bXB1dGF0aW9uIG5lZWRlZC4KKyAgICAgICAgQ2hhbmdlZCB0aGUgdGltZVZhbHVlIGFuZCB0aW1l
U2NhbGUgZnVuY3Rpb25zIHRvIHJldHVybiB0aGUgc2NhbGFycywgbm90IGEKKyAgICAgICAgY29u
c3QgcmVmZXJlbmNlLiBSZW5hbWVkIFJvdW5kaW5nRmxhZ3MgdG8gUm91bmRpbmdNb2RlIHNpbmNl
IGl0J3MgYSBidW5jaCBvZgorICAgICAgICBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgbW9k
ZXMsIG5vdCBhIHNldCBvZiBmbGFncyB3ZSBjYW4gY29tYmluZS4gUmVuYW1lZAorICAgICAgICB0
aGUgZGF0YSBtZW1iZXJzLCBzaW5jZSB0aGV5IGRvbuKAmXQgYWxsIG5lZWQgYSAidGltZSIgcHJl
Zml4IGluIGEgY2xhc3MgdGhhdCBpcworICAgICAgICBhbHJlYWR5IG5hbWVkIE1lZGlhVGltZS4g
VG9vayBzb21lIHVubmVlZGVkIGNvbnN0IG91dCBvZiBNZWRpYVRpbWVSYW5nZS4KKyAgICAgICAg
QWRkZWQgdGhlIEVudW1UcmFpdHMgZm9yIHRoZSBmbGFncyBzbyB0aGV5IGNhbiBiZSBlbmNvZGVk
IGFuZCBkZWNvZGVkLiBCZWZvcmUKKyAgICAgICAgd2Ugd2VyZSBlbmNvZGluZyB0aGUgc2V0IG9m
IGZsYWdzIGFzIGEgdWludDhfdCwgdGhpcyBpcyBiZXR0ZXIuCisKKyAgICAgICAgKiB3dGYvU2Vj
b25kcy5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6U2Vjb25kcyIgdG8gRm9yd2FyZC5oLgorCisg
ICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDogSW5jbHVkZSBGb3J3YXJkLmggaW5z
dGVhZCBvZiBXYWxsVGltZS5oIHNpbmNlCisgICAgICAgIHRoaXMgZmlsZSBvbmx5IGRlZmluZXMg
YSBmdW5jdGlvbiB3aXRoIGEgV2FsbFRpbWUgYXJndW1lbnQgYW5kIGRvZXNuJ3QgbmVlZAorICAg
ICAgICB0byBwdWxsIHRoZSBlbnRpcmUgY2xhc3MgZGVmaW5pdGlvbiBpbi4KKworICAgICAgICAq
IHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjpwb3J0QWxsb3dlZCk6IFVzZSBTb3J0ZWRBcnJh
eVNldC4KKworICAgICAgICAqIHd0Zi9XYWxsVGltZS5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6
V2FsbFRpbWUiIHRvIEZvcndhcmQuaC4KKworICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50Q29kZXIuaDogSW5jbHVkZSA8b3B0aW9uYWw+IGluc3RlYWQgb2YgRm9yd2FyZC5oLgor
ICAgICAgICBUaGUgZm9ybWVyIGlzIGFsbCB0aGF0J3MgbmVlZGVkLgorCisgICAgICAgICogd3Rm
L3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcDogQWRkZWQgYW4gaW5jbHVkZSBvZiBXYWxsVGltZS5o
IHNpbmNlCisgICAgICAgIFRocmVhZGluZ1ByaW1pdGl2ZXMuaCBubyBsb25nZXIgcHVsbHMgaXQg
aW4uCisKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmg6IEFkZGVkIGFuIGluY2x1ZGUg
b2YgPG9wdGlvbmFsPiBzaW5jZSBMb2NrLmggbm8KKyAgICAgICAgbG9uZ2VyIHB1bGxzIGl0IGlu
IGJ5IGluY2x1ZGluZyBTZWNvbmRzLmguCisKKyAgICAgICAgKiB3dGYvd2luL1RocmVhZGluZ1dp
bi5jcHA6IEFkZGVkIGluY2x1ZGUgb2YgV2FsbFRpbWUuaCBzaW5jZQorICAgICAgICBUaHJlYWRp
bmdQcmltaXRpdmVzLmggbm8gbG9uZ2VyIHB1bGxzIGl0IGluLgorCisKIDIwMjItMDEtMjQgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgQnVpbGQg
ZmFpbHVyZSB3aXRoIEdDQyAxMjogbm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gJ2Vu
ZChMQ2hhciBbN10pJwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQwNzJiMjc1MjI4ZjlkMTZiYmQ2OGU1NTEyMmFh
MWI2ODhkNjRhOWIuLmZmYjkxYTE0Mzk4ZmYwZDBiMjEwZWY1MjljNDlhOTE4M2IzMWEwMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMjItMDEtMjQgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFuZCBzaW1wbGlmeSBNZWRpYVRpbWUg
YW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0
aW9uRGF0YS5oOiBBZGRlZCBpbmNsdWRlIG9mCisgICAgICAgIDxvcHRpb25hbD4gc2luY2Ugbm90
aGluZyBwdWxscyB0aGVtIGluLgorCisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgc2luY2Ug
VGFiU2l6ZSBhbmQgTGVuZ3RoUG9pbnQgYXJlIGJvdGggbm93CisgICAgICAgIHN0cnVjdHVyZXMs
IGFuZCBoYXZlIHB1YmxpYyBkYXRhIG1lbWJlcnMgcmF0aGVyIHRoYW4gZ2V0dGVyIGZ1bmN0aW9u
cy4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0ZvckJsZW5kaW5nKTogIFVwZGF0ZWQgdG8gcmV0
dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAgICAgIGEgbmV2ZXItbnVsbCBwb2ludGVy
IGFuZCBmb3IgY2hhbmdlcyB0byBMZW5ndGhQb2ludC4KKworICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JQb3Np
dGlvbik6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAg
IChXZWJDb3JlOjp2YWx1ZUZvclBvc2l0aW9uT3JBdXRvKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgaXMg
YSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2
YWx1ZUZvclByb3BlcnR5SW5TdHlsZSk6IFVwZGF0ZWQKKyAgICAgICAgc2luY2UgVGFiU2l6ZSBp
cyBhIHN0cnVjdHVyZS4KKworICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cG9pbnRGb3JMZW5ndGhQb2ludCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3Ro
UG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQpOiBEaXR0by4KKworICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6U3R5bGU6OnRhYlNpemUgY29uc3QpOiBQYXNz
IFRhYlNpemUgYnkgdmFsdWUgaW5zdGVhZAorICAgICAgICBvZiBieSByZWZlcmVuY2UuCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNQb3RlbnRpYWxD
dXN0b21FbGVtZW50TmFtZUNoYXJhY3Rlcik6IFVzZSBTb3J0ZWRBcnJheVNldC4KKyAgICAgICAg
SXQgZG9lcyB0aGUgc29ydGVkIGNoZWNrIGF0IGNvbXBpbGUgdGltZSBpbnN0ZWFkIG9mIGF0IHJ1
bnRpbWUgaW4gZGVidWcKKyAgICAgICAgYnVpbGRzLCBhbmQgYWxzbyBzZWxlY3RzIGxpbmVhciBz
ZWFyY2ggaWYgaXQncyBmYXN0ZXIgdGhhbiBiaW5hcnkgc2VhcmNoLgorCisgICAgICAgICogcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaDogQWRkZWQgaW5jbHVkZSBvZiBXYWxsVGlt
ZS5oLCBubworICAgICAgICBsb25nZXIgcHVsbGVkIGluIGJ5IFRocmVhZGluZy5oLgorCisgICAg
ICAgICogcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5oOiBDaGFuZ2VkIExlbmd0aFBvaW50IHRvIGJlIGEg
dHJ1ZSBzdHJ1Y3R1cmUKKyAgICAgICAgd2l0aCBwdWJsaWMgZGF0YSBtZW1iZXJzLiBUaGUgb2xk
IG9uZSB3YXMsIHN0cmFuZ2VseSwgYSBzdHJ1Y3QsIGJ1dAorICAgICAgICB3aXRoIHByaXZhdGUg
ZGF0YS4gUmVtb3ZlZCB0aGUgY29uc3RydWN0b3JzLCBnZXR0ZXJzLCBhbmQgc2V0dGVycy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOiBBdm9pZCBhIHdhcm5pbmcgYWJvdXQgbWl4
ZWQgaW50ZWdlcgorICAgICAgICB0eXBlcyBieSB1c2luZyBhIGxvY2FsIHZhcmlhYmxlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjp0YWJXaWR0aCBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBp
bnN0ZWFkCisgICAgICAgIG9mIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RhYlNpemUuaDogUmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSB0aGUgZGF0YQor
ICAgICAgICBtZW1iZXJzIHNpbmNlIFRhYlNpemUgaXMgYSBzdHJ1Y3QuIFJlbW92ZWQgdGhlIGdl
dHRlcnMuIE1hcmtlZCB0aGUKKyAgICAgICAgb3BlcmF0b3IgYm9vbCBleHBsaWNpdCBzaW5jZSB3
ZSBkb24ndCB3YW50IHRvIGFjY2lkZW50YWxseSBwYXNzIHRoaXMKKyAgICAgICAgdG8gc29tZXRo
aW5nIHRha2luZyBhbiBpbnRlZ2VyIGFuZCBnZXR0aW5nIGEgMCBvciAxLiBBZGRlZCBhIFRleHRT
dHJlYW0KKyAgICAgICAgb3ZlcmxvYWQgc28gd2UgY2FuIHN0cmVhbSB0aGlzIHdpdGhvdXQgZXhw
bGljaXRseSBwaWNraW5nIGl0IGFwYXJ0IGF0CisgICAgICAgIGVhY2ggY2FsbCBzaXRlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJ1bjo6dGFiU2l6ZSBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBpbnN0ZWFkIG9m
CisgICAgICAgIGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnNldFRh
YlNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBMZXZlbCk6IFVzZSBTb3J0ZWRBcnJh
eVNldC4gU2FtZSByZWFzb25zIGFzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQ
Q29sb3JQcmltYXJpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUFRyYW5z
ZmVyQ2hhcmFjdGVyaXN0aWNzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBN
YXRyaXhDb2VmZmljaWVudHMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmg6Cisg
ICAgICAgIFJlbW92ZWQgdGhlIG1fIHByZWZpeGVzIGZyb20gSW5iYW5kQ2hhcHRlclRyYWNrUHJp
dmF0ZUFWRk9iakM6OkNoYXB0ZXJEYXRhCisgICAgICAgIGRhdGEgbWVtYmVycyBzaW5jZSBpdCdz
IGEgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvUXVldWVkVmlkZW9PdXRwdXQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091
dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKTogRml4ZWQgYQorICAgICAgICBi
dWcgd2hlcmUgdGhpcyB1c2VkIGN1cnJlbnRJbWFnZVRpbWUgaW5zdGVhZCBvZiBuZXh0SW1hZ2Ug
dGltZSwgZXhwb3NlZAorICAgICAgICBiZWNhdXNlIHRoZSBjaGFuZ2VzIHRvIE1lZGlhVGltZSBt
YWRlIGl0IGdpdmUgdXMgYW4gdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25z
dW1lRnJhbWVEYXRhKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBwYXJzZU9wdXNQcml2YXRlRGF0
YSBub3cgcmV0dXJucyBhbiBvcHRpb25hbCBpbnN0ZWFkIG9mCisgICAgICAgIHJldHVybmluZyBh
IGJvb2xlYW4gYW5kIHVzaW5nIGFuIG91dCBhcmd1bWVudC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmg6IEFkZGVkIGFuIGluY2x1
ZGUKKyAgICAgICAgb2YgU2Vjb25kcy5oIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIHB1bGxlZCBpbiBi
eSBvdGhlciBpbmNsdWRlcyBhbmQKKyAgICAgICAgdGhpcyBzdHJ1Y3R1cmUgaGFzIGEgU2Vjb25k
cyBkYXRhIG1lbWJlci4gQ2hhbmdlZCB0aGUgcGFyc2VPcHVzUHJpdmF0ZURhdGEKKyAgICAgICAg
ZnVuY3Rpb24gdG8gcmV0dXJuIGFuIG9wdGlvbmFsIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgYm9v
bCBhbmQgdXNpbmcKKyAgICAgICAgYW4gb3V0IGFyZ3VtZW50IGZvciB3aGF0IGlzIHBhcnNlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHVzUHJpdmF0ZURhdGEpOiBEaXR0by4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbTogUmVtb3ZlZCB0aGUg
Y29uc3RydWN0b3JzIGZyb20KKyAgICAgICAgT1NCdWlsZEluZm8gYW5kIG1hZGUgYWxsIGl0cyBv
cGVyYXRvcnMgY29uc3RleHByLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Jhc2VBdWRpb1NoYXJlZFVuaXQuaDogQWRkZWQgYW4gaW5jbHVkZQorICAgICAgICBvZiBTZWNv
bmRzLmgsIG5vIGxvbmdlciBwdWxsZWQgaW4gYnkgTG9jay5oLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW06IEFkZGVkIGFuIGluY2x1ZGUg
b2YKKyAgICAgICAgV2FsbFRpbWUuaCwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBUaHJlYWRpbmdQ
cmltaXRpdmVzLmguCisKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKTogUmV0dXJuIGFuIG9wdGlv
bmFsIGluc3RlYWQgb2YKKyAgICAgICAgYSB1bmlxdWVfcHRyLiBObyByZWFzb24gdG8gdXNlIGEg
aGVhcCBibG9jayBmb3IgdGhpcy4KKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5oOiBVcGRhdGVk
IHNpbmNlIEdyaWRBcmVhIGlzIG5vdyBhIHN0cnVjdCBhbmQgZm9yIHRoZSBhYm92ZS4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCBjb25zdCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNv
bnRlbnQKKyAgICAgICAgaXMgbm93IGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQgY29uc3QpOgorICAgICAg
ICBSZXR1cm4gYSBHcmlkQXJlYSBpbnN0ZWFkIG9mIGEgdW5pcXVlX3B0ci4gVGhlIHJldHVybiB2
YWx1ZSBpcyBuZXZlciBudWxsIGFuZAorICAgICAgICB0aGVyZSBpcyBubyBuZWVkIHRvIHB1dCBp
dCBvbiB0aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlU3BlY2lm
aWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOiBVcGRhdGVkIGZvcgorICAgICAgICB0aGUg
YWJvdmUgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFq
b3JBeGlzSXRlbU9uR3JpZCBjb25zdCk6IFVzZSBvcHRpb25hbCBpbnN0ZWFkCisgICAgICAgIG9m
IHVuaXF1ZV9wdHIgZm9yIGEgbG9jYWwgdmFyaWFibGUgd2l0aCB0aGUgZW1wdHkgZ3JpZCBhcmVh
IGluIGl0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6IFVwZGF0ZWQgc2luY2Ug
R3JpZEFyZWEgaXMgYSBzdHJ1Y3QgYW5kIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDogVXNlIGNvbnN0ZXhwci4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdCBjb25zdCk6IFVwZGF0ZWQgc2luY2UKKyAg
ICAgICAgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpkZWJ1
Z1RleHRTaGFkb3cgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5oOiBTdHlsZSB0d2Vha3MuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ291
bnRlckNvbnRlbnQuaDogVHVybmVkIHRoZSBDb3VudGVyQ29udGVudCBjbGFzcyBpbnRvIGEKKyAg
ICAgICAgc3RydWN0dXJlIHdpdGggcHVibGljIGRhdGEgbWVtYmVycy4KKworICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDogUmVtb3ZlZCB0aGUgRmlsbFNpemUgY29uc3RydWN0
b3JzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6IE1hZGUgR3JpZFNw
YW5UeXBlIGJlIGJhc2VkIG9uIGEgdWludDhfdC4KKyAgICAgICAgUmVvcmRlcmVkIHRoZSBkYXRh
IG1lbWJlcnMgb2YgR3JpZEFyZWEgdG8gYmUgcm93cyBmaXJzdCBhbmQgdGhlbiBjb2x1bW5zCisg
ICAgICAgIHRvIGZvbGxvdyB0aGUgb3JkZXIgZnJvbSB0aGUgY29uc3RydWN0b3IgYW5kIGFsc28g
dGhlIGNvbnZlbnRpb25hbAorICAgICAgICAieCBiZWZvcmUgeSIgb3JkZXJpbmcuIFRoaXMgd2ls
bCBhbHNvIGJlIGdvb2Qgc29tZSBkYXkgd2hlbiB3ZSBjYW4gdXNlIHRoZQorICAgICAgICBkZWZh
dWx0IDw9PiBmcm9tIEMrKzIwLCB3aGljaCBkZXBlbmRzIG9uIGRhdGEgbWVtYmVyIG9yZGVyaW5n
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaDogVHdlYWtlZCBjb21t
ZW50cyBhbmQgbW92ZWQgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgb2YgbV9mbGV4IGZyb20gdGhl
IGNvbnN0cnVjdG9yIHRvIHRoZSBkYXRhIG1lbWJlciBkZWZpbml0aW9uLgorCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOiBVcGRhdGVkIHNpbmNlCisg
ICAgICAgIExlbmd0aFBvaW50IGlzIGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmg6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgYW5kIExl
bmdodFBvaW50CisgICAgICAgIGFyZSBzdHJ1Y3R1cmVzLCBhbmQgdG8gcGFzcyBUYWJTaXplIGJ5
IHZhbHVlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6IFNpbXBsaWZpZWQgY29uc3Ry
dWN0b3Igc2luY2UgbV9sb2NhdGlvbgorICAgICAgICBkb2VzIG5vdCBoYXZlIHRvIGJlIHNwbGl0
IG91dCBpbnRvIHggYW5kIHkganVzdCB0byBjb3B5IGl0LgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TaGFkb3dEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dE
YXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjp4IGNvbnN0KTogVXBk
YXRlZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBub3cgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dEYXRhOjp5IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMu
CisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZSk6IFVwZGF0ZWQg
c2luY2UgVGFiU2l6ZQorICAgICAgICBubyBsb25nZXIgaGFzIGNvbnN0cnVjdG9ycy4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24pOiBV
cGRhdGVkIHNpbmNlIExlbmd0aFBvaW50CisgICAgICAgIG5vIGxvbmdlciBoYXMgY29uc3RydWN0
b3JzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQ
b3NpdGlvbk9yQXV0byk6IERpdHRvLgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckN1c3Rv
bS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9y
Qm94U2hhZG93VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQK
KyAgICAgICAgbm8gbG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisKIDIwMjItMDEtMjQgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBVcGRh
dGUgUGFzdGVib2FyZDo6cmVhZCB0byBwcmlvcml0aXplIG5hdGl2ZSByZXByZXNlbnRhdGlvbnMg
b3ZlciBUSUZGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAxMDNjOTQ5M2ZjODNkNGM3MzBhMDNhMzE0
MDA1NWU0Yzc3MDAyNDAzLi45M2I1ZWRiYzU4MzNlOWIwY2E4NDk2ZGE5MDFlMGM0NDBlZTI1ZTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMS0yMyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5
IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGlt
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChQQUw6OkNNVGltZUhhc0ZsYWdzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFBBTDo6dG9NZWRpYVRpbWUpOiBUYWtlIENNVGltZSBieSB2YWx1ZS4gQWxz
byBzaW1wbGlmaWVkIGxvZ2ljCisgICAgICAgIHRvIGp1c3QgY2hlY2sgb25lIGZsYWcgYXQgYSB0
aW1lLCB3aGljaCBtZWFucyB0aGUgQ01UaW1lSGFzRmxhZ3MKKyAgICAgICAgZnVuY3Rpb24gaXNu
J3QgbmVlZGVkIGFueSBtb3JlLiBBbHNvIG5vdyB1c2VzIE9wdGlvblNldCBiZWNhdXNlCisgICAg
ICAgIHRoYXQgaXMgaG93IE1lZGlhVGltZSB3b3Jrcy4KKyAgICAgICAgKFBBTDo6dG9DTVRpbWUp
OiBUYWtlIE1lZGlhVGltZSBieSB2YWx1ZS4KKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKIDIwMjItMDEt
MjQgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aW1wbGlmeSBhY2Nlc3NlcyB0byBTeXN0ZW1WZXJzaW9uLnBsaXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0MjZk
Yjc2M2NkZmEzM2JiMDVlM2Y2ZDRjNDdmMDcwNGVkYmU4NDcuLmRhZmFjMTc0M2Q3NGM4NjQ4YmIy
NDhjNWM5ZWRlMzUxMDZiZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEt
MjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFu
ZCBzaW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oOgorICAgICAgICBBZGRl
ZCBhbiBpbmNsdWRlIG9mIDxvcHRpb25hbD4sIG5vIGxvbmdlciBwdWxsZWQgaW4gYm90aCBvdGhl
ciBoZWFkZXJzLgorCiAyMDIyLTAxLTI0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZ3Jlc3Npb24gKHIyODY5MzYpOiBTZXNzaW9uU3RvcmFnZSBkYXRhIGlz
IG5vdCBjbGVhcmVkIHdoZW4gZGVsZXRpbmcgd2Vic2l0ZSBkYXRhIGJ5IG1vZGlmaWNhdGlvbiB0
aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1w
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3Bw
CmluZGV4IDVmNjYzYjJmZjVhNWUzY2UwOGNlNDEyOTViODBhOWI3MTA2Yzg5NzkuLjU0NmNhZDc2
ZWM4OGQ3MTA1NDFlNmEzZTU5ODVmYTY0OTVmYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3
YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggM2NlNzYxMjQyYzMyZWMxNjk0
YzY1YTc3ZTc0MGU5YzY2OTNjM2JiNC4uMzY0ODcyYTIwMWM2ZGJlZmZjOTdlNGM5MGM2NTYxYmY1
OWQwNzRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHVzaW5nIFdURjo6UmVmUHRy
OwogdXNpbmcgV1RGOjpSZXRhaW5QdHI7CiB1c2luZyBXVEY6OlNIQTE7CiB1c2luZyBXVEY6OlNj
b3BlZExhbWJkYTsKK3VzaW5nIFdURjo6U2Vjb25kczsKIHVzaW5nIFdURjo6U3RyaW5nOwogdXNp
bmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CkBAIC0xNjEs
NiArMTYyLDcgQEAgdXNpbmcgV1RGOjpUZXh0U3RyZWFtOwogdXNpbmcgV1RGOjpVUkw7CiB1c2lu
ZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5nIFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXYWxsVGlt
ZTsKIHVzaW5nIFdURjo6V2Vha1B0cjsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNp
bmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXgg
NDJlNGFhYzBjOWE0YWFlNTllNzFiNWU5MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQz
MTY5MGM2NDJlYmI3YmI3NmVhNzY5OTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9j
ay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0xvY2tBbGdvcml0aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZXR5QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKaW5kZXggMjI0ZTc3NDk1ZmI5MzgzNGY1OGY5Y2YzMjM0
MzdmMzkxNjkzOTQyZi4uYThiOWMzNDNjNzM4Y2MwNjdlMzAwZWUzMGFjMzFlNzZmNGViN2Q0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC03Miw5ICs3Miw5IEBAIHN0YXRpYyBpbnQ2NF90IHNpZ251
bShpbnQ2NF90IHZhbCkKIAogY29uc3QgdWludDMyX3QgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNj
YWxlID0gMTAwMDAwMDAwMDsKIAotTWVkaWFUaW1lOjpNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1l
JiByaHMpCitjb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91
YmxlIHZhbHVlKQorICAgIDogbV92YWx1ZUFzRG91YmxlKHZhbHVlKQogewotICAgICp0aGlzID0g
cmhzOwogfQogCiBNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxv
YXRUaW1lKQpAQCAtODQsNTcgKzg0LDUxIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhGbG9hdChmbG9hdCBmbG9hdFRpbWUpCiAgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAgICBNZWRpYVRpbWUgdmFsdWUo
MCwgRGVmYXVsdFRpbWVTY2FsZSwgVmFsaWQgfCBEb3VibGVWYWx1ZSk7Ci0gICAgdmFsdWUubV90
aW1lVmFsdWVBc0RvdWJsZSA9IGZsb2F0VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgZG91
YmxlIHZhbHVlID0gZmxvYXRUaW1lOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsK
IH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGlt
ZSwgdWludDMyX3QgdGltZVNjYWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZs
b2F0KGZsb2F0IHZhbHVlLCB1aW50MzJfdCB0aW1lU2NhbGUpCiB7Ci0gICAgaWYgKGZsb2F0VGlt
ZSAhPSBmbG9hdFRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1
cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQotICAgICAg
ICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgp
IDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZmxvYXRUaW1lID49IG1heFBsdXNP
bmU8aW50NjRfdD4pCisgICAgaWYgKHZhbHVlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAg
ICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICBpZiAodmFsdWUgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CiAgICAgaWYgKCF0aW1lU2NhbGUpCi0gICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUg
KGZsb2F0VGltZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIHdoaWxl
ICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICB0aW1l
U2NhbGUgLz0gMjsKLSAgICByZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZs
b2F0VGltZSAqIHRpbWVTY2FsZSksIHRpbWVTY2FsZSwgVmFsaWQpOworICAgIGludDY0X3Qgc2Nh
bGVkVmFsdWUgPSB2YWx1ZSAqIHRpbWVTY2FsZTsKKyAgICByZXR1cm4geyBzY2FsZWRWYWx1ZSwg
dGltZVNjYWxlIH07CiB9CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
ZG91YmxlIGRvdWJsZVRpbWUpCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAg
IGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0g
ICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25i
aXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0
ZVRpbWUoKTsKLQotICAgIE1lZGlhVGltZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxp
ZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZG91Ymxl
VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpKQorICAg
ICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
OiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUg
fTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91
YmxlVGltZSwgdWludDMyX3QgdGltZVNjYWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShkb3VibGUgdmFsdWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAo
ZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGlt
ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGlt
ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIGlmICh2YWx1ZSA+PSBtYXhQbHVzT25lPGlu
dDY0X3Q+KQogICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAo
ZG91YmxlVGltZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlm
ICh2YWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICBy
ZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0
KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgp
OwogCi0gICAgd2hpbGUgKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2
NF90PikKKyAgICB3aGlsZSAodmFsdWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90
PikKICAgICAgICAgdGltZVNjYWxlIC89IDI7Ci0gICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzdGQ6OnJvdW5kKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUpKSwgdGltZVNj
YWxlLCBWYWxpZCk7CisgICAgaW50NjRfdCBzY2FsZWRWYWx1ZSA9IHN0ZDo6cm91bmQodmFsdWUg
KiB0aW1lU2NhbGUpOworICAgIHJldHVybiB7IHNjYWxlZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0K
IAogZmxvYXQgTWVkaWFUaW1lOjp0b0Zsb2F0KCkgY29uc3QKQEAgLTE0Niw4ICsxNDAsOSBAQCBm
bG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKTsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVZh
bHVlQXNEb3VibGU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbWVWYWx1ZSkg
LyBtX3RpbWVTY2FsZTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVBc0RvdWJsZTsKKyAgICBmbG9h
dCB2YWx1ZSA9IG1fdmFsdWU7CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAogZG91
YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUoKSBjb25zdApAQCAtMTU5LDE5ICsxNTQsMTIgQEAgZG91
YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7CiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVW
YWx1ZUFzRG91YmxlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVl
KSAvIG1fdGltZVNjYWxlOworICAgICAgICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOworICAgIGRv
dWJsZSB2YWx1ZSA9IG1fdmFsdWU7CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAot
TWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocykKLXsK
LSAgICBtX3RpbWVWYWx1ZSA9IHJocy5tX3RpbWVWYWx1ZTsKLSAgICBtX3RpbWVTY2FsZSA9IHJo
cy5tX3RpbWVTY2FsZTsKLSAgICBtX3RpbWVGbGFncyA9IHJocy5tX3RpbWVGbGFnczsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhNZWRp
YVRpbWUgcmhzKSBjb25zdAogewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwpAQCAtMTkyLDcgKzE4MCw3IEBAIE1l
ZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QK
ICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91
YmxlVmFsdWUoKSAmJiByaHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlICsgcmhzLm1fdGltZVZh
bHVlQXNEb3VibGUpOworICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KG1fdmFsdWVBc0RvdWJsZSArIHJocy5tX3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0Rv
dWJsZVZhbHVlKCkgfHwgcmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUodG9Eb3VibGUoKSArIHJocy50b0RvdWJsZSgpKTsKQEAg
LTIwMSwxMyArMTg5LDEzIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQz
Ml90IGNvbW1vblRpbWVTY2FsZTsKLSAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUoYS5tX3Rp
bWVTY2FsZSwgYi5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2Nh
bGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZShhLm1f
c2NhbGUsIGIubV9zY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBN
YXhpbXVtVGltZVNjYWxlKQogICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNj
YWxlOwogICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1l
U2NhbGUoY29tbW9uVGltZVNjYWxlKTsKLSAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3RpbWVWYWx1
ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVBZGQo
YS5tX3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRp
bWVTY2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAg
ICByZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2
ZUluZmluaXRlVGltZSgpOwogICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAg
YS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUo
Y29tbW9uVGltZVNjYWxlKTsKQEAgLTIxNSw3ICsyMDMsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1l
OjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAgcmV0dXJuIGE7CiB9
CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShNZWRpYVRpbWUgcmhzKSBjb25z
dAogewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBpbnZhbGlkVGltZSgpOwpAQCAtMjM2LDcgKzIyNCw3IEBAIE1lZGlhVGltZSBNZWRpYVRp
bWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJu
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiBy
aHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlIC0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOwor
ICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJs
ZSAtIHJocy5tX3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwg
cmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUodG9Eb3VibGUoKSAtIHJocy50b0RvdWJsZSgpKTsKQEAgLTI0NSwxMyArMjMzLDEz
IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QKICAgICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVT
Y2FsZTsKLSAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV90aW1lU2NhbGUsIHJo
cy5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhp
bXVtVGltZVNjYWxlKQorICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3NjYWxl
LCByaHMubV9zY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhp
bXVtVGltZVNjYWxlKQogICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxl
OwogICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2Nh
bGUoY29tbW9uVGltZVNjYWxlKTsKLSAgICB3aGlsZSAoIXNhZmVTdWIoYS5tX3RpbWVWYWx1ZSwg
Yi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVTdWIoYS5t
X3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVT
Y2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRp
dmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICBy
ZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpOwogICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5z
ZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29t
bW9uVGltZVNjYWxlKTsKQEAgLTI3NSw5ICsyNjMsOSBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpv
cGVyYXRvci0oKSBjb25zdAogCiAgICAgTWVkaWFUaW1lIG5lZ2F0aXZlVGltZSA9ICp0aGlzOwog
ICAgIGlmIChuZWdhdGl2ZVRpbWUuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgbmVnYXRpdmVU
aW1lLm1fdGltZVZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNEb3Vi
bGU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5tX3ZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1l
Lm1fdmFsdWVBc0RvdWJsZTsKICAgICBlbHNlCi0gICAgICAgIG5lZ2F0aXZlVGltZS5tX3RpbWVW
YWx1ZSA9IC1uZWdhdGl2ZVRpbWUubV90aW1lVmFsdWU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5t
X3ZhbHVlID0gLW5lZ2F0aXZlVGltZS5tX3ZhbHVlOwogICAgIHJldHVybiBuZWdhdGl2ZVRpbWU7
CiB9CiAKQEAgLTMwNywxNCArMjk1LDE0IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9y
KihpbnQzMl90IHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYSA9ICp0aGlzOwogCiAgICAgaWYg
KGEuaGFzRG91YmxlVmFsdWUoKSkgewotICAgICAgICBhLm1fdGltZVZhbHVlQXNEb3VibGUgKj0g
cmhzOworICAgICAgICBhLm1fdmFsdWVBc0RvdWJsZSAqPSByaHM7CiAgICAgICAgIHJldHVybiBh
OwogICAgIH0KIAotICAgIHdoaWxlICghc2FmZU11bHRpcGx5KGEubV90aW1lVmFsdWUsIHJocywg
YS5tX3RpbWVWYWx1ZSkpIHsKLSAgICAgICAgaWYgKGEubV90aW1lU2NhbGUgPT0gMSkKLSAgICAg
ICAgICAgIHJldHVybiBzaWdudW0oYS5tX3RpbWVWYWx1ZSkgPT0gc2lnbnVtKHJocykgPyBwb3Np
dGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICAgICAgYS5z
ZXRUaW1lU2NhbGUoYS5tX3RpbWVTY2FsZSAvIDIpOworICAgIHdoaWxlICghc2FmZU11bHRpcGx5
KGEubV92YWx1ZSwgcmhzLCBhLm1fdmFsdWUpKSB7CisgICAgICAgIGlmIChhLm1fc2NhbGUgPT0g
MSkKKyAgICAgICAgICAgIHJldHVybiBzaWdudW0oYS5tX3ZhbHVlKSA9PSBzaWdudW0ocmhzKSA/
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworICAgICAg
ICBhLnNldFRpbWVTY2FsZShhLm1fc2NhbGUgLyAyKTsKICAgICB9CiAKICAgICByZXR1cm4gYTsK
QEAgLTMyMiwxNzYgKzMxMCwxMDkgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IqKGlu
dDMyX3QgcmhzKSBjb25zdAogCiBib29sIE1lZGlhVGltZTo6b3BlcmF0b3IhKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKG1fdGltZUZsYWdzID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAg
ICAgfHwgKG1fdGltZUZsYWdzID09IChWYWxpZCB8IERvdWJsZVZhbHVlKSAmJiAhbV90aW1lVmFs
dWVBc0RvdWJsZSkKLSAgICAgICAgfHwgaXNJbnZhbGlkKCk7CisgICAgcmV0dXJuIGlzSW52YWxp
ZCgpIHx8IChoYXNEb3VibGVWYWx1ZSgpID8gIW1fdmFsdWVBc0RvdWJsZSA6ICFtX3ZhbHVlKTsK
IH0KIAogTWVkaWFUaW1lOjpvcGVyYXRvciBib29sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gISht
X3RpbWVGbGFncyA9PSBWYWxpZCAmJiAhbV90aW1lVmFsdWUpCi0gICAgICAgICYmICEobV90aW1l
RmxhZ3MgPT0gKFZhbGlkIHwgRG91YmxlVmFsdWUpICYmICFtX3RpbWVWYWx1ZUFzRG91YmxlKQot
ICAgICAgICAmJiAhaXNJbnZhbGlkKCk7CisgICAgcmV0dXJuICEhKnRoaXM7CiB9CiAKLU1lZGlh
VGltZTo6Q29tcGFyaXNvbkZsYWdzIE1lZGlhVGltZTo6Y29tcGFyZShjb25zdCBNZWRpYVRpbWUm
IHJocykgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBNZWRpYVRpbWU6OkNvbXBh
cmlzb25GbGFncyBvcmRlcmluZyhUIGEsIFQgYikKIHsKLSAgICBhdXRvIGFuZEZsYWdzID0gbV90
aW1lRmxhZ3MgJiByaHMubV90aW1lRmxhZ3M7Ci0gICAgaWYgKGFuZEZsYWdzICYgKFBvc2l0aXZl
SW5maW5pdGUgfCBOZWdhdGl2ZUluZmluaXRlIHwgSW5kZWZpbml0ZSkpCi0gICAgICAgIHJldHVy
biBFcXVhbFRvOwotCi0gICAgYXV0byBvckZsYWdzID0gbV90aW1lRmxhZ3MgfCByaHMubV90aW1l
RmxhZ3M7Ci0gICAgaWYgKCEob3JGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIEVxdWFs
VG87Ci0KLSAgICBpZiAoIShhbmRGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIGlzSW52
YWxpZCgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgTmVn
YXRpdmVJbmZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmVJbmZpbml0ZSgpID8gTGVz
c1RoYW4gOiBHcmVhdGVyVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgUG9zaXRpdmVJbmZpbml0
ZSkKLSAgICAgICAgcmV0dXJuIGlzUG9zaXRpdmVJbmZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgSW5kZWZpbml0ZSkKLSAgICAgICAgcmV0dXJu
IGlzSW5kZWZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChhbmRG
bGFncyAmIERvdWJsZVZhbHVlKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZUFzRG91YmxlID09
IHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0K
LSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlQXNEb3VibGUgPCByaHMubV90aW1lVmFsdWVBc0Rv
dWJsZSA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47Ci0gICAgfQotCi0gICAgaWYgKG9yRmxhZ3Mg
JiBEb3VibGVWYWx1ZSkgewotICAgICAgICBkb3VibGUgYSA9IHRvRG91YmxlKCk7Ci0gICAgICAg
IGRvdWJsZSBiID0gcmhzLnRvRG91YmxlKCk7Ci0gICAgICAgIGlmIChhID4gYikKLSAgICAgICAg
ICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICAgICAgaWYgKGEgPCBiKQotICAgICAgICAgICAg
cmV0dXJuIExlc3NUaGFuOwotICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAgICB9Ci0KLSAgICBp
ZiAoKG1fdGltZVZhbHVlIDwgMCkgIT0gKHJocy5tX3RpbWVWYWx1ZSA8IDApKQotICAgICAgICBy
ZXR1cm4gbV90aW1lVmFsdWUgPCAwID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKKyAgICByZXR1
cm4gYSA8IGIgPyBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFnczo6TGVzc1RoYW4gOiBiIDwgYSA/
IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzOjpHcmVhdGVyVGhhbiA6IE1lZGlhVGltZTo6Q29t
cGFyaXNvbkZsYWdzOjpFcXVhbFRvOworfQogCi0gICAgaWYgKCFtX3RpbWVWYWx1ZSAmJiAhcmhz
Lm1fdGltZVZhbHVlKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsKK01lZGlhVGltZTo6Q29tcGFy
aXNvbkZsYWdzIG9yZGVyaW5nKE1lZGlhVGltZSBhLCBNZWRpYVRpbWUgYikKK3sKKyAgICBhdXRv
IG9yZGVyaW5nQ2xhc3MgPSBbXShNZWRpYVRpbWUgdGltZSkgeworICAgICAgICBpZiAodGltZS5p
c05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYg
KHRpbWUuaXNJbmRlZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYg
KHRpbWUuaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAg
ICAgaWYgKHRpbWUuaXNJbnZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfTsKKyAgICBhdXRvIGFDbGFzcyA9IG9yZGVyaW5nQ2xhc3MoYSk7Cisg
ICAgYXV0byBiQ2xhc3MgPSBvcmRlcmluZ0NsYXNzKGIpOworICAgIGlmIChhQ2xhc3MgfHwgYkNs
YXNzKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYUNsYXNzLCBiQ2xhc3MpOwogCi0gICAgaWYg
KG1fdGltZVNjYWxlID09IHJocy5tX3RpbWVTY2FsZSkgewotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPT0gcmhzLm1fdGltZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAg
ICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSA/IExlc3NUaGFuIDogR3Jl
YXRlclRoYW47Ci0gICAgfQorICAgIGlmIChhLmhhc0RvdWJsZVZhbHVlKCkgfHwgYi5oYXNEb3Vi
bGVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYS50b0RvdWJsZSgpLCBiLnRvRG91
YmxlKCkpOwogCi0gICAgaWYgKG1fdGltZVZhbHVlID09IHJocy5tX3RpbWVWYWx1ZSkKLSAgICAg
ICAgcmV0dXJuIG1fdGltZVNjYWxlIDwgcmhzLm1fdGltZVNjYWxlID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKKyAgICBpZiAoKGEubV92YWx1ZSA8IDApICE9IChiLm1fdmFsdWUgPCAwKSB8fCAh
YS5tX3ZhbHVlIHx8ICFiLm1fdmFsdWUgfHwgYS5tX3NjYWxlID09IGIubV9zY2FsZSkKKyAgICAg
ICAgcmV0dXJuIG9yZGVyaW5nKGEubV92YWx1ZSwgYi5tX3ZhbHVlKTsKIAotICAgIGlmIChtX3Rp
bWVWYWx1ZSA+PSAwKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1
ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBM
ZXNzVGhhbjsKKyAgICBpZiAoYS5tX3ZhbHVlID09IGIubV92YWx1ZSkKKyAgICAgICAgcmV0dXJu
IG9yZGVyaW5nKGIubV9zY2FsZSwgYS5tX3NjYWxlKTsKIAotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPiByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0g
ICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47CisgICAgaWYgKGEubV92YWx1ZSA+PSAwKSB7
CisgICAgICAgIGlmIChhLm1fdmFsdWUgPCBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlID4gYi5tX3Nj
YWxlKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6TGVzc1RoYW47CisgICAgICAgIGlm
IChhLm1fdmFsdWUgPiBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAg
ICAgICAgcmV0dXJuIE1lZGlhVGltZTo6R3JlYXRlclRoYW47CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKG1fdGltZVZhbHVlIDwgcmhzLm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlIDwgcmhz
Lm1fdGltZVNjYWxlKQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgICAgIGlm
IChtX3RpbWVWYWx1ZSA+IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3Rp
bWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICAgICAgaWYgKGEu
bV92YWx1ZSA8IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAg
ICByZXR1cm4gTWVkaWFUaW1lOjpMZXNzVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIu
bV92YWx1ZSAmJiBhLm1fc2NhbGUgPiBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVk
aWFUaW1lOjpHcmVhdGVyVGhhbjsKICAgICB9CiAKLSAgICBpbnQ2NF90IGxoc0ZhY3RvcjsKLSAg
ICBpbnQ2NF90IHJoc0ZhY3RvcjsKLSAgICBpZiAoc2FmZU11bHRpcGx5KG1fdGltZVZhbHVlLCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihyaHMubV90aW1lU2NhbGUpLCBsaHNGYWN0b3IpCi0gICAgICAg
ICYmIHNhZmVNdWx0aXBseShyaHMubV90aW1lVmFsdWUsIHN0YXRpY19jYXN0PGludDY0X3Q+KG1f
dGltZVNjYWxlKSwgcmhzRmFjdG9yKSkgewotICAgICAgICBpZiAobGhzRmFjdG9yID09IHJoc0Zh
Y3RvcikKLSAgICAgICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgICAgICByZXR1cm4gbGhzRmFj
dG9yIDwgcmhzRmFjdG9yID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9CisgICAgaW50
NjRfdCBhUHJvZHVjdDsKKyAgICBpbnQ2NF90IGJQcm9kdWN0OworICAgIGludDY0X3QgYVRpbWVT
Y2FsZSA9IGEubV9zY2FsZTsKKyAgICBpbnQ2NF90IGJUaW1lU2NhbGUgPSBiLm1fc2NhbGU7Cisg
ICAgaWYgKHNhZmVNdWx0aXBseShhLm1fdmFsdWUsIGFUaW1lU2NhbGUsIGFQcm9kdWN0KSAmJiBz
YWZlTXVsdGlwbHkoYi5tX3ZhbHVlLCBiVGltZVNjYWxlLCBiUHJvZHVjdCkpCisgICAgICAgIHJl
dHVybiBvcmRlcmluZyhhUHJvZHVjdCwgYlByb2R1Y3QpOworCisgICAgYXV0byBhUXVvdGllbnQg
PSBhLm1fdmFsdWUgLyBhLm1fc2NhbGU7CisgICAgYXV0byBiUXVvdGllbnQgPSBiLm1fdmFsdWUg
LyBiLm1fc2NhbGU7CisgICAgaWYgKGFRdW90aWVudCAhPSBiUXVvdGllbnQpCisgICAgICAgIHJl
dHVybiBvcmRlcmluZyhhUXVvdGllbnQsIGJRdW90aWVudCk7CiAKLSAgICBpbnQ2NF90IHJoc1do
b2xlID0gcmhzLm1fdGltZVZhbHVlIC8gcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhz
V2hvbGUgPSBtX3RpbWVWYWx1ZSAvIG1fdGltZVNjYWxlOwotICAgIGlmIChsaHNXaG9sZSA+IHJo
c1dob2xlKQotICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47Ci0gICAgaWYgKGxoc1dob2xlIDwg
cmhzV2hvbGUpCi0gICAgICAgIHJldHVybiBMZXNzVGhhbjsKLQotICAgIGludDY0X3QgcmhzUmVt
YWluID0gcmhzLm1fdGltZVZhbHVlICUgcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhz
UmVtYWluID0gbV90aW1lVmFsdWUgJSBtX3RpbWVTY2FsZTsKLSAgICBsaHNGYWN0b3IgPSBsaHNS
ZW1haW4gKiByaHMubV90aW1lU2NhbGU7Ci0gICAgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90
aW1lU2NhbGU7Ci0KLSAgICBpZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgcmV0
dXJuIEVxdWFsVG87Ci0gICAgcmV0dXJuIGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJU
aGFuIDogTGVzc1RoYW47CisgICAgYXV0byBhUmVtYWluZGVyID0gYS5tX3ZhbHVlICUgYS5tX3Nj
YWxlICogYS5tX3NjYWxlOworICAgIGF1dG8gYlJlbWFpbmRlciA9IGIubV92YWx1ZSAlIGIubV9z
Y2FsZSAqIGIubV9zY2FsZTsKKyAgICByZXR1cm4gb3JkZXJpbmcoYVJlbWFpbmRlciwgYlJlbWFp
bmRlcik7CiB9CiAKLWJvb2wgTWVkaWFUaW1lOjppc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiBh
LCBjb25zdCBNZWRpYVRpbWUmIGIpIGNvbnN0Citib29sIE1lZGlhVGltZTo6aXNCZXR3ZWVuKE1l
ZGlhVGltZSBhLCBNZWRpYVRpbWUgYikgY29uc3QKIHsKICAgICBpZiAoYSA+IGIpCiAgICAgICAg
IHJldHVybiAqdGhpcyA+IGIgJiYgKnRoaXMgPCBhOwogICAgIHJldHVybiAqdGhpcyA+IGEgJiYg
KnRoaXMgPCBiOwogfQogCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6emVyb1RpbWUoKQot
ewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgwLCAxLCBWYWxpZCk7Ci0gICAgcmV0
dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
Ci17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKC0xLCAxLCAwKTsKLSAgICByZXR1
cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgUG9zaXRp
dmVJbmZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFU
aW1lJiBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29u
c3QgTWVkaWFUaW1lIHRpbWUoLTEsIDEsIE5lZ2F0aXZlSW5maW5pdGUgfCBWYWxpZCk7Ci0gICAg
cmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbmRlZmluaXRl
VGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIEluZGVmaW5p
dGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6
OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykgY29u
c3QKK01lZGlhVGltZSBNZWRpYVRpbWU6OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwg
Um91bmRpbmdNb2RlIG1vZGUpIGNvbnN0CiB7CiAgICAgTWVkaWFUaW1lIHJlc3VsdCA9ICp0aGlz
OwotICAgIHJlc3VsdC5zZXRUaW1lU2NhbGUodGltZVNjYWxlLCBmbGFncyk7CisgICAgcmVzdWx0
LnNldFRpbWVTY2FsZSh0aW1lU2NhbGUsIG1vZGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGlu
Z0ZsYWdzIGZsYWdzKQordm9pZCBNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSh1aW50MzJfdCB0aW1l
U2NhbGUsIFJvdW5kaW5nTW9kZSBtb2RlKQogewogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKSB7
Ci0gICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVl
QXNEb3VibGUsIHRpbWVTY2FsZSk7CisgICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSwgdGltZVNjYWxlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmICghdGltZVNjYWxlKSB7Ci0gICAgICAgICp0aGlzID0gbV90aW1lVmFs
dWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
CisgICAgICAgICp0aGlzID0gbV92YWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDog
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh0aW1lU2NhbGUgPT0gbV90aW1lU2NhbGUpCisgICAgaWYgKHRpbWVTY2FsZSA9PSBtX3NjYWxl
KQogICAgICAgICByZXR1cm47CiAKICAgICB0aW1lU2NhbGUgPSBzdGQ6Om1pbihNYXhpbXVtVGlt
ZVNjYWxlLCB0aW1lU2NhbGUpOwogCi0gICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8
SW50MTI4PihtX3RpbWVWYWx1ZSkgKiB0aW1lU2NhbGU7Ci0gICAgaW50NjRfdCByZW1haW5kZXIg
PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1ZSAlIG1fdGltZVNjYWxlKTsKLSAgICBuZXdW
YWx1ZSA9IG5ld1ZhbHVlIC8gbV90aW1lU2NhbGU7CisgICAgSW50MTI4IG5ld1ZhbHVlID0gc3Rh
dGljX2Nhc3Q8SW50MTI4PihtX3ZhbHVlKSAqIHRpbWVTY2FsZTsKKyAgICBpbnQ2NF90IHJlbWFp
bmRlciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG5ld1ZhbHVlICUgbV9zY2FsZSk7CisgICAgbmV3
VmFsdWUgPSBuZXdWYWx1ZSAvIG1fc2NhbGU7CiAKICAgICBpZiAobmV3VmFsdWUgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkgewogICAgICAgICAqdGhpcyA9IG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CkBAIC01MDMsNDIgKzQyNCw0MiBAQCB2b2lkIE1lZGlhVGltZTo6c2V0
VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdGltZVZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4obmV3VmFsdWUpOwotICAgIHN0ZDo6c3dhcChtX3RpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAg
ICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG5ld1ZhbHVlKTsKKyAgICBhdXRvIG9s
ZFRpbWVTY2FsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9zY2FsZSwgdGltZVNjYWxlKTsKIAogICAgIGlm
ICghcmVtYWluZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVGbGFncyB8PSBIYXNC
ZWVuUm91bmRlZDsKLSAgICBzd2l0Y2ggKGZsYWdzKSB7Ci0gICAgY2FzZSBSb3VuZGluZ0ZsYWdz
OjpIYWxmQXdheUZyb21aZXJvOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGxh
YnMocmVtYWluZGVyKSkgKiAyID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVTY2FsZSkpIHsK
KyAgICBtX2ZsYWdzLmFkZChIYXNCZWVuUm91bmRlZCk7CisgICAgc3dpdGNoIChtb2RlKSB7Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm86CisgICAgICAgIGlmIChzdGQ6
OmFicyhyZW1haW5kZXIpICogMiA+PSBvbGRUaW1lU2NhbGUpIHsKICAgICAgICAgICAgIC8vIHJv
dW5kIHVwIChhd2F5IGZyb20gemVybykKICAgICAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQot
ICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlLS07CisgICAgICAgICAgICAgICAgLS1tX3ZhbHVl
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlKys7CisgICAg
ICAgICAgICAgICAgKyttX3ZhbHVlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAg
Y2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpU
b3dhcmRaZXJvOgogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6QXdh
eUZyb21aZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm86CiAgICAgICAg
IGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAgICAgICAg
ICAgIC0tbV92YWx1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsK
KyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5k
aW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CiAgICAgICAgIGlmIChyZW1haW5kZXIgPiAwKQotICAg
ICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eToKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToK
ICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZS0tOwor
ICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC01NDcs
NyArNDY4LDcgQEAgdm9pZCBNZWRpYVRpbWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKICAgICBvdXQucHJpbnQoInsiKTsKICAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpCi0gICAg
ICAgIG91dC5wcmludChtX3RpbWVWYWx1ZSwgIi8iLCBtX3RpbWVTY2FsZSwgIiA9ICIpOworICAg
ICAgICBvdXQucHJpbnQobV92YWx1ZSwgIi8iLCBtX3NjYWxlLCAiID0gIik7CiAgICAgb3V0LnBy
aW50KHRvRG91YmxlKCksICJ9Iik7CiB9CiAKQEAgLTU1Niw3ICs0NzcsNyBAQCBTdHJpbmcgTWVk
aWFUaW1lOjp0b1N0cmluZygpIGNvbnN0CiAgICAgY29uc3QgY2hhciogaW52YWxpZCA9IGlzSW52
YWxpZCgpID8gIiwgaW52YWxpZCIgOiAiIjsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwot
ICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV90aW1lVmFsdWUsICcvJywgbV90aW1lU2NhbGUs
ICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KCd7JywgbV92YWx1ZSwgJy8nLCBtX3NjYWxlLCAiID0gIiwgdG9Eb3VibGUoKSwgaW52YWxpZCwg
J30nKTsKIH0KIAogUmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBj
b25zdApAQCAtNTc5LDkgKzUwMCw5IEBAIFJlZjxKU09OOjpPYmplY3Q+IE1lZGlhVGltZTo6dG9K
U09OT2JqZWN0KCkgY29uc3QKICAgICBlbHNlCiAgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2
YWx1ZSJfcywgdG9Eb3VibGUoKSk7CiAKLSAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9y
Il9zLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSk7Ci0gICAgb2JqZWN0LT5zZXRJ
bnRlZ2VyKCJkZW5vbWluYXRvciJfcywgbV90aW1lU2NhbGUpOwotICAgIG9iamVjdC0+c2V0SW50
ZWdlcigiZmxhZ3MiX3MsIG1fdGltZUZsYWdzKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgibnVt
ZXJhdG9yIl9zLCBtX3ZhbHVlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9y
Il9zLCBtX3NjYWxlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX2ZsYWdz
LnRvUmF3KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTU5MSwzMyArNTEyLDI4IEBA
IFN0cmluZyBNZWRpYVRpbWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRvSlNP
Tk9iamVjdCgpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotTWVkaWFUaW1lIGFicyhjb25zdCBNZWRp
YVRpbWUmIHJocykKK01lZGlhVGltZSBhYnMoTWVkaWFUaW1lIHRpbWUpCiB7Ci0gICAgaWYgKHJo
cy5pc0ludmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsK
LSAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0aXZlSW5maW5p
dGUoKSkKKyAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAocmhzLmhhc0RvdWJs
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZmFi
cyhyaHMubV90aW1lVmFsdWVBc0RvdWJsZSkpOwotCi0gICAgTWVkaWFUaW1lIHZhbCA9IHJoczsK
LSAgICB2YWwubV90aW1lVmFsdWUgPSBzdGQ6OmFicyhyaHMubV90aW1lVmFsdWUpOwotICAgIHJl
dHVybiB2YWw7CisgICAgaWYgKHRpbWUuaGFzRG91YmxlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGQ6OmFicyh0aW1lLm1fdmFsdWVBc0RvdWJs
ZSkpOworICAgIE1lZGlhVGltZSByZXN1bHQgPSB0aW1lOworICAgIHJlc3VsdC5tX3ZhbHVlID0g
c3RkOjphYnMocmVzdWx0Lm1fdmFsdWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmlu
ZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KICAgICBvYmplY3QtPnNldE9iamVjdCgic3Rh
cnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKICAgICBvYmplY3QtPnNldE9iamVjdCgiZW5k
Il9zLCBlbmQudG9KU09OT2JqZWN0KCkpOwotCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3Ry
aW5nKCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCitUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgTWVkaWFUaW1lIHRpbWUpCiB7CiAgICAgcmV0dXJu
IHN0cmVhbSA8PCB0aW1lLnRvSlNPTlN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAppbmRleCA3MWFj
ZjMyOWViMzk4OTMzNTEyZmQ3ZjNmNThkNjBiZWNmZjIzYzUwLi40NDEyMzY0MDIwNjVlYjA0YWYz
YjMzMjA3N2E1OGJiMjMwMzgwNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRp
bWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApAQCAtMzAsMjEgKzMwLDE2IEBA
CiAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxjbWF0aD4K
LSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGludC5o
PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNz
IFByaW50U3RyZWFtOwogCi1jbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGZpbmFs
IHsKK2NsYXNzIE1lZGlhVGltZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZW51bSB7CisgICAgZW51bSBGbGFnIDogdWludDhfdCB7CiAgICAgICAg
IFZhbGlkID0gMSA8PCAwLAogICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwKICAgICAg
ICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwKQEAgLTUyLDY3ICs0Nyw2NSBAQCBwdWJsaWM6
CiAgICAgICAgIEluZGVmaW5pdGUgPSAxIDw8IDQsCiAgICAgICAgIERvdWJsZVZhbHVlID0gMSA8
PCA1LAogICAgIH07Ci0KLSAgICBjb25zdGV4cHIgTWVkaWFUaW1lKCk7Ci0gICAgY29uc3RleHBy
IE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgdWludDhfdCBmbGFncyA9
IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpOwotCi0gICAgc3Rh
dGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKTsKLSAgICBzdGF0
aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIHVpbnQzMl90IHRp
bWVTY2FsZSk7Ci0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBk
b3VibGVUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91Ymxl
IGRvdWJsZVRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0KLSAgICBmbG9hdCB0b0Zsb2F0KCkg
Y29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7Ci0KLSAgICBNZWRpYVRpbWUmIG9w
ZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocyk7Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvcis9
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9Ci0g
ICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAq
dGhpcyA9ICp0aGlzIC0gcmhzOyB9Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRp
YVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRp
bWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0OwotICAgIE1l
ZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29u
c3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBMZXNzVGhh
bjsgfQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJl
dHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVh
bFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7
IHJldHVybiBjb21wYXJlKHJocykgPT0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShj
b25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFs
VG87IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsg
cmV0dXJuIGNvbXBhcmUocmhzKSA8PSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdDsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVm
IGVudW0geworICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoKSA6IE1lZGlhVGltZSB7IGludDY0X3Qg
eyB9LCBEZWZhdWx0VGltZVNjYWxlIH0geyB9CisgICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2
NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgT3B0aW9uU2V0PEZsYWc+ID0geyBWYWxpZCB9KTsK
KworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9h
dChmbG9hdCB2YWx1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUg
Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlLCB1aW50MzJfdCBzY2FsZSk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFs
dWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhE
b3VibGUoZG91YmxlIHZhbHVlLCB1aW50MzJfdCBzY2FsZSk7CisKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgZmxvYXQgdG9GbG9hdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3Vi
bGUgdG9Eb3VibGUoKSBjb25zdDsKKworICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShNZWRpYVRp
bWUgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9CisgICAgTWVkaWFUaW1lJiBv
cGVyYXRvci09KE1lZGlhVGltZSByaHMpIHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKyhNZWRpYVRpbWUpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgb3BlcmF0b3ItKE1lZGlhVGlt
ZSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvci0oKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90
KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPChNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVy
biBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47IH0KKyAgICBib29sIG9wZXJhdG9yPihNZWRpYVRp
bWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KKyAg
ICBib29sIG9wZXJhdG9yIT0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShy
aHMpICE9IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPT0oTWVkaWFUaW1lIHJocykgY29u
c3QgeyByZXR1cm4gY29tcGFyZShyaHMpID09IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9y
Pj0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87
IH0KKyAgICBib29sIG9wZXJhdG9yPD0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29t
cGFyZShyaHMpIDw9IEVxdWFsVG87IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVy
YXRvciEoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0OworCisgICAgZW51bSBDb21wYXJpc29uRmxhZ3MgewogICAgICAgICBMZXNz
VGhhbiA9IC0xLAogICAgICAgICBFcXVhbFRvID0gMCwKICAgICAgICAgR3JlYXRlclRoYW4gPSAx
LAotICAgIH0gQ29tcGFyaXNvbkZsYWdzOworICAgIH07CisgICAgZnJpZW5kIFdURl9FWFBPUlRf
UFJJVkFURSBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFncyBvcmRlcmluZyhNZWRpYVRpbWUsIE1l
ZGlhVGltZSk7CisgICAgQ29tcGFyaXNvbkZsYWdzIGNvbXBhcmUoTWVkaWFUaW1lIG90aGVyKSBj
b25zdCB7IHJldHVybiBvcmRlcmluZygqdGhpcywgb3RoZXIpOyB9CiAKLSAgICBDb21wYXJpc29u
RmxhZ3MgY29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgYm9vbCBpc0Jl
dHdlZW4oY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNCZXR3ZWVuKE1lZGlhVGltZSwgTWVkaWFUaW1lKSBjb25z
dDsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFs
aWQ7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5z
KFZhbGlkKTsgfQogICAgIGJvb2wgaXNJbnZhbGlkKCkgY29uc3QgeyByZXR1cm4gIWlzVmFsaWQo
KTsgfQotICAgIGJvb2wgaGFzQmVlblJvdW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFn
cyAmIEhhc0JlZW5Sb3VuZGVkOyB9Ci0gICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25z
dCB7IHJldHVybiBtX3RpbWVGbGFncyAmIFBvc2l0aXZlSW5maW5pdGU7IH0KLSAgICBib29sIGlz
TmVnYXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgTmVnYXRpdmVJ
bmZpbml0ZTsgfQotICAgIGJvb2wgaXNJbmRlZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
RmxhZ3MgJiBJbmRlZmluaXRlOyB9CisgICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoSGFzQmVlblJvdW5kZWQpOyB9CisgICAgYm9vbCBpc1Bv
c2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFBvc2l0aXZl
SW5maW5pdGUpOyB9CisgICAgYm9vbCBpc05lZ2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzLmNvbnRhaW5zKE5lZ2F0aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBpc0luZGVm
aW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEluZGVmaW5pdGUpOyB9CiAg
ICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0IHsgcmV0dXJuICFpc0ludmFsaWQoKSAmJiAhaXNJbmRl
ZmluaXRlKCkgJiYgIWlzUG9zaXRpdmVJbmZpbml0ZSgpICYmICFpc05lZ2F0aXZlSW5maW5pdGUo
KTsgfQotICAgIGJvb2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFn
cyAmIERvdWJsZVZhbHVlOyB9Ci0gICAgdWludDhfdCB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVGbGFnczsgfQorICAgIGJvb2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzLmNvbnRhaW5zKERvdWJsZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxGbGFnPiB0
aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAKLSAgICBzdGF0aWMgY29uc3Qg
TWVkaWFUaW1lJiB6ZXJvVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGludmFs
aWRUaW1lKCk7Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVJbmZpbml0ZVRp
bWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgp
OwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGluZGVmaW5pdGVUaW1lKCk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgemVyb1RpbWUoKSB7IHJldHVybiB7IDAsIDEsIFZhbGlk
IH07IH0KKyAgICBzdGF0aWMgY29uc3RleHByIE1lZGlhVGltZSBpbnZhbGlkVGltZSgpIHsgcmV0
dXJuIHsgLTEsIDEsIHsgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVybiB7IDAsIDEsIHsgUG9zaXRpdmVJbmZpbml0ZSwg
VmFsaWQgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSB7IHJldHVybiB7IC0xLCAxLCB7IE5lZ2F0aXZlSW5maW5pdGUsIFZhbGlkIH0g
fTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFUaW1lIGluZGVmaW5pdGVUaW1lKCkgeyBy
ZXR1cm4geyAwLCAxLCB7IEluZGVmaW5pdGUsIFZhbGlkIH0gfTsgfQogCi0gICAgY29uc3QgaW50
NjRfdCYgdGltZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lVmFsdWU7IH0KLSAgICBjb25z
dCB1aW50MzJfdCYgdGltZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKyAg
ICBpbnQ2NF90IHRpbWVWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFoYXNEb3VibGVWYWx1ZSgpKTsg
cmV0dXJuIG1fdmFsdWU7IH0KKyAgICB1aW50MzJfdCB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVy
biBtX3NjYWxlOyB9CiAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAg
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25z
dDsKLSAgICBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoKSBjb25zdDsKIAogICAg
IC8vIE1ha2UgdGhlIGZvbGxvd2luZyBjYXN0cyBlcnJvcnM6CiAgICAgb3BlcmF0b3IgZG91Ymxl
KCkgY29uc3QgPSBkZWxldGU7CkBAIC0xMjAsOTMgKzExMyw5OSBAQCBwdWJsaWM6CiAgICAgb3Bl
cmF0b3IgaW50KCkgY29uc3QgPSBkZWxldGU7CiAgICAgTWVkaWFUaW1lKGludCkgPSBkZWxldGU7
CiAKLSAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoY29uc3QgTWVk
aWFUaW1lJiByaHMpOworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGFi
cyhNZWRpYVRpbWUpOwogCi0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IERlZmF1bHRUaW1lU2Nh
bGUgPSAxMDAwMDAwMDsKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgTWF4aW11bVRpbWVTY2Fs
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAw
MDAwMDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1heGlt
dW1UaW1lU2NhbGU7CiAKLSAgICBlbnVtIGNsYXNzIFJvdW5kaW5nRmxhZ3MgewotICAgICAgICBI
YWxmQXdheUZyb21aZXJvID0gMCwKKyAgICBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSB7CisgICAg
ICAgIEhhbGZBd2F5RnJvbVplcm8sCiAgICAgICAgIFRvd2FyZFplcm8sCiAgICAgICAgIEF3YXlG
cm9tWmVybywKICAgICAgICAgVG93YXJkUG9zaXRpdmVJbmZpbml0eSwKICAgICAgICAgVG93YXJk
TmVnYXRpdmVJbmZpbml0eSwKICAgICB9OwotCi0gICAgTWVkaWFUaW1lIHRvVGltZVNjYWxlKHVp
bnQzMl90LCBSb3VuZGluZ0ZsYWdzID0gUm91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50
MzJfdCBzY2FsZSwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJv
KSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBNZWRpYVRpbWUmKTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIHNldFRpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdGbGFncyA9IFJvdW5kaW5n
RmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pOworICAgIGVudW0gVXNlRG91YmxlRmxhZyB7IFVzZURv
dWJsZSB9OworICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91YmxlIHZh
bHVlKTsKKworICAgIHZvaWQgc2V0VGltZVNjYWxlKHVpbnQzMl90LCBSb3VuZGluZ01vZGUgPSBS
b3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pOwogCiAgICAgdW5pb24gewotICAgICAgICBp
bnQ2NF90IG1fdGltZVZhbHVlOwotICAgICAgICBkb3VibGUgbV90aW1lVmFsdWVBc0RvdWJsZTsK
KyAgICAgICAgaW50NjRfdCBtX3ZhbHVlOworICAgICAgICBkb3VibGUgbV92YWx1ZUFzRG91Ymxl
OwogICAgIH07Ci0gICAgdWludDMyX3QgbV90aW1lU2NhbGU7Ci0gICAgdWludDhfdCBtX3RpbWVG
bGFnczsKKyAgICB1aW50MzJfdCBtX3NjYWxlIHsgRGVmYXVsdFRpbWVTY2FsZSB9OworICAgIE9w
dGlvblNldDxGbGFnPiBtX2ZsYWdzIHsgVmFsaWQgfTsKIH07CiAKLWNvbnN0ZXhwciBNZWRpYVRp
bWU6Ok1lZGlhVGltZSgpCi0gICAgOiBtX3RpbWVWYWx1ZSgwKQotICAgICwgbV90aW1lU2NhbGUo
RGVmYXVsdFRpbWVTY2FsZSkKLSAgICAsIG1fdGltZUZsYWdzKFZhbGlkKQotewotfQotCi1jb25z
dGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgdWludDMyX3Qgc2NhbGUs
IHVpbnQ4X3QgZmxhZ3MpCi0gICAgOiBtX3RpbWVWYWx1ZSh2YWx1ZSkKLSAgICAsIG1fdGltZVNj
YWxlKHNjYWxlKQotICAgICwgbV90aW1lRmxhZ3MoZmxhZ3MpCi17Ci0gICAgaWYgKHNjYWxlIHx8
ICEoZmxhZ3MgJiBWYWxpZCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp0aGlzID0gdmFsdWUg
PCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci19
CitXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGFicyhNZWRpYVRpbWUpOwogCi1pbmxpbmUg
TWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90IGxocywgY29uc3QgTWVkaWFUaW1lJiByaHMpIHsg
cmV0dXJuIHJocy5vcGVyYXRvcioobGhzKTsgfQotCi1XVEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJu
IE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOwotCi1zdHJ1Y3QgV1RGX0VYUE9S
VF9QUklWQVRFIE1lZGlhVGltZVJhbmdlIHsKK3N0cnVjdCBNZWRpYVRpbWVSYW5nZSB7CiAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgU3RyaW5nIHRvSlNPTlN0cmlu
ZygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdG9KU09OU3RyaW5nKCkg
Y29uc3Q7CiAKLSAgICBjb25zdCBNZWRpYVRpbWUgc3RhcnQ7Ci0gICAgY29uc3QgTWVkaWFUaW1l
IGVuZDsKKyAgICBNZWRpYVRpbWUgc3RhcnQ7CisgICAgTWVkaWFUaW1lIGVuZDsKIH07CiAKLXRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIE1lZGlhVGltZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Citjb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1
ZSwgdWludDMyX3Qgc2NhbGUsIE9wdGlvblNldDxGbGFnPiBmbGFncykKKyAgICA6IG1fdmFsdWUo
dmFsdWUpCisgICAgLCBtX3NjYWxlKHNjYWxlKQorICAgICwgbV9mbGFncyhmbGFncykKK3sKKyAg
ICBpZiAoIShzY2FsZSB8fCAhKGZsYWdzICYgVmFsaWQpKSkKKyAgICAgICAgKnRoaXMgPSB2YWx1
ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE1lZGlhVGltZSBvcGVyYXRvciooY29u
c3QgVCYgYSwgTWVkaWFUaW1lIGIpCiB7Ci0gICAgZW5jb2RlciA8PCBtX3RpbWVWYWx1ZSA8PCBt
X3RpbWVTY2FsZSA8PCBtX3RpbWVGbGFnczsKKyAgICByZXR1cm4gYiAqIGE7CiB9CiAKLXRlbXBs
YXRlPGNsYXNzIERlY29kZXI+Ci1ib29sIE1lZGlhVGltZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIE1lZGlhVGltZSYgdGltZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgTWVk
aWFUaW1lOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZGVj
b2Rlci5kZWNvZGUodGltZS5tX3RpbWVWYWx1ZSkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUo
dGltZS5tX3RpbWVTY2FsZSkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3RpbWVG
bGFncyk7CisgICAgZW5jb2RlciA8PCBtX3ZhbHVlIDw8IG1fc2NhbGUgPDwgbV9mbGFnczsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gYm9vbCBNZWRpYVRpbWU6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBNZWRpYVRpbWUmIHRpbWUpCit7CisgICAgcmV0dXJuIGRlY29kZXIuZGVj
b2RlKHRpbWUubV92YWx1ZSkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3NjYWxl
KQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fZmxhZ3MpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IExvZ0FyZ3VtZW50OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dB
cmd1bWVudDxNZWRpYVRpbWU+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE1l
ZGlhVGltZSYgdGltZSkgeyByZXR1cm4gdGltZS50b0pTT05TdHJpbmcoKTsgfQorICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoTWVkaWFUaW1lIHRpbWUpIHsgcmV0dXJuIHRpbWUudG9KU09OU3Ry
aW5nKCk7IH0KIH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxNZWRpYVRpbWVSYW5n
ZT4gewogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTWVkaWFUaW1lUmFuZ2UmIHJh
bmdlKSB7IHJldHVybiByYW5nZS50b0pTT05TdHJpbmcoKTsgfQogfTsKIAogI2lmbmRlZiBOREVC
VUcKLVdURl9FWFBPUlRfUFJJVkFURSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBNZWRpYVRpbWUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBNZWRpYVRpbWUpOwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8TWVkaWFUaW1lOjpGbGFnPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnLAorICAgICAgICBNZWRpYVRpbWU6OkZs
YWc6OlZhbGlkLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6Okhhc0JlZW5Sb3VuZGVkLAorICAg
ICAgICBNZWRpYVRpbWU6OkZsYWc6OlBvc2l0aXZlSW5maW5pdGUsCisgICAgICAgIE1lZGlhVGlt
ZTo6RmxhZzo6TmVnYXRpdmVJbmZpbml0ZSwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpJbmRl
ZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6OkRvdWJsZVZhbHVlCisgICAgPjsKK307
CisKIH0KIAogdXNpbmcgV1RGOjpNZWRpYVRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TZWNvbmRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKaW5kZXggZDI4MmRiYmY3MTVi
ZTc0Mjc4OWVhMTBmMWNjYjI5YWQxNDUzNTY0Zi4uMWEyOTY0YzZkZWExNTVkOTM2ZTA0YjUyZTMz
MjNmMzJhZjE2YjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8
b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpA
QCAtMzcyLDQgKzM3MywzIEBAIGlubGluZSBib29sIGlzZmluaXRlKFdURjo6U2Vjb25kcyBzZWNv
bmRzKQogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OnNlY29uZHNf
bGl0ZXJhbHM7Ci11c2luZyBXVEY6OlNlY29uZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmgKaW5kZXggZmQ1NTliMjQyZGRmZmQ1ZThkOGYxMzNlYzQxM2JhM2FiNWI1MjY0Ny4uZTVh
M2NiNjM1ZWFmMWNhODg5ZGQyMjA5NzUyNWZjZDQyOGUzMTg1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaApAQCAtMzIsOSArMzIsOSBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1VSTC5jcHAKaW5kZXggNDQ4ZGRlZTIxNjBlZjE4Y2E1ZTA2NjEzOTBlNTk4ZDUzYmM1NGQy
YS4uMGM4ZjMzMTUwYjE1MzQ4NGZkNGMxYzhhZDAwMWE0OWZiYmZhYWY5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYv
U29ydGVkQXJyYXlNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC05MjIsNyAr
OTIzLDcgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKIAogICAgIC8vIFRoaXMg
YmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEg
aW1wbGVtZW50cy4KICAgICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9u
ZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMg
Y29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MTZfdCBibG9ja2VkUG9ydExpc3RbXSA9IHsKICAgICAgICAgMSwgICAgLy8gdGNwbXV4
CiAgICAgICAgIDcsICAgIC8vIGVjaG8KICAgICAgICAgOSwgICAgLy8gZGlzY2FyZApAQCAtMTAw
NiwxMCArMTAwNywxMCBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogICAgICAg
ICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KICAgICAgICAgMTAwODAsIC8vIGFt
YW5kYQogICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBibG9ja2Vk
UG9ydFNldCB7IGJsb2NrZWRQb3J0TGlzdCB9OwogCiAgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90
IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxsb3cgaXQuCi0gICAgQVNTRVJUKHN0ZDo6aXNf
c29ydGVkKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRM
aXN0KSkpOwotICAgIGlmICghc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4oYmxvY2tlZFBv
cnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSwgcG9ydC52YWx1ZSgpKSkKKyAgICBp
ZiAoIWJsb2NrZWRQb3J0U2V0LmNvbnRhaW5zKCpwb3J0KSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBBbGxvdyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxh
IGRvZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oIGIvU291cmNlL1dU
Ri93dGYvV2FsbFRpbWUuaAppbmRleCA1NDM4Y2MwMWI2MWFhOWY2YzdjNDU2ZTVmODkxZTQ0NjZm
NzMzYmJjLi4xY2U4ZDM3NTU2MWQyOWI1ODk2MWJlM2ZjZjE5Mzk0MDRmZTg4OTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dhbGxU
aW1lLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Ns
b2NrVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0dlbmVy
aWNUaW1lTWl4aW4uaD4KICNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAKQEAgLTk5LDUgKzEwMCwz
IEBAIGlubGluZSBib29sIGlzZmluaXRlKFdURjo6V2FsbFRpbWUgdGltZSkKIH0KIAogfSAvLyBu
YW1lc3BhY2Ugc3RkCi0KLXVzaW5nIFdURjo6V2FsbFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oCmluZGV4IGFmYzMzZjM4ZDQyMzM1YmQ5ZTYxMjZh
NGE3OGE1MDcxMGRiMjYwOGEuLjIwN2ZhMDQ0NjlmYjk0ODM4NzY4ZTlmNDFhMmEzMjg5N2Y1Y2Iw
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rl
ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCBkOTI0NDkwZDFiNTdmM2VlMDZlZTVlYWQ4
YTJkM2MxMWMyMGNiNWQxLi42ZDM0MGU0NmYyYjI4NDQwYjExM2VkNzcwOWVhMzcxMDFhODJmODVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmdQcmltaXRpdmVzLmg+CiAjaW5jbHVkZSA8d3RmL1dURkNvbmZpZy5oPgorI2luY2x1ZGUgPHd0
Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JkTG9jay5oPgogCiAjaWYgT1MoTElOVVgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaCBiL1NvdXJjZS9X
VEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCmluZGV4IDhiNDBjMTRjODQyM2ZkNGVjYmY2MzUwNmQ2
MGJmZjFjMGZkODU2MGYuLjlmMTg2ZjYzNTQ4NDFhNzU1YWJjMGQ4OWVjMzNmMGI1ZmUwZWY4NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBPUyhV
TklYKQogCisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVk
ZSA8dHVwbGU+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRp
bmdXaW4uY3BwCmluZGV4IGRjMjQ4OWZmODllOGY5Zjg5MTRiYzhlM2ZjMjk2NmY0ZGVlZTU3NGUu
LmE5ZjU5NTI0YWZjNWNiYzczNmZiYzRlODE2ZGNkYmVkYzdmOTBhZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dp
bi9UaHJlYWRpbmdXaW4uY3BwCkBAIC05NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCmluZGV4IDkyNjIyMTcwYzhhYWQ2
OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmUyMmNjOTQ2NmE3YWEzN2QxNzU3ODc1NWVlM2Q2
NGJkMGYyYWZlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAj
aW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRp
bWVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDA2NTk4NDA2ODllNGFiYjUyMjBlNWJkZDgwNTIzZDc0
MDJmNGFjZTIuLjg4OGJlZjMyMzY4MmVhMjI5OTdlZjY0MDlhMGQ3MWQ4NTVmZmZlYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmNwcApAQCAtMzIsMzcgKzMyLDI4IEBACiAKIG5hbWVzcGFjZSBQ
QUwgewogCi1zdGF0aWMgYm9vbCBDTVRpbWVIYXNGbGFncyhjb25zdCBDTVRpbWUmIGNtVGltZSwg
dWludDMyX3QgZmxhZ3MpCitNZWRpYVRpbWUgdG9NZWRpYVRpbWUoQ01UaW1lIHRpbWUpCiB7Ci0g
ICAgcmV0dXJuIChjbVRpbWUuZmxhZ3MgJiBmbGFncykgPT0gZmxhZ3M7CisgICAgT3B0aW9uU2V0
PE1lZGlhVGltZTo6RmxhZz4gZmxhZ3M7CisgICAgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxh
Z3NfVmFsaWQpIHsKKyAgICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6VmFsaWQpOworICAgICAg
ICBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19Qb3NpdGl2ZUluZmluaXR5KQorICAgICAg
ICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6UG9zaXRpdmVJbmZpbml0ZSk7CisgICAgICAgIGVs
c2UgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3NfTmVnYXRpdmVJbmZpbml0eSkKKyAgICAg
ICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGUpOworICAgICAgICBl
bHNlIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX0luZGVmaW5pdGUpCisgICAgICAgICAg
ICBmbGFncy5hZGQoTWVkaWFUaW1lOjpJbmRlZmluaXRlKTsKKyAgICB9CisgICAgcmV0dXJuIE1l
ZGlhVGltZSh0aW1lLnZhbHVlLCB0aW1lLnRpbWVzY2FsZSwgZmxhZ3MpOwogfQogCi1NZWRpYVRp
bWUgdG9NZWRpYVRpbWUoY29uc3QgQ01UaW1lJiBjbVRpbWUpCi17Ci0gICAgdWludDMyX3QgZmxh
Z3MgPSAwOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxp
ZCkpCi0gICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6VmFsaWQ7Ci0gICAgaWYgKENNVGltZUhh
c0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX0hhc0JlZW5S
b3VuZGVkKSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpIYXNCZWVuUm91bmRlZDsKLSAg
ICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQgfCBrQ01UaW1l
RmxhZ3NfUG9zaXRpdmVJbmZpbml0eSkpCi0gICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6UG9z
aXRpdmVJbmZpbml0ZTsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxh
Z3NfVmFsaWQgfCBrQ01UaW1lRmxhZ3NfTmVnYXRpdmVJbmZpbml0eSkpCi0gICAgICAgIGZsYWdz
IHw9IE1lZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZTsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3Mo
Y21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQgfCBrQ01UaW1lRmxhZ3NfSW5kZWZpbml0ZSkpCi0g
ICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6SW5kZWZpbml0ZTsKLQotICAgIHJldHVybiBNZWRp
YVRpbWUoY21UaW1lLnZhbHVlLCBjbVRpbWUudGltZXNjYWxlLCBmbGFncyk7Ci19Ci0KLUNNVGlt
ZSB0b0NNVGltZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkKK0NNVGltZSB0b0NNVGltZShN
ZWRpYVRpbWUgbWVkaWFUaW1lKQogewogICAgIENNVGltZSB0aW1lOwotCiAgICAgaWYgKG1lZGlh
VGltZS5oYXNEb3VibGVWYWx1ZSgpKQogICAgICAgICB0aW1lID0gQ01UaW1lTWFrZVdpdGhTZWNv
bmRzKG1lZGlhVGltZS50b0RvdWJsZSgpLCBtZWRpYVRpbWUudGltZVNjYWxlKCkpOwogICAgIGVs
c2UKICAgICAgICAgdGltZSA9IENNVGltZU1ha2UobWVkaWFUaW1lLnRpbWVWYWx1ZSgpLCBtZWRp
YVRpbWUudGltZVNjYWxlKCkpOwotCiAgICAgaWYgKG1lZGlhVGltZS5pc1ZhbGlkKCkpCiAgICAg
ICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX1ZhbGlkOwogICAgIGlmIChtZWRpYVRpbWUu
aGFzQmVlblJvdW5kZWQoKSkKQEAgLTcxLDcgKzYyLDYgQEAgQ01UaW1lIHRvQ01UaW1lKGNvbnN0
IE1lZGlhVGltZSYgbWVkaWFUaW1lKQogICAgICAgICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVGbGFn
c19Qb3NpdGl2ZUluZmluaXR5OwogICAgIGlmIChtZWRpYVRpbWUuaXNOZWdhdGl2ZUluZmluaXRl
KCkpCiAgICAgICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHk7
Ci0KICAgICByZXR1cm4gdGltZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaAppbmRleCBiM2Ri
ZTE3YWE5YmMxMjUxZGNlMmVjOGFkZWU3Y2I4NDk0NzliZjcwLi5hMmJjZGFlOWY4ZTk5ZDBmMDRl
M2YzYzNlZDIwYTNmMzZhMjkwNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaApAQCAtMzIsOCAr
MzIsOCBAQAogCiBuYW1lc3BhY2UgUEFMIHsKIAotUEFMX0VYUE9SVCBDTVRpbWUgdG9DTVRpbWUo
Y29uc3QgTWVkaWFUaW1lJik7Ci1QQUxfRVhQT1JUIE1lZGlhVGltZSB0b01lZGlhVGltZShjb25z
dCBDTVRpbWUmKTsKK1BBTF9FWFBPUlQgQ01UaW1lIHRvQ01UaW1lKE1lZGlhVGltZSk7CitQQUxf
RVhQT1JUIE1lZGlhVGltZSB0b01lZGlhVGltZShDTVRpbWUpOwogCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDBlMWFk
NzI0NWZlMTZlMWU5NmUzZGExY2I1ODRiOWE0YTZkODlmM2IuLjg0NDZkYjk4NTUxZTBjNTM4MmE5
NmZmODQ3MWZiYjY3MjMxMGM0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTE5LDEwICsxMTksMTAgQEAgc3RhdGljIGlu
bGluZSBHYXBMZW5ndGggYmxlbmRGdW5jKGNvbnN0IEdhcExlbmd0aCYgZnJvbSwgY29uc3QgR2Fw
TGVuZ3RoJiB0bywgY28KICAgICByZXR1cm4gYmxlbmQoZnJvbS5sZW5ndGgoKSwgdG8ubGVuZ3Ro
KCksIGNvbnRleHQsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBUYWJTaXplIGJsZW5kRnVuYyhjb25zdCBUYWJTaXplJiBmcm9tLCBjb25zdCBUYWJTaXplJiB0
bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCitzdGF0aWMgaW5s
aW5lIFRhYlNpemUgYmxlbmRGdW5jKFRhYlNpemUgZnJvbSwgVGFiU2l6ZSB0bywgY29uc3QgQ1NT
UHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBibGVuZGVkVmFs
dWUgPSBibGVuZChmcm9tLnZhbHVlKCksIHRvLnZhbHVlKCksIGNvbnRleHQpOwotICAgIHJldHVy
biB7IGJsZW5kZWRWYWx1ZSA8IDAgPyAwIDogYmxlbmRlZFZhbHVlLCBmcm9tLmlzU3BhY2VzKCkg
PyBTcGFjZVZhbHVlVHlwZSA6IExlbmd0aFZhbHVlVHlwZSB9OworICAgIGF1dG8gYmxlbmRlZFZh
bHVlID0gYmxlbmQoZnJvbS52YWx1ZSwgdG8udmFsdWUsIGNvbnRleHQpOworICAgIHJldHVybiB7
IGJsZW5kZWRWYWx1ZSA8IDAgPyAwIDogYmxlbmRlZFZhbHVlLCBmcm9tLmlzU3BhY2VzID8gVGFi
U2l6ZTo6U3BhY2VzIDogVGFiU2l6ZTo6TGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgTGVu
Z3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6
ZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQpAQCAtOTc4
LDEwICs5NzgsOSBAQCBwcml2YXRlOgogICAgIC8vIGl0J3Mgb25seSBwb3NzaWJsZSBpZiB0aGV5
J3JlIGJvdGggbm90IGF1dG8uCiAgICAgYm9vbCBjYW5JbnRlcnBvbGF0ZShjb25zdCBSZW5kZXJT
dHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBDb21wb3NpdGVPcGVyYXRpb24pIGNv
bnN0IGZpbmFsCiAgICAgewotICAgICAgICBib29sIGZyb21Jc0F1dG8gPSB2YWx1ZShmcm9tKS54
KCkuaXNBdXRvKCkgJiYgdmFsdWUoZnJvbSkueSgpLmlzQXV0bygpOwotICAgICAgICBib29sIHRv
SXNBdXRvID0gdmFsdWUodG8pLngoKS5pc0F1dG8oKSAmJiB2YWx1ZSh0bykueSgpLmlzQXV0bygp
OwotCi0gICAgICAgIHJldHVybiAoIWZyb21Jc0F1dG8gJiYgIXRvSXNBdXRvKTsgCisgICAgICAg
IGJvb2wgZnJvbUlzQXV0byA9IHZhbHVlKGZyb20pLnguaXNBdXRvKCkgJiYgdmFsdWUoZnJvbSku
eS5pc0F1dG8oKTsKKyAgICAgICAgYm9vbCB0b0lzQXV0byA9IHZhbHVlKHRvKS54LmlzQXV0bygp
ICYmIHZhbHVlKHRvKS55LmlzQXV0bygpOworICAgICAgICByZXR1cm4gIWZyb21Jc0F1dG8gJiYg
IXRvSXNBdXRvOwogICAgIH0KIH07CiAKQEAgLTEyOTIsMjAgKzEyOTEsMjAgQEAgc3RhdGljIGlu
bGluZSBzaXplX3Qgc2hhZG93TGlzdExlbmd0aChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cpCiAg
ICAgcmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgaW5saW5lIGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdywgY29uc3QgU2hhZG93
RGF0YSogb3RoZXJTaGFkb3cpCitzdGF0aWMgaW5saW5lIGNvbnN0IFNoYWRvd0RhdGEmIHNoYWRv
d0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdywgY29uc3QgU2hhZG93RGF0
YSogb3RoZXJTaGFkb3cpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+
IGRlZmF1bHRTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCks
IExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBM
ZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCBmYWxzZSwgQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dE
YXRhPiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBl
OjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIGZh
bHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFNoYWRvd0RhdGE+IGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0
aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgo
TGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHls
ZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEo
TGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0U2hhZG93RGF0
YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhl
ZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhl
ZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFNoYWRv
d0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFj
ayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRXZWJLaXRC
b3hTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0
aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0
aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFy
ZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0
SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhl
ZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCB0cnVlLCBDb2xv
cjo6dHJhbnNwYXJlbnRCbGFjayk7CiAKICAgICBpZiAoc3JjU2hhZG93KQotICAgICAgICByZXR1
cm4gc3JjU2hhZG93OworICAgICAgICByZXR1cm4gKnNyY1NoYWRvdzsKIAogICAgIGlmIChvdGhl
clNoYWRvdy0+c3R5bGUoKSA9PSBTaGFkb3dTdHlsZTo6SW5zZXQpCi0gICAgICAgIHJldHVybiBv
dGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0SW5zZXRXZWJLaXRCb3hT
aGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRJbnNldFNoYWRvd0RhdGEuZ2V0KCk7CisgICAgICAg
IHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/IGRlZmF1bHRJbnNldFdl
YktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhLmdldCgpOwog
Ci0gICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRlZmF1bHRX
ZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRTaGFkb3dEYXRhLmdldCgpOworICAg
IHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/IGRlZmF1bHRXZWJLaXRC
b3hTaGFkb3dEYXRhLmdldCgpIDogZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CiB9CiAKIGNsYXNz
IFByb3BlcnR5V3JhcHBlclNoYWRvdyBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdy
YXBwZXJCYXNlIHsKQEAgLTE0MjgsMTEgKzE0MjcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgU2hh
ZG93RGF0YSogbGFzdFNoYWRvdyA9IG51bGxwdHI7CiAKICAgICAgICAgd2hpbGUgKHNoYWRvd0Eg
fHwgc2hhZG93QikgewotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93ID0g
c2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwgc2hhZG93Qik7Ci0gICAgICAgICAgICBjb25zdCBT
aGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dCLCBzaGFkb3dB
KTsKKyAgICAgICAgICAgIGF1dG8mIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRv
d0EsIHNoYWRvd0IpOworICAgICAgICAgICAgYXV0byYgZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxl
bmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKHNyY1NoYWRvdywgZHN0U2hhZG93
LCBjb250ZXh0KTsKLSAgICAgICAgICAgIFNoYWRvd0RhdGEqIGJsZW5kZWRTaGFkb3dQdHIgPSBi
bGVuZGVkU2hhZG93LmdldCgpOworICAgICAgICAgICAgYXV0byBibGVuZGVkU2hhZG93ID0gYmxl
bmRGdW5jKCZzcmNTaGFkb3csICZkc3RTaGFkb3csIGNvbnRleHQpOworICAgICAgICAgICAgYXV0
byBibGVuZGVkU2hhZG93UHRyID0gYmxlbmRlZFNoYWRvdy5nZXQoKTsKIAogICAgICAgICAgICAg
aWYgKCFsYXN0U2hhZG93KQogICAgICAgICAgICAgICAgIG5ld1NoYWRvd0RhdGEgPSBXVEZNb3Zl
KGJsZW5kZWRTaGFkb3cpOwpAQCAtMTQ0MSw4ICsxNDQwLDggQEAgcHJpdmF0ZToKIAogICAgICAg
ICAgICAgbGFzdFNoYWRvdyA9IGJsZW5kZWRTaGFkb3dQdHI7CiAKLSAgICAgICAgICAgIHNoYWRv
d0EgPSBzaGFkb3dBID8gc2hhZG93QS0+bmV4dCgpIDogMDsKLSAgICAgICAgICAgIHNoYWRvd0Ig
PSBzaGFkb3dCID8gc2hhZG93Qi0+bmV4dCgpIDogMDsKKyAgICAgICAgICAgIHNoYWRvd0EgPSBz
aGFkb3dBID8gc2hhZG93QS0+bmV4dCgpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIHNoYWRvd0Ig
PSBzaGFkb3dCID8gc2hhZG93Qi0+bmV4dCgpIDogbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBuZXdTaGFkb3dEYXRhOwpAQCAtMTQ3MSwxMyArMTQ3MCwxNCBAQCBwcml2YXRl
OgogCiAgICAgICAgIGludCBtYXhMZW5ndGggPSBzdGQ6Om1heChmcm9tTGVuZ3RoLCB0b0xlbmd0
aCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4TGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGZyb21TaGFkb3cgPSBpIDwgZnJvbUxlbmd0aCA/IGZy
b21TaGFkb3dzW2ldIDogMDsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHRvU2hhZG93
ID0gaSA8IHRvTGVuZ3RoID8gdG9TaGFkb3dzW2ldIDogMDsKKyAgICAgICAgICAgIGF1dG8gZnJv
bVNoYWRvdyA9IGkgPCBmcm9tTGVuZ3RoID8gZnJvbVNoYWRvd3NbaV0gOiBudWxscHRyOworICAg
ICAgICAgICAgYXV0byB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRvU2hhZG93c1tpXSA6IG51
bGxwdHI7CisKKyAgICAgICAgICAgIGF1dG8mIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5n
KGZyb21TaGFkb3csIHRvU2hhZG93KTsKKyAgICAgICAgICAgIGF1dG8mIGRzdFNoYWRvdyA9IHNo
YWRvd0ZvckJsZW5kaW5nKHRvU2hhZG93LCBmcm9tU2hhZG93KTsKIAotICAgICAgICAgICAgY29u
c3QgU2hhZG93RGF0YSogc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoZnJvbVNoYWRvdywg
dG9TaGFkb3cpOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0U2hhZG93ID0gc2hh
ZG93Rm9yQmxlbmRpbmcodG9TaGFkb3csIGZyb21TaGFkb3cpOworICAgICAgICAgICAgYXV0byBi
bGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKCZzcmNTaGFkb3csICZkc3RTaGFkb3csIGNvbnRleHQp
OwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRv
dyA9IGJsZW5kRnVuYyhzcmNTaGFkb3csIGRzdFNoYWRvdywgY29udGV4dCk7CiAgICAgICAgICAg
ICAvLyBJbnNlcnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0IHRvIHByZXNlcnZlIHRoZSBvcmRl
ci4KICAgICAgICAgICAgIGJsZW5kZWRTaGFkb3ctPnNldE5leHQoV1RGTW92ZShuZXdTaGFkb3dE
YXRhKSk7CiAgICAgICAgICAgICBuZXdTaGFkb3dEYXRhID0gV1RGTW92ZShibGVuZGVkU2hhZG93
KTsKQEAgLTIzNDgsMTggKzIzNDgsMTggQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1jbGFzcyBU
YWJTaXplUHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxjb25z
dCBUYWJTaXplJj4geworY2xhc3MgVGFiU2l6ZVByb3BlcnR5V3JhcHBlciBmaW5hbCA6IHB1Ymxp
YyBQcm9wZXJ0eVdyYXBwZXI8VGFiU2l6ZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFRhYlNpemVQcm9wZXJ0eVdyYXBwZXIoKQotICAgICAgICA6IFByb3Bl
cnR5V3JhcHBlcjxjb25zdCBUYWJTaXplJj4oQ1NTUHJvcGVydHlUYWJTaXplLCAmUmVuZGVyU3R5
bGU6OnRhYlNpemUsICZSZW5kZXJTdHlsZTo6c2V0VGFiU2l6ZSkKKyAgICAgICAgOiBQcm9wZXJ0
eVdyYXBwZXI8VGFiU2l6ZT4oQ1NTUHJvcGVydHlUYWJTaXplLCAmUmVuZGVyU3R5bGU6OnRhYlNp
emUsICZSZW5kZXJTdHlsZTo6c2V0VGFiU2l6ZSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIGJvb2wgY2FuSW50ZXJwb2xhdGUoY29uc3QgUmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJl
bmRlclN0eWxlJiB0bywgQ29tcG9zaXRlT3BlcmF0aW9uKSBjb25zdCBmaW5hbAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHZhbHVlKGZyb20pLmlzU3BhY2VzKCkgPT0gdmFsdWUodG8pLmlzU3BhY2Vz
KCk7CisgICAgICAgIHJldHVybiB2YWx1ZShmcm9tKS5pc1NwYWNlcyA9PSB2YWx1ZSh0bykuaXNT
cGFjZXM7CiAgICAgfQogCiAgICAgdm9pZCBibGVuZChSZW5kZXJTdHlsZSYgZGVzdGluYXRpb24s
IGNvbnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHlsZSYgdG8sIGNvbnN0IENT
U1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdCBmaW5hbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA2
Nzg0Nzc4NDdjYzYzZjAzYzMwMzJhOGQyYTI0YWE5MjU2NmQ5NzJkLi44NmNkNjg0NTczZDYxNzM5
NDIyNWUwMTRjYzU0YWFhYzlmYzVhYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTUzMywxNCArMTUzMywxNCBAQCBz
dGF0aWMgRWxlbWVudCogc3R5bGVFbGVtZW50Rm9yTm9kZShOb2RlKiBub2RlKQogc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gdmFsdWVGb3JQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnN0IExlbmd0aFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueCgpLCBzdHlsZSkpOwotICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLnkoKSwgc3R5bGUp
KTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3Np
dGlvbi54LCBzdHlsZSkpOworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHBvc2l0aW9uLnksIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIHN0
YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yUG9zaXRpb25PckF1dG8oY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBjb25zdCBMZW5ndGhQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgaWYgKHBvc2l0
aW9uLngoKS5pc0F1dG8oKSAmJiBwb3NpdGlvbi55KCkuaXNBdXRvKCkpCisgICAgaWYgKHBvc2l0
aW9uLnguaXNBdXRvKCkgJiYgcG9zaXRpb24ueS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0
byk7CiAKICAgICByZXR1cm4gdmFsdWVGb3JQb3NpdGlvbihzdHlsZSwgcG9zaXRpb24pOwpAQCAt
MTkzNiw3ICsxOTM2LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1Zh
bHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9
IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnRE
YXRhLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRl
bnREYXRhKSkKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5p
ZGVudGlmaWVyKCksIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CisgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PENvdW50ZXJD
b250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRpZmllciwgQ1NTVW5pdFR5
cGU6OkNTU19DT1VOVEVSX05BTUUpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8SW1hZ2VDb250ZW50
RGF0YT4oKmNvbnRlbnREYXRhKSkKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChkb3duY2FzdDxJ
bWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmltYWdlKCkuY3NzVmFsdWUoKSk7CiAgICAg
ICAgIGVsc2UgaWYgKGlzPFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKSkKQEAgLTMwMjks
NyArMzAyOSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFs
dWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKICAg
ICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLmNvbHVtbldpZHRo
KCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYlNpemU6Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRhYlNpemUoKS53aWR0aElu
UGl4ZWxzKDEuMCksIHN0eWxlLnRhYlNpemUoKS5pc1NwYWNlcygpID8gQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVIgOiBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhlbHMoMS4wKSwg
c3R5bGUudGFiU2l6ZSgpLmlzU3BhY2VzID8gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgOiBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjogewogICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdDsKICAgICAgICAgICAgIGF1dG8qIGN1
cnNvcnMgPSBzdHlsZS5jdXJzb3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TGVuZ3RoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMu
Y3BwCmluZGV4IGY1YmM4Y2E5NmI5MGQ2MDU1MGRjYTU4MjFlODM4NTQ5YTRiMmY3ZWYuLmQ2YTEy
Y2JiOTY5MjI3Mzg1NDJmNGUwOTc0NzNlN2I4ZWM3ZGU2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgTGF5b3V0U2l6ZSBzaXplRm9y
TGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGgsIGNvbnN0IExheW91dFNpemUmIG1h
eGltdW0KIAogTGF5b3V0UG9pbnQgcG9pbnRGb3JMZW5ndGhQb2ludChjb25zdCBMZW5ndGhQb2lu
dCYgbGVuZ3RoUG9pbnQsIGNvbnN0IExheW91dFNpemUmIG1heGltdW1WYWx1ZSkKIHsKLSAgICBy
ZXR1cm4geyB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54KCksIG1heGltdW1WYWx1ZS53aWR0
aCgpKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSgpLCBtYXhpbXVtVmFsdWUuaGVpZ2h0
KCkpIH07CisgICAgcmV0dXJuIHsgdmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueCwgbWF4aW11
bVZhbHVlLndpZHRoKCkpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55LCBtYXhpbXVtVmFs
dWUuaGVpZ2h0KCkpIH07CiB9CiAKIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNv
bnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKQEAg
LTEzMyw3ICsxMzMsNyBAQCBGbG9hdFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBM
ZW5ndGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBGbG9hdFNpemUmCiAKIEZsb2F0UG9pbnQgZmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KGNvbnN0IExlbmd0aFBvaW50JiBsZW5ndGhQb2ludCwgY29u
c3QgRmxvYXRTaXplJiBib3hTaXplKQogewotICAgIHJldHVybiB7IGZsb2F0VmFsdWVGb3JMZW5n
dGgobGVuZ3RoUG9pbnQueCgpLCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KGxlbmd0aFBvaW50LnkoKSwgYm94U2l6ZS5oZWlnaHQoKSkgfTsKKyAgICByZXR1cm4geyBmbG9h
dFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngsIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFs
dWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSwgYm94U2l6ZS5oZWlnaHQoKSkgfTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheVN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3R5
bGUuaAppbmRleCA3ZWUzMGEzZTEzMTI5NGEzZDU1YWNlZjRjYWEwYTcxYzNkMTBhZDU4Li42ZmVj
Mzc0NTBhYzBhYmZlZDBjYTgwNzUzOTBlZTI2OTg0Y2FjMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
aXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHByZXNlcnZlTmV3bGluZSgpIGNvbnN0OwogICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNw
YWNlKCkgY29uc3Q7CiAKLSAgICBjb25zdCBUYWJTaXplJiB0YWJTaXplKCkgY29uc3QgeyByZXR1
cm4gbV90YWJTaXplOyB9CisgICAgVGFiU2l6ZSB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV90
YWJTaXplOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cEJhY2tncm91bmQoY29uc3QgUmVu
ZGVyU3R5bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDViOGIzOTBiNDEwMDMyZGM4
Nzk3ZDhlYmRiNzNkYjFmNTBlNzJhNWEuLmFjOTIyOTMxYTg2OGUwZGQxNzllYWZjMTE0ODFlYWRk
MjBlM2IwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjc4LDYgKzI3OCw3IEBACiAj
aW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgpAQCAtMTIyMywzMiArMTIy
NCwzOCBAQCBzdHJ1Y3QgVW5pY29kZUNvZGVQb2ludFJhbmdlIHsKICAgICBVQ2hhcjMyIG1heGlt
dW07CiB9OwogCi0jaWYgQVNTRVJUX0VOQUJMRUQKLQotc3RhdGljIGlubGluZSBib29sIG9wZXJh
dG9yPChjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UmIGEsIGNvbnN0IFVuaWNvZGVDb2RlUG9p
bnRSYW5nZSYgYikKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoVW5pY29kZUNvZGVQ
b2ludFJhbmdlIGEsIFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBiKQogewotICAgIEFTU0VSVChhLm1p
bmltdW0gPD0gYS5tYXhpbXVtKTsKLSAgICBBU1NFUlQoYi5taW5pbXVtIDw9IGIubWF4aW11bSk7
CisgICAgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKGEubWluaW11bSA8PSBhLm1heGlt
dW0pOworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChiLm1pbmltdW0gPD0gYi5t
YXhpbXVtKTsKICAgICByZXR1cm4gYS5tYXhpbXVtIDwgYi5taW5pbXVtOwogfQogCi0jZW5kaWYg
Ly8gQVNTRVJUX0VOQUJMRUQKLQotc3RhdGljIGlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBV
bmljb2RlQ29kZVBvaW50UmFuZ2UmIGEsIFVDaGFyMzIgYikKK3N0YXRpYyBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcjwoVW5pY29kZUNvZGVQb2ludFJhbmdlIGEsIFVDaGFyMzIgYikKIHsKLSAgICBB
U1NFUlQoYS5taW5pbXVtIDw9IGEubWF4aW11bSk7CisgICAgQVNTRVJUX1VOREVSX0NPTlNURVhQ
Ul9DT05URVhUKGEubWluaW11bSA8PSBhLm1heGltdW0pOwogICAgIHJldHVybiBhLm1heGltdW0g
PCBiOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8KFVDaGFyMzIgYSwgY29uc3Qg
VW5pY29kZUNvZGVQb2ludFJhbmdlJiBiKQorc3RhdGljIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PChVQ2hhcjMyIGEsIFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBiKQogewotICAgIEFTU0VSVChiLm1p
bmltdW0gPD0gYi5tYXhpbXVtKTsKKyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQo
Yi5taW5pbXVtIDw9IGIubWF4aW11bSk7CiAgICAgcmV0dXJuIGEgPCBiLm1pbmltdW07CiB9CiAK
K3N0YXRpYyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBh
LCBVQ2hhcjMyIGIpCit7CisgICAgcmV0dXJuICEoYSA8IGIpICYmICEoYiA8IGEpOworfQorCitz
dGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShVQ2hhcjMyIGEsIFVuaWNvZGVDb2RlUG9p
bnRSYW5nZSBiKQoreworICAgIHJldHVybiBiID09IGE7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1BvdGVudGlhbEN1c3RvbUVsZW1lbnROYW1lQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVy
KQogewotICAgIHN0YXRpYyBjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgcmFuZ2VzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmljb2RlQ29kZVBvaW50UmFuZ2UgcmFuZ2VzW10gPSB7
CiAgICAgICAgIHsgJy0nLCAnLicgfSwKICAgICAgICAgeyAnMCcsICc5JyB9LAogICAgICAgICB7
ICdfJywgJ18nIH0sCkBAIC0xMjY3LDkgKzEyNzQsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNQ
b3RlbnRpYWxDdXN0b21FbGVtZW50TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKICAg
ICAgICAgeyAweEZERjAsIDB4RkZGRCB9LAogICAgICAgICB7IDB4MTAwMDAsIDB4RUZGRkYgfSwK
ICAgICB9OwotCi0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4ocmFuZ2VzKSwg
c3RkOjplbmQocmFuZ2VzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpi
ZWdpbihyYW5nZXMpLCBzdGQ6OmVuZChyYW5nZXMpLCBjaGFyYWN0ZXIpOworICAgIHN0YXRpYyBj
b25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgcmFuZ2VzIH07CisgICAgcmV0dXJuIHNldC5j
b250YWlucyhjaGFyYWN0ZXIpOwogfQogCiBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0
dXMgRG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVudE5hbWUoY29uc3QgQXRvbVN0cmluZyYg
bG9jYWxOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9p
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCmluZGV4IDlh
MzY3NTk2ZGQwMjY5ZDU5ZjYzZWIwZjZjODllMzRkZDgyMTgyZDkuLmI1ZjRjYzA1ZTI3NjdhMThj
NjczZDA4ZTM0Y2QyMjA2OWM1ODE5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aFBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQ
b2ludC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBMZW5ndGhQb2ludCYgc2l6ZSkK
IHsKLSAgICByZXR1cm4gdHMgPDwgc2l6ZS54KCkgPDwgIiAiIDw8IHNpemUueSgpOworICAgIHJl
dHVybiB0cyA8PCBzaXplLnggPDwgIiAiIDw8IHNpemUueTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKaW5kZXggODEyMDViYjEz
ZGRhNTAzM2IyYzkwZmJlYTA1MzBjMmY1NmY5OTM2Yi4uOThiZGNjYTA3MWY4YzIxOWIyY2JhOTBi
Y2JjMDFmMzI1YjYyMjIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oCkBA
IC0zMiw0NCArMzIsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEJsZW5kaW5nQ29u
dGV4dDsKIAogc3RydWN0IExlbmd0aFBvaW50IHsKLXB1YmxpYzoKLSAgICBMZW5ndGhQb2ludCgp
Ci0gICAgewotICAgIH0KLSAgICAKLSAgICBMZW5ndGhQb2ludChMZW5ndGggeCwgTGVuZ3RoIHkp
Ci0gICAgICAgIDogbV94KFdURk1vdmUoeCkpCi0gICAgICAgICwgbV95KFdURk1vdmUoeSkpCi0g
ICAgewotICAgIH0KKyAgICBMZW5ndGggeDsKKyAgICBMZW5ndGggeTsKIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBMZW5ndGhQb2ludCYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTGVuZ3RoUG9pbnQmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
eCA9PSBvLm1feCAmJiBtX3kgPT0gby5tX3k7CisgICAgICAgIHJldHVybiB4ID09IG90aGVyLngg
JiYgeSA9PSBvdGhlci55OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5n
dGhQb2ludCYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQm
IG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAg
ICAgIHJldHVybiB4ICE9IG90aGVyLnggfHwgeSAhPSBvdGhlci55OwogICAgIH0KIAotICAgIHZv
aWQgc2V0WChMZW5ndGggeCkgeyBtX3ggPSBXVEZNb3ZlKHgpOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
JiB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9Ci0KLSAgICB2b2lkIHNldFkoTGVuZ3RoIHkpIHsg
bV95ID0gV1RGTW92ZSh5KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJu
IG1feTsgfQotCi0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiBtX3guaXNaZXJvKCkg
JiYgbV95LmlzWmVybygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IGl0IHdvdWxkIGJl
IG5pY2UgdG8gcGFjayB0aGUgdHdvIExlbmd0aHMgdG9nZXRoZXIgYmV0dGVyIHNvbWVob3cgKHRv
IGF2b2lkIHBhZGRpbmcgYmV0d2VlbiB0aGVtKS4KLSAgICBMZW5ndGggbV94OwotICAgIExlbmd0
aCBtX3k7CisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiB4LmlzWmVybygpICYmIHku
aXNaZXJvKCk7IH0KIH07CiAKIGlubGluZSBMZW5ndGhQb2ludCBibGVuZChjb25zdCBMZW5ndGhQ
b2ludCYgZnJvbSwgY29uc3QgTGVuZ3RoUG9pbnQmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIExlbmd0aFBvaW50KGJsZW5kKGZyb20ueCgpLCB0by54
KCksIGNvbnRleHQpLCBibGVuZChmcm9tLnkoKSwgdG8ueSgpLCBjb250ZXh0KSk7CisgICAgcmV0
dXJuIHsgYmxlbmQoZnJvbS54LCB0by54LCBjb250ZXh0KSwgYmxlbmQoZnJvbS55LCB0by55LCBj
b250ZXh0KSB9OwogfQogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgY29uc3QgTGVuZ3RoUG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IGJhYmU5NjY4NGU3YzE1Y2I5Y2E5NjkzYmEzNTYw
YThhYTNkMmM5NmMuLmU5ZjI2OGMxMGRhYjQyODQ2Nzk4YTg2ZDlmOTkyZGM1YTVmYjgyZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAt
MTY1LDggKzE2NSw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcygpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlGb250KCkuZm9udE1ldHJpY3MoKTsgfQogICAg
IGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLnNwYWNlV2lk
dGgoKSArIG1fbGV0dGVyU3BhY2luZzsgfQotICAgIGZsb2F0IHRhYldpZHRoKGNvbnN0IEZvbnQm
LCBjb25zdCBUYWJTaXplJiwgZmxvYXQpIGNvbnN0OwotICAgIGZsb2F0IHRhYldpZHRoKGNvbnN0
IFRhYlNpemUmIHRhYlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdCB7IHJldHVybiB0YWJXaWR0
aChwcmltYXJ5Rm9udCgpLCB0YWJTaXplLCBwb3NpdGlvbik7IH0KKyAgICBmbG9hdCB0YWJXaWR0
aChjb25zdCBGb250JiwgVGFiU2l6ZSwgZmxvYXQpIGNvbnN0OworICAgIGZsb2F0IHRhYldpZHRo
KFRhYlNpemUgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0IHsgcmV0dXJuIHRhYldpZHRo
KHByaW1hcnlGb250KCksIHRhYlNpemUsIHBvc2l0aW9uKTsgfQogICAgIGJvb2wgaGFzVmFsaWRB
dmVyYWdlQ2hhcldpZHRoKCkgY29uc3Q7CiAgICAgYm9vbCBmYXN0QXZlcmFnZUNoYXJXaWR0aElm
QXZhaWxhYmxlKGZsb2F0ICZ3aWR0aCkgY29uc3Q7IC8vIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNz
CiAKQEAgLTM3MCw3ICszNzAsNyBAQCBpbmxpbmUgRm9udFNlbGVjdG9yKiBGb250Q2FzY2FkZTo6
Zm9udFNlbGVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9mb250cyA/IG1fZm9udHMtPmZvbnRT
ZWxlY3RvcigpIDogbnVsbHB0cjsKIH0KIAotaW5saW5lIGZsb2F0IEZvbnRDYXNjYWRlOjp0YWJX
aWR0aChjb25zdCBGb250JiBmb250LCBjb25zdCBUYWJTaXplJiB0YWJTaXplLCBmbG9hdCBwb3Np
dGlvbikgY29uc3QKK2lubGluZSBmbG9hdCBGb250Q2FzY2FkZTo6dGFiV2lkdGgoY29uc3QgRm9u
dCYgZm9udCwgVGFiU2l6ZSB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBm
bG9hdCBiYXNlVGFiV2lkdGggPSB0YWJTaXplLndpZHRoSW5QaXhlbHMoZm9udC5zcGFjZVdpZHRo
KCkpOwogICAgIGlmICghYmFzZVRhYldpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4IDc1NDNmNDc1YTI3YTY1MTU5MDZjYzIy
ZWIzZjYwYTkxNDA5MjkwYmEuLjA3NTYxOTRjZjJmNWU4YjlmYmIyN2ExMGNlNzhhMmUxOGMyM2Nm
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5jcHAKQEAgLTc0LDcgKzc0LDggQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxC
dWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWEKICAgICBhdXRv
IGJ1ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOwogICAgIGlmIChi
dWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICBpZiAoYnVmZmVyU2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
KQorICAgIHVpbnQzMl90IG1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
OworICAgIGlmIChidWZmZXJTaXplID4gbWF4KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKGJ1ZmZlclNpemUpOwogICAgIGlmICghcGl4ZWxBcnJheSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaAppbmRleCAzNGE3MDgxMDYyOGFjOTUyN2Y0
ZjVjZjA0NzVkODM1YjdjYzJlYWNmLi4zNjY0MmY4YThjNDc0MDdlYWNlOTM1MTIyODM2MGYyYzg3
ZDdjMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJT
aXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCkBA
IC0yOSw0OSArMjksMzkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKLWVudW0gVGFiU2l6ZVZhbHVlVHlw
ZSB7Ci0gICAgTGVuZ3RoVmFsdWVUeXBlLAotICAgIFNwYWNlVmFsdWVUeXBlLAotfTsKK25hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFRhYlNpemUgewotICAgIFRhYlNpemUoZmxvYXQgbnVt
T3JMZW5ndGgsIFRhYlNpemVWYWx1ZVR5cGUgaXNTcGFjZXMgPSBTcGFjZVZhbHVlVHlwZSkKLSAg
ICAgICAgOiBtX3ZhbHVlKG51bU9yTGVuZ3RoKQotICAgICAgICAsIG1faXNTcGFjZXMoaXNTcGFj
ZXMpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNTcGFjZXMoKSBjb25zdAorICAgIGVudW0g
VmFsdWVUeXBlIHsgTGVuZ3RoLCBTcGFjZXMgfTsKKyAgICBUYWJTaXplKGZsb2F0IG51bU9yTGVu
Z3RoLCBWYWx1ZVR5cGUgdHlwZSA9IFNwYWNlcykKKyAgICAgICAgOiB2YWx1ZShudW1Pckxlbmd0
aCkKKyAgICAgICAgLCBpc1NwYWNlcyh0eXBlID09IFNwYWNlcykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2lzU3BhY2VzOwogICAgIH0KIAogICAgIGZsb2F0IHdpZHRoSW5QaXhlbHMoZmxvYXQg
c3BhY2VXaWR0aCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzU3BhY2VzID8gbV92
YWx1ZSAqIHNwYWNlV2lkdGggOiBtX3ZhbHVlOworICAgICAgICByZXR1cm4gaXNTcGFjZXMgPyB2
YWx1ZSAqIHNwYWNlV2lkdGggOiB2YWx1ZTsKICAgICB9CiAKLSAgICBmbG9hdCB2YWx1ZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZTsKLSAgICB9CisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CiAKLSAgICBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQotCi0gICAgZmxvYXQgbV92YWx1ZTsKLSAg
ICBib29sIG1faXNTcGFjZXM7CisgICAgZmxvYXQgdmFsdWU7CisgICAgYm9vbCBpc1NwYWNlczsK
IH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGFiU2l6ZSYgYSwgY29uc3QgVGFi
U2l6ZSYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPT0oVGFiU2l6ZSBhLCBUYWJTaXplIGIpCiB7
Ci0gICAgcmV0dXJuIChhLm1fdmFsdWUgPT0gYi5tX3ZhbHVlKSAmJiAoYS5tX2lzU3BhY2VzID09
IGIubV9pc1NwYWNlcyk7CisgICAgcmV0dXJuIGEudmFsdWUgPT0gYi52YWx1ZSAmJiBhLmlzU3Bh
Y2VzID09IGIuaXNTcGFjZXM7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVGFi
U2l6ZSYgYSwgY29uc3QgVGFiU2l6ZSYgYikKK2lubGluZSBib29sIG9wZXJhdG9yIT0oVGFiU2l6
ZSBhLCBUYWJTaXplIGIpCiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAoraW5saW5lIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBUYWJTaXplIHNpemUpIHsg
cmV0dXJuIHN0cmVhbSA8PCBzaXplLnZhbHVlIDw8IChzaXplLmlzU3BhY2VzID8gIiBzcGFjZXMi
IDogIiIpOyB9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RleHRSdW4uaAppbmRleCAxZDQ3ZDY1ZDY4MjQ2MjZlMTU5Mjg4MDBmNDY5
N2MyNzZjYjI3NjM0Li5hMjA5NmNmOWRlMzVlOGE1YjM5M2E3ZmFjMGE0ODNkNTcxYzRmMWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCkBAIC05NSw4ICs5
NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhvcml6b250YWxHbHlwaFN0cmV0Y2goZmxvYXQg
c2NhbGUpIHsgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNoID0gc2NhbGU7IH0KIAogICAgIGJvb2wg
YWxsb3dUYWJzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd1RhYnM7IH0KLSAgICBjb25zdCBUYWJT
aXplJiB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV90YWJTaXplOyB9Ci0gICAgdm9pZCBzZXRU
YWJTaXplKGJvb2wsIGNvbnN0IFRhYlNpemUmKTsKKyAgICBUYWJTaXplIHRhYlNpemUoKSBjb25z
dCB7IHJldHVybiBtX3RhYlNpemU7IH0KKyAgICB2b2lkIHNldFRhYlNpemUoYm9vbCwgVGFiU2l6
ZSk7CiAKICAgICBmbG9hdCB4UG9zKCkgY29uc3QgeyByZXR1cm4gbV94cG9zOyB9CiAgICAgdm9p
ZCBzZXRYUG9zKGZsb2F0IHhQb3MpIHsgbV94cG9zID0geFBvczsgfQpAQCAtMTM2LDcgKzEzNiw3
IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9kaXNhYmxlU3BhY2luZyA6IDE7CiB9OwogCi1p
bmxpbmUgdm9pZCBUZXh0UnVuOjpzZXRUYWJTaXplKGJvb2wgYWxsb3csIGNvbnN0IFRhYlNpemUm
IHNpemUpCitpbmxpbmUgdm9pZCBUZXh0UnVuOjpzZXRUYWJTaXplKGJvb2wgYWxsb3csIFRhYlNp
emUgc2l6ZSkKIHsKICAgICBtX2FsbG93VGFicyA9IGFsbG93OwogICAgIG1fdGFiU2l6ZSA9IHNp
emU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVz
LmNwcAppbmRleCA5MmY0MmI2NzdkNTNkZDljNmEzZjZiZDZlM2Q5MWNiYWM2NmFhNGI5Li45ZGIx
MTExMjhhMWZiN2NlZmVhNGFkMDJhZWMxMWJhNWUyOTFkYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKQEAgLTI3LDEzICsyNywx
NCBAQAogI2luY2x1ZGUgIlZQOVV0aWxpdGllcy5oIgogCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBib29sIGlzVmFsaWRWUExldmVsKHVpbnQ4X3QgbGV2ZWwpCiB7Ci0gICAgY29u
c3RleHByIHVpbnQ4X3QgdmFsaWRMZXZlbHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgdmFsaWRMZXZlbHNbXSA9IHsKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2ZWw6Okxl
dmVsXzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8xXzEsCiAgICAgICAg
IFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8yLApAQCAtNDksMTQgKzUwLDEzIEBAIHN0YXRp
YyBib29sIGlzVmFsaWRWUExldmVsKHVpbnQ4X3QgbGV2ZWwpCiAgICAgICAgIFZQQ29uZmlndXJh
dGlvbkxldmVsOjpMZXZlbF82XzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZl
bF82XzIsCiAgICAgfTsKLQotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZh
bGlkTGV2ZWxzKSwgc3RkOjplbmQodmFsaWRMZXZlbHMpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6Ymlu
YXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkTGV2ZWxzKSwgc3RkOjplbmQodmFsaWRMZXZlbHMp
LCBsZXZlbCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyB2YWxp
ZExldmVscyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMobGV2ZWwpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc1ZhbGlkVlBDb2xvclByaW1hcmllcyh1aW50OF90IGNvbG9yUHJpbWFyaWVzKQogewot
ICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkQ29sb3JQcmltYXJpZXNbXSA9IHsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRDb2xvclByaW1hcmllc1tdID0gewogICAgICAgICBW
UENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNzA5XzYsCiAgICAgICAgIFZQQ29uZmln
dXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZCwKICAgICAgICAgVlBDb25maWd1cmF0
aW9uQ29sb3JQcmltYXJpZXM6OkJUXzQ3MF82X00sCkBAIC03MCwxNCArNzAsMTMgQEAgc3RhdGlj
IGJvb2wgaXNWYWxpZFZQQ29sb3JQcmltYXJpZXModWludDhfdCBjb2xvclByaW1hcmllcykKICAg
ICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX0VHXzQzMl8xLAogICAg
ICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6RUJVX1RlY2hfMzIxM19FLAogICAg
IH07Ci0KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZENvbG9yUHJp
bWFyaWVzKSwgc3RkOjplbmQodmFsaWRDb2xvclByaW1hcmllcykpKTsKLSAgICByZXR1cm4gc3Rk
OjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRDb2xvclByaW1hcmllcyksIHN0ZDo6ZW5k
KHZhbGlkQ29sb3JQcmltYXJpZXMpLCBjb2xvclByaW1hcmllcyk7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyB2YWxpZENvbG9yUHJpbWFyaWVzIH07CisgICAgcmV0
dXJuIHNldC5jb250YWlucyhjb2xvclByaW1hcmllcyk7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFs
aWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKHVpbnQ4X3QgdHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3MpCiB7Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGlj
c1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZFRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzOjpCVF83MDlfNiwKICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0
ZXJpc3RpY3M6OlVuc3BlY2lmaWVkLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNo
YXJhY3RlcmlzdGljczo6QlRfNDcwXzZfTSwKQEAgLTk2LDEzICs5NSwxMyBAQCBzdGF0aWMgYm9v
bCBpc1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyh1aW50OF90IHRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzKQogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
czo6U01QVEVfU1RfNDI4XzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzOjpCVF8yMTAwX0hMRywKICAgICB9OwotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRl
ZChzdGQ6OmJlZ2luKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpLCBzdGQ6OmVuZCh2YWxp
ZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFy
Y2goc3RkOjpiZWdpbih2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSwgc3RkOjplbmQodmFs
aWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyksIHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHZhbGlkVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3MgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKHRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzKTsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKHVp
bnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQogewotICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlk
TWF0cml4Q29lZmZpY2llbnRzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZh
bGlkTWF0cml4Q29lZmZpY2llbnRzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6SWRlbnRpdHksCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENv
ZWZmaWNpZW50czo6QlRfNzA5XzYsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50czo6VW5zcGVjaWZpZWQsCkBAIC0xMTgsOCArMTE3LDggQEAgc3RhdGljIGJvb2wgaXNW
YWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQogICAg
ICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkNocm9tYWNpdHlfTm9uY29u
c3RhbnRfTHVtaW5hbmNlLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVu
dHM6OkJUXzIxMDBfSUNDLAogICAgIH07Ci0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6
YmVnaW4odmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJpeENvZWZm
aWNpZW50cykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFs
aWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJpeENvZWZmaWNpZW50cyks
IG1hdHJpeENvZWZmaWNpZW50cyk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNl
dCBzZXQgeyB2YWxpZE1hdHJpeENvZWZmaWNpZW50cyB9OworICAgIHJldHVybiBzZXQuY29udGFp
bnMobWF0cml4Q29lZmZpY2llbnRzKTsKIH0KIAogc3RkOjpvcHRpb25hbDxWUENvZGVjQ29uZmln
dXJhdGlvblJlY29yZD4gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmll
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJh
Y2tQcml2YXRlQVZGT2JqQy5oCmluZGV4IGVlMWEzNzlhNWJkODJhMjZhYzMyMTJjM2RkZjZlN2Mw
NDBjMThjNTUuLmUyZDE5OGZjYTJiNGMxYzhmN2ZlNjQ4NDNiMWM0MTNkN2IxODRmN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJp
dmF0ZUFWRk9iakMuaApAQCAtNjAsMTMgKzYwLDEzIEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkluYmFuZENoYXB0ZXJUcmFj
a1ByaXZhdGVBVkZPYmpDIjsgfQogCiAgICAgc3RydWN0IENoYXB0ZXJEYXRhIHsKLSAgICAgICAg
TWVkaWFUaW1lIG1fc3RhcnRUaW1lOwotICAgICAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKLSAg
ICAgICAgU3RyaW5nIG1fdGl0bGU7CisgICAgICAgIE1lZGlhVGltZSBzdGFydFRpbWU7CisgICAg
ICAgIE1lZGlhVGltZSBkdXJhdGlvbjsKKyAgICAgICAgU3RyaW5nIHRpdGxlOwogCiAgICAgICAg
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hhcHRlckRhdGEmIG90aGVyKSBjb25z
dAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdGFydFRpbWUgPT0gb3RoZXIubV9z
dGFydFRpbWUgJiYgbV9kdXJhdGlvbiA9PSBvdGhlci5tX2R1cmF0aW9uICYmIG1fdGl0bGUgPT0g
b3RoZXIubV90aXRsZTsKKyAgICAgICAgICAgIHJldHVybiBzdGFydFRpbWUgPT0gb3RoZXIuc3Rh
cnRUaW1lICYmIGR1cmF0aW9uID09IG90aGVyLmR1cmF0aW9uICYmIHRpdGxlID09IG90aGVyLnRp
dGxlOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRW
aWRlb091dHB1dC5tbQppbmRleCAwYmMwODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIyYmUzZjUwNzhh
NzdlLi45NDljNjBiYzQ4ZTVhOWEwYjI1ODBmMWEyMTIyZWVlODc1NDUxNWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpAQCAtMjMxLDE0ICsyMzEsMTMg
QEAgdm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVy
KCkKICAgICBpZiAobV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGN1cnJlbnRUaW1lID0gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3Vy
cmVudFRpbWVdKTsKLSAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFt
ZXMsIGN1cnJlbnRUaW1lKTsKKyAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlk
ZW9GcmFtZXMsIFBBTDo6dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1cnJlbnRUaW1lXSkpOwogICAg
IGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlkZW9GcmFt
ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbmV4dEltYWdlVGltZSA9IGl0
ZXItPmZpcnN0OwogCi0gICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVy
IGFkZEJvdW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRp
bWU6UEFMOjp0b0NNVGltZShjdXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0
ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVj
dGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0
XSAoKSBtdXRhYmxlIHsKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5
ZXIgYWRkQm91bmRhcnlUaW1lT2JzZXJ2ZXJGb3JUaW1lczpAW1tOU1ZhbHVlIHZhbHVlV2l0aENN
VGltZTpQQUw6OnRvQ01UaW1lKG5leHRJbWFnZVRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVs
ZWdhdGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHBy
b3RlY3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091
dHB1dF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAg
ICAgICAgICAgd2Vha1RoaXMtPm5leHRJbWFnZVRpbWVSZWFjaGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDA1YTgzMTZkYzI3ZTYzMDE3ZjM5N2YxOTI0NjliODJh
MzNiN2IwMzQuLjA0YzAwM2I0ZTJlODc2OGNkNTg3Nzc0ZTVkMWVjNjMyNzljODhiZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0xNDIyLDE4ICsxNDIyLDE4IEBAIHdl
Ym06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3Vt
ZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9J
Rl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9y
IiwgZXJyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBPcHVzQ29va2llQ29udGVudHMgY29v
a2llQ29udGVudHM7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZh
dGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUs
IGJsb2NrQnVmZmVyRGF0YSwgY29va2llQ29udGVudHMpKSB7CisgICAgICAgICAgICBhdXRvIGNv
b2tpZUNvbnRlbnRzID0gcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBw
cml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRh
KTsKKyAgICAgICAgICAgIGlmICghY29va2llQ29udGVudHMpIHsKICAgICAgICAgICAgICAgICBQ
QVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJGYWlsZWQgdG8gcGFyc2UgT3B1cyBwcml2YXRl
IGRhdGEiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzLmZy
YW1lc1BlclBhY2tldCkgeworICAgICAgICAgICAgaWYgKCFjb29raWVDb250ZW50cy0+ZnJhbWVz
UGVyUGFja2V0KSB7CiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiT3B1cyBwcml2YXRlIGRhdGEgaW5kaWNhdGVzIDAgZnJhbWVzIHBlciBwYWNrZXQ7IGJhaWxp
bmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmlu
Zyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZyYW1lc1BlclBhY2tldCA9IGNvb2tp
ZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldDsKLSAgICAgICAgICAgIG1fZnJhbWVEdXJhdGlvbiA9
IGNvb2tpZUNvbnRlbnRzLmZyYW1lRHVyYXRpb247Ci0gICAgICAgICAgICBmb3JtYXREZXNjcmlw
dGlvbiA9IGNyZWF0ZU9wdXNBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvb2tpZUNvbnRlbnRzKTsK
KyAgICAgICAgICAgIG1fZnJhbWVzUGVyUGFja2V0ID0gY29va2llQ29udGVudHMtPmZyYW1lc1Bl
clBhY2tldDsKKyAgICAgICAgICAgIG1fZnJhbWVEdXJhdGlvbiA9IGNvb2tpZUNvbnRlbnRzLT5m
cmFtZUR1cmF0aW9uOworICAgICAgICAgICAgZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVPcHVz
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbigqY29va2llQ29udGVudHMpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikgewpAQCAtMTQ1Myw3ICsxNDUzLDYgQEAgd2Vi
bTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1l
RnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgLy8gT3B1cyB0ZWNobmljYWxseSBhbGxvd3Mg
dGhlIGZyYW1lIGR1cmF0aW9uIGFuZCBmcmFtZXMtcGVyLXBhY2tldCB2YWx1ZXMgdG8gY2hhbmdl
IGZyb20gcGFja2V0IHRvIHBhY2tldC4KICAgICAgICAgLy8gQ29yZUF1ZGlvIGRvZXNuJ3Qgc3Vw
cG9ydCBBU0JEIHZhbHVlcyBsaWtlIHRoZXNlIHRvIGNoYW5nZSBvbiBhIHBlci1wYWNrZXQgYmFz
aXMsIHNvIHRocm93IGFuIGVycm9yIHdoZW4KICAgICAgICAgLy8gdGhhdCBraW5kIG9mIHZhcmlh
YmlsaXR5IGlzIGVuY291bnRlcmVkLgotICAgICAgICBPcHVzQ29va2llQ29udGVudHMgY29va2ll
Q29udGVudHM7CiAgICAgICAgIGF1dG8mIHByaXZhdGVEYXRhID0gdHJhY2soKS5jb2RlY19wcml2
YXRlLnZhbHVlKCk7CiAgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3VvdXND
b21wbGV0ZUJsb2NrQnVmZmVyKG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQsICptX2NvbXBsZXRl
UGFja2V0U2l6ZSk7CiAgICAgICAgIGlmICghY29udGlndW91c0J1ZmZlcikgewpAQCAtMTQ2Niw5
ICsxNDY1LDggQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJh
Y2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgICAgIFBBUlNFUl9M
T0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQg
d2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRl
c1JlbWFpbmluZyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0
YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNr
ZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQotICAgICAgICAgICAgfHwg
Y29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0Ci0gICAg
ICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJhdGlv
bikgeworICAgICAgICBhdXRvIGNvb2tpZUNvbnRlbnRzID0gcGFyc2VPcHVzUHJpdmF0ZURhdGEo
cHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0
U2l6ZSwgYmxvY2tCdWZmZXJEYXRhKTsKKyAgICAgICAgaWYgKCFjb29raWVDb250ZW50cyB8fCBj
b29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0IHx8IGNv
b2tpZUNvbnRlbnRzLT5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJhdGlvbikgewogICAgICAg
ICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1cyBmcmFtZXMtcGVyLXBhY2tl
dCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwogICAgICAgICAgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpWYXJpYWJsZUZyYW1lRHVyYXRpb24pKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgKaW5kZXggODcxMDRkOGI3YjM1
N2MxNjBiNmRjY2M0MWJmZTFmODllMGE2YzI3MS4uOGI2N2RlNmY0OTMwMWJhMDExNThhOTgwMDk5
NTkyNzcwNDQ1MjM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oCkBAIC0yOCw4
ICsyOCw4IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KIAotY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1LDkgKzU1
LDkgQEAgc3RydWN0IE9wdXNDb29raWVDb250ZW50cyB7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNPcHVzRGVjb2RlckF2YWlsYWJsZSgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCByZWdpc3Rlck9w
dXNEZWNvZGVySWZOZWVkZWQoKTsKLWJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IHBy
aXZhdGVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogcHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZURhdGFT
aXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50cyYpOworc3RkOjpv
cHRpb25hbDxPcHVzQ29va2llQ29udGVudHM+IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBw
cml2YXRlRGF0YVNpemUsIGNvbnN0IHZvaWQqIHByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVEYXRh
U2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhKTsKIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0
aW9uUmVmPiBjcmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBPcHVzQ29va2ll
Q29udGVudHMmKTsKIAogfQogCi0jZW5kaWYgLy8gJiYgUExBVEZPUk0oQ09DT0EpCisjZW5kaWYg
Ly8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCmluZGV4
IDdlMGFmYjI5MGRkODVhNzdmOWJlZmZmNDk0N2E0N2I3NTM1ZWIyZjQuLmFiNWJhMWYyNTJjZWMy
NzE2YjUwMGY2ZjlhNWM0YmJhNjc0MjgxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgY29uc3RleHByIGludDMyX3Qgb3B1c0NvbmZpZ1Rv
QmFuZHdpZHRoKHVpbnQ4X3QgY29uZmlnKQogfQogI2VuZGlmCiAKLWJvb2wgcGFyc2VPcHVzUHJp
dmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0
ZURhdGEsIHNpemVfdCBmcmFtZVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSwgT3B1c0Nvb2tp
ZUNvbnRlbnRzJiBjb29raWUpCitzdGQ6Om9wdGlvbmFsPE9wdXNDb29raWVDb250ZW50cz4gcGFy
c2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNv
ZGVjUHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSkK
IHsKICNpZiBFTkFCTEUoT1BVUykKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNzg0NQpAQCAtMjAxLDE2ICsyMDEsMTcgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShz
aXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAg
ICBhdXRvKiBwcml2YXRlRGF0YVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihjb2Rl
Y1ByaXZhdGVEYXRhKTsKIAogICAgIGlmIChjb2RlY1ByaXZhdGVTaXplIDwgMTkpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAxLiBN
YWdpYyBTaWduYXR1cmU6CiAgICAgLy8KICAgICAvLyAgICAgVGhpcyBpcyBhbiA4LW9jdGV0ICg2
NC1iaXQpIGZpZWxkIHRoYXQgYWxsb3dzIGNvZGVjCiAgICAgLy8gICAgIGlkZW50aWZpY2F0aW9u
IGFuZCBpcyBodW1hbiByZWFkYWJsZS4KICAgICBpZiAoc3RybmNtcCgiT3B1c0hlYWQiLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwcml2YXRlRGF0YVB0ciksIDgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAyLiBW
ZXJzaW9uICg4IGJpdHMsIHVuc2lnbmVkKToKKyAgICBPcHVzQ29va2llQ29udGVudHMgY29va2ll
OwogICAgIGNvb2tpZS52ZXJzaW9uID0gKihwcml2YXRlRGF0YVB0ciArIDgpOwogCiAgICAgLy8g
My4gT3V0cHV0IENoYW5uZWwgQ291bnQgJ0MnICg4IGJpdHMsIHVuc2lnbmVkKToKQEAgLTIzMSw3
ICsyMzIsNyBAQCBib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVT
aXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLAogICAgIGF1dG8gZnJhbWVQdHIgPSBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZnJhbWVEYXRhKTsKIAogICAgIGlmIChmcmFtZVNp
emUgPCAxKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjcxNgogICAgIC8v
IDMuMS4gVGhlIFRPQyBCeXRlCkBAIC0yODUsMjEgKzI4NiwyMCBAQCBib29sIHBhcnNlT3B1c1By
aXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZh
dGVEYXRhLAogICAgICAgICAvLwogICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgRmln
dXJlIDU6IFRoZSBmcmFtZSBjb3VudCBieXRlCiAgICAgICAgIGlmIChmcmFtZVNpemUgPCAyKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICB1aW50OF90IGZyYW1lQ291bnRCeXRlID0gKihmcmFtZVB0ciArIDEpOwog
ICAgICAgICBjb29raWUuaXNWQlIgPSAoKGZyYW1lQ291bnRCeXRlICYgMGIxMDAwMDAwMCkgPj4g
NykgPT0gMTsKICAgICAgICAgY29va2llLmhhc1BhZGRpbmcgPSAoKGZyYW1lQ291bnRCeXRlICYg
MGIwMTAwMDAwMCkgPj4gNikgPT0gMTsKICAgICAgICAgY29va2llLmZyYW1lc1BlclBhY2tldCA9
IChmcmFtZUNvdW50Qnl0ZSAmIDBiMDAxMTExMTEpOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gY29va2llOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29kZWNQcml2YXRl
U2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvZGVjUHJpdmF0ZURhdGEpOwogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZVNpemUpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZURhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShjb29raWUpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlTGF5ZXJQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVn
YWN5VGlsZUxheWVyUG9vbC5oCmluZGV4IDhkYzIxM2Y0N2Q0ZjgxOTIxMTExYTRhNjljNDk5NjJl
YTczZmNmMGEuLmRjZDZhNDdiYTYwODUzZGEwOGUxMmYwMjAyODc5ZDQ5ZGIzNjM0OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9X
YWxsVGltZS5oPgogCiBAY2xhc3MgTGVnYWN5VGlsZUxheWVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KaW5kZXggYjUyYzg2MTg2ZjBiYjA2ZmQz
MjNlZDI5ZjgyZDc3Yzk1OGZlMjYwOC4uOWY4ZGViZTk1NDYxMWVhMGU4YWQ3MzMwY2Q5MjZhYzJh
MzA5MTQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxv
Y2tsaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlz
dC5tbQpAQCAtMzUsNDMgKzM1LDI5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBP
U0J1aWxkSW5mbyB7Ci0gICAgT1NCdWlsZEluZm8oKQotICAgICAgICA6IG1ham9yKDApCi0gICAg
ICAgICwgbWlub3IoMCkKLSAgICAgICAgLCBidWlsZCgwKQotICAgIHsKLSAgICB9Ci0KLSAgICBP
U0J1aWxkSW5mbyhpbnQgbWFqb3IsIGludCBtaW5vciwgaW50IGJ1aWxkKQotICAgICAgICA6IG1h
am9yKG1ham9yKQotICAgICAgICAsIG1pbm9yKG1pbm9yKQotICAgICAgICAsIGJ1aWxkKGJ1aWxk
KQotICAgIHsKLSAgICB9CisgICAgaW50IG1ham9yIHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSAx
MyBpbiAxM0M2NC4KKyAgICBpbnQgbWlub3IgeyAwIH07IC8vIFJlcHJlc2VudHMgdGhlIEMgaW4g
MTNDNjQgKGFzIGEgbnVtYmVyIHdoZXJlIEEgPT0gMSwgaS5lLiAzKS4KKyAgICBpbnQgYnVpbGQg
eyAwIH07IC8vIFJlcHJlc2VudHMgdGhlIDY0IGluIDEzQzY0LgogCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1ham9yID09IG90aGVyLm1ham9yICYmIG1pbm9yID09IG90aGVyLm1pbm9yICYmIGJ1aWxkID09
IG90aGVyLmJ1aWxkOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9TQnVpbGRJ
bmZvJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oT1NCdWlsZElu
Zm8gb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1p
bm9yLCBidWlsZCkgPiBzdGQ6OnRpZShvdGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1
aWxkKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgT1NCdWlsZEluZm8mIG90
aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oT1NCdWlsZEluZm8gb3Ro
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9yLCBi
dWlsZCkgPD0gc3RkOjp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBj
b25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChPU0J1aWxkSW5mbyBvdGhlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA8
IHN0ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0K
LQotICAgIGludCBtYWpvcjsgLy8gUmVwcmVzZW50cyB0aGUgMTMgaW4gMTNDNjQuCi0gICAgaW50
IG1pbm9yOyAvLyBSZXByZXNlbnRzIHRoZSBDIGluIDEzQzY0IChhcyBhIG51bWJlciB3aGVyZSBB
ID09IDEsIGkuZS4gMykuCi0gICAgaW50IGJ1aWxkOyAvLyBSZXByZXNlbnRzIHRoZSA2NCBpbiAx
M0M2NC4KIH07CiAKIHN0YXRpYyBPU0J1aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmlu
ZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcpCkBAIC04Myw3ICs2OSw3IEBAIHN0YXRpYyBPU0J1aWxk
SW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcpCiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICBOU0xvZyhAIldlYkdMQmxvY2tsaXN0IGNvdWxkIG5vdCBw
YXJzZSBPU0J1aWxkIGVudHJ5OiAlQCIsIGJ1aWxkU3RyaW5nKTsKICNlbmRpZgotICAgICAgICBy
ZXR1cm4gT1NCdWlsZEluZm8oKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBO
U1RleHRDaGVja2luZ1Jlc3VsdCAqbWF0Y2hSZXN1bHQgPSBbbWF0Y2hlcyBvYmplY3RBdEluZGV4
OjBdOwpAQCAtOTIsMTQgKzc4LDE0IEBAIHN0YXRpYyBPU0J1aWxkSW5mbyBidWlsZEluZm9Gcm9t
T1NCdWlsZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICBOU0xvZyhAIldlYkdMQmxvY2tsaXN0IGNvdWxkIG5vdCBwYXJzZSBPU0J1aWxkIGVudHJ5
OiAlQCIsIGJ1aWxkU3RyaW5nKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gT1NCdWlsZEluZm8o
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBpbnQgbWFqb3JWZXJzaW9uID0g
W1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRl
eDoxXV0gaW50VmFsdWVdOwogICAgIGludCBtaW5vclZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1
YnN0cmluZ1dpdGhSYW5nZTpbbWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjJdXSBjaGFyYWN0ZXJB
dEluZGV4OjBdIC0gJ0EnICsgMTsKICAgICBpbnQgYnVpbGRWZXJzaW9uID0gW1tidWlsZFN0cmlu
ZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRleDozXV0gaW50VmFs
dWVdOwogCi0gICAgcmV0dXJuIE9TQnVpbGRJbmZvKG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9u
LCBidWlsZFZlcnNpb24pOworICAgIHJldHVybiB7IG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9u
LCBidWlsZFZlcnNpb24gfTsKIH0KIAogYm9vbCBXZWJHTEJsb2NrbGlzdDo6c2hvdWxkQmxvY2tX
ZWJHTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuaAppbmRleCA4Y2E1ZjMxOWUyYjgwNmNlYWE5
MDI2MTdjNWMzYTI0OWExYzc0YTRhLi4wYTE2ZTU0ZmRiYTQ4ZGI1YWE2M2VjNjQ3MjZmMjc1ZjBk
YjEwOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJp
Y3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2Fk
TWV0cmljcy5tbQppbmRleCA2MzEyZTA2ODQyOTdiNDNjMzMxMWU0NzM5YjY4MWFiNDQ1YzMzNjcy
Li5iZjVjNzRmNGNmZGNhMzc1ZTNiZTQyMzJlNDc1YzIyZGFmZmNlY2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2Fk
TWV0cmljcy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5o
IgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VSTENvbm5lY3Rpb25TUEkuaD4KKyNpbXBvcnQg
PHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkLmNwcAppbmRleCA1NjAyZDdjMmQ0ZDViY2E5MzI0NTQ0Yjc1YWQyMmNiMjY1OGVkMDJj
Li4wZGY3NDI2NTFmZjdiZGM4YmI2NDMzNDZmOWJjY2JjMjA0YzE5ZTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBHcmlkSXRlcmF0b3I6Omlz
RW1wdHlBcmVhRW5vdWdoKHVuc2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNv
bnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlk
SXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNp
Z25lZCB2YXJ5aW5nVHJhY2tTcGFuKQorc3RkOjpvcHRpb25hbDxHcmlkQXJlYT4gR3JpZEl0ZXJh
dG9yOjpuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWduZWQg
dmFyeWluZ1RyYWNrU3BhbikKIHsKICAgICBBU1NFUlQoIW1fZ3JpZC5pc0VtcHR5KCkpOwogICAg
IEFTU0VSVCghbV9ncmlkWzBdLmlzRW1wdHkoKSk7CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2ln
bmVkIGZpeGVkVHJhY2tTcGEKICAgICBBU1NFUlQodmFyeWluZ1RyYWNrU3BhbiA+PSAxKTsKIAog
ICAgIGlmIChtX2dyaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2lnbmVkIHJvd1NwYW4gPSAobV9kaXJl
Y3Rpb24gPT0gRm9yQ29sdW1ucykgPyB2YXJ5aW5nVHJhY2tTcGFuIDogZml4ZWRUcmFja1NwYW47
CiAgICAgdW5zaWduZWQgY29sdW1uU3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/
IGZpeGVkVHJhY2tTcGFuIDogdmFyeWluZ1RyYWNrU3BhbjsKQEAgLTIzMSwxMyArMjMxLDEzIEBA
IHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJl
YSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhCiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5aW5n
VHJhY2tJbmRleCA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkg
OiBtX2dyaWRbMF0uc2l6ZSgpOwogICAgIGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8IGVuZE9m
VmFyeWluZ1RyYWNrSW5kZXg7ICsrdmFyeWluZ1RyYWNrSW5kZXgpIHsKICAgICAgICAgaWYgKGlz
RW1wdHlBcmVhRW5vdWdoKHJvd1NwYW4sIGNvbHVtblNwYW4pKSB7Ci0gICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRT
cGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsg
cm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbklu
ZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBHcmlkQXJlYShHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJ
bmRleCwgbV9yb3dJbmRleCArIHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRl
R3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKICAg
ICAgICAgICAgIC8vIEFkdmFuY2UgdGhlIGl0ZXJhdG9yIHRvIGF2b2lkIGFuIGluZmluaXRlIGxv
b3Agd2hlcmUgd2Ugd291bGQgcmV0dXJuIHRoZSBzYW1lIGdyaWQgYXJlYSBvdmVyIGFuZCBvdmVy
LgogICAgICAgICAgICAgKyt2YXJ5aW5nVHJhY2tJbmRleDsKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkLmgKaW5kZXggNzJjYWRmNjhlZjRkMzI2NmNlMWY4Y2VlYmRjOWE0OWRmMmJjODExYi4u
NTk0N2ZlNWU1Mzg2NTNkMGFhYzg0OTRmZWE4ZGE5NjdjMzA4NWVjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZC5oCkBAIC0zNywxMCArMzcsMTEgQEAgdHlwZWRlZiBWZWN0b3I8V2Vha1B0cjxSZW5k
ZXJCb3g+LCAxPiBHcmlkQ2VsbDsKIHR5cGVkZWYgVmVjdG9yPFZlY3RvcjxHcmlkQ2VsbD4+IEdy
aWRBc01hdHJpeDsKIHR5cGVkZWYgTGlzdEhhc2hTZXQ8c2l6ZV90PiBPcmRlcmVkVHJhY2tJbmRl
eFNldDsKIAotY2xhc3MgR3JpZEFyZWE7CiBjbGFzcyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI7CiBj
bGFzcyBSZW5kZXJHcmlkOwogCitzdHJ1Y3QgR3JpZEFyZWE7CisKIGNsYXNzIEdyaWQgZmluYWwg
ewogcHVibGljOgogICAgIGV4cGxpY2l0IEdyaWQoUmVuZGVyR3JpZCYpOwpAQCAtMTExLDcgKzEx
Miw3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlckJveCogbmV4dEdyaWRJdGVtKCk7CiAgICAgYm9v
bCBpc0VtcHR5QXJlYUVub3VnaCh1bnNpZ25lZCByb3dTcGFuLCB1bnNpZ25lZCBjb2x1bW5TcGFu
KSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVh
KHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhl
ZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFyeWluZ1RyYWNrU3Bhbik7CiAKIHByaXZhdGU6CiAgICAg
Y29uc3QgR3JpZEFzTWF0cml4JiBtX2dyaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKaW5kZXggY2VjZWQzNWU1Y2U4N2JmYmMxNDAxODM2Y2QxM2VhMWFlZGQ3
YWZjMC4uMDBlYmQ1ZmZjMDViNzIyMmE0ZjdhNDNiMGM0MjFiMmMzOTY1NmQyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtNDMwLDIwICs0MzAsMTkg
QEAgU3RyaW5nIFJlbmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBiZWZvcmVBZnRlckNvbnRhaW5lciA9IGJlZm9yZUFm
dGVyQ29udGFpbmVyLT5wYXJlbnQoKTsKICAgICAgICAgfQotICAgICAgICBtYWtlQ291bnRlck5v
ZGUoKmJlZm9yZUFmdGVyQ29udGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllcigpLCB0cnVlKS0+
YWRkUmVuZGVyZXIoY29uc3RfY2FzdDxSZW5kZXJDb3VudGVyJj4oKnRoaXMpKTsKKyAgICAgICAg
bWFrZUNvdW50ZXJOb2RlKCpiZWZvcmVBZnRlckNvbnRhaW5lciwgbV9jb3VudGVyLmlkZW50aWZp
ZXIsIHRydWUpLT5hZGRSZW5kZXJlcihjb25zdF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykp
OwogICAgICAgICBBU1NFUlQobV9jb3VudGVyTm9kZSk7CiAgICAgfQogICAgIENvdW50ZXJOb2Rl
KiBjaGlsZCA9IG1fY291bnRlck5vZGU7CiAgICAgaW50IHZhbHVlID0gY2hpbGQtPmFjdHNBc1Jl
c2V0KCkgPyBjaGlsZC0+dmFsdWUoKSA6IGNoaWxkLT5jb3VudEluUGFyZW50KCk7CiAKLSAgICBT
dHJpbmcgdGV4dCA9IGxpc3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwgdmFsdWUp
OworICAgIFN0cmluZyB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSwg
dmFsdWUpOwogCi0gICAgaWYgKCFtX2NvdW50ZXIuc2VwYXJhdG9yKCkuaXNOdWxsKCkpIHsKKyAg
ICBpZiAoIW1fY291bnRlci5zZXBhcmF0b3IuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFjaGls
ZC0+YWN0c0FzUmVzZXQoKSkKICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPnBhcmVudCgpOwog
ICAgICAgICB3aGlsZSAoQ291bnRlck5vZGUqIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKSkgewot
ICAgICAgICAgICAgdGV4dCA9IGxpc3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwg
Y2hpbGQtPmNvdW50SW5QYXJlbnQoKSkKLSAgICAgICAgICAgICAgICArIG1fY291bnRlci5zZXBh
cmF0b3IoKSArIHRleHQ7CisgICAgICAgICAgICB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3Vu
dGVyLmxpc3RTdHlsZSwgY2hpbGQtPmNvdW50SW5QYXJlbnQoKSkgKyBtX2NvdW50ZXIuc2VwYXJh
dG9yICsgdGV4dDsKICAgICAgICAgICAgIGNoaWxkID0gcGFyZW50OwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDI2ZjhmY2JjMGFi
Mjc5NjBjNDkzOTIyM2U3NDhkOTNjM2I4M2M5OWEuLjFiNjc0NWE5ZTc5MGI4MDViMTM1MDAwNDJl
NDFlMDkzZWQ4MTY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
QEAgLTc2NSwxMyArNzY1LDEzIEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdy
aWRBbmRPcmRlckl0ZXJhdG9yKEdyaWQmIGdyaWQpIGNvbnN0CiAgICAgZ3JpZC5lbnN1cmVHcmlk
U2l6ZShtYXhpbXVtUm93SW5kZXggKyBleHBsaWNpdFJvd1N0YXJ0LCBtYXhpbXVtQ29sdW1uSW5k
ZXggKyBleHBsaWNpdENvbHVtblN0YXJ0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVh
PiBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRz
aWRlR3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lm
aWVkUG9zaXRpb25zKSBjb25zdAorR3JpZEFyZWEgUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlk
QXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgUmVu
ZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHNwZWNpZmllZERpcmVj
dGlvbiwgY29uc3QgR3JpZFNwYW4mIHNwZWNpZmllZFBvc2l0aW9ucykgY29uc3QKIHsKICAgICBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gY3Jvc3NEaXJlY3Rpb24gPSBzcGVjaWZpZWREaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucyA/IEZvclJvd3MgOiBGb3JDb2x1bW5zOwogICAgIGNvbnN0IHVuc2ln
bmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7
CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24p
OwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5z
bGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJl
Y3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxH
cmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlv
blBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7
CisgICAgcmV0dXJuIEdyaWRBcmVhKHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8g
Y3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERp
cmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rp
b25Qb3NpdGlvbnMpOwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JB
eGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRv
R3JpZEl0ZW1zKSBjb25zdApAQCAtNzkyLDcgKzc5Miw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8
UmVuCiAgICAgICAgIHVuc2lnbmVkIG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbiA9IG1ham9yQXhp
c1Bvc2l0aW9ucy5zdGFydExpbmUoKTsKIAogICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3Io
Z3JpZCwgYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlv
bnMuc3RhcnRMaW5lKCksIGlzR3JpZEF1dG9GbG93RGVuc2UgPyAwIDogbWlub3JBeGlzQ3Vyc29y
cy5nZXQobWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1h
am9yQXhpc1Bvc2l0aW9ucy5pbnRlZ2VyU3BhbigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CisgICAg
ICAgIGF1dG8gZW1wdHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1ham9y
QXhpc1Bvc2l0aW9ucy5pbnRlZ2VyU3BhbigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CiAgICAgICAg
IGlmICghZW1wdHlHcmlkQXJlYSkKICAgICAgICAgICAgIGVtcHR5R3JpZEFyZWEgPSBjcmVhdGVF
bXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChncmlkLCAqYXV0b0dy
aWRJdGVtLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0
aW9ucyk7CiAKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01h
am9yQXhpc0l0ZW1PbkdyaWQoR3JpZCYgZ3JpZCwgUmVuZGVyQm94JiBncmlkSXRlbSwgQQogICAg
IHVuc2lnbmVkIG1ham9yQXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFq
b3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3Iuc2Vj
b25kIDogYXV0b1BsYWNlbWVudEN1cnNvci5maXJzdDsKICAgICB1bnNpZ25lZCBtaW5vckF4aXNB
dXRvUGxhY2VtZW50Q3Vyc29yID0gYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpID09
IEZvckNvbHVtbnMgPyBhdXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0IDogYXV0b1BsYWNlbWVudEN1
cnNvci5zZWNvbmQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGVtcHR5R3JpZEFy
ZWE7CisgICAgc3RkOjpvcHRpb25hbDxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKICAgICBHcmlk
U3BhbiBtaW5vckF4aXNQb3NpdGlvbnMgPSBncmlkLmdyaWRJdGVtU3BhbihncmlkSXRlbSwgYXV0
b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVjdGlvbigpKTsKICAgICBpZiAobWlub3JBeGlzUG9zaXRp
b25zLmlzVHJhbnNsYXRlZERlZmluaXRlKCkpIHsKICAgICAgICAgLy8gTW92ZSB0byB0aGUgbmV4
dCB0cmFjayBpbiBtYWpvciBheGlzIGlmIGluaXRpYWwgcG9zaXRpb24gaW4gbWlub3IgYXhpcyBp
cyBiZWZvcmUgYXV0by1wbGFjZW1lbnQgY3Vyc29yLgpAQCAtODU3LDcgKzg1Nyw3IEBAIHZvaWQg
UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChHcmlkJiBncmlkLCBSZW5k
ZXJCb3gmIGdyaWRJdGVtLCBBCiAKICAgICAgICAgICAgICAgICAvLyBEaXNjYXJkIGVtcHR5IGdy
aWQgYXJlYSBhcyBpdCBkb2VzIG5vdCBmaXQgaW4gdGhlIG1pbm9yIGF4aXMgZGlyZWN0aW9uLgog
ICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGVtcHR5IGdy
aWQgYXJlYSB5ZXQgYXMgd2UgbWlnaHQgZmluZCBhIHZhbGlkIG9uZSBpbiB0aGUgbmV4dCBpdGVy
YXRpb24uCi0gICAgICAgICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IG51bGxwdHI7CisgICAgICAg
ICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gQXMgd2UncmUgbW92aW5nIHRvIHRoZSBuZXh0IHRyYWNrIGluIHRoZSBt
YWpvciBheGlzIHdlIHNob3VsZCByZXNldCB0aGUgYXV0by1wbGFjZW1lbnQgY3Vyc29yIGluIHRo
ZSBtaW5vciBheGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggMjlh
ZTU5NDgwMDNlZTZkMmRkNDQzYjU2OTlkY2IyZDdjMTdiOTYyNi4uNjVjOWU2ZTI1MjY4NDk3MDMz
ODRkZGRjYmExNzgzYzRiYjc3YjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oCkBAIC0zMiw5ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdy
aWRBcmVhOwogY2xhc3MgR3JpZFNwYW47CiAKK3N0cnVjdCBHcmlkQXJlYTsKKwogc3RydWN0IENv
bnRlbnRBbGlnbm1lbnREYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZW50QWxp
Z25tZW50RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTExLDcg
KzExMiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtJiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpIGNvbnN0OwogICAgIHZvaWQgcG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0
ZXJhdG9yKEdyaWQmKSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGNyZWF0
ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmLCBjb25z
dCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJikg
Y29uc3Q7CisgICAgR3JpZEFyZWEgY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRp
b25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsKICAgICB2b2lkIHBsYWNlU3BlY2lmaWVk
TWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNv
bnN0OwogICAgIHZvaWQgcGxhY2VBdXRvTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNvbnN0
IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNvbnN0OwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gQXV0b1BsYWNlbWVudEN1cnNvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggN2U4ZGQ2ODgyNGNm
YjQ1NjIwODBlNTk0ZWNkODQwMmE2YzlmYzAzMi4uZjllZGUxZDkwYjM5MzZmMTMwOWQ0N2IyNDAz
NTE1NDJhMjc3YzQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBXZWJDb3JlSGFzM0RSZW5kZXJpbmcgPSB0cnVlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWYgIVVTRShDT01QT1NJVElOR19GT1JfU01BTExfQ0FOVkFTRVMpCi1zdGF0aWMgY29uc3QgaW50
IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAwOworc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjYW52YXNBcmVhVGhyZXNob2xkUmVxdWlyaW5nQ29tcG9z
aXRpbmcgPSA1MCAqIDEwMDsKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZTk2Mzdl
ZWJlMjA2MDlhZTBjNWQyYjFkNmY2YjNlNjFiYzlmMTI5OC4uODQ2YWQxNTI1YWYyMDY2MDdiNDJi
ZjRlZDExMGNmYWE5MTRlOTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCkBAIC00NjcsOCArNDY3LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNl
ZDo6cmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQog
CiAgICAgTGVuZ3RoUG9pbnQgb2JqZWN0UG9zaXRpb24gPSBzdHlsZSgpLm9iamVjdFBvc2l0aW9u
KCk7CiAKLSAgICBMYXlvdXRVbml0IHhPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2Jq
ZWN0UG9zaXRpb24ueCgpLCBjb250ZW50UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRoKCkp
OwotICAgIExheW91dFVuaXQgeU9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQ
b3NpdGlvbi55KCksIGNvbnRlbnRSZWN0LmhlaWdodCgpIC0gZmluYWxSZWN0LmhlaWdodCgpKTsK
KyAgICBMYXlvdXRVbml0IHhPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9z
aXRpb24ueCwgY29udGVudFJlY3Qud2lkdGgoKSAtIGZpbmFsUmVjdC53aWR0aCgpKTsKKyAgICBM
YXlvdXRVbml0IHlPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9zaXRpb24u
eSwgY29udGVudFJlY3QuaGVpZ2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOwogCiAgICAgZmlu
YWxSZWN0Lm1vdmUoeE9mZnNldCwgeU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IGNhNWI3NDBkOTA0NGJkNjVlMzY2YjU3ZDc2YzM0
MjhjM2Y5ZWUzZjYuLjRjNDc0Yzk1ZTNlZWMyMjJmMDUzOTkzNTIyNWQ0YTIxOWE2MDI4ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApAQCAtNjQwLDcg
KzY0MCw3IEBAIGNvbnN0IFNoYWRvd0RhdGEqIFRleHRCb3hQYWludGVyOjpkZWJ1Z1RleHRTaGFk
b3coKSBjb25zdAogICAgIGlmICghdGV4dEJveCgpLmxlZ2FjeUlubGluZUJveCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRh
PiBkZWJ1Z1RleHRTaGFkb3coTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aCgxMCwgTGVuZ3RoVHlwZTo6Rml4ZWQp
LCBMZW5ndGgoMjAsIExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1
ZSwgU1JHQkE8dWludDhfdD4geyAxNTAsIDAsIDAsIDE5MCB9KTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVidWdUZXh0U2hhZG93KExlbmd0aFBvaW50IHsgeyBMZW5n
dGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKDEwLCBMZW5n
dGhUeXBlOjpGaXhlZCksIExlbmd0aCgyMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHls
ZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOwogICAg
IHJldHVybiAmZGVidWdUZXh0U2hhZG93LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRTdHlsZS5oCmluZGV4IDQ1OWJhZjExMmZjMDMyNzBhZmU0NmZmZTg0ZWQw
ZDViYTZiMjZlMzkuLjI1Y2Y0OGNmNDkyODEyZWEzZWIwZmZmNDYwMDJjZGQwZDc3NmViMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCkBAIC0zMywxMyArMzMs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKLWNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFJl
bmRlclRleHQ7CiBjbGFzcyBTaGFkb3dEYXRhOworCiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiBzdHJ1
Y3QgVGV4dFBhaW50U3R5bGUgewotICAgIFRleHRQYWludFN0eWxlKCkgeyB9CisgICAgVGV4dFBh
aW50U3R5bGUoKSA9IGRlZmF1bHQ7CiAgICAgVGV4dFBhaW50U3R5bGUoY29uc3QgQ29sb3ImKTsK
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UGFpbnRTdHlsZSYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaAppbmRleCA1
ODZjYzY2OTgwMjY1ZDk4NjNhY2FhYTdlZTZiOGE5ODY0ODMyNmM2Li43YmY1YmM5MDZlODhjNTM3
NTgxMGNjM2UxZmMyODg5OTA5ZDUwYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaApAQCAtMjksMzIgKzI5LDE5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQ291bnRlckNvbnRlbnQgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIENvdW50ZXJDb250ZW50KGNvbnN0IEF0b21TdHJpbmcm
IGlkZW50aWZpZXIsIExpc3RTdHlsZVR5cGUgc3R5bGUsIGNvbnN0IEF0b21TdHJpbmcmIHNlcGFy
YXRvcikKLSAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAgICAgLCBtX2xp
c3RTdHlsZShzdHlsZSkKLSAgICAgICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgewot
ICAgICAgICBBU1NFUlQoc3R5bGUgIT0gTGlzdFN0eWxlVHlwZTo6U3RyaW5nKTsKLSAgICB9Citz
dHJ1Y3QgQ291bnRlckNvbnRlbnQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KLSAgICBMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGlzdFN0eWxlOyB9Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9zZXBhcmF0b3I7IH0KLQotcHJpdmF0ZToKLSAgICBBdG9tU3RyaW5nIG1f
aWRlbnRpZmllcjsKLSAgICBMaXN0U3R5bGVUeXBlIG1fbGlzdFN0eWxlOwotICAgIEF0b21TdHJp
bmcgbV9zZXBhcmF0b3I7CisgICAgQXRvbVN0cmluZyBpZGVudGlmaWVyOworICAgIExpc3RTdHls
ZVR5cGUgbGlzdFN0eWxlOworICAgIEF0b21TdHJpbmcgc2VwYXJhdG9yOwogfTsKIAotc3RhdGlj
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnRlckNvbnRlbnQmIGEsIGNvbnN0IENv
dW50ZXJDb250ZW50JiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyQ29u
dGVudCYgYSwgY29uc3QgQ291bnRlckNvbnRlbnQmIGIpCiB7Ci0gICAgcmV0dXJuIGEuaWRlbnRp
ZmllcigpID09IGIuaWRlbnRpZmllcigpCi0gICAgICAgICYmIGEubGlzdFN0eWxlKCkgPT0gYi5s
aXN0U3R5bGUoKQotICAgICAgICAmJiBhLnNlcGFyYXRvcigpID09IGIuc2VwYXJhdG9yKCk7Cisg
ICAgcmV0dXJuIGEuaWRlbnRpZmllciA9PSBiLmlkZW50aWZpZXIKKyAgICAgICAgJiYgYS5saXN0
U3R5bGUgPT0gYi5saXN0U3R5bGUKKyAgICAgICAgJiYgYS5zZXBhcmF0b3IgPT0gYi5zZXBhcmF0
b3I7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuaAppbmRleCA5NWQzODYyN2UxNDEzZjUyNjFjMDljOWZkOWZiMWFh
MjIwZDU0OGI0Li43MjQwYjk2YmU4MGU5NzMzNmJjZGNiY2Q0ZWU3ZTI4ZGM2Nzg4OWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCkBAIC0zNSwxOCArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogCiBzdHJ1Y3Qg
RmlsbFNpemUgewotICAgIEZpbGxTaXplKCkKLSAgICAgICAgOiB0eXBlKEZpbGxTaXplVHlwZTo6
U2l6ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgRmlsbFNpemUoRmlsbFNpemVUeXBlIHR5cGUsIGNv
bnN0IExlbmd0aFNpemUmIHNpemUpCi0gICAgICAgIDogdHlwZSh0eXBlKQotICAgICAgICAsIHNp
emUoc2l6ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgRmlsbFNpemVUeXBlIHR5cGU7CisgICAgRmls
bFNpemVUeXBlIHR5cGUgeyBGaWxsU2l6ZVR5cGU6OlNpemUgfTsKICAgICBMZW5ndGhTaXplIHNp
emU7CiB9OwogCkBAIC04NCw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBCbGVuZE1vZGUgYmxlbmRN
b2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihtX2JsZW5kTW9kZSk7
IH0KICAgICBjb25zdCBMZW5ndGhTaXplJiBzaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplTGVuZ3RoOyB9CiAgICAgRmlsbFNpemVUeXBlIHNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RmlsbFNpemVUeXBlPihtX3NpemVUeXBlKTsgfQotICAgIEZpbGxTaXplIHNp
emUoKSBjb25zdCB7IHJldHVybiBGaWxsU2l6ZShzdGF0aWNfY2FzdDxGaWxsU2l6ZVR5cGU+KG1f
c2l6ZVR5cGUpLCBtX3NpemVMZW5ndGgpOyB9CisgICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHsgc2l6ZVR5cGUoKSwgbV9zaXplTGVuZ3RoIH07IH0KICAgICBNYXNrTW9kZSBtYXNr
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hc2tNb2RlPihtX21hc2tNb2RlKTsg
fQogCiAgICAgY29uc3QgRmlsbExheWVyKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0Lmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFy
ZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCmluZGV4IGI3
ZWJkMWQ5NjFkZTg4MjZmYjgzMDMzMDliOGU2MzUyZjIwZjllYWIuLmQ0NzZmOTMxOTg3Y2ZjYTcx
NDE0Y2JmZGVjZDgxYWJiMWVkZmNlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkQXJlYS5oCkBAIC00Miw3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIERl
c3BpdGUgbGluZSBudW1iZXJzIGluIHRoZSBzcGVjIHN0YXJ0IGluICIxIiwgdGhlIGluZGV4ZXMg
aGVyZSBzdGFydCBpbiAiMCIuCiBjbGFzcyBHcmlkU3BhbiB7CiBwdWJsaWM6Ci0KICAgICBzdGF0
aWMgR3JpZFNwYW4gdW50cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIHJldHVybiBHcmlkU3BhbihzdGFydExpbmUsIGVu
ZExpbmUsIFVudHJhbnNsYXRlZERlZmluaXRlKTsKQEAgLTE0Miw4ICsxNDEsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotCi0gICAgZW51bSBHcmlkU3BhblR5cGUge1VudHJhbnNsYXRl
ZERlZmluaXRlLCBUcmFuc2xhdGVkRGVmaW5pdGUsIEluZGVmaW5pdGV9OworICAgIGVudW0gR3Jp
ZFNwYW5UeXBlIDogdWludDhfdCB7IFVudHJhbnNsYXRlZERlZmluaXRlLCBUcmFuc2xhdGVkRGVm
aW5pdGUsIEluZGVmaW5pdGUgfTsKIAogICAgIEdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lLCBHcmlkU3BhblR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTE2
MywyNCArMTYxLDI0IEBAIHByaXZhdGU6CiAgICAgaW50IG1fc3RhcnRMaW5lOwogICAgIGludCBt
X2VuZExpbmU7CiAgICAgR3JpZFNwYW5UeXBlIG1fdHlwZTsKLQotCiB9OwogCiAvLyBUaGlzIHJl
cHJlc2VudHMgYSBncmlkIGFyZWEgdGhhdCBzcGFucyBpbiBib3RoIHJvd3MnIGFuZCBjb2x1bW5z
JyBkaXJlY3Rpb24uCi1jbGFzcyBHcmlkQXJlYSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgLy8gSGFzaE1hcCByZXF1aXJlcyBhIGRlZmF1bHQgY29uc3R1Y3Rv
ci4KK3N0cnVjdCBHcmlkQXJlYSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OworCisgICAgR3JpZFNwYW4gcm93czsKKyAgICBHcmlkU3BhbiBjb2x1bW5zOworCiAgICAgR3Jp
ZEFyZWEoKQotICAgICAgICA6IGNvbHVtbnMoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3Bhbigp
KQotICAgICAgICAsIHJvd3MoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQorICAgICAg
ICA6IHJvd3MoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQorICAgICAgICAsIGNvbHVt
bnMoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQogICAgIHsKICAgICB9CiAKLSAgICBH
cmlkQXJlYShjb25zdCBHcmlkU3BhbiYgciwgY29uc3QgR3JpZFNwYW4mIGMpCi0gICAgICAgIDog
Y29sdW1ucyhjKQotICAgICAgICAsIHJvd3MocikKKyAgICBHcmlkQXJlYShHcmlkU3BhbiByb3dz
LCBHcmlkU3BhbiBjb2x1bW5zKQorICAgICAgICA6IHJvd3Mocm93cykKKyAgICAgICAgLCBjb2x1
bW5zKGNvbHVtbnMpCiAgICAgewogICAgIH0KIApAQCAtMTkzLDExICsxOTEsOCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9Ci0KLSAgICBHcmlk
U3BhbiBjb2x1bW5zOwotICAgIEdyaWRTcGFuIHJvd3M7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBHcmlkQXJlYT4gTmFtZWRHcmlkQXJlYU1hcDsKK3VzaW5nIE5hbWVkR3JpZEFyZWFN
YXAgPSBIYXNoTWFwPFN0cmluZywgR3JpZEFyZWE+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaAppbmRleCA4NmFj
ZDMzMGRmNjlmODNiMGQyZmQzMjI3ZWJiODBlOWVmZTdlODdhLi41Zjg4ZGUxZmM5YzIxMjJjZTIy
YWQ3ZTMwYTMwYjA4NDkzODVlOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZExlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkTGVuZ3RoLmgKQEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgR3JpZExlbmd0aCB7CiBwdWJs
aWM6CiAgICAgR3JpZExlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAgICAgOiBtX2xl
bmd0aChsZW5ndGgpCi0gICAgICAgICwgbV9mbGV4KDApCiAgICAgICAgICwgbV90eXBlKExlbmd0
aFR5cGUpCiAgICAgewogICAgICAgICBBU1NFUlQoIWxlbmd0aC5pc1VuZGVmaW5lZCgpKTsKQEAg
LTcyLDE0ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gTGVuZ3RoVHlwZSAmJiBtX2xlbmd0aC5pc0F1dG8oKTsgfQogCiBwcml2YXRl
OgotICAgIC8vIElkZWFsbHkgd2Ugd291bGQgcHV0IHRoZSAyIGZvbGxvd2luZyBmaWVsZHMgaW4g
YSB1bmlvbiwgYnV0IExlbmd0aCBoYXMgYSBjb25zdHJ1Y3RvciwKLSAgICAvLyBhIGRlc3RydWN0
b3IgYW5kIGEgY29weSBhc3NpZ25tZW50IHdoaWNoIGlzbid0IGFsbG93ZWQuCisgICAgLy8gQ291
bGQgdXNlIGEgVmFyaWFudCBoZXJlIHNpbmNlIHdlIG9ubHkgdXNlIG1fbGVuZ3RoIG9yIG1fZmxl
eCwgYW5kIG1fdHlwZSBkZXRlcm1pbmVzIHdoaWNoLgogICAgIExlbmd0aCBtX2xlbmd0aDsKLSAg
ICBkb3VibGUgbV9mbGV4OwotICAgIGVudW0gR3JpZExlbmd0aFR5cGUgewotICAgICAgICBMZW5n
dGhUeXBlLAotICAgICAgICBGbGV4VHlwZQotICAgIH07CisgICAgZG91YmxlIG1fZmxleCB7IDAg
fTsKKyAgICBlbnVtIEdyaWRMZW5ndGhUeXBlIDogYm9vbCB7IExlbmd0aFR5cGUsIEZsZXhUeXBl
IH07CiAgICAgR3JpZExlbmd0aFR5cGUgbV90eXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggYWQ1YWJhZGFjMDRmN2QyZWJi
Y2M2NzA0ZTAxMjkzYjFkZGZhZTNhNC4uMmU4ZDUyNmE5ZmExOTVkNDU3NDE2MmVlNjE3OWYzZWNl
NjNjN2VjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCkBAIC0xNDk3LDcgKzE0OTcsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseU1vdGlv
blBhdGhUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29ucwogICAg
IC8vIFNoaWZ0IGVsZW1lbnQgdG8gdGhlIGFuY2hvciBzcGVjaWZpZWQgYnkgb2Zmc2V0LWFuY2hv
ci4KICAgICBhdXRvIHRyYW5zZm9ybU9yaWdpbiA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh0
cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9j
YXRpb24oKTsKICAgICBhdXRvIGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKLSAgICBpZiAoIW9m
ZnNldEFuY2hvcigpLngoKS5pc0F1dG8oKSkKKyAgICBpZiAoIW9mZnNldEFuY2hvcigpLnguaXNB
dXRvKCkpCiAgICAgICAgIGFuY2hvciA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChvZmZzZXRB
bmNob3IoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CiAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtYW5jaG9yLngoKSwgLWFuY2hvci55KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDRmMjEzNWVh
YWVkNjIxODcxOWFlY2I2YmJjMGEyMjA1Yzk5OGQzNTkuLjNkYWM3NzMzZTA2MTQwNTAzNDg1NmYw
MzgzMzBkZDFkZTkxNmE5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCkBAIC0xMDksNyArMTA5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBCb3JkZXJEYXRhOwogY2xhc3MgQ29udGVudERhdGE7Ci1jbGFzcyBDb3VudGVyQ29udGVu
dDsKIGNsYXNzIEN1cnNvckxpc3Q7CiBjbGFzcyBGb250Q2FzY2FkZTsKIGNsYXNzIEZvbnRNZXRy
aWNzOwpAQCAtMTIxLDYgKzEyMCw3IEBAIGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YTsKIGNsYXNz
IFN0eWxlU2Nyb2xsU25hcEFyZWE7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAorc3Ry
dWN0IENvdW50ZXJDb250ZW50Owogc3RydWN0IFNjcm9sbFNuYXBBbGlnbjsKIHN0cnVjdCBTY3Jv
bGxTbmFwVHlwZTsKIApAQCAtNzAwLDcgKzcwMCw3IEBAIHB1YmxpYzoKICAgICBUZXh0Q29tYmlu
ZSB0ZXh0Q29tYmluZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPiht
X3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0Q29tYmluZSk7IH0KICAgICBib29sIGhhc1RleHRDb21i
aW5lKCkgY29uc3QgeyByZXR1cm4gdGV4dENvbWJpbmUoKSAhPSBUZXh0Q29tYmluZTo6Tm9uZTsg
fQogCi0gICAgY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRhYlNpemU7IH0KKyAgICBUYWJTaXplIHRhYlNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50YWJTaXplOyB9CiAKICAgICAvLyBFbmQgQ1NTMyBH
ZXR0ZXJzCiAKQEAgLTEyNzYsNyArMTI3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tk
cm9wRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBiYWNrZHJvcEZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsg
fQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFRhYlNpemUoY29uc3QgVGFiU2l6ZSYgc2l6ZSkgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRhYlNpemUsIHNpemUpOyB9CisgICAgdm9pZCBz
ZXRUYWJTaXplKFRhYlNpemUgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRh
YlNpemUsIHNpemUpOyB9CiAKICAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBi
cmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZv
cmUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KICAgICB2b2lkIHNl
dEJyZWFrQWZ0ZXIoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBicmVha0FmdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnJlYWtC
ZWhhdmlvcikpOyB9CkBAIC0xNTg0LDcgKzE1ODQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRl
eHRDb21iaW5lIGluaXRpYWxUZXh0Q29tYmluZSgpIHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25l
OyB9CiAgICAgc3RhdGljIFRleHRPcmllbnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkg
eyByZXR1cm4gVGV4dE9yaWVudGF0aW9uOjpNaXhlZDsgfQogICAgIHN0YXRpYyBPYmplY3RGaXQg
aW5pdGlhbE9iamVjdEZpdCgpIHsgcmV0dXJuIE9iamVjdEZpdDo6RmlsbDsgfQotICAgIHN0YXRp
YyBMZW5ndGhQb2ludCBpbml0aWFsT2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2lu
dChMZW5ndGgoNTAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpLCBMZW5ndGgoNTAuMGYsIExlbmd0
aFR5cGU6OlBlcmNlbnQpKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2JqZWN0
UG9zaXRpb24oKSB7IHJldHVybiB7IExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCks
IExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCkgfTsgfQogICAgIHN0YXRpYyBFbXB0
eUNlbGwgaW5pdGlhbEVtcHR5Q2VsbHMoKSB7IHJldHVybiBFbXB0eUNlbGw6OlNob3c7IH0KICAg
ICBzdGF0aWMgTGlzdFN0eWxlUG9zaXRpb24gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCkgeyBy
ZXR1cm4gTGlzdFN0eWxlUG9zaXRpb246Ok91dHNpZGU7IH0KICAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgaW5pdGlhbExpc3RTdHlsZVN0cmluZ1ZhbHVlKCkgeyByZXR1cm4gbnVsbEF0b20o
KTsgfQpAQCAtMTg5OCwxMSArMTg5OCwxMSBAQCBwdWJsaWM6CiAKICAgICBMZW5ndGhQb2ludCBv
ZmZzZXRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9m
ZnNldFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRQb3NpdGlvbihMZW5ndGhQb2ludCYm
IHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zmc2V0UG9zaXRp
b24sIFdURk1vdmUocG9zaXRpb24pKTsgfQotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFs
T2Zmc2V0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6
QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoUG9p
bnQgaW5pdGlhbE9mZnNldFBvc2l0aW9uKCkgeyByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1dG8g
fSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsgfQogCiAgICAgTGVuZ3RoUG9pbnQgb2Zmc2V0QW5j
aG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0QW5jaG9y
OyB9CiAgICAgdm9pZCBzZXRPZmZzZXRBbmNob3IoTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBT
RVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9mZnNldEFuY2hvciwgV1RGTW92ZShwb3Np
dGlvbikpOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRBbmNob3IoKSB7
IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5n
dGhUeXBlOjpBdXRvKSk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFu
Y2hvcigpIHsgcmV0dXJuIHsgeyBMZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0
byB9IH07IH0KIAogICAgIE9mZnNldFJvdGF0aW9uIG9mZnNldFJvdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9mZnNldFJvdGF0ZTsgfQogICAgIHZvaWQgc2V0
T2Zmc2V0Um90YXRlKE9mZnNldFJvdGF0aW9uJiYgcm90YXRpb24pIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBvZmZzZXRSb3RhdGUsIFdURk1vdmUocm90YXRpb24pKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IDg3Y2Ey
YjI1MmY5NmY4NWU0YjQ0MGI2ZmQyYzBmOGU5M2FkZTdhMGMuLmRlM2RjNmM0Y2RlMTI5N2VlYTBj
ZmNkNmQ2MWQ2NDQxMjgxMGUyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TaGFkb3dEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU2hhZG93RGF0YS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU2hhZG93RGF0YTo6U2hhZG93RGF0YShjb25zdCBTaGFkb3dEYXRhJiBvKQotICAgIDogbV9s
b2NhdGlvbihvLm1fbG9jYXRpb24ueCgpLCBvLm1fbG9jYXRpb24ueSgpKQorICAgIDogbV9sb2Nh
dGlvbihvLm1fbG9jYXRpb24pCiAgICAgLCBtX3NwcmVhZChvLm1fc3ByZWFkKQogICAgICwgbV9y
YWRpdXMoby5tX3JhZGl1cykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKaW5kZXggMjJmZWY3NjJiY2EzMTBiNjNh
ZWZlODU4NmY0MjJhYjlmODNjMDVmMi4uZDlhNDFhMTViYTBkMWVmYTljOGZlNTQwN2IzZDUwZTlm
MmVlMGFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRv
d0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5o
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBTaGFkb3dEYXRhKCkgPSBkZWZhdWx0Owog
CiAgICAgU2hhZG93RGF0YShjb25zdCBMZW5ndGhQb2ludCYgbG9jYXRpb24sIExlbmd0aCByYWRp
dXMsIExlbmd0aCBzcHJlYWQsIFNoYWRvd1N0eWxlIHN0eWxlLCBib29sIGlzV2Via2l0Qm94U2hh
ZG93LCBjb25zdCBDb2xvciYgY29sb3IpCi0gICAgICAgIDogbV9sb2NhdGlvbihsb2NhdGlvbi54
KCksIGxvY2F0aW9uLnkoKSkKKyAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fc3ByZWFkKHNwcmVhZCkKICAgICAgICAgLCBtX3JhZGl1cyhyYWRpdXMpCiAgICAgICAg
ICwgbV9jb2xvcihjb2xvcikKQEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAgICAgCi0gICAgY29uc3QgTGVuZ3RoJiB4KCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhdGlvbi54KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25z
dCB7IHJldHVybiBtX2xvY2F0aW9uLnkoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYXRpb24ueDsgfQorICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9jYXRpb24ueTsgfQogICAgIGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KICAgICBjb25zdCBMZW5ndGgmIHJhZGl1cygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzOyB9CiAgICAgTGF5b3V0VW5pdCBwYWludGluZ0V4dGVu
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVTY3JvbGxTbmFwUG9pbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVTY3JvbGxTbmFwUG9pbnRzLmgKaW5kZXggYTJjN2IwZGIzZDZlNWZlZDY1MzZhNTYzOWI0NTc5
MmU0NzgwMTE3OS4uNTM3NDcyMmFiMDk0YzU3ODM3OGNkZDFlNWQyOWFmMGVkOTlhNWI2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBv
aW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNu
YXBQb2ludHMuaApAQCAtMjUsMTEgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJMZW5ndGhCb3guaCIKLSNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGVDb25zdGFudHMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDkxNTA0MDFhNjQ1ZTQyODRlOTE2
OTFiYTBiYTVjOTc4Yzk4MmVmYmQuLjEyN2VmMzI3MjQ0NjZjZDQ4YzM3NDAyZGU3NjBhNWI5NzBh
NmZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
CkBAIC0yNjgsOCArMjY4LDggQEAgaW5saW5lIFRhYlNpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRhYlNpemUoY29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUKIHsKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBUYWJTaXpl
KHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSwgU3BhY2VWYWx1ZVR5cGUpOwotICAgIHJldHVy
biBUYWJTaXplKHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGJ1aWxkZXJTdGF0
ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpLCBMZW5ndGhWYWx1ZVR5cGUpOworICAgICAg
ICByZXR1cm4geyBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCksIFRhYlNpemU6OlNwYWNlcyB9
OworICAgIHJldHVybiB7IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGJ1aWxk
ZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpLCBUYWJTaXplOjpMZW5ndGggfTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTQxNyw3ICs0MTcsNyBAQCBpbmxpbmUgTGVu
Z3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLAogICAgIExlbmd0aCBsZW5ndGhYID0gY29udmVydFBvc2l0aW9uQ29tcG9u
ZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYnVpbGRlclN0YXRlLCAqcGFpci0+Zmly
c3QoKSk7CiAgICAgTGVuZ3RoIGxlbmd0aFkgPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NT
VmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tPihidWlsZGVyU3RhdGUsICpwYWlyLT5zZWNvbmQoKSk7
CiAKLSAgICByZXR1cm4gTGVuZ3RoUG9pbnQobGVuZ3RoWCwgbGVuZ3RoWSk7CisgICAgcmV0dXJu
IHsgbGVuZ3RoWCwgbGVuZ3RoWSB9OwogfQogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC00MjcsNyArNDI3LDcgQEAgaW5saW5lIExlbmd0
aFBvaW50IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbk9yQXV0byhCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXIKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNQYWlyKCkpCiAgICAgICAgIHJl
dHVybiBjb252ZXJ0UG9zaXRpb24oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiAKLSAgICByZXR1cm4g
TGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
QXV0bykpOworICAgIHJldHVybiB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6
OkF1dG8gfSB9OwogfQogCiBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKaW5kZXggMTNjYWQ5YjdmZDc3MmE2Y2QyMzk4MzQwZTI4Mjc3MWJkNDliNDQ2MS4uZTgzZWY5
YzRhN2YyZDRjZTEwMmFkZGI3OWM5YTdkMDI5YjMwODM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTk1Niw3ICs5NTYsNyBAQCBpbmxpbmUgdm9pZCBC
dWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xvciA9IGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLmNvbG9yKCk7CiAKLSAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1
ZTxTaGFkb3dEYXRhPihMZW5ndGhQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHls
ZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQo
KSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgICAgICBhdXRvIHNoYWRv
d0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KExlbmd0aFBvaW50IHsgeCwgeSB9LCBibHVy
LCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNo
YWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7
CiAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAg
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0
YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhl
IGZpcnN0IGVudHJ5CiAgICAgICAgIGVsc2UKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGlubGluZSB2
b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1CiAgICAgICAgICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0g
Y291bnRlclZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwogICAgICAgICAgICAgaWYgKGxpc3RTdHls
ZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0g
c3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2Mp
OwotICAgICAgICAgICAgYXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4o
Y291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+
c2VwYXJhdG9yKCkpOworICAgICAgICAgICAgYXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3Vu
dGVyQ29udGVudD4oQ291bnRlckNvbnRlbnQgeyBjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwg
bGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSB9KTsKICAgICAgICAgICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0
KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCmluZGV4IDMzNWYzZmFkZmFhZWVl
M2ViNjI1MWVmYjk4OTk1MzkxNGQ2MDE2MzUuLmQ4Zjc3ZjZhZjFiNTdhMjA4YTRlZTJkZTMzNTlh
NWJhYTg5ZDJjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5j
bHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBmNTYyYzkxMDMzMzA5NDVjMDdhN2JkZDhiZTQ0MmI1YTg4Nzc5NzBlLi4zYTgyYTdl
ZWU1NDJhMTNjMzMyM2JiZDBjODlmNjMyNGY5MWJkOWMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMjMg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFuZCBz
aW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTWVkaWFUaW1lLmNwcDogVXBkYXRlZCB0ZXN0cyBmb3IgY2hhbmdlIHRvIE9wdGlvblNl
dCBmb3IKKyAgICAgICAgTWVkaWFUaW1lIGZsYWdzLCBhbmQgZm9yIG5hbWUgY2hhbmdlIGZyb20g
Um91bmRpbmdGbGFncyB0byBSb3VuZGluZ01vZGUuCisKIDIwMjItMDEtMjAgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtFV1NdIFN1cHBvcnQgcHVsbCBy
ZXF1ZXN0IGluIEFuYXlsemVQYXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBjODIyNzc5
OGZhMTEyMmVmZTQ0YjJkNWM2NGZiZjY1MDMwMTU2ZWIwLi5lOTIxZTg5NmI3MGJhMmFhY2ZhNTk5
M2UyNTdjMzI5OWVkYjMwM2E2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KIAogT0JKQ19DTEFTUyBOU1VuZG9NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL01lZGlhVGltZS5jcHAKaW5kZXggYjBiNTRhODAzZmFjODVkMTU4NGU3MjNjODZlMWQ5
Y2JhNDRkY2U3YS4uZGM4ZTI4OTg0YWUzYTgwMmU1NzM4Njc2NjE1Mjk1OTRhYzU5ZDQ3OSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCkBAIC0xNzEsNyAr
MTcxLDcgQEAgVEVTVChXVEYsIE1lZGlhVGltZSkKIAogICAgIC8vIENvbnN0YW50cwogICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6Onplcm9UaW1lKCksIE1lZGlhVGltZSgwLCAxKSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lKC0xLCAxLCAwKSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lKC0xLCAxLCB7
IH0pKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCBN
ZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlKSk7CiAgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1l
ZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZSkpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Omlu
ZGVmaW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRpYVRpbWU6OkluZGVmaW5pdGUpKTsK
QEAgLTI1NCw2OSArMjU0LDY5IEBAIFRFU1QoV1RGLCBNZWRpYVRpbWUpCiAgICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgyLCAyKS50b1RpbWVTY2FsZSgxKS50aW1lVmFsdWUoKSwgMSk7CiAgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgyLCA2KS50b1RpbWVTY2FsZSgzKS50aW1lVmFsdWUoKSwgMSk7CiAg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxKS5oYXNCZWVuUm91bmRl
ZCgpLCB0cnVlKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCks
IDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7
Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSg0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdG
bGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6
SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6Okhh
bGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxm
QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
MywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZy
b21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJv
bVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZh
bHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dh
cmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1l
VmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwg
MCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7Ci0gICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgp
LCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3
YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01
MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybyku
dGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVl
KCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAt
Mik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsK
LSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAy
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAw
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1
ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1
ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00
OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5l
Z2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRO
ZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFn
czo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSg1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFs
ZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
NDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5
RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJv
KS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRp
bWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZh
bHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
LTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMCk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
MSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8p
LnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwg
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpU
b3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEs
IDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8p
LnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVl
KCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZy
b21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGlt
ZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAy
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJv
KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAt
Mik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMik7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAt
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCks
IC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwg
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVl
KCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5p
dHkpLnRpbWVWYWx1ZSgpLCAtMik7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KCksIDEpLnRvVGltZVNjYWxlKDIpLCBNZWRpYVRpbWU6OnBvc2l0
aXZlSW5maW5pdGVUaW1lKCkpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1pbigpLCAxKS50b1RpbWVTY2FsZSgyKSwgTWVkaWFUaW1lOjpuZWdhdGl2
ZUluZmluaXRlVGltZSgpKTsKICAgICBpbnQ2NF90IG1heEludDMyID0gbnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobWF4SW50MzIgKiAyLCAx
KS50b1RpbWVTY2FsZSgyKS50aW1lVmFsdWUoKSwgbWF4SW50MzIgKiA0KTsKICAgICBpbnQ2NF90
IGJpZ0ludCA9IDFMTCA8PCA2MjsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCwgMVUg
PDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8IDI5KS50aW1lVmFsdWUoKSwgYmlnSW50IC8gNCk7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQgKyAxLCAxVSA8PCAzMSkudG9UaW1lU2NhbGUo
MVUgPDwgMjksIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVl
KCksIGJpZ0ludCAvIDQpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50ICsgMSwgMVUg
PDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8IDI5LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93
YXJkWmVybykudGltZVZhbHVlKCksIGJpZ0ludCAvIDQpOwogICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoYmlnSW50ICsgMSwgMVUgPDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8IDI5KS5oYXNCZWVuUm91
bmRlZCgpLCB0cnVlKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCAtIDIsIE1lZGlh
VGltZTo6TWF4aW11bVRpbWVTY2FsZSkudG9UaW1lU2NhbGUoTWVkaWFUaW1lOjpNYXhpbXVtVGlt
ZVNjYWxlIC0gMSkuaGFzQmVlblJvdW5kZWQoKSwgdHJ1ZSk7CiAgICAgRVhQRUNUX0VRKE1lZGlh
VGltZShiaWdJbnQsIDEpLnRvVGltZVNjYWxlKE1lZGlhVGltZTo6TWF4aW11bVRpbWVTY2FsZSks
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7Cg==
</data>
<flag name="commit-queue"
          id="476107"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449883</attachid>
            <date>2022-01-24 17:02:41 -0800</date>
            <delta_ts>2022-01-24 21:53:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220124170240.patch</filename>
            <type>text/plain</type>
            <size>148282</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODc0NDFhNWRkODlkMjA2ZDI2NzQxZDA0MmRlYjY4NjRhZTdiZmVkLi5mMTA5NDRiYTBiMDhhZWRl
M2NmYWNlYjkwOTgzY2FhYmFkNDFjM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjQgIE1pa2hhaWwgUi4gR2FkZWxoYSAgPG1pa2hhaWxAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbSlNDXVszMmJpdF0gRml4IHJlZ2V4cCBjcmFzaCBvbiBBUk12NwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1
OTdjZTgyYjBmMDQ2MDc5YmRlMzExYzEzYzA4NjNhNDEyYmZmNjhlLi45MDgyOWI1NWMxODdlZjFi
MjhmNWI1ODI2MWZkYTIxNTEyMGRiZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMi0wMS0y
NCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5k
IHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOiBB
ZGQgU2Vjb25kcyBhbmQgV2FsbFRpbWUgdG8gdGhlIHVzaW5nIHNlY3Rpb24uCisKKyAgICAgICAg
KiB3dGYvTG9jay5oOiBVc2UgRm9yd2FyZC5oIGluc3RlYWQgb2YgU2Vjb25kcy5oIHNpbmNlIFNl
Y29uZHMgaXMgb25seSB1c2VkCisgICAgICAgIGhlcmUgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVy
biB0eXBlLCBubyBhY3R1YWwgdXNlIG9mIHRoZSBjbGFzcyBpbiB0aGUgaGVhZGVyLgorCisgICAg
ICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVkaWFU
aW1lKTogRGVsZXRlZCB0aGUgY29weSBjb25zdHJ1Y3RvciB0aGF0IHVzZWQgdGhlIGFzc2lnbm1l
bnQKKyAgICAgICAgb3BlcmF0b3IuIFRoZSBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3Igd29ya3Mg
ZmluZSwgd2UgZG9uJ3QgaGF2ZSB0byB3cml0ZSBvbmUuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6TWVkaWFUaW1lKTogQWRkZWQgYSBIYXNEb3VibGUgY29uc3RydWN0b3IgZm9yIHVzZSBpbiBj
cmVhdGUKKyAgICAgICAgZnVuY3Rpb25zLiBJdCdzIGNvbnN0ZXhwciBidXQgaXQncyBpbiB0aGUg
LmNwcCBmaWxlIGJlY2F1c2UgaXQncyBwcml2YXRlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhGbG9hdCk6IFNpbXBsaWZpZWQgYnkgdXNpbmcgdGhlIEhhc0RvdWJsZSBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgQWxzbyB1c2Ugc3RkOjppc25hbiBpbnN0ZWFkIG9mIGEgdHJpY2t5
IGFsdGVybmF0ZSB3YXkgb2YgZG9pbmcgaXQuIFJlbW92ZWQgYQorICAgICAgICBzcGVjaWFsIGNh
c2UgZm9yIGluZmluaXR5IHNpbmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIGNhc2VzIGFscmVh
ZHkgY292ZXIgdGhhdC4KKyAgICAgICAgQW5kIHJlcGxhY2VkIGEgc3RhdGljX2Nhc3Qgd2l0aCBh
biBhc3NpZ25tZW50IHRvIHRoZSBkZXNpcmVkIHR5cGUuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZSk6IERpdHRvLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHNvIHNpbWls
YXIgdGhlCisgICAgICAgIHNob3VsZCBwcm9iYWJseSBiZSB0ZW1wbGF0ZWQgaW5zdGVhZCBvZiBy
ZXBlYXRlZCB0d2ljZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0Zsb2F0IGNvbnN0KTog
UmVwbGFjZWQgYSBzdGF0aWNfY2FzdCB3aXRoIGFzc2lnbm1lbnQgdG8gdGhlCisgICAgICAgIGRl
c2lyZWQgdHlwZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0RvdWJsZSBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuIFRoZSBk
ZWZhdWx0IGFzc2lnbm1lbnQgb3BlcmF0b3Igd29ya3MgZmluZS4KKyAgICAgICAgKFdURjo6TWVk
aWFUaW1lOjpvcGVyYXRvcisgY29uc3QpOiBUYWtlIHRoZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0
ZWFkIG9mIHJlZmVyZW5jZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvci0gY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciogY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciEgY29uc3QpOiBTaW1wbGlm
aWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBieSB1c2luZworICAgICAgICBmdW5jdGlvbnMgaW5zdGVh
ZCBvZiBjaGVja2luZyB0aGUgZmxhZ3MgZGlyZWN0bHkuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IENhbGwgb3BlcmF0b3IhIGluc3RlYWQgb2YgcmVwZWF0
aW5nIHRoZQorICAgICAgICBsb2dpYyB0d2ljZS4KKyAgICAgICAgKFdURjo6b3JkZXJpbmcpOiBB
ZGRlZCB0d28gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuIE9uZSBpcyBhIHRlbXBsYXRlIHRoYXQgY29t
cGFyZXMKKyAgICAgICAgc2NhbGFycyBhbmQgdGhlIG90aGVyIGNvbXBhcmVzIHR3byBNZWRpYVRp
bWUgb2JqZWN0cy4gVGhlIHNlY29uZCBvbmUgcmVwbGFjZXMgdGhlCisgICAgICAgIE1lZGlhVGlt
ZTo6Y29tcGFyZSBmdW5jdGlvbiwgd2hpY2ggaXMgbm93IGp1c3QgYSBsaWdodHdlaWdodCBjb3Zl
ciBmb3IgdGhpcy4KKyAgICAgICAgVGhlIG9sZCBjb2RlIGhhZCB0cmlja3kgbG9naWMsIGFuZCB0
aGlzIG5ldyBmdW5jdGlvbiBpcyBhIGNvbXBsZXRlIHJld3JpdGUuCisgICAgICAgIFRvIG1ha2Ug
dGhlIGxvZ2ljIGVhc3kgdG8gZm9sbG93LCB3ZSBleHRyYWN0IHRoZSBwaWVjZXMgb2YgdGhlIE1l
ZGlhVGltZSBhbmQKKyAgICAgICAgY29tcGFyZSB0aGVtLiBJZiB0aGV5IGFyZSBlcXVhbCB0aGVu
IHdlIGZhbGwgdGhyb3VnaCB0byB0aGUgbmV4dCwgYW5kIHNvIG9uLgorICAgICAgICBBdCB0aGUg
ZW5kIHRoZXJlIGFyZSB2YXJpb3VzIGNhc2VzIGZvciB0aW1lcyB3ZSBjYW4gY29tcGFyZSB3aXRo
b3V0IGRvaW5nCisgICAgICAgIGFyaXRobWV0aWMsIGFuZCB0aGVzZSBhcmUgdGhlIHNhbWUgYXMg
dGhlIG9uZXMgdGhhdCB3ZXJlIGFscmVhZHkgaGVyZSwgYnV0IHdpdGgKKyAgICAgICAgc2ltcGxp
ZmllZCBsb2dpYyBpbiBzb21lIGNhc2VzIHRoYXQgc2hvdWRsIGJlIGVhc2llciB0byBmb2xsb3cs
IGFuZCBubyB1c2VzIG9mCisgICAgICAgIHN0YXRpY19jYXN0IGFueSBtb3JlLgorICAgICAgICAo
V1RGOjpNZWRpYVRpbWU6OmlzQmV0d2VlbiBjb25zdCk6IFRha2UgYXJndW1lbnRzIGJ5IHZhbHVl
IGluc3RlYWQgb2YgcmVmZXJlbmNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9UaW1l
KTogRGVsZXRlZC4gTm93IGEgY29uc3RleHByIGluIHRoZSBoZWFkZXIuCisgICAgICAgIChXVEY6
Ok1lZGlhVGltZTo6aW52YWxpZFRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKTogRGVsZXRlZC4gRGl0dG8u
CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUpOiBEZWxldGVkLiBEaXR0
by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b1RpbWVTY2FsZSBjb25zdCk6IFVwZGF0ZWQg
c2luY2UgUm91bmRpbmdGbGFncyBpcyBub3cKKyAgICAgICAgUm91bmRpbmdNb2RlLiBJdCBkaWRu
J3QgbWFrZSBzZW5zZSB0byB0cmVhdCBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgcG9saWNp
ZXMKKyAgICAgICAgYXMgImZsYWdzIi4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpzZXRUaW1l
U2NhbGUpOiBEaXR0by4gQWxzbyB1c2Ugc3RkOjpleGNoYW5nZSBpbnN0ZWFkIG9mIHN0ZDo6c3dh
cAorICAgICAgICBhbmQgdXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgbGxhYnMuCisgICAgICAgIChX
VEY6Ok1lZGlhVGltZTo6dG9KU09OT2JqZWN0IGNvbnN0KTogUmVtb3ZlZCBzdGF0aWNfY2FzdCB0
byBkb3VibGUuCisgICAgICAgIChXVEY6OmFicyk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5z
dGVhZCBvZiByZWZlcmVuY2UuIFJlbmFtZWQgYXJndW1lbnQgZnJvbSByaHMKKyAgICAgICAgc2lu
Y2UgdGhlIGFyZ3VtZW50IGlzIG5vdCB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG9wZXJhdG9y
LiBSZW1vdmVkIHVubmVlZGVkCisgICAgICAgIHNwZWNpYWwgY2FzZSB0byBoYW5kbGUgaW52YWxp
ZCBiZWNhdXNlIHRoZSBmdW5jdGlvbiB3b3JrcyBmaW5lIG9uIGludmFsaWQgd2l0aG91dCBpdC4K
KyAgICAgICAgVXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgZmFicy4KKyAgICAgICAgKFdURjo6b3Bl
cmF0b3I8PCk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5zdGVhZCBvZiByZWZlcmVuY2UuCisK
KyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmg6IFJlbW92ZWQgbWFueSB1bm5lZWRlZCBpbmNsdWRl
cy4gUmVtb3ZlZCBXVEZfRVhQT1JUX1BSSVZBVEUKKyAgICAgICAgZnJvbSB0aGUgY2xhc3MgYmVj
YXVzZSBpdCdzIG5vdCBjb21wYXRpYmxlIHdpdGggaW5saW5lZCBmdW5jdGlvbnMgYWNjb3JkaW5n
IHRvCisgICAgICAgIHRoZSBzdHlsZSBjaGVja2VyIHNjcmlwdCwgaW5zdGVhZCBleHBvcnRpbmcg
aW5kaXZpZHVhbCBmdW5jdGlvbnMuIFVzZSBPcHRpb25TZXQKKyAgICAgICAgZm9yIHRoZSBmbGFn
cy4gQ2hhbmdlZCBmdW5jdGlvbnMgdG8gdGFrZSBNZWRpYVRpbWUgYnkgdmFsdWUsIHNpbmNlIGl0
J3MganVzdCBhCisgICAgICAgIGZldyBzY2FsYXJzLCBubyBzaWduaWZpY2FudCBjb3N0IHRvIGNv
cHlpbmcgaXQsIGFuZCBwYXNzaW5nIGJ5IHZhbHVlIG1lYW5zIHRoZQorICAgICAgICB3aG9sZSB0
aGluZyBtaWdodCBlbmQgdXAgaW4gcmVnaXN0ZXJzIHNpbmNlIHdlIHdvbid0IG5lZWQgYSBwb2lu
dGVyIHRvIGl0IHRvCisgICAgICAgIHBhc3MgYXMgdGhlIHJlZmVyZW5jZS4gTWFkZSB0aGUgdmFy
aW91cyBzcGVjaWFsIHRpbWVzIHJldHVybiBjb25zdGV4cHIgdmFsdWVzLAorICAgICAgICB3aGlj
aCB3aWxsIGNvbXBpbGUgdGhlIGFwcHJvcHJpYXRlIGJpdCBwYXR0ZXJuIHdpdGhvdXQgYW55IGNv
bXB1dGF0aW9uIG5lZWRlZC4KKyAgICAgICAgQ2hhbmdlZCB0aGUgdGltZVZhbHVlIGFuZCB0aW1l
U2NhbGUgZnVuY3Rpb25zIHRvIHJldHVybiB0aGUgc2NhbGFycywgbm90IGEKKyAgICAgICAgY29u
c3QgcmVmZXJlbmNlLiBSZW5hbWVkIFJvdW5kaW5nRmxhZ3MgdG8gUm91bmRpbmdNb2RlIHNpbmNl
IGl0J3MgYSBidW5jaCBvZgorICAgICAgICBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgbW9k
ZXMsIG5vdCBhIHNldCBvZiBmbGFncyB3ZSBjYW4gY29tYmluZS4gUmVuYW1lZAorICAgICAgICB0
aGUgZGF0YSBtZW1iZXJzLCBzaW5jZSB0aGV5IGRvbuKAmXQgYWxsIG5lZWQgYSAidGltZSIgcHJl
Zml4IGluIGEgY2xhc3MgdGhhdCBpcworICAgICAgICBhbHJlYWR5IG5hbWVkIE1lZGlhVGltZS4g
VG9vayBzb21lIHVubmVlZGVkIGNvbnN0IG91dCBvZiBNZWRpYVRpbWVSYW5nZS4KKyAgICAgICAg
QWRkZWQgdGhlIEVudW1UcmFpdHMgZm9yIHRoZSBmbGFncyBzbyB0aGV5IGNhbiBiZSBlbmNvZGVk
IGFuZCBkZWNvZGVkLiBCZWZvcmUKKyAgICAgICAgd2Ugd2VyZSBlbmNvZGluZyB0aGUgc2V0IG9m
IGZsYWdzIGFzIGEgdWludDhfdCwgdGhpcyBpcyBiZXR0ZXIuCisKKyAgICAgICAgKiB3dGYvU2Vj
b25kcy5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6U2Vjb25kcyIgdG8gRm9yd2FyZC5oLgorCisg
ICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDogSW5jbHVkZSBGb3J3YXJkLmggaW5z
dGVhZCBvZiBXYWxsVGltZS5oIHNpbmNlCisgICAgICAgIHRoaXMgZmlsZSBvbmx5IGRlZmluZXMg
YSBmdW5jdGlvbiB3aXRoIGEgV2FsbFRpbWUgYXJndW1lbnQgYW5kIGRvZXNuJ3QgbmVlZAorICAg
ICAgICB0byBwdWxsIHRoZSBlbnRpcmUgY2xhc3MgZGVmaW5pdGlvbiBpbi4KKworICAgICAgICAq
IHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjpwb3J0QWxsb3dlZCk6IFVzZSBTb3J0ZWRBcnJh
eVNldC4KKworICAgICAgICAqIHd0Zi9XYWxsVGltZS5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6
V2FsbFRpbWUiIHRvIEZvcndhcmQuaC4KKworICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50Q29kZXIuaDogSW5jbHVkZSA8b3B0aW9uYWw+IGluc3RlYWQgb2YgRm9yd2FyZC5oLgor
ICAgICAgICBUaGUgZm9ybWVyIGlzIGFsbCB0aGF0J3MgbmVlZGVkLgorCisgICAgICAgICogd3Rm
L3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcDogQWRkZWQgYW4gaW5jbHVkZSBvZiBXYWxsVGltZS5o
IHNpbmNlCisgICAgICAgIFRocmVhZGluZ1ByaW1pdGl2ZXMuaCBubyBsb25nZXIgcHVsbHMgaXQg
aW4uCisKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmg6IEFkZGVkIGFuIGluY2x1ZGUg
b2YgPG9wdGlvbmFsPiBzaW5jZSBMb2NrLmggbm8KKyAgICAgICAgbG9uZ2VyIHB1bGxzIGl0IGlu
IGJ5IGluY2x1ZGluZyBTZWNvbmRzLmguCisKKyAgICAgICAgKiB3dGYvd2luL1RocmVhZGluZ1dp
bi5jcHA6IEFkZGVkIGluY2x1ZGUgb2YgV2FsbFRpbWUuaCBzaW5jZQorICAgICAgICBUaHJlYWRp
bmdQcmltaXRpdmVzLmggbm8gbG9uZ2VyIHB1bGxzIGl0IGluLgorCisKIDIwMjItMDEtMjQgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgQnVpbGQg
ZmFpbHVyZSB3aXRoIEdDQyAxMjogbm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gJ2Vu
ZChMQ2hhciBbN10pJwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQwNzJiMjc1MjI4ZjlkMTZiYmQ2OGU1NTEyMmFh
MWI2ODhkNjRhOWIuLmZmYjkxYTE0Mzk4ZmYwZDBiMjEwZWY1MjljNDlhOTE4M2IzMWEwMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMjItMDEtMjQgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFuZCBzaW1wbGlmeSBNZWRpYVRpbWUg
YW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0
aW9uRGF0YS5oOiBBZGRlZCBpbmNsdWRlIG9mCisgICAgICAgIDxvcHRpb25hbD4gc2luY2Ugbm90
aGluZyBwdWxscyB0aGVtIGluLgorCisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgc2luY2Ug
VGFiU2l6ZSBhbmQgTGVuZ3RoUG9pbnQgYXJlIGJvdGggbm93CisgICAgICAgIHN0cnVjdHVyZXMs
IGFuZCBoYXZlIHB1YmxpYyBkYXRhIG1lbWJlcnMgcmF0aGVyIHRoYW4gZ2V0dGVyIGZ1bmN0aW9u
cy4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0ZvckJsZW5kaW5nKTogIFVwZGF0ZWQgdG8gcmV0
dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAgICAgIGEgbmV2ZXItbnVsbCBwb2ludGVy
IGFuZCBmb3IgY2hhbmdlcyB0byBMZW5ndGhQb2ludC4KKworICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JQb3Np
dGlvbik6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAg
IChXZWJDb3JlOjp2YWx1ZUZvclBvc2l0aW9uT3JBdXRvKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgaXMg
YSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2
YWx1ZUZvclByb3BlcnR5SW5TdHlsZSk6IFVwZGF0ZWQKKyAgICAgICAgc2luY2UgVGFiU2l6ZSBp
cyBhIHN0cnVjdHVyZS4KKworICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cG9pbnRGb3JMZW5ndGhQb2ludCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3Ro
UG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQpOiBEaXR0by4KKworICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6U3R5bGU6OnRhYlNpemUgY29uc3QpOiBQYXNz
IFRhYlNpemUgYnkgdmFsdWUgaW5zdGVhZAorICAgICAgICBvZiBieSByZWZlcmVuY2UuCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNQb3RlbnRpYWxD
dXN0b21FbGVtZW50TmFtZUNoYXJhY3Rlcik6IFVzZSBTb3J0ZWRBcnJheVNldC4KKyAgICAgICAg
SXQgZG9lcyB0aGUgc29ydGVkIGNoZWNrIGF0IGNvbXBpbGUgdGltZSBpbnN0ZWFkIG9mIGF0IHJ1
bnRpbWUgaW4gZGVidWcKKyAgICAgICAgYnVpbGRzLCBhbmQgYWxzbyBzZWxlY3RzIGxpbmVhciBz
ZWFyY2ggaWYgaXQncyBmYXN0ZXIgdGhhbiBiaW5hcnkgc2VhcmNoLgorCisgICAgICAgICogcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaDogQWRkZWQgaW5jbHVkZSBvZiBXYWxsVGlt
ZS5oLCBubworICAgICAgICBsb25nZXIgcHVsbGVkIGluIGJ5IFRocmVhZGluZy5oLgorCisgICAg
ICAgICogcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5oOiBDaGFuZ2VkIExlbmd0aFBvaW50IHRvIGJlIGEg
dHJ1ZSBzdHJ1Y3R1cmUKKyAgICAgICAgd2l0aCBwdWJsaWMgZGF0YSBtZW1iZXJzLiBUaGUgb2xk
IG9uZSB3YXMsIHN0cmFuZ2VseSwgYSBzdHJ1Y3QsIGJ1dAorICAgICAgICB3aXRoIHByaXZhdGUg
ZGF0YS4gUmVtb3ZlZCB0aGUgY29uc3RydWN0b3JzLCBnZXR0ZXJzLCBhbmQgc2V0dGVycy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOiBBdm9pZCBhIHdhcm5pbmcgYWJvdXQgbWl4
ZWQgaW50ZWdlcgorICAgICAgICB0eXBlcyBieSB1c2luZyBhIGxvY2FsIHZhcmlhYmxlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjp0YWJXaWR0aCBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBp
bnN0ZWFkCisgICAgICAgIG9mIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RhYlNpemUuaDogUmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSB0aGUgZGF0YQor
ICAgICAgICBtZW1iZXJzIHNpbmNlIFRhYlNpemUgaXMgYSBzdHJ1Y3QuIFJlbW92ZWQgdGhlIGdl
dHRlcnMuIE1hcmtlZCB0aGUKKyAgICAgICAgb3BlcmF0b3IgYm9vbCBleHBsaWNpdCBzaW5jZSB3
ZSBkb24ndCB3YW50IHRvIGFjY2lkZW50YWxseSBwYXNzIHRoaXMKKyAgICAgICAgdG8gc29tZXRo
aW5nIHRha2luZyBhbiBpbnRlZ2VyIGFuZCBnZXR0aW5nIGEgMCBvciAxLiBBZGRlZCBhIFRleHRT
dHJlYW0KKyAgICAgICAgb3ZlcmxvYWQgc28gd2UgY2FuIHN0cmVhbSB0aGlzIHdpdGhvdXQgZXhw
bGljaXRseSBwaWNraW5nIGl0IGFwYXJ0IGF0CisgICAgICAgIGVhY2ggY2FsbCBzaXRlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJ1bjo6dGFiU2l6ZSBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBpbnN0ZWFkIG9m
CisgICAgICAgIGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnNldFRh
YlNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBMZXZlbCk6IFVzZSBTb3J0ZWRBcnJh
eVNldC4gU2FtZSByZWFzb25zIGFzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQ
Q29sb3JQcmltYXJpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUFRyYW5z
ZmVyQ2hhcmFjdGVyaXN0aWNzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBN
YXRyaXhDb2VmZmljaWVudHMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmg6Cisg
ICAgICAgIFJlbW92ZWQgdGhlIG1fIHByZWZpeGVzIGZyb20gSW5iYW5kQ2hhcHRlclRyYWNrUHJp
dmF0ZUFWRk9iakM6OkNoYXB0ZXJEYXRhCisgICAgICAgIGRhdGEgbWVtYmVycyBzaW5jZSBpdCdz
IGEgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvUXVldWVkVmlkZW9PdXRwdXQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091
dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKTogRml4ZWQgYQorICAgICAgICBi
dWcgd2hlcmUgdGhpcyB1c2VkIGN1cnJlbnRJbWFnZVRpbWUgaW5zdGVhZCBvZiBuZXh0SW1hZ2Ug
dGltZSwgZXhwb3NlZAorICAgICAgICBiZWNhdXNlIHRoZSBjaGFuZ2VzIHRvIE1lZGlhVGltZSBt
YWRlIGl0IGdpdmUgdXMgYW4gdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25z
dW1lRnJhbWVEYXRhKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBwYXJzZU9wdXNQcml2YXRlRGF0
YSBub3cgcmV0dXJucyBhbiBvcHRpb25hbCBpbnN0ZWFkIG9mCisgICAgICAgIHJldHVybmluZyBh
IGJvb2xlYW4gYW5kIHVzaW5nIGFuIG91dCBhcmd1bWVudC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmg6IEFkZGVkIGFuIGluY2x1
ZGUKKyAgICAgICAgb2YgU2Vjb25kcy5oIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIHB1bGxlZCBpbiBi
eSBvdGhlciBpbmNsdWRlcyBhbmQKKyAgICAgICAgdGhpcyBzdHJ1Y3R1cmUgaGFzIGEgU2Vjb25k
cyBkYXRhIG1lbWJlci4gQ2hhbmdlZCB0aGUgcGFyc2VPcHVzUHJpdmF0ZURhdGEKKyAgICAgICAg
ZnVuY3Rpb24gdG8gcmV0dXJuIGFuIG9wdGlvbmFsIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgYm9v
bCBhbmQgdXNpbmcKKyAgICAgICAgYW4gb3V0IGFyZ3VtZW50IGZvciB3aGF0IGlzIHBhcnNlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHVzUHJpdmF0ZURhdGEpOiBEaXR0by4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbTogUmVtb3ZlZCB0aGUg
Y29uc3RydWN0b3JzIGZyb20KKyAgICAgICAgT1NCdWlsZEluZm8gYW5kIG1hZGUgYWxsIGl0cyBv
cGVyYXRvcnMgY29uc3RleHByLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Jhc2VBdWRpb1NoYXJlZFVuaXQuaDogQWRkZWQgYW4gaW5jbHVkZQorICAgICAgICBvZiBTZWNv
bmRzLmgsIG5vIGxvbmdlciBwdWxsZWQgaW4gYnkgTG9jay5oLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW06IEFkZGVkIGFuIGluY2x1ZGUg
b2YKKyAgICAgICAgV2FsbFRpbWUuaCwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBUaHJlYWRpbmdQ
cmltaXRpdmVzLmguCisKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKTogUmV0dXJuIGFuIG9wdGlv
bmFsIGluc3RlYWQgb2YKKyAgICAgICAgYSB1bmlxdWVfcHRyLiBObyByZWFzb24gdG8gdXNlIGEg
aGVhcCBibG9jayBmb3IgdGhpcy4KKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5oOiBVcGRhdGVk
IHNpbmNlIEdyaWRBcmVhIGlzIG5vdyBhIHN0cnVjdCBhbmQgZm9yIHRoZSBhYm92ZS4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCBjb25zdCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNv
bnRlbnQKKyAgICAgICAgaXMgbm93IGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQgY29uc3QpOgorICAgICAg
ICBSZXR1cm4gYSBHcmlkQXJlYSBpbnN0ZWFkIG9mIGEgdW5pcXVlX3B0ci4gVGhlIHJldHVybiB2
YWx1ZSBpcyBuZXZlciBudWxsIGFuZAorICAgICAgICB0aGVyZSBpcyBubyBuZWVkIHRvIHB1dCBp
dCBvbiB0aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlU3BlY2lm
aWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOiBVcGRhdGVkIGZvcgorICAgICAgICB0aGUg
YWJvdmUgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFq
b3JBeGlzSXRlbU9uR3JpZCBjb25zdCk6IFVzZSBvcHRpb25hbCBpbnN0ZWFkCisgICAgICAgIG9m
IHVuaXF1ZV9wdHIgZm9yIGEgbG9jYWwgdmFyaWFibGUgd2l0aCB0aGUgZW1wdHkgZ3JpZCBhcmVh
IGluIGl0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6IFVwZGF0ZWQgc2luY2Ug
R3JpZEFyZWEgaXMgYSBzdHJ1Y3QgYW5kIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDogVXNlIGNvbnN0ZXhwci4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdCBjb25zdCk6IFVwZGF0ZWQgc2luY2UKKyAg
ICAgICAgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpkZWJ1
Z1RleHRTaGFkb3cgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5oOiBTdHlsZSB0d2Vha3MuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ291
bnRlckNvbnRlbnQuaDogVHVybmVkIHRoZSBDb3VudGVyQ29udGVudCBjbGFzcyBpbnRvIGEKKyAg
ICAgICAgc3RydWN0dXJlIHdpdGggcHVibGljIGRhdGEgbWVtYmVycy4KKworICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDogUmVtb3ZlZCB0aGUgRmlsbFNpemUgY29uc3RydWN0
b3JzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6IE1hZGUgR3JpZFNw
YW5UeXBlIGJlIGJhc2VkIG9uIGEgdWludDhfdC4KKyAgICAgICAgUmVvcmRlcmVkIHRoZSBkYXRh
IG1lbWJlcnMgb2YgR3JpZEFyZWEgdG8gYmUgcm93cyBmaXJzdCBhbmQgdGhlbiBjb2x1bW5zCisg
ICAgICAgIHRvIGZvbGxvdyB0aGUgb3JkZXIgZnJvbSB0aGUgY29uc3RydWN0b3IgYW5kIGFsc28g
dGhlIGNvbnZlbnRpb25hbAorICAgICAgICAieCBiZWZvcmUgeSIgb3JkZXJpbmcuIFRoaXMgd2ls
bCBhbHNvIGJlIGdvb2Qgc29tZSBkYXkgd2hlbiB3ZSBjYW4gdXNlIHRoZQorICAgICAgICBkZWZh
dWx0IDw9PiBmcm9tIEMrKzIwLCB3aGljaCBkZXBlbmRzIG9uIGRhdGEgbWVtYmVyIG9yZGVyaW5n
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaDogVHdlYWtlZCBjb21t
ZW50cyBhbmQgbW92ZWQgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgb2YgbV9mbGV4IGZyb20gdGhl
IGNvbnN0cnVjdG9yIHRvIHRoZSBkYXRhIG1lbWJlciBkZWZpbml0aW9uLgorCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOiBVcGRhdGVkIHNpbmNlCisg
ICAgICAgIExlbmd0aFBvaW50IGlzIGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmg6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgYW5kIExl
bmdodFBvaW50CisgICAgICAgIGFyZSBzdHJ1Y3R1cmVzLCBhbmQgdG8gcGFzcyBUYWJTaXplIGJ5
IHZhbHVlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6IFNpbXBsaWZpZWQgY29uc3Ry
dWN0b3Igc2luY2UgbV9sb2NhdGlvbgorICAgICAgICBkb2VzIG5vdCBoYXZlIHRvIGJlIHNwbGl0
IG91dCBpbnRvIHggYW5kIHkganVzdCB0byBjb3B5IGl0LgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TaGFkb3dEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dE
YXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjp4IGNvbnN0KTogVXBk
YXRlZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBub3cgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dEYXRhOjp5IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMu
CisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZSk6IFVwZGF0ZWQg
c2luY2UgVGFiU2l6ZQorICAgICAgICBubyBsb25nZXIgaGFzIGNvbnN0cnVjdG9ycy4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24pOiBV
cGRhdGVkIHNpbmNlIExlbmd0aFBvaW50CisgICAgICAgIG5vIGxvbmdlciBoYXMgY29uc3RydWN0
b3JzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQ
b3NpdGlvbk9yQXV0byk6IERpdHRvLgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckN1c3Rv
bS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9y
Qm94U2hhZG93VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQK
KyAgICAgICAgbm8gbG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisKIDIwMjItMDEtMjQgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBVcGRh
dGUgUGFzdGVib2FyZDo6cmVhZCB0byBwcmlvcml0aXplIG5hdGl2ZSByZXByZXNlbnRhdGlvbnMg
b3ZlciBUSUZGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAxMDNjOTQ5M2ZjODNkNGM3MzBhMDNhMzE0
MDA1NWU0Yzc3MDAyNDAzLi45M2I1ZWRiYzU4MzNlOWIwY2E4NDk2ZGE5MDFlMGM0NDBlZTI1ZTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMS0yMyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5
IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGlt
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChQQUw6OkNNVGltZUhhc0ZsYWdzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFBBTDo6dG9NZWRpYVRpbWUpOiBUYWtlIENNVGltZSBieSB2YWx1ZS4gQWxz
byBzaW1wbGlmaWVkIGxvZ2ljCisgICAgICAgIHRvIGp1c3QgY2hlY2sgb25lIGZsYWcgYXQgYSB0
aW1lLCB3aGljaCBtZWFucyB0aGUgQ01UaW1lSGFzRmxhZ3MKKyAgICAgICAgZnVuY3Rpb24gaXNu
J3QgbmVlZGVkIGFueSBtb3JlLiBBbHNvIG5vdyB1c2VzIE9wdGlvblNldCBiZWNhdXNlCisgICAg
ICAgIHRoYXQgaXMgaG93IE1lZGlhVGltZSB3b3Jrcy4KKyAgICAgICAgKFBBTDo6dG9DTVRpbWUp
OiBUYWtlIE1lZGlhVGltZSBieSB2YWx1ZS4KKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKIDIwMjItMDEt
MjQgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aW1wbGlmeSBhY2Nlc3NlcyB0byBTeXN0ZW1WZXJzaW9uLnBsaXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0MjZk
Yjc2M2NkZmEzM2JiMDVlM2Y2ZDRjNDdmMDcwNGVkYmU4NDcuLmRhZmFjMTc0M2Q3NGM4NjQ4YmIy
NDhjNWM5ZWRlMzUxMDZiZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEt
MjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFu
ZCBzaW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oOgorICAgICAgICBBZGRl
ZCBhbiBpbmNsdWRlIG9mIDxvcHRpb25hbD4sIG5vIGxvbmdlciBwdWxsZWQgaW4gYm90aCBvdGhl
ciBoZWFkZXJzLgorCiAyMDIyLTAxLTI0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZ3Jlc3Npb24gKHIyODY5MzYpOiBTZXNzaW9uU3RvcmFnZSBkYXRhIGlz
IG5vdCBjbGVhcmVkIHdoZW4gZGVsZXRpbmcgd2Vic2l0ZSBkYXRhIGJ5IG1vZGlmaWNhdGlvbiB0
aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1w
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3Bw
CmluZGV4IDVmNjYzYjJmZjVhNWUzY2UwOGNlNDEyOTViODBhOWI3MTA2Yzg5NzkuLjU0NmNhZDc2
ZWM4OGQ3MTA1NDFlNmEzZTU5ODVmYTY0OTVmYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3
YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggM2NlNzYxMjQyYzMyZWMxNjk0
YzY1YTc3ZTc0MGU5YzY2OTNjM2JiNC4uMzY0ODcyYTIwMWM2ZGJlZmZjOTdlNGM5MGM2NTYxYmY1
OWQwNzRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHVzaW5nIFdURjo6UmVmUHRy
OwogdXNpbmcgV1RGOjpSZXRhaW5QdHI7CiB1c2luZyBXVEY6OlNIQTE7CiB1c2luZyBXVEY6OlNj
b3BlZExhbWJkYTsKK3VzaW5nIFdURjo6U2Vjb25kczsKIHVzaW5nIFdURjo6U3RyaW5nOwogdXNp
bmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CkBAIC0xNjEs
NiArMTYyLDcgQEAgdXNpbmcgV1RGOjpUZXh0U3RyZWFtOwogdXNpbmcgV1RGOjpVUkw7CiB1c2lu
ZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5nIFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXYWxsVGlt
ZTsKIHVzaW5nIFdURjo6V2Vha1B0cjsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNp
bmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXgg
NDJlNGFhYzBjOWE0YWFlNTllNzFiNWU5MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQz
MTY5MGM2NDJlYmI3YmI3NmVhNzY5OTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9j
ay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0xvY2tBbGdvcml0aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZXR5QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKaW5kZXggMjI0ZTc3NDk1ZmI5MzgzNGY1OGY5Y2YzMjM0
MzdmMzkxNjkzOTQyZi4uYThiOWMzNDNjNzM4Y2MwNjdlMzAwZWUzMGFjMzFlNzZmNGViN2Q0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC03Miw5ICs3Miw5IEBAIHN0YXRpYyBpbnQ2NF90IHNpZ251
bShpbnQ2NF90IHZhbCkKIAogY29uc3QgdWludDMyX3QgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNj
YWxlID0gMTAwMDAwMDAwMDsKIAotTWVkaWFUaW1lOjpNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1l
JiByaHMpCitjb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91
YmxlIHZhbHVlKQorICAgIDogbV92YWx1ZUFzRG91YmxlKHZhbHVlKQogewotICAgICp0aGlzID0g
cmhzOwogfQogCiBNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxv
YXRUaW1lKQpAQCAtODQsNTcgKzg0LDUxIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhGbG9hdChmbG9hdCBmbG9hdFRpbWUpCiAgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAgICBNZWRpYVRpbWUgdmFsdWUo
MCwgRGVmYXVsdFRpbWVTY2FsZSwgVmFsaWQgfCBEb3VibGVWYWx1ZSk7Ci0gICAgdmFsdWUubV90
aW1lVmFsdWVBc0RvdWJsZSA9IGZsb2F0VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgZG91
YmxlIHZhbHVlID0gZmxvYXRUaW1lOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsK
IH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGlt
ZSwgdWludDMyX3QgdGltZVNjYWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZs
b2F0KGZsb2F0IHZhbHVlLCB1aW50MzJfdCB0aW1lU2NhbGUpCiB7Ci0gICAgaWYgKGZsb2F0VGlt
ZSAhPSBmbG9hdFRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1
cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQotICAgICAg
ICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgp
IDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZmxvYXRUaW1lID49IG1heFBsdXNP
bmU8aW50NjRfdD4pCisgICAgaWYgKHZhbHVlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAg
ICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICBpZiAodmFsdWUgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CiAgICAgaWYgKCF0aW1lU2NhbGUpCi0gICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUg
KGZsb2F0VGltZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIHdoaWxl
ICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICB0aW1l
U2NhbGUgLz0gMjsKLSAgICByZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZs
b2F0VGltZSAqIHRpbWVTY2FsZSksIHRpbWVTY2FsZSwgVmFsaWQpOworICAgIGludDY0X3Qgc2Nh
bGVkVmFsdWUgPSB2YWx1ZSAqIHRpbWVTY2FsZTsKKyAgICByZXR1cm4geyBzY2FsZWRWYWx1ZSwg
dGltZVNjYWxlIH07CiB9CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
ZG91YmxlIGRvdWJsZVRpbWUpCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAg
IGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0g
ICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25i
aXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0
ZVRpbWUoKTsKLQotICAgIE1lZGlhVGltZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxp
ZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZG91Ymxl
VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpKQorICAg
ICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
OiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUg
fTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91
YmxlVGltZSwgdWludDMyX3QgdGltZVNjYWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShkb3VibGUgdmFsdWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAo
ZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGlt
ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGlt
ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIGlmICh2YWx1ZSA+PSBtYXhQbHVzT25lPGlu
dDY0X3Q+KQogICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAo
ZG91YmxlVGltZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlm
ICh2YWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICBy
ZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0
KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgp
OwogCi0gICAgd2hpbGUgKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2
NF90PikKKyAgICB3aGlsZSAodmFsdWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90
PikKICAgICAgICAgdGltZVNjYWxlIC89IDI7Ci0gICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzdGQ6OnJvdW5kKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUpKSwgdGltZVNj
YWxlLCBWYWxpZCk7CisgICAgaW50NjRfdCBzY2FsZWRWYWx1ZSA9IHN0ZDo6cm91bmQodmFsdWUg
KiB0aW1lU2NhbGUpOworICAgIHJldHVybiB7IHNjYWxlZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0K
IAogZmxvYXQgTWVkaWFUaW1lOjp0b0Zsb2F0KCkgY29uc3QKQEAgLTE0Niw4ICsxNDAsOSBAQCBm
bG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKTsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVZh
bHVlQXNEb3VibGU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbWVWYWx1ZSkg
LyBtX3RpbWVTY2FsZTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVBc0RvdWJsZTsKKyAgICBmbG9h
dCB2YWx1ZSA9IG1fdmFsdWU7CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAogZG91
YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUoKSBjb25zdApAQCAtMTU5LDE5ICsxNTQsMTIgQEAgZG91
YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7CiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVW
YWx1ZUFzRG91YmxlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVl
KSAvIG1fdGltZVNjYWxlOworICAgICAgICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOworICAgIGRv
dWJsZSB2YWx1ZSA9IG1fdmFsdWU7CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAot
TWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocykKLXsK
LSAgICBtX3RpbWVWYWx1ZSA9IHJocy5tX3RpbWVWYWx1ZTsKLSAgICBtX3RpbWVTY2FsZSA9IHJo
cy5tX3RpbWVTY2FsZTsKLSAgICBtX3RpbWVGbGFncyA9IHJocy5tX3RpbWVGbGFnczsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhNZWRp
YVRpbWUgcmhzKSBjb25zdAogewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwpAQCAtMTkyLDcgKzE4MCw3IEBAIE1l
ZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QK
ICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91
YmxlVmFsdWUoKSAmJiByaHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlICsgcmhzLm1fdGltZVZh
bHVlQXNEb3VibGUpOworICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KG1fdmFsdWVBc0RvdWJsZSArIHJocy5tX3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0Rv
dWJsZVZhbHVlKCkgfHwgcmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUodG9Eb3VibGUoKSArIHJocy50b0RvdWJsZSgpKTsKQEAg
LTIwMSwxMyArMTg5LDEzIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQz
Ml90IGNvbW1vblRpbWVTY2FsZTsKLSAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUoYS5tX3Rp
bWVTY2FsZSwgYi5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2Nh
bGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZShhLm1f
c2NhbGUsIGIubV9zY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBN
YXhpbXVtVGltZVNjYWxlKQogICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNj
YWxlOwogICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1l
U2NhbGUoY29tbW9uVGltZVNjYWxlKTsKLSAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3RpbWVWYWx1
ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVBZGQo
YS5tX3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRp
bWVTY2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAg
ICByZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2
ZUluZmluaXRlVGltZSgpOwogICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAg
YS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUo
Y29tbW9uVGltZVNjYWxlKTsKQEAgLTIxNSw3ICsyMDMsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1l
OjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAgcmV0dXJuIGE7CiB9
CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShNZWRpYVRpbWUgcmhzKSBjb25z
dAogewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBpbnZhbGlkVGltZSgpOwpAQCAtMjM2LDcgKzIyNCw3IEBAIE1lZGlhVGltZSBNZWRpYVRp
bWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJu
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiBy
aHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlIC0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOwor
ICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJs
ZSAtIHJocy5tX3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwg
cmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUodG9Eb3VibGUoKSAtIHJocy50b0RvdWJsZSgpKTsKQEAgLTI0NSwxMyArMjMzLDEz
IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QKICAgICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVT
Y2FsZTsKLSAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV90aW1lU2NhbGUsIHJo
cy5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhp
bXVtVGltZVNjYWxlKQorICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3NjYWxl
LCByaHMubV9zY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhp
bXVtVGltZVNjYWxlKQogICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxl
OwogICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2Nh
bGUoY29tbW9uVGltZVNjYWxlKTsKLSAgICB3aGlsZSAoIXNhZmVTdWIoYS5tX3RpbWVWYWx1ZSwg
Yi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVTdWIoYS5t
X3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVT
Y2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRp
dmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICBy
ZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpOwogICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5z
ZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29t
bW9uVGltZVNjYWxlKTsKQEAgLTI3NSw5ICsyNjMsOSBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpv
cGVyYXRvci0oKSBjb25zdAogCiAgICAgTWVkaWFUaW1lIG5lZ2F0aXZlVGltZSA9ICp0aGlzOwog
ICAgIGlmIChuZWdhdGl2ZVRpbWUuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgbmVnYXRpdmVU
aW1lLm1fdGltZVZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNEb3Vi
bGU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5tX3ZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1l
Lm1fdmFsdWVBc0RvdWJsZTsKICAgICBlbHNlCi0gICAgICAgIG5lZ2F0aXZlVGltZS5tX3RpbWVW
YWx1ZSA9IC1uZWdhdGl2ZVRpbWUubV90aW1lVmFsdWU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5t
X3ZhbHVlID0gLW5lZ2F0aXZlVGltZS5tX3ZhbHVlOwogICAgIHJldHVybiBuZWdhdGl2ZVRpbWU7
CiB9CiAKQEAgLTMwNywxNCArMjk1LDE0IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9y
KihpbnQzMl90IHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYSA9ICp0aGlzOwogCiAgICAgaWYg
KGEuaGFzRG91YmxlVmFsdWUoKSkgewotICAgICAgICBhLm1fdGltZVZhbHVlQXNEb3VibGUgKj0g
cmhzOworICAgICAgICBhLm1fdmFsdWVBc0RvdWJsZSAqPSByaHM7CiAgICAgICAgIHJldHVybiBh
OwogICAgIH0KIAotICAgIHdoaWxlICghc2FmZU11bHRpcGx5KGEubV90aW1lVmFsdWUsIHJocywg
YS5tX3RpbWVWYWx1ZSkpIHsKLSAgICAgICAgaWYgKGEubV90aW1lU2NhbGUgPT0gMSkKLSAgICAg
ICAgICAgIHJldHVybiBzaWdudW0oYS5tX3RpbWVWYWx1ZSkgPT0gc2lnbnVtKHJocykgPyBwb3Np
dGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICAgICAgYS5z
ZXRUaW1lU2NhbGUoYS5tX3RpbWVTY2FsZSAvIDIpOworICAgIHdoaWxlICghc2FmZU11bHRpcGx5
KGEubV92YWx1ZSwgcmhzLCBhLm1fdmFsdWUpKSB7CisgICAgICAgIGlmIChhLm1fc2NhbGUgPT0g
MSkKKyAgICAgICAgICAgIHJldHVybiBzaWdudW0oYS5tX3ZhbHVlKSA9PSBzaWdudW0ocmhzKSA/
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworICAgICAg
ICBhLnNldFRpbWVTY2FsZShhLm1fc2NhbGUgLyAyKTsKICAgICB9CiAKICAgICByZXR1cm4gYTsK
QEAgLTMyMiwxNzYgKzMxMCwxMDkgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IqKGlu
dDMyX3QgcmhzKSBjb25zdAogCiBib29sIE1lZGlhVGltZTo6b3BlcmF0b3IhKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKG1fdGltZUZsYWdzID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAg
ICAgfHwgKG1fdGltZUZsYWdzID09IChWYWxpZCB8IERvdWJsZVZhbHVlKSAmJiAhbV90aW1lVmFs
dWVBc0RvdWJsZSkKLSAgICAgICAgfHwgaXNJbnZhbGlkKCk7CisgICAgcmV0dXJuIGlzSW52YWxp
ZCgpIHx8IChoYXNEb3VibGVWYWx1ZSgpID8gIW1fdmFsdWVBc0RvdWJsZSA6ICFtX3ZhbHVlKTsK
IH0KIAogTWVkaWFUaW1lOjpvcGVyYXRvciBib29sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gISht
X3RpbWVGbGFncyA9PSBWYWxpZCAmJiAhbV90aW1lVmFsdWUpCi0gICAgICAgICYmICEobV90aW1l
RmxhZ3MgPT0gKFZhbGlkIHwgRG91YmxlVmFsdWUpICYmICFtX3RpbWVWYWx1ZUFzRG91YmxlKQot
ICAgICAgICAmJiAhaXNJbnZhbGlkKCk7CisgICAgcmV0dXJuICEhKnRoaXM7CiB9CiAKLU1lZGlh
VGltZTo6Q29tcGFyaXNvbkZsYWdzIE1lZGlhVGltZTo6Y29tcGFyZShjb25zdCBNZWRpYVRpbWUm
IHJocykgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBNZWRpYVRpbWU6OkNvbXBh
cmlzb25GbGFncyBvcmRlcmluZyhUIGEsIFQgYikKIHsKLSAgICBhdXRvIGFuZEZsYWdzID0gbV90
aW1lRmxhZ3MgJiByaHMubV90aW1lRmxhZ3M7Ci0gICAgaWYgKGFuZEZsYWdzICYgKFBvc2l0aXZl
SW5maW5pdGUgfCBOZWdhdGl2ZUluZmluaXRlIHwgSW5kZWZpbml0ZSkpCi0gICAgICAgIHJldHVy
biBFcXVhbFRvOwotCi0gICAgYXV0byBvckZsYWdzID0gbV90aW1lRmxhZ3MgfCByaHMubV90aW1l
RmxhZ3M7Ci0gICAgaWYgKCEob3JGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIEVxdWFs
VG87Ci0KLSAgICBpZiAoIShhbmRGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIGlzSW52
YWxpZCgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgTmVn
YXRpdmVJbmZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmVJbmZpbml0ZSgpID8gTGVz
c1RoYW4gOiBHcmVhdGVyVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgUG9zaXRpdmVJbmZpbml0
ZSkKLSAgICAgICAgcmV0dXJuIGlzUG9zaXRpdmVJbmZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgSW5kZWZpbml0ZSkKLSAgICAgICAgcmV0dXJu
IGlzSW5kZWZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChhbmRG
bGFncyAmIERvdWJsZVZhbHVlKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZUFzRG91YmxlID09
IHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0K
LSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlQXNEb3VibGUgPCByaHMubV90aW1lVmFsdWVBc0Rv
dWJsZSA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47Ci0gICAgfQotCi0gICAgaWYgKG9yRmxhZ3Mg
JiBEb3VibGVWYWx1ZSkgewotICAgICAgICBkb3VibGUgYSA9IHRvRG91YmxlKCk7Ci0gICAgICAg
IGRvdWJsZSBiID0gcmhzLnRvRG91YmxlKCk7Ci0gICAgICAgIGlmIChhID4gYikKLSAgICAgICAg
ICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICAgICAgaWYgKGEgPCBiKQotICAgICAgICAgICAg
cmV0dXJuIExlc3NUaGFuOwotICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAgICB9Ci0KLSAgICBp
ZiAoKG1fdGltZVZhbHVlIDwgMCkgIT0gKHJocy5tX3RpbWVWYWx1ZSA8IDApKQotICAgICAgICBy
ZXR1cm4gbV90aW1lVmFsdWUgPCAwID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKKyAgICByZXR1
cm4gYSA8IGIgPyBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFnczo6TGVzc1RoYW4gOiBiIDwgYSA/
IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzOjpHcmVhdGVyVGhhbiA6IE1lZGlhVGltZTo6Q29t
cGFyaXNvbkZsYWdzOjpFcXVhbFRvOworfQogCi0gICAgaWYgKCFtX3RpbWVWYWx1ZSAmJiAhcmhz
Lm1fdGltZVZhbHVlKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsKK01lZGlhVGltZTo6Q29tcGFy
aXNvbkZsYWdzIG9yZGVyaW5nKE1lZGlhVGltZSBhLCBNZWRpYVRpbWUgYikKK3sKKyAgICBhdXRv
IG9yZGVyaW5nQ2xhc3MgPSBbXShNZWRpYVRpbWUgdGltZSkgeworICAgICAgICBpZiAodGltZS5p
c05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYg
KHRpbWUuaXNJbmRlZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYg
KHRpbWUuaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAg
ICAgaWYgKHRpbWUuaXNJbnZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfTsKKyAgICBhdXRvIGFDbGFzcyA9IG9yZGVyaW5nQ2xhc3MoYSk7Cisg
ICAgYXV0byBiQ2xhc3MgPSBvcmRlcmluZ0NsYXNzKGIpOworICAgIGlmIChhQ2xhc3MgfHwgYkNs
YXNzKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYUNsYXNzLCBiQ2xhc3MpOwogCi0gICAgaWYg
KG1fdGltZVNjYWxlID09IHJocy5tX3RpbWVTY2FsZSkgewotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPT0gcmhzLm1fdGltZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAg
ICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSA/IExlc3NUaGFuIDogR3Jl
YXRlclRoYW47Ci0gICAgfQorICAgIGlmIChhLmhhc0RvdWJsZVZhbHVlKCkgfHwgYi5oYXNEb3Vi
bGVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYS50b0RvdWJsZSgpLCBiLnRvRG91
YmxlKCkpOwogCi0gICAgaWYgKG1fdGltZVZhbHVlID09IHJocy5tX3RpbWVWYWx1ZSkKLSAgICAg
ICAgcmV0dXJuIG1fdGltZVNjYWxlIDwgcmhzLm1fdGltZVNjYWxlID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKKyAgICBpZiAoKGEubV92YWx1ZSA8IDApICE9IChiLm1fdmFsdWUgPCAwKSB8fCAh
YS5tX3ZhbHVlIHx8ICFiLm1fdmFsdWUgfHwgYS5tX3NjYWxlID09IGIubV9zY2FsZSkKKyAgICAg
ICAgcmV0dXJuIG9yZGVyaW5nKGEubV92YWx1ZSwgYi5tX3ZhbHVlKTsKIAotICAgIGlmIChtX3Rp
bWVWYWx1ZSA+PSAwKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1
ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBM
ZXNzVGhhbjsKKyAgICBpZiAoYS5tX3ZhbHVlID09IGIubV92YWx1ZSkKKyAgICAgICAgcmV0dXJu
IG9yZGVyaW5nKGIubV9zY2FsZSwgYS5tX3NjYWxlKTsKIAotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPiByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0g
ICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47CisgICAgaWYgKGEubV92YWx1ZSA+PSAwKSB7
CisgICAgICAgIGlmIChhLm1fdmFsdWUgPCBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlID4gYi5tX3Nj
YWxlKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6TGVzc1RoYW47CisgICAgICAgIGlm
IChhLm1fdmFsdWUgPiBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAg
ICAgICAgcmV0dXJuIE1lZGlhVGltZTo6R3JlYXRlclRoYW47CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKG1fdGltZVZhbHVlIDwgcmhzLm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlIDwgcmhz
Lm1fdGltZVNjYWxlKQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgICAgIGlm
IChtX3RpbWVWYWx1ZSA+IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3Rp
bWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICAgICAgaWYgKGEu
bV92YWx1ZSA8IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAg
ICByZXR1cm4gTWVkaWFUaW1lOjpMZXNzVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIu
bV92YWx1ZSAmJiBhLm1fc2NhbGUgPiBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVk
aWFUaW1lOjpHcmVhdGVyVGhhbjsKICAgICB9CiAKLSAgICBpbnQ2NF90IGxoc0ZhY3RvcjsKLSAg
ICBpbnQ2NF90IHJoc0ZhY3RvcjsKLSAgICBpZiAoc2FmZU11bHRpcGx5KG1fdGltZVZhbHVlLCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihyaHMubV90aW1lU2NhbGUpLCBsaHNGYWN0b3IpCi0gICAgICAg
ICYmIHNhZmVNdWx0aXBseShyaHMubV90aW1lVmFsdWUsIHN0YXRpY19jYXN0PGludDY0X3Q+KG1f
dGltZVNjYWxlKSwgcmhzRmFjdG9yKSkgewotICAgICAgICBpZiAobGhzRmFjdG9yID09IHJoc0Zh
Y3RvcikKLSAgICAgICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgICAgICByZXR1cm4gbGhzRmFj
dG9yIDwgcmhzRmFjdG9yID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9CisgICAgaW50
NjRfdCBhUHJvZHVjdDsKKyAgICBpbnQ2NF90IGJQcm9kdWN0OworICAgIGludDY0X3QgYVRpbWVT
Y2FsZSA9IGEubV9zY2FsZTsKKyAgICBpbnQ2NF90IGJUaW1lU2NhbGUgPSBiLm1fc2NhbGU7Cisg
ICAgaWYgKHNhZmVNdWx0aXBseShhLm1fdmFsdWUsIGFUaW1lU2NhbGUsIGFQcm9kdWN0KSAmJiBz
YWZlTXVsdGlwbHkoYi5tX3ZhbHVlLCBiVGltZVNjYWxlLCBiUHJvZHVjdCkpCisgICAgICAgIHJl
dHVybiBvcmRlcmluZyhhUHJvZHVjdCwgYlByb2R1Y3QpOworCisgICAgYXV0byBhUXVvdGllbnQg
PSBhLm1fdmFsdWUgLyBhLm1fc2NhbGU7CisgICAgYXV0byBiUXVvdGllbnQgPSBiLm1fdmFsdWUg
LyBiLm1fc2NhbGU7CisgICAgaWYgKGFRdW90aWVudCAhPSBiUXVvdGllbnQpCisgICAgICAgIHJl
dHVybiBvcmRlcmluZyhhUXVvdGllbnQsIGJRdW90aWVudCk7CiAKLSAgICBpbnQ2NF90IHJoc1do
b2xlID0gcmhzLm1fdGltZVZhbHVlIC8gcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhz
V2hvbGUgPSBtX3RpbWVWYWx1ZSAvIG1fdGltZVNjYWxlOwotICAgIGlmIChsaHNXaG9sZSA+IHJo
c1dob2xlKQotICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47Ci0gICAgaWYgKGxoc1dob2xlIDwg
cmhzV2hvbGUpCi0gICAgICAgIHJldHVybiBMZXNzVGhhbjsKLQotICAgIGludDY0X3QgcmhzUmVt
YWluID0gcmhzLm1fdGltZVZhbHVlICUgcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhz
UmVtYWluID0gbV90aW1lVmFsdWUgJSBtX3RpbWVTY2FsZTsKLSAgICBsaHNGYWN0b3IgPSBsaHNS
ZW1haW4gKiByaHMubV90aW1lU2NhbGU7Ci0gICAgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90
aW1lU2NhbGU7Ci0KLSAgICBpZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgcmV0
dXJuIEVxdWFsVG87Ci0gICAgcmV0dXJuIGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJU
aGFuIDogTGVzc1RoYW47CisgICAgYXV0byBhUmVtYWluZGVyID0gYS5tX3ZhbHVlICUgYS5tX3Nj
YWxlICogYS5tX3NjYWxlOworICAgIGF1dG8gYlJlbWFpbmRlciA9IGIubV92YWx1ZSAlIGIubV9z
Y2FsZSAqIGIubV9zY2FsZTsKKyAgICByZXR1cm4gb3JkZXJpbmcoYVJlbWFpbmRlciwgYlJlbWFp
bmRlcik7CiB9CiAKLWJvb2wgTWVkaWFUaW1lOjppc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiBh
LCBjb25zdCBNZWRpYVRpbWUmIGIpIGNvbnN0Citib29sIE1lZGlhVGltZTo6aXNCZXR3ZWVuKE1l
ZGlhVGltZSBhLCBNZWRpYVRpbWUgYikgY29uc3QKIHsKICAgICBpZiAoYSA+IGIpCiAgICAgICAg
IHJldHVybiAqdGhpcyA+IGIgJiYgKnRoaXMgPCBhOwogICAgIHJldHVybiAqdGhpcyA+IGEgJiYg
KnRoaXMgPCBiOwogfQogCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6emVyb1RpbWUoKQot
ewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgwLCAxLCBWYWxpZCk7Ci0gICAgcmV0
dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
Ci17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKC0xLCAxLCAwKTsKLSAgICByZXR1
cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgUG9zaXRp
dmVJbmZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFU
aW1lJiBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29u
c3QgTWVkaWFUaW1lIHRpbWUoLTEsIDEsIE5lZ2F0aXZlSW5maW5pdGUgfCBWYWxpZCk7Ci0gICAg
cmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbmRlZmluaXRl
VGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIEluZGVmaW5p
dGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6
OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykgY29u
c3QKK01lZGlhVGltZSBNZWRpYVRpbWU6OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwg
Um91bmRpbmdNb2RlIG1vZGUpIGNvbnN0CiB7CiAgICAgTWVkaWFUaW1lIHJlc3VsdCA9ICp0aGlz
OwotICAgIHJlc3VsdC5zZXRUaW1lU2NhbGUodGltZVNjYWxlLCBmbGFncyk7CisgICAgcmVzdWx0
LnNldFRpbWVTY2FsZSh0aW1lU2NhbGUsIG1vZGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGlu
Z0ZsYWdzIGZsYWdzKQordm9pZCBNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSh1aW50MzJfdCB0aW1l
U2NhbGUsIFJvdW5kaW5nTW9kZSBtb2RlKQogewogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKSB7
Ci0gICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVl
QXNEb3VibGUsIHRpbWVTY2FsZSk7CisgICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSwgdGltZVNjYWxlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmICghdGltZVNjYWxlKSB7Ci0gICAgICAgICp0aGlzID0gbV90aW1lVmFs
dWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
CisgICAgICAgICp0aGlzID0gbV92YWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDog
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh0aW1lU2NhbGUgPT0gbV90aW1lU2NhbGUpCisgICAgaWYgKHRpbWVTY2FsZSA9PSBtX3NjYWxl
KQogICAgICAgICByZXR1cm47CiAKICAgICB0aW1lU2NhbGUgPSBzdGQ6Om1pbihNYXhpbXVtVGlt
ZVNjYWxlLCB0aW1lU2NhbGUpOwogCi0gICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8
SW50MTI4PihtX3RpbWVWYWx1ZSkgKiB0aW1lU2NhbGU7Ci0gICAgaW50NjRfdCByZW1haW5kZXIg
PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1ZSAlIG1fdGltZVNjYWxlKTsKLSAgICBuZXdW
YWx1ZSA9IG5ld1ZhbHVlIC8gbV90aW1lU2NhbGU7CisgICAgSW50MTI4IG5ld1ZhbHVlID0gc3Rh
dGljX2Nhc3Q8SW50MTI4PihtX3ZhbHVlKSAqIHRpbWVTY2FsZTsKKyAgICBpbnQ2NF90IHJlbWFp
bmRlciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG5ld1ZhbHVlICUgbV9zY2FsZSk7CisgICAgbmV3
VmFsdWUgPSBuZXdWYWx1ZSAvIG1fc2NhbGU7CiAKICAgICBpZiAobmV3VmFsdWUgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkgewogICAgICAgICAqdGhpcyA9IG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CkBAIC01MDMsNDIgKzQyNCw0MiBAQCB2b2lkIE1lZGlhVGltZTo6c2V0
VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdGltZVZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4obmV3VmFsdWUpOwotICAgIHN0ZDo6c3dhcChtX3RpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAg
ICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG5ld1ZhbHVlKTsKKyAgICBhdXRvIG9s
ZFRpbWVTY2FsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9zY2FsZSwgdGltZVNjYWxlKTsKIAogICAgIGlm
ICghcmVtYWluZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVGbGFncyB8PSBIYXNC
ZWVuUm91bmRlZDsKLSAgICBzd2l0Y2ggKGZsYWdzKSB7Ci0gICAgY2FzZSBSb3VuZGluZ0ZsYWdz
OjpIYWxmQXdheUZyb21aZXJvOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGxh
YnMocmVtYWluZGVyKSkgKiAyID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVTY2FsZSkpIHsK
KyAgICBtX2ZsYWdzLmFkZChIYXNCZWVuUm91bmRlZCk7CisgICAgc3dpdGNoIChtb2RlKSB7Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm86CisgICAgICAgIGlmIChzdGQ6
OmFicyhyZW1haW5kZXIpICogMiA+PSBvbGRUaW1lU2NhbGUpIHsKICAgICAgICAgICAgIC8vIHJv
dW5kIHVwIChhd2F5IGZyb20gemVybykKICAgICAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQot
ICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlLS07CisgICAgICAgICAgICAgICAgLS1tX3ZhbHVl
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlKys7CisgICAg
ICAgICAgICAgICAgKyttX3ZhbHVlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAg
Y2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpU
b3dhcmRaZXJvOgogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6QXdh
eUZyb21aZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm86CiAgICAgICAg
IGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAgICAgICAg
ICAgIC0tbV92YWx1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsK
KyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5k
aW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CiAgICAgICAgIGlmIChyZW1haW5kZXIgPiAwKQotICAg
ICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eToKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToK
ICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZS0tOwor
ICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC01NDcs
NyArNDY4LDcgQEAgdm9pZCBNZWRpYVRpbWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKICAgICBvdXQucHJpbnQoInsiKTsKICAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpCi0gICAg
ICAgIG91dC5wcmludChtX3RpbWVWYWx1ZSwgIi8iLCBtX3RpbWVTY2FsZSwgIiA9ICIpOworICAg
ICAgICBvdXQucHJpbnQobV92YWx1ZSwgIi8iLCBtX3NjYWxlLCAiID0gIik7CiAgICAgb3V0LnBy
aW50KHRvRG91YmxlKCksICJ9Iik7CiB9CiAKQEAgLTU1Niw3ICs0NzcsNyBAQCBTdHJpbmcgTWVk
aWFUaW1lOjp0b1N0cmluZygpIGNvbnN0CiAgICAgY29uc3QgY2hhciogaW52YWxpZCA9IGlzSW52
YWxpZCgpID8gIiwgaW52YWxpZCIgOiAiIjsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwot
ICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV90aW1lVmFsdWUsICcvJywgbV90aW1lU2NhbGUs
ICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KCd7JywgbV92YWx1ZSwgJy8nLCBtX3NjYWxlLCAiID0gIiwgdG9Eb3VibGUoKSwgaW52YWxpZCwg
J30nKTsKIH0KIAogUmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBj
b25zdApAQCAtNTc5LDkgKzUwMCw5IEBAIFJlZjxKU09OOjpPYmplY3Q+IE1lZGlhVGltZTo6dG9K
U09OT2JqZWN0KCkgY29uc3QKICAgICBlbHNlCiAgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2
YWx1ZSJfcywgdG9Eb3VibGUoKSk7CiAKLSAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9y
Il9zLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSk7Ci0gICAgb2JqZWN0LT5zZXRJ
bnRlZ2VyKCJkZW5vbWluYXRvciJfcywgbV90aW1lU2NhbGUpOwotICAgIG9iamVjdC0+c2V0SW50
ZWdlcigiZmxhZ3MiX3MsIG1fdGltZUZsYWdzKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgibnVt
ZXJhdG9yIl9zLCBtX3ZhbHVlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9y
Il9zLCBtX3NjYWxlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX2ZsYWdz
LnRvUmF3KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTU5MSwzMyArNTEyLDI4IEBA
IFN0cmluZyBNZWRpYVRpbWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRvSlNP
Tk9iamVjdCgpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotTWVkaWFUaW1lIGFicyhjb25zdCBNZWRp
YVRpbWUmIHJocykKK01lZGlhVGltZSBhYnMoTWVkaWFUaW1lIHRpbWUpCiB7Ci0gICAgaWYgKHJo
cy5pc0ludmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsK
LSAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0aXZlSW5maW5p
dGUoKSkKKyAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAocmhzLmhhc0RvdWJs
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZmFi
cyhyaHMubV90aW1lVmFsdWVBc0RvdWJsZSkpOwotCi0gICAgTWVkaWFUaW1lIHZhbCA9IHJoczsK
LSAgICB2YWwubV90aW1lVmFsdWUgPSBzdGQ6OmFicyhyaHMubV90aW1lVmFsdWUpOwotICAgIHJl
dHVybiB2YWw7CisgICAgaWYgKHRpbWUuaGFzRG91YmxlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGQ6OmFicyh0aW1lLm1fdmFsdWVBc0RvdWJs
ZSkpOworICAgIE1lZGlhVGltZSByZXN1bHQgPSB0aW1lOworICAgIHJlc3VsdC5tX3ZhbHVlID0g
c3RkOjphYnMocmVzdWx0Lm1fdmFsdWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmlu
ZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KICAgICBvYmplY3QtPnNldE9iamVjdCgic3Rh
cnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKICAgICBvYmplY3QtPnNldE9iamVjdCgiZW5k
Il9zLCBlbmQudG9KU09OT2JqZWN0KCkpOwotCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3Ry
aW5nKCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCitUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgTWVkaWFUaW1lIHRpbWUpCiB7CiAgICAgcmV0dXJu
IHN0cmVhbSA8PCB0aW1lLnRvSlNPTlN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAppbmRleCA3MWFj
ZjMyOWViMzk4OTMzNTEyZmQ3ZjNmNThkNjBiZWNmZjIzYzUwLi40NDEyMzY0MDIwNjVlYjA0YWYz
YjMzMjA3N2E1OGJiMjMwMzgwNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRp
bWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApAQCAtMzAsMjEgKzMwLDE2IEBA
CiAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxjbWF0aD4K
LSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGludC5o
PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNz
IFByaW50U3RyZWFtOwogCi1jbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGZpbmFs
IHsKK2NsYXNzIE1lZGlhVGltZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZW51bSB7CisgICAgZW51bSBGbGFnIDogdWludDhfdCB7CiAgICAgICAg
IFZhbGlkID0gMSA8PCAwLAogICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwKICAgICAg
ICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwKQEAgLTUyLDY3ICs0Nyw2NSBAQCBwdWJsaWM6
CiAgICAgICAgIEluZGVmaW5pdGUgPSAxIDw8IDQsCiAgICAgICAgIERvdWJsZVZhbHVlID0gMSA8
PCA1LAogICAgIH07Ci0KLSAgICBjb25zdGV4cHIgTWVkaWFUaW1lKCk7Ci0gICAgY29uc3RleHBy
IE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgdWludDhfdCBmbGFncyA9
IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpOwotCi0gICAgc3Rh
dGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKTsKLSAgICBzdGF0
aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIHVpbnQzMl90IHRp
bWVTY2FsZSk7Ci0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBk
b3VibGVUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91Ymxl
IGRvdWJsZVRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0KLSAgICBmbG9hdCB0b0Zsb2F0KCkg
Y29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7Ci0KLSAgICBNZWRpYVRpbWUmIG9w
ZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocyk7Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvcis9
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9Ci0g
ICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAq
dGhpcyA9ICp0aGlzIC0gcmhzOyB9Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRp
YVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRp
bWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0OwotICAgIE1l
ZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29u
c3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBMZXNzVGhh
bjsgfQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJl
dHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVh
bFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7
IHJldHVybiBjb21wYXJlKHJocykgPT0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShj
b25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFs
VG87IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsg
cmV0dXJuIGNvbXBhcmUocmhzKSA8PSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdDsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVm
IGVudW0geworICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoKSA6IE1lZGlhVGltZSB7IGludDY0X3Qg
eyB9LCBEZWZhdWx0VGltZVNjYWxlIH0geyB9CisgICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2
NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgT3B0aW9uU2V0PEZsYWc+ID0geyBWYWxpZCB9KTsK
KworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9h
dChmbG9hdCB2YWx1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUg
Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlLCB1aW50MzJfdCBzY2FsZSk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFs
dWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhE
b3VibGUoZG91YmxlIHZhbHVlLCB1aW50MzJfdCBzY2FsZSk7CisKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgZmxvYXQgdG9GbG9hdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3Vi
bGUgdG9Eb3VibGUoKSBjb25zdDsKKworICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShNZWRpYVRp
bWUgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9CisgICAgTWVkaWFUaW1lJiBv
cGVyYXRvci09KE1lZGlhVGltZSByaHMpIHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKyhNZWRpYVRpbWUpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgb3BlcmF0b3ItKE1lZGlhVGlt
ZSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvci0oKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90
KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPChNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVy
biBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47IH0KKyAgICBib29sIG9wZXJhdG9yPihNZWRpYVRp
bWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KKyAg
ICBib29sIG9wZXJhdG9yIT0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShy
aHMpICE9IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPT0oTWVkaWFUaW1lIHJocykgY29u
c3QgeyByZXR1cm4gY29tcGFyZShyaHMpID09IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9y
Pj0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87
IH0KKyAgICBib29sIG9wZXJhdG9yPD0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29t
cGFyZShyaHMpIDw9IEVxdWFsVG87IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVy
YXRvciEoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0OworCisgICAgZW51bSBDb21wYXJpc29uRmxhZ3MgewogICAgICAgICBMZXNz
VGhhbiA9IC0xLAogICAgICAgICBFcXVhbFRvID0gMCwKICAgICAgICAgR3JlYXRlclRoYW4gPSAx
LAotICAgIH0gQ29tcGFyaXNvbkZsYWdzOworICAgIH07CisgICAgZnJpZW5kIFdURl9FWFBPUlRf
UFJJVkFURSBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFncyBvcmRlcmluZyhNZWRpYVRpbWUsIE1l
ZGlhVGltZSk7CisgICAgQ29tcGFyaXNvbkZsYWdzIGNvbXBhcmUoTWVkaWFUaW1lIG90aGVyKSBj
b25zdCB7IHJldHVybiBvcmRlcmluZygqdGhpcywgb3RoZXIpOyB9CiAKLSAgICBDb21wYXJpc29u
RmxhZ3MgY29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgYm9vbCBpc0Jl
dHdlZW4oY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNCZXR3ZWVuKE1lZGlhVGltZSwgTWVkaWFUaW1lKSBjb25z
dDsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFs
aWQ7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5z
KFZhbGlkKTsgfQogICAgIGJvb2wgaXNJbnZhbGlkKCkgY29uc3QgeyByZXR1cm4gIWlzVmFsaWQo
KTsgfQotICAgIGJvb2wgaGFzQmVlblJvdW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFn
cyAmIEhhc0JlZW5Sb3VuZGVkOyB9Ci0gICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25z
dCB7IHJldHVybiBtX3RpbWVGbGFncyAmIFBvc2l0aXZlSW5maW5pdGU7IH0KLSAgICBib29sIGlz
TmVnYXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgTmVnYXRpdmVJ
bmZpbml0ZTsgfQotICAgIGJvb2wgaXNJbmRlZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
RmxhZ3MgJiBJbmRlZmluaXRlOyB9CisgICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoSGFzQmVlblJvdW5kZWQpOyB9CisgICAgYm9vbCBpc1Bv
c2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFBvc2l0aXZl
SW5maW5pdGUpOyB9CisgICAgYm9vbCBpc05lZ2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzLmNvbnRhaW5zKE5lZ2F0aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBpc0luZGVm
aW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEluZGVmaW5pdGUpOyB9CiAg
ICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0IHsgcmV0dXJuICFpc0ludmFsaWQoKSAmJiAhaXNJbmRl
ZmluaXRlKCkgJiYgIWlzUG9zaXRpdmVJbmZpbml0ZSgpICYmICFpc05lZ2F0aXZlSW5maW5pdGUo
KTsgfQotICAgIGJvb2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFn
cyAmIERvdWJsZVZhbHVlOyB9Ci0gICAgdWludDhfdCB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVGbGFnczsgfQorICAgIGJvb2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzLmNvbnRhaW5zKERvdWJsZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxGbGFnPiB0
aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAKLSAgICBzdGF0aWMgY29uc3Qg
TWVkaWFUaW1lJiB6ZXJvVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGludmFs
aWRUaW1lKCk7Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVJbmZpbml0ZVRp
bWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgp
OwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGluZGVmaW5pdGVUaW1lKCk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgemVyb1RpbWUoKSB7IHJldHVybiB7IDAsIDEsIFZhbGlk
IH07IH0KKyAgICBzdGF0aWMgY29uc3RleHByIE1lZGlhVGltZSBpbnZhbGlkVGltZSgpIHsgcmV0
dXJuIHsgLTEsIDEsIHsgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVybiB7IDAsIDEsIHsgUG9zaXRpdmVJbmZpbml0ZSwg
VmFsaWQgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSB7IHJldHVybiB7IC0xLCAxLCB7IE5lZ2F0aXZlSW5maW5pdGUsIFZhbGlkIH0g
fTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFUaW1lIGluZGVmaW5pdGVUaW1lKCkgeyBy
ZXR1cm4geyAwLCAxLCB7IEluZGVmaW5pdGUsIFZhbGlkIH0gfTsgfQogCi0gICAgY29uc3QgaW50
NjRfdCYgdGltZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lVmFsdWU7IH0KLSAgICBjb25z
dCB1aW50MzJfdCYgdGltZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKyAg
ICBpbnQ2NF90IHRpbWVWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFoYXNEb3VibGVWYWx1ZSgpKTsg
cmV0dXJuIG1fdmFsdWU7IH0KKyAgICB1aW50MzJfdCB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVy
biBtX3NjYWxlOyB9CiAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAg
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25z
dDsKLSAgICBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoKSBjb25zdDsKIAogICAg
IC8vIE1ha2UgdGhlIGZvbGxvd2luZyBjYXN0cyBlcnJvcnM6CiAgICAgb3BlcmF0b3IgZG91Ymxl
KCkgY29uc3QgPSBkZWxldGU7CkBAIC0xMjAsOTMgKzExMyw5OSBAQCBwdWJsaWM6CiAgICAgb3Bl
cmF0b3IgaW50KCkgY29uc3QgPSBkZWxldGU7CiAgICAgTWVkaWFUaW1lKGludCkgPSBkZWxldGU7
CiAKLSAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoY29uc3QgTWVk
aWFUaW1lJiByaHMpOworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGFi
cyhNZWRpYVRpbWUpOwogCi0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IERlZmF1bHRUaW1lU2Nh
bGUgPSAxMDAwMDAwMDsKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgTWF4aW11bVRpbWVTY2Fs
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAw
MDAwMDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1heGlt
dW1UaW1lU2NhbGU7CiAKLSAgICBlbnVtIGNsYXNzIFJvdW5kaW5nRmxhZ3MgewotICAgICAgICBI
YWxmQXdheUZyb21aZXJvID0gMCwKKyAgICBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSB7CisgICAg
ICAgIEhhbGZBd2F5RnJvbVplcm8sCiAgICAgICAgIFRvd2FyZFplcm8sCiAgICAgICAgIEF3YXlG
cm9tWmVybywKICAgICAgICAgVG93YXJkUG9zaXRpdmVJbmZpbml0eSwKICAgICAgICAgVG93YXJk
TmVnYXRpdmVJbmZpbml0eSwKICAgICB9OwotCi0gICAgTWVkaWFUaW1lIHRvVGltZVNjYWxlKHVp
bnQzMl90LCBSb3VuZGluZ0ZsYWdzID0gUm91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50
MzJfdCBzY2FsZSwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJv
KSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBNZWRpYVRpbWUmKTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIHNldFRpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdGbGFncyA9IFJvdW5kaW5n
RmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pOworICAgIGVudW0gVXNlRG91YmxlRmxhZyB7IFVzZURv
dWJsZSB9OworICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91YmxlIHZh
bHVlKTsKKworICAgIHZvaWQgc2V0VGltZVNjYWxlKHVpbnQzMl90LCBSb3VuZGluZ01vZGUgPSBS
b3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pOwogCiAgICAgdW5pb24gewotICAgICAgICBp
bnQ2NF90IG1fdGltZVZhbHVlOwotICAgICAgICBkb3VibGUgbV90aW1lVmFsdWVBc0RvdWJsZTsK
KyAgICAgICAgaW50NjRfdCBtX3ZhbHVlOworICAgICAgICBkb3VibGUgbV92YWx1ZUFzRG91Ymxl
OwogICAgIH07Ci0gICAgdWludDMyX3QgbV90aW1lU2NhbGU7Ci0gICAgdWludDhfdCBtX3RpbWVG
bGFnczsKKyAgICB1aW50MzJfdCBtX3NjYWxlIHsgRGVmYXVsdFRpbWVTY2FsZSB9OworICAgIE9w
dGlvblNldDxGbGFnPiBtX2ZsYWdzIHsgVmFsaWQgfTsKIH07CiAKLWNvbnN0ZXhwciBNZWRpYVRp
bWU6Ok1lZGlhVGltZSgpCi0gICAgOiBtX3RpbWVWYWx1ZSgwKQotICAgICwgbV90aW1lU2NhbGUo
RGVmYXVsdFRpbWVTY2FsZSkKLSAgICAsIG1fdGltZUZsYWdzKFZhbGlkKQotewotfQotCi1jb25z
dGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgdWludDMyX3Qgc2NhbGUs
IHVpbnQ4X3QgZmxhZ3MpCi0gICAgOiBtX3RpbWVWYWx1ZSh2YWx1ZSkKLSAgICAsIG1fdGltZVNj
YWxlKHNjYWxlKQotICAgICwgbV90aW1lRmxhZ3MoZmxhZ3MpCi17Ci0gICAgaWYgKHNjYWxlIHx8
ICEoZmxhZ3MgJiBWYWxpZCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp0aGlzID0gdmFsdWUg
PCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci19
CitXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGFicyhNZWRpYVRpbWUpOwogCi1pbmxpbmUg
TWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90IGxocywgY29uc3QgTWVkaWFUaW1lJiByaHMpIHsg
cmV0dXJuIHJocy5vcGVyYXRvcioobGhzKTsgfQotCi1XVEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJu
IE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOwotCi1zdHJ1Y3QgV1RGX0VYUE9S
VF9QUklWQVRFIE1lZGlhVGltZVJhbmdlIHsKK3N0cnVjdCBNZWRpYVRpbWVSYW5nZSB7CiAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgU3RyaW5nIHRvSlNPTlN0cmlu
ZygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdG9KU09OU3RyaW5nKCkg
Y29uc3Q7CiAKLSAgICBjb25zdCBNZWRpYVRpbWUgc3RhcnQ7Ci0gICAgY29uc3QgTWVkaWFUaW1l
IGVuZDsKKyAgICBNZWRpYVRpbWUgc3RhcnQ7CisgICAgTWVkaWFUaW1lIGVuZDsKIH07CiAKLXRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIE1lZGlhVGltZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Citjb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1
ZSwgdWludDMyX3Qgc2NhbGUsIE9wdGlvblNldDxGbGFnPiBmbGFncykKKyAgICA6IG1fdmFsdWUo
dmFsdWUpCisgICAgLCBtX3NjYWxlKHNjYWxlKQorICAgICwgbV9mbGFncyhmbGFncykKK3sKKyAg
ICBpZiAoIShzY2FsZSB8fCAhKGZsYWdzICYgVmFsaWQpKSkKKyAgICAgICAgKnRoaXMgPSB2YWx1
ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE1lZGlhVGltZSBvcGVyYXRvciooY29u
c3QgVCYgYSwgTWVkaWFUaW1lIGIpCiB7Ci0gICAgZW5jb2RlciA8PCBtX3RpbWVWYWx1ZSA8PCBt
X3RpbWVTY2FsZSA8PCBtX3RpbWVGbGFnczsKKyAgICByZXR1cm4gYiAqIGE7CiB9CiAKLXRlbXBs
YXRlPGNsYXNzIERlY29kZXI+Ci1ib29sIE1lZGlhVGltZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIE1lZGlhVGltZSYgdGltZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgTWVk
aWFUaW1lOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZGVj
b2Rlci5kZWNvZGUodGltZS5tX3RpbWVWYWx1ZSkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUo
dGltZS5tX3RpbWVTY2FsZSkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3RpbWVG
bGFncyk7CisgICAgZW5jb2RlciA8PCBtX3ZhbHVlIDw8IG1fc2NhbGUgPDwgbV9mbGFnczsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gYm9vbCBNZWRpYVRpbWU6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBNZWRpYVRpbWUmIHRpbWUpCit7CisgICAgcmV0dXJuIGRlY29kZXIuZGVj
b2RlKHRpbWUubV92YWx1ZSkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX3NjYWxl
KQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fZmxhZ3MpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IExvZ0FyZ3VtZW50OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dB
cmd1bWVudDxNZWRpYVRpbWU+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE1l
ZGlhVGltZSYgdGltZSkgeyByZXR1cm4gdGltZS50b0pTT05TdHJpbmcoKTsgfQorICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoTWVkaWFUaW1lIHRpbWUpIHsgcmV0dXJuIHRpbWUudG9KU09OU3Ry
aW5nKCk7IH0KIH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxNZWRpYVRpbWVSYW5n
ZT4gewogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTWVkaWFUaW1lUmFuZ2UmIHJh
bmdlKSB7IHJldHVybiByYW5nZS50b0pTT05TdHJpbmcoKTsgfQogfTsKIAogI2lmbmRlZiBOREVC
VUcKLVdURl9FWFBPUlRfUFJJVkFURSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBNZWRpYVRpbWUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBNZWRpYVRpbWUpOwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8TWVkaWFUaW1lOjpGbGFnPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnLAorICAgICAgICBNZWRpYVRpbWU6OkZs
YWc6OlZhbGlkLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6Okhhc0JlZW5Sb3VuZGVkLAorICAg
ICAgICBNZWRpYVRpbWU6OkZsYWc6OlBvc2l0aXZlSW5maW5pdGUsCisgICAgICAgIE1lZGlhVGlt
ZTo6RmxhZzo6TmVnYXRpdmVJbmZpbml0ZSwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpJbmRl
ZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6OkRvdWJsZVZhbHVlCisgICAgPjsKK307
CisKIH0KIAogdXNpbmcgV1RGOjpNZWRpYVRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TZWNvbmRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKaW5kZXggZDI4MmRiYmY3MTVi
ZTc0Mjc4OWVhMTBmMWNjYjI5YWQxNDUzNTY0Zi4uMWEyOTY0YzZkZWExNTVkOTM2ZTA0YjUyZTMz
MjNmMzJhZjE2YjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8
b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpA
QCAtMzcyLDQgKzM3MywzIEBAIGlubGluZSBib29sIGlzZmluaXRlKFdURjo6U2Vjb25kcyBzZWNv
bmRzKQogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OnNlY29uZHNf
bGl0ZXJhbHM7Ci11c2luZyBXVEY6OlNlY29uZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmgKaW5kZXggZmQ1NTliMjQyZGRmZmQ1ZThkOGYxMzNlYzQxM2JhM2FiNWI1MjY0Ny4uZTVh
M2NiNjM1ZWFmMWNhODg5ZGQyMjA5NzUyNWZjZDQyOGUzMTg1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaApAQCAtMzIsOSArMzIsOSBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1VSTC5jcHAKaW5kZXggNDQ4ZGRlZTIxNjBlZjE4Y2E1ZTA2NjEzOTBlNTk4ZDUzYmM1NGQy
YS4uMGM4ZjMzMTUwYjE1MzQ4NGZkNGMxYzhhZDAwMWE0OWZiYmZhYWY5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYv
U29ydGVkQXJyYXlNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC05MjIsNyAr
OTIzLDcgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKIAogICAgIC8vIFRoaXMg
YmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEg
aW1wbGVtZW50cy4KICAgICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9u
ZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMg
Y29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MTZfdCBibG9ja2VkUG9ydExpc3RbXSA9IHsKICAgICAgICAgMSwgICAgLy8gdGNwbXV4
CiAgICAgICAgIDcsICAgIC8vIGVjaG8KICAgICAgICAgOSwgICAgLy8gZGlzY2FyZApAQCAtMTAw
NiwxMCArMTAwNywxMCBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogICAgICAg
ICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KICAgICAgICAgMTAwODAsIC8vIGFt
YW5kYQogICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBibG9ja2Vk
UG9ydFNldCB7IGJsb2NrZWRQb3J0TGlzdCB9OwogCiAgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90
IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxsb3cgaXQuCi0gICAgQVNTRVJUKHN0ZDo6aXNf
c29ydGVkKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRM
aXN0KSkpOwotICAgIGlmICghc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4oYmxvY2tlZFBv
cnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSwgcG9ydC52YWx1ZSgpKSkKKyAgICBp
ZiAoIWJsb2NrZWRQb3J0U2V0LmNvbnRhaW5zKCpwb3J0KSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBBbGxvdyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxh
IGRvZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oIGIvU291cmNlL1dU
Ri93dGYvV2FsbFRpbWUuaAppbmRleCA1NDM4Y2MwMWI2MWFhOWY2YzdjNDU2ZTVmODkxZTQ0NjZm
NzMzYmJjLi4xY2U4ZDM3NTU2MWQyOWI1ODk2MWJlM2ZjZjE5Mzk0MDRmZTg4OTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dhbGxU
aW1lLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Ns
b2NrVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0dlbmVy
aWNUaW1lTWl4aW4uaD4KICNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAKQEAgLTk5LDUgKzEwMCwz
IEBAIGlubGluZSBib29sIGlzZmluaXRlKFdURjo6V2FsbFRpbWUgdGltZSkKIH0KIAogfSAvLyBu
YW1lc3BhY2Ugc3RkCi0KLXVzaW5nIFdURjo6V2FsbFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oCmluZGV4IGFmYzMzZjM4ZDQyMzM1YmQ5ZTYxMjZh
NGE3OGE1MDcxMGRiMjYwOGEuLjIwN2ZhMDQ0NjlmYjk0ODM4NzY4ZTlmNDFhMmEzMjg5N2Y1Y2Iw
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rl
ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCBkOTI0NDkwZDFiNTdmM2VlMDZlZTVlYWQ4
YTJkM2MxMWMyMGNiNWQxLi42ZDM0MGU0NmYyYjI4NDQwYjExM2VkNzcwOWVhMzcxMDFhODJmODVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmdQcmltaXRpdmVzLmg+CiAjaW5jbHVkZSA8d3RmL1dURkNvbmZpZy5oPgorI2luY2x1ZGUgPHd0
Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JkTG9jay5oPgogCiAjaWYgT1MoTElOVVgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaCBiL1NvdXJjZS9X
VEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCmluZGV4IDhiNDBjMTRjODQyM2ZkNGVjYmY2MzUwNmQ2
MGJmZjFjMGZkODU2MGYuLjlmMTg2ZjYzNTQ4NDFhNzU1YWJjMGQ4OWVjMzNmMGI1ZmUwZWY4NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBPUyhV
TklYKQogCisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVk
ZSA8dHVwbGU+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRp
bmdXaW4uY3BwCmluZGV4IGRjMjQ4OWZmODllOGY5Zjg5MTRiYzhlM2ZjMjk2NmY0ZGVlZTU3NGUu
LmE5ZjU5NTI0YWZjNWNiYzczNmZiYzRlODE2ZGNkYmVkYzdmOTBhZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dp
bi9UaHJlYWRpbmdXaW4uY3BwCkBAIC05NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCmluZGV4IDkyNjIyMTcwYzhhYWQ2
OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmUyMmNjOTQ2NmE3YWEzN2QxNzU3ODc1NWVlM2Q2
NGJkMGYyYWZlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAj
aW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRp
bWVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDA2NTk4NDA2ODllNGFiYjUyMjBlNWJkZDgwNTIzZDc0
MDJmNGFjZTIuLjg4OGJlZjMyMzY4MmVhMjI5OTdlZjY0MDlhMGQ3MWQ4NTVmZmZlYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmNwcApAQCAtMzIsMzcgKzMyLDI4IEBACiAKIG5hbWVzcGFjZSBQ
QUwgewogCi1zdGF0aWMgYm9vbCBDTVRpbWVIYXNGbGFncyhjb25zdCBDTVRpbWUmIGNtVGltZSwg
dWludDMyX3QgZmxhZ3MpCitNZWRpYVRpbWUgdG9NZWRpYVRpbWUoQ01UaW1lIHRpbWUpCiB7Ci0g
ICAgcmV0dXJuIChjbVRpbWUuZmxhZ3MgJiBmbGFncykgPT0gZmxhZ3M7CisgICAgT3B0aW9uU2V0
PE1lZGlhVGltZTo6RmxhZz4gZmxhZ3M7CisgICAgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxh
Z3NfVmFsaWQpIHsKKyAgICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6VmFsaWQpOworICAgICAg
ICBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19Qb3NpdGl2ZUluZmluaXR5KQorICAgICAg
ICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6UG9zaXRpdmVJbmZpbml0ZSk7CisgICAgICAgIGVs
c2UgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3NfTmVnYXRpdmVJbmZpbml0eSkKKyAgICAg
ICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGUpOworICAgICAgICBl
bHNlIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX0luZGVmaW5pdGUpCisgICAgICAgICAg
ICBmbGFncy5hZGQoTWVkaWFUaW1lOjpJbmRlZmluaXRlKTsKKyAgICB9CisgICAgcmV0dXJuIE1l
ZGlhVGltZSh0aW1lLnZhbHVlLCB0aW1lLnRpbWVzY2FsZSwgZmxhZ3MpOwogfQogCi1NZWRpYVRp
bWUgdG9NZWRpYVRpbWUoY29uc3QgQ01UaW1lJiBjbVRpbWUpCi17Ci0gICAgdWludDMyX3QgZmxh
Z3MgPSAwOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxp
ZCkpCi0gICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6VmFsaWQ7Ci0gICAgaWYgKENNVGltZUhh
c0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX0hhc0JlZW5S
b3VuZGVkKSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpIYXNCZWVuUm91bmRlZDsKLSAg
ICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQgfCBrQ01UaW1l
RmxhZ3NfUG9zaXRpdmVJbmZpbml0eSkpCi0gICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6UG9z
aXRpdmVJbmZpbml0ZTsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxh
Z3NfVmFsaWQgfCBrQ01UaW1lRmxhZ3NfTmVnYXRpdmVJbmZpbml0eSkpCi0gICAgICAgIGZsYWdz
IHw9IE1lZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZTsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3Mo
Y21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQgfCBrQ01UaW1lRmxhZ3NfSW5kZWZpbml0ZSkpCi0g
ICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6SW5kZWZpbml0ZTsKLQotICAgIHJldHVybiBNZWRp
YVRpbWUoY21UaW1lLnZhbHVlLCBjbVRpbWUudGltZXNjYWxlLCBmbGFncyk7Ci19Ci0KLUNNVGlt
ZSB0b0NNVGltZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkKK0NNVGltZSB0b0NNVGltZShN
ZWRpYVRpbWUgbWVkaWFUaW1lKQogewogICAgIENNVGltZSB0aW1lOwotCiAgICAgaWYgKG1lZGlh
VGltZS5oYXNEb3VibGVWYWx1ZSgpKQogICAgICAgICB0aW1lID0gQ01UaW1lTWFrZVdpdGhTZWNv
bmRzKG1lZGlhVGltZS50b0RvdWJsZSgpLCBtZWRpYVRpbWUudGltZVNjYWxlKCkpOwogICAgIGVs
c2UKICAgICAgICAgdGltZSA9IENNVGltZU1ha2UobWVkaWFUaW1lLnRpbWVWYWx1ZSgpLCBtZWRp
YVRpbWUudGltZVNjYWxlKCkpOwotCiAgICAgaWYgKG1lZGlhVGltZS5pc1ZhbGlkKCkpCiAgICAg
ICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX1ZhbGlkOwogICAgIGlmIChtZWRpYVRpbWUu
aGFzQmVlblJvdW5kZWQoKSkKQEAgLTcxLDcgKzYyLDYgQEAgQ01UaW1lIHRvQ01UaW1lKGNvbnN0
IE1lZGlhVGltZSYgbWVkaWFUaW1lKQogICAgICAgICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVGbGFn
c19Qb3NpdGl2ZUluZmluaXR5OwogICAgIGlmIChtZWRpYVRpbWUuaXNOZWdhdGl2ZUluZmluaXRl
KCkpCiAgICAgICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHk7
Ci0KICAgICByZXR1cm4gdGltZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaAppbmRleCBiM2Ri
ZTE3YWE5YmMxMjUxZGNlMmVjOGFkZWU3Y2I4NDk0NzliZjcwLi5hMmJjZGFlOWY4ZTk5ZDBmMDRl
M2YzYzNlZDIwYTNmMzZhMjkwNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaApAQCAtMzIsOCAr
MzIsOCBAQAogCiBuYW1lc3BhY2UgUEFMIHsKIAotUEFMX0VYUE9SVCBDTVRpbWUgdG9DTVRpbWUo
Y29uc3QgTWVkaWFUaW1lJik7Ci1QQUxfRVhQT1JUIE1lZGlhVGltZSB0b01lZGlhVGltZShjb25z
dCBDTVRpbWUmKTsKK1BBTF9FWFBPUlQgQ01UaW1lIHRvQ01UaW1lKE1lZGlhVGltZSk7CitQQUxf
RVhQT1JUIE1lZGlhVGltZSB0b01lZGlhVGltZShDTVRpbWUpOwogCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDBlMWFk
NzI0NWZlMTZlMWU5NmUzZGExY2I1ODRiOWE0YTZkODlmM2IuLjg0NDZkYjk4NTUxZTBjNTM4MmE5
NmZmODQ3MWZiYjY3MjMxMGM0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTE5LDEwICsxMTksMTAgQEAgc3RhdGljIGlu
bGluZSBHYXBMZW5ndGggYmxlbmRGdW5jKGNvbnN0IEdhcExlbmd0aCYgZnJvbSwgY29uc3QgR2Fw
TGVuZ3RoJiB0bywgY28KICAgICByZXR1cm4gYmxlbmQoZnJvbS5sZW5ndGgoKSwgdG8ubGVuZ3Ro
KCksIGNvbnRleHQsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBUYWJTaXplIGJsZW5kRnVuYyhjb25zdCBUYWJTaXplJiBmcm9tLCBjb25zdCBUYWJTaXplJiB0
bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCitzdGF0aWMgaW5s
aW5lIFRhYlNpemUgYmxlbmRGdW5jKFRhYlNpemUgZnJvbSwgVGFiU2l6ZSB0bywgY29uc3QgQ1NT
UHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBibGVuZGVkVmFs
dWUgPSBibGVuZChmcm9tLnZhbHVlKCksIHRvLnZhbHVlKCksIGNvbnRleHQpOwotICAgIHJldHVy
biB7IGJsZW5kZWRWYWx1ZSA8IDAgPyAwIDogYmxlbmRlZFZhbHVlLCBmcm9tLmlzU3BhY2VzKCkg
PyBTcGFjZVZhbHVlVHlwZSA6IExlbmd0aFZhbHVlVHlwZSB9OworICAgIGF1dG8gYmxlbmRlZFZh
bHVlID0gYmxlbmQoZnJvbS52YWx1ZSwgdG8udmFsdWUsIGNvbnRleHQpOworICAgIHJldHVybiB7
IGJsZW5kZWRWYWx1ZSA8IDAgPyAwIDogYmxlbmRlZFZhbHVlLCBmcm9tLmlzU3BhY2VzID8gVGFi
U2l6ZTo6U3BhY2VzIDogVGFiU2l6ZTo6TGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgTGVu
Z3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6
ZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQpAQCAtOTc4
LDEwICs5NzgsOSBAQCBwcml2YXRlOgogICAgIC8vIGl0J3Mgb25seSBwb3NzaWJsZSBpZiB0aGV5
J3JlIGJvdGggbm90IGF1dG8uCiAgICAgYm9vbCBjYW5JbnRlcnBvbGF0ZShjb25zdCBSZW5kZXJT
dHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBDb21wb3NpdGVPcGVyYXRpb24pIGNv
bnN0IGZpbmFsCiAgICAgewotICAgICAgICBib29sIGZyb21Jc0F1dG8gPSB2YWx1ZShmcm9tKS54
KCkuaXNBdXRvKCkgJiYgdmFsdWUoZnJvbSkueSgpLmlzQXV0bygpOwotICAgICAgICBib29sIHRv
SXNBdXRvID0gdmFsdWUodG8pLngoKS5pc0F1dG8oKSAmJiB2YWx1ZSh0bykueSgpLmlzQXV0bygp
OwotCi0gICAgICAgIHJldHVybiAoIWZyb21Jc0F1dG8gJiYgIXRvSXNBdXRvKTsgCisgICAgICAg
IGJvb2wgZnJvbUlzQXV0byA9IHZhbHVlKGZyb20pLnguaXNBdXRvKCkgJiYgdmFsdWUoZnJvbSku
eS5pc0F1dG8oKTsKKyAgICAgICAgYm9vbCB0b0lzQXV0byA9IHZhbHVlKHRvKS54LmlzQXV0bygp
ICYmIHZhbHVlKHRvKS55LmlzQXV0bygpOworICAgICAgICByZXR1cm4gIWZyb21Jc0F1dG8gJiYg
IXRvSXNBdXRvOwogICAgIH0KIH07CiAKQEAgLTEyOTIsMjAgKzEyOTEsMjAgQEAgc3RhdGljIGlu
bGluZSBzaXplX3Qgc2hhZG93TGlzdExlbmd0aChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cpCiAg
ICAgcmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgaW5saW5lIGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdywgY29uc3QgU2hhZG93
RGF0YSogb3RoZXJTaGFkb3cpCitzdGF0aWMgaW5saW5lIGNvbnN0IFNoYWRvd0RhdGEmIHNoYWRv
d0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdywgY29uc3QgU2hhZG93RGF0
YSogb3RoZXJTaGFkb3cpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+
IGRlZmF1bHRTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCks
IExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBM
ZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCBmYWxzZSwgQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dE
YXRhPiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBl
OjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIGZh
bHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFNoYWRvd0RhdGE+IGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0
aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgo
TGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHls
ZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEo
TGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0U2hhZG93RGF0
YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhl
ZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhl
ZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFNoYWRv
d0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFj
ayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRXZWJLaXRC
b3hTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0
aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0
aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFy
ZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0
SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhl
ZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCB0cnVlLCBDb2xv
cjo6dHJhbnNwYXJlbnRCbGFjayk7CiAKICAgICBpZiAoc3JjU2hhZG93KQotICAgICAgICByZXR1
cm4gc3JjU2hhZG93OworICAgICAgICByZXR1cm4gKnNyY1NoYWRvdzsKIAogICAgIGlmIChvdGhl
clNoYWRvdy0+c3R5bGUoKSA9PSBTaGFkb3dTdHlsZTo6SW5zZXQpCi0gICAgICAgIHJldHVybiBv
dGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0SW5zZXRXZWJLaXRCb3hT
aGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRJbnNldFNoYWRvd0RhdGEuZ2V0KCk7CisgICAgICAg
IHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/IGRlZmF1bHRJbnNldFdl
YktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhLmdldCgpOwog
Ci0gICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRlZmF1bHRX
ZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRTaGFkb3dEYXRhLmdldCgpOworICAg
IHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/IGRlZmF1bHRXZWJLaXRC
b3hTaGFkb3dEYXRhLmdldCgpIDogZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CiB9CiAKIGNsYXNz
IFByb3BlcnR5V3JhcHBlclNoYWRvdyBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdy
YXBwZXJCYXNlIHsKQEAgLTE0MjgsMTEgKzE0MjcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgU2hh
ZG93RGF0YSogbGFzdFNoYWRvdyA9IG51bGxwdHI7CiAKICAgICAgICAgd2hpbGUgKHNoYWRvd0Eg
fHwgc2hhZG93QikgewotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93ID0g
c2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwgc2hhZG93Qik7Ci0gICAgICAgICAgICBjb25zdCBT
aGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dCLCBzaGFkb3dB
KTsKKyAgICAgICAgICAgIGF1dG8mIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRv
d0EsIHNoYWRvd0IpOworICAgICAgICAgICAgYXV0byYgZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxl
bmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKHNyY1NoYWRvdywgZHN0U2hhZG93
LCBjb250ZXh0KTsKLSAgICAgICAgICAgIFNoYWRvd0RhdGEqIGJsZW5kZWRTaGFkb3dQdHIgPSBi
bGVuZGVkU2hhZG93LmdldCgpOworICAgICAgICAgICAgYXV0byBibGVuZGVkU2hhZG93ID0gYmxl
bmRGdW5jKCZzcmNTaGFkb3csICZkc3RTaGFkb3csIGNvbnRleHQpOworICAgICAgICAgICAgYXV0
byBibGVuZGVkU2hhZG93UHRyID0gYmxlbmRlZFNoYWRvdy5nZXQoKTsKIAogICAgICAgICAgICAg
aWYgKCFsYXN0U2hhZG93KQogICAgICAgICAgICAgICAgIG5ld1NoYWRvd0RhdGEgPSBXVEZNb3Zl
KGJsZW5kZWRTaGFkb3cpOwpAQCAtMTQ0MSw4ICsxNDQwLDggQEAgcHJpdmF0ZToKIAogICAgICAg
ICAgICAgbGFzdFNoYWRvdyA9IGJsZW5kZWRTaGFkb3dQdHI7CiAKLSAgICAgICAgICAgIHNoYWRv
d0EgPSBzaGFkb3dBID8gc2hhZG93QS0+bmV4dCgpIDogMDsKLSAgICAgICAgICAgIHNoYWRvd0Ig
PSBzaGFkb3dCID8gc2hhZG93Qi0+bmV4dCgpIDogMDsKKyAgICAgICAgICAgIHNoYWRvd0EgPSBz
aGFkb3dBID8gc2hhZG93QS0+bmV4dCgpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIHNoYWRvd0Ig
PSBzaGFkb3dCID8gc2hhZG93Qi0+bmV4dCgpIDogbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBuZXdTaGFkb3dEYXRhOwpAQCAtMTQ3MSwxMyArMTQ3MCwxNCBAQCBwcml2YXRl
OgogCiAgICAgICAgIGludCBtYXhMZW5ndGggPSBzdGQ6Om1heChmcm9tTGVuZ3RoLCB0b0xlbmd0
aCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4TGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGZyb21TaGFkb3cgPSBpIDwgZnJvbUxlbmd0aCA/IGZy
b21TaGFkb3dzW2ldIDogMDsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHRvU2hhZG93
ID0gaSA8IHRvTGVuZ3RoID8gdG9TaGFkb3dzW2ldIDogMDsKKyAgICAgICAgICAgIGF1dG8gZnJv
bVNoYWRvdyA9IGkgPCBmcm9tTGVuZ3RoID8gZnJvbVNoYWRvd3NbaV0gOiBudWxscHRyOworICAg
ICAgICAgICAgYXV0byB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRvU2hhZG93c1tpXSA6IG51
bGxwdHI7CisKKyAgICAgICAgICAgIGF1dG8mIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5n
KGZyb21TaGFkb3csIHRvU2hhZG93KTsKKyAgICAgICAgICAgIGF1dG8mIGRzdFNoYWRvdyA9IHNo
YWRvd0ZvckJsZW5kaW5nKHRvU2hhZG93LCBmcm9tU2hhZG93KTsKIAotICAgICAgICAgICAgY29u
c3QgU2hhZG93RGF0YSogc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoZnJvbVNoYWRvdywg
dG9TaGFkb3cpOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0U2hhZG93ID0gc2hh
ZG93Rm9yQmxlbmRpbmcodG9TaGFkb3csIGZyb21TaGFkb3cpOworICAgICAgICAgICAgYXV0byBi
bGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKCZzcmNTaGFkb3csICZkc3RTaGFkb3csIGNvbnRleHQp
OwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRv
dyA9IGJsZW5kRnVuYyhzcmNTaGFkb3csIGRzdFNoYWRvdywgY29udGV4dCk7CiAgICAgICAgICAg
ICAvLyBJbnNlcnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0IHRvIHByZXNlcnZlIHRoZSBvcmRl
ci4KICAgICAgICAgICAgIGJsZW5kZWRTaGFkb3ctPnNldE5leHQoV1RGTW92ZShuZXdTaGFkb3dE
YXRhKSk7CiAgICAgICAgICAgICBuZXdTaGFkb3dEYXRhID0gV1RGTW92ZShibGVuZGVkU2hhZG93
KTsKQEAgLTIzNDgsMTggKzIzNDgsMTggQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1jbGFzcyBU
YWJTaXplUHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxjb25z
dCBUYWJTaXplJj4geworY2xhc3MgVGFiU2l6ZVByb3BlcnR5V3JhcHBlciBmaW5hbCA6IHB1Ymxp
YyBQcm9wZXJ0eVdyYXBwZXI8VGFiU2l6ZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFRhYlNpemVQcm9wZXJ0eVdyYXBwZXIoKQotICAgICAgICA6IFByb3Bl
cnR5V3JhcHBlcjxjb25zdCBUYWJTaXplJj4oQ1NTUHJvcGVydHlUYWJTaXplLCAmUmVuZGVyU3R5
bGU6OnRhYlNpemUsICZSZW5kZXJTdHlsZTo6c2V0VGFiU2l6ZSkKKyAgICAgICAgOiBQcm9wZXJ0
eVdyYXBwZXI8VGFiU2l6ZT4oQ1NTUHJvcGVydHlUYWJTaXplLCAmUmVuZGVyU3R5bGU6OnRhYlNp
emUsICZSZW5kZXJTdHlsZTo6c2V0VGFiU2l6ZSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIGJvb2wgY2FuSW50ZXJwb2xhdGUoY29uc3QgUmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJl
bmRlclN0eWxlJiB0bywgQ29tcG9zaXRlT3BlcmF0aW9uKSBjb25zdCBmaW5hbAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHZhbHVlKGZyb20pLmlzU3BhY2VzKCkgPT0gdmFsdWUodG8pLmlzU3BhY2Vz
KCk7CisgICAgICAgIHJldHVybiB2YWx1ZShmcm9tKS5pc1NwYWNlcyA9PSB2YWx1ZSh0bykuaXNT
cGFjZXM7CiAgICAgfQogCiAgICAgdm9pZCBibGVuZChSZW5kZXJTdHlsZSYgZGVzdGluYXRpb24s
IGNvbnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHlsZSYgdG8sIGNvbnN0IENT
U1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdCBmaW5hbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA2
Nzg0Nzc4NDdjYzYzZjAzYzMwMzJhOGQyYTI0YWE5MjU2NmQ5NzJkLi44NmNkNjg0NTczZDYxNzM5
NDIyNWUwMTRjYzU0YWFhYzlmYzVhYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTUzMywxNCArMTUzMywxNCBAQCBz
dGF0aWMgRWxlbWVudCogc3R5bGVFbGVtZW50Rm9yTm9kZShOb2RlKiBub2RlKQogc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gdmFsdWVGb3JQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnN0IExlbmd0aFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueCgpLCBzdHlsZSkpOwotICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLnkoKSwgc3R5bGUp
KTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3Np
dGlvbi54LCBzdHlsZSkpOworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHBvc2l0aW9uLnksIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIHN0
YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yUG9zaXRpb25PckF1dG8oY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBjb25zdCBMZW5ndGhQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgaWYgKHBvc2l0
aW9uLngoKS5pc0F1dG8oKSAmJiBwb3NpdGlvbi55KCkuaXNBdXRvKCkpCisgICAgaWYgKHBvc2l0
aW9uLnguaXNBdXRvKCkgJiYgcG9zaXRpb24ueS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0
byk7CiAKICAgICByZXR1cm4gdmFsdWVGb3JQb3NpdGlvbihzdHlsZSwgcG9zaXRpb24pOwpAQCAt
MTkzNiw3ICsxOTM2LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1Zh
bHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9
IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnRE
YXRhLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRl
bnREYXRhKSkKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5p
ZGVudGlmaWVyKCksIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CisgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PENvdW50ZXJD
b250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRpZmllciwgQ1NTVW5pdFR5
cGU6OkNTU19DT1VOVEVSX05BTUUpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8SW1hZ2VDb250ZW50
RGF0YT4oKmNvbnRlbnREYXRhKSkKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChkb3duY2FzdDxJ
bWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmltYWdlKCkuY3NzVmFsdWUoKSk7CiAgICAg
ICAgIGVsc2UgaWYgKGlzPFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKSkKQEAgLTMwMjks
NyArMzAyOSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFs
dWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKICAg
ICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLmNvbHVtbldpZHRo
KCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYlNpemU6Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRhYlNpemUoKS53aWR0aElu
UGl4ZWxzKDEuMCksIHN0eWxlLnRhYlNpemUoKS5pc1NwYWNlcygpID8gQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVIgOiBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhlbHMoMS4wKSwg
c3R5bGUudGFiU2l6ZSgpLmlzU3BhY2VzID8gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgOiBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjogewogICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdDsKICAgICAgICAgICAgIGF1dG8qIGN1
cnNvcnMgPSBzdHlsZS5jdXJzb3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TGVuZ3RoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMu
Y3BwCmluZGV4IGY1YmM4Y2E5NmI5MGQ2MDU1MGRjYTU4MjFlODM4NTQ5YTRiMmY3ZWYuLmQ2YTEy
Y2JiOTY5MjI3Mzg1NDJmNGUwOTc0NzNlN2I4ZWM3ZGU2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgTGF5b3V0U2l6ZSBzaXplRm9y
TGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGgsIGNvbnN0IExheW91dFNpemUmIG1h
eGltdW0KIAogTGF5b3V0UG9pbnQgcG9pbnRGb3JMZW5ndGhQb2ludChjb25zdCBMZW5ndGhQb2lu
dCYgbGVuZ3RoUG9pbnQsIGNvbnN0IExheW91dFNpemUmIG1heGltdW1WYWx1ZSkKIHsKLSAgICBy
ZXR1cm4geyB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54KCksIG1heGltdW1WYWx1ZS53aWR0
aCgpKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSgpLCBtYXhpbXVtVmFsdWUuaGVpZ2h0
KCkpIH07CisgICAgcmV0dXJuIHsgdmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueCwgbWF4aW11
bVZhbHVlLndpZHRoKCkpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55LCBtYXhpbXVtVmFs
dWUuaGVpZ2h0KCkpIH07CiB9CiAKIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNv
bnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKQEAg
LTEzMyw3ICsxMzMsNyBAQCBGbG9hdFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBM
ZW5ndGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBGbG9hdFNpemUmCiAKIEZsb2F0UG9pbnQgZmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KGNvbnN0IExlbmd0aFBvaW50JiBsZW5ndGhQb2ludCwgY29u
c3QgRmxvYXRTaXplJiBib3hTaXplKQogewotICAgIHJldHVybiB7IGZsb2F0VmFsdWVGb3JMZW5n
dGgobGVuZ3RoUG9pbnQueCgpLCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KGxlbmd0aFBvaW50LnkoKSwgYm94U2l6ZS5oZWlnaHQoKSkgfTsKKyAgICByZXR1cm4geyBmbG9h
dFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngsIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFs
dWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSwgYm94U2l6ZS5oZWlnaHQoKSkgfTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheVN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3R5
bGUuaAppbmRleCA3ZWUzMGEzZTEzMTI5NGEzZDU1YWNlZjRjYWEwYTcxYzNkMTBhZDU4Li42ZmVj
Mzc0NTBhYzBhYmZlZDBjYTgwNzUzOTBlZTI2OTg0Y2FjMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
aXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHByZXNlcnZlTmV3bGluZSgpIGNvbnN0OwogICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNw
YWNlKCkgY29uc3Q7CiAKLSAgICBjb25zdCBUYWJTaXplJiB0YWJTaXplKCkgY29uc3QgeyByZXR1
cm4gbV90YWJTaXplOyB9CisgICAgVGFiU2l6ZSB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV90
YWJTaXplOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cEJhY2tncm91bmQoY29uc3QgUmVu
ZGVyU3R5bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDViOGIzOTBiNDEwMDMyZGM4
Nzk3ZDhlYmRiNzNkYjFmNTBlNzJhNWEuLmFjOTIyOTMxYTg2OGUwZGQxNzllYWZjMTE0ODFlYWRk
MjBlM2IwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjc4LDYgKzI3OCw3IEBACiAj
aW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgpAQCAtMTIyMywzMiArMTIy
NCwzOCBAQCBzdHJ1Y3QgVW5pY29kZUNvZGVQb2ludFJhbmdlIHsKICAgICBVQ2hhcjMyIG1heGlt
dW07CiB9OwogCi0jaWYgQVNTRVJUX0VOQUJMRUQKLQotc3RhdGljIGlubGluZSBib29sIG9wZXJh
dG9yPChjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UmIGEsIGNvbnN0IFVuaWNvZGVDb2RlUG9p
bnRSYW5nZSYgYikKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoVW5pY29kZUNvZGVQ
b2ludFJhbmdlIGEsIFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBiKQogewotICAgIEFTU0VSVChhLm1p
bmltdW0gPD0gYS5tYXhpbXVtKTsKLSAgICBBU1NFUlQoYi5taW5pbXVtIDw9IGIubWF4aW11bSk7
CisgICAgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKGEubWluaW11bSA8PSBhLm1heGlt
dW0pOworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChiLm1pbmltdW0gPD0gYi5t
YXhpbXVtKTsKICAgICByZXR1cm4gYS5tYXhpbXVtIDwgYi5taW5pbXVtOwogfQogCi0jZW5kaWYg
Ly8gQVNTRVJUX0VOQUJMRUQKLQotc3RhdGljIGlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBV
bmljb2RlQ29kZVBvaW50UmFuZ2UmIGEsIFVDaGFyMzIgYikKK3N0YXRpYyBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcjwoVW5pY29kZUNvZGVQb2ludFJhbmdlIGEsIFVDaGFyMzIgYikKIHsKLSAgICBB
U1NFUlQoYS5taW5pbXVtIDw9IGEubWF4aW11bSk7CisgICAgQVNTRVJUX1VOREVSX0NPTlNURVhQ
Ul9DT05URVhUKGEubWluaW11bSA8PSBhLm1heGltdW0pOwogICAgIHJldHVybiBhLm1heGltdW0g
PCBiOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8KFVDaGFyMzIgYSwgY29uc3Qg
VW5pY29kZUNvZGVQb2ludFJhbmdlJiBiKQorc3RhdGljIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PChVQ2hhcjMyIGEsIFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBiKQogewotICAgIEFTU0VSVChiLm1p
bmltdW0gPD0gYi5tYXhpbXVtKTsKKyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQo
Yi5taW5pbXVtIDw9IGIubWF4aW11bSk7CiAgICAgcmV0dXJuIGEgPCBiLm1pbmltdW07CiB9CiAK
K3N0YXRpYyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBh
LCBVQ2hhcjMyIGIpCit7CisgICAgcmV0dXJuICEoYSA8IGIpICYmICEoYiA8IGEpOworfQorCitz
dGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShVQ2hhcjMyIGEsIFVuaWNvZGVDb2RlUG9p
bnRSYW5nZSBiKQoreworICAgIHJldHVybiBiID09IGE7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1BvdGVudGlhbEN1c3RvbUVsZW1lbnROYW1lQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVy
KQogewotICAgIHN0YXRpYyBjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgcmFuZ2VzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmljb2RlQ29kZVBvaW50UmFuZ2UgcmFuZ2VzW10gPSB7
CiAgICAgICAgIHsgJy0nLCAnLicgfSwKICAgICAgICAgeyAnMCcsICc5JyB9LAogICAgICAgICB7
ICdfJywgJ18nIH0sCkBAIC0xMjY3LDkgKzEyNzQsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNQ
b3RlbnRpYWxDdXN0b21FbGVtZW50TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKICAg
ICAgICAgeyAweEZERjAsIDB4RkZGRCB9LAogICAgICAgICB7IDB4MTAwMDAsIDB4RUZGRkYgfSwK
ICAgICB9OwotCi0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4ocmFuZ2VzKSwg
c3RkOjplbmQocmFuZ2VzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpi
ZWdpbihyYW5nZXMpLCBzdGQ6OmVuZChyYW5nZXMpLCBjaGFyYWN0ZXIpOworICAgIHN0YXRpYyBj
b25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgcmFuZ2VzIH07CisgICAgcmV0dXJuIHNldC5j
b250YWlucyhjaGFyYWN0ZXIpOwogfQogCiBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0
dXMgRG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVudE5hbWUoY29uc3QgQXRvbVN0cmluZyYg
bG9jYWxOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9p
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCmluZGV4IDlh
MzY3NTk2ZGQwMjY5ZDU5ZjYzZWIwZjZjODllMzRkZDgyMTgyZDkuLmI1ZjRjYzA1ZTI3NjdhMThj
NjczZDA4ZTM0Y2QyMjA2OWM1ODE5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aFBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQ
b2ludC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBMZW5ndGhQb2ludCYgc2l6ZSkK
IHsKLSAgICByZXR1cm4gdHMgPDwgc2l6ZS54KCkgPDwgIiAiIDw8IHNpemUueSgpOworICAgIHJl
dHVybiB0cyA8PCBzaXplLnggPDwgIiAiIDw8IHNpemUueTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKaW5kZXggODEyMDViYjEz
ZGRhNTAzM2IyYzkwZmJlYTA1MzBjMmY1NmY5OTM2Yi4uOThiZGNjYTA3MWY4YzIxOWIyY2JhOTBi
Y2JjMDFmMzI1YjYyMjIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oCkBA
IC0zMiw0NCArMzIsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEJsZW5kaW5nQ29u
dGV4dDsKIAogc3RydWN0IExlbmd0aFBvaW50IHsKLXB1YmxpYzoKLSAgICBMZW5ndGhQb2ludCgp
Ci0gICAgewotICAgIH0KLSAgICAKLSAgICBMZW5ndGhQb2ludChMZW5ndGggeCwgTGVuZ3RoIHkp
Ci0gICAgICAgIDogbV94KFdURk1vdmUoeCkpCi0gICAgICAgICwgbV95KFdURk1vdmUoeSkpCi0g
ICAgewotICAgIH0KKyAgICBMZW5ndGggeDsKKyAgICBMZW5ndGggeTsKIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBMZW5ndGhQb2ludCYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTGVuZ3RoUG9pbnQmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
eCA9PSBvLm1feCAmJiBtX3kgPT0gby5tX3k7CisgICAgICAgIHJldHVybiB4ID09IG90aGVyLngg
JiYgeSA9PSBvdGhlci55OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5n
dGhQb2ludCYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQm
IG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAg
ICAgIHJldHVybiB4ICE9IG90aGVyLnggfHwgeSAhPSBvdGhlci55OwogICAgIH0KIAotICAgIHZv
aWQgc2V0WChMZW5ndGggeCkgeyBtX3ggPSBXVEZNb3ZlKHgpOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
JiB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9Ci0KLSAgICB2b2lkIHNldFkoTGVuZ3RoIHkpIHsg
bV95ID0gV1RGTW92ZSh5KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJu
IG1feTsgfQotCi0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiBtX3guaXNaZXJvKCkg
JiYgbV95LmlzWmVybygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IGl0IHdvdWxkIGJl
IG5pY2UgdG8gcGFjayB0aGUgdHdvIExlbmd0aHMgdG9nZXRoZXIgYmV0dGVyIHNvbWVob3cgKHRv
IGF2b2lkIHBhZGRpbmcgYmV0d2VlbiB0aGVtKS4KLSAgICBMZW5ndGggbV94OwotICAgIExlbmd0
aCBtX3k7CisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiB4LmlzWmVybygpICYmIHku
aXNaZXJvKCk7IH0KIH07CiAKIGlubGluZSBMZW5ndGhQb2ludCBibGVuZChjb25zdCBMZW5ndGhQ
b2ludCYgZnJvbSwgY29uc3QgTGVuZ3RoUG9pbnQmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIExlbmd0aFBvaW50KGJsZW5kKGZyb20ueCgpLCB0by54
KCksIGNvbnRleHQpLCBibGVuZChmcm9tLnkoKSwgdG8ueSgpLCBjb250ZXh0KSk7CisgICAgcmV0
dXJuIHsgYmxlbmQoZnJvbS54LCB0by54LCBjb250ZXh0KSwgYmxlbmQoZnJvbS55LCB0by55LCBj
b250ZXh0KSB9OwogfQogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgY29uc3QgTGVuZ3RoUG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IGJhYmU5NjY4NGU3YzE1Y2I5Y2E5NjkzYmEzNTYw
YThhYTNkMmM5NmMuLmU5ZjI2OGMxMGRhYjQyODQ2Nzk4YTg2ZDlmOTkyZGM1YTVmYjgyZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAt
MTY1LDggKzE2NSw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcygpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlGb250KCkuZm9udE1ldHJpY3MoKTsgfQogICAg
IGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLnNwYWNlV2lk
dGgoKSArIG1fbGV0dGVyU3BhY2luZzsgfQotICAgIGZsb2F0IHRhYldpZHRoKGNvbnN0IEZvbnQm
LCBjb25zdCBUYWJTaXplJiwgZmxvYXQpIGNvbnN0OwotICAgIGZsb2F0IHRhYldpZHRoKGNvbnN0
IFRhYlNpemUmIHRhYlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdCB7IHJldHVybiB0YWJXaWR0
aChwcmltYXJ5Rm9udCgpLCB0YWJTaXplLCBwb3NpdGlvbik7IH0KKyAgICBmbG9hdCB0YWJXaWR0
aChjb25zdCBGb250JiwgVGFiU2l6ZSwgZmxvYXQpIGNvbnN0OworICAgIGZsb2F0IHRhYldpZHRo
KFRhYlNpemUgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0IHsgcmV0dXJuIHRhYldpZHRo
KHByaW1hcnlGb250KCksIHRhYlNpemUsIHBvc2l0aW9uKTsgfQogICAgIGJvb2wgaGFzVmFsaWRB
dmVyYWdlQ2hhcldpZHRoKCkgY29uc3Q7CiAgICAgYm9vbCBmYXN0QXZlcmFnZUNoYXJXaWR0aElm
QXZhaWxhYmxlKGZsb2F0ICZ3aWR0aCkgY29uc3Q7IC8vIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNz
CiAKQEAgLTM3MCw3ICszNzAsNyBAQCBpbmxpbmUgRm9udFNlbGVjdG9yKiBGb250Q2FzY2FkZTo6
Zm9udFNlbGVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9mb250cyA/IG1fZm9udHMtPmZvbnRT
ZWxlY3RvcigpIDogbnVsbHB0cjsKIH0KIAotaW5saW5lIGZsb2F0IEZvbnRDYXNjYWRlOjp0YWJX
aWR0aChjb25zdCBGb250JiBmb250LCBjb25zdCBUYWJTaXplJiB0YWJTaXplLCBmbG9hdCBwb3Np
dGlvbikgY29uc3QKK2lubGluZSBmbG9hdCBGb250Q2FzY2FkZTo6dGFiV2lkdGgoY29uc3QgRm9u
dCYgZm9udCwgVGFiU2l6ZSB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBm
bG9hdCBiYXNlVGFiV2lkdGggPSB0YWJTaXplLndpZHRoSW5QaXhlbHMoZm9udC5zcGFjZVdpZHRo
KCkpOwogICAgIGlmICghYmFzZVRhYldpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4IDc1NDNmNDc1YTI3YTY1MTU5MDZjYzIy
ZWIzZjYwYTkxNDA5MjkwYmEuLjA3NTYxOTRjZjJmNWU4YjlmYmIyN2ExMGNlNzhhMmUxOGMyM2Nm
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5jcHAKQEAgLTc0LDcgKzc0LDggQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxC
dWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWEKICAgICBhdXRv
IGJ1ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOwogICAgIGlmIChi
dWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICBpZiAoYnVmZmVyU2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
KQorICAgIHVpbnQzMl90IG1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
OworICAgIGlmIChidWZmZXJTaXplID4gbWF4KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKGJ1ZmZlclNpemUpOwogICAgIGlmICghcGl4ZWxBcnJheSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaAppbmRleCAzNGE3MDgxMDYyOGFjOTUyN2Y0
ZjVjZjA0NzVkODM1YjdjYzJlYWNmLi4zNjY0MmY4YThjNDc0MDdlYWNlOTM1MTIyODM2MGYyYzg3
ZDdjMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJT
aXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCkBA
IC0yOSw0OSArMjksMzkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKLWVudW0gVGFiU2l6ZVZhbHVlVHlw
ZSB7Ci0gICAgTGVuZ3RoVmFsdWVUeXBlLAotICAgIFNwYWNlVmFsdWVUeXBlLAotfTsKK25hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFRhYlNpemUgewotICAgIFRhYlNpemUoZmxvYXQgbnVt
T3JMZW5ndGgsIFRhYlNpemVWYWx1ZVR5cGUgaXNTcGFjZXMgPSBTcGFjZVZhbHVlVHlwZSkKLSAg
ICAgICAgOiBtX3ZhbHVlKG51bU9yTGVuZ3RoKQotICAgICAgICAsIG1faXNTcGFjZXMoaXNTcGFj
ZXMpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNTcGFjZXMoKSBjb25zdAorICAgIGVudW0g
VmFsdWVUeXBlIHsgTGVuZ3RoLCBTcGFjZXMgfTsKKyAgICBUYWJTaXplKGZsb2F0IG51bU9yTGVu
Z3RoLCBWYWx1ZVR5cGUgdHlwZSA9IFNwYWNlcykKKyAgICAgICAgOiB2YWx1ZShudW1Pckxlbmd0
aCkKKyAgICAgICAgLCBpc1NwYWNlcyh0eXBlID09IFNwYWNlcykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2lzU3BhY2VzOwogICAgIH0KIAogICAgIGZsb2F0IHdpZHRoSW5QaXhlbHMoZmxvYXQg
c3BhY2VXaWR0aCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzU3BhY2VzID8gbV92
YWx1ZSAqIHNwYWNlV2lkdGggOiBtX3ZhbHVlOworICAgICAgICByZXR1cm4gaXNTcGFjZXMgPyB2
YWx1ZSAqIHNwYWNlV2lkdGggOiB2YWx1ZTsKICAgICB9CiAKLSAgICBmbG9hdCB2YWx1ZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZTsKLSAgICB9CisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CiAKLSAgICBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQotCi0gICAgZmxvYXQgbV92YWx1ZTsKLSAg
ICBib29sIG1faXNTcGFjZXM7CisgICAgZmxvYXQgdmFsdWU7CisgICAgYm9vbCBpc1NwYWNlczsK
IH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGFiU2l6ZSYgYSwgY29uc3QgVGFi
U2l6ZSYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPT0oVGFiU2l6ZSBhLCBUYWJTaXplIGIpCiB7
Ci0gICAgcmV0dXJuIChhLm1fdmFsdWUgPT0gYi5tX3ZhbHVlKSAmJiAoYS5tX2lzU3BhY2VzID09
IGIubV9pc1NwYWNlcyk7CisgICAgcmV0dXJuIGEudmFsdWUgPT0gYi52YWx1ZSAmJiBhLmlzU3Bh
Y2VzID09IGIuaXNTcGFjZXM7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVGFi
U2l6ZSYgYSwgY29uc3QgVGFiU2l6ZSYgYikKK2lubGluZSBib29sIG9wZXJhdG9yIT0oVGFiU2l6
ZSBhLCBUYWJTaXplIGIpCiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAoraW5saW5lIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBUYWJTaXplIHNpemUpIHsg
cmV0dXJuIHN0cmVhbSA8PCBzaXplLnZhbHVlIDw8IChzaXplLmlzU3BhY2VzID8gIiBzcGFjZXMi
IDogIiIpOyB9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RleHRSdW4uaAppbmRleCAxZDQ3ZDY1ZDY4MjQ2MjZlMTU5Mjg4MDBmNDY5
N2MyNzZjYjI3NjM0Li5hMjA5NmNmOWRlMzVlOGE1YjM5M2E3ZmFjMGE0ODNkNTcxYzRmMWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCkBAIC05NSw4ICs5
NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhvcml6b250YWxHbHlwaFN0cmV0Y2goZmxvYXQg
c2NhbGUpIHsgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNoID0gc2NhbGU7IH0KIAogICAgIGJvb2wg
YWxsb3dUYWJzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd1RhYnM7IH0KLSAgICBjb25zdCBUYWJT
aXplJiB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV90YWJTaXplOyB9Ci0gICAgdm9pZCBzZXRU
YWJTaXplKGJvb2wsIGNvbnN0IFRhYlNpemUmKTsKKyAgICBUYWJTaXplIHRhYlNpemUoKSBjb25z
dCB7IHJldHVybiBtX3RhYlNpemU7IH0KKyAgICB2b2lkIHNldFRhYlNpemUoYm9vbCwgVGFiU2l6
ZSk7CiAKICAgICBmbG9hdCB4UG9zKCkgY29uc3QgeyByZXR1cm4gbV94cG9zOyB9CiAgICAgdm9p
ZCBzZXRYUG9zKGZsb2F0IHhQb3MpIHsgbV94cG9zID0geFBvczsgfQpAQCAtMTM2LDcgKzEzNiw3
IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9kaXNhYmxlU3BhY2luZyA6IDE7CiB9OwogCi1p
bmxpbmUgdm9pZCBUZXh0UnVuOjpzZXRUYWJTaXplKGJvb2wgYWxsb3csIGNvbnN0IFRhYlNpemUm
IHNpemUpCitpbmxpbmUgdm9pZCBUZXh0UnVuOjpzZXRUYWJTaXplKGJvb2wgYWxsb3csIFRhYlNp
emUgc2l6ZSkKIHsKICAgICBtX2FsbG93VGFicyA9IGFsbG93OwogICAgIG1fdGFiU2l6ZSA9IHNp
emU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVz
LmNwcAppbmRleCA5MmY0MmI2NzdkNTNkZDljNmEzZjZiZDZlM2Q5MWNiYWM2NmFhNGI5Li45ZGIx
MTExMjhhMWZiN2NlZmVhNGFkMDJhZWMxMWJhNWUyOTFkYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKQEAgLTI3LDEzICsyNywx
NCBAQAogI2luY2x1ZGUgIlZQOVV0aWxpdGllcy5oIgogCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBib29sIGlzVmFsaWRWUExldmVsKHVpbnQ4X3QgbGV2ZWwpCiB7Ci0gICAgY29u
c3RleHByIHVpbnQ4X3QgdmFsaWRMZXZlbHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgdmFsaWRMZXZlbHNbXSA9IHsKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2ZWw6Okxl
dmVsXzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8xXzEsCiAgICAgICAg
IFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8yLApAQCAtNDksMTQgKzUwLDEzIEBAIHN0YXRp
YyBib29sIGlzVmFsaWRWUExldmVsKHVpbnQ4X3QgbGV2ZWwpCiAgICAgICAgIFZQQ29uZmlndXJh
dGlvbkxldmVsOjpMZXZlbF82XzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZl
bF82XzIsCiAgICAgfTsKLQotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZh
bGlkTGV2ZWxzKSwgc3RkOjplbmQodmFsaWRMZXZlbHMpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6Ymlu
YXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkTGV2ZWxzKSwgc3RkOjplbmQodmFsaWRMZXZlbHMp
LCBsZXZlbCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyB2YWxp
ZExldmVscyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMobGV2ZWwpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc1ZhbGlkVlBDb2xvclByaW1hcmllcyh1aW50OF90IGNvbG9yUHJpbWFyaWVzKQogewot
ICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkQ29sb3JQcmltYXJpZXNbXSA9IHsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRDb2xvclByaW1hcmllc1tdID0gewogICAgICAgICBW
UENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNzA5XzYsCiAgICAgICAgIFZQQ29uZmln
dXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZCwKICAgICAgICAgVlBDb25maWd1cmF0
aW9uQ29sb3JQcmltYXJpZXM6OkJUXzQ3MF82X00sCkBAIC03MCwxNCArNzAsMTMgQEAgc3RhdGlj
IGJvb2wgaXNWYWxpZFZQQ29sb3JQcmltYXJpZXModWludDhfdCBjb2xvclByaW1hcmllcykKICAg
ICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX0VHXzQzMl8xLAogICAg
ICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6RUJVX1RlY2hfMzIxM19FLAogICAg
IH07Ci0KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZENvbG9yUHJp
bWFyaWVzKSwgc3RkOjplbmQodmFsaWRDb2xvclByaW1hcmllcykpKTsKLSAgICByZXR1cm4gc3Rk
OjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRDb2xvclByaW1hcmllcyksIHN0ZDo6ZW5k
KHZhbGlkQ29sb3JQcmltYXJpZXMpLCBjb2xvclByaW1hcmllcyk7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyB2YWxpZENvbG9yUHJpbWFyaWVzIH07CisgICAgcmV0
dXJuIHNldC5jb250YWlucyhjb2xvclByaW1hcmllcyk7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFs
aWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKHVpbnQ4X3QgdHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3MpCiB7Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGlj
c1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZFRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzOjpCVF83MDlfNiwKICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0
ZXJpc3RpY3M6OlVuc3BlY2lmaWVkLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNo
YXJhY3RlcmlzdGljczo6QlRfNDcwXzZfTSwKQEAgLTk2LDEzICs5NSwxMyBAQCBzdGF0aWMgYm9v
bCBpc1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyh1aW50OF90IHRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzKQogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
czo6U01QVEVfU1RfNDI4XzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzOjpCVF8yMTAwX0hMRywKICAgICB9OwotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRl
ZChzdGQ6OmJlZ2luKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpLCBzdGQ6OmVuZCh2YWxp
ZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFy
Y2goc3RkOjpiZWdpbih2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSwgc3RkOjplbmQodmFs
aWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyksIHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHZhbGlkVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3MgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKHRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzKTsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKHVp
bnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQogewotICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlk
TWF0cml4Q29lZmZpY2llbnRzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZh
bGlkTWF0cml4Q29lZmZpY2llbnRzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6SWRlbnRpdHksCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENv
ZWZmaWNpZW50czo6QlRfNzA5XzYsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50czo6VW5zcGVjaWZpZWQsCkBAIC0xMTgsOCArMTE3LDggQEAgc3RhdGljIGJvb2wgaXNW
YWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQogICAg
ICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkNocm9tYWNpdHlfTm9uY29u
c3RhbnRfTHVtaW5hbmNlLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVu
dHM6OkJUXzIxMDBfSUNDLAogICAgIH07Ci0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6
YmVnaW4odmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJpeENvZWZm
aWNpZW50cykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFs
aWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJpeENvZWZmaWNpZW50cyks
IG1hdHJpeENvZWZmaWNpZW50cyk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNl
dCBzZXQgeyB2YWxpZE1hdHJpeENvZWZmaWNpZW50cyB9OworICAgIHJldHVybiBzZXQuY29udGFp
bnMobWF0cml4Q29lZmZpY2llbnRzKTsKIH0KIAogc3RkOjpvcHRpb25hbDxWUENvZGVjQ29uZmln
dXJhdGlvblJlY29yZD4gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmll
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJh
Y2tQcml2YXRlQVZGT2JqQy5oCmluZGV4IGVlMWEzNzlhNWJkODJhMjZhYzMyMTJjM2RkZjZlN2Mw
NDBjMThjNTUuLmUyZDE5OGZjYTJiNGMxYzhmN2ZlNjQ4NDNiMWM0MTNkN2IxODRmN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJp
dmF0ZUFWRk9iakMuaApAQCAtNjAsMTMgKzYwLDEzIEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkluYmFuZENoYXB0ZXJUcmFj
a1ByaXZhdGVBVkZPYmpDIjsgfQogCiAgICAgc3RydWN0IENoYXB0ZXJEYXRhIHsKLSAgICAgICAg
TWVkaWFUaW1lIG1fc3RhcnRUaW1lOwotICAgICAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKLSAg
ICAgICAgU3RyaW5nIG1fdGl0bGU7CisgICAgICAgIE1lZGlhVGltZSBzdGFydFRpbWU7CisgICAg
ICAgIE1lZGlhVGltZSBkdXJhdGlvbjsKKyAgICAgICAgU3RyaW5nIHRpdGxlOwogCiAgICAgICAg
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hhcHRlckRhdGEmIG90aGVyKSBjb25z
dAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdGFydFRpbWUgPT0gb3RoZXIubV9z
dGFydFRpbWUgJiYgbV9kdXJhdGlvbiA9PSBvdGhlci5tX2R1cmF0aW9uICYmIG1fdGl0bGUgPT0g
b3RoZXIubV90aXRsZTsKKyAgICAgICAgICAgIHJldHVybiBzdGFydFRpbWUgPT0gb3RoZXIuc3Rh
cnRUaW1lICYmIGR1cmF0aW9uID09IG90aGVyLmR1cmF0aW9uICYmIHRpdGxlID09IG90aGVyLnRp
dGxlOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRW
aWRlb091dHB1dC5tbQppbmRleCAwYmMwODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIyYmUzZjUwNzhh
NzdlLi45NDljNjBiYzQ4ZTVhOWEwYjI1ODBmMWEyMTIyZWVlODc1NDUxNWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpAQCAtMjMxLDE0ICsyMzEsMTMg
QEAgdm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVy
KCkKICAgICBpZiAobV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGN1cnJlbnRUaW1lID0gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3Vy
cmVudFRpbWVdKTsKLSAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFt
ZXMsIGN1cnJlbnRUaW1lKTsKKyAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlk
ZW9GcmFtZXMsIFBBTDo6dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1cnJlbnRUaW1lXSkpOwogICAg
IGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlkZW9GcmFt
ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbmV4dEltYWdlVGltZSA9IGl0
ZXItPmZpcnN0OwogCi0gICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVy
IGFkZEJvdW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRp
bWU6UEFMOjp0b0NNVGltZShjdXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0
ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVj
dGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0
XSAoKSBtdXRhYmxlIHsKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5
ZXIgYWRkQm91bmRhcnlUaW1lT2JzZXJ2ZXJGb3JUaW1lczpAW1tOU1ZhbHVlIHZhbHVlV2l0aENN
VGltZTpQQUw6OnRvQ01UaW1lKG5leHRJbWFnZVRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVs
ZWdhdGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHBy
b3RlY3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091
dHB1dF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAg
ICAgICAgICAgd2Vha1RoaXMtPm5leHRJbWFnZVRpbWVSZWFjaGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDA1YTgzMTZkYzI3ZTYzMDE3ZjM5N2YxOTI0NjliODJh
MzNiN2IwMzQuLjA0YzAwM2I0ZTJlODc2OGNkNTg3Nzc0ZTVkMWVjNjMyNzljODhiZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0xNDIyLDE4ICsxNDIyLDE4IEBAIHdl
Ym06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3Vt
ZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9J
Rl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9y
IiwgZXJyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBPcHVzQ29va2llQ29udGVudHMgY29v
a2llQ29udGVudHM7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZh
dGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUs
IGJsb2NrQnVmZmVyRGF0YSwgY29va2llQ29udGVudHMpKSB7CisgICAgICAgICAgICBhdXRvIGNv
b2tpZUNvbnRlbnRzID0gcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBw
cml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRh
KTsKKyAgICAgICAgICAgIGlmICghY29va2llQ29udGVudHMpIHsKICAgICAgICAgICAgICAgICBQ
QVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJGYWlsZWQgdG8gcGFyc2UgT3B1cyBwcml2YXRl
IGRhdGEiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzLmZy
YW1lc1BlclBhY2tldCkgeworICAgICAgICAgICAgaWYgKCFjb29raWVDb250ZW50cy0+ZnJhbWVz
UGVyUGFja2V0KSB7CiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiT3B1cyBwcml2YXRlIGRhdGEgaW5kaWNhdGVzIDAgZnJhbWVzIHBlciBwYWNrZXQ7IGJhaWxp
bmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmlu
Zyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZyYW1lc1BlclBhY2tldCA9IGNvb2tp
ZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldDsKLSAgICAgICAgICAgIG1fZnJhbWVEdXJhdGlvbiA9
IGNvb2tpZUNvbnRlbnRzLmZyYW1lRHVyYXRpb247Ci0gICAgICAgICAgICBmb3JtYXREZXNjcmlw
dGlvbiA9IGNyZWF0ZU9wdXNBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvb2tpZUNvbnRlbnRzKTsK
KyAgICAgICAgICAgIG1fZnJhbWVzUGVyUGFja2V0ID0gY29va2llQ29udGVudHMtPmZyYW1lc1Bl
clBhY2tldDsKKyAgICAgICAgICAgIG1fZnJhbWVEdXJhdGlvbiA9IGNvb2tpZUNvbnRlbnRzLT5m
cmFtZUR1cmF0aW9uOworICAgICAgICAgICAgZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVPcHVz
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbigqY29va2llQ29udGVudHMpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikgewpAQCAtMTQ1Myw3ICsxNDUzLDYgQEAgd2Vi
bTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1l
RnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgLy8gT3B1cyB0ZWNobmljYWxseSBhbGxvd3Mg
dGhlIGZyYW1lIGR1cmF0aW9uIGFuZCBmcmFtZXMtcGVyLXBhY2tldCB2YWx1ZXMgdG8gY2hhbmdl
IGZyb20gcGFja2V0IHRvIHBhY2tldC4KICAgICAgICAgLy8gQ29yZUF1ZGlvIGRvZXNuJ3Qgc3Vw
cG9ydCBBU0JEIHZhbHVlcyBsaWtlIHRoZXNlIHRvIGNoYW5nZSBvbiBhIHBlci1wYWNrZXQgYmFz
aXMsIHNvIHRocm93IGFuIGVycm9yIHdoZW4KICAgICAgICAgLy8gdGhhdCBraW5kIG9mIHZhcmlh
YmlsaXR5IGlzIGVuY291bnRlcmVkLgotICAgICAgICBPcHVzQ29va2llQ29udGVudHMgY29va2ll
Q29udGVudHM7CiAgICAgICAgIGF1dG8mIHByaXZhdGVEYXRhID0gdHJhY2soKS5jb2RlY19wcml2
YXRlLnZhbHVlKCk7CiAgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3VvdXND
b21wbGV0ZUJsb2NrQnVmZmVyKG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQsICptX2NvbXBsZXRl
UGFja2V0U2l6ZSk7CiAgICAgICAgIGlmICghY29udGlndW91c0J1ZmZlcikgewpAQCAtMTQ2Niw5
ICsxNDY1LDggQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJh
Y2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgICAgIFBBUlNFUl9M
T0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQg
d2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRl
c1JlbWFpbmluZyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0
YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNr
ZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQotICAgICAgICAgICAgfHwg
Y29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0Ci0gICAg
ICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJhdGlv
bikgeworICAgICAgICBhdXRvIGNvb2tpZUNvbnRlbnRzID0gcGFyc2VPcHVzUHJpdmF0ZURhdGEo
cHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0
U2l6ZSwgYmxvY2tCdWZmZXJEYXRhKTsKKyAgICAgICAgaWYgKCFjb29raWVDb250ZW50cyB8fCBj
b29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0IHx8IGNv
b2tpZUNvbnRlbnRzLT5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJhdGlvbikgewogICAgICAg
ICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1cyBmcmFtZXMtcGVyLXBhY2tl
dCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwogICAgICAgICAgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpWYXJpYWJsZUZyYW1lRHVyYXRpb24pKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgKaW5kZXggODcxMDRkOGI3YjM1
N2MxNjBiNmRjY2M0MWJmZTFmODllMGE2YzI3MS4uOGI2N2RlNmY0OTMwMWJhMDExNThhOTgwMDk5
NTkyNzcwNDQ1MjM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oCkBAIC0yOCw4
ICsyOCw4IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KIAotY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1LDkgKzU1
LDkgQEAgc3RydWN0IE9wdXNDb29raWVDb250ZW50cyB7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNPcHVzRGVjb2RlckF2YWlsYWJsZSgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCByZWdpc3Rlck9w
dXNEZWNvZGVySWZOZWVkZWQoKTsKLWJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IHBy
aXZhdGVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogcHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZURhdGFT
aXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50cyYpOworc3RkOjpv
cHRpb25hbDxPcHVzQ29va2llQ29udGVudHM+IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBw
cml2YXRlRGF0YVNpemUsIGNvbnN0IHZvaWQqIHByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVEYXRh
U2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhKTsKIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0
aW9uUmVmPiBjcmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBPcHVzQ29va2ll
Q29udGVudHMmKTsKIAogfQogCi0jZW5kaWYgLy8gJiYgUExBVEZPUk0oQ09DT0EpCisjZW5kaWYg
Ly8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCmluZGV4
IDdlMGFmYjI5MGRkODVhNzdmOWJlZmZmNDk0N2E0N2I3NTM1ZWIyZjQuLmFiNWJhMWYyNTJjZWMy
NzE2YjUwMGY2ZjlhNWM0YmJhNjc0MjgxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgY29uc3RleHByIGludDMyX3Qgb3B1c0NvbmZpZ1Rv
QmFuZHdpZHRoKHVpbnQ4X3QgY29uZmlnKQogfQogI2VuZGlmCiAKLWJvb2wgcGFyc2VPcHVzUHJp
dmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0
ZURhdGEsIHNpemVfdCBmcmFtZVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSwgT3B1c0Nvb2tp
ZUNvbnRlbnRzJiBjb29raWUpCitzdGQ6Om9wdGlvbmFsPE9wdXNDb29raWVDb250ZW50cz4gcGFy
c2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNv
ZGVjUHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSkK
IHsKICNpZiBFTkFCTEUoT1BVUykKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNzg0NQpAQCAtMjAxLDE2ICsyMDEsMTcgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShz
aXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAg
ICBhdXRvKiBwcml2YXRlRGF0YVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihjb2Rl
Y1ByaXZhdGVEYXRhKTsKIAogICAgIGlmIChjb2RlY1ByaXZhdGVTaXplIDwgMTkpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAxLiBN
YWdpYyBTaWduYXR1cmU6CiAgICAgLy8KICAgICAvLyAgICAgVGhpcyBpcyBhbiA4LW9jdGV0ICg2
NC1iaXQpIGZpZWxkIHRoYXQgYWxsb3dzIGNvZGVjCiAgICAgLy8gICAgIGlkZW50aWZpY2F0aW9u
IGFuZCBpcyBodW1hbiByZWFkYWJsZS4KICAgICBpZiAoc3RybmNtcCgiT3B1c0hlYWQiLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwcml2YXRlRGF0YVB0ciksIDgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAyLiBW
ZXJzaW9uICg4IGJpdHMsIHVuc2lnbmVkKToKKyAgICBPcHVzQ29va2llQ29udGVudHMgY29va2ll
OwogICAgIGNvb2tpZS52ZXJzaW9uID0gKihwcml2YXRlRGF0YVB0ciArIDgpOwogCiAgICAgLy8g
My4gT3V0cHV0IENoYW5uZWwgQ291bnQgJ0MnICg4IGJpdHMsIHVuc2lnbmVkKToKQEAgLTIzMSw3
ICsyMzIsNyBAQCBib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVT
aXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLAogICAgIGF1dG8gZnJhbWVQdHIgPSBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZnJhbWVEYXRhKTsKIAogICAgIGlmIChmcmFtZVNp
emUgPCAxKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjcxNgogICAgIC8v
IDMuMS4gVGhlIFRPQyBCeXRlCkBAIC0yODUsMjEgKzI4NiwyMCBAQCBib29sIHBhcnNlT3B1c1By
aXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZh
dGVEYXRhLAogICAgICAgICAvLwogICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgRmln
dXJlIDU6IFRoZSBmcmFtZSBjb3VudCBieXRlCiAgICAgICAgIGlmIChmcmFtZVNpemUgPCAyKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICB1aW50OF90IGZyYW1lQ291bnRCeXRlID0gKihmcmFtZVB0ciArIDEpOwog
ICAgICAgICBjb29raWUuaXNWQlIgPSAoKGZyYW1lQ291bnRCeXRlICYgMGIxMDAwMDAwMCkgPj4g
NykgPT0gMTsKICAgICAgICAgY29va2llLmhhc1BhZGRpbmcgPSAoKGZyYW1lQ291bnRCeXRlICYg
MGIwMTAwMDAwMCkgPj4gNikgPT0gMTsKICAgICAgICAgY29va2llLmZyYW1lc1BlclBhY2tldCA9
IChmcmFtZUNvdW50Qnl0ZSAmIDBiMDAxMTExMTEpOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gY29va2llOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29kZWNQcml2YXRl
U2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvZGVjUHJpdmF0ZURhdGEpOwogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZVNpemUpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZURhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShjb29raWUpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlTGF5ZXJQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVn
YWN5VGlsZUxheWVyUG9vbC5oCmluZGV4IDhkYzIxM2Y0N2Q0ZjgxOTIxMTExYTRhNjljNDk5NjJl
YTczZmNmMGEuLmRjZDZhNDdiYTYwODUzZGEwOGUxMmYwMjAyODc5ZDQ5ZGIzNjM0OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9X
YWxsVGltZS5oPgogCiBAY2xhc3MgTGVnYWN5VGlsZUxheWVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KaW5kZXggYjUyYzg2MTg2ZjBiYjA2ZmQz
MjNlZDI5ZjgyZDc3Yzk1OGZlMjYwOC4uOWY4ZGViZTk1NDYxMWVhMGU4YWQ3MzMwY2Q5MjZhYzJh
MzA5MTQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxv
Y2tsaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlz
dC5tbQpAQCAtMzUsNDMgKzM1LDI5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBP
U0J1aWxkSW5mbyB7Ci0gICAgT1NCdWlsZEluZm8oKQotICAgICAgICA6IG1ham9yKDApCi0gICAg
ICAgICwgbWlub3IoMCkKLSAgICAgICAgLCBidWlsZCgwKQotICAgIHsKLSAgICB9Ci0KLSAgICBP
U0J1aWxkSW5mbyhpbnQgbWFqb3IsIGludCBtaW5vciwgaW50IGJ1aWxkKQotICAgICAgICA6IG1h
am9yKG1ham9yKQotICAgICAgICAsIG1pbm9yKG1pbm9yKQotICAgICAgICAsIGJ1aWxkKGJ1aWxk
KQotICAgIHsKLSAgICB9CisgICAgaW50IG1ham9yIHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSAx
MyBpbiAxM0M2NC4KKyAgICBpbnQgbWlub3IgeyAwIH07IC8vIFJlcHJlc2VudHMgdGhlIEMgaW4g
MTNDNjQgKGFzIGEgbnVtYmVyIHdoZXJlIEEgPT0gMSwgaS5lLiAzKS4KKyAgICBpbnQgYnVpbGQg
eyAwIH07IC8vIFJlcHJlc2VudHMgdGhlIDY0IGluIDEzQzY0LgogCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1ham9yID09IG90aGVyLm1ham9yICYmIG1pbm9yID09IG90aGVyLm1pbm9yICYmIGJ1aWxkID09
IG90aGVyLmJ1aWxkOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9TQnVpbGRJ
bmZvJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oT1NCdWlsZElu
Zm8gb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1p
bm9yLCBidWlsZCkgPiBzdGQ6OnRpZShvdGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1
aWxkKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgT1NCdWlsZEluZm8mIG90
aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oT1NCdWlsZEluZm8gb3Ro
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9yLCBi
dWlsZCkgPD0gc3RkOjp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBj
b25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChPU0J1aWxkSW5mbyBvdGhlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA8
IHN0ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0K
LQotICAgIGludCBtYWpvcjsgLy8gUmVwcmVzZW50cyB0aGUgMTMgaW4gMTNDNjQuCi0gICAgaW50
IG1pbm9yOyAvLyBSZXByZXNlbnRzIHRoZSBDIGluIDEzQzY0IChhcyBhIG51bWJlciB3aGVyZSBB
ID09IDEsIGkuZS4gMykuCi0gICAgaW50IGJ1aWxkOyAvLyBSZXByZXNlbnRzIHRoZSA2NCBpbiAx
M0M2NC4KIH07CiAKIHN0YXRpYyBPU0J1aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmlu
ZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcpCkBAIC04Myw3ICs2OSw3IEBAIHN0YXRpYyBPU0J1aWxk
SW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcpCiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICBOU0xvZyhAIldlYkdMQmxvY2tsaXN0IGNvdWxkIG5vdCBw
YXJzZSBPU0J1aWxkIGVudHJ5OiAlQCIsIGJ1aWxkU3RyaW5nKTsKICNlbmRpZgotICAgICAgICBy
ZXR1cm4gT1NCdWlsZEluZm8oKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBO
U1RleHRDaGVja2luZ1Jlc3VsdCAqbWF0Y2hSZXN1bHQgPSBbbWF0Y2hlcyBvYmplY3RBdEluZGV4
OjBdOwpAQCAtOTIsMTQgKzc4LDE0IEBAIHN0YXRpYyBPU0J1aWxkSW5mbyBidWlsZEluZm9Gcm9t
T1NCdWlsZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICBOU0xvZyhAIldlYkdMQmxvY2tsaXN0IGNvdWxkIG5vdCBwYXJzZSBPU0J1aWxkIGVudHJ5
OiAlQCIsIGJ1aWxkU3RyaW5nKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gT1NCdWlsZEluZm8o
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBpbnQgbWFqb3JWZXJzaW9uID0g
W1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRl
eDoxXV0gaW50VmFsdWVdOwogICAgIGludCBtaW5vclZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1
YnN0cmluZ1dpdGhSYW5nZTpbbWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjJdXSBjaGFyYWN0ZXJB
dEluZGV4OjBdIC0gJ0EnICsgMTsKICAgICBpbnQgYnVpbGRWZXJzaW9uID0gW1tidWlsZFN0cmlu
ZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRleDozXV0gaW50VmFs
dWVdOwogCi0gICAgcmV0dXJuIE9TQnVpbGRJbmZvKG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9u
LCBidWlsZFZlcnNpb24pOworICAgIHJldHVybiB7IG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9u
LCBidWlsZFZlcnNpb24gfTsKIH0KIAogYm9vbCBXZWJHTEJsb2NrbGlzdDo6c2hvdWxkQmxvY2tX
ZWJHTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuaAppbmRleCA4Y2E1ZjMxOWUyYjgwNmNlYWE5
MDI2MTdjNWMzYTI0OWExYzc0YTRhLi4wYTE2ZTU0ZmRiYTQ4ZGI1YWE2M2VjNjQ3MjZmMjc1ZjBk
YjEwOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJp
Y3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2Fk
TWV0cmljcy5tbQppbmRleCA2MzEyZTA2ODQyOTdiNDNjMzMxMWU0NzM5YjY4MWFiNDQ1YzMzNjcy
Li5iZjVjNzRmNGNmZGNhMzc1ZTNiZTQyMzJlNDc1YzIyZGFmZmNlY2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2Fk
TWV0cmljcy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5o
IgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VSTENvbm5lY3Rpb25TUEkuaD4KKyNpbXBvcnQg
PHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkLmNwcAppbmRleCA1NjAyZDdjMmQ0ZDViY2E5MzI0NTQ0Yjc1YWQyMmNiMjY1OGVkMDJj
Li4wZGY3NDI2NTFmZjdiZGM4YmI2NDMzNDZmOWJjY2JjMjA0YzE5ZTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBHcmlkSXRlcmF0b3I6Omlz
RW1wdHlBcmVhRW5vdWdoKHVuc2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNv
bnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlk
SXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNp
Z25lZCB2YXJ5aW5nVHJhY2tTcGFuKQorc3RkOjpvcHRpb25hbDxHcmlkQXJlYT4gR3JpZEl0ZXJh
dG9yOjpuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWduZWQg
dmFyeWluZ1RyYWNrU3BhbikKIHsKICAgICBBU1NFUlQoIW1fZ3JpZC5pc0VtcHR5KCkpOwogICAg
IEFTU0VSVCghbV9ncmlkWzBdLmlzRW1wdHkoKSk7CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2ln
bmVkIGZpeGVkVHJhY2tTcGEKICAgICBBU1NFUlQodmFyeWluZ1RyYWNrU3BhbiA+PSAxKTsKIAog
ICAgIGlmIChtX2dyaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2lnbmVkIHJvd1NwYW4gPSAobV9kaXJl
Y3Rpb24gPT0gRm9yQ29sdW1ucykgPyB2YXJ5aW5nVHJhY2tTcGFuIDogZml4ZWRUcmFja1NwYW47
CiAgICAgdW5zaWduZWQgY29sdW1uU3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/
IGZpeGVkVHJhY2tTcGFuIDogdmFyeWluZ1RyYWNrU3BhbjsKQEAgLTIzMSwxMyArMjMxLDEzIEBA
IHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJl
YSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhCiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5aW5n
VHJhY2tJbmRleCA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkg
OiBtX2dyaWRbMF0uc2l6ZSgpOwogICAgIGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8IGVuZE9m
VmFyeWluZ1RyYWNrSW5kZXg7ICsrdmFyeWluZ1RyYWNrSW5kZXgpIHsKICAgICAgICAgaWYgKGlz
RW1wdHlBcmVhRW5vdWdoKHJvd1NwYW4sIGNvbHVtblNwYW4pKSB7Ci0gICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRT
cGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsg
cm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbklu
ZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBHcmlkQXJlYShHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJ
bmRleCwgbV9yb3dJbmRleCArIHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRl
R3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKICAg
ICAgICAgICAgIC8vIEFkdmFuY2UgdGhlIGl0ZXJhdG9yIHRvIGF2b2lkIGFuIGluZmluaXRlIGxv
b3Agd2hlcmUgd2Ugd291bGQgcmV0dXJuIHRoZSBzYW1lIGdyaWQgYXJlYSBvdmVyIGFuZCBvdmVy
LgogICAgICAgICAgICAgKyt2YXJ5aW5nVHJhY2tJbmRleDsKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkLmgKaW5kZXggNzJjYWRmNjhlZjRkMzI2NmNlMWY4Y2VlYmRjOWE0OWRmMmJjODExYi4u
NTk0N2ZlNWU1Mzg2NTNkMGFhYzg0OTRmZWE4ZGE5NjdjMzA4NWVjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZC5oCkBAIC0zNywxMCArMzcsMTEgQEAgdHlwZWRlZiBWZWN0b3I8V2Vha1B0cjxSZW5k
ZXJCb3g+LCAxPiBHcmlkQ2VsbDsKIHR5cGVkZWYgVmVjdG9yPFZlY3RvcjxHcmlkQ2VsbD4+IEdy
aWRBc01hdHJpeDsKIHR5cGVkZWYgTGlzdEhhc2hTZXQ8c2l6ZV90PiBPcmRlcmVkVHJhY2tJbmRl
eFNldDsKIAotY2xhc3MgR3JpZEFyZWE7CiBjbGFzcyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI7CiBj
bGFzcyBSZW5kZXJHcmlkOwogCitzdHJ1Y3QgR3JpZEFyZWE7CisKIGNsYXNzIEdyaWQgZmluYWwg
ewogcHVibGljOgogICAgIGV4cGxpY2l0IEdyaWQoUmVuZGVyR3JpZCYpOwpAQCAtMTExLDcgKzEx
Miw3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlckJveCogbmV4dEdyaWRJdGVtKCk7CiAgICAgYm9v
bCBpc0VtcHR5QXJlYUVub3VnaCh1bnNpZ25lZCByb3dTcGFuLCB1bnNpZ25lZCBjb2x1bW5TcGFu
KSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVh
KHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhl
ZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFyeWluZ1RyYWNrU3Bhbik7CiAKIHByaXZhdGU6CiAgICAg
Y29uc3QgR3JpZEFzTWF0cml4JiBtX2dyaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKaW5kZXggY2VjZWQzNWU1Y2U4N2JmYmMxNDAxODM2Y2QxM2VhMWFlZGQ3
YWZjMC4uMDBlYmQ1ZmZjMDViNzIyMmE0ZjdhNDNiMGM0MjFiMmMzOTY1NmQyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtNDMwLDIwICs0MzAsMTkg
QEAgU3RyaW5nIFJlbmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBiZWZvcmVBZnRlckNvbnRhaW5lciA9IGJlZm9yZUFm
dGVyQ29udGFpbmVyLT5wYXJlbnQoKTsKICAgICAgICAgfQotICAgICAgICBtYWtlQ291bnRlck5v
ZGUoKmJlZm9yZUFmdGVyQ29udGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllcigpLCB0cnVlKS0+
YWRkUmVuZGVyZXIoY29uc3RfY2FzdDxSZW5kZXJDb3VudGVyJj4oKnRoaXMpKTsKKyAgICAgICAg
bWFrZUNvdW50ZXJOb2RlKCpiZWZvcmVBZnRlckNvbnRhaW5lciwgbV9jb3VudGVyLmlkZW50aWZp
ZXIsIHRydWUpLT5hZGRSZW5kZXJlcihjb25zdF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykp
OwogICAgICAgICBBU1NFUlQobV9jb3VudGVyTm9kZSk7CiAgICAgfQogICAgIENvdW50ZXJOb2Rl
KiBjaGlsZCA9IG1fY291bnRlck5vZGU7CiAgICAgaW50IHZhbHVlID0gY2hpbGQtPmFjdHNBc1Jl
c2V0KCkgPyBjaGlsZC0+dmFsdWUoKSA6IGNoaWxkLT5jb3VudEluUGFyZW50KCk7CiAKLSAgICBT
dHJpbmcgdGV4dCA9IGxpc3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwgdmFsdWUp
OworICAgIFN0cmluZyB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSwg
dmFsdWUpOwogCi0gICAgaWYgKCFtX2NvdW50ZXIuc2VwYXJhdG9yKCkuaXNOdWxsKCkpIHsKKyAg
ICBpZiAoIW1fY291bnRlci5zZXBhcmF0b3IuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFjaGls
ZC0+YWN0c0FzUmVzZXQoKSkKICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPnBhcmVudCgpOwog
ICAgICAgICB3aGlsZSAoQ291bnRlck5vZGUqIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKSkgewot
ICAgICAgICAgICAgdGV4dCA9IGxpc3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwg
Y2hpbGQtPmNvdW50SW5QYXJlbnQoKSkKLSAgICAgICAgICAgICAgICArIG1fY291bnRlci5zZXBh
cmF0b3IoKSArIHRleHQ7CisgICAgICAgICAgICB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3Vu
dGVyLmxpc3RTdHlsZSwgY2hpbGQtPmNvdW50SW5QYXJlbnQoKSkgKyBtX2NvdW50ZXIuc2VwYXJh
dG9yICsgdGV4dDsKICAgICAgICAgICAgIGNoaWxkID0gcGFyZW50OwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDI2ZjhmY2JjMGFi
Mjc5NjBjNDkzOTIyM2U3NDhkOTNjM2I4M2M5OWEuLjFiNjc0NWE5ZTc5MGI4MDViMTM1MDAwNDJl
NDFlMDkzZWQ4MTY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
QEAgLTc2NSwxMyArNzY1LDEzIEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdy
aWRBbmRPcmRlckl0ZXJhdG9yKEdyaWQmIGdyaWQpIGNvbnN0CiAgICAgZ3JpZC5lbnN1cmVHcmlk
U2l6ZShtYXhpbXVtUm93SW5kZXggKyBleHBsaWNpdFJvd1N0YXJ0LCBtYXhpbXVtQ29sdW1uSW5k
ZXggKyBleHBsaWNpdENvbHVtblN0YXJ0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVh
PiBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRz
aWRlR3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lm
aWVkUG9zaXRpb25zKSBjb25zdAorR3JpZEFyZWEgUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlk
QXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgUmVu
ZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHNwZWNpZmllZERpcmVj
dGlvbiwgY29uc3QgR3JpZFNwYW4mIHNwZWNpZmllZFBvc2l0aW9ucykgY29uc3QKIHsKICAgICBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gY3Jvc3NEaXJlY3Rpb24gPSBzcGVjaWZpZWREaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucyA/IEZvclJvd3MgOiBGb3JDb2x1bW5zOwogICAgIGNvbnN0IHVuc2ln
bmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7
CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24p
OwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5z
bGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJl
Y3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxH
cmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlv
blBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7
CisgICAgcmV0dXJuIEdyaWRBcmVhKHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8g
Y3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERp
cmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rp
b25Qb3NpdGlvbnMpOwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JB
eGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRv
R3JpZEl0ZW1zKSBjb25zdApAQCAtNzkyLDcgKzc5Miw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8
UmVuCiAgICAgICAgIHVuc2lnbmVkIG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbiA9IG1ham9yQXhp
c1Bvc2l0aW9ucy5zdGFydExpbmUoKTsKIAogICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3Io
Z3JpZCwgYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlv
bnMuc3RhcnRMaW5lKCksIGlzR3JpZEF1dG9GbG93RGVuc2UgPyAwIDogbWlub3JBeGlzQ3Vyc29y
cy5nZXQobWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1h
am9yQXhpc1Bvc2l0aW9ucy5pbnRlZ2VyU3BhbigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CisgICAg
ICAgIGF1dG8gZW1wdHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1ham9y
QXhpc1Bvc2l0aW9ucy5pbnRlZ2VyU3BhbigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CiAgICAgICAg
IGlmICghZW1wdHlHcmlkQXJlYSkKICAgICAgICAgICAgIGVtcHR5R3JpZEFyZWEgPSBjcmVhdGVF
bXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChncmlkLCAqYXV0b0dy
aWRJdGVtLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0
aW9ucyk7CiAKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01h
am9yQXhpc0l0ZW1PbkdyaWQoR3JpZCYgZ3JpZCwgUmVuZGVyQm94JiBncmlkSXRlbSwgQQogICAg
IHVuc2lnbmVkIG1ham9yQXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFq
b3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3Iuc2Vj
b25kIDogYXV0b1BsYWNlbWVudEN1cnNvci5maXJzdDsKICAgICB1bnNpZ25lZCBtaW5vckF4aXNB
dXRvUGxhY2VtZW50Q3Vyc29yID0gYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpID09
IEZvckNvbHVtbnMgPyBhdXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0IDogYXV0b1BsYWNlbWVudEN1
cnNvci5zZWNvbmQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGVtcHR5R3JpZEFy
ZWE7CisgICAgc3RkOjpvcHRpb25hbDxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKICAgICBHcmlk
U3BhbiBtaW5vckF4aXNQb3NpdGlvbnMgPSBncmlkLmdyaWRJdGVtU3BhbihncmlkSXRlbSwgYXV0
b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVjdGlvbigpKTsKICAgICBpZiAobWlub3JBeGlzUG9zaXRp
b25zLmlzVHJhbnNsYXRlZERlZmluaXRlKCkpIHsKICAgICAgICAgLy8gTW92ZSB0byB0aGUgbmV4
dCB0cmFjayBpbiBtYWpvciBheGlzIGlmIGluaXRpYWwgcG9zaXRpb24gaW4gbWlub3IgYXhpcyBp
cyBiZWZvcmUgYXV0by1wbGFjZW1lbnQgY3Vyc29yLgpAQCAtODU3LDcgKzg1Nyw3IEBAIHZvaWQg
UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChHcmlkJiBncmlkLCBSZW5k
ZXJCb3gmIGdyaWRJdGVtLCBBCiAKICAgICAgICAgICAgICAgICAvLyBEaXNjYXJkIGVtcHR5IGdy
aWQgYXJlYSBhcyBpdCBkb2VzIG5vdCBmaXQgaW4gdGhlIG1pbm9yIGF4aXMgZGlyZWN0aW9uLgog
ICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGVtcHR5IGdy
aWQgYXJlYSB5ZXQgYXMgd2UgbWlnaHQgZmluZCBhIHZhbGlkIG9uZSBpbiB0aGUgbmV4dCBpdGVy
YXRpb24uCi0gICAgICAgICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IG51bGxwdHI7CisgICAgICAg
ICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gQXMgd2UncmUgbW92aW5nIHRvIHRoZSBuZXh0IHRyYWNrIGluIHRoZSBt
YWpvciBheGlzIHdlIHNob3VsZCByZXNldCB0aGUgYXV0by1wbGFjZW1lbnQgY3Vyc29yIGluIHRo
ZSBtaW5vciBheGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggMjlh
ZTU5NDgwMDNlZTZkMmRkNDQzYjU2OTlkY2IyZDdjMTdiOTYyNi4uNjVjOWU2ZTI1MjY4NDk3MDMz
ODRkZGRjYmExNzgzYzRiYjc3YjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oCkBAIC0zMiw5ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdy
aWRBcmVhOwogY2xhc3MgR3JpZFNwYW47CiAKK3N0cnVjdCBHcmlkQXJlYTsKKwogc3RydWN0IENv
bnRlbnRBbGlnbm1lbnREYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZW50QWxp
Z25tZW50RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTExLDcg
KzExMiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtJiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpIGNvbnN0OwogICAgIHZvaWQgcG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0
ZXJhdG9yKEdyaWQmKSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGNyZWF0
ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmLCBjb25z
dCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJikg
Y29uc3Q7CisgICAgR3JpZEFyZWEgY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRp
b25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsKICAgICB2b2lkIHBsYWNlU3BlY2lmaWVk
TWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNv
bnN0OwogICAgIHZvaWQgcGxhY2VBdXRvTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNvbnN0
IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNvbnN0OwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gQXV0b1BsYWNlbWVudEN1cnNvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggN2U4ZGQ2ODgyNGNm
YjQ1NjIwODBlNTk0ZWNkODQwMmE2YzlmYzAzMi4uZjllZGUxZDkwYjM5MzZmMTMwOWQ0N2IyNDAz
NTE1NDJhMjc3YzQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBXZWJDb3JlSGFzM0RSZW5kZXJpbmcgPSB0cnVlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWYgIVVTRShDT01QT1NJVElOR19GT1JfU01BTExfQ0FOVkFTRVMpCi1zdGF0aWMgY29uc3QgaW50
IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAwOworc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjYW52YXNBcmVhVGhyZXNob2xkUmVxdWlyaW5nQ29tcG9z
aXRpbmcgPSA1MCAqIDEwMDsKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZTk2Mzdl
ZWJlMjA2MDlhZTBjNWQyYjFkNmY2YjNlNjFiYzlmMTI5OC4uODQ2YWQxNTI1YWYyMDY2MDdiNDJi
ZjRlZDExMGNmYWE5MTRlOTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCkBAIC00NjcsOCArNDY3LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNl
ZDo6cmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQog
CiAgICAgTGVuZ3RoUG9pbnQgb2JqZWN0UG9zaXRpb24gPSBzdHlsZSgpLm9iamVjdFBvc2l0aW9u
KCk7CiAKLSAgICBMYXlvdXRVbml0IHhPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2Jq
ZWN0UG9zaXRpb24ueCgpLCBjb250ZW50UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRoKCkp
OwotICAgIExheW91dFVuaXQgeU9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQ
b3NpdGlvbi55KCksIGNvbnRlbnRSZWN0LmhlaWdodCgpIC0gZmluYWxSZWN0LmhlaWdodCgpKTsK
KyAgICBMYXlvdXRVbml0IHhPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9z
aXRpb24ueCwgY29udGVudFJlY3Qud2lkdGgoKSAtIGZpbmFsUmVjdC53aWR0aCgpKTsKKyAgICBM
YXlvdXRVbml0IHlPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9zaXRpb24u
eSwgY29udGVudFJlY3QuaGVpZ2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOwogCiAgICAgZmlu
YWxSZWN0Lm1vdmUoeE9mZnNldCwgeU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IGNhNWI3NDBkOTA0NGJkNjVlMzY2YjU3ZDc2YzM0
MjhjM2Y5ZWUzZjYuLjRjNDc0Yzk1ZTNlZWMyMjJmMDUzOTkzNTIyNWQ0YTIxOWE2MDI4ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApAQCAtNjQwLDcg
KzY0MCw3IEBAIGNvbnN0IFNoYWRvd0RhdGEqIFRleHRCb3hQYWludGVyOjpkZWJ1Z1RleHRTaGFk
b3coKSBjb25zdAogICAgIGlmICghdGV4dEJveCgpLmxlZ2FjeUlubGluZUJveCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRh
PiBkZWJ1Z1RleHRTaGFkb3coTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aCgxMCwgTGVuZ3RoVHlwZTo6Rml4ZWQp
LCBMZW5ndGgoMjAsIExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1
ZSwgU1JHQkE8dWludDhfdD4geyAxNTAsIDAsIDAsIDE5MCB9KTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVidWdUZXh0U2hhZG93KExlbmd0aFBvaW50IHsgeyBMZW5n
dGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKDEwLCBMZW5n
dGhUeXBlOjpGaXhlZCksIExlbmd0aCgyMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHls
ZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOwogICAg
IHJldHVybiAmZGVidWdUZXh0U2hhZG93LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRTdHlsZS5oCmluZGV4IDQ1OWJhZjExMmZjMDMyNzBhZmU0NmZmZTg0ZWQw
ZDViYTZiMjZlMzkuLjI1Y2Y0OGNmNDkyODEyZWEzZWIwZmZmNDYwMDJjZGQwZDc3NmViMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCkBAIC0zMywxMyArMzMs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKLWNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFJl
bmRlclRleHQ7CiBjbGFzcyBTaGFkb3dEYXRhOworCiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiBzdHJ1
Y3QgVGV4dFBhaW50U3R5bGUgewotICAgIFRleHRQYWludFN0eWxlKCkgeyB9CisgICAgVGV4dFBh
aW50U3R5bGUoKSA9IGRlZmF1bHQ7CiAgICAgVGV4dFBhaW50U3R5bGUoY29uc3QgQ29sb3ImKTsK
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UGFpbnRTdHlsZSYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaAppbmRleCA1
ODZjYzY2OTgwMjY1ZDk4NjNhY2FhYTdlZTZiOGE5ODY0ODMyNmM2Li43YmY1YmM5MDZlODhjNTM3
NTgxMGNjM2UxZmMyODg5OTA5ZDUwYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaApAQCAtMjksMzIgKzI5LDE5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQ291bnRlckNvbnRlbnQgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIENvdW50ZXJDb250ZW50KGNvbnN0IEF0b21TdHJpbmcm
IGlkZW50aWZpZXIsIExpc3RTdHlsZVR5cGUgc3R5bGUsIGNvbnN0IEF0b21TdHJpbmcmIHNlcGFy
YXRvcikKLSAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAgICAgLCBtX2xp
c3RTdHlsZShzdHlsZSkKLSAgICAgICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgewot
ICAgICAgICBBU1NFUlQoc3R5bGUgIT0gTGlzdFN0eWxlVHlwZTo6U3RyaW5nKTsKLSAgICB9Citz
dHJ1Y3QgQ291bnRlckNvbnRlbnQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KLSAgICBMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGlzdFN0eWxlOyB9Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9zZXBhcmF0b3I7IH0KLQotcHJpdmF0ZToKLSAgICBBdG9tU3RyaW5nIG1f
aWRlbnRpZmllcjsKLSAgICBMaXN0U3R5bGVUeXBlIG1fbGlzdFN0eWxlOwotICAgIEF0b21TdHJp
bmcgbV9zZXBhcmF0b3I7CisgICAgQXRvbVN0cmluZyBpZGVudGlmaWVyOworICAgIExpc3RTdHls
ZVR5cGUgbGlzdFN0eWxlOworICAgIEF0b21TdHJpbmcgc2VwYXJhdG9yOwogfTsKIAotc3RhdGlj
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnRlckNvbnRlbnQmIGEsIGNvbnN0IENv
dW50ZXJDb250ZW50JiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyQ29u
dGVudCYgYSwgY29uc3QgQ291bnRlckNvbnRlbnQmIGIpCiB7Ci0gICAgcmV0dXJuIGEuaWRlbnRp
ZmllcigpID09IGIuaWRlbnRpZmllcigpCi0gICAgICAgICYmIGEubGlzdFN0eWxlKCkgPT0gYi5s
aXN0U3R5bGUoKQotICAgICAgICAmJiBhLnNlcGFyYXRvcigpID09IGIuc2VwYXJhdG9yKCk7Cisg
ICAgcmV0dXJuIGEuaWRlbnRpZmllciA9PSBiLmlkZW50aWZpZXIKKyAgICAgICAgJiYgYS5saXN0
U3R5bGUgPT0gYi5saXN0U3R5bGUKKyAgICAgICAgJiYgYS5zZXBhcmF0b3IgPT0gYi5zZXBhcmF0
b3I7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuaAppbmRleCA5NWQzODYyN2UxNDEzZjUyNjFjMDljOWZkOWZiMWFh
MjIwZDU0OGI0Li43MjQwYjk2YmU4MGU5NzMzNmJjZGNiY2Q0ZWU3ZTI4ZGM2Nzg4OWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCkBAIC0zNSwxOCArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogCiBzdHJ1Y3Qg
RmlsbFNpemUgewotICAgIEZpbGxTaXplKCkKLSAgICAgICAgOiB0eXBlKEZpbGxTaXplVHlwZTo6
U2l6ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgRmlsbFNpemUoRmlsbFNpemVUeXBlIHR5cGUsIGNv
bnN0IExlbmd0aFNpemUmIHNpemUpCi0gICAgICAgIDogdHlwZSh0eXBlKQotICAgICAgICAsIHNp
emUoc2l6ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgRmlsbFNpemVUeXBlIHR5cGU7CisgICAgRmls
bFNpemVUeXBlIHR5cGUgeyBGaWxsU2l6ZVR5cGU6OlNpemUgfTsKICAgICBMZW5ndGhTaXplIHNp
emU7CiB9OwogCkBAIC04NCw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBCbGVuZE1vZGUgYmxlbmRN
b2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihtX2JsZW5kTW9kZSk7
IH0KICAgICBjb25zdCBMZW5ndGhTaXplJiBzaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplTGVuZ3RoOyB9CiAgICAgRmlsbFNpemVUeXBlIHNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RmlsbFNpemVUeXBlPihtX3NpemVUeXBlKTsgfQotICAgIEZpbGxTaXplIHNp
emUoKSBjb25zdCB7IHJldHVybiBGaWxsU2l6ZShzdGF0aWNfY2FzdDxGaWxsU2l6ZVR5cGU+KG1f
c2l6ZVR5cGUpLCBtX3NpemVMZW5ndGgpOyB9CisgICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHsgc2l6ZVR5cGUoKSwgbV9zaXplTGVuZ3RoIH07IH0KICAgICBNYXNrTW9kZSBtYXNr
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hc2tNb2RlPihtX21hc2tNb2RlKTsg
fQogCiAgICAgY29uc3QgRmlsbExheWVyKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0Lmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFy
ZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCmluZGV4IGI3
ZWJkMWQ5NjFkZTg4MjZmYjgzMDMzMDliOGU2MzUyZjIwZjllYWIuLmQ0NzZmOTMxOTg3Y2ZjYTcx
NDE0Y2JmZGVjZDgxYWJiMWVkZmNlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkQXJlYS5oCkBAIC00Miw3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIERl
c3BpdGUgbGluZSBudW1iZXJzIGluIHRoZSBzcGVjIHN0YXJ0IGluICIxIiwgdGhlIGluZGV4ZXMg
aGVyZSBzdGFydCBpbiAiMCIuCiBjbGFzcyBHcmlkU3BhbiB7CiBwdWJsaWM6Ci0KICAgICBzdGF0
aWMgR3JpZFNwYW4gdW50cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIHJldHVybiBHcmlkU3BhbihzdGFydExpbmUsIGVu
ZExpbmUsIFVudHJhbnNsYXRlZERlZmluaXRlKTsKQEAgLTE0Miw4ICsxNDEsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotCi0gICAgZW51bSBHcmlkU3BhblR5cGUge1VudHJhbnNsYXRl
ZERlZmluaXRlLCBUcmFuc2xhdGVkRGVmaW5pdGUsIEluZGVmaW5pdGV9OworICAgIGVudW0gR3Jp
ZFNwYW5UeXBlIDogdWludDhfdCB7IFVudHJhbnNsYXRlZERlZmluaXRlLCBUcmFuc2xhdGVkRGVm
aW5pdGUsIEluZGVmaW5pdGUgfTsKIAogICAgIEdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lLCBHcmlkU3BhblR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTE2
MywyNCArMTYxLDI0IEBAIHByaXZhdGU6CiAgICAgaW50IG1fc3RhcnRMaW5lOwogICAgIGludCBt
X2VuZExpbmU7CiAgICAgR3JpZFNwYW5UeXBlIG1fdHlwZTsKLQotCiB9OwogCiAvLyBUaGlzIHJl
cHJlc2VudHMgYSBncmlkIGFyZWEgdGhhdCBzcGFucyBpbiBib3RoIHJvd3MnIGFuZCBjb2x1bW5z
JyBkaXJlY3Rpb24uCi1jbGFzcyBHcmlkQXJlYSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgLy8gSGFzaE1hcCByZXF1aXJlcyBhIGRlZmF1bHQgY29uc3R1Y3Rv
ci4KK3N0cnVjdCBHcmlkQXJlYSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OworCisgICAgR3JpZFNwYW4gcm93czsKKyAgICBHcmlkU3BhbiBjb2x1bW5zOworCiAgICAgR3Jp
ZEFyZWEoKQotICAgICAgICA6IGNvbHVtbnMoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3Bhbigp
KQotICAgICAgICAsIHJvd3MoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQorICAgICAg
ICA6IHJvd3MoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQorICAgICAgICAsIGNvbHVt
bnMoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQogICAgIHsKICAgICB9CiAKLSAgICBH
cmlkQXJlYShjb25zdCBHcmlkU3BhbiYgciwgY29uc3QgR3JpZFNwYW4mIGMpCi0gICAgICAgIDog
Y29sdW1ucyhjKQotICAgICAgICAsIHJvd3MocikKKyAgICBHcmlkQXJlYShHcmlkU3BhbiByb3dz
LCBHcmlkU3BhbiBjb2x1bW5zKQorICAgICAgICA6IHJvd3Mocm93cykKKyAgICAgICAgLCBjb2x1
bW5zKGNvbHVtbnMpCiAgICAgewogICAgIH0KIApAQCAtMTkzLDExICsxOTEsOCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9Ci0KLSAgICBHcmlk
U3BhbiBjb2x1bW5zOwotICAgIEdyaWRTcGFuIHJvd3M7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBHcmlkQXJlYT4gTmFtZWRHcmlkQXJlYU1hcDsKK3VzaW5nIE5hbWVkR3JpZEFyZWFN
YXAgPSBIYXNoTWFwPFN0cmluZywgR3JpZEFyZWE+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaAppbmRleCA4NmFj
ZDMzMGRmNjlmODNiMGQyZmQzMjI3ZWJiODBlOWVmZTdlODdhLi41Zjg4ZGUxZmM5YzIxMjJjZTIy
YWQ3ZTMwYTMwYjA4NDkzODVlOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZExlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkTGVuZ3RoLmgKQEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgR3JpZExlbmd0aCB7CiBwdWJs
aWM6CiAgICAgR3JpZExlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAgICAgOiBtX2xl
bmd0aChsZW5ndGgpCi0gICAgICAgICwgbV9mbGV4KDApCiAgICAgICAgICwgbV90eXBlKExlbmd0
aFR5cGUpCiAgICAgewogICAgICAgICBBU1NFUlQoIWxlbmd0aC5pc1VuZGVmaW5lZCgpKTsKQEAg
LTcyLDE0ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gTGVuZ3RoVHlwZSAmJiBtX2xlbmd0aC5pc0F1dG8oKTsgfQogCiBwcml2YXRl
OgotICAgIC8vIElkZWFsbHkgd2Ugd291bGQgcHV0IHRoZSAyIGZvbGxvd2luZyBmaWVsZHMgaW4g
YSB1bmlvbiwgYnV0IExlbmd0aCBoYXMgYSBjb25zdHJ1Y3RvciwKLSAgICAvLyBhIGRlc3RydWN0
b3IgYW5kIGEgY29weSBhc3NpZ25tZW50IHdoaWNoIGlzbid0IGFsbG93ZWQuCisgICAgLy8gQ291
bGQgdXNlIGEgVmFyaWFudCBoZXJlIHNpbmNlIHdlIG9ubHkgdXNlIG1fbGVuZ3RoIG9yIG1fZmxl
eCwgYW5kIG1fdHlwZSBkZXRlcm1pbmVzIHdoaWNoLgogICAgIExlbmd0aCBtX2xlbmd0aDsKLSAg
ICBkb3VibGUgbV9mbGV4OwotICAgIGVudW0gR3JpZExlbmd0aFR5cGUgewotICAgICAgICBMZW5n
dGhUeXBlLAotICAgICAgICBGbGV4VHlwZQotICAgIH07CisgICAgZG91YmxlIG1fZmxleCB7IDAg
fTsKKyAgICBlbnVtIEdyaWRMZW5ndGhUeXBlIDogYm9vbCB7IExlbmd0aFR5cGUsIEZsZXhUeXBl
IH07CiAgICAgR3JpZExlbmd0aFR5cGUgbV90eXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggYWQ1YWJhZGFjMDRmN2QyZWJi
Y2M2NzA0ZTAxMjkzYjFkZGZhZTNhNC4uMmU4ZDUyNmE5ZmExOTVkNDU3NDE2MmVlNjE3OWYzZWNl
NjNjN2VjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCkBAIC0xNDk3LDcgKzE0OTcsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseU1vdGlv
blBhdGhUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29ucwogICAg
IC8vIFNoaWZ0IGVsZW1lbnQgdG8gdGhlIGFuY2hvciBzcGVjaWZpZWQgYnkgb2Zmc2V0LWFuY2hv
ci4KICAgICBhdXRvIHRyYW5zZm9ybU9yaWdpbiA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh0
cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9j
YXRpb24oKTsKICAgICBhdXRvIGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKLSAgICBpZiAoIW9m
ZnNldEFuY2hvcigpLngoKS5pc0F1dG8oKSkKKyAgICBpZiAoIW9mZnNldEFuY2hvcigpLnguaXNB
dXRvKCkpCiAgICAgICAgIGFuY2hvciA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChvZmZzZXRB
bmNob3IoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CiAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtYW5jaG9yLngoKSwgLWFuY2hvci55KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDRmMjEzNWVh
YWVkNjIxODcxOWFlY2I2YmJjMGEyMjA1Yzk5OGQzNTkuLjNkYWM3NzMzZTA2MTQwNTAzNDg1NmYw
MzgzMzBkZDFkZTkxNmE5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCkBAIC0xMDksNyArMTA5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBCb3JkZXJEYXRhOwogY2xhc3MgQ29udGVudERhdGE7Ci1jbGFzcyBDb3VudGVyQ29udGVu
dDsKIGNsYXNzIEN1cnNvckxpc3Q7CiBjbGFzcyBGb250Q2FzY2FkZTsKIGNsYXNzIEZvbnRNZXRy
aWNzOwpAQCAtMTIxLDYgKzEyMCw3IEBAIGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YTsKIGNsYXNz
IFN0eWxlU2Nyb2xsU25hcEFyZWE7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAorc3Ry
dWN0IENvdW50ZXJDb250ZW50Owogc3RydWN0IFNjcm9sbFNuYXBBbGlnbjsKIHN0cnVjdCBTY3Jv
bGxTbmFwVHlwZTsKIApAQCAtNzAwLDcgKzcwMCw3IEBAIHB1YmxpYzoKICAgICBUZXh0Q29tYmlu
ZSB0ZXh0Q29tYmluZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPiht
X3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0Q29tYmluZSk7IH0KICAgICBib29sIGhhc1RleHRDb21i
aW5lKCkgY29uc3QgeyByZXR1cm4gdGV4dENvbWJpbmUoKSAhPSBUZXh0Q29tYmluZTo6Tm9uZTsg
fQogCi0gICAgY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRhYlNpemU7IH0KKyAgICBUYWJTaXplIHRhYlNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50YWJTaXplOyB9CiAKICAgICAvLyBFbmQgQ1NTMyBH
ZXR0ZXJzCiAKQEAgLTEyNzYsNyArMTI3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tk
cm9wRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBiYWNrZHJvcEZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsg
fQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFRhYlNpemUoY29uc3QgVGFiU2l6ZSYgc2l6ZSkgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRhYlNpemUsIHNpemUpOyB9CisgICAgdm9pZCBz
ZXRUYWJTaXplKFRhYlNpemUgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRh
YlNpemUsIHNpemUpOyB9CiAKICAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBi
cmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZv
cmUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KICAgICB2b2lkIHNl
dEJyZWFrQWZ0ZXIoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBicmVha0FmdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnJlYWtC
ZWhhdmlvcikpOyB9CkBAIC0xNTg0LDcgKzE1ODQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRl
eHRDb21iaW5lIGluaXRpYWxUZXh0Q29tYmluZSgpIHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25l
OyB9CiAgICAgc3RhdGljIFRleHRPcmllbnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkg
eyByZXR1cm4gVGV4dE9yaWVudGF0aW9uOjpNaXhlZDsgfQogICAgIHN0YXRpYyBPYmplY3RGaXQg
aW5pdGlhbE9iamVjdEZpdCgpIHsgcmV0dXJuIE9iamVjdEZpdDo6RmlsbDsgfQotICAgIHN0YXRp
YyBMZW5ndGhQb2ludCBpbml0aWFsT2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2lu
dChMZW5ndGgoNTAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpLCBMZW5ndGgoNTAuMGYsIExlbmd0
aFR5cGU6OlBlcmNlbnQpKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2JqZWN0
UG9zaXRpb24oKSB7IHJldHVybiB7IExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCks
IExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCkgfTsgfQogICAgIHN0YXRpYyBFbXB0
eUNlbGwgaW5pdGlhbEVtcHR5Q2VsbHMoKSB7IHJldHVybiBFbXB0eUNlbGw6OlNob3c7IH0KICAg
ICBzdGF0aWMgTGlzdFN0eWxlUG9zaXRpb24gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCkgeyBy
ZXR1cm4gTGlzdFN0eWxlUG9zaXRpb246Ok91dHNpZGU7IH0KICAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgaW5pdGlhbExpc3RTdHlsZVN0cmluZ1ZhbHVlKCkgeyByZXR1cm4gbnVsbEF0b20o
KTsgfQpAQCAtMTg5OCwxMSArMTg5OCwxMSBAQCBwdWJsaWM6CiAKICAgICBMZW5ndGhQb2ludCBv
ZmZzZXRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9m
ZnNldFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRQb3NpdGlvbihMZW5ndGhQb2ludCYm
IHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zmc2V0UG9zaXRp
b24sIFdURk1vdmUocG9zaXRpb24pKTsgfQotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFs
T2Zmc2V0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6
QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoUG9p
bnQgaW5pdGlhbE9mZnNldFBvc2l0aW9uKCkgeyByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1dG8g
fSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsgfQogCiAgICAgTGVuZ3RoUG9pbnQgb2Zmc2V0QW5j
aG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0QW5jaG9y
OyB9CiAgICAgdm9pZCBzZXRPZmZzZXRBbmNob3IoTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBT
RVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9mZnNldEFuY2hvciwgV1RGTW92ZShwb3Np
dGlvbikpOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRBbmNob3IoKSB7
IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5n
dGhUeXBlOjpBdXRvKSk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFu
Y2hvcigpIHsgcmV0dXJuIHsgeyBMZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0
byB9IH07IH0KIAogICAgIE9mZnNldFJvdGF0aW9uIG9mZnNldFJvdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9mZnNldFJvdGF0ZTsgfQogICAgIHZvaWQgc2V0
T2Zmc2V0Um90YXRlKE9mZnNldFJvdGF0aW9uJiYgcm90YXRpb24pIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBvZmZzZXRSb3RhdGUsIFdURk1vdmUocm90YXRpb24pKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IDg3Y2Ey
YjI1MmY5NmY4NWU0YjQ0MGI2ZmQyYzBmOGU5M2FkZTdhMGMuLmRlM2RjNmM0Y2RlMTI5N2VlYTBj
ZmNkNmQ2MWQ2NDQxMjgxMGUyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TaGFkb3dEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU2hhZG93RGF0YS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU2hhZG93RGF0YTo6U2hhZG93RGF0YShjb25zdCBTaGFkb3dEYXRhJiBvKQotICAgIDogbV9s
b2NhdGlvbihvLm1fbG9jYXRpb24ueCgpLCBvLm1fbG9jYXRpb24ueSgpKQorICAgIDogbV9sb2Nh
dGlvbihvLm1fbG9jYXRpb24pCiAgICAgLCBtX3NwcmVhZChvLm1fc3ByZWFkKQogICAgICwgbV9y
YWRpdXMoby5tX3JhZGl1cykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKaW5kZXggMjJmZWY3NjJiY2EzMTBiNjNh
ZWZlODU4NmY0MjJhYjlmODNjMDVmMi4uZDlhNDFhMTViYTBkMWVmYTljOGZlNTQwN2IzZDUwZTlm
MmVlMGFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRv
d0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5o
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBTaGFkb3dEYXRhKCkgPSBkZWZhdWx0Owog
CiAgICAgU2hhZG93RGF0YShjb25zdCBMZW5ndGhQb2ludCYgbG9jYXRpb24sIExlbmd0aCByYWRp
dXMsIExlbmd0aCBzcHJlYWQsIFNoYWRvd1N0eWxlIHN0eWxlLCBib29sIGlzV2Via2l0Qm94U2hh
ZG93LCBjb25zdCBDb2xvciYgY29sb3IpCi0gICAgICAgIDogbV9sb2NhdGlvbihsb2NhdGlvbi54
KCksIGxvY2F0aW9uLnkoKSkKKyAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fc3ByZWFkKHNwcmVhZCkKICAgICAgICAgLCBtX3JhZGl1cyhyYWRpdXMpCiAgICAgICAg
ICwgbV9jb2xvcihjb2xvcikKQEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAgICAgCi0gICAgY29uc3QgTGVuZ3RoJiB4KCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhdGlvbi54KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25z
dCB7IHJldHVybiBtX2xvY2F0aW9uLnkoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYXRpb24ueDsgfQorICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9jYXRpb24ueTsgfQogICAgIGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KICAgICBjb25zdCBMZW5ndGgmIHJhZGl1cygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzOyB9CiAgICAgTGF5b3V0VW5pdCBwYWludGluZ0V4dGVu
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVTY3JvbGxTbmFwUG9pbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVTY3JvbGxTbmFwUG9pbnRzLmgKaW5kZXggYTJjN2IwZGIzZDZlNWZlZDY1MzZhNTYzOWI0NTc5
MmU0NzgwMTE3OS4uNTM3NDcyMmFiMDk0YzU3ODM3OGNkZDFlNWQyOWFmMGVkOTlhNWI2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBv
aW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNu
YXBQb2ludHMuaApAQCAtMjUsMTEgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJMZW5ndGhCb3guaCIKLSNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGVDb25zdGFudHMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDkxNTA0MDFhNjQ1ZTQyODRlOTE2
OTFiYTBiYTVjOTc4Yzk4MmVmYmQuLjEyN2VmMzI3MjQ0NjZjZDQ4YzM3NDAyZGU3NjBhNWI5NzBh
NmZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
CkBAIC0yNjgsOCArMjY4LDggQEAgaW5saW5lIFRhYlNpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRhYlNpemUoY29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUKIHsKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBUYWJTaXpl
KHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSwgU3BhY2VWYWx1ZVR5cGUpOwotICAgIHJldHVy
biBUYWJTaXplKHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGJ1aWxkZXJTdGF0
ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpLCBMZW5ndGhWYWx1ZVR5cGUpOworICAgICAg
ICByZXR1cm4geyBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCksIFRhYlNpemU6OlNwYWNlcyB9
OworICAgIHJldHVybiB7IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGJ1aWxk
ZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpLCBUYWJTaXplOjpMZW5ndGggfTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTQxNyw3ICs0MTcsNyBAQCBpbmxpbmUgTGVu
Z3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLAogICAgIExlbmd0aCBsZW5ndGhYID0gY29udmVydFBvc2l0aW9uQ29tcG9u
ZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYnVpbGRlclN0YXRlLCAqcGFpci0+Zmly
c3QoKSk7CiAgICAgTGVuZ3RoIGxlbmd0aFkgPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NT
VmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tPihidWlsZGVyU3RhdGUsICpwYWlyLT5zZWNvbmQoKSk7
CiAKLSAgICByZXR1cm4gTGVuZ3RoUG9pbnQobGVuZ3RoWCwgbGVuZ3RoWSk7CisgICAgcmV0dXJu
IHsgbGVuZ3RoWCwgbGVuZ3RoWSB9OwogfQogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC00MjcsNyArNDI3LDcgQEAgaW5saW5lIExlbmd0
aFBvaW50IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbk9yQXV0byhCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXIKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNQYWlyKCkpCiAgICAgICAgIHJl
dHVybiBjb252ZXJ0UG9zaXRpb24oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiAKLSAgICByZXR1cm4g
TGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
QXV0bykpOworICAgIHJldHVybiB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6
OkF1dG8gfSB9OwogfQogCiBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKaW5kZXggMTNjYWQ5YjdmZDc3MmE2Y2QyMzk4MzQwZTI4Mjc3MWJkNDliNDQ2MS4uZTgzZWY5
YzRhN2YyZDRjZTEwMmFkZGI3OWM5YTdkMDI5YjMwODM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTk1Niw3ICs5NTYsNyBAQCBpbmxpbmUgdm9pZCBC
dWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xvciA9IGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLmNvbG9yKCk7CiAKLSAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1
ZTxTaGFkb3dEYXRhPihMZW5ndGhQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHls
ZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQo
KSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgICAgICBhdXRvIHNoYWRv
d0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KExlbmd0aFBvaW50IHsgeCwgeSB9LCBibHVy
LCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNo
YWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7
CiAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAg
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0
YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhl
IGZpcnN0IGVudHJ5CiAgICAgICAgIGVsc2UKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGlubGluZSB2
b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1CiAgICAgICAgICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0g
Y291bnRlclZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwogICAgICAgICAgICAgaWYgKGxpc3RTdHls
ZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0g
c3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2Mp
OwotICAgICAgICAgICAgYXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4o
Y291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+
c2VwYXJhdG9yKCkpOworICAgICAgICAgICAgYXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3Vu
dGVyQ29udGVudD4oQ291bnRlckNvbnRlbnQgeyBjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwg
bGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSB9KTsKICAgICAgICAgICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0
KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCmluZGV4IDMzNWYzZmFkZmFhZWVl
M2ViNjI1MWVmYjk4OTk1MzkxNGQ2MDE2MzUuLmQ4Zjc3ZjZhZjFiNTdhMjA4YTRlZTJkZTMzNTlh
NWJhYTg5ZDJjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5j
bHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBmNTYyYzkxMDMzMzA5NDVjMDdhN2JkZDhiZTQ0MmI1YTg4Nzc5NzBlLi4zYTgyYTdl
ZWU1NDJhMTNjMzMyM2JiZDBjODlmNjMyNGY5MWJkOWMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMjMg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFuZCBz
aW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTWVkaWFUaW1lLmNwcDogVXBkYXRlZCB0ZXN0cyBmb3IgY2hhbmdlIHRvIE9wdGlvblNl
dCBmb3IKKyAgICAgICAgTWVkaWFUaW1lIGZsYWdzLCBhbmQgZm9yIG5hbWUgY2hhbmdlIGZyb20g
Um91bmRpbmdGbGFncyB0byBSb3VuZGluZ01vZGUuCisKIDIwMjItMDEtMjAgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtFV1NdIFN1cHBvcnQgcHVsbCBy
ZXF1ZXN0IGluIEFuYXlsemVQYXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBjODIyNzc5
OGZhMTEyMmVmZTQ0YjJkNWM2NGZiZjY1MDMwMTU2ZWIwLi5lOTIxZTg5NmI3MGJhMmFhY2ZhNTk5
M2UyNTdjMzI5OWVkYjMwM2E2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KIAogT0JKQ19DTEFTUyBOU1VuZG9NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL01lZGlhVGltZS5jcHAKaW5kZXggYjBiNTRhODAzZmFjODVkMTU4NGU3MjNjODZlMWQ5
Y2JhNDRkY2U3YS4uZGM4ZTI4OTg0YWUzYTgwMmU1NzM4Njc2NjE1Mjk1OTRhYzU5ZDQ3OSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCkBAIC0xNzEsNyAr
MTcxLDcgQEAgVEVTVChXVEYsIE1lZGlhVGltZSkKIAogICAgIC8vIENvbnN0YW50cwogICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6Onplcm9UaW1lKCksIE1lZGlhVGltZSgwLCAxKSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lKC0xLCAxLCAwKSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lKC0xLCAxLCB7
IH0pKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCBN
ZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlKSk7CiAgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1l
ZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZSkpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Omlu
ZGVmaW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRpYVRpbWU6OkluZGVmaW5pdGUpKTsK
QEAgLTI1NCw2OSArMjU0LDY5IEBAIFRFU1QoV1RGLCBNZWRpYVRpbWUpCiAgICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgyLCAyKS50b1RpbWVTY2FsZSgxKS50aW1lVmFsdWUoKSwgMSk7CiAgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgyLCA2KS50b1RpbWVTY2FsZSgzKS50aW1lVmFsdWUoKSwgMSk7CiAg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxKS5oYXNCZWVuUm91bmRl
ZCgpLCB0cnVlKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCks
IDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7
Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSg0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdG
bGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6
SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6Okhh
bGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxm
QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
MywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZy
b21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJv
bVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZh
bHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dh
cmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1l
VmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwg
MCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7Ci0gICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgp
LCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3
YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01
MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybyku
dGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVl
KCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAt
Mik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsK
LSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAy
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAw
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1
ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1
ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00
OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5l
Z2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRO
ZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFn
czo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSg1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFs
ZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
NDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5
RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJv
KS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRp
bWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZh
bHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
LTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMCk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
MSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8p
LnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwg
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpU
b3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEs
IDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8p
LnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVl
KCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZy
b21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGlt
ZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAy
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJv
KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAt
Mik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMik7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAt
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCks
IC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwg
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVl
KCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5p
dHkpLnRpbWVWYWx1ZSgpLCAtMik7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KCksIDEpLnRvVGltZVNjYWxlKDIpLCBNZWRpYVRpbWU6OnBvc2l0
aXZlSW5maW5pdGVUaW1lKCkpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1pbigpLCAxKS50b1RpbWVTY2FsZSgyKSwgTWVkaWFUaW1lOjpuZWdhdGl2
ZUluZmluaXRlVGltZSgpKTsKICAgICBpbnQ2NF90IG1heEludDMyID0gbnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobWF4SW50MzIgKiAyLCAx
KS50b1RpbWVTY2FsZSgyKS50aW1lVmFsdWUoKSwgbWF4SW50MzIgKiA0KTsKICAgICBpbnQ2NF90
IGJpZ0ludCA9IDFMTCA8PCA2MjsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCwgMVUg
PDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8IDI5KS50aW1lVmFsdWUoKSwgYmlnSW50IC8gNCk7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQgKyAxLCAxVSA8PCAzMSkudG9UaW1lU2NhbGUo
MVUgPDwgMjksIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVl
KCksIGJpZ0ludCAvIDQpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50ICsgMSwgMVUg
PDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8IDI5LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93
YXJkWmVybykudGltZVZhbHVlKCksIGJpZ0ludCAvIDQpOwogICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoYmlnSW50ICsgMSwgMVUgPDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8IDI5KS5oYXNCZWVuUm91
bmRlZCgpLCB0cnVlKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCAtIDIsIE1lZGlh
VGltZTo6TWF4aW11bVRpbWVTY2FsZSkudG9UaW1lU2NhbGUoTWVkaWFUaW1lOjpNYXhpbXVtVGlt
ZVNjYWxlIC0gMSkuaGFzQmVlblJvdW5kZWQoKSwgdHJ1ZSk7CiAgICAgRVhQRUNUX0VRKE1lZGlh
VGltZShiaWdJbnQsIDEpLnRvVGltZVNjYWxlKE1lZGlhVGltZTo6TWF4aW11bVRpbWVTY2FsZSks
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5oCmluZGV4IDIxOTRjYTNlMGI4NzU3NGUxYjhjODI3NGZmMTRmNWNh
ODVmMmIxMzcuLjZjNDE1MGE0NGMxOWM4N2NhOTlhMTE3OWMwYzE1YmRkYjY0M2ZkZDAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2Jq
ZWN0UmVmLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449896</attachid>
            <date>2022-01-24 21:53:55 -0800</date>
            <delta_ts>2022-01-24 22:25:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220124215354.patch</filename>
            <type>text/plain</type>
            <size>150068</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODc0NDFhNWRkODlkMjA2ZDI2NzQxZDA0MmRlYjY4NjRhZTdiZmVkLi5mMTA5NDRiYTBiMDhhZWRl
M2NmYWNlYjkwOTgzY2FhYmFkNDFjM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjQgIE1pa2hhaWwgUi4gR2FkZWxoYSAgPG1pa2hhaWxAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbSlNDXVszMmJpdF0gRml4IHJlZ2V4cCBjcmFzaCBvbiBBUk12NwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1
OTdjZTgyYjBmMDQ2MDc5YmRlMzExYzEzYzA4NjNhNDEyYmZmNjhlLi45MDgyOWI1NWMxODdlZjFi
MjhmNWI1ODI2MWZkYTIxNTEyMGRiZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMi0wMS0y
NCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5k
IHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOiBB
ZGQgU2Vjb25kcyBhbmQgV2FsbFRpbWUgdG8gdGhlIHVzaW5nIHNlY3Rpb24uCisKKyAgICAgICAg
KiB3dGYvTG9jay5oOiBVc2UgRm9yd2FyZC5oIGluc3RlYWQgb2YgU2Vjb25kcy5oIHNpbmNlIFNl
Y29uZHMgaXMgb25seSB1c2VkCisgICAgICAgIGhlcmUgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVy
biB0eXBlLCBubyBhY3R1YWwgdXNlIG9mIHRoZSBjbGFzcyBpbiB0aGUgaGVhZGVyLgorCisgICAg
ICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVkaWFU
aW1lKTogRGVsZXRlZCB0aGUgY29weSBjb25zdHJ1Y3RvciB0aGF0IHVzZWQgdGhlIGFzc2lnbm1l
bnQKKyAgICAgICAgb3BlcmF0b3IuIFRoZSBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3Igd29ya3Mg
ZmluZSwgd2UgZG9uJ3QgaGF2ZSB0byB3cml0ZSBvbmUuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6TWVkaWFUaW1lKTogQWRkZWQgYSBIYXNEb3VibGUgY29uc3RydWN0b3IgZm9yIHVzZSBpbiBj
cmVhdGUKKyAgICAgICAgZnVuY3Rpb25zLiBJdCdzIGNvbnN0ZXhwciBidXQgaXQncyBpbiB0aGUg
LmNwcCBmaWxlIGJlY2F1c2UgaXQncyBwcml2YXRlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhGbG9hdCk6IFNpbXBsaWZpZWQgYnkgdXNpbmcgdGhlIEhhc0RvdWJsZSBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgQWxzbyB1c2Ugc3RkOjppc25hbiBpbnN0ZWFkIG9mIGEgdHJpY2t5
IGFsdGVybmF0ZSB3YXkgb2YgZG9pbmcgaXQuIFJlbW92ZWQgYQorICAgICAgICBzcGVjaWFsIGNh
c2UgZm9yIGluZmluaXR5IHNpbmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIGNhc2VzIGFscmVh
ZHkgY292ZXIgdGhhdC4KKyAgICAgICAgQW5kIHJlcGxhY2VkIGEgc3RhdGljX2Nhc3Qgd2l0aCBh
biBhc3NpZ25tZW50IHRvIHRoZSBkZXNpcmVkIHR5cGUuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZSk6IERpdHRvLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHNvIHNpbWls
YXIgdGhlCisgICAgICAgIHNob3VsZCBwcm9iYWJseSBiZSB0ZW1wbGF0ZWQgaW5zdGVhZCBvZiBy
ZXBlYXRlZCB0d2ljZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0Zsb2F0IGNvbnN0KTog
UmVwbGFjZWQgYSBzdGF0aWNfY2FzdCB3aXRoIGFzc2lnbm1lbnQgdG8gdGhlCisgICAgICAgIGRl
c2lyZWQgdHlwZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0RvdWJsZSBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuIFRoZSBk
ZWZhdWx0IGFzc2lnbm1lbnQgb3BlcmF0b3Igd29ya3MgZmluZS4KKyAgICAgICAgKFdURjo6TWVk
aWFUaW1lOjpvcGVyYXRvcisgY29uc3QpOiBUYWtlIHRoZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0
ZWFkIG9mIHJlZmVyZW5jZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvci0gY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciogY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciEgY29uc3QpOiBTaW1wbGlm
aWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBieSB1c2luZworICAgICAgICBmdW5jdGlvbnMgaW5zdGVh
ZCBvZiBjaGVja2luZyB0aGUgZmxhZ3MgZGlyZWN0bHkuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IENhbGwgb3BlcmF0b3IhIGluc3RlYWQgb2YgcmVwZWF0
aW5nIHRoZQorICAgICAgICBsb2dpYyB0d2ljZS4KKyAgICAgICAgKFdURjo6b3JkZXJpbmcpOiBB
ZGRlZCB0d28gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuIE9uZSBpcyBhIHRlbXBsYXRlIHRoYXQgY29t
cGFyZXMKKyAgICAgICAgc2NhbGFycyBhbmQgdGhlIG90aGVyIGNvbXBhcmVzIHR3byBNZWRpYVRp
bWUgb2JqZWN0cy4gVGhlIHNlY29uZCBvbmUgcmVwbGFjZXMgdGhlCisgICAgICAgIE1lZGlhVGlt
ZTo6Y29tcGFyZSBmdW5jdGlvbiwgd2hpY2ggaXMgbm93IGp1c3QgYSBsaWdodHdlaWdodCBjb3Zl
ciBmb3IgdGhpcy4KKyAgICAgICAgVGhlIG9sZCBjb2RlIGhhZCB0cmlja3kgbG9naWMsIGFuZCB0
aGlzIG5ldyBmdW5jdGlvbiBpcyBhIGNvbXBsZXRlIHJld3JpdGUuCisgICAgICAgIFRvIG1ha2Ug
dGhlIGxvZ2ljIGVhc3kgdG8gZm9sbG93LCB3ZSBleHRyYWN0IHRoZSBwaWVjZXMgb2YgdGhlIE1l
ZGlhVGltZSBhbmQKKyAgICAgICAgY29tcGFyZSB0aGVtLiBJZiB0aGV5IGFyZSBlcXVhbCB0aGVu
IHdlIGZhbGwgdGhyb3VnaCB0byB0aGUgbmV4dCwgYW5kIHNvIG9uLgorICAgICAgICBBdCB0aGUg
ZW5kIHRoZXJlIGFyZSB2YXJpb3VzIGNhc2VzIGZvciB0aW1lcyB3ZSBjYW4gY29tcGFyZSB3aXRo
b3V0IGRvaW5nCisgICAgICAgIGFyaXRobWV0aWMsIGFuZCB0aGVzZSBhcmUgdGhlIHNhbWUgYXMg
dGhlIG9uZXMgdGhhdCB3ZXJlIGFscmVhZHkgaGVyZSwgYnV0IHdpdGgKKyAgICAgICAgc2ltcGxp
ZmllZCBsb2dpYyBpbiBzb21lIGNhc2VzIHRoYXQgc2hvdWRsIGJlIGVhc2llciB0byBmb2xsb3cs
IGFuZCBubyB1c2VzIG9mCisgICAgICAgIHN0YXRpY19jYXN0IGFueSBtb3JlLgorICAgICAgICAo
V1RGOjpNZWRpYVRpbWU6OmlzQmV0d2VlbiBjb25zdCk6IFRha2UgYXJndW1lbnRzIGJ5IHZhbHVl
IGluc3RlYWQgb2YgcmVmZXJlbmNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9UaW1l
KTogRGVsZXRlZC4gTm93IGEgY29uc3RleHByIGluIHRoZSBoZWFkZXIuCisgICAgICAgIChXVEY6
Ok1lZGlhVGltZTo6aW52YWxpZFRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKTogRGVsZXRlZC4gRGl0dG8u
CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUpOiBEZWxldGVkLiBEaXR0
by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b1RpbWVTY2FsZSBjb25zdCk6IFVwZGF0ZWQg
c2luY2UgUm91bmRpbmdGbGFncyBpcyBub3cKKyAgICAgICAgUm91bmRpbmdNb2RlLiBJdCBkaWRu
J3QgbWFrZSBzZW5zZSB0byB0cmVhdCBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgcG9saWNp
ZXMKKyAgICAgICAgYXMgImZsYWdzIi4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpzZXRUaW1l
U2NhbGUpOiBEaXR0by4gQWxzbyB1c2Ugc3RkOjpleGNoYW5nZSBpbnN0ZWFkIG9mIHN0ZDo6c3dh
cAorICAgICAgICBhbmQgdXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgbGxhYnMuCisgICAgICAgIChX
VEY6Ok1lZGlhVGltZTo6dG9KU09OT2JqZWN0IGNvbnN0KTogUmVtb3ZlZCBzdGF0aWNfY2FzdCB0
byBkb3VibGUuCisgICAgICAgIChXVEY6OmFicyk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5z
dGVhZCBvZiByZWZlcmVuY2UuIFJlbmFtZWQgYXJndW1lbnQgZnJvbSByaHMKKyAgICAgICAgc2lu
Y2UgdGhlIGFyZ3VtZW50IGlzIG5vdCB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG9wZXJhdG9y
LiBSZW1vdmVkIHVubmVlZGVkCisgICAgICAgIHNwZWNpYWwgY2FzZSB0byBoYW5kbGUgaW52YWxp
ZCBiZWNhdXNlIHRoZSBmdW5jdGlvbiB3b3JrcyBmaW5lIG9uIGludmFsaWQgd2l0aG91dCBpdC4K
KyAgICAgICAgVXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgZmFicy4KKyAgICAgICAgKFdURjo6b3Bl
cmF0b3I8PCk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5zdGVhZCBvZiByZWZlcmVuY2UuCisK
KyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmg6IFJlbW92ZWQgbWFueSB1bm5lZWRlZCBpbmNsdWRl
cy4gUmVtb3ZlZCBXVEZfRVhQT1JUX1BSSVZBVEUKKyAgICAgICAgZnJvbSB0aGUgY2xhc3MgYmVj
YXVzZSBpdCdzIG5vdCBjb21wYXRpYmxlIHdpdGggaW5saW5lZCBmdW5jdGlvbnMgYWNjb3JkaW5n
IHRvCisgICAgICAgIHRoZSBzdHlsZSBjaGVja2VyIHNjcmlwdCwgaW5zdGVhZCBleHBvcnRpbmcg
aW5kaXZpZHVhbCBmdW5jdGlvbnMuIFVzZSBPcHRpb25TZXQKKyAgICAgICAgZm9yIHRoZSBmbGFn
cy4gQ2hhbmdlZCBmdW5jdGlvbnMgdG8gdGFrZSBNZWRpYVRpbWUgYnkgdmFsdWUsIHNpbmNlIGl0
J3MganVzdCBhCisgICAgICAgIGZldyBzY2FsYXJzLCBubyBzaWduaWZpY2FudCBjb3N0IHRvIGNv
cHlpbmcgaXQsIGFuZCBwYXNzaW5nIGJ5IHZhbHVlIG1lYW5zIHRoZQorICAgICAgICB3aG9sZSB0
aGluZyBtaWdodCBlbmQgdXAgaW4gcmVnaXN0ZXJzIHNpbmNlIHdlIHdvbid0IG5lZWQgYSBwb2lu
dGVyIHRvIGl0IHRvCisgICAgICAgIHBhc3MgYXMgdGhlIHJlZmVyZW5jZS4gTWFkZSB0aGUgdmFy
aW91cyBzcGVjaWFsIHRpbWVzIHJldHVybiBjb25zdGV4cHIgdmFsdWVzLAorICAgICAgICB3aGlj
aCB3aWxsIGNvbXBpbGUgdGhlIGFwcHJvcHJpYXRlIGJpdCBwYXR0ZXJuIHdpdGhvdXQgYW55IGNv
bXB1dGF0aW9uIG5lZWRlZC4KKyAgICAgICAgQ2hhbmdlZCB0aGUgdGltZVZhbHVlIGFuZCB0aW1l
U2NhbGUgZnVuY3Rpb25zIHRvIHJldHVybiB0aGUgc2NhbGFycywgbm90IGEKKyAgICAgICAgY29u
c3QgcmVmZXJlbmNlLiBSZW5hbWVkIFJvdW5kaW5nRmxhZ3MgdG8gUm91bmRpbmdNb2RlIHNpbmNl
IGl0J3MgYSBidW5jaCBvZgorICAgICAgICBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgbW9k
ZXMsIG5vdCBhIHNldCBvZiBmbGFncyB3ZSBjYW4gY29tYmluZS4gUmVuYW1lZAorICAgICAgICB0
aGUgZGF0YSBtZW1iZXJzLCBzaW5jZSB0aGV5IGRvbuKAmXQgYWxsIG5lZWQgYSAidGltZSIgcHJl
Zml4IGluIGEgY2xhc3MgdGhhdCBpcworICAgICAgICBhbHJlYWR5IG5hbWVkIE1lZGlhVGltZS4g
VG9vayBzb21lIHVubmVlZGVkIGNvbnN0IG91dCBvZiBNZWRpYVRpbWVSYW5nZS4KKyAgICAgICAg
QWRkZWQgdGhlIEVudW1UcmFpdHMgZm9yIHRoZSBmbGFncyBzbyB0aGV5IGNhbiBiZSBlbmNvZGVk
IGFuZCBkZWNvZGVkLiBCZWZvcmUKKyAgICAgICAgd2Ugd2VyZSBlbmNvZGluZyB0aGUgc2V0IG9m
IGZsYWdzIGFzIGEgdWludDhfdCwgdGhpcyBpcyBiZXR0ZXIuCisKKyAgICAgICAgKiB3dGYvU2Vj
b25kcy5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6U2Vjb25kcyIgdG8gRm9yd2FyZC5oLgorCisg
ICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDogSW5jbHVkZSBGb3J3YXJkLmggaW5z
dGVhZCBvZiBXYWxsVGltZS5oIHNpbmNlCisgICAgICAgIHRoaXMgZmlsZSBvbmx5IGRlZmluZXMg
YSBmdW5jdGlvbiB3aXRoIGEgV2FsbFRpbWUgYXJndW1lbnQgYW5kIGRvZXNuJ3QgbmVlZAorICAg
ICAgICB0byBwdWxsIHRoZSBlbnRpcmUgY2xhc3MgZGVmaW5pdGlvbiBpbi4KKworICAgICAgICAq
IHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjpwb3J0QWxsb3dlZCk6IFVzZSBTb3J0ZWRBcnJh
eVNldC4KKworICAgICAgICAqIHd0Zi9XYWxsVGltZS5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6
V2FsbFRpbWUiIHRvIEZvcndhcmQuaC4KKworICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50Q29kZXIuaDogSW5jbHVkZSA8b3B0aW9uYWw+IGluc3RlYWQgb2YgRm9yd2FyZC5oLgor
ICAgICAgICBUaGUgZm9ybWVyIGlzIGFsbCB0aGF0J3MgbmVlZGVkLgorCisgICAgICAgICogd3Rm
L3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcDogQWRkZWQgYW4gaW5jbHVkZSBvZiBXYWxsVGltZS5o
IHNpbmNlCisgICAgICAgIFRocmVhZGluZ1ByaW1pdGl2ZXMuaCBubyBsb25nZXIgcHVsbHMgaXQg
aW4uCisKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmg6IEFkZGVkIGFuIGluY2x1ZGUg
b2YgPG9wdGlvbmFsPiBzaW5jZSBMb2NrLmggbm8KKyAgICAgICAgbG9uZ2VyIHB1bGxzIGl0IGlu
IGJ5IGluY2x1ZGluZyBTZWNvbmRzLmguCisKKyAgICAgICAgKiB3dGYvd2luL1RocmVhZGluZ1dp
bi5jcHA6IEFkZGVkIGluY2x1ZGUgb2YgV2FsbFRpbWUuaCBzaW5jZQorICAgICAgICBUaHJlYWRp
bmdQcmltaXRpdmVzLmggbm8gbG9uZ2VyIHB1bGxzIGl0IGluLgorCisKIDIwMjItMDEtMjQgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgQnVpbGQg
ZmFpbHVyZSB3aXRoIEdDQyAxMjogbm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gJ2Vu
ZChMQ2hhciBbN10pJwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQwNzJiMjc1MjI4ZjlkMTZiYmQ2OGU1NTEyMmFh
MWI2ODhkNjRhOWIuLmZmYjkxYTE0Mzk4ZmYwZDBiMjEwZWY1MjljNDlhOTE4M2IzMWEwMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMjItMDEtMjQgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFuZCBzaW1wbGlmeSBNZWRpYVRpbWUg
YW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0
aW9uRGF0YS5oOiBBZGRlZCBpbmNsdWRlIG9mCisgICAgICAgIDxvcHRpb25hbD4gc2luY2Ugbm90
aGluZyBwdWxscyB0aGVtIGluLgorCisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgc2luY2Ug
VGFiU2l6ZSBhbmQgTGVuZ3RoUG9pbnQgYXJlIGJvdGggbm93CisgICAgICAgIHN0cnVjdHVyZXMs
IGFuZCBoYXZlIHB1YmxpYyBkYXRhIG1lbWJlcnMgcmF0aGVyIHRoYW4gZ2V0dGVyIGZ1bmN0aW9u
cy4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0ZvckJsZW5kaW5nKTogIFVwZGF0ZWQgdG8gcmV0
dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAgICAgIGEgbmV2ZXItbnVsbCBwb2ludGVy
IGFuZCBmb3IgY2hhbmdlcyB0byBMZW5ndGhQb2ludC4KKworICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JQb3Np
dGlvbik6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAg
IChXZWJDb3JlOjp2YWx1ZUZvclBvc2l0aW9uT3JBdXRvKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgaXMg
YSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2
YWx1ZUZvclByb3BlcnR5SW5TdHlsZSk6IFVwZGF0ZWQKKyAgICAgICAgc2luY2UgVGFiU2l6ZSBp
cyBhIHN0cnVjdHVyZS4KKworICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cG9pbnRGb3JMZW5ndGhQb2ludCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3Ro
UG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQpOiBEaXR0by4KKworICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6U3R5bGU6OnRhYlNpemUgY29uc3QpOiBQYXNz
IFRhYlNpemUgYnkgdmFsdWUgaW5zdGVhZAorICAgICAgICBvZiBieSByZWZlcmVuY2UuCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNQb3RlbnRpYWxD
dXN0b21FbGVtZW50TmFtZUNoYXJhY3Rlcik6IFVzZSBTb3J0ZWRBcnJheVNldC4KKyAgICAgICAg
SXQgZG9lcyB0aGUgc29ydGVkIGNoZWNrIGF0IGNvbXBpbGUgdGltZSBpbnN0ZWFkIG9mIGF0IHJ1
bnRpbWUgaW4gZGVidWcKKyAgICAgICAgYnVpbGRzLCBhbmQgYWxzbyBzZWxlY3RzIGxpbmVhciBz
ZWFyY2ggaWYgaXQncyBmYXN0ZXIgdGhhbiBiaW5hcnkgc2VhcmNoLgorCisgICAgICAgICogcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaDogQWRkZWQgaW5jbHVkZSBvZiBXYWxsVGlt
ZS5oLCBubworICAgICAgICBsb25nZXIgcHVsbGVkIGluIGJ5IFRocmVhZGluZy5oLgorCisgICAg
ICAgICogcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5oOiBDaGFuZ2VkIExlbmd0aFBvaW50IHRvIGJlIGEg
dHJ1ZSBzdHJ1Y3R1cmUKKyAgICAgICAgd2l0aCBwdWJsaWMgZGF0YSBtZW1iZXJzLiBUaGUgb2xk
IG9uZSB3YXMsIHN0cmFuZ2VseSwgYSBzdHJ1Y3QsIGJ1dAorICAgICAgICB3aXRoIHByaXZhdGUg
ZGF0YS4gUmVtb3ZlZCB0aGUgY29uc3RydWN0b3JzLCBnZXR0ZXJzLCBhbmQgc2V0dGVycy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOiBBdm9pZCBhIHdhcm5pbmcgYWJvdXQgbWl4
ZWQgaW50ZWdlcgorICAgICAgICB0eXBlcyBieSB1c2luZyBhIGxvY2FsIHZhcmlhYmxlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjp0YWJXaWR0aCBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBp
bnN0ZWFkCisgICAgICAgIG9mIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RhYlNpemUuaDogUmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSB0aGUgZGF0YQor
ICAgICAgICBtZW1iZXJzIHNpbmNlIFRhYlNpemUgaXMgYSBzdHJ1Y3QuIFJlbW92ZWQgdGhlIGdl
dHRlcnMuIE1hcmtlZCB0aGUKKyAgICAgICAgb3BlcmF0b3IgYm9vbCBleHBsaWNpdCBzaW5jZSB3
ZSBkb24ndCB3YW50IHRvIGFjY2lkZW50YWxseSBwYXNzIHRoaXMKKyAgICAgICAgdG8gc29tZXRo
aW5nIHRha2luZyBhbiBpbnRlZ2VyIGFuZCBnZXR0aW5nIGEgMCBvciAxLiBBZGRlZCBhIFRleHRT
dHJlYW0KKyAgICAgICAgb3ZlcmxvYWQgc28gd2UgY2FuIHN0cmVhbSB0aGlzIHdpdGhvdXQgZXhw
bGljaXRseSBwaWNraW5nIGl0IGFwYXJ0IGF0CisgICAgICAgIGVhY2ggY2FsbCBzaXRlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJ1bjo6dGFiU2l6ZSBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBpbnN0ZWFkIG9m
CisgICAgICAgIGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnNldFRh
YlNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBMZXZlbCk6IFVzZSBTb3J0ZWRBcnJh
eVNldC4gU2FtZSByZWFzb25zIGFzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQ
Q29sb3JQcmltYXJpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUFRyYW5z
ZmVyQ2hhcmFjdGVyaXN0aWNzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBN
YXRyaXhDb2VmZmljaWVudHMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmg6Cisg
ICAgICAgIFJlbW92ZWQgdGhlIG1fIHByZWZpeGVzIGZyb20gSW5iYW5kQ2hhcHRlclRyYWNrUHJp
dmF0ZUFWRk9iakM6OkNoYXB0ZXJEYXRhCisgICAgICAgIGRhdGEgbWVtYmVycyBzaW5jZSBpdCdz
IGEgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvUXVldWVkVmlkZW9PdXRwdXQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091
dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKTogRml4ZWQgYQorICAgICAgICBi
dWcgd2hlcmUgdGhpcyB1c2VkIGN1cnJlbnRJbWFnZVRpbWUgaW5zdGVhZCBvZiBuZXh0SW1hZ2Ug
dGltZSwgZXhwb3NlZAorICAgICAgICBiZWNhdXNlIHRoZSBjaGFuZ2VzIHRvIE1lZGlhVGltZSBt
YWRlIGl0IGdpdmUgdXMgYW4gdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25z
dW1lRnJhbWVEYXRhKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBwYXJzZU9wdXNQcml2YXRlRGF0
YSBub3cgcmV0dXJucyBhbiBvcHRpb25hbCBpbnN0ZWFkIG9mCisgICAgICAgIHJldHVybmluZyBh
IGJvb2xlYW4gYW5kIHVzaW5nIGFuIG91dCBhcmd1bWVudC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmg6IEFkZGVkIGFuIGluY2x1
ZGUKKyAgICAgICAgb2YgU2Vjb25kcy5oIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIHB1bGxlZCBpbiBi
eSBvdGhlciBpbmNsdWRlcyBhbmQKKyAgICAgICAgdGhpcyBzdHJ1Y3R1cmUgaGFzIGEgU2Vjb25k
cyBkYXRhIG1lbWJlci4gQ2hhbmdlZCB0aGUgcGFyc2VPcHVzUHJpdmF0ZURhdGEKKyAgICAgICAg
ZnVuY3Rpb24gdG8gcmV0dXJuIGFuIG9wdGlvbmFsIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgYm9v
bCBhbmQgdXNpbmcKKyAgICAgICAgYW4gb3V0IGFyZ3VtZW50IGZvciB3aGF0IGlzIHBhcnNlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHVzUHJpdmF0ZURhdGEpOiBEaXR0by4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbTogUmVtb3ZlZCB0aGUg
Y29uc3RydWN0b3JzIGZyb20KKyAgICAgICAgT1NCdWlsZEluZm8gYW5kIG1hZGUgYWxsIGl0cyBv
cGVyYXRvcnMgY29uc3RleHByLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Jhc2VBdWRpb1NoYXJlZFVuaXQuaDogQWRkZWQgYW4gaW5jbHVkZQorICAgICAgICBvZiBTZWNv
bmRzLmgsIG5vIGxvbmdlciBwdWxsZWQgaW4gYnkgTG9jay5oLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW06IEFkZGVkIGFuIGluY2x1ZGUg
b2YKKyAgICAgICAgV2FsbFRpbWUuaCwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBUaHJlYWRpbmdQ
cmltaXRpdmVzLmguCisKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKTogUmV0dXJuIGFuIG9wdGlv
bmFsIGluc3RlYWQgb2YKKyAgICAgICAgYSB1bmlxdWVfcHRyLiBObyByZWFzb24gdG8gdXNlIGEg
aGVhcCBibG9jayBmb3IgdGhpcy4KKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5oOiBVcGRhdGVk
IHNpbmNlIEdyaWRBcmVhIGlzIG5vdyBhIHN0cnVjdCBhbmQgZm9yIHRoZSBhYm92ZS4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCBjb25zdCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNv
bnRlbnQKKyAgICAgICAgaXMgbm93IGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQgY29uc3QpOgorICAgICAg
ICBSZXR1cm4gYSBHcmlkQXJlYSBpbnN0ZWFkIG9mIGEgdW5pcXVlX3B0ci4gVGhlIHJldHVybiB2
YWx1ZSBpcyBuZXZlciBudWxsIGFuZAorICAgICAgICB0aGVyZSBpcyBubyBuZWVkIHRvIHB1dCBp
dCBvbiB0aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlU3BlY2lm
aWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOiBVcGRhdGVkIGZvcgorICAgICAgICB0aGUg
YWJvdmUgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFq
b3JBeGlzSXRlbU9uR3JpZCBjb25zdCk6IFVzZSBvcHRpb25hbCBpbnN0ZWFkCisgICAgICAgIG9m
IHVuaXF1ZV9wdHIgZm9yIGEgbG9jYWwgdmFyaWFibGUgd2l0aCB0aGUgZW1wdHkgZ3JpZCBhcmVh
IGluIGl0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6IFVwZGF0ZWQgc2luY2Ug
R3JpZEFyZWEgaXMgYSBzdHJ1Y3QgYW5kIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDogVXNlIGNvbnN0ZXhwci4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdCBjb25zdCk6IFVwZGF0ZWQgc2luY2UKKyAg
ICAgICAgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpkZWJ1
Z1RleHRTaGFkb3cgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5oOiBTdHlsZSB0d2Vha3MuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ291
bnRlckNvbnRlbnQuaDogVHVybmVkIHRoZSBDb3VudGVyQ29udGVudCBjbGFzcyBpbnRvIGEKKyAg
ICAgICAgc3RydWN0dXJlIHdpdGggcHVibGljIGRhdGEgbWVtYmVycy4KKworICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDogUmVtb3ZlZCB0aGUgRmlsbFNpemUgY29uc3RydWN0
b3JzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6IE1hZGUgR3JpZFNw
YW5UeXBlIGJlIGJhc2VkIG9uIGEgdWludDhfdC4KKyAgICAgICAgUmVvcmRlcmVkIHRoZSBkYXRh
IG1lbWJlcnMgb2YgR3JpZEFyZWEgdG8gYmUgcm93cyBmaXJzdCBhbmQgdGhlbiBjb2x1bW5zCisg
ICAgICAgIHRvIGZvbGxvdyB0aGUgb3JkZXIgZnJvbSB0aGUgY29uc3RydWN0b3IgYW5kIGFsc28g
dGhlIGNvbnZlbnRpb25hbAorICAgICAgICAieCBiZWZvcmUgeSIgb3JkZXJpbmcuIFRoaXMgd2ls
bCBhbHNvIGJlIGdvb2Qgc29tZSBkYXkgd2hlbiB3ZSBjYW4gdXNlIHRoZQorICAgICAgICBkZWZh
dWx0IDw9PiBmcm9tIEMrKzIwLCB3aGljaCBkZXBlbmRzIG9uIGRhdGEgbWVtYmVyIG9yZGVyaW5n
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaDogVHdlYWtlZCBjb21t
ZW50cyBhbmQgbW92ZWQgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgb2YgbV9mbGV4IGZyb20gdGhl
IGNvbnN0cnVjdG9yIHRvIHRoZSBkYXRhIG1lbWJlciBkZWZpbml0aW9uLgorCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOiBVcGRhdGVkIHNpbmNlCisg
ICAgICAgIExlbmd0aFBvaW50IGlzIGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmg6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgYW5kIExl
bmdodFBvaW50CisgICAgICAgIGFyZSBzdHJ1Y3R1cmVzLCBhbmQgdG8gcGFzcyBUYWJTaXplIGJ5
IHZhbHVlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6IFNpbXBsaWZpZWQgY29uc3Ry
dWN0b3Igc2luY2UgbV9sb2NhdGlvbgorICAgICAgICBkb2VzIG5vdCBoYXZlIHRvIGJlIHNwbGl0
IG91dCBpbnRvIHggYW5kIHkganVzdCB0byBjb3B5IGl0LgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TaGFkb3dEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dE
YXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjp4IGNvbnN0KTogVXBk
YXRlZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBub3cgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dEYXRhOjp5IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMu
CisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZSk6IFVwZGF0ZWQg
c2luY2UgVGFiU2l6ZQorICAgICAgICBubyBsb25nZXIgaGFzIGNvbnN0cnVjdG9ycy4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24pOiBV
cGRhdGVkIHNpbmNlIExlbmd0aFBvaW50CisgICAgICAgIG5vIGxvbmdlciBoYXMgY29uc3RydWN0
b3JzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQ
b3NpdGlvbk9yQXV0byk6IERpdHRvLgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckN1c3Rv
bS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9y
Qm94U2hhZG93VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQK
KyAgICAgICAgbm8gbG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisKIDIwMjItMDEtMjQgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBVcGRh
dGUgUGFzdGVib2FyZDo6cmVhZCB0byBwcmlvcml0aXplIG5hdGl2ZSByZXByZXNlbnRhdGlvbnMg
b3ZlciBUSUZGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAxMDNjOTQ5M2ZjODNkNGM3MzBhMDNhMzE0
MDA1NWU0Yzc3MDAyNDAzLi45M2I1ZWRiYzU4MzNlOWIwY2E4NDk2ZGE5MDFlMGM0NDBlZTI1ZTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMS0yMyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5
IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGlt
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChQQUw6OkNNVGltZUhhc0ZsYWdzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFBBTDo6dG9NZWRpYVRpbWUpOiBUYWtlIENNVGltZSBieSB2YWx1ZS4gQWxz
byBzaW1wbGlmaWVkIGxvZ2ljCisgICAgICAgIHRvIGp1c3QgY2hlY2sgb25lIGZsYWcgYXQgYSB0
aW1lLCB3aGljaCBtZWFucyB0aGUgQ01UaW1lSGFzRmxhZ3MKKyAgICAgICAgZnVuY3Rpb24gaXNu
J3QgbmVlZGVkIGFueSBtb3JlLiBBbHNvIG5vdyB1c2VzIE9wdGlvblNldCBiZWNhdXNlCisgICAg
ICAgIHRoYXQgaXMgaG93IE1lZGlhVGltZSB3b3Jrcy4KKyAgICAgICAgKFBBTDo6dG9DTVRpbWUp
OiBUYWtlIE1lZGlhVGltZSBieSB2YWx1ZS4KKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKIDIwMjItMDEt
MjQgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aW1wbGlmeSBhY2Nlc3NlcyB0byBTeXN0ZW1WZXJzaW9uLnBsaXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0MjZk
Yjc2M2NkZmEzM2JiMDVlM2Y2ZDRjNDdmMDcwNGVkYmU4NDcuLmRhZmFjMTc0M2Q3NGM4NjQ4YmIy
NDhjNWM5ZWRlMzUxMDZiZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEt
MjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFu
ZCBzaW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oOgorICAgICAgICBBZGRl
ZCBhbiBpbmNsdWRlIG9mIDxvcHRpb25hbD4sIG5vIGxvbmdlciBwdWxsZWQgaW4gYm90aCBvdGhl
ciBoZWFkZXJzLgorCiAyMDIyLTAxLTI0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZ3Jlc3Npb24gKHIyODY5MzYpOiBTZXNzaW9uU3RvcmFnZSBkYXRhIGlz
IG5vdCBjbGVhcmVkIHdoZW4gZGVsZXRpbmcgd2Vic2l0ZSBkYXRhIGJ5IG1vZGlmaWNhdGlvbiB0
aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1w
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3Bw
CmluZGV4IDVmNjYzYjJmZjVhNWUzY2UwOGNlNDEyOTViODBhOWI3MTA2Yzg5NzkuLjU0NmNhZDc2
ZWM4OGQ3MTA1NDFlNmEzZTU5ODVmYTY0OTVmYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3
YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggM2NlNzYxMjQyYzMyZWMxNjk0
YzY1YTc3ZTc0MGU5YzY2OTNjM2JiNC4uMzY0ODcyYTIwMWM2ZGJlZmZjOTdlNGM5MGM2NTYxYmY1
OWQwNzRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHVzaW5nIFdURjo6UmVmUHRy
OwogdXNpbmcgV1RGOjpSZXRhaW5QdHI7CiB1c2luZyBXVEY6OlNIQTE7CiB1c2luZyBXVEY6OlNj
b3BlZExhbWJkYTsKK3VzaW5nIFdURjo6U2Vjb25kczsKIHVzaW5nIFdURjo6U3RyaW5nOwogdXNp
bmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CkBAIC0xNjEs
NiArMTYyLDcgQEAgdXNpbmcgV1RGOjpUZXh0U3RyZWFtOwogdXNpbmcgV1RGOjpVUkw7CiB1c2lu
ZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5nIFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXYWxsVGlt
ZTsKIHVzaW5nIFdURjo6V2Vha1B0cjsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNp
bmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXgg
NDJlNGFhYzBjOWE0YWFlNTllNzFiNWU5MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQz
MTY5MGM2NDJlYmI3YmI3NmVhNzY5OTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9j
ay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0xvY2tBbGdvcml0aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZXR5QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKaW5kZXggMjI0ZTc3NDk1ZmI5MzgzNGY1OGY5Y2YzMjM0
MzdmMzkxNjkzOTQyZi4uYThiOWMzNDNjNzM4Y2MwNjdlMzAwZWUzMGFjMzFlNzZmNGViN2Q0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC03Miw5ICs3Miw5IEBAIHN0YXRpYyBpbnQ2NF90IHNpZ251
bShpbnQ2NF90IHZhbCkKIAogY29uc3QgdWludDMyX3QgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNj
YWxlID0gMTAwMDAwMDAwMDsKIAotTWVkaWFUaW1lOjpNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1l
JiByaHMpCitjb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91
YmxlIHZhbHVlKQorICAgIDogbV92YWx1ZUFzRG91YmxlKHZhbHVlKQogewotICAgICp0aGlzID0g
cmhzOwogfQogCiBNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxv
YXRUaW1lKQpAQCAtODQsNTcgKzg0LDUxIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhGbG9hdChmbG9hdCBmbG9hdFRpbWUpCiAgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAgICBNZWRpYVRpbWUgdmFsdWUo
MCwgRGVmYXVsdFRpbWVTY2FsZSwgVmFsaWQgfCBEb3VibGVWYWx1ZSk7Ci0gICAgdmFsdWUubV90
aW1lVmFsdWVBc0RvdWJsZSA9IGZsb2F0VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgZG91
YmxlIHZhbHVlID0gZmxvYXRUaW1lOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsK
IH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGlt
ZSwgdWludDMyX3QgdGltZVNjYWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZs
b2F0KGZsb2F0IHZhbHVlLCB1aW50MzJfdCB0aW1lU2NhbGUpCiB7Ci0gICAgaWYgKGZsb2F0VGlt
ZSAhPSBmbG9hdFRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1
cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQotICAgICAg
ICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgp
IDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZmxvYXRUaW1lID49IG1heFBsdXNP
bmU8aW50NjRfdD4pCisgICAgaWYgKHZhbHVlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAg
ICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICBpZiAodmFsdWUgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CiAgICAgaWYgKCF0aW1lU2NhbGUpCi0gICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUg
KGZsb2F0VGltZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIHdoaWxl
ICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICB0aW1l
U2NhbGUgLz0gMjsKLSAgICByZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZs
b2F0VGltZSAqIHRpbWVTY2FsZSksIHRpbWVTY2FsZSwgVmFsaWQpOworICAgIGludDY0X3Qgc2Nh
bGVkVmFsdWUgPSB2YWx1ZSAqIHRpbWVTY2FsZTsKKyAgICByZXR1cm4geyBzY2FsZWRWYWx1ZSwg
dGltZVNjYWxlIH07CiB9CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
ZG91YmxlIGRvdWJsZVRpbWUpCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAg
IGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0g
ICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25i
aXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0
ZVRpbWUoKTsKLQotICAgIE1lZGlhVGltZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxp
ZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZG91Ymxl
VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpKQorICAg
ICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
OiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUg
fTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91
YmxlVGltZSwgdWludDMyX3QgdGltZVNjYWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShkb3VibGUgdmFsdWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAo
ZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGlt
ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGlt
ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIGlmICh2YWx1ZSA+PSBtYXhQbHVzT25lPGlu
dDY0X3Q+KQogICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAo
ZG91YmxlVGltZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlm
ICh2YWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICBy
ZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0
KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgp
OwogCi0gICAgd2hpbGUgKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2
NF90PikKKyAgICB3aGlsZSAodmFsdWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90
PikKICAgICAgICAgdGltZVNjYWxlIC89IDI7Ci0gICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzdGQ6OnJvdW5kKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUpKSwgdGltZVNj
YWxlLCBWYWxpZCk7CisgICAgaW50NjRfdCBzY2FsZWRWYWx1ZSA9IHN0ZDo6cm91bmQodmFsdWUg
KiB0aW1lU2NhbGUpOworICAgIHJldHVybiB7IHNjYWxlZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0K
IAogZmxvYXQgTWVkaWFUaW1lOjp0b0Zsb2F0KCkgY29uc3QKQEAgLTE0Niw4ICsxNDAsOSBAQCBm
bG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKTsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVZh
bHVlQXNEb3VibGU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbWVWYWx1ZSkg
LyBtX3RpbWVTY2FsZTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVBc0RvdWJsZTsKKyAgICBmbG9h
dCB2YWx1ZSA9IG1fdmFsdWU7CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAogZG91
YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUoKSBjb25zdApAQCAtMTU5LDE5ICsxNTQsMTIgQEAgZG91
YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7CiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVW
YWx1ZUFzRG91YmxlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVl
KSAvIG1fdGltZVNjYWxlOworICAgICAgICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOworICAgIGRv
dWJsZSB2YWx1ZSA9IG1fdmFsdWU7CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAot
TWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocykKLXsK
LSAgICBtX3RpbWVWYWx1ZSA9IHJocy5tX3RpbWVWYWx1ZTsKLSAgICBtX3RpbWVTY2FsZSA9IHJo
cy5tX3RpbWVTY2FsZTsKLSAgICBtX3RpbWVGbGFncyA9IHJocy5tX3RpbWVGbGFnczsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhNZWRp
YVRpbWUgcmhzKSBjb25zdAogewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwpAQCAtMTkyLDcgKzE4MCw3IEBAIE1l
ZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QK
ICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91
YmxlVmFsdWUoKSAmJiByaHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlICsgcmhzLm1fdGltZVZh
bHVlQXNEb3VibGUpOworICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KG1fdmFsdWVBc0RvdWJsZSArIHJocy5tX3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0Rv
dWJsZVZhbHVlKCkgfHwgcmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUodG9Eb3VibGUoKSArIHJocy50b0RvdWJsZSgpKTsKQEAg
LTIwMSwxMyArMTg5LDEzIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQz
Ml90IGNvbW1vblRpbWVTY2FsZTsKLSAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUoYS5tX3Rp
bWVTY2FsZSwgYi5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2Nh
bGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZShhLm1f
c2NhbGUsIGIubV9zY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBN
YXhpbXVtVGltZVNjYWxlKQogICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNj
YWxlOwogICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1l
U2NhbGUoY29tbW9uVGltZVNjYWxlKTsKLSAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3RpbWVWYWx1
ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVBZGQo
YS5tX3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRp
bWVTY2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAg
ICByZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2
ZUluZmluaXRlVGltZSgpOwogICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAg
YS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUo
Y29tbW9uVGltZVNjYWxlKTsKQEAgLTIxNSw3ICsyMDMsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1l
OjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAgcmV0dXJuIGE7CiB9
CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShNZWRpYVRpbWUgcmhzKSBjb25z
dAogewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBpbnZhbGlkVGltZSgpOwpAQCAtMjM2LDcgKzIyNCw3IEBAIE1lZGlhVGltZSBNZWRpYVRp
bWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJu
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiBy
aHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlIC0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOwor
ICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJs
ZSAtIHJocy5tX3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwg
cmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUodG9Eb3VibGUoKSAtIHJocy50b0RvdWJsZSgpKTsKQEAgLTI0NSwxMyArMjMzLDEz
IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QKICAgICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVT
Y2FsZTsKLSAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV90aW1lU2NhbGUsIHJo
cy5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhp
bXVtVGltZVNjYWxlKQorICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3NjYWxl
LCByaHMubV9zY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhp
bXVtVGltZVNjYWxlKQogICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxl
OwogICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2Nh
bGUoY29tbW9uVGltZVNjYWxlKTsKLSAgICB3aGlsZSAoIXNhZmVTdWIoYS5tX3RpbWVWYWx1ZSwg
Yi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVTdWIoYS5t
X3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVT
Y2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRp
dmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICBy
ZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpOwogICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5z
ZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29t
bW9uVGltZVNjYWxlKTsKQEAgLTI3NSw5ICsyNjMsOSBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpv
cGVyYXRvci0oKSBjb25zdAogCiAgICAgTWVkaWFUaW1lIG5lZ2F0aXZlVGltZSA9ICp0aGlzOwog
ICAgIGlmIChuZWdhdGl2ZVRpbWUuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgbmVnYXRpdmVU
aW1lLm1fdGltZVZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNEb3Vi
bGU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5tX3ZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1l
Lm1fdmFsdWVBc0RvdWJsZTsKICAgICBlbHNlCi0gICAgICAgIG5lZ2F0aXZlVGltZS5tX3RpbWVW
YWx1ZSA9IC1uZWdhdGl2ZVRpbWUubV90aW1lVmFsdWU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5t
X3ZhbHVlID0gLW5lZ2F0aXZlVGltZS5tX3ZhbHVlOwogICAgIHJldHVybiBuZWdhdGl2ZVRpbWU7
CiB9CiAKQEAgLTMwNywxNCArMjk1LDE0IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9y
KihpbnQzMl90IHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYSA9ICp0aGlzOwogCiAgICAgaWYg
KGEuaGFzRG91YmxlVmFsdWUoKSkgewotICAgICAgICBhLm1fdGltZVZhbHVlQXNEb3VibGUgKj0g
cmhzOworICAgICAgICBhLm1fdmFsdWVBc0RvdWJsZSAqPSByaHM7CiAgICAgICAgIHJldHVybiBh
OwogICAgIH0KIAotICAgIHdoaWxlICghc2FmZU11bHRpcGx5KGEubV90aW1lVmFsdWUsIHJocywg
YS5tX3RpbWVWYWx1ZSkpIHsKLSAgICAgICAgaWYgKGEubV90aW1lU2NhbGUgPT0gMSkKLSAgICAg
ICAgICAgIHJldHVybiBzaWdudW0oYS5tX3RpbWVWYWx1ZSkgPT0gc2lnbnVtKHJocykgPyBwb3Np
dGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICAgICAgYS5z
ZXRUaW1lU2NhbGUoYS5tX3RpbWVTY2FsZSAvIDIpOworICAgIHdoaWxlICghc2FmZU11bHRpcGx5
KGEubV92YWx1ZSwgcmhzLCBhLm1fdmFsdWUpKSB7CisgICAgICAgIGlmIChhLm1fc2NhbGUgPT0g
MSkKKyAgICAgICAgICAgIHJldHVybiBzaWdudW0oYS5tX3ZhbHVlKSA9PSBzaWdudW0ocmhzKSA/
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworICAgICAg
ICBhLnNldFRpbWVTY2FsZShhLm1fc2NhbGUgLyAyKTsKICAgICB9CiAKICAgICByZXR1cm4gYTsK
QEAgLTMyMiwxNzYgKzMxMCwxMDkgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IqKGlu
dDMyX3QgcmhzKSBjb25zdAogCiBib29sIE1lZGlhVGltZTo6b3BlcmF0b3IhKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKG1fdGltZUZsYWdzID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAg
ICAgfHwgKG1fdGltZUZsYWdzID09IChWYWxpZCB8IERvdWJsZVZhbHVlKSAmJiAhbV90aW1lVmFs
dWVBc0RvdWJsZSkKLSAgICAgICAgfHwgaXNJbnZhbGlkKCk7CisgICAgcmV0dXJuIGlzSW52YWxp
ZCgpIHx8IChoYXNEb3VibGVWYWx1ZSgpID8gIW1fdmFsdWVBc0RvdWJsZSA6ICFtX3ZhbHVlKTsK
IH0KIAogTWVkaWFUaW1lOjpvcGVyYXRvciBib29sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gISht
X3RpbWVGbGFncyA9PSBWYWxpZCAmJiAhbV90aW1lVmFsdWUpCi0gICAgICAgICYmICEobV90aW1l
RmxhZ3MgPT0gKFZhbGlkIHwgRG91YmxlVmFsdWUpICYmICFtX3RpbWVWYWx1ZUFzRG91YmxlKQot
ICAgICAgICAmJiAhaXNJbnZhbGlkKCk7CisgICAgcmV0dXJuICEhKnRoaXM7CiB9CiAKLU1lZGlh
VGltZTo6Q29tcGFyaXNvbkZsYWdzIE1lZGlhVGltZTo6Y29tcGFyZShjb25zdCBNZWRpYVRpbWUm
IHJocykgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBNZWRpYVRpbWU6OkNvbXBh
cmlzb25GbGFncyBvcmRlcmluZyhUIGEsIFQgYikKIHsKLSAgICBhdXRvIGFuZEZsYWdzID0gbV90
aW1lRmxhZ3MgJiByaHMubV90aW1lRmxhZ3M7Ci0gICAgaWYgKGFuZEZsYWdzICYgKFBvc2l0aXZl
SW5maW5pdGUgfCBOZWdhdGl2ZUluZmluaXRlIHwgSW5kZWZpbml0ZSkpCi0gICAgICAgIHJldHVy
biBFcXVhbFRvOwotCi0gICAgYXV0byBvckZsYWdzID0gbV90aW1lRmxhZ3MgfCByaHMubV90aW1l
RmxhZ3M7Ci0gICAgaWYgKCEob3JGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIEVxdWFs
VG87Ci0KLSAgICBpZiAoIShhbmRGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIGlzSW52
YWxpZCgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgTmVn
YXRpdmVJbmZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmVJbmZpbml0ZSgpID8gTGVz
c1RoYW4gOiBHcmVhdGVyVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgUG9zaXRpdmVJbmZpbml0
ZSkKLSAgICAgICAgcmV0dXJuIGlzUG9zaXRpdmVJbmZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgSW5kZWZpbml0ZSkKLSAgICAgICAgcmV0dXJu
IGlzSW5kZWZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChhbmRG
bGFncyAmIERvdWJsZVZhbHVlKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZUFzRG91YmxlID09
IHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0K
LSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlQXNEb3VibGUgPCByaHMubV90aW1lVmFsdWVBc0Rv
dWJsZSA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47Ci0gICAgfQotCi0gICAgaWYgKG9yRmxhZ3Mg
JiBEb3VibGVWYWx1ZSkgewotICAgICAgICBkb3VibGUgYSA9IHRvRG91YmxlKCk7Ci0gICAgICAg
IGRvdWJsZSBiID0gcmhzLnRvRG91YmxlKCk7Ci0gICAgICAgIGlmIChhID4gYikKLSAgICAgICAg
ICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICAgICAgaWYgKGEgPCBiKQotICAgICAgICAgICAg
cmV0dXJuIExlc3NUaGFuOwotICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAgICB9Ci0KLSAgICBp
ZiAoKG1fdGltZVZhbHVlIDwgMCkgIT0gKHJocy5tX3RpbWVWYWx1ZSA8IDApKQotICAgICAgICBy
ZXR1cm4gbV90aW1lVmFsdWUgPCAwID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKKyAgICByZXR1
cm4gYSA8IGIgPyBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFnczo6TGVzc1RoYW4gOiBiIDwgYSA/
IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzOjpHcmVhdGVyVGhhbiA6IE1lZGlhVGltZTo6Q29t
cGFyaXNvbkZsYWdzOjpFcXVhbFRvOworfQogCi0gICAgaWYgKCFtX3RpbWVWYWx1ZSAmJiAhcmhz
Lm1fdGltZVZhbHVlKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsKK01lZGlhVGltZTo6Q29tcGFy
aXNvbkZsYWdzIG9yZGVyaW5nKE1lZGlhVGltZSBhLCBNZWRpYVRpbWUgYikKK3sKKyAgICBhdXRv
IG9yZGVyaW5nQ2xhc3MgPSBbXShNZWRpYVRpbWUgdGltZSkgeworICAgICAgICBpZiAodGltZS5p
c05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYg
KHRpbWUuaXNJbmRlZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYg
KHRpbWUuaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAg
ICAgaWYgKHRpbWUuaXNJbnZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfTsKKyAgICBhdXRvIGFDbGFzcyA9IG9yZGVyaW5nQ2xhc3MoYSk7Cisg
ICAgYXV0byBiQ2xhc3MgPSBvcmRlcmluZ0NsYXNzKGIpOworICAgIGlmIChhQ2xhc3MgfHwgYkNs
YXNzKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYUNsYXNzLCBiQ2xhc3MpOwogCi0gICAgaWYg
KG1fdGltZVNjYWxlID09IHJocy5tX3RpbWVTY2FsZSkgewotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPT0gcmhzLm1fdGltZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAg
ICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSA/IExlc3NUaGFuIDogR3Jl
YXRlclRoYW47Ci0gICAgfQorICAgIGlmIChhLmhhc0RvdWJsZVZhbHVlKCkgfHwgYi5oYXNEb3Vi
bGVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYS50b0RvdWJsZSgpLCBiLnRvRG91
YmxlKCkpOwogCi0gICAgaWYgKG1fdGltZVZhbHVlID09IHJocy5tX3RpbWVWYWx1ZSkKLSAgICAg
ICAgcmV0dXJuIG1fdGltZVNjYWxlIDwgcmhzLm1fdGltZVNjYWxlID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKKyAgICBpZiAoKGEubV92YWx1ZSA8IDApICE9IChiLm1fdmFsdWUgPCAwKSB8fCAh
YS5tX3ZhbHVlIHx8ICFiLm1fdmFsdWUgfHwgYS5tX3NjYWxlID09IGIubV9zY2FsZSkKKyAgICAg
ICAgcmV0dXJuIG9yZGVyaW5nKGEubV92YWx1ZSwgYi5tX3ZhbHVlKTsKIAotICAgIGlmIChtX3Rp
bWVWYWx1ZSA+PSAwKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1
ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBM
ZXNzVGhhbjsKKyAgICBpZiAoYS5tX3ZhbHVlID09IGIubV92YWx1ZSkKKyAgICAgICAgcmV0dXJu
IG9yZGVyaW5nKGIubV9zY2FsZSwgYS5tX3NjYWxlKTsKIAotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPiByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0g
ICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47CisgICAgaWYgKGEubV92YWx1ZSA+PSAwKSB7
CisgICAgICAgIGlmIChhLm1fdmFsdWUgPCBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlID4gYi5tX3Nj
YWxlKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6TGVzc1RoYW47CisgICAgICAgIGlm
IChhLm1fdmFsdWUgPiBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAg
ICAgICAgcmV0dXJuIE1lZGlhVGltZTo6R3JlYXRlclRoYW47CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKG1fdGltZVZhbHVlIDwgcmhzLm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlIDwgcmhz
Lm1fdGltZVNjYWxlKQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgICAgIGlm
IChtX3RpbWVWYWx1ZSA+IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3Rp
bWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICAgICAgaWYgKGEu
bV92YWx1ZSA8IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAg
ICByZXR1cm4gTWVkaWFUaW1lOjpMZXNzVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIu
bV92YWx1ZSAmJiBhLm1fc2NhbGUgPiBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVk
aWFUaW1lOjpHcmVhdGVyVGhhbjsKICAgICB9CiAKLSAgICBpbnQ2NF90IGxoc0ZhY3RvcjsKLSAg
ICBpbnQ2NF90IHJoc0ZhY3RvcjsKLSAgICBpZiAoc2FmZU11bHRpcGx5KG1fdGltZVZhbHVlLCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihyaHMubV90aW1lU2NhbGUpLCBsaHNGYWN0b3IpCi0gICAgICAg
ICYmIHNhZmVNdWx0aXBseShyaHMubV90aW1lVmFsdWUsIHN0YXRpY19jYXN0PGludDY0X3Q+KG1f
dGltZVNjYWxlKSwgcmhzRmFjdG9yKSkgewotICAgICAgICBpZiAobGhzRmFjdG9yID09IHJoc0Zh
Y3RvcikKLSAgICAgICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgICAgICByZXR1cm4gbGhzRmFj
dG9yIDwgcmhzRmFjdG9yID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9CisgICAgaW50
NjRfdCBhUHJvZHVjdDsKKyAgICBpbnQ2NF90IGJQcm9kdWN0OworICAgIGludDY0X3QgYVRpbWVT
Y2FsZSA9IGEubV9zY2FsZTsKKyAgICBpbnQ2NF90IGJUaW1lU2NhbGUgPSBiLm1fc2NhbGU7Cisg
ICAgaWYgKHNhZmVNdWx0aXBseShhLm1fdmFsdWUsIGFUaW1lU2NhbGUsIGFQcm9kdWN0KSAmJiBz
YWZlTXVsdGlwbHkoYi5tX3ZhbHVlLCBiVGltZVNjYWxlLCBiUHJvZHVjdCkpCisgICAgICAgIHJl
dHVybiBvcmRlcmluZyhhUHJvZHVjdCwgYlByb2R1Y3QpOworCisgICAgYXV0byBhUXVvdGllbnQg
PSBhLm1fdmFsdWUgLyBhLm1fc2NhbGU7CisgICAgYXV0byBiUXVvdGllbnQgPSBiLm1fdmFsdWUg
LyBiLm1fc2NhbGU7CisgICAgaWYgKGFRdW90aWVudCAhPSBiUXVvdGllbnQpCisgICAgICAgIHJl
dHVybiBvcmRlcmluZyhhUXVvdGllbnQsIGJRdW90aWVudCk7CiAKLSAgICBpbnQ2NF90IHJoc1do
b2xlID0gcmhzLm1fdGltZVZhbHVlIC8gcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhz
V2hvbGUgPSBtX3RpbWVWYWx1ZSAvIG1fdGltZVNjYWxlOwotICAgIGlmIChsaHNXaG9sZSA+IHJo
c1dob2xlKQotICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47Ci0gICAgaWYgKGxoc1dob2xlIDwg
cmhzV2hvbGUpCi0gICAgICAgIHJldHVybiBMZXNzVGhhbjsKLQotICAgIGludDY0X3QgcmhzUmVt
YWluID0gcmhzLm1fdGltZVZhbHVlICUgcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhz
UmVtYWluID0gbV90aW1lVmFsdWUgJSBtX3RpbWVTY2FsZTsKLSAgICBsaHNGYWN0b3IgPSBsaHNS
ZW1haW4gKiByaHMubV90aW1lU2NhbGU7Ci0gICAgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90
aW1lU2NhbGU7Ci0KLSAgICBpZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgcmV0
dXJuIEVxdWFsVG87Ci0gICAgcmV0dXJuIGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJU
aGFuIDogTGVzc1RoYW47CisgICAgYXV0byBhUmVtYWluZGVyID0gYS5tX3ZhbHVlICUgYS5tX3Nj
YWxlICogYS5tX3NjYWxlOworICAgIGF1dG8gYlJlbWFpbmRlciA9IGIubV92YWx1ZSAlIGIubV9z
Y2FsZSAqIGIubV9zY2FsZTsKKyAgICByZXR1cm4gb3JkZXJpbmcoYVJlbWFpbmRlciwgYlJlbWFp
bmRlcik7CiB9CiAKLWJvb2wgTWVkaWFUaW1lOjppc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiBh
LCBjb25zdCBNZWRpYVRpbWUmIGIpIGNvbnN0Citib29sIE1lZGlhVGltZTo6aXNCZXR3ZWVuKE1l
ZGlhVGltZSBhLCBNZWRpYVRpbWUgYikgY29uc3QKIHsKICAgICBpZiAoYSA+IGIpCiAgICAgICAg
IHJldHVybiAqdGhpcyA+IGIgJiYgKnRoaXMgPCBhOwogICAgIHJldHVybiAqdGhpcyA+IGEgJiYg
KnRoaXMgPCBiOwogfQogCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6emVyb1RpbWUoKQot
ewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgwLCAxLCBWYWxpZCk7Ci0gICAgcmV0
dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
Ci17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKC0xLCAxLCAwKTsKLSAgICByZXR1
cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgUG9zaXRp
dmVJbmZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFU
aW1lJiBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29u
c3QgTWVkaWFUaW1lIHRpbWUoLTEsIDEsIE5lZ2F0aXZlSW5maW5pdGUgfCBWYWxpZCk7Ci0gICAg
cmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbmRlZmluaXRl
VGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIEluZGVmaW5p
dGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6
OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykgY29u
c3QKK01lZGlhVGltZSBNZWRpYVRpbWU6OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwg
Um91bmRpbmdNb2RlIG1vZGUpIGNvbnN0CiB7CiAgICAgTWVkaWFUaW1lIHJlc3VsdCA9ICp0aGlz
OwotICAgIHJlc3VsdC5zZXRUaW1lU2NhbGUodGltZVNjYWxlLCBmbGFncyk7CisgICAgcmVzdWx0
LnNldFRpbWVTY2FsZSh0aW1lU2NhbGUsIG1vZGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGlu
Z0ZsYWdzIGZsYWdzKQordm9pZCBNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSh1aW50MzJfdCB0aW1l
U2NhbGUsIFJvdW5kaW5nTW9kZSBtb2RlKQogewogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKSB7
Ci0gICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVl
QXNEb3VibGUsIHRpbWVTY2FsZSk7CisgICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSwgdGltZVNjYWxlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmICghdGltZVNjYWxlKSB7Ci0gICAgICAgICp0aGlzID0gbV90aW1lVmFs
dWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
CisgICAgICAgICp0aGlzID0gbV92YWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDog
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh0aW1lU2NhbGUgPT0gbV90aW1lU2NhbGUpCisgICAgaWYgKHRpbWVTY2FsZSA9PSBtX3NjYWxl
KQogICAgICAgICByZXR1cm47CiAKICAgICB0aW1lU2NhbGUgPSBzdGQ6Om1pbihNYXhpbXVtVGlt
ZVNjYWxlLCB0aW1lU2NhbGUpOwogCi0gICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8
SW50MTI4PihtX3RpbWVWYWx1ZSkgKiB0aW1lU2NhbGU7Ci0gICAgaW50NjRfdCByZW1haW5kZXIg
PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1ZSAlIG1fdGltZVNjYWxlKTsKLSAgICBuZXdW
YWx1ZSA9IG5ld1ZhbHVlIC8gbV90aW1lU2NhbGU7CisgICAgSW50MTI4IG5ld1ZhbHVlID0gc3Rh
dGljX2Nhc3Q8SW50MTI4PihtX3ZhbHVlKSAqIHRpbWVTY2FsZTsKKyAgICBpbnQ2NF90IHJlbWFp
bmRlciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG5ld1ZhbHVlICUgbV9zY2FsZSk7CisgICAgbmV3
VmFsdWUgPSBuZXdWYWx1ZSAvIG1fc2NhbGU7CiAKICAgICBpZiAobmV3VmFsdWUgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkgewogICAgICAgICAqdGhpcyA9IG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CkBAIC01MDMsNDIgKzQyNCw0MiBAQCB2b2lkIE1lZGlhVGltZTo6c2V0
VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdGltZVZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4obmV3VmFsdWUpOwotICAgIHN0ZDo6c3dhcChtX3RpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAg
ICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG5ld1ZhbHVlKTsKKyAgICBhdXRvIG9s
ZFRpbWVTY2FsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9zY2FsZSwgdGltZVNjYWxlKTsKIAogICAgIGlm
ICghcmVtYWluZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVGbGFncyB8PSBIYXNC
ZWVuUm91bmRlZDsKLSAgICBzd2l0Y2ggKGZsYWdzKSB7Ci0gICAgY2FzZSBSb3VuZGluZ0ZsYWdz
OjpIYWxmQXdheUZyb21aZXJvOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGxh
YnMocmVtYWluZGVyKSkgKiAyID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVTY2FsZSkpIHsK
KyAgICBtX2ZsYWdzLmFkZChIYXNCZWVuUm91bmRlZCk7CisgICAgc3dpdGNoIChtb2RlKSB7Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm86CisgICAgICAgIGlmIChzdGQ6
OmFicyhyZW1haW5kZXIpICogMiA+PSBvbGRUaW1lU2NhbGUpIHsKICAgICAgICAgICAgIC8vIHJv
dW5kIHVwIChhd2F5IGZyb20gemVybykKICAgICAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQot
ICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlLS07CisgICAgICAgICAgICAgICAgLS1tX3ZhbHVl
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlKys7CisgICAg
ICAgICAgICAgICAgKyttX3ZhbHVlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAg
Y2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpU
b3dhcmRaZXJvOgogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6QXdh
eUZyb21aZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm86CiAgICAgICAg
IGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAgICAgICAg
ICAgIC0tbV92YWx1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsK
KyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5k
aW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CiAgICAgICAgIGlmIChyZW1haW5kZXIgPiAwKQotICAg
ICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eToKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToK
ICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZS0tOwor
ICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC01NDcs
NyArNDY4LDcgQEAgdm9pZCBNZWRpYVRpbWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKICAgICBvdXQucHJpbnQoInsiKTsKICAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpCi0gICAg
ICAgIG91dC5wcmludChtX3RpbWVWYWx1ZSwgIi8iLCBtX3RpbWVTY2FsZSwgIiA9ICIpOworICAg
ICAgICBvdXQucHJpbnQobV92YWx1ZSwgIi8iLCBtX3NjYWxlLCAiID0gIik7CiAgICAgb3V0LnBy
aW50KHRvRG91YmxlKCksICJ9Iik7CiB9CiAKQEAgLTU1Niw3ICs0NzcsNyBAQCBTdHJpbmcgTWVk
aWFUaW1lOjp0b1N0cmluZygpIGNvbnN0CiAgICAgY29uc3QgY2hhciogaW52YWxpZCA9IGlzSW52
YWxpZCgpID8gIiwgaW52YWxpZCIgOiAiIjsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwot
ICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV90aW1lVmFsdWUsICcvJywgbV90aW1lU2NhbGUs
ICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KCd7JywgbV92YWx1ZSwgJy8nLCBtX3NjYWxlLCAiID0gIiwgdG9Eb3VibGUoKSwgaW52YWxpZCwg
J30nKTsKIH0KIAogUmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBj
b25zdApAQCAtNTc5LDkgKzUwMCw5IEBAIFJlZjxKU09OOjpPYmplY3Q+IE1lZGlhVGltZTo6dG9K
U09OT2JqZWN0KCkgY29uc3QKICAgICBlbHNlCiAgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2
YWx1ZSJfcywgdG9Eb3VibGUoKSk7CiAKLSAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9y
Il9zLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSk7Ci0gICAgb2JqZWN0LT5zZXRJ
bnRlZ2VyKCJkZW5vbWluYXRvciJfcywgbV90aW1lU2NhbGUpOwotICAgIG9iamVjdC0+c2V0SW50
ZWdlcigiZmxhZ3MiX3MsIG1fdGltZUZsYWdzKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgibnVt
ZXJhdG9yIl9zLCBtX3ZhbHVlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9y
Il9zLCBtX3NjYWxlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX2ZsYWdz
LnRvUmF3KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTU5MSwzMyArNTEyLDI4IEBA
IFN0cmluZyBNZWRpYVRpbWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRvSlNP
Tk9iamVjdCgpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotTWVkaWFUaW1lIGFicyhjb25zdCBNZWRp
YVRpbWUmIHJocykKK01lZGlhVGltZSBhYnMoTWVkaWFUaW1lIHRpbWUpCiB7Ci0gICAgaWYgKHJo
cy5pc0ludmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsK
LSAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0aXZlSW5maW5p
dGUoKSkKKyAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAocmhzLmhhc0RvdWJs
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZmFi
cyhyaHMubV90aW1lVmFsdWVBc0RvdWJsZSkpOwotCi0gICAgTWVkaWFUaW1lIHZhbCA9IHJoczsK
LSAgICB2YWwubV90aW1lVmFsdWUgPSBzdGQ6OmFicyhyaHMubV90aW1lVmFsdWUpOwotICAgIHJl
dHVybiB2YWw7CisgICAgaWYgKHRpbWUuaGFzRG91YmxlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGQ6OmFicyh0aW1lLm1fdmFsdWVBc0RvdWJs
ZSkpOworICAgIE1lZGlhVGltZSByZXN1bHQgPSB0aW1lOworICAgIHJlc3VsdC5tX3ZhbHVlID0g
c3RkOjphYnMocmVzdWx0Lm1fdmFsdWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmlu
ZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KICAgICBvYmplY3QtPnNldE9iamVjdCgic3Rh
cnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKICAgICBvYmplY3QtPnNldE9iamVjdCgiZW5k
Il9zLCBlbmQudG9KU09OT2JqZWN0KCkpOwotCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3Ry
aW5nKCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCitUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgTWVkaWFUaW1lIHRpbWUpCiB7CiAgICAgcmV0dXJu
IHN0cmVhbSA8PCB0aW1lLnRvSlNPTlN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAppbmRleCA3MWFj
ZjMyOWViMzk4OTMzNTEyZmQ3ZjNmNThkNjBiZWNmZjIzYzUwLi4wNjE0NzI1ZmRmN2ZlMjMwMGQ0
OWM2ODA5OTNmZWMxMTFmOTk0MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRp
bWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApAQCAtMzAsMjEgKzMwLDE2IEBA
CiAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxjbWF0aD4K
LSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGludC5o
PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNz
IFByaW50U3RyZWFtOwogCi1jbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGZpbmFs
IHsKK2NsYXNzIE1lZGlhVGltZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZW51bSB7CisgICAgZW51bSBGbGFnIDogdWludDhfdCB7CiAgICAgICAg
IFZhbGlkID0gMSA8PCAwLAogICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwKICAgICAg
ICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwKQEAgLTUyLDY3ICs0Nyw2NSBAQCBwdWJsaWM6
CiAgICAgICAgIEluZGVmaW5pdGUgPSAxIDw8IDQsCiAgICAgICAgIERvdWJsZVZhbHVlID0gMSA8
PCA1LAogICAgIH07Ci0KLSAgICBjb25zdGV4cHIgTWVkaWFUaW1lKCk7Ci0gICAgY29uc3RleHBy
IE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgdWludDhfdCBmbGFncyA9
IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpOwotCi0gICAgc3Rh
dGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKTsKLSAgICBzdGF0
aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIHVpbnQzMl90IHRp
bWVTY2FsZSk7Ci0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBk
b3VibGVUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91Ymxl
IGRvdWJsZVRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0KLSAgICBmbG9hdCB0b0Zsb2F0KCkg
Y29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7Ci0KLSAgICBNZWRpYVRpbWUmIG9w
ZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocyk7Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvcis9
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9Ci0g
ICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAq
dGhpcyA9ICp0aGlzIC0gcmhzOyB9Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRp
YVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRp
bWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0OwotICAgIE1l
ZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29u
c3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBMZXNzVGhh
bjsgfQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJl
dHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVh
bFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7
IHJldHVybiBjb21wYXJlKHJocykgPT0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShj
b25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFs
VG87IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsg
cmV0dXJuIGNvbXBhcmUocmhzKSA8PSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdDsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVm
IGVudW0geworICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoKSA6IE1lZGlhVGltZSB7IGludDY0X3Qg
eyB9LCBEZWZhdWx0VGltZVNjYWxlIH0geyB9CisgICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2
NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgT3B0aW9uU2V0PEZsYWc+ID0geyBWYWxpZCB9KTsK
KworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9h
dChmbG9hdCB2YWx1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUg
Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlLCB1aW50MzJfdCBzY2FsZSk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFs
dWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhE
b3VibGUoZG91YmxlIHZhbHVlLCB1aW50MzJfdCBzY2FsZSk7CisKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgZmxvYXQgdG9GbG9hdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3Vi
bGUgdG9Eb3VibGUoKSBjb25zdDsKKworICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShNZWRpYVRp
bWUgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9CisgICAgTWVkaWFUaW1lJiBv
cGVyYXRvci09KE1lZGlhVGltZSByaHMpIHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKyhNZWRpYVRpbWUpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgb3BlcmF0b3ItKE1lZGlhVGlt
ZSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvci0oKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90
KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPChNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVy
biBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47IH0KKyAgICBib29sIG9wZXJhdG9yPihNZWRpYVRp
bWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KKyAg
ICBib29sIG9wZXJhdG9yIT0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShy
aHMpICE9IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPT0oTWVkaWFUaW1lIHJocykgY29u
c3QgeyByZXR1cm4gY29tcGFyZShyaHMpID09IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9y
Pj0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87
IH0KKyAgICBib29sIG9wZXJhdG9yPD0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29t
cGFyZShyaHMpIDw9IEVxdWFsVG87IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVy
YXRvciEoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0OworCisgICAgZW51bSBDb21wYXJpc29uRmxhZ3MgewogICAgICAgICBMZXNz
VGhhbiA9IC0xLAogICAgICAgICBFcXVhbFRvID0gMCwKICAgICAgICAgR3JlYXRlclRoYW4gPSAx
LAotICAgIH0gQ29tcGFyaXNvbkZsYWdzOworICAgIH07CisgICAgZnJpZW5kIFdURl9FWFBPUlRf
UFJJVkFURSBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFncyBvcmRlcmluZyhNZWRpYVRpbWUsIE1l
ZGlhVGltZSk7CisgICAgQ29tcGFyaXNvbkZsYWdzIGNvbXBhcmUoTWVkaWFUaW1lIG90aGVyKSBj
b25zdCB7IHJldHVybiBvcmRlcmluZygqdGhpcywgb3RoZXIpOyB9CiAKLSAgICBDb21wYXJpc29u
RmxhZ3MgY29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgYm9vbCBpc0Jl
dHdlZW4oY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNCZXR3ZWVuKE1lZGlhVGltZSwgTWVkaWFUaW1lKSBjb25z
dDsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFs
aWQ7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5z
KFZhbGlkKTsgfQogICAgIGJvb2wgaXNJbnZhbGlkKCkgY29uc3QgeyByZXR1cm4gIWlzVmFsaWQo
KTsgfQotICAgIGJvb2wgaGFzQmVlblJvdW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFn
cyAmIEhhc0JlZW5Sb3VuZGVkOyB9Ci0gICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25z
dCB7IHJldHVybiBtX3RpbWVGbGFncyAmIFBvc2l0aXZlSW5maW5pdGU7IH0KLSAgICBib29sIGlz
TmVnYXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgTmVnYXRpdmVJ
bmZpbml0ZTsgfQotICAgIGJvb2wgaXNJbmRlZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
RmxhZ3MgJiBJbmRlZmluaXRlOyB9CisgICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoSGFzQmVlblJvdW5kZWQpOyB9CisgICAgYm9vbCBpc1Bv
c2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFBvc2l0aXZl
SW5maW5pdGUpOyB9CisgICAgYm9vbCBpc05lZ2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzLmNvbnRhaW5zKE5lZ2F0aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBpc0luZGVm
aW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEluZGVmaW5pdGUpOyB9CiAg
ICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0IHsgcmV0dXJuICFpc0ludmFsaWQoKSAmJiAhaXNJbmRl
ZmluaXRlKCkgJiYgIWlzUG9zaXRpdmVJbmZpbml0ZSgpICYmICFpc05lZ2F0aXZlSW5maW5pdGUo
KTsgfQotICAgIGJvb2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFn
cyAmIERvdWJsZVZhbHVlOyB9Ci0gICAgdWludDhfdCB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVGbGFnczsgfQorICAgIGJvb2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzLmNvbnRhaW5zKERvdWJsZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxGbGFnPiB0
aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAKLSAgICBzdGF0aWMgY29uc3Qg
TWVkaWFUaW1lJiB6ZXJvVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGludmFs
aWRUaW1lKCk7Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVJbmZpbml0ZVRp
bWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgp
OwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGluZGVmaW5pdGVUaW1lKCk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgemVyb1RpbWUoKSB7IHJldHVybiB7IDAsIDEsIFZhbGlk
IH07IH0KKyAgICBzdGF0aWMgY29uc3RleHByIE1lZGlhVGltZSBpbnZhbGlkVGltZSgpIHsgcmV0
dXJuIHsgLTEsIDEsIHsgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVybiB7IDAsIDEsIHsgUG9zaXRpdmVJbmZpbml0ZSwg
VmFsaWQgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSB7IHJldHVybiB7IC0xLCAxLCB7IE5lZ2F0aXZlSW5maW5pdGUsIFZhbGlkIH0g
fTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFUaW1lIGluZGVmaW5pdGVUaW1lKCkgeyBy
ZXR1cm4geyAwLCAxLCB7IEluZGVmaW5pdGUsIFZhbGlkIH0gfTsgfQogCi0gICAgY29uc3QgaW50
NjRfdCYgdGltZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lVmFsdWU7IH0KLSAgICBjb25z
dCB1aW50MzJfdCYgdGltZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKyAg
ICBpbnQ2NF90IHRpbWVWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFoYXNEb3VibGVWYWx1ZSgpKTsg
cmV0dXJuIG1fdmFsdWU7IH0KKyAgICB1aW50MzJfdCB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVy
biBtX3NjYWxlOyB9CiAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNv
bnN0OwotICAgIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgUmVmPEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7CiAKICAgICAvLyBNYWtl
IHRoZSBmb2xsb3dpbmcgY2FzdHMgZXJyb3JzOgogICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0
ID0gZGVsZXRlOwpAQCAtMTIwLDkzICsxMTMsOTkgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIGlu
dCgpIGNvbnN0ID0gZGVsZXRlOwogICAgIE1lZGlhVGltZShpbnQpID0gZGVsZXRlOwogCi0gICAg
ZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYg
cmhzKTsKKyAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFU
aW1lKTsKIAotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAw
MDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1heGltdW1UaW1lU2NhbGU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBjb25zdCB1aW50MzJfdCBNYXhpbXVtVGltZVNj
YWxlOwogCi0gICAgZW51bSBjbGFzcyBSb3VuZGluZ0ZsYWdzIHsKLSAgICAgICAgSGFsZkF3YXlG
cm9tWmVybyA9IDAsCisgICAgZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgeworICAgICAgICBIYWxm
QXdheUZyb21aZXJvLAogICAgICAgICBUb3dhcmRaZXJvLAogICAgICAgICBBd2F5RnJvbVplcm8s
CiAgICAgICAgIFRvd2FyZFBvc2l0aXZlSW5maW5pdHksCiAgICAgICAgIFRvd2FyZE5lZ2F0aXZl
SW5maW5pdHksCiAgICAgfTsKLQotICAgIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50MzJfdCwg
Um91bmRpbmdGbGFncyA9IFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3Qgc2Nh
bGUsIFJvdW5kaW5nTW9kZSA9IFJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgTWVkaWFUaW1lJik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBzZXRUaW1lU2NhbGUodWludDMyX3QsIFJvdW5kaW5nRmxhZ3MgPSBSb3VuZGluZ0ZsYWdzOjpI
YWxmQXdheUZyb21aZXJvKTsKKyAgICBlbnVtIFVzZURvdWJsZUZsYWcgeyBVc2VEb3VibGUgfTsK
KyAgICBjb25zdGV4cHIgTWVkaWFUaW1lKFVzZURvdWJsZUZsYWcsIGRvdWJsZSB2YWx1ZSk7CisK
KyAgICB2b2lkIHNldFRpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdN
b2RlOjpIYWxmQXdheUZyb21aZXJvKTsKIAogICAgIHVuaW9uIHsKLSAgICAgICAgaW50NjRfdCBt
X3RpbWVWYWx1ZTsKLSAgICAgICAgZG91YmxlIG1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAg
IGludDY0X3QgbV92YWx1ZTsKKyAgICAgICAgZG91YmxlIG1fdmFsdWVBc0RvdWJsZTsKICAgICB9
OwotICAgIHVpbnQzMl90IG1fdGltZVNjYWxlOwotICAgIHVpbnQ4X3QgbV90aW1lRmxhZ3M7Cisg
ICAgdWludDMyX3QgbV9zY2FsZSB7IERlZmF1bHRUaW1lU2NhbGUgfTsKKyAgICBPcHRpb25TZXQ8
RmxhZz4gbV9mbGFncyB7IFZhbGlkIH07CiB9OwogCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRp
YVRpbWUoKQotICAgIDogbV90aW1lVmFsdWUoMCkKLSAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRU
aW1lU2NhbGUpCi0gICAgLCBtX3RpbWVGbGFncyhWYWxpZCkKLXsKLX0KLQotY29uc3RleHByIE1l
ZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50OF90
IGZsYWdzKQotICAgIDogbV90aW1lVmFsdWUodmFsdWUpCi0gICAgLCBtX3RpbWVTY2FsZShzY2Fs
ZSkKLSAgICAsIG1fdGltZUZsYWdzKGZsYWdzKQotewotICAgIGlmIChzY2FsZSB8fCAhKGZsYWdz
ICYgVmFsaWQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotfQorV1RGX0VY
UE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFUaW1lKTsKIAotaW5saW5lIE1lZGlhVGlt
ZSBvcGVyYXRvciooaW50MzJfdCBsaHMsIGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiBy
aHMub3BlcmF0b3IqKGxocyk7IH0KLQotV1RGX0VYUE9SVF9QUklWQVRFIGV4dGVybiBNZWRpYVRp
bWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKLQotc3RydWN0IFdURl9FWFBPUlRfUFJJVkFU
RSBNZWRpYVRpbWVSYW5nZSB7CitzdHJ1Y3QgTWVkaWFUaW1lUmFuZ2UgewogICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0Owog
Ci0gICAgY29uc3QgTWVkaWFUaW1lIHN0YXJ0OwotICAgIGNvbnN0IE1lZGlhVGltZSBlbmQ7Cisg
ICAgTWVkaWFUaW1lIHN0YXJ0OworICAgIE1lZGlhVGltZSBlbmQ7CiB9OwogCi10ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgotdm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAorY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQz
Ml90IHNjYWxlLCBPcHRpb25TZXQ8RmxhZz4gZmxhZ3MpCisgICAgOiBtX3ZhbHVlKHZhbHVlKQor
ICAgICwgbV9zY2FsZShzY2FsZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCit7CisgICAgaWYgKCEo
c2NhbGUgfHwgIShmbGFncyAmIFZhbGlkKSkpCisgICAgICAgICp0aGlzID0gdmFsdWUgPCAwID8g
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGNvbnN0IFQmIGEs
IE1lZGlhVGltZSBiKQogewotICAgIGVuY29kZXIgPDwgbV90aW1lVmFsdWUgPDwgbV90aW1lU2Nh
bGUgPDwgbV90aW1lRmxhZ3M7CisgICAgcmV0dXJuIGIgKiBhOwogfQogCi10ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotYm9vbCBNZWRpYVRpbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRp
YVRpbWUmIHRpbWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIE1lZGlhVGltZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVj
b2RlKHRpbWUubV90aW1lVmFsdWUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90
aW1lU2NhbGUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lRmxhZ3MpOwor
ICAgIGVuY29kZXIgPDwgbV92YWx1ZSA8PCBtX3NjYWxlIDw8IG1fZmxhZ3M7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIERlY29kZXI+IGJvb2wgTWVkaWFUaW1lOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0aW1l
Lm1fdmFsdWUpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV9zY2FsZSkKKyAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX2ZsYWdzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8
TWVkaWFUaW1lPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBNZWRpYVRpbWUm
IHRpbWUpIHsgcmV0dXJuIHRpbWUudG9KU09OU3RyaW5nKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nKE1lZGlhVGltZSB0aW1lKSB7IHJldHVybiB0aW1lLnRvSlNPTlN0cmluZygpOyB9
CiB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lUmFuZ2U+IHsKICAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE1lZGlhVGltZVJhbmdlJiByYW5nZSkgeyBy
ZXR1cm4gcmFuZ2UudG9KU09OU3RyaW5nKCk7IH0KIH07CiAKICNpZm5kZWYgTkRFQlVHCi1XVEZf
RVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
TWVkaWFUaW1lJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgTWVkaWFUaW1lKTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPE1lZGlhVGltZTo6RmxhZz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIE1lZGlhVGltZTo6RmxhZywKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpWYWxp
ZCwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpIYXNCZWVuUm91bmRlZCwKKyAgICAgICAgTWVk
aWFUaW1lOjpGbGFnOjpQb3NpdGl2ZUluZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6
Ok5lZ2F0aXZlSW5maW5pdGUsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6SW5kZWZpbml0ZSwK
KyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpEb3VibGVWYWx1ZQorICAgID47Cit9OworCiB9CiAK
IHVzaW5nIFdURjo6TWVkaWFUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25k
cy5oIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCmluZGV4IGQyODJkYmJmNzE1YmU3NDI3ODll
YTEwZjFjY2IyOWFkMTQ1MzU2NGYuLjFhMjk2NGM2ZGVhMTU1ZDkzNmUwNGI1MmUzMzIzZjMyYWYx
NmI0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TZWNvbmRzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM3Miw0
ICszNzMsMyBAQCBpbmxpbmUgYm9vbCBpc2Zpbml0ZShXVEY6OlNlY29uZHMgc2Vjb25kcykKIH0g
Ly8gbmFtZXNwYWNlIHN0ZAogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpzZWNvbmRzX2xpdGVyYWxz
OwotdXNpbmcgV1RGOjpTZWNvbmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmlu
ZGV4IGZkNTU5YjI0MmRkZmZkNWU4ZDhmMTMzZWM0MTNiYTNhYjViNTI2NDcuLmU1YTNjYjYzNWVh
ZjFjYTg4OWRkMjIwOTc1MjVmY2Q0MjhlMzE4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmlt
aXRpdmVzLmgKQEAgLTMyLDkgKzMyLDkgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDQ0OGRkZWUyMTYwZWYxOGNhNWUwNjYxMzkwZTU5OGQ1M2JjNTRkMmEuLjBjOGYz
MzE1MGIxNTM0ODRmZDRjMWM4YWQwMDFhNDlmYmJmYWFmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFy
cmF5TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9V
VUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtOTIyLDcgKzkyMyw3IEBA
IGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpCiAKICAgICAvLyBUaGlzIGJsb2NrZWQg
cG9ydCBsaXN0IG1hdGNoZXMgdGhlIHBvcnQgYmxvY2tpbmcgdGhhdCBNb3ppbGxhIGltcGxlbWVu
dHMuCiAgICAgLy8gU2VlIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbmV0bGliL1Bv
cnRCYW5uaW5nLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgc3RhdGljIGNvbnN0IHVp
bnQxNl90IGJsb2NrZWRQb3J0TGlzdFtdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2
X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7CiAgICAgICAgIDEsICAgIC8vIHRjcG11eAogICAgICAg
ICA3LCAgICAvLyBlY2hvCiAgICAgICAgIDksICAgIC8vIGRpc2NhcmQKQEAgLTEwMDYsMTAgKzEw
MDcsMTAgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICAgICAgNjY5Nywg
Ly8gSVJDK1NTTCBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAgIDEwMDgwLCAvLyBhbWFuZGEKICAg
ICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgYmxvY2tlZFBvcnRTZXQg
eyBibG9ja2VkUG9ydExpc3QgfTsKIAogICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUg
YmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChz
dGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsK
LSAgICBpZiAoIXN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCks
IHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCisgICAgaWYgKCFibG9j
a2VkUG9ydFNldC5jb250YWlucygqcG9ydCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV2FsbFRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dh
bGxUaW1lLmgKaW5kZXggNTQzOGNjMDFiNjFhYTlmNmM3YzQ1NmU1Zjg5MWU0NDY2ZjczM2JiYy4u
MWNlOGQzNzU1NjFkMjliNTg5NjFiZTNmY2YxOTM5NDA0ZmU4ODk4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvV2FsbFRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9DbG9ja1R5cGUu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9HZW5lcmljVGltZU1p
eGluLmg+CiAjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogCkBAIC05OSw1ICsxMDAsMyBAQCBpbmxp
bmUgYm9vbCBpc2Zpbml0ZShXVEY6OldhbGxUaW1lIHRpbWUpCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IHN0ZAotCi11c2luZyBXVEY6OldhbGxUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXIuaAppbmRleCBhZmMzM2YzOGQ0MjMzNWJkOWU2MTI2YTRhNzhhNTA3
MTBkYjI2MDhhLi4yMDdmYTA0NDY5ZmI5NDgzODc2OGU5ZjQxYTJhMzI4OTdmNWNiMDhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaApAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8b3B0aW9uYWw+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9U
aHJlYWRpbmdQT1NJWC5jcHAKaW5kZXggZDkyNDQ5MGQxYjU3ZjNlZTA2ZWU1ZWFkOGEyZDNjMTFj
MjBjYjVkMS4uNmQzNDBlNDZmMmIyODQ0MGIxMTNlZDc3MDllYTM3MTAxYTgyZjg1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvV29yZExvY2suaD4KIAogI2lmIE9TKExJTlVYKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90
aHJlYWRzL1NpZ25hbHMuaAppbmRleCA4YjQwYzE0Yzg0MjNmZDRlY2JmNjM1MDZkNjBiZmYxYzBm
ZDg1NjBmLi45ZjE4NmY2MzU0ODQxYTc1NWFiYzBkODllYzMzZjBiNWZlMGVmODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgT1MoVU5JWCkKIAor
I2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHR1cGxl
PgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
d2luL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNw
cAppbmRleCBkYzI0ODlmZjg5ZThmOWY4OTE0YmM4ZTNmYzI5NjZmNGRlZWU1NzRlLi5hOWY1OTUy
NGFmYzVjYmM3MzZmYmM0ZTgxNmRjZGJlZGM3ZjkwYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFk
aW5nV2luLmNwcApAQCAtOTUsNiArOTUsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAppbmRleCA5MjYyMjE3MGM4YWFkNjk4OWI4YTEy
Y2U0ODM1NmRjNjg3YmY2ZTM1Li5lMjJjYzk0NjZhN2FhMzdkMTc1Nzg3NTVlZTNkNjRiZDBmMmFm
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmNwcAppbmRleCAwNjU5ODQwNjg5ZTRhYmI1MjIwZTViZGQ4MDUyM2Q3NDAyZjRhY2Uy
Li44ODhiZWYzMjM2ODJlYTIyOTk3ZWY2NDA5YTBkNzFkODU1ZmZmZWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5jcHAKQEAgLTMyLDM3ICszMiwyOCBAQAogCiBuYW1lc3BhY2UgUEFMIHsKIAot
c3RhdGljIGJvb2wgQ01UaW1lSGFzRmxhZ3MoY29uc3QgQ01UaW1lJiBjbVRpbWUsIHVpbnQzMl90
IGZsYWdzKQorTWVkaWFUaW1lIHRvTWVkaWFUaW1lKENNVGltZSB0aW1lKQogewotICAgIHJldHVy
biAoY21UaW1lLmZsYWdzICYgZmxhZ3MpID09IGZsYWdzOworICAgIE9wdGlvblNldDxNZWRpYVRp
bWU6OkZsYWc+IGZsYWdzOworICAgIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX1ZhbGlk
KSB7CisgICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6OlZhbGlkKTsKKyAgICAgICAgaWYgKHRp
bWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3NfUG9zaXRpdmVJbmZpbml0eSkKKyAgICAgICAgICAgIGZs
YWdzLmFkZChNZWRpYVRpbWU6OlBvc2l0aXZlSW5maW5pdGUpOworICAgICAgICBlbHNlIGlmICh0
aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHkpCisgICAgICAgICAgICBm
bGFncy5hZGQoTWVkaWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
dGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKQorICAgICAgICAgICAgZmxhZ3Mu
YWRkKE1lZGlhVGltZTo6SW5kZWZpbml0ZSk7CisgICAgfQorICAgIHJldHVybiBNZWRpYVRpbWUo
dGltZS52YWx1ZSwgdGltZS50aW1lc2NhbGUsIGZsYWdzKTsKIH0KIAotTWVkaWFUaW1lIHRvTWVk
aWFUaW1lKGNvbnN0IENNVGltZSYgY21UaW1lKQotewotICAgIHVpbnQzMl90IGZsYWdzID0gMDsK
LSAgICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQpKQotICAg
ICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OlZhbGlkOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhj
bVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19IYXNCZWVuUm91bmRlZCkp
Ci0gICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6SGFzQmVlblJvdW5kZWQ7Ci0gICAgaWYgKENN
VGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX1Bv
c2l0aXZlSW5maW5pdHkpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OlBvc2l0aXZlSW5m
aW5pdGU7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlk
IHwga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHkpKQotICAgICAgICBmbGFncyB8PSBNZWRp
YVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGU7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwg
a0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX0luZGVmaW5pdGUpKQotICAgICAgICBm
bGFncyB8PSBNZWRpYVRpbWU6OkluZGVmaW5pdGU7Ci0KLSAgICByZXR1cm4gTWVkaWFUaW1lKGNt
VGltZS52YWx1ZSwgY21UaW1lLnRpbWVzY2FsZSwgZmxhZ3MpOwotfQotCi1DTVRpbWUgdG9DTVRp
bWUoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpCitDTVRpbWUgdG9DTVRpbWUoTWVkaWFUaW1l
IG1lZGlhVGltZSkKIHsKICAgICBDTVRpbWUgdGltZTsKLQogICAgIGlmIChtZWRpYVRpbWUuaGFz
RG91YmxlVmFsdWUoKSkKICAgICAgICAgdGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyhtZWRp
YVRpbWUudG9Eb3VibGUoKSwgbWVkaWFUaW1lLnRpbWVTY2FsZSgpKTsKICAgICBlbHNlCiAgICAg
ICAgIHRpbWUgPSBDTVRpbWVNYWtlKG1lZGlhVGltZS50aW1lVmFsdWUoKSwgbWVkaWFUaW1lLnRp
bWVTY2FsZSgpKTsKLQogICAgIGlmIChtZWRpYVRpbWUuaXNWYWxpZCgpKQogICAgICAgICB0aW1l
LmZsYWdzIHw9IGtDTVRpbWVGbGFnc19WYWxpZDsKICAgICBpZiAobWVkaWFUaW1lLmhhc0JlZW5S
b3VuZGVkKCkpCkBAIC03MSw3ICs2Miw2IEBAIENNVGltZSB0b0NNVGltZShjb25zdCBNZWRpYVRp
bWUmIG1lZGlhVGltZSkKICAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfUG9zaXRp
dmVJbmZpbml0eTsKICAgICBpZiAobWVkaWFUaW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAg
ICAgICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5OwotCiAgICAg
cmV0dXJuIHRpbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZm
b3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKaW5kZXggYjNkYmUxN2FhOWJj
MTI1MWRjZTJlYzhhZGVlN2NiODQ5NDc5YmY3MC4uYTJiY2RhZTlmOGU5OWQwZjA0ZTNmM2MzZWQy
MGEzZjM2YTI5MDZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5k
YXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKQEAgLTMyLDggKzMyLDggQEAK
IAogbmFtZXNwYWNlIFBBTCB7CiAKLVBBTF9FWFBPUlQgQ01UaW1lIHRvQ01UaW1lKGNvbnN0IE1l
ZGlhVGltZSYpOwotUEFMX0VYUE9SVCBNZWRpYVRpbWUgdG9NZWRpYVRpbWUoY29uc3QgQ01UaW1l
Jik7CitQQUxfRVhQT1JUIENNVGltZSB0b0NNVGltZShNZWRpYVRpbWUpOworUEFMX0VYUE9SVCBN
ZWRpYVRpbWUgdG9NZWRpYVRpbWUoQ01UaW1lKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCAwZTFhZDcyNDVmZTE2
ZTFlOTZlM2RhMWNiNTg0YjlhNGE2ZDg5ZjNiLi44NDQ2ZGI5ODU1MWUwYzUzODJhOTZmZjg0NzFm
YmI2NzIzMTBjNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTExOSwxMCArMTE5LDEwIEBAIHN0YXRpYyBpbmxpbmUgR2Fw
TGVuZ3RoIGJsZW5kRnVuYyhjb25zdCBHYXBMZW5ndGgmIGZyb20sIGNvbnN0IEdhcExlbmd0aCYg
dG8sIGNvCiAgICAgcmV0dXJuIGJsZW5kKGZyb20ubGVuZ3RoKCksIHRvLmxlbmd0aCgpLCBjb250
ZXh0LCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgVGFiU2l6
ZSBibGVuZEZ1bmMoY29uc3QgVGFiU2l6ZSYgZnJvbSwgY29uc3QgVGFiU2l6ZSYgdG8sIGNvbnN0
IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQorc3RhdGljIGlubGluZSBUYWJT
aXplIGJsZW5kRnVuYyhUYWJTaXplIGZyb20sIFRhYlNpemUgdG8sIGNvbnN0IENTU1Byb3BlcnR5
QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8gYmxlbmRlZFZhbHVlID0gYmxl
bmQoZnJvbS52YWx1ZSgpLCB0by52YWx1ZSgpLCBjb250ZXh0KTsKLSAgICByZXR1cm4geyBibGVu
ZGVkVmFsdWUgPCAwID8gMCA6IGJsZW5kZWRWYWx1ZSwgZnJvbS5pc1NwYWNlcygpID8gU3BhY2VW
YWx1ZVR5cGUgOiBMZW5ndGhWYWx1ZVR5cGUgfTsKKyAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9IGJs
ZW5kKGZyb20udmFsdWUsIHRvLnZhbHVlLCBjb250ZXh0KTsKKyAgICByZXR1cm4geyBibGVuZGVk
VmFsdWUgPCAwID8gMCA6IGJsZW5kZWRWYWx1ZSwgZnJvbS5pc1NwYWNlcyA/IFRhYlNpemU6OlNw
YWNlcyA6IFRhYlNpemU6Okxlbmd0aCB9OwogfQogCiBzdGF0aWMgaW5saW5lIExlbmd0aFNpemUg
YmxlbmRGdW5jKGNvbnN0IExlbmd0aFNpemUmIGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRvLCBj
b25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKQEAgLTk3OCwxMCArOTc4
LDkgQEAgcHJpdmF0ZToKICAgICAvLyBpdCdzIG9ubHkgcG9zc2libGUgaWYgdGhleSdyZSBib3Ro
IG5vdCBhdXRvLgogICAgIGJvb2wgY2FuSW50ZXJwb2xhdGUoY29uc3QgUmVuZGVyU3R5bGUmIGZy
b20sIGNvbnN0IFJlbmRlclN0eWxlJiB0bywgQ29tcG9zaXRlT3BlcmF0aW9uKSBjb25zdCBmaW5h
bAogICAgIHsKLSAgICAgICAgYm9vbCBmcm9tSXNBdXRvID0gdmFsdWUoZnJvbSkueCgpLmlzQXV0
bygpICYmIHZhbHVlKGZyb20pLnkoKS5pc0F1dG8oKTsKLSAgICAgICAgYm9vbCB0b0lzQXV0byA9
IHZhbHVlKHRvKS54KCkuaXNBdXRvKCkgJiYgdmFsdWUodG8pLnkoKS5pc0F1dG8oKTsKLQotICAg
ICAgICByZXR1cm4gKCFmcm9tSXNBdXRvICYmICF0b0lzQXV0byk7IAorICAgICAgICBib29sIGZy
b21Jc0F1dG8gPSB2YWx1ZShmcm9tKS54LmlzQXV0bygpICYmIHZhbHVlKGZyb20pLnkuaXNBdXRv
KCk7CisgICAgICAgIGJvb2wgdG9Jc0F1dG8gPSB2YWx1ZSh0bykueC5pc0F1dG8oKSAmJiB2YWx1
ZSh0bykueS5pc0F1dG8oKTsKKyAgICAgICAgcmV0dXJuICFmcm9tSXNBdXRvICYmICF0b0lzQXV0
bzsKICAgICB9CiB9OwogCkBAIC0xMjkyLDIwICsxMjkxLDIwIEBAIHN0YXRpYyBpbmxpbmUgc2l6
ZV90IHNoYWRvd0xpc3RMZW5ndGgoY29uc3QgU2hhZG93RGF0YSogc2hhZG93KQogICAgIHJldHVy
biBjb3VudDsKIH0KIAotc3RhdGljIGlubGluZSBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dGb3JC
bGVuZGluZyhjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90
aGVyU2hhZG93KQorc3RhdGljIGlubGluZSBjb25zdCBTaGFkb3dEYXRhJiBzaGFkb3dGb3JCbGVu
ZGluZyhjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVy
U2hhZG93KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0
U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgo
TGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExl
bmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgZmFsc2UsIENvbG9yOjp0cmFu
c3BhcmVudEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVm
YXVsdEluc2V0U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQp
LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCBmYWxzZSwgQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dE
YXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3Ro
VHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5
cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1h
bCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBv
aW50KExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkp
LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBT
aGFkb3dTdHlsZTo6SW5zZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoTGVuZ3Ro
UG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBM
ZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFk
b3dTdHlsZTo6Tm9ybWFsLCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKExl
bmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0g
fSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
U2hhZG93U3R5bGU6Okluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hhZG93
RGF0YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpG
aXhlZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2Vi
S2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBM
ZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChM
ZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5z
cGFyZW50QmxhY2spOwogCiAgICAgaWYgKHNyY1NoYWRvdykKLSAgICAgICAgcmV0dXJuIHNyY1No
YWRvdzsKKyAgICAgICAgcmV0dXJuICpzcmNTaGFkb3c7CiAKICAgICBpZiAob3RoZXJTaGFkb3ct
PnN0eWxlKCkgPT0gU2hhZG93U3R5bGU6Okluc2V0KQotICAgICAgICByZXR1cm4gb3RoZXJTaGFk
b3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0
YS5nZXQoKSA6ICZkZWZhdWx0SW5zZXRTaGFkb3dEYXRhLmdldCgpOworICAgICAgICByZXR1cm4g
b3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyBkZWZhdWx0SW5zZXRXZWJLaXRCb3hT
aGFkb3dEYXRhLmdldCgpIDogZGVmYXVsdEluc2V0U2hhZG93RGF0YS5nZXQoKTsKIAotICAgIHJl
dHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0V2ViS2l0Qm94
U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZhdWx0U2hhZG93RGF0YS5nZXQoKTsKKyAgICByZXR1cm4g
b3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyBkZWZhdWx0V2ViS2l0Qm94U2hhZG93
RGF0YS5nZXQoKSA6IGRlZmF1bHRTaGFkb3dEYXRhLmdldCgpOwogfQogCiBjbGFzcyBQcm9wZXJ0
eVdyYXBwZXJTaGFkb3cgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFz
ZSB7CkBAIC0xNDI4LDExICsxNDI3LDExIEBAIHByaXZhdGU6CiAgICAgICAgIFNoYWRvd0RhdGEq
IGxhc3RTaGFkb3cgPSBudWxscHRyOwogCiAgICAgICAgIHdoaWxlIChzaGFkb3dBIHx8IHNoYWRv
d0IpIHsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0Zv
ckJsZW5kaW5nKHNoYWRvd0EsIHNoYWRvd0IpOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0
YSogZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CisgICAg
ICAgICAgICBhdXRvJiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dBLCBzaGFk
b3dCKTsKKyAgICAgICAgICAgIGF1dG8mIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNo
YWRvd0IsIHNoYWRvd0EpOwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0
YT4gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYyhzcmNTaGFkb3csIGRzdFNoYWRvdywgY29udGV4
dCk7Ci0gICAgICAgICAgICBTaGFkb3dEYXRhKiBibGVuZGVkU2hhZG93UHRyID0gYmxlbmRlZFNo
YWRvdy5nZXQoKTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYygm
c3JjU2hhZG93LCAmZHN0U2hhZG93LCBjb250ZXh0KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRl
ZFNoYWRvd1B0ciA9IGJsZW5kZWRTaGFkb3cuZ2V0KCk7CiAKICAgICAgICAgICAgIGlmICghbGFz
dFNoYWRvdykKICAgICAgICAgICAgICAgICBuZXdTaGFkb3dEYXRhID0gV1RGTW92ZShibGVuZGVk
U2hhZG93KTsKQEAgLTE0NDEsOCArMTQ0MCw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGxh
c3RTaGFkb3cgPSBibGVuZGVkU2hhZG93UHRyOwogCi0gICAgICAgICAgICBzaGFkb3dBID0gc2hh
ZG93QSA/IHNoYWRvd0EtPm5leHQoKSA6IDA7Ci0gICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93
QiA/IHNoYWRvd0ItPm5leHQoKSA6IDA7CisgICAgICAgICAgICBzaGFkb3dBID0gc2hhZG93QSA/
IHNoYWRvd0EtPm5leHQoKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93
QiA/IHNoYWRvd0ItPm5leHQoKSA6IG51bGxwdHI7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1
cm4gbmV3U2hhZG93RGF0YTsKQEAgLTE0NzEsMTMgKzE0NzAsMTQgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBpbnQgbWF4TGVuZ3RoID0gc3RkOjptYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOwogICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBj
b25zdCBTaGFkb3dEYXRhKiBmcm9tU2hhZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93
c1tpXSA6IDA7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiB0b1NoYWRvdyA9IGkgPCB0
b0xlbmd0aCA/IHRvU2hhZG93c1tpXSA6IDA7CisgICAgICAgICAgICBhdXRvIGZyb21TaGFkb3cg
PSBpIDwgZnJvbUxlbmd0aCA/IGZyb21TaGFkb3dzW2ldIDogbnVsbHB0cjsKKyAgICAgICAgICAg
IGF1dG8gdG9TaGFkb3cgPSBpIDwgdG9MZW5ndGggPyB0b1NoYWRvd3NbaV0gOiBudWxscHRyOwor
CisgICAgICAgICAgICBhdXRvJiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hh
ZG93LCB0b1NoYWRvdyk7CisgICAgICAgICAgICBhdXRvJiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JC
bGVuZGluZyh0b1NoYWRvdywgZnJvbVNoYWRvdyk7CiAKLSAgICAgICAgICAgIGNvbnN0IFNoYWRv
d0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKGZyb21TaGFkb3csIHRvU2hhZG93
KTsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJs
ZW5kaW5nKHRvU2hhZG93LCBmcm9tU2hhZG93KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNo
YWRvdyA9IGJsZW5kRnVuYygmc3JjU2hhZG93LCAmZHN0U2hhZG93LCBjb250ZXh0KTsKIAotICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBibGVu
ZEZ1bmMoc3JjU2hhZG93LCBkc3RTaGFkb3csIGNvbnRleHQpOwogICAgICAgICAgICAgLy8gSW5z
ZXJ0IGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIuCiAgICAg
ICAgICAgICBibGVuZGVkU2hhZG93LT5zZXROZXh0KFdURk1vdmUobmV3U2hhZG93RGF0YSkpOwog
ICAgICAgICAgICAgbmV3U2hhZG93RGF0YSA9IFdURk1vdmUoYmxlbmRlZFNoYWRvdyk7CkBAIC0y
MzQ4LDE4ICsyMzQ4LDE4IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotY2xhc3MgVGFiU2l6ZVBy
b3BlcnR5V3JhcHBlciBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgVGFiU2l6
ZSY+IHsKK2NsYXNzIFRhYlNpemVQcm9wZXJ0eVdyYXBwZXIgZmluYWwgOiBwdWJsaWMgUHJvcGVy
dHlXcmFwcGVyPFRhYlNpemU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBUYWJTaXplUHJvcGVydHlXcmFwcGVyKCkKLSAgICAgICAgOiBQcm9wZXJ0eVdyYXBw
ZXI8Y29uc3QgVGFiU2l6ZSY+KENTU1Byb3BlcnR5VGFiU2l6ZSwgJlJlbmRlclN0eWxlOjp0YWJT
aXplLCAmUmVuZGVyU3R5bGU6OnNldFRhYlNpemUpCisgICAgICAgIDogUHJvcGVydHlXcmFwcGVy
PFRhYlNpemU+KENTU1Byb3BlcnR5VGFiU2l6ZSwgJlJlbmRlclN0eWxlOjp0YWJTaXplLCAmUmVu
ZGVyU3R5bGU6OnNldFRhYlNpemUpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29s
IGNhbkludGVycG9sYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHls
ZSYgdG8sIENvbXBvc2l0ZU9wZXJhdGlvbikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJl
dHVybiB2YWx1ZShmcm9tKS5pc1NwYWNlcygpID09IHZhbHVlKHRvKS5pc1NwYWNlcygpOworICAg
ICAgICByZXR1cm4gdmFsdWUoZnJvbSkuaXNTcGFjZXMgPT0gdmFsdWUodG8pLmlzU3BhY2VzOwog
ICAgIH0KIAogICAgIHZvaWQgYmxlbmQoUmVuZGVyU3R5bGUmIGRlc3RpbmF0aW9uLCBjb25zdCBS
ZW5kZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0
eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNjc4NDc3ODQ3
Y2M2M2YwM2MzMDMyYThkMmEyNGFhOTI1NjZkOTcyZC4uODZjZDY4NDU3M2Q2MTczOTQyMjVlMDE0
Y2M1NGFhYWM5ZmM1YWFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE1MzMsMTQgKzE1MzMsMTQgQEAgc3RhdGljIEVs
ZW1lbnQqIHN0eWxlRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHZhbHVlRm9yUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMZW5n
dGhQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlRm9yTGVuZ3RoKHBvc2l0aW9uLngoKSwgc3R5bGUpKTsKLSAgICBsaXN0LT5hcHBlbmQoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3NpdGlvbi55KCksIHN0eWxlKSk7CisgICAg
bGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueCwg
c3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChwb3NpdGlvbi55LCBzdHlsZSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCiBzdGF0aWMgUmVm
PENTU1ZhbHVlPiB2YWx1ZUZvclBvc2l0aW9uT3JBdXRvKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgTGVuZ3RoUG9pbnQmIHBvc2l0aW9uKQogewotICAgIGlmIChwb3NpdGlvbi54KCku
aXNBdXRvKCkgJiYgcG9zaXRpb24ueSgpLmlzQXV0bygpKQorICAgIGlmIChwb3NpdGlvbi54Lmlz
QXV0bygpICYmIHBvc2l0aW9uLnkuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogCiAg
ICAgcmV0dXJuIHZhbHVlRm9yUG9zaXRpb24oc3R5bGUsIHBvc2l0aW9uKTsKQEAgLTE5MzYsNyAr
MTkzNiw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byogY29udGVudERhdGEgPSBzdHlsZS5j
b250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4
dCgpKSB7CiAgICAgICAgIGlmIChpczxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkp
Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25j
YXN0PENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRpZmll
cigpLCBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFNRSkpOworICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERh
dGE+KCpjb250ZW50RGF0YSkuY291bnRlcigpLmlkZW50aWZpZXIsIENTU1VuaXRUeXBlOjpDU1Nf
Q09VTlRFUl9OQU1FKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpj
b250ZW50RGF0YSkpCiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1hZ2VDb250
ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAgICBlbHNl
IGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCkBAIC0zMDI5LDcgKzMwMjks
NyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJv
cGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAg
ICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS5jb2x1bW5XaWR0aCgpLCBzdHls
ZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJTaXplOgotICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50YWJTaXplKCkud2lkdGhJblBpeGVscygx
LjApLCBzdHlsZS50YWJTaXplKCkuaXNTcGFjZXMoKSA/IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVS
IDogQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHN0eWxlLnRhYlNpemUoKS53aWR0aEluUGl4ZWxzKDEuMCksIHN0eWxlLnRh
YlNpemUoKS5pc1NwYWNlcyA/IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSIDogQ1NTVW5pdFR5cGU6
OkNTU19QWCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6IHsKICAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Q7CiAgICAgICAgICAgICBhdXRvKiBjdXJzb3JzID0g
c3R5bGUuY3Vyc29ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1
bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAppbmRl
eCBmNWJjOGNhOTZiOTBkNjA1NTBkY2E1ODIxZTgzODU0OWE0YjJmN2VmLi5kNmExMmNiYjk2OTIy
NzM4NTQyZjRlMDk3NDczZTdiOGVjN2RlNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVu
Y3Rpb25zLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIExheW91dFNpemUgc2l6ZUZvckxlbmd0aFNp
emUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoLCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtCiAK
IExheW91dFBvaW50IHBvaW50Rm9yTGVuZ3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0
aFBvaW50LCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtVmFsdWUpCiB7Ci0gICAgcmV0dXJuIHsg
dmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueCgpLCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZh
bHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LnkoKSwgbWF4aW11bVZhbHVlLmhlaWdodCgpKSB9Owor
ICAgIHJldHVybiB7IHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngsIG1heGltdW1WYWx1ZS53
aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSwgbWF4aW11bVZhbHVlLmhlaWdo
dCgpKSB9OwogfQogCiBGbG9hdFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5n
dGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCkBAIC0xMzMsNyAr
MTMzLDcgQEAgRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6
ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRTaXplJgogCiBGbG9hdFBvaW50IGZsb2F0UG9pbnRG
b3JMZW5ndGhQb2ludChjb25zdCBMZW5ndGhQb2ludCYgbGVuZ3RoUG9pbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgYm94U2l6ZSkKIHsKLSAgICByZXR1cm4geyBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0
aFBvaW50LngoKSwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQ
b2ludC55KCksIGJveFNpemUuaGVpZ2h0KCkpIH07CisgICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZv
ckxlbmd0aChsZW5ndGhQb2ludC54LCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGxlbmd0aFBvaW50LnksIGJveFNpemUuaGVpZ2h0KCkpIH07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKaW5k
ZXggN2VlMzBhM2UxMzEyOTRhM2Q1NWFjZWY0Y2FhMGE3MWMzZDEwYWQ1OC4uNmZlYzM3NDUwYWMw
YWJmZWQwY2E4MDc1MzkwZWUyNjk4NGNhYzBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheVN0eWxlLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBw
cmVzZXJ2ZU5ld2xpbmUoKSBjb25zdDsKICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSgpIGNv
bnN0OwogCi0gICAgY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFi
U2l6ZTsgfQorICAgIFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6ZTsg
fQogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlclN0eWxl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1YjhiMzkwYjQxMDAzMmRjODc5N2Q4ZWJk
YjczZGIxZjUwZTcyYTVhLi5hYzkyMjkzMWE4NjhlMGRkMTc5ZWFmYzExNDgxZWFkZDIwZTNiMDQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI3OCw2ICsyNzgsNyBAQAogI2luY2x1ZGUg
PHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KQEAgLTEyMjMsMzIgKzEyMjQsMzggQEAg
c3RydWN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSB7CiAgICAgVUNoYXIzMiBtYXhpbXVtOwogfTsK
IAotI2lmIEFTU0VSVF9FTkFCTEVECi0KLXN0YXRpYyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29u
c3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBhLCBjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2Um
IGIpCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFVuaWNvZGVDb2RlUG9pbnRSYW5n
ZSBhLCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgYikKIHsKLSAgICBBU1NFUlQoYS5taW5pbXVtIDw9
IGEubWF4aW11bSk7Ci0gICAgQVNTRVJUKGIubWluaW11bSA8PSBiLm1heGltdW0pOworICAgIEFT
U0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChhLm1pbmltdW0gPD0gYS5tYXhpbXVtKTsKKyAg
ICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoYi5taW5pbXVtIDw9IGIubWF4aW11bSk7
CiAgICAgcmV0dXJuIGEubWF4aW11bSA8IGIubWluaW11bTsKIH0KIAotI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECi0KLXN0YXRpYyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5pY29kZUNv
ZGVQb2ludFJhbmdlJiBhLCBVQ2hhcjMyIGIpCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0
b3I8KFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBhLCBVQ2hhcjMyIGIpCiB7Ci0gICAgQVNTRVJUKGEu
bWluaW11bSA8PSBhLm1heGltdW0pOworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVY
VChhLm1pbmltdW0gPD0gYS5tYXhpbXVtKTsKICAgICByZXR1cm4gYS5tYXhpbXVtIDwgYjsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIG9wZXJhdG9yPChVQ2hhcjMyIGEsIGNvbnN0IFVuaWNvZGVD
b2RlUG9pbnRSYW5nZSYgYikKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoVUNoYXIz
MiBhLCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgYikKIHsKLSAgICBBU1NFUlQoYi5taW5pbXVtIDw9
IGIubWF4aW11bSk7CisgICAgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKGIubWluaW11
bSA8PSBiLm1heGltdW0pOwogICAgIHJldHVybiBhIDwgYi5taW5pbXVtOwogfQogCitzdGF0aWMg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShVbmljb2RlQ29kZVBvaW50UmFuZ2UgYSwgVUNoYXIz
MiBiKQoreworICAgIHJldHVybiAhKGEgPCBiKSAmJiAhKGIgPCBhKTsKK30KKworc3RhdGljIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oVUNoYXIzMiBhLCBVbmljb2RlQ29kZVBvaW50UmFuZ2Ug
YikKK3sKKyAgICByZXR1cm4gYiA9PSBhOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3Rl
bnRpYWxDdXN0b21FbGVtZW50TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKIHsKLSAg
ICBzdGF0aWMgY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlIHJhbmdlc1tdID0geworICAgIHN0
YXRpYyBjb25zdGV4cHIgVW5pY29kZUNvZGVQb2ludFJhbmdlIHJhbmdlc1tdID0gewogICAgICAg
ICB7ICctJywgJy4nIH0sCiAgICAgICAgIHsgJzAnLCAnOScgfSwKICAgICAgICAgeyAnXycsICdf
JyB9LApAQCAtMTI2Nyw5ICsxMjc0LDggQEAgc3RhdGljIGlubGluZSBib29sIGlzUG90ZW50aWFs
Q3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgICAgIHsg
MHhGREYwLCAweEZGRkQgfSwKICAgICAgICAgeyAweDEwMDAwLCAweEVGRkZGIH0sCiAgICAgfTsK
LQotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHJhbmdlcyksIHN0ZDo6ZW5k
KHJhbmdlcykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4ocmFu
Z2VzKSwgc3RkOjplbmQocmFuZ2VzKSwgY2hhcmFjdGVyKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNvcnRlZEFycmF5U2V0IHNldCB7IHJhbmdlcyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMo
Y2hhcmFjdGVyKTsKIH0KIAogQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3Vt
ZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcAppbmRleCA5YTM2NzU5NmRk
MDI2OWQ1OWY2M2ViMGY2Yzg5ZTM0ZGQ4MjE4MmQ5Li5iNWY0Y2MwNWUyNzY3YTE4YzY3M2QwOGUz
NGNkMjIwNjljNTgxOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGhQb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3Bw
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTGVuZ3RoUG9pbnQmIHNpemUpCiB7Ci0gICAg
cmV0dXJuIHRzIDw8IHNpemUueCgpIDw8ICIgIiA8PCBzaXplLnkoKTsKKyAgICByZXR1cm4gdHMg
PDwgc2l6ZS54IDw8ICIgIiA8PCBzaXplLnk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oCmluZGV4IDgxMjA1YmIxM2RkYTUwMzNi
MmM5MGZiZWEwNTMwYzJmNTZmOTkzNmIuLjk4YmRjY2EwNzFmOGMyMTliMmNiYTkwYmNiYzAxZjMy
NWI2MjIyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuaApAQCAtMzIsNDQg
KzMyLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBCbGVuZGluZ0NvbnRleHQ7CiAK
IHN0cnVjdCBMZW5ndGhQb2ludCB7Ci1wdWJsaWM6Ci0gICAgTGVuZ3RoUG9pbnQoKQotICAgIHsK
LSAgICB9Ci0gICAgCi0gICAgTGVuZ3RoUG9pbnQoTGVuZ3RoIHgsIExlbmd0aCB5KQotICAgICAg
ICA6IG1feChXVEZNb3ZlKHgpKQotICAgICAgICAsIG1feShXVEZNb3ZlKHkpKQotICAgIHsKLSAg
ICB9CisgICAgTGVuZ3RoIHg7CisgICAgTGVuZ3RoIHk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExl
bmd0aFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ggPT0gby5t
X3ggJiYgbV95ID09IG8ubV95OworICAgICAgICByZXR1cm4geCA9PSBvdGhlci54ICYmIHkgPT0g
b3RoZXIueTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQm
IG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aFBvaW50JiBvdGhlcikg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAgICAgICByZXR1
cm4geCAhPSBvdGhlci54IHx8IHkgIT0gb3RoZXIueTsKICAgICB9CiAKLSAgICB2b2lkIHNldFgo
TGVuZ3RoIHgpIHsgbV94ID0gV1RGTW92ZSh4KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNv
bnN0IHsgcmV0dXJuIG1feDsgfQotCi0gICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IG1feSA9IFdU
Rk1vdmUoeSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0K
LQotICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbV94LmlzWmVybygpICYmIG1feS5p
c1plcm8oKTsgfQotCi1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIHRv
IHBhY2sgdGhlIHR3byBMZW5ndGhzIHRvZ2V0aGVyIGJldHRlciBzb21laG93ICh0byBhdm9pZCBw
YWRkaW5nIGJldHdlZW4gdGhlbSkuCi0gICAgTGVuZ3RoIG1feDsKLSAgICBMZW5ndGggbV95Owor
ICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4geC5pc1plcm8oKSAmJiB5LmlzWmVybygp
OyB9CiB9OwogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgYmxlbmQoY29uc3QgTGVuZ3RoUG9pbnQmIGZy
b20sIGNvbnN0IExlbmd0aFBvaW50JiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KQogewotICAgIHJldHVybiBMZW5ndGhQb2ludChibGVuZChmcm9tLngoKSwgdG8ueCgpLCBjb250
ZXh0KSwgYmxlbmQoZnJvbS55KCksIHRvLnkoKSwgY29udGV4dCkpOworICAgIHJldHVybiB7IGJs
ZW5kKGZyb20ueCwgdG8ueCwgY29udGV4dCksIGJsZW5kKGZyb20ueSwgdG8ueSwgY29udGV4dCkg
fTsKIH0KIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNv
bnN0IExlbmd0aFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuaAppbmRleCBiYWJlOTY2ODRlN2MxNWNiOWNhOTY5M2JhMzU2MGE4YWEzZDJj
OTZjLi5lOWYyNjhjMTBkYWI0Mjg0Njc5OGE4NmQ5Zjk5MmRjNWE1ZmI4MmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTE2NSw4ICsx
NjUsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MoKSBj
b25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7IH0KICAgICBmbG9hdCBz
cGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5zcGFjZVdpZHRoKCkgKyBt
X2xldHRlclNwYWNpbmc7IH0KLSAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBGb250JiwgY29uc3Qg
VGFiU2l6ZSYsIGZsb2F0KSBjb25zdDsKLSAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBUYWJTaXpl
JiB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJpbWFy
eUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CisgICAgZmxvYXQgdGFiV2lkdGgoY29uc3Qg
Rm9udCYsIFRhYlNpemUsIGZsb2F0KSBjb25zdDsKKyAgICBmbG9hdCB0YWJXaWR0aChUYWJTaXpl
IHRhYlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdCB7IHJldHVybiB0YWJXaWR0aChwcmltYXJ5
Rm9udCgpLCB0YWJTaXplLCBwb3NpdGlvbik7IH0KICAgICBib29sIGhhc1ZhbGlkQXZlcmFnZUNo
YXJXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJs
ZShmbG9hdCAmd2lkdGgpIGNvbnN0OyAvLyByZXR1cm5zIHRydWUgb24gc3VjY2VzcwogCkBAIC0z
NzAsNyArMzcwLDcgQEAgaW5saW5lIEZvbnRTZWxlY3RvciogRm9udENhc2NhZGU6OmZvbnRTZWxl
Y3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZm9udHMgPyBtX2ZvbnRzLT5mb250U2VsZWN0b3Io
KSA6IG51bGxwdHI7CiB9CiAKLWlubGluZSBmbG9hdCBGb250Q2FzY2FkZTo6dGFiV2lkdGgoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNv
bnN0CitpbmxpbmUgZmxvYXQgRm9udENhc2NhZGU6OnRhYldpZHRoKGNvbnN0IEZvbnQmIGZvbnQs
IFRhYlNpemUgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgZmxvYXQgYmFz
ZVRhYldpZHRoID0gdGFiU2l6ZS53aWR0aEluUGl4ZWxzKGZvbnQuc3BhY2VXaWR0aCgpKTsKICAg
ICBpZiAoIWJhc2VUYWJXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyLmNwcAppbmRleCA3NTQzZjQ3NWEyN2E2NTE1OTA2Y2MyMmViM2Y2MGE5
MTQwOTI5MGJhLi4wNzU2MTk0Y2YyZjVlOGI5ZmJiMjdhMTBjZTc4YTJlMThjMjNjZmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBA
IC03NCw3ICs3NCw4IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0
cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJT
aXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6
ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYg
KGJ1ZmZlclNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICB1
aW50MzJfdCBtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICBp
ZiAoYnVmZmVyU2l6ZSA+IG1heCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBh
dXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKaW5kZXggMzRhNzA4MTA2MjhhYzk1MjdmNGY1Y2YwNDc1
ZDgzNWI3Y2MyZWFjZi4uMzY2NDJmOGE4YzQ3NDA3ZWFjZTkzNTEyMjgzNjBmMmM4N2Q3YzIyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaApAQCAtMjksNDkg
KzI5LDM5IEBACiAKICNwcmFnbWEgb25jZQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCi1lbnVtIFRhYlNpemVWYWx1ZVR5cGUgewotICAg
IExlbmd0aFZhbHVlVHlwZSwKLSAgICBTcGFjZVZhbHVlVHlwZSwKLX07CituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBUYWJTaXplIHsKLSAgICBUYWJTaXplKGZsb2F0IG51bU9yTGVuZ3Ro
LCBUYWJTaXplVmFsdWVUeXBlIGlzU3BhY2VzID0gU3BhY2VWYWx1ZVR5cGUpCi0gICAgICAgIDog
bV92YWx1ZShudW1Pckxlbmd0aCkKLSAgICAgICAgLCBtX2lzU3BhY2VzKGlzU3BhY2VzKQotICAg
IHsKLSAgICB9Ci0KLSAgICBib29sIGlzU3BhY2VzKCkgY29uc3QKKyAgICBlbnVtIFZhbHVlVHlw
ZSB7IExlbmd0aCwgU3BhY2VzIH07CisgICAgVGFiU2l6ZShmbG9hdCBudW1Pckxlbmd0aCwgVmFs
dWVUeXBlIHR5cGUgPSBTcGFjZXMpCisgICAgICAgIDogdmFsdWUobnVtT3JMZW5ndGgpCisgICAg
ICAgICwgaXNTcGFjZXModHlwZSA9PSBTcGFjZXMpCiAgICAgewotICAgICAgICByZXR1cm4gbV9p
c1NwYWNlczsKICAgICB9CiAKICAgICBmbG9hdCB3aWR0aEluUGl4ZWxzKGZsb2F0IHNwYWNlV2lk
dGgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9pc1NwYWNlcyA/IG1fdmFsdWUgKiBz
cGFjZVdpZHRoIDogbV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGlzU3BhY2VzID8gdmFsdWUgKiBz
cGFjZVdpZHRoIDogdmFsdWU7CiAgICAgfQogCi0gICAgZmxvYXQgdmFsdWUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICAgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1ZTsgfQogCi0gICAgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlKCk7IH0KLQotICAgIGZsb2F0IG1fdmFsdWU7Ci0gICAgYm9vbCBt
X2lzU3BhY2VzOworICAgIGZsb2F0IHZhbHVlOworICAgIGJvb2wgaXNTcGFjZXM7CiB9OwogCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRhYlNpemUmIGEsIGNvbnN0IFRhYlNpemUmIGIp
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFRhYlNpemUgYSwgVGFiU2l6ZSBiKQogewotICAgIHJl
dHVybiAoYS5tX3ZhbHVlID09IGIubV92YWx1ZSkgJiYgKGEubV9pc1NwYWNlcyA9PSBiLm1faXNT
cGFjZXMpOworICAgIHJldHVybiBhLnZhbHVlID09IGIudmFsdWUgJiYgYS5pc1NwYWNlcyA9PSBi
LmlzU3BhY2VzOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRhYlNpemUmIGEs
IGNvbnN0IFRhYlNpemUmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFRhYlNpemUgYSwgVGFi
U2l6ZSBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKK2lubGluZSBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgVGFiU2l6ZSBzaXplKSB7IHJldHVybiBz
dHJlYW0gPDwgc2l6ZS52YWx1ZSA8PCAoc2l6ZS5pc1NwYWNlcyA/ICIgc3BhY2VzIiA6ICIiKTsg
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UZXh0UnVuLmgKaW5kZXggMWQ0N2Q2NWQ2ODI0NjI2ZTE1OTI4ODAwZjQ2OTdjMjc2Y2Iy
NzYzNC4uYTIwOTZjZjlkZTM1ZThhNWIzOTNhN2ZhYzBhNDgzZDU3MWM0ZjFjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtOTUsOCArOTUsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsR2x5cGhTdHJldGNoKGZsb2F0IHNjYWxlKSB7
IG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaCA9IHNjYWxlOyB9CiAKICAgICBib29sIGFsbG93VGFi
cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dUYWJzOyB9Ci0gICAgY29uc3QgVGFiU2l6ZSYgdGFi
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6ZTsgfQotICAgIHZvaWQgc2V0VGFiU2l6ZShi
b29sLCBjb25zdCBUYWJTaXplJik7CisgICAgVGFiU2l6ZSB0YWJTaXplKCkgY29uc3QgeyByZXR1
cm4gbV90YWJTaXplOyB9CisgICAgdm9pZCBzZXRUYWJTaXplKGJvb2wsIFRhYlNpemUpOwogCiAg
ICAgZmxvYXQgeFBvcygpIGNvbnN0IHsgcmV0dXJuIG1feHBvczsgfQogICAgIHZvaWQgc2V0WFBv
cyhmbG9hdCB4UG9zKSB7IG1feHBvcyA9IHhQb3M7IH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fZGlzYWJsZVNwYWNpbmcgOiAxOwogfTsKIAotaW5saW5lIHZv
aWQgVGV4dFJ1bjo6c2V0VGFiU2l6ZShib29sIGFsbG93LCBjb25zdCBUYWJTaXplJiBzaXplKQor
aW5saW5lIHZvaWQgVGV4dFJ1bjo6c2V0VGFiU2l6ZShib29sIGFsbG93LCBUYWJTaXplIHNpemUp
CiB7CiAgICAgbV9hbGxvd1RhYnMgPSBhbGxvdzsKICAgICBtX3RhYlNpemUgPSBzaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5k
ZXggOTJmNDJiNjc3ZDUzZGQ5YzZhM2Y2YmQ2ZTNkOTFjYmFjNjZhYTRiOS4uOWRiMTExMTI4YTFm
YjdjZWZlYTRhZDAyYWVjMTFiYTVlMjkxZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCkBAIC0yNywxMyArMjcsMTQgQEAKICNp
bmNsdWRlICJWUDlVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgYm9vbCBpc1ZhbGlkVlBMZXZlbCh1aW50OF90IGxldmVsKQogewotICAgIGNvbnN0ZXhwciB1
aW50OF90IHZhbGlkTGV2ZWxzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZh
bGlkTGV2ZWxzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8xLAog
ICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfMV8xLAogICAgICAgICBWUENvbmZp
Z3VyYXRpb25MZXZlbDo6TGV2ZWxfMiwKQEAgLTQ5LDE0ICs1MCwxMyBAQCBzdGF0aWMgYm9vbCBp
c1ZhbGlkVlBMZXZlbCh1aW50OF90IGxldmVsKQogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZl
bDo6TGV2ZWxfNl8xLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfNl8yLAog
ICAgIH07Ci0KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZExldmVs
cyksIHN0ZDo6ZW5kKHZhbGlkTGV2ZWxzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFy
Y2goc3RkOjpiZWdpbih2YWxpZExldmVscyksIHN0ZDo6ZW5kKHZhbGlkTGV2ZWxzKSwgbGV2ZWwp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRMZXZlbHMg
fTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKGxldmVsKTsKIH0KIAogc3RhdGljIGJvb2wgaXNW
YWxpZFZQQ29sb3JQcmltYXJpZXModWludDhfdCBjb2xvclByaW1hcmllcykKIHsKLSAgICBjb25z
dGV4cHIgdWludDhfdCB2YWxpZENvbG9yUHJpbWFyaWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50OF90IHZhbGlkQ29sb3JQcmltYXJpZXNbXSA9IHsKICAgICAgICAgVlBDb25maWd1
cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzcwOV82LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25D
b2xvclByaW1hcmllczo6VW5zcGVjaWZpZWQsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9y
UHJpbWFyaWVzOjpCVF80NzBfNl9NLApAQCAtNzAsMTQgKzcwLDEzIEBAIHN0YXRpYyBib29sIGlz
VmFsaWRWUENvbG9yUHJpbWFyaWVzKHVpbnQ4X3QgY29sb3JQcmltYXJpZXMpCiAgICAgICAgIFZQ
Q29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBURV9FR180MzJfMSwKICAgICAgICAgVlBD
b25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkVCVV9UZWNoXzMyMTNfRSwKICAgICB9OwotCi0g
ICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRDb2xvclByaW1hcmllcyks
IHN0ZDo6ZW5kKHZhbGlkQ29sb3JQcmltYXJpZXMpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5
X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkQ29sb3JQcmltYXJpZXMpLCBzdGQ6OmVuZCh2YWxpZENv
bG9yUHJpbWFyaWVzKSwgY29sb3JQcmltYXJpZXMpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29y
dGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRDb2xvclByaW1hcmllcyB9OworICAgIHJldHVybiBzZXQu
Y29udGFpbnMoY29sb3JQcmltYXJpZXMpOwogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBUcmFu
c2ZlckNoYXJhY3RlcmlzdGljcyh1aW50OF90IHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKQogewot
ICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3NbXSA9IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGlj
c1tdID0gewogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6
QlRfNzA5XzYsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
OjpVbnNwZWNpZmllZCwKICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzQ3MF82X00sCkBAIC05NiwxMyArOTUsMTMgQEAgc3RhdGljIGJvb2wgaXNWYWxp
ZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3ModWludDhfdCB0cmFuc2ZlckNoYXJhY3RlcmlzdGlj
cykKICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRF
X1NUXzQyOF8xLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
czo6QlRfMjEwMF9ITEcsCiAgICAgfTsKLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpi
ZWdpbih2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSwgc3RkOjplbmQodmFsaWRUcmFuc2Zl
ckNoYXJhY3RlcmlzdGljcykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6
YmVnaW4odmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyksIHN0ZDo6ZW5kKHZhbGlkVHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MpLCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyB2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzIH07CisgICAgcmV0dXJuIHNldC5jb250YWlucyh0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyk7
CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cyh1aW50OF90IG1h
dHJpeENvZWZmaWNpZW50cykKIHsKLSAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZE1hdHJpeENv
ZWZmaWNpZW50c1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZE1hdHJp
eENvZWZmaWNpZW50c1tdID0gewogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmlj
aWVudHM6OklkZW50aXR5LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVu
dHM6OkJUXzcwOV82LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6
OlVuc3BlY2lmaWVkLApAQCAtMTE4LDggKzExNyw4IEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUE1h
dHJpeENvZWZmaWNpZW50cyh1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cykKICAgICAgICAgVlBD
b25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpDaHJvbWFjaXR5X05vbmNvbnN0YW50X0x1
bWluYW5jZSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF8y
MTAwX0lDQywKICAgICB9OwotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZh
bGlkTWF0cml4Q29lZmZpY2llbnRzKSwgc3RkOjplbmQodmFsaWRNYXRyaXhDb2VmZmljaWVudHMp
KSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkTWF0cml4
Q29lZmZpY2llbnRzKSwgc3RkOjplbmQodmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBtYXRyaXhD
b2VmZmljaWVudHMpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsg
dmFsaWRNYXRyaXhDb2VmZmljaWVudHMgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKG1hdHJp
eENvZWZmaWNpZW50cyk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25S
ZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0
ZUFWRk9iakMuaAppbmRleCBlZTFhMzc5YTViZDgyYTI2YWMzMjEyYzNkZGY2ZTdjMDQwYzE4YzU1
Li5lMmQxOThmY2EyYjRjMWM4ZjdmZTY0ODQzYjFjNDEzZDdiMTg0ZjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRD
aGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZP
YmpDLmgKQEAgLTYwLDEzICs2MCwxMyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0Ns
YXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRl
QVZGT2JqQyI7IH0KIAogICAgIHN0cnVjdCBDaGFwdGVyRGF0YSB7Ci0gICAgICAgIE1lZGlhVGlt
ZSBtX3N0YXJ0VGltZTsKLSAgICAgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247Ci0gICAgICAgIFN0
cmluZyBtX3RpdGxlOworICAgICAgICBNZWRpYVRpbWUgc3RhcnRUaW1lOworICAgICAgICBNZWRp
YVRpbWUgZHVyYXRpb247CisgICAgICAgIFN0cmluZyB0aXRsZTsKIAogICAgICAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoYXB0ZXJEYXRhJiBvdGhlcikgY29uc3QKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG1fc3RhcnRUaW1lID09IG90aGVyLm1fc3RhcnRUaW1l
ICYmIG1fZHVyYXRpb24gPT0gb3RoZXIubV9kdXJhdGlvbiAmJiBtX3RpdGxlID09IG90aGVyLm1f
dGl0bGU7CisgICAgICAgICAgICByZXR1cm4gc3RhcnRUaW1lID09IG90aGVyLnN0YXJ0VGltZSAm
JiBkdXJhdGlvbiA9PSBvdGhlci5kdXJhdGlvbiAmJiB0aXRsZSA9PSBvdGhlci50aXRsZTsKICAg
ICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRw
dXQubW0KaW5kZXggMGJjMDgzODE0YzA4YzdkZWVkNjFjOTA3OWMyMmJlM2Y1MDc4YTc3ZS4uOTQ5
YzYwYmM0OGU1YTlhMGIyNTgwZjFhMjEyMmVlZTg3NTQ1MTVlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9P
dXRwdXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KQEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQg
UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpCiAgICAg
aWYgKG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBjdXJyZW50VGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1cnJlbnRUaW1l
XSk7Ci0gICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCBjdXJy
ZW50VGltZSk7CisgICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVz
LCBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pKTsKICAgICBpZiAoaXRl
ciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgpIHx8ICsraXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIG5leHRJbWFnZVRpbWUgPSBpdGVyLT5maXJz
dDsKIAotICAgIG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRCb3Vu
ZGFyeVRpbWVPYnNlcnZlckZvclRpbWVzOkBbW05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lOlBBTDo6
dG9DTVRpbWUoY3VycmVudFRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgp
IHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb3RlY3RlZERlbGVn
YXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091dHB1dF0gKCkgbXV0
YWJsZSB7CisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJv
dW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFM
Ojp0b0NNVGltZShuZXh0SW1hZ2VUaW1lKV1dIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVl
dWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWRE
ZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdICgp
IG11dGFibGUgewogICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3Zl
KHdlYWtUaGlzKV0gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT5uZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcAppbmRleCAwNWE4MzE2ZGMyN2U2MzAxN2YzOTdmMTkyNDY5YjgyYTMzYjdiMDM0
Li4wNGMwMDNiNGUyZTg3NjhjZDU4Nzc3NGU1ZDFlYzYzMjc5Yzg4YmQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMTQyMiwxOCArMTQyMiwxOCBAQCB3ZWJtOjpTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURh
dGEod2VibTo6UmVhZAogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRl
bnRzOwotICAgICAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5z
aXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1
ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKSkgeworICAgICAgICAgICAgYXV0byBjb29raWVDb250
ZW50cyA9IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURh
dGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAg
ICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzKSB7CiAgICAgICAgICAgICAgICAgUEFSU0VSX0xP
R19FUlJPUl9JRl9QT1NTSUJMRSgiRmFpbGVkIHRvIHBhcnNlIE9wdXMgcHJpdmF0ZSBkYXRhIik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFjb29raWVDb250ZW50cy5mcmFtZXNQZXJQ
YWNrZXQpIHsKKyAgICAgICAgICAgIGlmICghY29va2llQ29udGVudHMtPmZyYW1lc1BlclBhY2tl
dCkgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIk9wdXMg
cHJpdmF0ZSBkYXRhIGluZGljYXRlcyAwIGZyYW1lcyBwZXIgcGFja2V0OyBiYWlsaW5nIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgbV9mcmFtZXNQZXJQYWNrZXQgPSBjb29raWVDb250ZW50
cy5mcmFtZXNQZXJQYWNrZXQ7Ci0gICAgICAgICAgICBtX2ZyYW1lRHVyYXRpb24gPSBjb29raWVD
b250ZW50cy5mcmFtZUR1cmF0aW9uOwotICAgICAgICAgICAgZm9ybWF0RGVzY3JpcHRpb24gPSBj
cmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb29raWVDb250ZW50cyk7CisgICAgICAg
ICAgICBtX2ZyYW1lc1BlclBhY2tldCA9IGNvb2tpZUNvbnRlbnRzLT5mcmFtZXNQZXJQYWNrZXQ7
CisgICAgICAgICAgICBtX2ZyYW1lRHVyYXRpb24gPSBjb29raWVDb250ZW50cy0+ZnJhbWVEdXJh
dGlvbjsKKyAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlT3B1c0F1ZGlvRm9y
bWF0RGVzY3JpcHRpb24oKmNvb2tpZUNvbnRlbnRzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghZm9ybWF0RGVzY3JpcHRpb24pIHsKQEAgLTE0NTMsNyArMTQ1Myw2IEBAIHdlYm06OlN0YXR1
cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0
YSh3ZWJtOjpSZWFkCiAgICAgICAgIC8vIE9wdXMgdGVjaG5pY2FsbHkgYWxsb3dzIHRoZSBmcmFt
ZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBlci1wYWNrZXQgdmFsdWVzIHRvIGNoYW5nZSBmcm9tIHBh
Y2tldCB0byBwYWNrZXQuCiAgICAgICAgIC8vIENvcmVBdWRpbyBkb2Vzbid0IHN1cHBvcnQgQVNC
RCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBjaGFuZ2Ugb24gYSBwZXItcGFja2V0IGJhc2lzLCBzbyB0
aHJvdyBhbiBlcnJvciB3aGVuCiAgICAgICAgIC8vIHRoYXQga2luZCBvZiB2YXJpYWJpbGl0eSBp
cyBlbmNvdW50ZXJlZC4KLSAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRz
OwogICAgICAgICBhdXRvJiBwcml2YXRlRGF0YSA9IHRyYWNrKCkuY29kZWNfcHJpdmF0ZS52YWx1
ZSgpOwogICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVC
bG9ja0J1ZmZlcihtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNp
emUpOwogICAgICAgICBpZiAoIWNvbnRpZ3VvdXNCdWZmZXIpIHsKQEAgLTE0NjYsOSArMTQ2NSw4
IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6
Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9S
X0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJy
b3IiLCBlcnIpOwogICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5p
bmcpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0
ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwg
YmxvY2tCdWZmZXJEYXRhLCBjb29raWVDb250ZW50cykKLSAgICAgICAgICAgIHx8IGNvb2tpZUNv
bnRlbnRzLmZyYW1lc1BlclBhY2tldCAhPSBtX2ZyYW1lc1BlclBhY2tldAotICAgICAgICAgICAg
fHwgY29va2llQ29udGVudHMuZnJhbWVEdXJhdGlvbiAhPSBtX2ZyYW1lRHVyYXRpb24pIHsKKyAg
ICAgICAgYXV0byBjb29raWVDb250ZW50cyA9IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVE
YXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJs
b2NrQnVmZmVyRGF0YSk7CisgICAgICAgIGlmICghY29va2llQ29udGVudHMgfHwgY29va2llQ29u
dGVudHMtPmZyYW1lc1BlclBhY2tldCAhPSBtX2ZyYW1lc1BlclBhY2tldCB8fCBjb29raWVDb250
ZW50cy0+ZnJhbWVEdXJhdGlvbiAhPSBtX2ZyYW1lRHVyYXRpb24pIHsKICAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIk9wdXMgZnJhbWVzLXBlci1wYWNrZXQgY2hhbmdl
ZCB3aXRoaW4gYSB0cmFjazsgZXJyb3IiKTsKICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjpDb2RlKEVycm9yQ29kZTo6VmFyaWFibGVGcmFtZUR1cmF0aW9uKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1B
dWRpb1V0aWxpdGllc0NvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oCmluZGV4IDg3MTA0ZDhiN2IzNTdjMTYwYjZk
Y2NjNDFiZmUxZjg5ZTBhNmMyNzEuLjhiNjdkZTZmNDkzMDFiYTAxMTU4YTk4MDA5OTU5Mjc3MDQ0
NTIzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaApAQCAtMjgsOCArMjgsOCBA
QAogI2lmIFBMQVRGT1JNKENPQ09BKQogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKLWNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERl
c2NyaXB0aW9uUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NSw5ICs1NSw5IEBAIHN0
cnVjdCBPcHVzQ29va2llQ29udGVudHMgewogCiBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3B1c0Rl
Y29kZXJBdmFpbGFibGUoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVnaXN0ZXJPcHVzRGVjb2Rl
cklmTmVlZGVkKCk7Ci1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBwcml2YXRlRGF0
YVNpemUsIGNvbnN0IHZvaWQqIHByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVEYXRhU2l6ZSwgY29u
c3Qgdm9pZCogZnJhbWVEYXRhLCBPcHVzQ29va2llQ29udGVudHMmKTsKK3N0ZDo6b3B0aW9uYWw8
T3B1c0Nvb2tpZUNvbnRlbnRzPiBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgcHJpdmF0ZURh
dGFTaXplLCBjb25zdCB2b2lkKiBwcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUsIGNv
bnN0IHZvaWQqIGZyYW1lRGF0YSk7CiBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4g
Y3JlYXRlT3B1c0F1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uc3QgT3B1c0Nvb2tpZUNvbnRlbnRz
Jik7CiAKIH0KIAotI2VuZGlmIC8vICYmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQppbmRleCA3ZTBhZmIy
OTBkZDg1YTc3ZjliZWZmZjQ5NDdhNDdiNzUzNWViMmY0Li5hYjViYTFmMjUyY2VjMjcxNmI1MDBm
NmY5YTVjNGJiYTY3NDI4MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQpA
QCAtMTY5LDcgKzE2OSw3IEBAIGNvbnN0ZXhwciBpbnQzMl90IG9wdXNDb25maWdUb0JhbmR3aWR0
aCh1aW50OF90IGNvbmZpZykKIH0KICNlbmRpZgogCi1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRh
KHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBz
aXplX3QgZnJhbWVTaXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50
cyYgY29va2llKQorc3RkOjpvcHRpb25hbDxPcHVzQ29va2llQ29udGVudHM+IHBhcnNlT3B1c1By
aXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZh
dGVEYXRhLCBzaXplX3QgZnJhbWVTaXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEpCiB7CiAjaWYg
RU5BQkxFKE9QVVMpCiAgICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc4NDUK
QEAgLTIwMSwxNiArMjAxLDE3IEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNv
ZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsCiAgICAgYXV0byog
cHJpdmF0ZURhdGFQdHIgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oY29kZWNQcml2YXRl
RGF0YSk7CiAKICAgICBpZiAoY29kZWNQcml2YXRlU2l6ZSA8IDE5KQotICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMS4gTWFnaWMgU2ln
bmF0dXJlOgogICAgIC8vCiAgICAgLy8gICAgIFRoaXMgaXMgYW4gOC1vY3RldCAoNjQtYml0KSBm
aWVsZCB0aGF0IGFsbG93cyBjb2RlYwogICAgIC8vICAgICBpZGVudGlmaWNhdGlvbiBhbmQgaXMg
aHVtYW4gcmVhZGFibGUuCiAgICAgaWYgKHN0cm5jbXAoIk9wdXNIZWFkIiwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4ocHJpdmF0ZURhdGFQdHIpLCA4KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMi4gVmVyc2lvbiAo
OCBiaXRzLCB1bnNpZ25lZCk6CisgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZTsKICAgICBj
b29raWUudmVyc2lvbiA9ICoocHJpdmF0ZURhdGFQdHIgKyA4KTsKIAogICAgIC8vIDMuIE91dHB1
dCBDaGFubmVsIENvdW50ICdDJyAoOCBiaXRzLCB1bnNpZ25lZCk6CkBAIC0yMzEsNyArMjMyLDcg
QEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29u
c3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAgICBhdXRvIGZyYW1lUHRyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGZyYW1lRGF0YSk7CiAKICAgICBpZiAoZnJhbWVTaXplIDwgMSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3MTYKICAgICAvLyAzLjEuIFRo
ZSBUT0MgQnl0ZQpAQCAtMjg1LDIxICsyODYsMjAgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0
YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwK
ICAgICAgICAgLy8KICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIEZpZ3VyZSA1OiBU
aGUgZnJhbWUgY291bnQgYnl0ZQogICAgICAgICBpZiAoZnJhbWVTaXplIDwgMikKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgdWludDhfdCBmcmFtZUNvdW50Qnl0ZSA9ICooZnJhbWVQdHIgKyAxKTsKICAgICAgICAg
Y29va2llLmlzVkJSID0gKChmcmFtZUNvdW50Qnl0ZSAmIDBiMTAwMDAwMDApID4+IDcpID09IDE7
CiAgICAgICAgIGNvb2tpZS5oYXNQYWRkaW5nID0gKChmcmFtZUNvdW50Qnl0ZSAmIDBiMDEwMDAw
MDApID4+IDYpID09IDE7CiAgICAgICAgIGNvb2tpZS5mcmFtZXNQZXJQYWNrZXQgPSAoZnJhbWVD
b3VudEJ5dGUgJiAwYjAwMTExMTExKTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGNvb2tpZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvZGVjUHJpdmF0ZVNpemUpOwog
ICAgIFVOVVNFRF9QQVJBTShjb2RlY1ByaXZhdGVEYXRhKTsKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVTaXplKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVEYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
Y29va2llKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUxheWVyUG9vbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllclBvb2wuaAppbmRleCA4ZGMyMTNmNDdkNGY4MTkyMTExMWE0YTY5YzQ5OTYyZWE3M2ZjZjBh
Li5kY2Q2YTQ3YmE2MDg1M2RhMDhlMTJmMDIwMjg3OWQ0OWRiMzYzNDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUu
aD4KIAogQGNsYXNzIExlZ2FjeVRpbGVMYXllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCmluZGV4IGI1MmM4NjE4NmYwYmIwNmZkMzIzZWQyOWY4
MmQ3N2M5NThmZTI2MDguLjlmOGRlYmU5NTQ2MTFlYTBlOGFkNzMzMGNkOTI2YWMyYTMwOTE0MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KQEAg
LTM1LDQzICszNSwyOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgT1NCdWlsZElu
Zm8gewotICAgIE9TQnVpbGRJbmZvKCkKLSAgICAgICAgOiBtYWpvcigwKQotICAgICAgICAsIG1p
bm9yKDApCi0gICAgICAgICwgYnVpbGQoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgT1NCdWlsZElu
Zm8oaW50IG1ham9yLCBpbnQgbWlub3IsIGludCBidWlsZCkKLSAgICAgICAgOiBtYWpvcihtYWpv
cikKLSAgICAgICAgLCBtaW5vcihtaW5vcikKLSAgICAgICAgLCBidWlsZChidWlsZCkKLSAgICB7
Ci0gICAgfQorICAgIGludCBtYWpvciB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgMTMgaW4gMTND
NjQuCisgICAgaW50IG1pbm9yIHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSBDIGluIDEzQzY0IChh
cyBhIG51bWJlciB3aGVyZSBBID09IDEsIGkuZS4gMykuCisgICAgaW50IGJ1aWxkIHsgMCB9OyAv
LyBSZXByZXNlbnRzIHRoZSA2NCBpbiAxM0M2NC4KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShPU0J1aWxkSW5mbyBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWpvciA9
PSBvdGhlci5tYWpvciAmJiBtaW5vciA9PSBvdGhlci5taW5vciAmJiBidWlsZCA9PSBvdGhlci5i
dWlsZDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBPU0J1aWxkSW5mbyYgb3Ro
ZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KE9TQnVpbGRJbmZvIG90aGVy
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVp
bGQpID4gc3RkOjp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CiAg
ICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29u
c3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KE9TQnVpbGRJbmZvIG90aGVyKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpIDw9
IHN0ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0K
IAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKKyAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoT1NCdWlsZEluZm8gb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9yLCBidWlsZCkgPCBzdGQ6OnRp
ZShvdGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKICAgICB9Ci0KLSAgICBp
bnQgbWFqb3I7IC8vIFJlcHJlc2VudHMgdGhlIDEzIGluIDEzQzY0LgotICAgIGludCBtaW5vcjsg
Ly8gUmVwcmVzZW50cyB0aGUgQyBpbiAxM0M2NCAoYXMgYSBudW1iZXIgd2hlcmUgQSA9PSAxLCBp
LmUuIDMpLgotICAgIGludCBidWlsZDsgLy8gUmVwcmVzZW50cyB0aGUgNjQgaW4gMTNDNjQuCiB9
OwogCiBzdGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJp
bmcgKmJ1aWxkU3RyaW5nKQpAQCAtODMsNyArNjksNyBAQCBzdGF0aWMgT1NCdWlsZEluZm8gYnVp
bGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQogI2lmbmRlZiBO
REVCVUcKICAgICAgICAgTlNMb2coQCJXZWJHTEJsb2NrbGlzdCBjb3VsZCBub3QgcGFyc2UgT1NC
dWlsZCBlbnRyeTogJUAiLCBidWlsZFN0cmluZyk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE9T
QnVpbGRJbmZvKCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgTlNUZXh0Q2hl
Y2tpbmdSZXN1bHQgKm1hdGNoUmVzdWx0ID0gW21hdGNoZXMgb2JqZWN0QXRJbmRleDowXTsKQEAg
LTkyLDE0ICs3OCwxNCBAQCBzdGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRT
dHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNM
b2coQCJXZWJHTEJsb2NrbGlzdCBjb3VsZCBub3QgcGFyc2UgT1NCdWlsZCBlbnRyeTogJUAiLCBi
dWlsZFN0cmluZyk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE9TQnVpbGRJbmZvKCk7CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaW50IG1ham9yVmVyc2lvbiA9IFtbYnVpbGRT
dHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOlttYXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6MV1dIGlu
dFZhbHVlXTsKICAgICBpbnQgbWlub3JWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdX
aXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRleDoyXV0gY2hhcmFjdGVyQXRJbmRleDow
XSAtICdBJyArIDE7CiAgICAgaW50IGJ1aWxkVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3Ry
aW5nV2l0aFJhbmdlOlttYXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6M11dIGludFZhbHVlXTsKIAot
ICAgIHJldHVybiBPU0J1aWxkSW5mbyhtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRW
ZXJzaW9uKTsKKyAgICByZXR1cm4geyBtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRW
ZXJzaW9uIH07CiB9CiAKIGJvb2wgV2ViR0xCbG9ja2xpc3Q6OnNob3VsZEJsb2NrV2ViR0woKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9CYXNlQXVkaW9TaGFyZWRVbml0LmgKaW5kZXggOGNhNWYzMTllMmI4MDZjZWFhOTAyNjE3YzVj
M2EyNDlhMWM3NGE0YS4uMGExNmU1NGZkYmE0OGRiNWFhNjNlYzY0NzI2ZjI3NWYwZGIxMDhjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW0KaW5kZXggNjMxMmUwNjg0Mjk3YjQzYzMzMTFlNDczOWI2ODFhYjQ0NWMzMzY3Mi4uYmY1Yzc0
ZjRjZmRjYTM3NWUzYmU0MjMyZTQ3NWMyMmRhZmZjZWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvV2Fs
bFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCmluZGV4IGM0ZWI2N2Q2ZjdjMzM0
MDc2YjMyYjc5OGRjZWE0MGI1NzA2ODFlNmYuLjdkMGJiODVhNGE2ZDUxODFhOGFjNWY2MGZiNzFm
ZDllYWI0Y2VjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlU3Rh
dGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQu
Y3BwCmluZGV4IDU2MDJkN2MyZDRkNWJjYTkzMjQ1NDRiNzVhZDIyY2IyNjU4ZWQwMmMuLjBkZjc0
MjY1MWZmN2JkYzhiYjY0MzM0NmY5YmNjYmMyMDRjMTllMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBib29sIEdyaWRJdGVyYXRvcjo6aXNFbXB0eUFy
ZWFFbm91Z2godW5zaWduZWQgcm93U3BhbiwgdW5zaWduZWQgY29sdW1uU3BhbikgY29ucwogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRv
cjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZh
cnlpbmdUcmFja1NwYW4pCitzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5l
eHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5n
VHJhY2tTcGFuKQogewogICAgIEFTU0VSVCghbV9ncmlkLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KCFtX2dyaWRbMF0uaXNFbXB0eSgpKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4
ZWRUcmFja1NwYQogICAgIEFTU0VSVCh2YXJ5aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAgaWYg
KG1fZ3JpZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgcm93U3BhbiA9IChtX2RpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zKSA/IHZhcnlpbmdUcmFja1NwYW4gOiBmaXhlZFRyYWNrU3BhbjsKICAgICB1
bnNpZ25lZCBjb2x1bW5TcGFuID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRU
cmFja1NwYW4gOiB2YXJ5aW5nVHJhY2tTcGFuOwpAQCAtMjMxLDEzICsyMzEsMTMgQEAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2ln
bmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0lu
ZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3Jp
ZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5n
VHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFy
ZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRy
YW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFu
KSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1f
Y29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEdy
aWRBcmVhKEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBt
X3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bh
bihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAg
ICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVy
ZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAg
ICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQu
aAppbmRleCA3MmNhZGY2OGVmNGQzMjY2Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi41OTQ3ZmU1
ZTUzODY1M2QwYWFjODQ5NGZlYThkYTk2N2MzMDg1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmgKQEAgLTM3LDEwICszNywxMSBAQCB0eXBlZGVmIFZlY3RvcjxXZWFrUHRyPFJlbmRlckJveD4s
IDE+IEdyaWRDZWxsOwogdHlwZWRlZiBWZWN0b3I8VmVjdG9yPEdyaWRDZWxsPj4gR3JpZEFzTWF0
cml4OwogdHlwZWRlZiBMaXN0SGFzaFNldDxzaXplX3Q+IE9yZGVyZWRUcmFja0luZGV4U2V0Owog
Ci1jbGFzcyBHcmlkQXJlYTsKIGNsYXNzIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjsKIGNsYXNzIFJl
bmRlckdyaWQ7CiAKK3N0cnVjdCBHcmlkQXJlYTsKKwogY2xhc3MgR3JpZCBmaW5hbCB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgR3JpZChSZW5kZXJHcmlkJik7CkBAIC0xMTEsNyArMTEyLDcgQEAg
cHVibGljOgogCiAgICAgUmVuZGVyQm94KiBuZXh0R3JpZEl0ZW0oKTsKICAgICBib29sIGlzRW1w
dHlBcmVhRW5vdWdoKHVuc2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnN0
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWdu
ZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pOworICAgIHN0ZDo6
b3B0aW9uYWw8R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tT
cGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBH
cmlkQXNNYXRyaXgmIG1fZ3JpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcAppbmRleCBjZWNlZDM1ZTVjZTg3YmZiYzE0MDE4MzZjZDEzZWExYWVkZDdhZmMwLi4w
MGViZDVmZmMwNWI3MjIyYTRmN2E0M2IwYzQyMWIyYzM5NjU2ZDIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC00MzAsMjAgKzQzMCwxOSBAQCBTdHJp
bmcgUmVuZGVyQ291bnRlcjo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGJlZm9yZUFmdGVyQ29udGFpbmVyID0gYmVmb3JlQWZ0ZXJDb250
YWluZXItPnBhcmVudCgpOwogICAgICAgICB9Ci0gICAgICAgIG1ha2VDb3VudGVyTm9kZSgqYmVm
b3JlQWZ0ZXJDb250YWluZXIsIG1fY291bnRlci5pZGVudGlmaWVyKCksIHRydWUpLT5hZGRSZW5k
ZXJlcihjb25zdF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykpOworICAgICAgICBtYWtlQ291
bnRlck5vZGUoKmJlZm9yZUFmdGVyQ29udGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllciwgdHJ1
ZSktPmFkZFJlbmRlcmVyKGNvbnN0X2Nhc3Q8UmVuZGVyQ291bnRlciY+KCp0aGlzKSk7CiAgICAg
ICAgIEFTU0VSVChtX2NvdW50ZXJOb2RlKTsKICAgICB9CiAgICAgQ291bnRlck5vZGUqIGNoaWxk
ID0gbV9jb3VudGVyTm9kZTsKICAgICBpbnQgdmFsdWUgPSBjaGlsZC0+YWN0c0FzUmVzZXQoKSA/
IGNoaWxkLT52YWx1ZSgpIDogY2hpbGQtPmNvdW50SW5QYXJlbnQoKTsKIAotICAgIFN0cmluZyB0
ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCB2YWx1ZSk7CisgICAg
U3RyaW5nIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCB2YWx1ZSk7
CiAKLSAgICBpZiAoIW1fY291bnRlci5zZXBhcmF0b3IoKS5pc051bGwoKSkgeworICAgIGlmICgh
bV9jb3VudGVyLnNlcGFyYXRvci5pc051bGwoKSkgewogICAgICAgICBpZiAoIWNoaWxkLT5hY3Rz
QXNSZXNldCgpKQogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+cGFyZW50KCk7CiAgICAgICAg
IHdoaWxlIChDb3VudGVyTm9kZSogcGFyZW50ID0gY2hpbGQtPnBhcmVudCgpKSB7Ci0gICAgICAg
ICAgICB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCBjaGlsZC0+
Y291bnRJblBhcmVudCgpKQotICAgICAgICAgICAgICAgICsgbV9jb3VudGVyLnNlcGFyYXRvcigp
ICsgdGV4dDsKKyAgICAgICAgICAgIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlz
dFN0eWxlLCBjaGlsZC0+Y291bnRJblBhcmVudCgpKSArIG1fY291bnRlci5zZXBhcmF0b3IgKyB0
ZXh0OwogICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMjZmOGZjYmMwYWIyNzk2MGM0
OTM5MjIzZTc0OGQ5M2MzYjgzYzk5YS4uMWI2NzQ1YTllNzkwYjgwNWIxMzUwMDA0MmU0MWUwOTNl
ZDgxNjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzY1
LDEzICs3NjUsMTMgQEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9y
ZGVySXRlcmF0b3IoR3JpZCYgZ3JpZCkgY29uc3QKICAgICBncmlkLmVuc3VyZUdyaWRTaXplKG1h
eGltdW1Sb3dJbmRleCArIGV4cGxpY2l0Um93U3RhcnQsIG1heGltdW1Db2x1bW5JbmRleCArIGV4
cGxpY2l0Q29sdW1uU3RhcnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRl
ckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlk
KEdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3Np
dGlvbnMpIGNvbnN0CitHcmlkQXJlYSBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRT
cGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gm
IGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBj
b25zdCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBjb25zdAogewogICAgIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBjcm9zc0RpcmVjdGlvbiA9IHNwZWNpZmllZERpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gRm9yUm93cyA6IEZvckNvbHVtbnM7CiAgICAgY29uc3QgdW5zaWduZWQgZW5k
T2ZDcm9zc0RpcmVjdGlvbiA9IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1
bnNpZ25lZCBjcm9zc0RpcmVjdGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpz
cGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAg
R3JpZFNwYW4gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERl
ZmluaXRlR3JpZFNwYW4oZW5kT2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiAr
IGNyb3NzRGlyZWN0aW9uU3BhblNpemUpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRBcmVh
PihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRp
b25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAgICBy
ZXR1cm4gR3JpZEFyZWEoc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0Rp
cmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0
aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVt
c09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRl
bXMpIGNvbnN0CkBAIC03OTIsNyArNzkyLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNp
ZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW4KICAg
ICAgICAgdW5zaWduZWQgbWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uID0gbWFqb3JBeGlzUG9zaXRp
b25zLnN0YXJ0TGluZSgpOwogCiAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBh
dXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFy
dExpbmUoKSwgaXNHcmlkQXV0b0Zsb3dEZW5zZSA/IDAgOiBtaW5vckF4aXNDdXJzb3JzLmdldCht
YWpvckF4aXNJbml0aWFsUG9zaXRpb24pKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRB
cmVhPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlz
UG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKKyAgICAgICAgYXV0
byBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9z
aXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYgKCFl
bXB0eUdyaWRBcmVhKQogICAgICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3Jp
ZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0s
IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsK
IApAQCAtODI3LDcgKzgyNyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlz
SXRlbU9uR3JpZChHcmlkJiBncmlkLCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBBCiAgICAgdW5zaWdu
ZWQgbWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNE
aXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zID8gYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQgOiBh
dXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0OwogICAgIHVuc2lnbmVkIG1pbm9yQXhpc0F1dG9QbGFj
ZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29s
dW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3IuZmlyc3QgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLnNl
Y29uZDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhOwogICAgIEdyaWRTcGFuIG1p
bm9yQXhpc1Bvc2l0aW9ucyA9IGdyaWQuZ3JpZEl0ZW1TcGFuKGdyaWRJdGVtLCBhdXRvUGxhY2Vt
ZW50TWlub3JBeGlzRGlyZWN0aW9uKCkpOwogICAgIGlmIChtaW5vckF4aXNQb3NpdGlvbnMuaXNU
cmFuc2xhdGVkRGVmaW5pdGUoKSkgewogICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHRyYWNr
IGluIG1ham9yIGF4aXMgaWYgaW5pdGlhbCBwb3NpdGlvbiBpbiBtaW5vciBheGlzIGlzIGJlZm9y
ZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IuCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBSZW5kZXJH
cmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKEdyaWQmIGdyaWQsIFJlbmRlckJveCYg
Z3JpZEl0ZW0sIEEKIAogICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgZW1wdHkgZ3JpZCBhcmVh
IGFzIGl0IGRvZXMgbm90IGZpdCBpbiB0aGUgbWlub3IgYXhpcyBkaXJlY3Rpb24uCiAgICAgICAg
ICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZW1wdHkgZ3JpZCBhcmVh
IHlldCBhcyB3ZSBtaWdodCBmaW5kIGEgdmFsaWQgb25lIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4K
LSAgICAgICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAg
ICBlbXB0eUdyaWRBcmVhID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAvLyBBcyB3ZSdyZSBtb3ZpbmcgdG8gdGhlIG5leHQgdHJhY2sgaW4gdGhlIG1ham9yIGF4
aXMgd2Ugc2hvdWxkIHJlc2V0IHRoZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IgaW4gdGhlIG1pbm9y
IGF4aXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAyOWFlNTk0ODAw
M2VlNmQyZGQ0NDNiNTY5OWRjYjJkN2MxN2I5NjI2Li42NWM5ZTZlMjUyNjg0OTcwMzM4NGRkZGNi
YTE3ODNjNGJiNzdiMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAg
LTMyLDkgKzMyLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JpZEFyZWE7
CiBjbGFzcyBHcmlkU3BhbjsKIAorc3RydWN0IEdyaWRBcmVhOworCiBzdHJ1Y3QgQ29udGVudEFs
aWdubWVudERhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRBbGlnbm1lbnRE
YXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMTEsNyArMTEyLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0mLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCkgY29uc3Q7CiAgICAgdm9pZCBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3Io
R3JpZCYpIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1wdHlH
cmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRl
ckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsK
KyAgICBHcmlkQXJlYSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRz
aWRlR3JpZChHcmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
LCBjb25zdCBHcmlkU3BhbiYpIGNvbnN0OwogICAgIHZvaWQgcGxhY2VTcGVjaWZpZWRNYWpvckF4
aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAg
ICAgdm9pZCBwbGFjZUF1dG9NYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9y
PFJlbmRlckJveCo+JikgY29uc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBBdXRvUGxhY2VtZW50Q3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA3ZThkZDY4ODI0Y2ZiNDU2MjA4
MGU1OTRlY2Q4NDAyYTZjOWZjMDMyLi5mOWVkZTFkOTBiMzkzNmYxMzA5ZDQ3YjI0MDM1MTU0MmEy
NzdjNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcApAQCAtOTcsNyArOTcsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIFdlYkNv
cmVIYXMzRFJlbmRlcmluZyA9IHRydWU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhVVNF
KENPTVBPU0lUSU5HX0ZPUl9TTUFMTF9DQU5WQVNFUykKLXN0YXRpYyBjb25zdCBpbnQgY2FudmFz
QXJlYVRocmVzaG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CitzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9
IDUwICogMTAwOwogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBlOTYzN2VlYmUyMDYw
OWFlMGM1ZDJiMWQ2ZjZiM2U2MWJjOWYxMjk4Li44NDZhZDE1MjVhZjIwNjYwN2I0MmJmNGVkMTEw
Y2ZhYTkxNGU5M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKQEAgLTQ2Nyw4ICs0NjcsOCBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBs
YWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAKICAgICBM
ZW5ndGhQb2ludCBvYmplY3RQb3NpdGlvbiA9IHN0eWxlKCkub2JqZWN0UG9zaXRpb24oKTsKIAot
ICAgIExheW91dFVuaXQgeE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3Np
dGlvbi54KCksIGNvbnRlbnRSZWN0LndpZHRoKCkgLSBmaW5hbFJlY3Qud2lkdGgoKSk7Ci0gICAg
TGF5b3V0VW5pdCB5T2Zmc2V0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0aW9u
LnkoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOworICAgIExh
eW91dFVuaXQgeE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54
LCBjb250ZW50UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRoKCkpOworICAgIExheW91dFVu
aXQgeU9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi55LCBjb250
ZW50UmVjdC5oZWlnaHQoKSAtIGZpbmFsUmVjdC5oZWlnaHQoKSk7CiAKICAgICBmaW5hbFJlY3Qu
bW92ZSh4T2Zmc2V0LCB5T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Qm94UGFpbnRlci5jcHAKaW5kZXggY2E1Yjc0MGQ5MDQ0YmQ2NWUzNjZiNTdkNzZjMzQyOGMzZjll
ZTNmNi4uNGM0NzRjOTVlM2VlYzIyMmYwNTM5OTM1MjI1ZDRhMjE5YTYwMjhkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC02NDAsNyArNjQwLDcg
QEAgY29uc3QgU2hhZG93RGF0YSogVGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdygpIGNv
bnN0CiAgICAgaWYgKCF0ZXh0Qm94KCkubGVnYWN5SW5saW5lQm94KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlYnVn
VGV4dFNoYWRvdyhMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgo
TGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0
aCgyMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdC
QTx1aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTaGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFkb3coTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6
OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoMTAsIExlbmd0aFR5cGU6
OkZpeGVkKSwgTGVuZ3RoKDIwLCBMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3Jt
YWwsIHRydWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMTUwLCAwLCAwLCAxOTAgfSk7CiAgICAgcmV0dXJu
ICZkZWJ1Z1RleHRTaGFkb3cuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludFN0eWxlLmgKaW5kZXggNDU5YmFmMTEyZmMwMzI3MGFmZTQ2ZmZlODRlZDBkNWJhNmIy
NmUzOS4uMjVjZjQ4Y2Y0OTI4MTJlYTNlYjBmZmY0NjAwMmNkZDBkNzc2ZWIyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTMzLDEzICszMywxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVGV4
dDsKIGNsYXNzIFNoYWRvd0RhdGE7CisKIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBUZXh0
UGFpbnRTdHlsZSB7Ci0gICAgVGV4dFBhaW50U3R5bGUoKSB7IH0KKyAgICBUZXh0UGFpbnRTdHls
ZSgpID0gZGVmYXVsdDsKICAgICBUZXh0UGFpbnRTdHlsZShjb25zdCBDb2xvciYpOwogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRQYWludFN0eWxlJikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCmluZGV4IDU4NmNjNjY5
ODAyNjVkOTg2M2FjYWFhN2VlNmI4YTk4NjQ4MzI2YzYuLjdiZjViYzkwNmU4OGM1Mzc1ODEwY2Mz
ZTFmYzI4ODk5MDlkNTBhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db3VudGVyQ29udGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db3VudGVyQ29udGVudC5oCkBAIC0yOSwzMiArMjksMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDb3VudGVyQ29udGVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgQ291bnRlckNvbnRlbnQoY29uc3QgQXRvbVN0cmluZyYgaWRlbnRp
ZmllciwgTGlzdFN0eWxlVHlwZSBzdHlsZSwgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKQot
ICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbGlzdFN0eWxl
KHN0eWxlKQotICAgICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChzdHlsZSAhPSBMaXN0U3R5bGVUeXBlOjpTdHJpbmcpOwotICAgIH0KK3N0cnVjdCBD
b3VudGVyQ29udGVudCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0g
ICAgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQotICAgIExpc3RTdHlsZVR5cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9s
aXN0U3R5bGU7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3NlcGFyYXRvcjsgfQotCi1wcml2YXRlOgotICAgIEF0b21TdHJpbmcgbV9pZGVudGlm
aWVyOwotICAgIExpc3RTdHlsZVR5cGUgbV9saXN0U3R5bGU7Ci0gICAgQXRvbVN0cmluZyBtX3Nl
cGFyYXRvcjsKKyAgICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7CisgICAgTGlzdFN0eWxlVHlwZSBs
aXN0U3R5bGU7CisgICAgQXRvbVN0cmluZyBzZXBhcmF0b3I7CiB9OwogCi1zdGF0aWMgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyQ29udGVudCYgYSwgY29uc3QgQ291bnRlckNv
bnRlbnQmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50JiBh
LCBjb25zdCBDb3VudGVyQ29udGVudCYgYikKIHsKLSAgICByZXR1cm4gYS5pZGVudGlmaWVyKCkg
PT0gYi5pZGVudGlmaWVyKCkKLSAgICAgICAgJiYgYS5saXN0U3R5bGUoKSA9PSBiLmxpc3RTdHls
ZSgpCi0gICAgICAgICYmIGEuc2VwYXJhdG9yKCkgPT0gYi5zZXBhcmF0b3IoKTsKKyAgICByZXR1
cm4gYS5pZGVudGlmaWVyID09IGIuaWRlbnRpZmllcgorICAgICAgICAmJiBhLmxpc3RTdHlsZSA9
PSBiLmxpc3RTdHlsZQorICAgICAgICAmJiBhLnNlcGFyYXRvciA9PSBiLnNlcGFyYXRvcjsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5oCmluZGV4IDk1ZDM4NjI3ZTE0MTNmNTI2MWMwOWM5ZmQ5ZmIxYWEyMjBkNTQ4
YjQuLjcyNDBiOTZiZTgwZTk3MzM2YmNkY2JjZDRlZTdlMjhkYzY3ODg5ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTM1LDE4ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIHN0cnVjdCBGaWxsU2l6
ZSB7Ci0gICAgRmlsbFNpemUoKQotICAgICAgICA6IHR5cGUoRmlsbFNpemVUeXBlOjpTaXplKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBGaWxsU2l6ZShGaWxsU2l6ZVR5cGUgdHlwZSwgY29uc3QgTGVu
Z3RoU2l6ZSYgc2l6ZSkKLSAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICwgc2l6ZShzaXpl
KQotICAgIHsKLSAgICB9Ci0KLSAgICBGaWxsU2l6ZVR5cGUgdHlwZTsKKyAgICBGaWxsU2l6ZVR5
cGUgdHlwZSB7IEZpbGxTaXplVHlwZTo6U2l6ZSB9OwogICAgIExlbmd0aFNpemUgc2l6ZTsKIH07
CiAKQEAgLTg0LDcgKzczLDcgQEAgcHVibGljOgogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKTsgfQogICAg
IGNvbnN0IExlbmd0aFNpemUmIHNpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NpemVMZW5n
dGg7IH0KICAgICBGaWxsU2l6ZVR5cGUgc2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxGaWxsU2l6ZVR5cGU+KG1fc2l6ZVR5cGUpOyB9Ci0gICAgRmlsbFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIEZpbGxTaXplKHN0YXRpY19jYXN0PEZpbGxTaXplVHlwZT4obV9zaXplVHlw
ZSksIG1fc2l6ZUxlbmd0aCk7IH0KKyAgICBGaWxsU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4g
eyBzaXplVHlwZSgpLCBtX3NpemVMZW5ndGggfTsgfQogICAgIE1hc2tNb2RlIG1hc2tNb2RlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWFza01vZGU+KG1fbWFza01vZGUpOyB9CiAKICAg
ICBjb25zdCBGaWxsTGF5ZXIqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQxZDk2
MWRlODgyNmZiODMwMzMwOWI4ZTYzNTJmMjBmOWVhYi4uZDQ3NmY5MzE5ODdjZmNhNzE0MTRjYmZk
ZWNkODFhYmIxZWRmY2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRB
cmVhLmgKQEAgLTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRGVzcGl0ZSBs
aW5lIG51bWJlcnMgaW4gdGhlIHNwZWMgc3RhcnQgaW4gIjEiLCB0aGUgaW5kZXhlcyBoZXJlIHN0
YXJ0IGluICIwIi4KIGNsYXNzIEdyaWRTcGFuIHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBHcmlk
U3BhbiB1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQogICAgIHsKICAgICAgICAgcmV0dXJuIEdyaWRTcGFuKHN0YXJ0TGluZSwgZW5kTGluZSwg
VW50cmFuc2xhdGVkRGVmaW5pdGUpOwpAQCAtMTQyLDggKzE0MSw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0KLSAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5p
dGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CisgICAgZW51bSBHcmlkU3BhblR5
cGUgOiB1aW50OF90IHsgVW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwg
SW5kZWZpbml0ZSB9OwogCiAgICAgR3JpZFNwYW4oaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUs
IEdyaWRTcGFuVHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQpAQCAtMTYzLDI0ICsx
NjEsMjQgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9zdGFydExpbmU7CiAgICAgaW50IG1fZW5kTGlu
ZTsKICAgICBHcmlkU3BhblR5cGUgbV90eXBlOwotCi0KIH07CiAKIC8vIFRoaXMgcmVwcmVzZW50
cyBhIGdyaWQgYXJlYSB0aGF0IHNwYW5zIGluIGJvdGggcm93cycgYW5kIGNvbHVtbnMnIGRpcmVj
dGlvbi4KLWNsYXNzIEdyaWRBcmVhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICAvLyBIYXNoTWFwIHJlcXVpcmVzIGEgZGVmYXVsdCBjb25zdHVjdG9yLgorc3Ry
dWN0IEdyaWRBcmVhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAg
ICBHcmlkU3BhbiByb3dzOworICAgIEdyaWRTcGFuIGNvbHVtbnM7CisKICAgICBHcmlkQXJlYSgp
Ci0gICAgICAgIDogY29sdW1ucyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCi0gICAg
ICAgICwgcm93cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgIDogcm93
cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgICwgY29sdW1ucyhHcmlk
U3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCiAgICAgewogICAgIH0KIAotICAgIEdyaWRBcmVh
KGNvbnN0IEdyaWRTcGFuJiByLCBjb25zdCBHcmlkU3BhbiYgYykKLSAgICAgICAgOiBjb2x1bW5z
KGMpCi0gICAgICAgICwgcm93cyhyKQorICAgIEdyaWRBcmVhKEdyaWRTcGFuIHJvd3MsIEdyaWRT
cGFuIGNvbHVtbnMpCisgICAgICAgIDogcm93cyhyb3dzKQorICAgICAgICAsIGNvbHVtbnMoY29s
dW1ucykKICAgICB7CiAgICAgfQogCkBAIC0xOTMsMTEgKzE5MSw4IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KLQotICAgIEdyaWRTcGFuIGNv
bHVtbnM7Ci0gICAgR3JpZFNwYW4gcm93czsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IEdyaWRBcmVhPiBOYW1lZEdyaWRBcmVhTWFwOwordXNpbmcgTmFtZWRHcmlkQXJlYU1hcCA9IEhh
c2hNYXA8U3RyaW5nLCBHcmlkQXJlYT47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oCmluZGV4IDg2YWNkMzMwZGY2
OWY4M2IwZDJmZDMyMjdlYmI4MGU5ZWZlN2U4N2EuLjVmODhkZTFmYzljMjEyMmNlMjJhZDdlMzBh
MzBiMDg0OTM4NWU5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRM
ZW5ndGguaApAQCAtNDIsNyArNDIsNiBAQCBjbGFzcyBHcmlkTGVuZ3RoIHsKIHB1YmxpYzoKICAg
ICBHcmlkTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3RoKGxl
bmd0aCkKLSAgICAgICAgLCBtX2ZsZXgoMCkKICAgICAgICAgLCBtX3R5cGUoTGVuZ3RoVHlwZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbGVuZ3RoLmlzVW5kZWZpbmVkKCkpOwpAQCAtNzIsMTQg
KzcxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSA9PSBMZW5ndGhUeXBlICYmIG1fbGVuZ3RoLmlzQXV0bygpOyB9CiAKIHByaXZhdGU6Ci0gICAg
Ly8gSWRlYWxseSB3ZSB3b3VsZCBwdXQgdGhlIDIgZm9sbG93aW5nIGZpZWxkcyBpbiBhIHVuaW9u
LCBidXQgTGVuZ3RoIGhhcyBhIGNvbnN0cnVjdG9yLAotICAgIC8vIGEgZGVzdHJ1Y3RvciBhbmQg
YSBjb3B5IGFzc2lnbm1lbnQgd2hpY2ggaXNuJ3QgYWxsb3dlZC4KKyAgICAvLyBDb3VsZCB1c2Ug
YSBWYXJpYW50IGhlcmUgc2luY2Ugd2Ugb25seSB1c2UgbV9sZW5ndGggb3IgbV9mbGV4LCBhbmQg
bV90eXBlIGRldGVybWluZXMgd2hpY2guCiAgICAgTGVuZ3RoIG1fbGVuZ3RoOwotICAgIGRvdWJs
ZSBtX2ZsZXg7Ci0gICAgZW51bSBHcmlkTGVuZ3RoVHlwZSB7Ci0gICAgICAgIExlbmd0aFR5cGUs
Ci0gICAgICAgIEZsZXhUeXBlCi0gICAgfTsKKyAgICBkb3VibGUgbV9mbGV4IHsgMCB9OworICAg
IGVudW0gR3JpZExlbmd0aFR5cGUgOiBib29sIHsgTGVuZ3RoVHlwZSwgRmxleFR5cGUgfTsKICAg
ICBHcmlkTGVuZ3RoVHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBhZDVhYmFkYWMwNGY3ZDJlYmJjYzY3MDRl
MDEyOTNiMWRkZmFlM2E0Li4yZThkNTI2YTlmYTE5NWQ0NTc0MTYyZWU2MTc5ZjNlY2U2M2M3ZWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
QEAgLTE0OTcsNyArMTQ5Nyw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0aFRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zCiAgICAgLy8gU2hp
ZnQgZWxlbWVudCB0byB0aGUgYW5jaG9yIHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgogICAg
IGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9y
bU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigp
OwogICAgIGF1dG8gYW5jaG9yID0gdHJhbnNmb3JtT3JpZ2luOwotICAgIGlmICghb2Zmc2V0QW5j
aG9yKCkueCgpLmlzQXV0bygpKQorICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueC5pc0F1dG8oKSkK
ICAgICAgICAgYW5jaG9yID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hvcigp
LCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKC1hbmNob3IueCgpLCAtYW5jaG9yLnkoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNGYyMTM1ZWFhZWQ2MjE4
NzE5YWVjYjZiYmMwYTIyMDVjOTk4ZDM1OS4uM2RhYzc3MzNlMDYxNDA1MDM0ODU2ZjAzODMzMGRk
MWRlOTE2YTk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTEwOSw3ICsxMDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJv
cmRlckRhdGE7CiBjbGFzcyBDb250ZW50RGF0YTsKLWNsYXNzIENvdW50ZXJDb250ZW50OwogY2xh
c3MgQ3Vyc29yTGlzdDsKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRm9udE1ldHJpY3M7CkBA
IC0xMjEsNiArMTIwLDcgQEAgY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhOwogY2xhc3MgU3R5bGVT
Y3JvbGxTbmFwQXJlYTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCitzdHJ1Y3QgQ291
bnRlckNvbnRlbnQ7CiBzdHJ1Y3QgU2Nyb2xsU25hcEFsaWduOwogc3RydWN0IFNjcm9sbFNuYXBU
eXBlOwogCkBAIC03MDAsNyArNzAwLDcgQEAgcHVibGljOgogICAgIFRleHRDb21iaW5lIHRleHRD
b21iaW5lKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRDb21iaW5lKTsgfQogICAgIGJvb2wgaGFzVGV4dENvbWJpbmUoKSBj
b25zdCB7IHJldHVybiB0ZXh0Q29tYmluZSgpICE9IFRleHRDb21iaW5lOjpOb25lOyB9CiAKLSAg
ICBjb25zdCBUYWJTaXplJiB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGFiU2l6ZTsgfQorICAgIFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemU7IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMK
IApAQCAtMTI3Niw3ICsxMjc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2Ryb3BGaWx0
ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGJhY2tkcm9wRmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAjZW5k
aWYKIAotICAgIHZvaWQgc2V0VGFiU2l6ZShjb25zdCBUYWJTaXplJiBzaXplKSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNldFRhYlNp
emUoVGFiU2l6ZSBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwg
c2l6ZSk7IH0KIAogICAgIHZvaWQgc2V0QnJlYWtCZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFrQmVo
YXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0JlZm9yZSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJyZWFrQmVoYXZpb3IpKTsgfQogICAgIHZvaWQgc2V0QnJlYWtB
ZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGJyZWFrQWZ0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9y
KSk7IH0KQEAgLTE1ODQsNyArMTU4NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENvbWJp
bmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0KICAg
ICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVy
biBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFs
T2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0Rml0OjpGaWxsOyB9Ci0gICAgc3RhdGljIExlbmd0
aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0
aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6
UGVyY2VudCkpOyB9CisgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlv
bigpIHsgcmV0dXJuIHsgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3Ro
KDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSB9OyB9CiAgICAgc3RhdGljIEVtcHR5Q2VsbCBp
bml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJuIEVtcHR5Q2VsbDo6U2hvdzsgfQogICAgIHN0YXRp
YyBMaXN0U3R5bGVQb3NpdGlvbiBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBM
aXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lkZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBpbml0aWFsTGlzdFN0eWxlU3RyaW5nVmFsdWUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CkBA
IC0xODk4LDExICsxODk4LDExIEBAIHB1YmxpYzoKIAogICAgIExlbmd0aFBvaW50IG9mZnNldFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0UG9z
aXRpb247IH0KICAgICB2b2lkIHNldE9mZnNldFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRp
b24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvZmZzZXRQb3NpdGlvbiwgV1RG
TW92ZShwb3NpdGlvbikpOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRQ
b3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0
aWFsT2Zmc2V0UG9zaXRpb24oKSB7IHJldHVybiB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExl
bmd0aFR5cGU6OkF1dG8gfSB9OyB9CiAKICAgICBMZW5ndGhQb2ludCBvZmZzZXRBbmNob3IoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vZmZzZXRBbmNob3I7IH0KICAg
ICB2b2lkIHNldE9mZnNldEFuY2hvcihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zmc2V0QW5jaG9yLCBXVEZNb3ZlKHBvc2l0aW9uKSk7
IH0KLSAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJu
IExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0QW5jaG9yKCkg
eyByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsg
fQogCiAgICAgT2Zmc2V0Um90YXRpb24gb2Zmc2V0Um90YXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0Um90YXRlOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRS
b3RhdGUoT2Zmc2V0Um90YXRpb24mJiByb3RhdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIG9mZnNldFJvdGF0ZSwgV1RGTW92ZShyb3RhdGlvbikpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggODdjYTJiMjUyZjk2
Zjg1ZTRiNDQwYjZmZDJjMGY4ZTkzYWRlN2EwYy4uZGUzZGM2YzRjZGUxMjk3ZWVhMGNmY2Q2ZDYx
ZDY0NDEyODEwZTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFk
b3dEYXRhLmNwcApAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFk
b3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCi0gICAgOiBtX2xvY2F0aW9u
KG8ubV9sb2NhdGlvbi54KCksIG8ubV9sb2NhdGlvbi55KCkpCisgICAgOiBtX2xvY2F0aW9uKG8u
bV9sb2NhdGlvbikKICAgICAsIG1fc3ByZWFkKG8ubV9zcHJlYWQpCiAgICAgLCBtX3JhZGl1cyhv
Lm1fcmFkaXVzKQogICAgICwgbV9jb2xvcihvLm1fY29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAppbmRleCAyMmZlZjc2MmJjYTMxMGI2M2FlZmU4NTg2
ZjQyMmFiOWY4M2MwNWYyLi5kOWE0MWExNWJhMGQxZWZhOWM4ZmU1NDA3YjNkNTBlOWYyZWUwYWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIFNoYWRvd0RhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICBT
aGFkb3dEYXRhKGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbiwgTGVuZ3RoIHJhZGl1cywgTGVu
Z3RoIHNwcmVhZCwgU2hhZG93U3R5bGUgc3R5bGUsIGJvb2wgaXNXZWJraXRCb3hTaGFkb3csIGNv
bnN0IENvbG9yJiBjb2xvcikKLSAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uLngoKSwgbG9j
YXRpb24ueSgpKQorICAgICAgICA6IG1fbG9jYXRpb24obG9jYXRpb24pCiAgICAgICAgICwgbV9z
cHJlYWQoc3ByZWFkKQogICAgICAgICAsIG1fcmFkaXVzKHJhZGl1cykKICAgICAgICAgLCBtX2Nv
bG9yKGNvbG9yKQpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG8pOwogICAgIH0KICAgICAKLSAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJl
dHVybiBtX2xvY2F0aW9uLngoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYXRpb24ueSgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1
cm4gbV9sb2NhdGlvbi54OyB9CisgICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4g
bV9sb2NhdGlvbi55OyB9CiAgICAgY29uc3QgTGVuZ3RoUG9pbnQmIGxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhdGlvbjsgfQogICAgIGNvbnN0IExlbmd0aCYgcmFkaXVzKCkgY29uc3Qg
eyByZXR1cm4gbV9yYWRpdXM7IH0KICAgICBMYXlvdXRVbml0IHBhaW50aW5nRXh0ZW50KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9s
bFNuYXBQb2ludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9s
bFNuYXBQb2ludHMuaAppbmRleCBhMmM3YjBkYjNkNmU1ZmVkNjUzNmE1NjM5YjQ1NzkyZTQ3ODAx
MTc5Li41Mzc0NzIyYWIwOTRjNTc4Mzc4Y2RkMWU1ZDI5YWYwZWQ5OWE1YjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50
cy5oCkBAIC0yNSwxMSArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkxlbmd0
aEJveC5oIgotI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggOTE1MDQwMWE2NDVlNDI4NGU5MTY5MWJhMGJh
NWM5NzhjOTgyZWZiZC4uMTI3ZWYzMjcyNDQ2NmNkNDhjMzc0MDJkZTc2MGE1Yjk3MGE2ZmE0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTI2
OCw4ICsyNjgsOCBAQCBpbmxpbmUgVGFiU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFi
U2l6ZShjb25zdCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogewogICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIFRhYlNpemUocHJpbWl0
aXZlVmFsdWUuZmxvYXRWYWx1ZSgpLCBTcGFjZVZhbHVlVHlwZSk7Ci0gICAgcmV0dXJuIFRhYlNp
emUocHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoKSksIExlbmd0aFZhbHVlVHlwZSk7CisgICAgICAgIHJldHVy
biB7IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSwgVGFiU2l6ZTo6U3BhY2VzIH07CisgICAg
cmV0dXJuIHsgcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRl
LmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSksIFRhYlNpemU6Okxlbmd0aCB9OwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNDE3LDcgKzQxNyw3IEBAIGlubGluZSBMZW5ndGhQb2lu
dCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsCiAgICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NT
VmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihidWlsZGVyU3RhdGUsICpwYWlyLT5maXJzdCgpKTsK
ICAgICBMZW5ndGggbGVuZ3RoWSA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRv
cCwgQ1NTVmFsdWVCb3R0b20+KGJ1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKIAotICAg
IHJldHVybiBMZW5ndGhQb2ludChsZW5ndGhYLCBsZW5ndGhZKTsKKyAgICByZXR1cm4geyBsZW5n
dGhYLCBsZW5ndGhZIH07CiB9CiAKIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0UG9zaXRpb25PckF1dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTQyNyw3ICs0MjcsNyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQg
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlcgogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1BhaXIoKSkKICAgICAgICAgcmV0dXJuIGNv
bnZlcnRQb3NpdGlvbihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIAotICAgIHJldHVybiBMZW5ndGhQ
b2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7
CisgICAgcmV0dXJuIHsgeyBMZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9
IH07CiB9CiAKIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRl
eCAxM2NhZDliN2ZkNzcyYTZjZDIzOTgzNDBlMjgyNzcxYmQ0OWI0NDYxLi5lODNlZjljNGE3ZjJk
NGNlMTAyYWRkYjc5YzlhN2QwMjliMzA4Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXJDdXN0b20uaApAQCAtOTU2LDcgKzk1Niw3IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJD
dXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gYnVpbGRlclN0YXRlLnN0eWxl
KCkuY29sb3IoKTsKIAotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRv
d0RhdGE+KExlbmd0aFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9w
ZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29s
b3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9
IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oTGVuZ3RoUG9pbnQgeyB4LCB5IH0sIGJsdXIsIHNwcmVh
ZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBj
b2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICAg
ICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlz
Rmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qg
ZW50cnkKICAgICAgICAgZWxzZQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgaW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHUKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVy
VmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQg
IT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNf
Y2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAg
ICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVy
VmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0
b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250
ZW50PihDb3VudGVyQ29udGVudCB7IGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5
bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpIH0pOwogICAgICAgICAgICAgYnVpbGRl
clN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAg
ICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggMzM1ZjNmYWRmYWFlZWUzZWI2MjUx
ZWZiOTg5OTUzOTE0ZDYwMTYzNS4uZDhmNzdmNmFmMWI1N2EyMDhhNGVlMmRlMzM1OWE1YmFhODlk
MmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9w
dGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxv
cHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGY1NjJjOTEwMzMzMDk0NWMwN2E3YmRkOGJlNDQyYjVhODg3Nzk3MGUuLjNhODJhN2VlZTU0MmEx
M2MzMzIzYmJkMGM4OWY2MzI0ZjkxYmQ5YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5
IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9N
ZWRpYVRpbWUuY3BwOiBVcGRhdGVkIHRlc3RzIGZvciBjaGFuZ2UgdG8gT3B0aW9uU2V0IGZvcgor
ICAgICAgICBNZWRpYVRpbWUgZmxhZ3MsIGFuZCBmb3IgbmFtZSBjaGFuZ2UgZnJvbSBSb3VuZGlu
Z0ZsYWdzIHRvIFJvdW5kaW5nTW9kZS4KKwogMjAyMi0wMS0yMCAgSm9uYXRoYW4gQmVkYXJkICA8
amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0VXU10gU3VwcG9ydCBwdWxsIHJlcXVlc3Qg
aW4gQW5heWx6ZVBhdGNoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGM4MjI3Nzk4ZmExMTIy
ZWZlNDRiMmQ1YzY0ZmJmNjUwMzAxNTZlYjAuLmU5MjFlODk2YjcwYmEyYWFjZmE1OTkzZTI1N2Mz
Mjk5ZWRiMzAzYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBP
QkpDX0NMQVNTIE5TVW5kb01hbmFnZXI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
TWVkaWFUaW1lLmNwcAppbmRleCBiMGI1NGE4MDNmYWM4NWQxNTg0ZTcyM2M4NmUxZDljYmE0NGRj
ZTdhLi5kYzhlMjg5ODRhZTNhODAyZTU3Mzg2NzY2MTUyOTU5NGFjNTlkNDc5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAKQEAgLTE3MSw3ICsxNzEsNyBA
QCBURVNUKFdURiwgTWVkaWFUaW1lKQogCiAgICAgLy8gQ29uc3RhbnRzCiAgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6emVyb1RpbWUoKSwgTWVkaWFUaW1lKDAsIDEpKTsKLSAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRpYVRpbWUoLTEsIDEsIDApKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRpYVRpbWUoLTEsIDEsIHsgfSkpOwog
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGlt
ZSgwLCAxLCBNZWRpYVRpbWU6OlBvc2l0aXZlSW5maW5pdGUpKTsKICAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1l
OjpOZWdhdGl2ZUluZmluaXRlKSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0
ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6SW5kZWZpbml0ZSkpOwpAQCAtMjU0
LDY5ICsyNTQsNjkgQEAgVEVTVChXVEYsIE1lZGlhVGltZSkKICAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDIsIDIpLnRvVGltZVNjYWxlKDEpLnRpbWVWYWx1ZSgpLCAxKTsKICAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDIsIDYpLnRvVGltZVNjYWxlKDMpLnRpbWVWYWx1ZSgpLCAxKTsKICAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEpLmhhc0JlZW5Sb3VuZGVkKCksIHRy
dWUpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSg1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKDQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdz
OjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpI
YWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdh
eUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUx
LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJv
bVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybyku
dGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwg
MCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8p
LnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgp
LCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDks
IDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJv
KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsK
LSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6
OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
LTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21a
ZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFs
dWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdG
bGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOwotICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDAp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0x
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZl
SW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUx
LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVn
YXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dh
cmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZB
d2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDUx
LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZy
b21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSg0OSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVy
bykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVW
YWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVl
KCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2Fy
ZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZh
bHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdN
b2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFpl
cm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZh
bHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6
VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEs
IDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJv
KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVW
YWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0y
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdN
b2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdN
b2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAt
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIC0yKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptYXgoKSwgMSkudG9UaW1lU2NhbGUoMiksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZp
bml0ZVRpbWUoKSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWluKCksIDEpLnRvVGltZVNjYWxlKDIpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5p
dGVUaW1lKCkpOwogICAgIGludDY0X3QgbWF4SW50MzIgPSBudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShtYXhJbnQzMiAqIDIsIDEpLnRvVGlt
ZVNjYWxlKDIpLnRpbWVWYWx1ZSgpLCBtYXhJbnQzMiAqIDQpOwogICAgIGludDY0X3QgYmlnSW50
ID0gMUxMIDw8IDYyOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50LCAxVSA8PCAzMSku
dG9UaW1lU2NhbGUoMVUgPDwgMjkpLnRpbWVWYWx1ZSgpLCBiaWdJbnQgLyA0KTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKGJpZ0ludCArIDEsIDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAy
OSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgYmln
SW50IC8gNCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQgKyAxLCAxVSA8PCAzMSku
dG9UaW1lU2NhbGUoMVUgPDwgMjksIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJv
KS50aW1lVmFsdWUoKSwgYmlnSW50IC8gNCk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJ
bnQgKyAxLCAxVSA8PCAzMSkudG9UaW1lU2NhbGUoMVUgPDwgMjkpLmhhc0JlZW5Sb3VuZGVkKCks
IHRydWUpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50IC0gMiwgTWVkaWFUaW1lOjpN
YXhpbXVtVGltZVNjYWxlKS50b1RpbWVTY2FsZShNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUg
LSAxKS5oYXNCZWVuUm91bmRlZCgpLCB0cnVlKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJp
Z0ludCwgMSkudG9UaW1lU2NhbGUoTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNjYWxlKSwgTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQppbmRleCA2NWJmYmRlZjA4MjI0NjA4MjNjZmQ2
MWFhMzcyODc0OTViMmIxZGE0Li41NDQ0YWM3ZWNhY2JiOTM2YmU4YzBmNjgyNzY1MTE4NmI4ZTMw
OTUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2Vy
TWVkaWEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1l
ZGlhLm1tCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLSW50ZXJuYWxEZWJ1
Z0ZlYXR1cmUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgor
I2ltcG9ydCA8d3RmL1NlY29uZHMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5tbQppbmRleCBlYTAxMTBjNWY1NGMwYTU0MDIyMGUxNzY3YTZkZTEzNzhmM2MyY2Mw
Li5iOTJiMGY5NWYwZjcxZWRhNmI0ODBhZTUxMTg1YjljNDgyNmMzMGFlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgPFdlYktpdC9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBv
cnQgPHd0Zi9XYWxsVGltZS5oPgogCiBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmll
d1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZEluTmV0d29ya1Byb2Nlc3MoKQogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAppbmRleCAyMTk0Y2EzZTBiODc1
NzRlMWI4YzgyNzRmZjE0ZjVjYTg1ZjJiMTM3Li42YzQxNTBhNDRjMTljODdjYTk5YTExNzljMGMx
NWJkZGI2NDNmZGQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAo=
</data>
<flag name="commit-queue"
          id="476124"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449897</attachid>
            <date>2022-01-24 22:14:30 -0800</date>
            <delta_ts>2022-01-25 11:06:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220124221429.patch</filename>
            <type>text/plain</type>
            <size>150519</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODc0NDFhNWRkODlkMjA2ZDI2NzQxZDA0MmRlYjY4NjRhZTdiZmVkLi5mMTA5NDRiYTBiMDhhZWRl
M2NmYWNlYjkwOTgzY2FhYmFkNDFjM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjQgIE1pa2hhaWwgUi4gR2FkZWxoYSAgPG1pa2hhaWxAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbSlNDXVszMmJpdF0gRml4IHJlZ2V4cCBjcmFzaCBvbiBBUk12NwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1
OTdjZTgyYjBmMDQ2MDc5YmRlMzExYzEzYzA4NjNhNDEyYmZmNjhlLi45MDgyOWI1NWMxODdlZjFi
MjhmNWI1ODI2MWZkYTIxNTEyMGRiZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMi0wMS0y
NCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5k
IHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOiBB
ZGQgU2Vjb25kcyBhbmQgV2FsbFRpbWUgdG8gdGhlIHVzaW5nIHNlY3Rpb24uCisKKyAgICAgICAg
KiB3dGYvTG9jay5oOiBVc2UgRm9yd2FyZC5oIGluc3RlYWQgb2YgU2Vjb25kcy5oIHNpbmNlIFNl
Y29uZHMgaXMgb25seSB1c2VkCisgICAgICAgIGhlcmUgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVy
biB0eXBlLCBubyBhY3R1YWwgdXNlIG9mIHRoZSBjbGFzcyBpbiB0aGUgaGVhZGVyLgorCisgICAg
ICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVkaWFU
aW1lKTogRGVsZXRlZCB0aGUgY29weSBjb25zdHJ1Y3RvciB0aGF0IHVzZWQgdGhlIGFzc2lnbm1l
bnQKKyAgICAgICAgb3BlcmF0b3IuIFRoZSBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3Igd29ya3Mg
ZmluZSwgd2UgZG9uJ3QgaGF2ZSB0byB3cml0ZSBvbmUuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6TWVkaWFUaW1lKTogQWRkZWQgYSBIYXNEb3VibGUgY29uc3RydWN0b3IgZm9yIHVzZSBpbiBj
cmVhdGUKKyAgICAgICAgZnVuY3Rpb25zLiBJdCdzIGNvbnN0ZXhwciBidXQgaXQncyBpbiB0aGUg
LmNwcCBmaWxlIGJlY2F1c2UgaXQncyBwcml2YXRlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhGbG9hdCk6IFNpbXBsaWZpZWQgYnkgdXNpbmcgdGhlIEhhc0RvdWJsZSBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgQWxzbyB1c2Ugc3RkOjppc25hbiBpbnN0ZWFkIG9mIGEgdHJpY2t5
IGFsdGVybmF0ZSB3YXkgb2YgZG9pbmcgaXQuIFJlbW92ZWQgYQorICAgICAgICBzcGVjaWFsIGNh
c2UgZm9yIGluZmluaXR5IHNpbmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIGNhc2VzIGFscmVh
ZHkgY292ZXIgdGhhdC4KKyAgICAgICAgQW5kIHJlcGxhY2VkIGEgc3RhdGljX2Nhc3Qgd2l0aCBh
biBhc3NpZ25tZW50IHRvIHRoZSBkZXNpcmVkIHR5cGUuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZSk6IERpdHRvLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHNvIHNpbWls
YXIgdGhlCisgICAgICAgIHNob3VsZCBwcm9iYWJseSBiZSB0ZW1wbGF0ZWQgaW5zdGVhZCBvZiBy
ZXBlYXRlZCB0d2ljZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0Zsb2F0IGNvbnN0KTog
UmVwbGFjZWQgYSBzdGF0aWNfY2FzdCB3aXRoIGFzc2lnbm1lbnQgdG8gdGhlCisgICAgICAgIGRl
c2lyZWQgdHlwZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0RvdWJsZSBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuIFRoZSBk
ZWZhdWx0IGFzc2lnbm1lbnQgb3BlcmF0b3Igd29ya3MgZmluZS4KKyAgICAgICAgKFdURjo6TWVk
aWFUaW1lOjpvcGVyYXRvcisgY29uc3QpOiBUYWtlIHRoZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0
ZWFkIG9mIHJlZmVyZW5jZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvci0gY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciogY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciEgY29uc3QpOiBTaW1wbGlm
aWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBieSB1c2luZworICAgICAgICBmdW5jdGlvbnMgaW5zdGVh
ZCBvZiBjaGVja2luZyB0aGUgZmxhZ3MgZGlyZWN0bHkuCisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IENhbGwgb3BlcmF0b3IhIGluc3RlYWQgb2YgcmVwZWF0
aW5nIHRoZQorICAgICAgICBsb2dpYyB0d2ljZS4KKyAgICAgICAgKFdURjo6b3JkZXJpbmcpOiBB
ZGRlZCB0d28gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuIE9uZSBpcyBhIHRlbXBsYXRlIHRoYXQgY29t
cGFyZXMKKyAgICAgICAgc2NhbGFycyBhbmQgdGhlIG90aGVyIGNvbXBhcmVzIHR3byBNZWRpYVRp
bWUgb2JqZWN0cy4gVGhlIHNlY29uZCBvbmUgcmVwbGFjZXMgdGhlCisgICAgICAgIE1lZGlhVGlt
ZTo6Y29tcGFyZSBmdW5jdGlvbiwgd2hpY2ggaXMgbm93IGp1c3QgYSBsaWdodHdlaWdodCBjb3Zl
ciBmb3IgdGhpcy4KKyAgICAgICAgVGhlIG9sZCBjb2RlIGhhZCB0cmlja3kgbG9naWMsIGFuZCB0
aGlzIG5ldyBmdW5jdGlvbiBpcyBhIGNvbXBsZXRlIHJld3JpdGUuCisgICAgICAgIFRvIG1ha2Ug
dGhlIGxvZ2ljIGVhc3kgdG8gZm9sbG93LCB3ZSBleHRyYWN0IHRoZSBwaWVjZXMgb2YgdGhlIE1l
ZGlhVGltZSBhbmQKKyAgICAgICAgY29tcGFyZSB0aGVtLiBJZiB0aGV5IGFyZSBlcXVhbCB0aGVu
IHdlIGZhbGwgdGhyb3VnaCB0byB0aGUgbmV4dCwgYW5kIHNvIG9uLgorICAgICAgICBBdCB0aGUg
ZW5kIHRoZXJlIGFyZSB2YXJpb3VzIGNhc2VzIGZvciB0aW1lcyB3ZSBjYW4gY29tcGFyZSB3aXRo
b3V0IGRvaW5nCisgICAgICAgIGFyaXRobWV0aWMsIGFuZCB0aGVzZSBhcmUgdGhlIHNhbWUgYXMg
dGhlIG9uZXMgdGhhdCB3ZXJlIGFscmVhZHkgaGVyZSwgYnV0IHdpdGgKKyAgICAgICAgc2ltcGxp
ZmllZCBsb2dpYyBpbiBzb21lIGNhc2VzIHRoYXQgc2hvdWRsIGJlIGVhc2llciB0byBmb2xsb3cs
IGFuZCBubyB1c2VzIG9mCisgICAgICAgIHN0YXRpY19jYXN0IGFueSBtb3JlLgorICAgICAgICAo
V1RGOjpNZWRpYVRpbWU6OmlzQmV0d2VlbiBjb25zdCk6IFRha2UgYXJndW1lbnRzIGJ5IHZhbHVl
IGluc3RlYWQgb2YgcmVmZXJlbmNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9UaW1l
KTogRGVsZXRlZC4gTm93IGEgY29uc3RleHByIGluIHRoZSBoZWFkZXIuCisgICAgICAgIChXVEY6
Ok1lZGlhVGltZTo6aW52YWxpZFRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKTogRGVsZXRlZC4gRGl0dG8u
CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUpOiBEZWxldGVkLiBEaXR0
by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b1RpbWVTY2FsZSBjb25zdCk6IFVwZGF0ZWQg
c2luY2UgUm91bmRpbmdGbGFncyBpcyBub3cKKyAgICAgICAgUm91bmRpbmdNb2RlLiBJdCBkaWRu
J3QgbWFrZSBzZW5zZSB0byB0cmVhdCBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgcG9saWNp
ZXMKKyAgICAgICAgYXMgImZsYWdzIi4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpzZXRUaW1l
U2NhbGUpOiBEaXR0by4gQWxzbyB1c2Ugc3RkOjpleGNoYW5nZSBpbnN0ZWFkIG9mIHN0ZDo6c3dh
cAorICAgICAgICBhbmQgdXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgbGxhYnMuCisgICAgICAgIChX
VEY6Ok1lZGlhVGltZTo6dG9KU09OT2JqZWN0IGNvbnN0KTogUmVtb3ZlZCBzdGF0aWNfY2FzdCB0
byBkb3VibGUuCisgICAgICAgIChXVEY6OmFicyk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5z
dGVhZCBvZiByZWZlcmVuY2UuIFJlbmFtZWQgYXJndW1lbnQgZnJvbSByaHMKKyAgICAgICAgc2lu
Y2UgdGhlIGFyZ3VtZW50IGlzIG5vdCB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG9wZXJhdG9y
LiBSZW1vdmVkIHVubmVlZGVkCisgICAgICAgIHNwZWNpYWwgY2FzZSB0byBoYW5kbGUgaW52YWxp
ZCBiZWNhdXNlIHRoZSBmdW5jdGlvbiB3b3JrcyBmaW5lIG9uIGludmFsaWQgd2l0aG91dCBpdC4K
KyAgICAgICAgVXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgZmFicy4KKyAgICAgICAgKFdURjo6b3Bl
cmF0b3I8PCk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5zdGVhZCBvZiByZWZlcmVuY2UuCisK
KyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmg6IFJlbW92ZWQgbWFueSB1bm5lZWRlZCBpbmNsdWRl
cy4gUmVtb3ZlZCBXVEZfRVhQT1JUX1BSSVZBVEUKKyAgICAgICAgZnJvbSB0aGUgY2xhc3MgYmVj
YXVzZSBpdCdzIG5vdCBjb21wYXRpYmxlIHdpdGggaW5saW5lZCBmdW5jdGlvbnMgYWNjb3JkaW5n
IHRvCisgICAgICAgIHRoZSBzdHlsZSBjaGVja2VyIHNjcmlwdCwgaW5zdGVhZCBleHBvcnRpbmcg
aW5kaXZpZHVhbCBmdW5jdGlvbnMuIFVzZSBPcHRpb25TZXQKKyAgICAgICAgZm9yIHRoZSBmbGFn
cy4gQ2hhbmdlZCBmdW5jdGlvbnMgdG8gdGFrZSBNZWRpYVRpbWUgYnkgdmFsdWUsIHNpbmNlIGl0
J3MganVzdCBhCisgICAgICAgIGZldyBzY2FsYXJzLCBubyBzaWduaWZpY2FudCBjb3N0IHRvIGNv
cHlpbmcgaXQsIGFuZCBwYXNzaW5nIGJ5IHZhbHVlIG1lYW5zIHRoZQorICAgICAgICB3aG9sZSB0
aGluZyBtaWdodCBlbmQgdXAgaW4gcmVnaXN0ZXJzIHNpbmNlIHdlIHdvbid0IG5lZWQgYSBwb2lu
dGVyIHRvIGl0IHRvCisgICAgICAgIHBhc3MgYXMgdGhlIHJlZmVyZW5jZS4gTWFkZSB0aGUgdmFy
aW91cyBzcGVjaWFsIHRpbWVzIHJldHVybiBjb25zdGV4cHIgdmFsdWVzLAorICAgICAgICB3aGlj
aCB3aWxsIGNvbXBpbGUgdGhlIGFwcHJvcHJpYXRlIGJpdCBwYXR0ZXJuIHdpdGhvdXQgYW55IGNv
bXB1dGF0aW9uIG5lZWRlZC4KKyAgICAgICAgQ2hhbmdlZCB0aGUgdGltZVZhbHVlIGFuZCB0aW1l
U2NhbGUgZnVuY3Rpb25zIHRvIHJldHVybiB0aGUgc2NhbGFycywgbm90IGEKKyAgICAgICAgY29u
c3QgcmVmZXJlbmNlLiBSZW5hbWVkIFJvdW5kaW5nRmxhZ3MgdG8gUm91bmRpbmdNb2RlIHNpbmNl
IGl0J3MgYSBidW5jaCBvZgorICAgICAgICBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgbW9k
ZXMsIG5vdCBhIHNldCBvZiBmbGFncyB3ZSBjYW4gY29tYmluZS4gUmVuYW1lZAorICAgICAgICB0
aGUgZGF0YSBtZW1iZXJzLCBzaW5jZSB0aGV5IGRvbuKAmXQgYWxsIG5lZWQgYSAidGltZSIgcHJl
Zml4IGluIGEgY2xhc3MgdGhhdCBpcworICAgICAgICBhbHJlYWR5IG5hbWVkIE1lZGlhVGltZS4g
VG9vayBzb21lIHVubmVlZGVkIGNvbnN0IG91dCBvZiBNZWRpYVRpbWVSYW5nZS4KKyAgICAgICAg
QWRkZWQgdGhlIEVudW1UcmFpdHMgZm9yIHRoZSBmbGFncyBzbyB0aGV5IGNhbiBiZSBlbmNvZGVk
IGFuZCBkZWNvZGVkLiBCZWZvcmUKKyAgICAgICAgd2Ugd2VyZSBlbmNvZGluZyB0aGUgc2V0IG9m
IGZsYWdzIGFzIGEgdWludDhfdCwgdGhpcyBpcyBiZXR0ZXIuCisKKyAgICAgICAgKiB3dGYvU2Vj
b25kcy5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6U2Vjb25kcyIgdG8gRm9yd2FyZC5oLgorCisg
ICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDogSW5jbHVkZSBGb3J3YXJkLmggaW5z
dGVhZCBvZiBXYWxsVGltZS5oIHNpbmNlCisgICAgICAgIHRoaXMgZmlsZSBvbmx5IGRlZmluZXMg
YSBmdW5jdGlvbiB3aXRoIGEgV2FsbFRpbWUgYXJndW1lbnQgYW5kIGRvZXNuJ3QgbmVlZAorICAg
ICAgICB0byBwdWxsIHRoZSBlbnRpcmUgY2xhc3MgZGVmaW5pdGlvbiBpbi4KKworICAgICAgICAq
IHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjpwb3J0QWxsb3dlZCk6IFVzZSBTb3J0ZWRBcnJh
eVNldC4KKworICAgICAgICAqIHd0Zi9XYWxsVGltZS5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6
V2FsbFRpbWUiIHRvIEZvcndhcmQuaC4KKworICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50Q29kZXIuaDogSW5jbHVkZSA8b3B0aW9uYWw+IGluc3RlYWQgb2YgRm9yd2FyZC5oLgor
ICAgICAgICBUaGUgZm9ybWVyIGlzIGFsbCB0aGF0J3MgbmVlZGVkLgorCisgICAgICAgICogd3Rm
L3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcDogQWRkZWQgYW4gaW5jbHVkZSBvZiBXYWxsVGltZS5o
IHNpbmNlCisgICAgICAgIFRocmVhZGluZ1ByaW1pdGl2ZXMuaCBubyBsb25nZXIgcHVsbHMgaXQg
aW4uCisKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmg6IEFkZGVkIGFuIGluY2x1ZGUg
b2YgPG9wdGlvbmFsPiBzaW5jZSBMb2NrLmggbm8KKyAgICAgICAgbG9uZ2VyIHB1bGxzIGl0IGlu
IGJ5IGluY2x1ZGluZyBTZWNvbmRzLmguCisKKyAgICAgICAgKiB3dGYvd2luL1RocmVhZGluZ1dp
bi5jcHA6IEFkZGVkIGluY2x1ZGUgb2YgV2FsbFRpbWUuaCBzaW5jZQorICAgICAgICBUaHJlYWRp
bmdQcmltaXRpdmVzLmggbm8gbG9uZ2VyIHB1bGxzIGl0IGluLgorCisKIDIwMjItMDEtMjQgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgQnVpbGQg
ZmFpbHVyZSB3aXRoIEdDQyAxMjogbm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gJ2Vu
ZChMQ2hhciBbN10pJwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQwNzJiMjc1MjI4ZjlkMTZiYmQ2OGU1NTEyMmFh
MWI2ODhkNjRhOWIuLmZmYjkxYTE0Mzk4ZmYwZDBiMjEwZWY1MjljNDlhOTE4M2IzMWEwMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMjItMDEtMjQgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFuZCBzaW1wbGlmeSBNZWRpYVRpbWUg
YW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0
aW9uRGF0YS5oOiBBZGRlZCBpbmNsdWRlIG9mCisgICAgICAgIDxvcHRpb25hbD4gc2luY2Ugbm90
aGluZyBwdWxscyB0aGVtIGluLgorCisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgc2luY2Ug
VGFiU2l6ZSBhbmQgTGVuZ3RoUG9pbnQgYXJlIGJvdGggbm93CisgICAgICAgIHN0cnVjdHVyZXMs
IGFuZCBoYXZlIHB1YmxpYyBkYXRhIG1lbWJlcnMgcmF0aGVyIHRoYW4gZ2V0dGVyIGZ1bmN0aW9u
cy4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0ZvckJsZW5kaW5nKTogIFVwZGF0ZWQgdG8gcmV0
dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAgICAgIGEgbmV2ZXItbnVsbCBwb2ludGVy
IGFuZCBmb3IgY2hhbmdlcyB0byBMZW5ndGhQb2ludC4KKworICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JQb3Np
dGlvbik6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAg
IChXZWJDb3JlOjp2YWx1ZUZvclBvc2l0aW9uT3JBdXRvKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgaXMg
YSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2
YWx1ZUZvclByb3BlcnR5SW5TdHlsZSk6IFVwZGF0ZWQKKyAgICAgICAgc2luY2UgVGFiU2l6ZSBp
cyBhIHN0cnVjdHVyZS4KKworICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cG9pbnRGb3JMZW5ndGhQb2ludCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3Ro
UG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQpOiBEaXR0by4KKworICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6U3R5bGU6OnRhYlNpemUgY29uc3QpOiBQYXNz
IFRhYlNpemUgYnkgdmFsdWUgaW5zdGVhZAorICAgICAgICBvZiBieSByZWZlcmVuY2UuCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNQb3RlbnRpYWxD
dXN0b21FbGVtZW50TmFtZUNoYXJhY3Rlcik6IFVzZSBTb3J0ZWRBcnJheVNldC4KKyAgICAgICAg
SXQgZG9lcyB0aGUgc29ydGVkIGNoZWNrIGF0IGNvbXBpbGUgdGltZSBpbnN0ZWFkIG9mIGF0IHJ1
bnRpbWUgaW4gZGVidWcKKyAgICAgICAgYnVpbGRzLCBhbmQgYWxzbyBzZWxlY3RzIGxpbmVhciBz
ZWFyY2ggaWYgaXQncyBmYXN0ZXIgdGhhbiBiaW5hcnkgc2VhcmNoLgorCisgICAgICAgICogcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaDogQWRkZWQgaW5jbHVkZSBvZiBXYWxsVGlt
ZS5oLCBubworICAgICAgICBsb25nZXIgcHVsbGVkIGluIGJ5IFRocmVhZGluZy5oLgorCisgICAg
ICAgICogcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5oOiBDaGFuZ2VkIExlbmd0aFBvaW50IHRvIGJlIGEg
dHJ1ZSBzdHJ1Y3R1cmUKKyAgICAgICAgd2l0aCBwdWJsaWMgZGF0YSBtZW1iZXJzLiBUaGUgb2xk
IG9uZSB3YXMsIHN0cmFuZ2VseSwgYSBzdHJ1Y3QsIGJ1dAorICAgICAgICB3aXRoIHByaXZhdGUg
ZGF0YS4gUmVtb3ZlZCB0aGUgY29uc3RydWN0b3JzLCBnZXR0ZXJzLCBhbmQgc2V0dGVycy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOiBBdm9pZCBhIHdhcm5pbmcgYWJvdXQgbWl4
ZWQgaW50ZWdlcgorICAgICAgICB0eXBlcyBieSB1c2luZyBhIGxvY2FsIHZhcmlhYmxlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjp0YWJXaWR0aCBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBp
bnN0ZWFkCisgICAgICAgIG9mIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RhYlNpemUuaDogUmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSB0aGUgZGF0YQor
ICAgICAgICBtZW1iZXJzIHNpbmNlIFRhYlNpemUgaXMgYSBzdHJ1Y3QuIFJlbW92ZWQgdGhlIGdl
dHRlcnMuIE1hcmtlZCB0aGUKKyAgICAgICAgb3BlcmF0b3IgYm9vbCBleHBsaWNpdCBzaW5jZSB3
ZSBkb24ndCB3YW50IHRvIGFjY2lkZW50YWxseSBwYXNzIHRoaXMKKyAgICAgICAgdG8gc29tZXRo
aW5nIHRha2luZyBhbiBpbnRlZ2VyIGFuZCBnZXR0aW5nIGEgMCBvciAxLiBBZGRlZCBhIFRleHRT
dHJlYW0KKyAgICAgICAgb3ZlcmxvYWQgc28gd2UgY2FuIHN0cmVhbSB0aGlzIHdpdGhvdXQgZXhw
bGljaXRseSBwaWNraW5nIGl0IGFwYXJ0IGF0CisgICAgICAgIGVhY2ggY2FsbCBzaXRlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJ1bjo6dGFiU2l6ZSBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBpbnN0ZWFkIG9m
CisgICAgICAgIGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnNldFRh
YlNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBMZXZlbCk6IFVzZSBTb3J0ZWRBcnJh
eVNldC4gU2FtZSByZWFzb25zIGFzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQ
Q29sb3JQcmltYXJpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUFRyYW5z
ZmVyQ2hhcmFjdGVyaXN0aWNzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBN
YXRyaXhDb2VmZmljaWVudHMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmg6Cisg
ICAgICAgIFJlbW92ZWQgdGhlIG1fIHByZWZpeGVzIGZyb20gSW5iYW5kQ2hhcHRlclRyYWNrUHJp
dmF0ZUFWRk9iakM6OkNoYXB0ZXJEYXRhCisgICAgICAgIGRhdGEgbWVtYmVycyBzaW5jZSBpdCdz
IGEgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvUXVldWVkVmlkZW9PdXRwdXQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091
dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKTogRml4ZWQgYQorICAgICAgICBi
dWcgd2hlcmUgdGhpcyB1c2VkIGN1cnJlbnRJbWFnZVRpbWUgaW5zdGVhZCBvZiBuZXh0SW1hZ2Ug
dGltZSwgZXhwb3NlZAorICAgICAgICBiZWNhdXNlIHRoZSBjaGFuZ2VzIHRvIE1lZGlhVGltZSBt
YWRlIGl0IGdpdmUgdXMgYW4gdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25z
dW1lRnJhbWVEYXRhKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBwYXJzZU9wdXNQcml2YXRlRGF0
YSBub3cgcmV0dXJucyBhbiBvcHRpb25hbCBpbnN0ZWFkIG9mCisgICAgICAgIHJldHVybmluZyBh
IGJvb2xlYW4gYW5kIHVzaW5nIGFuIG91dCBhcmd1bWVudC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmg6IEFkZGVkIGFuIGluY2x1
ZGUKKyAgICAgICAgb2YgU2Vjb25kcy5oIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIHB1bGxlZCBpbiBi
eSBvdGhlciBpbmNsdWRlcyBhbmQKKyAgICAgICAgdGhpcyBzdHJ1Y3R1cmUgaGFzIGEgU2Vjb25k
cyBkYXRhIG1lbWJlci4gQ2hhbmdlZCB0aGUgcGFyc2VPcHVzUHJpdmF0ZURhdGEKKyAgICAgICAg
ZnVuY3Rpb24gdG8gcmV0dXJuIGFuIG9wdGlvbmFsIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgYm9v
bCBhbmQgdXNpbmcKKyAgICAgICAgYW4gb3V0IGFyZ3VtZW50IGZvciB3aGF0IGlzIHBhcnNlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHVzUHJpdmF0ZURhdGEpOiBEaXR0by4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbTogUmVtb3ZlZCB0aGUg
Y29uc3RydWN0b3JzIGZyb20KKyAgICAgICAgT1NCdWlsZEluZm8gYW5kIG1hZGUgYWxsIGl0cyBv
cGVyYXRvcnMgY29uc3RleHByLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Jhc2VBdWRpb1NoYXJlZFVuaXQuaDogQWRkZWQgYW4gaW5jbHVkZQorICAgICAgICBvZiBTZWNv
bmRzLmgsIG5vIGxvbmdlciBwdWxsZWQgaW4gYnkgTG9jay5oLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW06IEFkZGVkIGFuIGluY2x1ZGUg
b2YKKyAgICAgICAgV2FsbFRpbWUuaCwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBUaHJlYWRpbmdQ
cmltaXRpdmVzLmguCisKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKTogUmV0dXJuIGFuIG9wdGlv
bmFsIGluc3RlYWQgb2YKKyAgICAgICAgYSB1bmlxdWVfcHRyLiBObyByZWFzb24gdG8gdXNlIGEg
aGVhcCBibG9jayBmb3IgdGhpcy4KKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5oOiBVcGRhdGVk
IHNpbmNlIEdyaWRBcmVhIGlzIG5vdyBhIHN0cnVjdCBhbmQgZm9yIHRoZSBhYm92ZS4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCBjb25zdCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNv
bnRlbnQKKyAgICAgICAgaXMgbm93IGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQgY29uc3QpOgorICAgICAg
ICBSZXR1cm4gYSBHcmlkQXJlYSBpbnN0ZWFkIG9mIGEgdW5pcXVlX3B0ci4gVGhlIHJldHVybiB2
YWx1ZSBpcyBuZXZlciBudWxsIGFuZAorICAgICAgICB0aGVyZSBpcyBubyBuZWVkIHRvIHB1dCBp
dCBvbiB0aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlU3BlY2lm
aWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOiBVcGRhdGVkIGZvcgorICAgICAgICB0aGUg
YWJvdmUgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFq
b3JBeGlzSXRlbU9uR3JpZCBjb25zdCk6IFVzZSBvcHRpb25hbCBpbnN0ZWFkCisgICAgICAgIG9m
IHVuaXF1ZV9wdHIgZm9yIGEgbG9jYWwgdmFyaWFibGUgd2l0aCB0aGUgZW1wdHkgZ3JpZCBhcmVh
IGluIGl0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6IFVwZGF0ZWQgc2luY2Ug
R3JpZEFyZWEgaXMgYSBzdHJ1Y3QgYW5kIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDogVXNlIGNvbnN0ZXhwci4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdCBjb25zdCk6IFVwZGF0ZWQgc2luY2UKKyAg
ICAgICAgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpkZWJ1
Z1RleHRTaGFkb3cgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5oOiBTdHlsZSB0d2Vha3MuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ291
bnRlckNvbnRlbnQuaDogVHVybmVkIHRoZSBDb3VudGVyQ29udGVudCBjbGFzcyBpbnRvIGEKKyAg
ICAgICAgc3RydWN0dXJlIHdpdGggcHVibGljIGRhdGEgbWVtYmVycy4KKworICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDogUmVtb3ZlZCB0aGUgRmlsbFNpemUgY29uc3RydWN0
b3JzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6IE1hZGUgR3JpZFNw
YW5UeXBlIGJlIGJhc2VkIG9uIGEgdWludDhfdC4KKyAgICAgICAgUmVvcmRlcmVkIHRoZSBkYXRh
IG1lbWJlcnMgb2YgR3JpZEFyZWEgdG8gYmUgcm93cyBmaXJzdCBhbmQgdGhlbiBjb2x1bW5zCisg
ICAgICAgIHRvIGZvbGxvdyB0aGUgb3JkZXIgZnJvbSB0aGUgY29uc3RydWN0b3IgYW5kIGFsc28g
dGhlIGNvbnZlbnRpb25hbAorICAgICAgICAieCBiZWZvcmUgeSIgb3JkZXJpbmcuIFRoaXMgd2ls
bCBhbHNvIGJlIGdvb2Qgc29tZSBkYXkgd2hlbiB3ZSBjYW4gdXNlIHRoZQorICAgICAgICBkZWZh
dWx0IDw9PiBmcm9tIEMrKzIwLCB3aGljaCBkZXBlbmRzIG9uIGRhdGEgbWVtYmVyIG9yZGVyaW5n
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaDogVHdlYWtlZCBjb21t
ZW50cyBhbmQgbW92ZWQgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgb2YgbV9mbGV4IGZyb20gdGhl
IGNvbnN0cnVjdG9yIHRvIHRoZSBkYXRhIG1lbWJlciBkZWZpbml0aW9uLgorCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOiBVcGRhdGVkIHNpbmNlCisg
ICAgICAgIExlbmd0aFBvaW50IGlzIGEgc3RydWN0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmg6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQgYW5kIExl
bmdodFBvaW50CisgICAgICAgIGFyZSBzdHJ1Y3R1cmVzLCBhbmQgdG8gcGFzcyBUYWJTaXplIGJ5
IHZhbHVlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6IFNpbXBsaWZpZWQgY29uc3Ry
dWN0b3Igc2luY2UgbV9sb2NhdGlvbgorICAgICAgICBkb2VzIG5vdCBoYXZlIHRvIGJlIHNwbGl0
IG91dCBpbnRvIHggYW5kIHkganVzdCB0byBjb3B5IGl0LgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TaGFkb3dEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dE
YXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjp4IGNvbnN0KTogVXBk
YXRlZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBub3cgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dEYXRhOjp5IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMu
CisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZSk6IFVwZGF0ZWQg
c2luY2UgVGFiU2l6ZQorICAgICAgICBubyBsb25nZXIgaGFzIGNvbnN0cnVjdG9ycy4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24pOiBV
cGRhdGVkIHNpbmNlIExlbmd0aFBvaW50CisgICAgICAgIG5vIGxvbmdlciBoYXMgY29uc3RydWN0
b3JzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQ
b3NpdGlvbk9yQXV0byk6IERpdHRvLgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckN1c3Rv
bS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9y
Qm94U2hhZG93VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRlbnQK
KyAgICAgICAgbm8gbG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisKIDIwMjItMDEtMjQgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBVcGRh
dGUgUGFzdGVib2FyZDo6cmVhZCB0byBwcmlvcml0aXplIG5hdGl2ZSByZXByZXNlbnRhdGlvbnMg
b3ZlciBUSUZGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAxMDNjOTQ5M2ZjODNkNGM3MzBhMDNhMzE0
MDA1NWU0Yzc3MDAyNDAzLi45M2I1ZWRiYzU4MzNlOWIwY2E4NDk2ZGE5MDFlMGM0NDBlZTI1ZTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMS0yMyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5
IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGlt
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChQQUw6OkNNVGltZUhhc0ZsYWdzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFBBTDo6dG9NZWRpYVRpbWUpOiBUYWtlIENNVGltZSBieSB2YWx1ZS4gQWxz
byBzaW1wbGlmaWVkIGxvZ2ljCisgICAgICAgIHRvIGp1c3QgY2hlY2sgb25lIGZsYWcgYXQgYSB0
aW1lLCB3aGljaCBtZWFucyB0aGUgQ01UaW1lSGFzRmxhZ3MKKyAgICAgICAgZnVuY3Rpb24gaXNu
J3QgbmVlZGVkIGFueSBtb3JlLiBBbHNvIG5vdyB1c2VzIE9wdGlvblNldCBiZWNhdXNlCisgICAg
ICAgIHRoYXQgaXMgaG93IE1lZGlhVGltZSB3b3Jrcy4KKyAgICAgICAgKFBBTDo6dG9DTVRpbWUp
OiBUYWtlIE1lZGlhVGltZSBieSB2YWx1ZS4KKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKIDIwMjItMDEt
MjQgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aW1wbGlmeSBhY2Nlc3NlcyB0byBTeXN0ZW1WZXJzaW9uLnBsaXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0MjZk
Yjc2M2NkZmEzM2JiMDVlM2Y2ZDRjNDdmMDcwNGVkYmU4NDcuLmRhZmFjMTc0M2Q3NGM4NjQ4YmIy
NDhjNWM5ZWRlMzUxMDZiZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEt
MjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFu
ZCBzaW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oOgorICAgICAgICBBZGRl
ZCBhbiBpbmNsdWRlIG9mIDxvcHRpb25hbD4sIG5vIGxvbmdlciBwdWxsZWQgaW4gYm90aCBvdGhl
ciBoZWFkZXJzLgorCiAyMDIyLTAxLTI0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZ3Jlc3Npb24gKHIyODY5MzYpOiBTZXNzaW9uU3RvcmFnZSBkYXRhIGlz
IG5vdCBjbGVhcmVkIHdoZW4gZGVsZXRpbmcgd2Vic2l0ZSBkYXRhIGJ5IG1vZGlmaWNhdGlvbiB0
aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1w
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3Bw
CmluZGV4IDVmNjYzYjJmZjVhNWUzY2UwOGNlNDEyOTViODBhOWI3MTA2Yzg5NzkuLjU0NmNhZDc2
ZWM4OGQ3MTA1NDFlNmEzZTU5ODVmYTY0OTVmYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3
YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggM2NlNzYxMjQyYzMyZWMxNjk0
YzY1YTc3ZTc0MGU5YzY2OTNjM2JiNC4uMzY0ODcyYTIwMWM2ZGJlZmZjOTdlNGM5MGM2NTYxYmY1
OWQwNzRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHVzaW5nIFdURjo6UmVmUHRy
OwogdXNpbmcgV1RGOjpSZXRhaW5QdHI7CiB1c2luZyBXVEY6OlNIQTE7CiB1c2luZyBXVEY6OlNj
b3BlZExhbWJkYTsKK3VzaW5nIFdURjo6U2Vjb25kczsKIHVzaW5nIFdURjo6U3RyaW5nOwogdXNp
bmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CkBAIC0xNjEs
NiArMTYyLDcgQEAgdXNpbmcgV1RGOjpUZXh0U3RyZWFtOwogdXNpbmcgV1RGOjpVUkw7CiB1c2lu
ZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5nIFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXYWxsVGlt
ZTsKIHVzaW5nIFdURjo6V2Vha1B0cjsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNp
bmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXgg
NDJlNGFhYzBjOWE0YWFlNTllNzFiNWU5MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQz
MTY5MGM2NDJlYmI3YmI3NmVhNzY5OTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9j
ay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0xvY2tBbGdvcml0aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZXR5QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKaW5kZXggMjI0ZTc3NDk1ZmI5MzgzNGY1OGY5Y2YzMjM0
MzdmMzkxNjkzOTQyZi4uYThiOWMzNDNjNzM4Y2MwNjdlMzAwZWUzMGFjMzFlNzZmNGViN2Q0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC03Miw5ICs3Miw5IEBAIHN0YXRpYyBpbnQ2NF90IHNpZ251
bShpbnQ2NF90IHZhbCkKIAogY29uc3QgdWludDMyX3QgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNj
YWxlID0gMTAwMDAwMDAwMDsKIAotTWVkaWFUaW1lOjpNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1l
JiByaHMpCitjb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91
YmxlIHZhbHVlKQorICAgIDogbV92YWx1ZUFzRG91YmxlKHZhbHVlKQogewotICAgICp0aGlzID0g
cmhzOwogfQogCiBNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxv
YXRUaW1lKQpAQCAtODQsNTcgKzg0LDUxIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhGbG9hdChmbG9hdCBmbG9hdFRpbWUpCiAgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAgICBNZWRpYVRpbWUgdmFsdWUo
MCwgRGVmYXVsdFRpbWVTY2FsZSwgVmFsaWQgfCBEb3VibGVWYWx1ZSk7Ci0gICAgdmFsdWUubV90
aW1lVmFsdWVBc0RvdWJsZSA9IGZsb2F0VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgZG91
YmxlIHZhbHVlID0gZmxvYXRUaW1lOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsK
IH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGlt
ZSwgdWludDMyX3QgdGltZVNjYWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZs
b2F0KGZsb2F0IHZhbHVlLCB1aW50MzJfdCB0aW1lU2NhbGUpCiB7Ci0gICAgaWYgKGZsb2F0VGlt
ZSAhPSBmbG9hdFRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1
cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQotICAgICAg
ICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgp
IDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZmxvYXRUaW1lID49IG1heFBsdXNP
bmU8aW50NjRfdD4pCisgICAgaWYgKHZhbHVlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAg
ICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICBpZiAodmFsdWUgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CiAgICAgaWYgKCF0aW1lU2NhbGUpCi0gICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUg
KGZsb2F0VGltZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIHdoaWxl
ICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICB0aW1l
U2NhbGUgLz0gMjsKLSAgICByZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZs
b2F0VGltZSAqIHRpbWVTY2FsZSksIHRpbWVTY2FsZSwgVmFsaWQpOworICAgIGludDY0X3Qgc2Nh
bGVkVmFsdWUgPSB2YWx1ZSAqIHRpbWVTY2FsZTsKKyAgICByZXR1cm4geyBzY2FsZWRWYWx1ZSwg
dGltZVNjYWxlIH07CiB9CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
ZG91YmxlIGRvdWJsZVRpbWUpCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAg
IGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0g
ICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25i
aXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0
ZVRpbWUoKTsKLQotICAgIE1lZGlhVGltZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxp
ZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZG91Ymxl
VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpKQorICAg
ICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
OiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUg
fTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91
YmxlVGltZSwgdWludDMyX3QgdGltZVNjYWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShkb3VibGUgdmFsdWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAo
ZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGlt
ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGlt
ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIGlmICh2YWx1ZSA+PSBtYXhQbHVzT25lPGlu
dDY0X3Q+KQogICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAo
ZG91YmxlVGltZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlm
ICh2YWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICBy
ZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0
KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgp
OwogCi0gICAgd2hpbGUgKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2
NF90PikKKyAgICB3aGlsZSAodmFsdWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90
PikKICAgICAgICAgdGltZVNjYWxlIC89IDI7Ci0gICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzdGQ6OnJvdW5kKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUpKSwgdGltZVNj
YWxlLCBWYWxpZCk7CisgICAgaW50NjRfdCBzY2FsZWRWYWx1ZSA9IHN0ZDo6cm91bmQodmFsdWUg
KiB0aW1lU2NhbGUpOworICAgIHJldHVybiB7IHNjYWxlZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0K
IAogZmxvYXQgTWVkaWFUaW1lOjp0b0Zsb2F0KCkgY29uc3QKQEAgLTE0Niw4ICsxNDAsOSBAQCBm
bG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKTsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVZh
bHVlQXNEb3VibGU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbWVWYWx1ZSkg
LyBtX3RpbWVTY2FsZTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVBc0RvdWJsZTsKKyAgICBmbG9h
dCB2YWx1ZSA9IG1fdmFsdWU7CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAogZG91
YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUoKSBjb25zdApAQCAtMTU5LDE5ICsxNTQsMTIgQEAgZG91
YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7CiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVW
YWx1ZUFzRG91YmxlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVl
KSAvIG1fdGltZVNjYWxlOworICAgICAgICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOworICAgIGRv
dWJsZSB2YWx1ZSA9IG1fdmFsdWU7CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAot
TWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocykKLXsK
LSAgICBtX3RpbWVWYWx1ZSA9IHJocy5tX3RpbWVWYWx1ZTsKLSAgICBtX3RpbWVTY2FsZSA9IHJo
cy5tX3RpbWVTY2FsZTsKLSAgICBtX3RpbWVGbGFncyA9IHJocy5tX3RpbWVGbGFnczsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhNZWRp
YVRpbWUgcmhzKSBjb25zdAogewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwpAQCAtMTkyLDcgKzE4MCw3IEBAIE1l
ZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QK
ICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91
YmxlVmFsdWUoKSAmJiByaHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlICsgcmhzLm1fdGltZVZh
bHVlQXNEb3VibGUpOworICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KG1fdmFsdWVBc0RvdWJsZSArIHJocy5tX3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0Rv
dWJsZVZhbHVlKCkgfHwgcmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUodG9Eb3VibGUoKSArIHJocy50b0RvdWJsZSgpKTsKQEAg
LTIwMSwxMyArMTg5LDEzIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQz
Ml90IGNvbW1vblRpbWVTY2FsZTsKLSAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUoYS5tX3Rp
bWVTY2FsZSwgYi5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2Nh
bGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZShhLm1f
c2NhbGUsIGIubV9zY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBN
YXhpbXVtVGltZVNjYWxlKQogICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNj
YWxlOwogICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1l
U2NhbGUoY29tbW9uVGltZVNjYWxlKTsKLSAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3RpbWVWYWx1
ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVBZGQo
YS5tX3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRp
bWVTY2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAg
ICByZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2
ZUluZmluaXRlVGltZSgpOwogICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAg
YS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUo
Y29tbW9uVGltZVNjYWxlKTsKQEAgLTIxNSw3ICsyMDMsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1l
OjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAgcmV0dXJuIGE7CiB9
CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShNZWRpYVRpbWUgcmhzKSBjb25z
dAogewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBpbnZhbGlkVGltZSgpOwpAQCAtMjM2LDcgKzIyNCw3IEBAIE1lZGlhVGltZSBNZWRpYVRp
bWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJu
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiBy
aHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlIC0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOwor
ICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJs
ZSAtIHJocy5tX3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwg
cmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUodG9Eb3VibGUoKSAtIHJocy50b0RvdWJsZSgpKTsKQEAgLTI0NSwxMyArMjMzLDEz
IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QKICAgICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVT
Y2FsZTsKLSAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV90aW1lU2NhbGUsIHJo
cy5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhp
bXVtVGltZVNjYWxlKQorICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3NjYWxl
LCByaHMubV9zY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhp
bXVtVGltZVNjYWxlKQogICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxl
OwogICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2Nh
bGUoY29tbW9uVGltZVNjYWxlKTsKLSAgICB3aGlsZSAoIXNhZmVTdWIoYS5tX3RpbWVWYWx1ZSwg
Yi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVTdWIoYS5t
X3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVT
Y2FsZSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRp
dmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICBy
ZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpOwogICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5z
ZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29t
bW9uVGltZVNjYWxlKTsKQEAgLTI3NSw5ICsyNjMsOSBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpv
cGVyYXRvci0oKSBjb25zdAogCiAgICAgTWVkaWFUaW1lIG5lZ2F0aXZlVGltZSA9ICp0aGlzOwog
ICAgIGlmIChuZWdhdGl2ZVRpbWUuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgbmVnYXRpdmVU
aW1lLm1fdGltZVZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNEb3Vi
bGU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5tX3ZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1l
Lm1fdmFsdWVBc0RvdWJsZTsKICAgICBlbHNlCi0gICAgICAgIG5lZ2F0aXZlVGltZS5tX3RpbWVW
YWx1ZSA9IC1uZWdhdGl2ZVRpbWUubV90aW1lVmFsdWU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5t
X3ZhbHVlID0gLW5lZ2F0aXZlVGltZS5tX3ZhbHVlOwogICAgIHJldHVybiBuZWdhdGl2ZVRpbWU7
CiB9CiAKQEAgLTMwNywxNCArMjk1LDE0IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9y
KihpbnQzMl90IHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYSA9ICp0aGlzOwogCiAgICAgaWYg
KGEuaGFzRG91YmxlVmFsdWUoKSkgewotICAgICAgICBhLm1fdGltZVZhbHVlQXNEb3VibGUgKj0g
cmhzOworICAgICAgICBhLm1fdmFsdWVBc0RvdWJsZSAqPSByaHM7CiAgICAgICAgIHJldHVybiBh
OwogICAgIH0KIAotICAgIHdoaWxlICghc2FmZU11bHRpcGx5KGEubV90aW1lVmFsdWUsIHJocywg
YS5tX3RpbWVWYWx1ZSkpIHsKLSAgICAgICAgaWYgKGEubV90aW1lU2NhbGUgPT0gMSkKLSAgICAg
ICAgICAgIHJldHVybiBzaWdudW0oYS5tX3RpbWVWYWx1ZSkgPT0gc2lnbnVtKHJocykgPyBwb3Np
dGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICAgICAgYS5z
ZXRUaW1lU2NhbGUoYS5tX3RpbWVTY2FsZSAvIDIpOworICAgIHdoaWxlICghc2FmZU11bHRpcGx5
KGEubV92YWx1ZSwgcmhzLCBhLm1fdmFsdWUpKSB7CisgICAgICAgIGlmIChhLm1fc2NhbGUgPT0g
MSkKKyAgICAgICAgICAgIHJldHVybiBzaWdudW0oYS5tX3ZhbHVlKSA9PSBzaWdudW0ocmhzKSA/
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworICAgICAg
ICBhLnNldFRpbWVTY2FsZShhLm1fc2NhbGUgLyAyKTsKICAgICB9CiAKICAgICByZXR1cm4gYTsK
QEAgLTMyMiwxNzYgKzMxMCwxMDkgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IqKGlu
dDMyX3QgcmhzKSBjb25zdAogCiBib29sIE1lZGlhVGltZTo6b3BlcmF0b3IhKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKG1fdGltZUZsYWdzID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAg
ICAgfHwgKG1fdGltZUZsYWdzID09IChWYWxpZCB8IERvdWJsZVZhbHVlKSAmJiAhbV90aW1lVmFs
dWVBc0RvdWJsZSkKLSAgICAgICAgfHwgaXNJbnZhbGlkKCk7CisgICAgcmV0dXJuIGlzSW52YWxp
ZCgpIHx8IChoYXNEb3VibGVWYWx1ZSgpID8gIW1fdmFsdWVBc0RvdWJsZSA6ICFtX3ZhbHVlKTsK
IH0KIAogTWVkaWFUaW1lOjpvcGVyYXRvciBib29sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gISht
X3RpbWVGbGFncyA9PSBWYWxpZCAmJiAhbV90aW1lVmFsdWUpCi0gICAgICAgICYmICEobV90aW1l
RmxhZ3MgPT0gKFZhbGlkIHwgRG91YmxlVmFsdWUpICYmICFtX3RpbWVWYWx1ZUFzRG91YmxlKQot
ICAgICAgICAmJiAhaXNJbnZhbGlkKCk7CisgICAgcmV0dXJuICEhKnRoaXM7CiB9CiAKLU1lZGlh
VGltZTo6Q29tcGFyaXNvbkZsYWdzIE1lZGlhVGltZTo6Y29tcGFyZShjb25zdCBNZWRpYVRpbWUm
IHJocykgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBNZWRpYVRpbWU6OkNvbXBh
cmlzb25GbGFncyBvcmRlcmluZyhUIGEsIFQgYikKIHsKLSAgICBhdXRvIGFuZEZsYWdzID0gbV90
aW1lRmxhZ3MgJiByaHMubV90aW1lRmxhZ3M7Ci0gICAgaWYgKGFuZEZsYWdzICYgKFBvc2l0aXZl
SW5maW5pdGUgfCBOZWdhdGl2ZUluZmluaXRlIHwgSW5kZWZpbml0ZSkpCi0gICAgICAgIHJldHVy
biBFcXVhbFRvOwotCi0gICAgYXV0byBvckZsYWdzID0gbV90aW1lRmxhZ3MgfCByaHMubV90aW1l
RmxhZ3M7Ci0gICAgaWYgKCEob3JGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIEVxdWFs
VG87Ci0KLSAgICBpZiAoIShhbmRGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIGlzSW52
YWxpZCgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgTmVn
YXRpdmVJbmZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmVJbmZpbml0ZSgpID8gTGVz
c1RoYW4gOiBHcmVhdGVyVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgUG9zaXRpdmVJbmZpbml0
ZSkKLSAgICAgICAgcmV0dXJuIGlzUG9zaXRpdmVJbmZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgSW5kZWZpbml0ZSkKLSAgICAgICAgcmV0dXJu
IGlzSW5kZWZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChhbmRG
bGFncyAmIERvdWJsZVZhbHVlKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZUFzRG91YmxlID09
IHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0K
LSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlQXNEb3VibGUgPCByaHMubV90aW1lVmFsdWVBc0Rv
dWJsZSA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47Ci0gICAgfQotCi0gICAgaWYgKG9yRmxhZ3Mg
JiBEb3VibGVWYWx1ZSkgewotICAgICAgICBkb3VibGUgYSA9IHRvRG91YmxlKCk7Ci0gICAgICAg
IGRvdWJsZSBiID0gcmhzLnRvRG91YmxlKCk7Ci0gICAgICAgIGlmIChhID4gYikKLSAgICAgICAg
ICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICAgICAgaWYgKGEgPCBiKQotICAgICAgICAgICAg
cmV0dXJuIExlc3NUaGFuOwotICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAgICB9Ci0KLSAgICBp
ZiAoKG1fdGltZVZhbHVlIDwgMCkgIT0gKHJocy5tX3RpbWVWYWx1ZSA8IDApKQotICAgICAgICBy
ZXR1cm4gbV90aW1lVmFsdWUgPCAwID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKKyAgICByZXR1
cm4gYSA8IGIgPyBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFnczo6TGVzc1RoYW4gOiBiIDwgYSA/
IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzOjpHcmVhdGVyVGhhbiA6IE1lZGlhVGltZTo6Q29t
cGFyaXNvbkZsYWdzOjpFcXVhbFRvOworfQogCi0gICAgaWYgKCFtX3RpbWVWYWx1ZSAmJiAhcmhz
Lm1fdGltZVZhbHVlKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsKK01lZGlhVGltZTo6Q29tcGFy
aXNvbkZsYWdzIG9yZGVyaW5nKE1lZGlhVGltZSBhLCBNZWRpYVRpbWUgYikKK3sKKyAgICBhdXRv
IG9yZGVyaW5nQ2xhc3MgPSBbXShNZWRpYVRpbWUgdGltZSkgeworICAgICAgICBpZiAodGltZS5p
c05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYg
KHRpbWUuaXNJbmRlZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYg
KHRpbWUuaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAg
ICAgaWYgKHRpbWUuaXNJbnZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfTsKKyAgICBhdXRvIGFDbGFzcyA9IG9yZGVyaW5nQ2xhc3MoYSk7Cisg
ICAgYXV0byBiQ2xhc3MgPSBvcmRlcmluZ0NsYXNzKGIpOworICAgIGlmIChhQ2xhc3MgfHwgYkNs
YXNzKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYUNsYXNzLCBiQ2xhc3MpOwogCi0gICAgaWYg
KG1fdGltZVNjYWxlID09IHJocy5tX3RpbWVTY2FsZSkgewotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPT0gcmhzLm1fdGltZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAg
ICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSA/IExlc3NUaGFuIDogR3Jl
YXRlclRoYW47Ci0gICAgfQorICAgIGlmIChhLmhhc0RvdWJsZVZhbHVlKCkgfHwgYi5oYXNEb3Vi
bGVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gb3JkZXJpbmcoYS50b0RvdWJsZSgpLCBiLnRvRG91
YmxlKCkpOwogCi0gICAgaWYgKG1fdGltZVZhbHVlID09IHJocy5tX3RpbWVWYWx1ZSkKLSAgICAg
ICAgcmV0dXJuIG1fdGltZVNjYWxlIDwgcmhzLm1fdGltZVNjYWxlID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKKyAgICBpZiAoKGEubV92YWx1ZSA8IDApICE9IChiLm1fdmFsdWUgPCAwKSB8fCAh
YS5tX3ZhbHVlIHx8ICFiLm1fdmFsdWUgfHwgYS5tX3NjYWxlID09IGIubV9zY2FsZSkKKyAgICAg
ICAgcmV0dXJuIG9yZGVyaW5nKGEubV92YWx1ZSwgYi5tX3ZhbHVlKTsKIAotICAgIGlmIChtX3Rp
bWVWYWx1ZSA+PSAwKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1
ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBM
ZXNzVGhhbjsKKyAgICBpZiAoYS5tX3ZhbHVlID09IGIubV92YWx1ZSkKKyAgICAgICAgcmV0dXJu
IG9yZGVyaW5nKGIubV9zY2FsZSwgYS5tX3NjYWxlKTsKIAotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPiByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0g
ICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47CisgICAgaWYgKGEubV92YWx1ZSA+PSAwKSB7
CisgICAgICAgIGlmIChhLm1fdmFsdWUgPCBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlID4gYi5tX3Nj
YWxlKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6TGVzc1RoYW47CisgICAgICAgIGlm
IChhLm1fdmFsdWUgPiBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAg
ICAgICAgcmV0dXJuIE1lZGlhVGltZTo6R3JlYXRlclRoYW47CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKG1fdGltZVZhbHVlIDwgcmhzLm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlIDwgcmhz
Lm1fdGltZVNjYWxlKQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgICAgIGlm
IChtX3RpbWVWYWx1ZSA+IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3Rp
bWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICAgICAgaWYgKGEu
bV92YWx1ZSA8IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAg
ICByZXR1cm4gTWVkaWFUaW1lOjpMZXNzVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIu
bV92YWx1ZSAmJiBhLm1fc2NhbGUgPiBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVk
aWFUaW1lOjpHcmVhdGVyVGhhbjsKICAgICB9CiAKLSAgICBpbnQ2NF90IGxoc0ZhY3RvcjsKLSAg
ICBpbnQ2NF90IHJoc0ZhY3RvcjsKLSAgICBpZiAoc2FmZU11bHRpcGx5KG1fdGltZVZhbHVlLCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihyaHMubV90aW1lU2NhbGUpLCBsaHNGYWN0b3IpCi0gICAgICAg
ICYmIHNhZmVNdWx0aXBseShyaHMubV90aW1lVmFsdWUsIHN0YXRpY19jYXN0PGludDY0X3Q+KG1f
dGltZVNjYWxlKSwgcmhzRmFjdG9yKSkgewotICAgICAgICBpZiAobGhzRmFjdG9yID09IHJoc0Zh
Y3RvcikKLSAgICAgICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgICAgICByZXR1cm4gbGhzRmFj
dG9yIDwgcmhzRmFjdG9yID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9CisgICAgaW50
NjRfdCBhUHJvZHVjdDsKKyAgICBpbnQ2NF90IGJQcm9kdWN0OworICAgIGludDY0X3QgYVRpbWVT
Y2FsZSA9IGEubV9zY2FsZTsKKyAgICBpbnQ2NF90IGJUaW1lU2NhbGUgPSBiLm1fc2NhbGU7Cisg
ICAgaWYgKHNhZmVNdWx0aXBseShhLm1fdmFsdWUsIGFUaW1lU2NhbGUsIGFQcm9kdWN0KSAmJiBz
YWZlTXVsdGlwbHkoYi5tX3ZhbHVlLCBiVGltZVNjYWxlLCBiUHJvZHVjdCkpCisgICAgICAgIHJl
dHVybiBvcmRlcmluZyhhUHJvZHVjdCwgYlByb2R1Y3QpOworCisgICAgYXV0byBhUXVvdGllbnQg
PSBhLm1fdmFsdWUgLyBhLm1fc2NhbGU7CisgICAgYXV0byBiUXVvdGllbnQgPSBiLm1fdmFsdWUg
LyBiLm1fc2NhbGU7CisgICAgaWYgKGFRdW90aWVudCAhPSBiUXVvdGllbnQpCisgICAgICAgIHJl
dHVybiBvcmRlcmluZyhhUXVvdGllbnQsIGJRdW90aWVudCk7CiAKLSAgICBpbnQ2NF90IHJoc1do
b2xlID0gcmhzLm1fdGltZVZhbHVlIC8gcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhz
V2hvbGUgPSBtX3RpbWVWYWx1ZSAvIG1fdGltZVNjYWxlOwotICAgIGlmIChsaHNXaG9sZSA+IHJo
c1dob2xlKQotICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47Ci0gICAgaWYgKGxoc1dob2xlIDwg
cmhzV2hvbGUpCi0gICAgICAgIHJldHVybiBMZXNzVGhhbjsKLQotICAgIGludDY0X3QgcmhzUmVt
YWluID0gcmhzLm1fdGltZVZhbHVlICUgcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhz
UmVtYWluID0gbV90aW1lVmFsdWUgJSBtX3RpbWVTY2FsZTsKLSAgICBsaHNGYWN0b3IgPSBsaHNS
ZW1haW4gKiByaHMubV90aW1lU2NhbGU7Ci0gICAgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90
aW1lU2NhbGU7Ci0KLSAgICBpZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgcmV0
dXJuIEVxdWFsVG87Ci0gICAgcmV0dXJuIGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJU
aGFuIDogTGVzc1RoYW47CisgICAgYXV0byBhUmVtYWluZGVyID0gYS5tX3ZhbHVlICUgYS5tX3Nj
YWxlICogYS5tX3NjYWxlOworICAgIGF1dG8gYlJlbWFpbmRlciA9IGIubV92YWx1ZSAlIGIubV9z
Y2FsZSAqIGIubV9zY2FsZTsKKyAgICByZXR1cm4gb3JkZXJpbmcoYVJlbWFpbmRlciwgYlJlbWFp
bmRlcik7CiB9CiAKLWJvb2wgTWVkaWFUaW1lOjppc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiBh
LCBjb25zdCBNZWRpYVRpbWUmIGIpIGNvbnN0Citib29sIE1lZGlhVGltZTo6aXNCZXR3ZWVuKE1l
ZGlhVGltZSBhLCBNZWRpYVRpbWUgYikgY29uc3QKIHsKICAgICBpZiAoYSA+IGIpCiAgICAgICAg
IHJldHVybiAqdGhpcyA+IGIgJiYgKnRoaXMgPCBhOwogICAgIHJldHVybiAqdGhpcyA+IGEgJiYg
KnRoaXMgPCBiOwogfQogCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6emVyb1RpbWUoKQot
ewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgwLCAxLCBWYWxpZCk7Ci0gICAgcmV0
dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
Ci17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKC0xLCAxLCAwKTsKLSAgICByZXR1
cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgUG9zaXRp
dmVJbmZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFU
aW1lJiBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29u
c3QgTWVkaWFUaW1lIHRpbWUoLTEsIDEsIE5lZ2F0aXZlSW5maW5pdGUgfCBWYWxpZCk7Ci0gICAg
cmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbmRlZmluaXRl
VGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIEluZGVmaW5p
dGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6
OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykgY29u
c3QKK01lZGlhVGltZSBNZWRpYVRpbWU6OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwg
Um91bmRpbmdNb2RlIG1vZGUpIGNvbnN0CiB7CiAgICAgTWVkaWFUaW1lIHJlc3VsdCA9ICp0aGlz
OwotICAgIHJlc3VsdC5zZXRUaW1lU2NhbGUodGltZVNjYWxlLCBmbGFncyk7CisgICAgcmVzdWx0
LnNldFRpbWVTY2FsZSh0aW1lU2NhbGUsIG1vZGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGlu
Z0ZsYWdzIGZsYWdzKQordm9pZCBNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSh1aW50MzJfdCB0aW1l
U2NhbGUsIFJvdW5kaW5nTW9kZSBtb2RlKQogewogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKSB7
Ci0gICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVl
QXNEb3VibGUsIHRpbWVTY2FsZSk7CisgICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSwgdGltZVNjYWxlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmICghdGltZVNjYWxlKSB7Ci0gICAgICAgICp0aGlzID0gbV90aW1lVmFs
dWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
CisgICAgICAgICp0aGlzID0gbV92YWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDog
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh0aW1lU2NhbGUgPT0gbV90aW1lU2NhbGUpCisgICAgaWYgKHRpbWVTY2FsZSA9PSBtX3NjYWxl
KQogICAgICAgICByZXR1cm47CiAKICAgICB0aW1lU2NhbGUgPSBzdGQ6Om1pbihNYXhpbXVtVGlt
ZVNjYWxlLCB0aW1lU2NhbGUpOwogCi0gICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8
SW50MTI4PihtX3RpbWVWYWx1ZSkgKiB0aW1lU2NhbGU7Ci0gICAgaW50NjRfdCByZW1haW5kZXIg
PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1ZSAlIG1fdGltZVNjYWxlKTsKLSAgICBuZXdW
YWx1ZSA9IG5ld1ZhbHVlIC8gbV90aW1lU2NhbGU7CisgICAgSW50MTI4IG5ld1ZhbHVlID0gc3Rh
dGljX2Nhc3Q8SW50MTI4PihtX3ZhbHVlKSAqIHRpbWVTY2FsZTsKKyAgICBpbnQ2NF90IHJlbWFp
bmRlciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG5ld1ZhbHVlICUgbV9zY2FsZSk7CisgICAgbmV3
VmFsdWUgPSBuZXdWYWx1ZSAvIG1fc2NhbGU7CiAKICAgICBpZiAobmV3VmFsdWUgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkgewogICAgICAgICAqdGhpcyA9IG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CkBAIC01MDMsNDIgKzQyNCw0MiBAQCB2b2lkIE1lZGlhVGltZTo6c2V0
VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdGltZVZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4obmV3VmFsdWUpOwotICAgIHN0ZDo6c3dhcChtX3RpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAg
ICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG5ld1ZhbHVlKTsKKyAgICBhdXRvIG9s
ZFRpbWVTY2FsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9zY2FsZSwgdGltZVNjYWxlKTsKIAogICAgIGlm
ICghcmVtYWluZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVGbGFncyB8PSBIYXNC
ZWVuUm91bmRlZDsKLSAgICBzd2l0Y2ggKGZsYWdzKSB7Ci0gICAgY2FzZSBSb3VuZGluZ0ZsYWdz
OjpIYWxmQXdheUZyb21aZXJvOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGxh
YnMocmVtYWluZGVyKSkgKiAyID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVTY2FsZSkpIHsK
KyAgICBtX2ZsYWdzLmFkZChIYXNCZWVuUm91bmRlZCk7CisgICAgc3dpdGNoIChtb2RlKSB7Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm86CisgICAgICAgIGlmIChzdGQ6
OmFicyhyZW1haW5kZXIpICogMiA+PSBvbGRUaW1lU2NhbGUpIHsKICAgICAgICAgICAgIC8vIHJv
dW5kIHVwIChhd2F5IGZyb20gemVybykKICAgICAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQot
ICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlLS07CisgICAgICAgICAgICAgICAgLS1tX3ZhbHVl
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlKys7CisgICAg
ICAgICAgICAgICAgKyttX3ZhbHVlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAg
Y2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpU
b3dhcmRaZXJvOgogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6QXdh
eUZyb21aZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm86CiAgICAgICAg
IGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAgICAgICAg
ICAgIC0tbV92YWx1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsK
KyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5k
aW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CiAgICAgICAgIGlmIChyZW1haW5kZXIgPiAwKQotICAg
ICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eToKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToK
ICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZS0tOwor
ICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC01NDcs
NyArNDY4LDcgQEAgdm9pZCBNZWRpYVRpbWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKICAgICBvdXQucHJpbnQoInsiKTsKICAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpCi0gICAg
ICAgIG91dC5wcmludChtX3RpbWVWYWx1ZSwgIi8iLCBtX3RpbWVTY2FsZSwgIiA9ICIpOworICAg
ICAgICBvdXQucHJpbnQobV92YWx1ZSwgIi8iLCBtX3NjYWxlLCAiID0gIik7CiAgICAgb3V0LnBy
aW50KHRvRG91YmxlKCksICJ9Iik7CiB9CiAKQEAgLTU1Niw3ICs0NzcsNyBAQCBTdHJpbmcgTWVk
aWFUaW1lOjp0b1N0cmluZygpIGNvbnN0CiAgICAgY29uc3QgY2hhciogaW52YWxpZCA9IGlzSW52
YWxpZCgpID8gIiwgaW52YWxpZCIgOiAiIjsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwot
ICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV90aW1lVmFsdWUsICcvJywgbV90aW1lU2NhbGUs
ICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KCd7JywgbV92YWx1ZSwgJy8nLCBtX3NjYWxlLCAiID0gIiwgdG9Eb3VibGUoKSwgaW52YWxpZCwg
J30nKTsKIH0KIAogUmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBj
b25zdApAQCAtNTc5LDkgKzUwMCw5IEBAIFJlZjxKU09OOjpPYmplY3Q+IE1lZGlhVGltZTo6dG9K
U09OT2JqZWN0KCkgY29uc3QKICAgICBlbHNlCiAgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2
YWx1ZSJfcywgdG9Eb3VibGUoKSk7CiAKLSAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9y
Il9zLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSk7Ci0gICAgb2JqZWN0LT5zZXRJ
bnRlZ2VyKCJkZW5vbWluYXRvciJfcywgbV90aW1lU2NhbGUpOwotICAgIG9iamVjdC0+c2V0SW50
ZWdlcigiZmxhZ3MiX3MsIG1fdGltZUZsYWdzKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgibnVt
ZXJhdG9yIl9zLCBtX3ZhbHVlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9y
Il9zLCBtX3NjYWxlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX2ZsYWdz
LnRvUmF3KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTU5MSwzMyArNTEyLDI4IEBA
IFN0cmluZyBNZWRpYVRpbWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRvSlNP
Tk9iamVjdCgpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotTWVkaWFUaW1lIGFicyhjb25zdCBNZWRp
YVRpbWUmIHJocykKK01lZGlhVGltZSBhYnMoTWVkaWFUaW1lIHRpbWUpCiB7Ci0gICAgaWYgKHJo
cy5pc0ludmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsK
LSAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0aXZlSW5maW5p
dGUoKSkKKyAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAocmhzLmhhc0RvdWJs
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZmFi
cyhyaHMubV90aW1lVmFsdWVBc0RvdWJsZSkpOwotCi0gICAgTWVkaWFUaW1lIHZhbCA9IHJoczsK
LSAgICB2YWwubV90aW1lVmFsdWUgPSBzdGQ6OmFicyhyaHMubV90aW1lVmFsdWUpOwotICAgIHJl
dHVybiB2YWw7CisgICAgaWYgKHRpbWUuaGFzRG91YmxlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGQ6OmFicyh0aW1lLm1fdmFsdWVBc0RvdWJs
ZSkpOworICAgIE1lZGlhVGltZSByZXN1bHQgPSB0aW1lOworICAgIHJlc3VsdC5tX3ZhbHVlID0g
c3RkOjphYnMocmVzdWx0Lm1fdmFsdWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmlu
ZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KICAgICBvYmplY3QtPnNldE9iamVjdCgic3Rh
cnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKICAgICBvYmplY3QtPnNldE9iamVjdCgiZW5k
Il9zLCBlbmQudG9KU09OT2JqZWN0KCkpOwotCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3Ry
aW5nKCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCitUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgTWVkaWFUaW1lIHRpbWUpCiB7CiAgICAgcmV0dXJu
IHN0cmVhbSA8PCB0aW1lLnRvSlNPTlN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAppbmRleCA3MWFj
ZjMyOWViMzk4OTMzNTEyZmQ3ZjNmNThkNjBiZWNmZjIzYzUwLi4wNjE0NzI1ZmRmN2ZlMjMwMGQ0
OWM2ODA5OTNmZWMxMTFmOTk0MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRp
bWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApAQCAtMzAsMjEgKzMwLDE2IEBA
CiAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxjbWF0aD4K
LSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGludC5o
PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNz
IFByaW50U3RyZWFtOwogCi1jbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGZpbmFs
IHsKK2NsYXNzIE1lZGlhVGltZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZW51bSB7CisgICAgZW51bSBGbGFnIDogdWludDhfdCB7CiAgICAgICAg
IFZhbGlkID0gMSA8PCAwLAogICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwKICAgICAg
ICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwKQEAgLTUyLDY3ICs0Nyw2NSBAQCBwdWJsaWM6
CiAgICAgICAgIEluZGVmaW5pdGUgPSAxIDw8IDQsCiAgICAgICAgIERvdWJsZVZhbHVlID0gMSA8
PCA1LAogICAgIH07Ci0KLSAgICBjb25zdGV4cHIgTWVkaWFUaW1lKCk7Ci0gICAgY29uc3RleHBy
IE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgdWludDhfdCBmbGFncyA9
IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpOwotCi0gICAgc3Rh
dGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKTsKLSAgICBzdGF0
aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIHVpbnQzMl90IHRp
bWVTY2FsZSk7Ci0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBk
b3VibGVUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91Ymxl
IGRvdWJsZVRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0KLSAgICBmbG9hdCB0b0Zsb2F0KCkg
Y29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7Ci0KLSAgICBNZWRpYVRpbWUmIG9w
ZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocyk7Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvcis9
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9Ci0g
ICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAq
dGhpcyA9ICp0aGlzIC0gcmhzOyB9Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRp
YVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRp
bWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0OwotICAgIE1l
ZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29u
c3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBMZXNzVGhh
bjsgfQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJl
dHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVh
bFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7
IHJldHVybiBjb21wYXJlKHJocykgPT0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShj
b25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFs
VG87IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsg
cmV0dXJuIGNvbXBhcmUocmhzKSA8PSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdDsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVm
IGVudW0geworICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoKSA6IE1lZGlhVGltZSB7IGludDY0X3Qg
eyB9LCBEZWZhdWx0VGltZVNjYWxlIH0geyB9CisgICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2
NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgT3B0aW9uU2V0PEZsYWc+ID0geyBWYWxpZCB9KTsK
KworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9h
dChmbG9hdCB2YWx1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUg
Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlLCB1aW50MzJfdCBzY2FsZSk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFs
dWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhE
b3VibGUoZG91YmxlIHZhbHVlLCB1aW50MzJfdCBzY2FsZSk7CisKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgZmxvYXQgdG9GbG9hdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3Vi
bGUgdG9Eb3VibGUoKSBjb25zdDsKKworICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShNZWRpYVRp
bWUgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9CisgICAgTWVkaWFUaW1lJiBv
cGVyYXRvci09KE1lZGlhVGltZSByaHMpIHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKyhNZWRpYVRpbWUpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgb3BlcmF0b3ItKE1lZGlhVGlt
ZSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvci0oKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90
KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPChNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVy
biBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47IH0KKyAgICBib29sIG9wZXJhdG9yPihNZWRpYVRp
bWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KKyAg
ICBib29sIG9wZXJhdG9yIT0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShy
aHMpICE9IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPT0oTWVkaWFUaW1lIHJocykgY29u
c3QgeyByZXR1cm4gY29tcGFyZShyaHMpID09IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9y
Pj0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87
IH0KKyAgICBib29sIG9wZXJhdG9yPD0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29t
cGFyZShyaHMpIDw9IEVxdWFsVG87IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVy
YXRvciEoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0OworCisgICAgZW51bSBDb21wYXJpc29uRmxhZ3MgewogICAgICAgICBMZXNz
VGhhbiA9IC0xLAogICAgICAgICBFcXVhbFRvID0gMCwKICAgICAgICAgR3JlYXRlclRoYW4gPSAx
LAotICAgIH0gQ29tcGFyaXNvbkZsYWdzOworICAgIH07CisgICAgZnJpZW5kIFdURl9FWFBPUlRf
UFJJVkFURSBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFncyBvcmRlcmluZyhNZWRpYVRpbWUsIE1l
ZGlhVGltZSk7CisgICAgQ29tcGFyaXNvbkZsYWdzIGNvbXBhcmUoTWVkaWFUaW1lIG90aGVyKSBj
b25zdCB7IHJldHVybiBvcmRlcmluZygqdGhpcywgb3RoZXIpOyB9CiAKLSAgICBDb21wYXJpc29u
RmxhZ3MgY29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgYm9vbCBpc0Jl
dHdlZW4oY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNCZXR3ZWVuKE1lZGlhVGltZSwgTWVkaWFUaW1lKSBjb25z
dDsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFs
aWQ7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5z
KFZhbGlkKTsgfQogICAgIGJvb2wgaXNJbnZhbGlkKCkgY29uc3QgeyByZXR1cm4gIWlzVmFsaWQo
KTsgfQotICAgIGJvb2wgaGFzQmVlblJvdW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFn
cyAmIEhhc0JlZW5Sb3VuZGVkOyB9Ci0gICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25z
dCB7IHJldHVybiBtX3RpbWVGbGFncyAmIFBvc2l0aXZlSW5maW5pdGU7IH0KLSAgICBib29sIGlz
TmVnYXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgTmVnYXRpdmVJ
bmZpbml0ZTsgfQotICAgIGJvb2wgaXNJbmRlZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
RmxhZ3MgJiBJbmRlZmluaXRlOyB9CisgICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoSGFzQmVlblJvdW5kZWQpOyB9CisgICAgYm9vbCBpc1Bv
c2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFBvc2l0aXZl
SW5maW5pdGUpOyB9CisgICAgYm9vbCBpc05lZ2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzLmNvbnRhaW5zKE5lZ2F0aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBpc0luZGVm
aW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEluZGVmaW5pdGUpOyB9CiAg
ICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0IHsgcmV0dXJuICFpc0ludmFsaWQoKSAmJiAhaXNJbmRl
ZmluaXRlKCkgJiYgIWlzUG9zaXRpdmVJbmZpbml0ZSgpICYmICFpc05lZ2F0aXZlSW5maW5pdGUo
KTsgfQotICAgIGJvb2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFn
cyAmIERvdWJsZVZhbHVlOyB9Ci0gICAgdWludDhfdCB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVGbGFnczsgfQorICAgIGJvb2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzLmNvbnRhaW5zKERvdWJsZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxGbGFnPiB0
aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAKLSAgICBzdGF0aWMgY29uc3Qg
TWVkaWFUaW1lJiB6ZXJvVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGludmFs
aWRUaW1lKCk7Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVJbmZpbml0ZVRp
bWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgp
OwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGluZGVmaW5pdGVUaW1lKCk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgemVyb1RpbWUoKSB7IHJldHVybiB7IDAsIDEsIFZhbGlk
IH07IH0KKyAgICBzdGF0aWMgY29uc3RleHByIE1lZGlhVGltZSBpbnZhbGlkVGltZSgpIHsgcmV0
dXJuIHsgLTEsIDEsIHsgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVybiB7IDAsIDEsIHsgUG9zaXRpdmVJbmZpbml0ZSwg
VmFsaWQgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSB7IHJldHVybiB7IC0xLCAxLCB7IE5lZ2F0aXZlSW5maW5pdGUsIFZhbGlkIH0g
fTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFUaW1lIGluZGVmaW5pdGVUaW1lKCkgeyBy
ZXR1cm4geyAwLCAxLCB7IEluZGVmaW5pdGUsIFZhbGlkIH0gfTsgfQogCi0gICAgY29uc3QgaW50
NjRfdCYgdGltZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lVmFsdWU7IH0KLSAgICBjb25z
dCB1aW50MzJfdCYgdGltZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKyAg
ICBpbnQ2NF90IHRpbWVWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFoYXNEb3VibGVWYWx1ZSgpKTsg
cmV0dXJuIG1fdmFsdWU7IH0KKyAgICB1aW50MzJfdCB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVy
biBtX3NjYWxlOyB9CiAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNv
bnN0OwotICAgIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgUmVmPEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7CiAKICAgICAvLyBNYWtl
IHRoZSBmb2xsb3dpbmcgY2FzdHMgZXJyb3JzOgogICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0
ID0gZGVsZXRlOwpAQCAtMTIwLDkzICsxMTMsOTkgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIGlu
dCgpIGNvbnN0ID0gZGVsZXRlOwogICAgIE1lZGlhVGltZShpbnQpID0gZGVsZXRlOwogCi0gICAg
ZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYg
cmhzKTsKKyAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFU
aW1lKTsKIAotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAw
MDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1heGltdW1UaW1lU2NhbGU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBjb25zdCB1aW50MzJfdCBNYXhpbXVtVGltZVNj
YWxlOwogCi0gICAgZW51bSBjbGFzcyBSb3VuZGluZ0ZsYWdzIHsKLSAgICAgICAgSGFsZkF3YXlG
cm9tWmVybyA9IDAsCisgICAgZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgeworICAgICAgICBIYWxm
QXdheUZyb21aZXJvLAogICAgICAgICBUb3dhcmRaZXJvLAogICAgICAgICBBd2F5RnJvbVplcm8s
CiAgICAgICAgIFRvd2FyZFBvc2l0aXZlSW5maW5pdHksCiAgICAgICAgIFRvd2FyZE5lZ2F0aXZl
SW5maW5pdHksCiAgICAgfTsKLQotICAgIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50MzJfdCwg
Um91bmRpbmdGbGFncyA9IFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3Qgc2Nh
bGUsIFJvdW5kaW5nTW9kZSA9IFJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgTWVkaWFUaW1lJik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBzZXRUaW1lU2NhbGUodWludDMyX3QsIFJvdW5kaW5nRmxhZ3MgPSBSb3VuZGluZ0ZsYWdzOjpI
YWxmQXdheUZyb21aZXJvKTsKKyAgICBlbnVtIFVzZURvdWJsZUZsYWcgeyBVc2VEb3VibGUgfTsK
KyAgICBjb25zdGV4cHIgTWVkaWFUaW1lKFVzZURvdWJsZUZsYWcsIGRvdWJsZSB2YWx1ZSk7CisK
KyAgICB2b2lkIHNldFRpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdN
b2RlOjpIYWxmQXdheUZyb21aZXJvKTsKIAogICAgIHVuaW9uIHsKLSAgICAgICAgaW50NjRfdCBt
X3RpbWVWYWx1ZTsKLSAgICAgICAgZG91YmxlIG1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAg
IGludDY0X3QgbV92YWx1ZTsKKyAgICAgICAgZG91YmxlIG1fdmFsdWVBc0RvdWJsZTsKICAgICB9
OwotICAgIHVpbnQzMl90IG1fdGltZVNjYWxlOwotICAgIHVpbnQ4X3QgbV90aW1lRmxhZ3M7Cisg
ICAgdWludDMyX3QgbV9zY2FsZSB7IERlZmF1bHRUaW1lU2NhbGUgfTsKKyAgICBPcHRpb25TZXQ8
RmxhZz4gbV9mbGFncyB7IFZhbGlkIH07CiB9OwogCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRp
YVRpbWUoKQotICAgIDogbV90aW1lVmFsdWUoMCkKLSAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRU
aW1lU2NhbGUpCi0gICAgLCBtX3RpbWVGbGFncyhWYWxpZCkKLXsKLX0KLQotY29uc3RleHByIE1l
ZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50OF90
IGZsYWdzKQotICAgIDogbV90aW1lVmFsdWUodmFsdWUpCi0gICAgLCBtX3RpbWVTY2FsZShzY2Fs
ZSkKLSAgICAsIG1fdGltZUZsYWdzKGZsYWdzKQotewotICAgIGlmIChzY2FsZSB8fCAhKGZsYWdz
ICYgVmFsaWQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotfQorV1RGX0VY
UE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFUaW1lKTsKIAotaW5saW5lIE1lZGlhVGlt
ZSBvcGVyYXRvciooaW50MzJfdCBsaHMsIGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiBy
aHMub3BlcmF0b3IqKGxocyk7IH0KLQotV1RGX0VYUE9SVF9QUklWQVRFIGV4dGVybiBNZWRpYVRp
bWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKLQotc3RydWN0IFdURl9FWFBPUlRfUFJJVkFU
RSBNZWRpYVRpbWVSYW5nZSB7CitzdHJ1Y3QgTWVkaWFUaW1lUmFuZ2UgewogICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0Owog
Ci0gICAgY29uc3QgTWVkaWFUaW1lIHN0YXJ0OwotICAgIGNvbnN0IE1lZGlhVGltZSBlbmQ7Cisg
ICAgTWVkaWFUaW1lIHN0YXJ0OworICAgIE1lZGlhVGltZSBlbmQ7CiB9OwogCi10ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgotdm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAorY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQz
Ml90IHNjYWxlLCBPcHRpb25TZXQ8RmxhZz4gZmxhZ3MpCisgICAgOiBtX3ZhbHVlKHZhbHVlKQor
ICAgICwgbV9zY2FsZShzY2FsZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCit7CisgICAgaWYgKCEo
c2NhbGUgfHwgIShmbGFncyAmIFZhbGlkKSkpCisgICAgICAgICp0aGlzID0gdmFsdWUgPCAwID8g
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGNvbnN0IFQmIGEs
IE1lZGlhVGltZSBiKQogewotICAgIGVuY29kZXIgPDwgbV90aW1lVmFsdWUgPDwgbV90aW1lU2Nh
bGUgPDwgbV90aW1lRmxhZ3M7CisgICAgcmV0dXJuIGIgKiBhOwogfQogCi10ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotYm9vbCBNZWRpYVRpbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRp
YVRpbWUmIHRpbWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIE1lZGlhVGltZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVj
b2RlKHRpbWUubV90aW1lVmFsdWUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90
aW1lU2NhbGUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lRmxhZ3MpOwor
ICAgIGVuY29kZXIgPDwgbV92YWx1ZSA8PCBtX3NjYWxlIDw8IG1fZmxhZ3M7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIERlY29kZXI+IGJvb2wgTWVkaWFUaW1lOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0aW1l
Lm1fdmFsdWUpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV9zY2FsZSkKKyAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX2ZsYWdzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8
TWVkaWFUaW1lPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBNZWRpYVRpbWUm
IHRpbWUpIHsgcmV0dXJuIHRpbWUudG9KU09OU3RyaW5nKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nKE1lZGlhVGltZSB0aW1lKSB7IHJldHVybiB0aW1lLnRvSlNPTlN0cmluZygpOyB9
CiB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lUmFuZ2U+IHsKICAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE1lZGlhVGltZVJhbmdlJiByYW5nZSkgeyBy
ZXR1cm4gcmFuZ2UudG9KU09OU3RyaW5nKCk7IH0KIH07CiAKICNpZm5kZWYgTkRFQlVHCi1XVEZf
RVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
TWVkaWFUaW1lJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgTWVkaWFUaW1lKTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPE1lZGlhVGltZTo6RmxhZz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIE1lZGlhVGltZTo6RmxhZywKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpWYWxp
ZCwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpIYXNCZWVuUm91bmRlZCwKKyAgICAgICAgTWVk
aWFUaW1lOjpGbGFnOjpQb3NpdGl2ZUluZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6
Ok5lZ2F0aXZlSW5maW5pdGUsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6SW5kZWZpbml0ZSwK
KyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpEb3VibGVWYWx1ZQorICAgID47Cit9OworCiB9CiAK
IHVzaW5nIFdURjo6TWVkaWFUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25k
cy5oIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCmluZGV4IGQyODJkYmJmNzE1YmU3NDI3ODll
YTEwZjFjY2IyOWFkMTQ1MzU2NGYuLjFhMjk2NGM2ZGVhMTU1ZDkzNmUwNGI1MmUzMzIzZjMyYWYx
NmI0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TZWNvbmRzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM3Miw0
ICszNzMsMyBAQCBpbmxpbmUgYm9vbCBpc2Zpbml0ZShXVEY6OlNlY29uZHMgc2Vjb25kcykKIH0g
Ly8gbmFtZXNwYWNlIHN0ZAogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpzZWNvbmRzX2xpdGVyYWxz
OwotdXNpbmcgV1RGOjpTZWNvbmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmlu
ZGV4IGZkNTU5YjI0MmRkZmZkNWU4ZDhmMTMzZWM0MTNiYTNhYjViNTI2NDcuLmU1YTNjYjYzNWVh
ZjFjYTg4OWRkMjIwOTc1MjVmY2Q0MjhlMzE4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmlt
aXRpdmVzLmgKQEAgLTMyLDkgKzMyLDkgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDQ0OGRkZWUyMTYwZWYxOGNhNWUwNjYxMzkwZTU5OGQ1M2JjNTRkMmEuLjBjOGYz
MzE1MGIxNTM0ODRmZDRjMWM4YWQwMDFhNDlmYmJmYWFmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFy
cmF5TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9V
VUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtOTIyLDcgKzkyMyw3IEBA
IGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpCiAKICAgICAvLyBUaGlzIGJsb2NrZWQg
cG9ydCBsaXN0IG1hdGNoZXMgdGhlIHBvcnQgYmxvY2tpbmcgdGhhdCBNb3ppbGxhIGltcGxlbWVu
dHMuCiAgICAgLy8gU2VlIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbmV0bGliL1Bv
cnRCYW5uaW5nLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgc3RhdGljIGNvbnN0IHVp
bnQxNl90IGJsb2NrZWRQb3J0TGlzdFtdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2
X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7CiAgICAgICAgIDEsICAgIC8vIHRjcG11eAogICAgICAg
ICA3LCAgICAvLyBlY2hvCiAgICAgICAgIDksICAgIC8vIGRpc2NhcmQKQEAgLTEwMDYsMTAgKzEw
MDcsMTAgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICAgICAgNjY5Nywg
Ly8gSVJDK1NTTCBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAgIDEwMDgwLCAvLyBhbWFuZGEKICAg
ICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgYmxvY2tlZFBvcnRTZXQg
eyBibG9ja2VkUG9ydExpc3QgfTsKIAogICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUg
YmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChz
dGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsK
LSAgICBpZiAoIXN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCks
IHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCisgICAgaWYgKCFibG9j
a2VkUG9ydFNldC5jb250YWlucygqcG9ydCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV2FsbFRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dh
bGxUaW1lLmgKaW5kZXggNTQzOGNjMDFiNjFhYTlmNmM3YzQ1NmU1Zjg5MWU0NDY2ZjczM2JiYy4u
MWNlOGQzNzU1NjFkMjliNTg5NjFiZTNmY2YxOTM5NDA0ZmU4ODk4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvV2FsbFRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9DbG9ja1R5cGUu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9HZW5lcmljVGltZU1p
eGluLmg+CiAjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogCkBAIC05OSw1ICsxMDAsMyBAQCBpbmxp
bmUgYm9vbCBpc2Zpbml0ZShXVEY6OldhbGxUaW1lIHRpbWUpCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IHN0ZAotCi11c2luZyBXVEY6OldhbGxUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXIuaAppbmRleCBhZmMzM2YzOGQ0MjMzNWJkOWU2MTI2YTRhNzhhNTA3
MTBkYjI2MDhhLi4yMDdmYTA0NDY5ZmI5NDgzODc2OGU5ZjQxYTJhMzI4OTdmNWNiMDhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaApAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8b3B0aW9uYWw+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9U
aHJlYWRpbmdQT1NJWC5jcHAKaW5kZXggZDkyNDQ5MGQxYjU3ZjNlZTA2ZWU1ZWFkOGEyZDNjMTFj
MjBjYjVkMS4uNmQzNDBlNDZmMmIyODQ0MGIxMTNlZDc3MDllYTM3MTAxYTgyZjg1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvV29yZExvY2suaD4KIAogI2lmIE9TKExJTlVYKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90
aHJlYWRzL1NpZ25hbHMuaAppbmRleCA4YjQwYzE0Yzg0MjNmZDRlY2JmNjM1MDZkNjBiZmYxYzBm
ZDg1NjBmLi45ZjE4NmY2MzU0ODQxYTc1NWFiYzBkODllYzMzZjBiNWZlMGVmODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgT1MoVU5JWCkKIAor
I2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHR1cGxl
PgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
d2luL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNw
cAppbmRleCBkYzI0ODlmZjg5ZThmOWY4OTE0YmM4ZTNmYzI5NjZmNGRlZWU1NzRlLi5hOWY1OTUy
NGFmYzVjYmM3MzZmYmM0ZTgxNmRjZGJlZGM3ZjkwYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFk
aW5nV2luLmNwcApAQCAtOTUsNiArOTUsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAppbmRleCA5MjYyMjE3MGM4YWFkNjk4OWI4YTEy
Y2U0ODM1NmRjNjg3YmY2ZTM1Li5lMjJjYzk0NjZhN2FhMzdkMTc1Nzg3NTVlZTNkNjRiZDBmMmFm
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmNwcAppbmRleCAwNjU5ODQwNjg5ZTRhYmI1MjIwZTViZGQ4MDUyM2Q3NDAyZjRhY2Uy
Li44ODhiZWYzMjM2ODJlYTIyOTk3ZWY2NDA5YTBkNzFkODU1ZmZmZWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5jcHAKQEAgLTMyLDM3ICszMiwyOCBAQAogCiBuYW1lc3BhY2UgUEFMIHsKIAot
c3RhdGljIGJvb2wgQ01UaW1lSGFzRmxhZ3MoY29uc3QgQ01UaW1lJiBjbVRpbWUsIHVpbnQzMl90
IGZsYWdzKQorTWVkaWFUaW1lIHRvTWVkaWFUaW1lKENNVGltZSB0aW1lKQogewotICAgIHJldHVy
biAoY21UaW1lLmZsYWdzICYgZmxhZ3MpID09IGZsYWdzOworICAgIE9wdGlvblNldDxNZWRpYVRp
bWU6OkZsYWc+IGZsYWdzOworICAgIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX1ZhbGlk
KSB7CisgICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6OlZhbGlkKTsKKyAgICAgICAgaWYgKHRp
bWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3NfUG9zaXRpdmVJbmZpbml0eSkKKyAgICAgICAgICAgIGZs
YWdzLmFkZChNZWRpYVRpbWU6OlBvc2l0aXZlSW5maW5pdGUpOworICAgICAgICBlbHNlIGlmICh0
aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHkpCisgICAgICAgICAgICBm
bGFncy5hZGQoTWVkaWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
dGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKQorICAgICAgICAgICAgZmxhZ3Mu
YWRkKE1lZGlhVGltZTo6SW5kZWZpbml0ZSk7CisgICAgfQorICAgIHJldHVybiBNZWRpYVRpbWUo
dGltZS52YWx1ZSwgdGltZS50aW1lc2NhbGUsIGZsYWdzKTsKIH0KIAotTWVkaWFUaW1lIHRvTWVk
aWFUaW1lKGNvbnN0IENNVGltZSYgY21UaW1lKQotewotICAgIHVpbnQzMl90IGZsYWdzID0gMDsK
LSAgICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQpKQotICAg
ICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OlZhbGlkOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhj
bVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19IYXNCZWVuUm91bmRlZCkp
Ci0gICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6SGFzQmVlblJvdW5kZWQ7Ci0gICAgaWYgKENN
VGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX1Bv
c2l0aXZlSW5maW5pdHkpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OlBvc2l0aXZlSW5m
aW5pdGU7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlk
IHwga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHkpKQotICAgICAgICBmbGFncyB8PSBNZWRp
YVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGU7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwg
a0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX0luZGVmaW5pdGUpKQotICAgICAgICBm
bGFncyB8PSBNZWRpYVRpbWU6OkluZGVmaW5pdGU7Ci0KLSAgICByZXR1cm4gTWVkaWFUaW1lKGNt
VGltZS52YWx1ZSwgY21UaW1lLnRpbWVzY2FsZSwgZmxhZ3MpOwotfQotCi1DTVRpbWUgdG9DTVRp
bWUoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpCitDTVRpbWUgdG9DTVRpbWUoTWVkaWFUaW1l
IG1lZGlhVGltZSkKIHsKICAgICBDTVRpbWUgdGltZTsKLQogICAgIGlmIChtZWRpYVRpbWUuaGFz
RG91YmxlVmFsdWUoKSkKICAgICAgICAgdGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyhtZWRp
YVRpbWUudG9Eb3VibGUoKSwgbWVkaWFUaW1lLnRpbWVTY2FsZSgpKTsKICAgICBlbHNlCiAgICAg
ICAgIHRpbWUgPSBDTVRpbWVNYWtlKG1lZGlhVGltZS50aW1lVmFsdWUoKSwgbWVkaWFUaW1lLnRp
bWVTY2FsZSgpKTsKLQogICAgIGlmIChtZWRpYVRpbWUuaXNWYWxpZCgpKQogICAgICAgICB0aW1l
LmZsYWdzIHw9IGtDTVRpbWVGbGFnc19WYWxpZDsKICAgICBpZiAobWVkaWFUaW1lLmhhc0JlZW5S
b3VuZGVkKCkpCkBAIC03MSw3ICs2Miw2IEBAIENNVGltZSB0b0NNVGltZShjb25zdCBNZWRpYVRp
bWUmIG1lZGlhVGltZSkKICAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfUG9zaXRp
dmVJbmZpbml0eTsKICAgICBpZiAobWVkaWFUaW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAg
ICAgICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5OwotCiAgICAg
cmV0dXJuIHRpbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZm
b3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKaW5kZXggYjNkYmUxN2FhOWJj
MTI1MWRjZTJlYzhhZGVlN2NiODQ5NDc5YmY3MC4uYTJiY2RhZTlmOGU5OWQwZjA0ZTNmM2MzZWQy
MGEzZjM2YTI5MDZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5k
YXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKQEAgLTMyLDggKzMyLDggQEAK
IAogbmFtZXNwYWNlIFBBTCB7CiAKLVBBTF9FWFBPUlQgQ01UaW1lIHRvQ01UaW1lKGNvbnN0IE1l
ZGlhVGltZSYpOwotUEFMX0VYUE9SVCBNZWRpYVRpbWUgdG9NZWRpYVRpbWUoY29uc3QgQ01UaW1l
Jik7CitQQUxfRVhQT1JUIENNVGltZSB0b0NNVGltZShNZWRpYVRpbWUpOworUEFMX0VYUE9SVCBN
ZWRpYVRpbWUgdG9NZWRpYVRpbWUoQ01UaW1lKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCAwZTFhZDcyNDVmZTE2
ZTFlOTZlM2RhMWNiNTg0YjlhNGE2ZDg5ZjNiLi44NDQ2ZGI5ODU1MWUwYzUzODJhOTZmZjg0NzFm
YmI2NzIzMTBjNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTExOSwxMCArMTE5LDEwIEBAIHN0YXRpYyBpbmxpbmUgR2Fw
TGVuZ3RoIGJsZW5kRnVuYyhjb25zdCBHYXBMZW5ndGgmIGZyb20sIGNvbnN0IEdhcExlbmd0aCYg
dG8sIGNvCiAgICAgcmV0dXJuIGJsZW5kKGZyb20ubGVuZ3RoKCksIHRvLmxlbmd0aCgpLCBjb250
ZXh0LCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgVGFiU2l6
ZSBibGVuZEZ1bmMoY29uc3QgVGFiU2l6ZSYgZnJvbSwgY29uc3QgVGFiU2l6ZSYgdG8sIGNvbnN0
IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQorc3RhdGljIGlubGluZSBUYWJT
aXplIGJsZW5kRnVuYyhUYWJTaXplIGZyb20sIFRhYlNpemUgdG8sIGNvbnN0IENTU1Byb3BlcnR5
QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8gYmxlbmRlZFZhbHVlID0gYmxl
bmQoZnJvbS52YWx1ZSgpLCB0by52YWx1ZSgpLCBjb250ZXh0KTsKLSAgICByZXR1cm4geyBibGVu
ZGVkVmFsdWUgPCAwID8gMCA6IGJsZW5kZWRWYWx1ZSwgZnJvbS5pc1NwYWNlcygpID8gU3BhY2VW
YWx1ZVR5cGUgOiBMZW5ndGhWYWx1ZVR5cGUgfTsKKyAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9IGJs
ZW5kKGZyb20udmFsdWUsIHRvLnZhbHVlLCBjb250ZXh0KTsKKyAgICByZXR1cm4geyBibGVuZGVk
VmFsdWUgPCAwID8gMCA6IGJsZW5kZWRWYWx1ZSwgZnJvbS5pc1NwYWNlcyA/IFRhYlNpemU6OlNw
YWNlcyA6IFRhYlNpemU6Okxlbmd0aCB9OwogfQogCiBzdGF0aWMgaW5saW5lIExlbmd0aFNpemUg
YmxlbmRGdW5jKGNvbnN0IExlbmd0aFNpemUmIGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRvLCBj
b25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKQEAgLTk3OCwxMCArOTc4
LDkgQEAgcHJpdmF0ZToKICAgICAvLyBpdCdzIG9ubHkgcG9zc2libGUgaWYgdGhleSdyZSBib3Ro
IG5vdCBhdXRvLgogICAgIGJvb2wgY2FuSW50ZXJwb2xhdGUoY29uc3QgUmVuZGVyU3R5bGUmIGZy
b20sIGNvbnN0IFJlbmRlclN0eWxlJiB0bywgQ29tcG9zaXRlT3BlcmF0aW9uKSBjb25zdCBmaW5h
bAogICAgIHsKLSAgICAgICAgYm9vbCBmcm9tSXNBdXRvID0gdmFsdWUoZnJvbSkueCgpLmlzQXV0
bygpICYmIHZhbHVlKGZyb20pLnkoKS5pc0F1dG8oKTsKLSAgICAgICAgYm9vbCB0b0lzQXV0byA9
IHZhbHVlKHRvKS54KCkuaXNBdXRvKCkgJiYgdmFsdWUodG8pLnkoKS5pc0F1dG8oKTsKLQotICAg
ICAgICByZXR1cm4gKCFmcm9tSXNBdXRvICYmICF0b0lzQXV0byk7IAorICAgICAgICBib29sIGZy
b21Jc0F1dG8gPSB2YWx1ZShmcm9tKS54LmlzQXV0bygpICYmIHZhbHVlKGZyb20pLnkuaXNBdXRv
KCk7CisgICAgICAgIGJvb2wgdG9Jc0F1dG8gPSB2YWx1ZSh0bykueC5pc0F1dG8oKSAmJiB2YWx1
ZSh0bykueS5pc0F1dG8oKTsKKyAgICAgICAgcmV0dXJuICFmcm9tSXNBdXRvICYmICF0b0lzQXV0
bzsKICAgICB9CiB9OwogCkBAIC0xMjkyLDIwICsxMjkxLDIwIEBAIHN0YXRpYyBpbmxpbmUgc2l6
ZV90IHNoYWRvd0xpc3RMZW5ndGgoY29uc3QgU2hhZG93RGF0YSogc2hhZG93KQogICAgIHJldHVy
biBjb3VudDsKIH0KIAotc3RhdGljIGlubGluZSBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dGb3JC
bGVuZGluZyhjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90
aGVyU2hhZG93KQorc3RhdGljIGlubGluZSBjb25zdCBTaGFkb3dEYXRhJiBzaGFkb3dGb3JCbGVu
ZGluZyhjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVy
U2hhZG93KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0
U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgo
TGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExl
bmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgZmFsc2UsIENvbG9yOjp0cmFu
c3BhcmVudEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVm
YXVsdEluc2V0U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQp
LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCBmYWxzZSwgQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dE
YXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3Ro
VHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5
cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1h
bCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBv
aW50KExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkp
LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBT
aGFkb3dTdHlsZTo6SW5zZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoTGVuZ3Ro
UG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBM
ZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFk
b3dTdHlsZTo6Tm9ybWFsLCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKExl
bmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0g
fSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
U2hhZG93U3R5bGU6Okluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hhZG93
RGF0YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpG
aXhlZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2Vi
S2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBM
ZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChM
ZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5z
cGFyZW50QmxhY2spOwogCiAgICAgaWYgKHNyY1NoYWRvdykKLSAgICAgICAgcmV0dXJuIHNyY1No
YWRvdzsKKyAgICAgICAgcmV0dXJuICpzcmNTaGFkb3c7CiAKICAgICBpZiAob3RoZXJTaGFkb3ct
PnN0eWxlKCkgPT0gU2hhZG93U3R5bGU6Okluc2V0KQotICAgICAgICByZXR1cm4gb3RoZXJTaGFk
b3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0
YS5nZXQoKSA6ICZkZWZhdWx0SW5zZXRTaGFkb3dEYXRhLmdldCgpOworICAgICAgICByZXR1cm4g
b3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyBkZWZhdWx0SW5zZXRXZWJLaXRCb3hT
aGFkb3dEYXRhLmdldCgpIDogZGVmYXVsdEluc2V0U2hhZG93RGF0YS5nZXQoKTsKIAotICAgIHJl
dHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0V2ViS2l0Qm94
U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZhdWx0U2hhZG93RGF0YS5nZXQoKTsKKyAgICByZXR1cm4g
b3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyBkZWZhdWx0V2ViS2l0Qm94U2hhZG93
RGF0YS5nZXQoKSA6IGRlZmF1bHRTaGFkb3dEYXRhLmdldCgpOwogfQogCiBjbGFzcyBQcm9wZXJ0
eVdyYXBwZXJTaGFkb3cgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFz
ZSB7CkBAIC0xNDI4LDExICsxNDI3LDExIEBAIHByaXZhdGU6CiAgICAgICAgIFNoYWRvd0RhdGEq
IGxhc3RTaGFkb3cgPSBudWxscHRyOwogCiAgICAgICAgIHdoaWxlIChzaGFkb3dBIHx8IHNoYWRv
d0IpIHsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0Zv
ckJsZW5kaW5nKHNoYWRvd0EsIHNoYWRvd0IpOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0
YSogZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CisgICAg
ICAgICAgICBhdXRvJiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dBLCBzaGFk
b3dCKTsKKyAgICAgICAgICAgIGF1dG8mIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNo
YWRvd0IsIHNoYWRvd0EpOwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0
YT4gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYyhzcmNTaGFkb3csIGRzdFNoYWRvdywgY29udGV4
dCk7Ci0gICAgICAgICAgICBTaGFkb3dEYXRhKiBibGVuZGVkU2hhZG93UHRyID0gYmxlbmRlZFNo
YWRvdy5nZXQoKTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYygm
c3JjU2hhZG93LCAmZHN0U2hhZG93LCBjb250ZXh0KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRl
ZFNoYWRvd1B0ciA9IGJsZW5kZWRTaGFkb3cuZ2V0KCk7CiAKICAgICAgICAgICAgIGlmICghbGFz
dFNoYWRvdykKICAgICAgICAgICAgICAgICBuZXdTaGFkb3dEYXRhID0gV1RGTW92ZShibGVuZGVk
U2hhZG93KTsKQEAgLTE0NDEsOCArMTQ0MCw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGxh
c3RTaGFkb3cgPSBibGVuZGVkU2hhZG93UHRyOwogCi0gICAgICAgICAgICBzaGFkb3dBID0gc2hh
ZG93QSA/IHNoYWRvd0EtPm5leHQoKSA6IDA7Ci0gICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93
QiA/IHNoYWRvd0ItPm5leHQoKSA6IDA7CisgICAgICAgICAgICBzaGFkb3dBID0gc2hhZG93QSA/
IHNoYWRvd0EtPm5leHQoKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93
QiA/IHNoYWRvd0ItPm5leHQoKSA6IG51bGxwdHI7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1
cm4gbmV3U2hhZG93RGF0YTsKQEAgLTE0NzEsMTMgKzE0NzAsMTQgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBpbnQgbWF4TGVuZ3RoID0gc3RkOjptYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOwogICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBj
b25zdCBTaGFkb3dEYXRhKiBmcm9tU2hhZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93
c1tpXSA6IDA7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiB0b1NoYWRvdyA9IGkgPCB0
b0xlbmd0aCA/IHRvU2hhZG93c1tpXSA6IDA7CisgICAgICAgICAgICBhdXRvIGZyb21TaGFkb3cg
PSBpIDwgZnJvbUxlbmd0aCA/IGZyb21TaGFkb3dzW2ldIDogbnVsbHB0cjsKKyAgICAgICAgICAg
IGF1dG8gdG9TaGFkb3cgPSBpIDwgdG9MZW5ndGggPyB0b1NoYWRvd3NbaV0gOiBudWxscHRyOwor
CisgICAgICAgICAgICBhdXRvJiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hh
ZG93LCB0b1NoYWRvdyk7CisgICAgICAgICAgICBhdXRvJiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JC
bGVuZGluZyh0b1NoYWRvdywgZnJvbVNoYWRvdyk7CiAKLSAgICAgICAgICAgIGNvbnN0IFNoYWRv
d0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKGZyb21TaGFkb3csIHRvU2hhZG93
KTsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJs
ZW5kaW5nKHRvU2hhZG93LCBmcm9tU2hhZG93KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNo
YWRvdyA9IGJsZW5kRnVuYygmc3JjU2hhZG93LCAmZHN0U2hhZG93LCBjb250ZXh0KTsKIAotICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBibGVu
ZEZ1bmMoc3JjU2hhZG93LCBkc3RTaGFkb3csIGNvbnRleHQpOwogICAgICAgICAgICAgLy8gSW5z
ZXJ0IGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIuCiAgICAg
ICAgICAgICBibGVuZGVkU2hhZG93LT5zZXROZXh0KFdURk1vdmUobmV3U2hhZG93RGF0YSkpOwog
ICAgICAgICAgICAgbmV3U2hhZG93RGF0YSA9IFdURk1vdmUoYmxlbmRlZFNoYWRvdyk7CkBAIC0y
MzQ4LDE4ICsyMzQ4LDE4IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotY2xhc3MgVGFiU2l6ZVBy
b3BlcnR5V3JhcHBlciBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgVGFiU2l6
ZSY+IHsKK2NsYXNzIFRhYlNpemVQcm9wZXJ0eVdyYXBwZXIgZmluYWwgOiBwdWJsaWMgUHJvcGVy
dHlXcmFwcGVyPFRhYlNpemU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBUYWJTaXplUHJvcGVydHlXcmFwcGVyKCkKLSAgICAgICAgOiBQcm9wZXJ0eVdyYXBw
ZXI8Y29uc3QgVGFiU2l6ZSY+KENTU1Byb3BlcnR5VGFiU2l6ZSwgJlJlbmRlclN0eWxlOjp0YWJT
aXplLCAmUmVuZGVyU3R5bGU6OnNldFRhYlNpemUpCisgICAgICAgIDogUHJvcGVydHlXcmFwcGVy
PFRhYlNpemU+KENTU1Byb3BlcnR5VGFiU2l6ZSwgJlJlbmRlclN0eWxlOjp0YWJTaXplLCAmUmVu
ZGVyU3R5bGU6OnNldFRhYlNpemUpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29s
IGNhbkludGVycG9sYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHls
ZSYgdG8sIENvbXBvc2l0ZU9wZXJhdGlvbikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJl
dHVybiB2YWx1ZShmcm9tKS5pc1NwYWNlcygpID09IHZhbHVlKHRvKS5pc1NwYWNlcygpOworICAg
ICAgICByZXR1cm4gdmFsdWUoZnJvbSkuaXNTcGFjZXMgPT0gdmFsdWUodG8pLmlzU3BhY2VzOwog
ICAgIH0KIAogICAgIHZvaWQgYmxlbmQoUmVuZGVyU3R5bGUmIGRlc3RpbmF0aW9uLCBjb25zdCBS
ZW5kZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0
eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNjc4NDc3ODQ3
Y2M2M2YwM2MzMDMyYThkMmEyNGFhOTI1NjZkOTcyZC4uODZjZDY4NDU3M2Q2MTczOTQyMjVlMDE0
Y2M1NGFhYWM5ZmM1YWFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE1MzMsMTQgKzE1MzMsMTQgQEAgc3RhdGljIEVs
ZW1lbnQqIHN0eWxlRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHZhbHVlRm9yUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMZW5n
dGhQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlRm9yTGVuZ3RoKHBvc2l0aW9uLngoKSwgc3R5bGUpKTsKLSAgICBsaXN0LT5hcHBlbmQoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3NpdGlvbi55KCksIHN0eWxlKSk7CisgICAg
bGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueCwg
c3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChwb3NpdGlvbi55LCBzdHlsZSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCiBzdGF0aWMgUmVm
PENTU1ZhbHVlPiB2YWx1ZUZvclBvc2l0aW9uT3JBdXRvKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgTGVuZ3RoUG9pbnQmIHBvc2l0aW9uKQogewotICAgIGlmIChwb3NpdGlvbi54KCku
aXNBdXRvKCkgJiYgcG9zaXRpb24ueSgpLmlzQXV0bygpKQorICAgIGlmIChwb3NpdGlvbi54Lmlz
QXV0bygpICYmIHBvc2l0aW9uLnkuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogCiAg
ICAgcmV0dXJuIHZhbHVlRm9yUG9zaXRpb24oc3R5bGUsIHBvc2l0aW9uKTsKQEAgLTE5MzYsNyAr
MTkzNiw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byogY29udGVudERhdGEgPSBzdHlsZS5j
b250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4
dCgpKSB7CiAgICAgICAgIGlmIChpczxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkp
Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25j
YXN0PENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRpZmll
cigpLCBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFNRSkpOworICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERh
dGE+KCpjb250ZW50RGF0YSkuY291bnRlcigpLmlkZW50aWZpZXIsIENTU1VuaXRUeXBlOjpDU1Nf
Q09VTlRFUl9OQU1FKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpj
b250ZW50RGF0YSkpCiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1hZ2VDb250
ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAgICBlbHNl
IGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCkBAIC0zMDI5LDcgKzMwMjks
NyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJv
cGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAg
ICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS5jb2x1bW5XaWR0aCgpLCBzdHls
ZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJTaXplOgotICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50YWJTaXplKCkud2lkdGhJblBpeGVscygx
LjApLCBzdHlsZS50YWJTaXplKCkuaXNTcGFjZXMoKSA/IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVS
IDogQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHN0eWxlLnRhYlNpemUoKS53aWR0aEluUGl4ZWxzKDEuMCksIHN0eWxlLnRh
YlNpemUoKS5pc1NwYWNlcyA/IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSIDogQ1NTVW5pdFR5cGU6
OkNTU19QWCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6IHsKICAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Q7CiAgICAgICAgICAgICBhdXRvKiBjdXJzb3JzID0g
c3R5bGUuY3Vyc29ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1
bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAppbmRl
eCBmNWJjOGNhOTZiOTBkNjA1NTBkY2E1ODIxZTgzODU0OWE0YjJmN2VmLi5kNmExMmNiYjk2OTIy
NzM4NTQyZjRlMDk3NDczZTdiOGVjN2RlNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVu
Y3Rpb25zLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIExheW91dFNpemUgc2l6ZUZvckxlbmd0aFNp
emUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoLCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtCiAK
IExheW91dFBvaW50IHBvaW50Rm9yTGVuZ3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0
aFBvaW50LCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtVmFsdWUpCiB7Ci0gICAgcmV0dXJuIHsg
dmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueCgpLCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZh
bHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LnkoKSwgbWF4aW11bVZhbHVlLmhlaWdodCgpKSB9Owor
ICAgIHJldHVybiB7IHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngsIG1heGltdW1WYWx1ZS53
aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSwgbWF4aW11bVZhbHVlLmhlaWdo
dCgpKSB9OwogfQogCiBGbG9hdFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5n
dGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCkBAIC0xMzMsNyAr
MTMzLDcgQEAgRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6
ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRTaXplJgogCiBGbG9hdFBvaW50IGZsb2F0UG9pbnRG
b3JMZW5ndGhQb2ludChjb25zdCBMZW5ndGhQb2ludCYgbGVuZ3RoUG9pbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgYm94U2l6ZSkKIHsKLSAgICByZXR1cm4geyBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0
aFBvaW50LngoKSwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQ
b2ludC55KCksIGJveFNpemUuaGVpZ2h0KCkpIH07CisgICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZv
ckxlbmd0aChsZW5ndGhQb2ludC54LCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGxlbmd0aFBvaW50LnksIGJveFNpemUuaGVpZ2h0KCkpIH07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKaW5k
ZXggN2VlMzBhM2UxMzEyOTRhM2Q1NWFjZWY0Y2FhMGE3MWMzZDEwYWQ1OC4uNmZlYzM3NDUwYWMw
YWJmZWQwY2E4MDc1MzkwZWUyNjk4NGNhYzBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheVN0eWxlLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBw
cmVzZXJ2ZU5ld2xpbmUoKSBjb25zdDsKICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSgpIGNv
bnN0OwogCi0gICAgY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFi
U2l6ZTsgfQorICAgIFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6ZTsg
fQogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlclN0eWxl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1YjhiMzkwYjQxMDAzMmRjODc5N2Q4ZWJk
YjczZGIxZjUwZTcyYTVhLi5hYzkyMjkzMWE4NjhlMGRkMTc5ZWFmYzExNDgxZWFkZDIwZTNiMDQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI3OCw2ICsyNzgsNyBAQAogI2luY2x1ZGUg
PHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KQEAgLTEyMjMsMzIgKzEyMjQsMzggQEAg
c3RydWN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSB7CiAgICAgVUNoYXIzMiBtYXhpbXVtOwogfTsK
IAotI2lmIEFTU0VSVF9FTkFCTEVECi0KLXN0YXRpYyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29u
c3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBhLCBjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2Um
IGIpCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFVuaWNvZGVDb2RlUG9pbnRSYW5n
ZSBhLCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgYikKIHsKLSAgICBBU1NFUlQoYS5taW5pbXVtIDw9
IGEubWF4aW11bSk7Ci0gICAgQVNTRVJUKGIubWluaW11bSA8PSBiLm1heGltdW0pOworICAgIEFT
U0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChhLm1pbmltdW0gPD0gYS5tYXhpbXVtKTsKKyAg
ICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoYi5taW5pbXVtIDw9IGIubWF4aW11bSk7
CiAgICAgcmV0dXJuIGEubWF4aW11bSA8IGIubWluaW11bTsKIH0KIAotI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECi0KLXN0YXRpYyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5pY29kZUNv
ZGVQb2ludFJhbmdlJiBhLCBVQ2hhcjMyIGIpCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0
b3I8KFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBhLCBVQ2hhcjMyIGIpCiB7Ci0gICAgQVNTRVJUKGEu
bWluaW11bSA8PSBhLm1heGltdW0pOworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVY
VChhLm1pbmltdW0gPD0gYS5tYXhpbXVtKTsKICAgICByZXR1cm4gYS5tYXhpbXVtIDwgYjsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIG9wZXJhdG9yPChVQ2hhcjMyIGEsIGNvbnN0IFVuaWNvZGVD
b2RlUG9pbnRSYW5nZSYgYikKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoVUNoYXIz
MiBhLCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgYikKIHsKLSAgICBBU1NFUlQoYi5taW5pbXVtIDw9
IGIubWF4aW11bSk7CisgICAgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKGIubWluaW11
bSA8PSBiLm1heGltdW0pOwogICAgIHJldHVybiBhIDwgYi5taW5pbXVtOwogfQogCitzdGF0aWMg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShVbmljb2RlQ29kZVBvaW50UmFuZ2UgYSwgVUNoYXIz
MiBiKQoreworICAgIHJldHVybiAhKGEgPCBiKSAmJiAhKGIgPCBhKTsKK30KKworc3RhdGljIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oVUNoYXIzMiBhLCBVbmljb2RlQ29kZVBvaW50UmFuZ2Ug
YikKK3sKKyAgICByZXR1cm4gYiA9PSBhOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3Rl
bnRpYWxDdXN0b21FbGVtZW50TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKIHsKLSAg
ICBzdGF0aWMgY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlIHJhbmdlc1tdID0geworICAgIHN0
YXRpYyBjb25zdGV4cHIgVW5pY29kZUNvZGVQb2ludFJhbmdlIHJhbmdlc1tdID0gewogICAgICAg
ICB7ICctJywgJy4nIH0sCiAgICAgICAgIHsgJzAnLCAnOScgfSwKICAgICAgICAgeyAnXycsICdf
JyB9LApAQCAtMTI2Nyw5ICsxMjc0LDggQEAgc3RhdGljIGlubGluZSBib29sIGlzUG90ZW50aWFs
Q3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgICAgIHsg
MHhGREYwLCAweEZGRkQgfSwKICAgICAgICAgeyAweDEwMDAwLCAweEVGRkZGIH0sCiAgICAgfTsK
LQotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHJhbmdlcyksIHN0ZDo6ZW5k
KHJhbmdlcykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4ocmFu
Z2VzKSwgc3RkOjplbmQocmFuZ2VzKSwgY2hhcmFjdGVyKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNvcnRlZEFycmF5U2V0IHNldCB7IHJhbmdlcyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMo
Y2hhcmFjdGVyKTsKIH0KIAogQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3Vt
ZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcAppbmRleCA5YTM2NzU5NmRk
MDI2OWQ1OWY2M2ViMGY2Yzg5ZTM0ZGQ4MjE4MmQ5Li5iNWY0Y2MwNWUyNzY3YTE4YzY3M2QwOGUz
NGNkMjIwNjljNTgxOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGhQb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3Bw
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTGVuZ3RoUG9pbnQmIHNpemUpCiB7Ci0gICAg
cmV0dXJuIHRzIDw8IHNpemUueCgpIDw8ICIgIiA8PCBzaXplLnkoKTsKKyAgICByZXR1cm4gdHMg
PDwgc2l6ZS54IDw8ICIgIiA8PCBzaXplLnk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oCmluZGV4IDgxMjA1YmIxM2RkYTUwMzNi
MmM5MGZiZWEwNTMwYzJmNTZmOTkzNmIuLjk4YmRjY2EwNzFmOGMyMTliMmNiYTkwYmNiYzAxZjMy
NWI2MjIyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuaApAQCAtMzIsNDQg
KzMyLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBCbGVuZGluZ0NvbnRleHQ7CiAK
IHN0cnVjdCBMZW5ndGhQb2ludCB7Ci1wdWJsaWM6Ci0gICAgTGVuZ3RoUG9pbnQoKQotICAgIHsK
LSAgICB9Ci0gICAgCi0gICAgTGVuZ3RoUG9pbnQoTGVuZ3RoIHgsIExlbmd0aCB5KQotICAgICAg
ICA6IG1feChXVEZNb3ZlKHgpKQotICAgICAgICAsIG1feShXVEZNb3ZlKHkpKQotICAgIHsKLSAg
ICB9CisgICAgTGVuZ3RoIHg7CisgICAgTGVuZ3RoIHk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExl
bmd0aFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ggPT0gby5t
X3ggJiYgbV95ID09IG8ubV95OworICAgICAgICByZXR1cm4geCA9PSBvdGhlci54ICYmIHkgPT0g
b3RoZXIueTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQm
IG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aFBvaW50JiBvdGhlcikg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAgICAgICByZXR1
cm4geCAhPSBvdGhlci54IHx8IHkgIT0gb3RoZXIueTsKICAgICB9CiAKLSAgICB2b2lkIHNldFgo
TGVuZ3RoIHgpIHsgbV94ID0gV1RGTW92ZSh4KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNv
bnN0IHsgcmV0dXJuIG1feDsgfQotCi0gICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IG1feSA9IFdU
Rk1vdmUoeSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0K
LQotICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbV94LmlzWmVybygpICYmIG1feS5p
c1plcm8oKTsgfQotCi1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIHRv
IHBhY2sgdGhlIHR3byBMZW5ndGhzIHRvZ2V0aGVyIGJldHRlciBzb21laG93ICh0byBhdm9pZCBw
YWRkaW5nIGJldHdlZW4gdGhlbSkuCi0gICAgTGVuZ3RoIG1feDsKLSAgICBMZW5ndGggbV95Owor
ICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4geC5pc1plcm8oKSAmJiB5LmlzWmVybygp
OyB9CiB9OwogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgYmxlbmQoY29uc3QgTGVuZ3RoUG9pbnQmIGZy
b20sIGNvbnN0IExlbmd0aFBvaW50JiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KQogewotICAgIHJldHVybiBMZW5ndGhQb2ludChibGVuZChmcm9tLngoKSwgdG8ueCgpLCBjb250
ZXh0KSwgYmxlbmQoZnJvbS55KCksIHRvLnkoKSwgY29udGV4dCkpOworICAgIHJldHVybiB7IGJs
ZW5kKGZyb20ueCwgdG8ueCwgY29udGV4dCksIGJsZW5kKGZyb20ueSwgdG8ueSwgY29udGV4dCkg
fTsKIH0KIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNv
bnN0IExlbmd0aFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuaAppbmRleCBiYWJlOTY2ODRlN2MxNWNiOWNhOTY5M2JhMzU2MGE4YWEzZDJj
OTZjLi5lOWYyNjhjMTBkYWI0Mjg0Njc5OGE4NmQ5Zjk5MmRjNWE1ZmI4MmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTE2NSw4ICsx
NjUsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MoKSBj
b25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7IH0KICAgICBmbG9hdCBz
cGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5zcGFjZVdpZHRoKCkgKyBt
X2xldHRlclNwYWNpbmc7IH0KLSAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBGb250JiwgY29uc3Qg
VGFiU2l6ZSYsIGZsb2F0KSBjb25zdDsKLSAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBUYWJTaXpl
JiB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJpbWFy
eUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CisgICAgZmxvYXQgdGFiV2lkdGgoY29uc3Qg
Rm9udCYsIFRhYlNpemUsIGZsb2F0KSBjb25zdDsKKyAgICBmbG9hdCB0YWJXaWR0aChUYWJTaXpl
IHRhYlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdCB7IHJldHVybiB0YWJXaWR0aChwcmltYXJ5
Rm9udCgpLCB0YWJTaXplLCBwb3NpdGlvbik7IH0KICAgICBib29sIGhhc1ZhbGlkQXZlcmFnZUNo
YXJXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJs
ZShmbG9hdCAmd2lkdGgpIGNvbnN0OyAvLyByZXR1cm5zIHRydWUgb24gc3VjY2VzcwogCkBAIC0z
NzAsNyArMzcwLDcgQEAgaW5saW5lIEZvbnRTZWxlY3RvciogRm9udENhc2NhZGU6OmZvbnRTZWxl
Y3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZm9udHMgPyBtX2ZvbnRzLT5mb250U2VsZWN0b3Io
KSA6IG51bGxwdHI7CiB9CiAKLWlubGluZSBmbG9hdCBGb250Q2FzY2FkZTo6dGFiV2lkdGgoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNv
bnN0CitpbmxpbmUgZmxvYXQgRm9udENhc2NhZGU6OnRhYldpZHRoKGNvbnN0IEZvbnQmIGZvbnQs
IFRhYlNpemUgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgZmxvYXQgYmFz
ZVRhYldpZHRoID0gdGFiU2l6ZS53aWR0aEluUGl4ZWxzKGZvbnQuc3BhY2VXaWR0aCgpKTsKICAg
ICBpZiAoIWJhc2VUYWJXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyLmNwcAppbmRleCA3NTQzZjQ3NWEyN2E2NTE1OTA2Y2MyMmViM2Y2MGE5
MTQwOTI5MGJhLi4wNzU2MTk0Y2YyZjVlOGI5ZmJiMjdhMTBjZTc4YTJlMThjMjNjZmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBA
IC03NCw3ICs3NCw4IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0
cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJT
aXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6
ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYg
KGJ1ZmZlclNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICB1
aW50MzJfdCBtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICBp
ZiAoYnVmZmVyU2l6ZSA+IG1heCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBh
dXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKaW5kZXggMzRhNzA4MTA2MjhhYzk1MjdmNGY1Y2YwNDc1
ZDgzNWI3Y2MyZWFjZi4uMzY2NDJmOGE4YzQ3NDA3ZWFjZTkzNTEyMjgzNjBmMmM4N2Q3YzIyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaApAQCAtMjksNDkg
KzI5LDM5IEBACiAKICNwcmFnbWEgb25jZQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCi1lbnVtIFRhYlNpemVWYWx1ZVR5cGUgewotICAg
IExlbmd0aFZhbHVlVHlwZSwKLSAgICBTcGFjZVZhbHVlVHlwZSwKLX07CituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBUYWJTaXplIHsKLSAgICBUYWJTaXplKGZsb2F0IG51bU9yTGVuZ3Ro
LCBUYWJTaXplVmFsdWVUeXBlIGlzU3BhY2VzID0gU3BhY2VWYWx1ZVR5cGUpCi0gICAgICAgIDog
bV92YWx1ZShudW1Pckxlbmd0aCkKLSAgICAgICAgLCBtX2lzU3BhY2VzKGlzU3BhY2VzKQotICAg
IHsKLSAgICB9Ci0KLSAgICBib29sIGlzU3BhY2VzKCkgY29uc3QKKyAgICBlbnVtIFZhbHVlVHlw
ZSB7IExlbmd0aCwgU3BhY2VzIH07CisgICAgVGFiU2l6ZShmbG9hdCBudW1Pckxlbmd0aCwgVmFs
dWVUeXBlIHR5cGUgPSBTcGFjZXMpCisgICAgICAgIDogdmFsdWUobnVtT3JMZW5ndGgpCisgICAg
ICAgICwgaXNTcGFjZXModHlwZSA9PSBTcGFjZXMpCiAgICAgewotICAgICAgICByZXR1cm4gbV9p
c1NwYWNlczsKICAgICB9CiAKICAgICBmbG9hdCB3aWR0aEluUGl4ZWxzKGZsb2F0IHNwYWNlV2lk
dGgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9pc1NwYWNlcyA/IG1fdmFsdWUgKiBz
cGFjZVdpZHRoIDogbV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGlzU3BhY2VzID8gdmFsdWUgKiBz
cGFjZVdpZHRoIDogdmFsdWU7CiAgICAgfQogCi0gICAgZmxvYXQgdmFsdWUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICAgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1ZTsgfQogCi0gICAgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlKCk7IH0KLQotICAgIGZsb2F0IG1fdmFsdWU7Ci0gICAgYm9vbCBt
X2lzU3BhY2VzOworICAgIGZsb2F0IHZhbHVlOworICAgIGJvb2wgaXNTcGFjZXM7CiB9OwogCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRhYlNpemUmIGEsIGNvbnN0IFRhYlNpemUmIGIp
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFRhYlNpemUgYSwgVGFiU2l6ZSBiKQogewotICAgIHJl
dHVybiAoYS5tX3ZhbHVlID09IGIubV92YWx1ZSkgJiYgKGEubV9pc1NwYWNlcyA9PSBiLm1faXNT
cGFjZXMpOworICAgIHJldHVybiBhLnZhbHVlID09IGIudmFsdWUgJiYgYS5pc1NwYWNlcyA9PSBi
LmlzU3BhY2VzOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRhYlNpemUmIGEs
IGNvbnN0IFRhYlNpemUmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFRhYlNpemUgYSwgVGFi
U2l6ZSBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKK2lubGluZSBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgVGFiU2l6ZSBzaXplKSB7IHJldHVybiBz
dHJlYW0gPDwgc2l6ZS52YWx1ZSA8PCAoc2l6ZS5pc1NwYWNlcyA/ICIgc3BhY2VzIiA6ICIiKTsg
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UZXh0UnVuLmgKaW5kZXggMWQ0N2Q2NWQ2ODI0NjI2ZTE1OTI4ODAwZjQ2OTdjMjc2Y2Iy
NzYzNC4uYTIwOTZjZjlkZTM1ZThhNWIzOTNhN2ZhYzBhNDgzZDU3MWM0ZjFjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtOTUsOCArOTUsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsR2x5cGhTdHJldGNoKGZsb2F0IHNjYWxlKSB7
IG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaCA9IHNjYWxlOyB9CiAKICAgICBib29sIGFsbG93VGFi
cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dUYWJzOyB9Ci0gICAgY29uc3QgVGFiU2l6ZSYgdGFi
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6ZTsgfQotICAgIHZvaWQgc2V0VGFiU2l6ZShi
b29sLCBjb25zdCBUYWJTaXplJik7CisgICAgVGFiU2l6ZSB0YWJTaXplKCkgY29uc3QgeyByZXR1
cm4gbV90YWJTaXplOyB9CisgICAgdm9pZCBzZXRUYWJTaXplKGJvb2wsIFRhYlNpemUpOwogCiAg
ICAgZmxvYXQgeFBvcygpIGNvbnN0IHsgcmV0dXJuIG1feHBvczsgfQogICAgIHZvaWQgc2V0WFBv
cyhmbG9hdCB4UG9zKSB7IG1feHBvcyA9IHhQb3M7IH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fZGlzYWJsZVNwYWNpbmcgOiAxOwogfTsKIAotaW5saW5lIHZv
aWQgVGV4dFJ1bjo6c2V0VGFiU2l6ZShib29sIGFsbG93LCBjb25zdCBUYWJTaXplJiBzaXplKQor
aW5saW5lIHZvaWQgVGV4dFJ1bjo6c2V0VGFiU2l6ZShib29sIGFsbG93LCBUYWJTaXplIHNpemUp
CiB7CiAgICAgbV9hbGxvd1RhYnMgPSBhbGxvdzsKICAgICBtX3RhYlNpemUgPSBzaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5k
ZXggOTJmNDJiNjc3ZDUzZGQ5YzZhM2Y2YmQ2ZTNkOTFjYmFjNjZhYTRiOS4uOWRiMTExMTI4YTFm
YjdjZWZlYTRhZDAyYWVjMTFiYTVlMjkxZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCkBAIC0yNywxMyArMjcsMTQgQEAKICNp
bmNsdWRlICJWUDlVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgYm9vbCBpc1ZhbGlkVlBMZXZlbCh1aW50OF90IGxldmVsKQogewotICAgIGNvbnN0ZXhwciB1
aW50OF90IHZhbGlkTGV2ZWxzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZh
bGlkTGV2ZWxzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8xLAog
ICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfMV8xLAogICAgICAgICBWUENvbmZp
Z3VyYXRpb25MZXZlbDo6TGV2ZWxfMiwKQEAgLTQ5LDE0ICs1MCwxMyBAQCBzdGF0aWMgYm9vbCBp
c1ZhbGlkVlBMZXZlbCh1aW50OF90IGxldmVsKQogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZl
bDo6TGV2ZWxfNl8xLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfNl8yLAog
ICAgIH07Ci0KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZExldmVs
cyksIHN0ZDo6ZW5kKHZhbGlkTGV2ZWxzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFy
Y2goc3RkOjpiZWdpbih2YWxpZExldmVscyksIHN0ZDo6ZW5kKHZhbGlkTGV2ZWxzKSwgbGV2ZWwp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRMZXZlbHMg
fTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKGxldmVsKTsKIH0KIAogc3RhdGljIGJvb2wgaXNW
YWxpZFZQQ29sb3JQcmltYXJpZXModWludDhfdCBjb2xvclByaW1hcmllcykKIHsKLSAgICBjb25z
dGV4cHIgdWludDhfdCB2YWxpZENvbG9yUHJpbWFyaWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50OF90IHZhbGlkQ29sb3JQcmltYXJpZXNbXSA9IHsKICAgICAgICAgVlBDb25maWd1
cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzcwOV82LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25D
b2xvclByaW1hcmllczo6VW5zcGVjaWZpZWQsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9y
UHJpbWFyaWVzOjpCVF80NzBfNl9NLApAQCAtNzAsMTQgKzcwLDEzIEBAIHN0YXRpYyBib29sIGlz
VmFsaWRWUENvbG9yUHJpbWFyaWVzKHVpbnQ4X3QgY29sb3JQcmltYXJpZXMpCiAgICAgICAgIFZQ
Q29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBURV9FR180MzJfMSwKICAgICAgICAgVlBD
b25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkVCVV9UZWNoXzMyMTNfRSwKICAgICB9OwotCi0g
ICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRDb2xvclByaW1hcmllcyks
IHN0ZDo6ZW5kKHZhbGlkQ29sb3JQcmltYXJpZXMpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5
X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkQ29sb3JQcmltYXJpZXMpLCBzdGQ6OmVuZCh2YWxpZENv
bG9yUHJpbWFyaWVzKSwgY29sb3JQcmltYXJpZXMpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29y
dGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRDb2xvclByaW1hcmllcyB9OworICAgIHJldHVybiBzZXQu
Y29udGFpbnMoY29sb3JQcmltYXJpZXMpOwogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBUcmFu
c2ZlckNoYXJhY3RlcmlzdGljcyh1aW50OF90IHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKQogewot
ICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3NbXSA9IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGlj
c1tdID0gewogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6
QlRfNzA5XzYsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
OjpVbnNwZWNpZmllZCwKICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzQ3MF82X00sCkBAIC05NiwxMyArOTUsMTMgQEAgc3RhdGljIGJvb2wgaXNWYWxp
ZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3ModWludDhfdCB0cmFuc2ZlckNoYXJhY3RlcmlzdGlj
cykKICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRF
X1NUXzQyOF8xLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
czo6QlRfMjEwMF9ITEcsCiAgICAgfTsKLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpi
ZWdpbih2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSwgc3RkOjplbmQodmFsaWRUcmFuc2Zl
ckNoYXJhY3RlcmlzdGljcykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6
YmVnaW4odmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyksIHN0ZDo6ZW5kKHZhbGlkVHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MpLCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzZXQgeyB2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzIH07CisgICAgcmV0dXJuIHNldC5jb250YWlucyh0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyk7
CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cyh1aW50OF90IG1h
dHJpeENvZWZmaWNpZW50cykKIHsKLSAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZE1hdHJpeENv
ZWZmaWNpZW50c1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZE1hdHJp
eENvZWZmaWNpZW50c1tdID0gewogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmlj
aWVudHM6OklkZW50aXR5LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVu
dHM6OkJUXzcwOV82LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6
OlVuc3BlY2lmaWVkLApAQCAtMTE4LDggKzExNyw4IEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUE1h
dHJpeENvZWZmaWNpZW50cyh1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cykKICAgICAgICAgVlBD
b25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpDaHJvbWFjaXR5X05vbmNvbnN0YW50X0x1
bWluYW5jZSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF8y
MTAwX0lDQywKICAgICB9OwotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZh
bGlkTWF0cml4Q29lZmZpY2llbnRzKSwgc3RkOjplbmQodmFsaWRNYXRyaXhDb2VmZmljaWVudHMp
KSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkTWF0cml4
Q29lZmZpY2llbnRzKSwgc3RkOjplbmQodmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBtYXRyaXhD
b2VmZmljaWVudHMpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsg
dmFsaWRNYXRyaXhDb2VmZmljaWVudHMgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKG1hdHJp
eENvZWZmaWNpZW50cyk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25S
ZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0
ZUFWRk9iakMuaAppbmRleCBlZTFhMzc5YTViZDgyYTI2YWMzMjEyYzNkZGY2ZTdjMDQwYzE4YzU1
Li5lMmQxOThmY2EyYjRjMWM4ZjdmZTY0ODQzYjFjNDEzZDdiMTg0ZjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRD
aGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZP
YmpDLmgKQEAgLTYwLDEzICs2MCwxMyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0Ns
YXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRl
QVZGT2JqQyI7IH0KIAogICAgIHN0cnVjdCBDaGFwdGVyRGF0YSB7Ci0gICAgICAgIE1lZGlhVGlt
ZSBtX3N0YXJ0VGltZTsKLSAgICAgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247Ci0gICAgICAgIFN0
cmluZyBtX3RpdGxlOworICAgICAgICBNZWRpYVRpbWUgc3RhcnRUaW1lOworICAgICAgICBNZWRp
YVRpbWUgZHVyYXRpb247CisgICAgICAgIFN0cmluZyB0aXRsZTsKIAogICAgICAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoYXB0ZXJEYXRhJiBvdGhlcikgY29uc3QKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG1fc3RhcnRUaW1lID09IG90aGVyLm1fc3RhcnRUaW1l
ICYmIG1fZHVyYXRpb24gPT0gb3RoZXIubV9kdXJhdGlvbiAmJiBtX3RpdGxlID09IG90aGVyLm1f
dGl0bGU7CisgICAgICAgICAgICByZXR1cm4gc3RhcnRUaW1lID09IG90aGVyLnN0YXJ0VGltZSAm
JiBkdXJhdGlvbiA9PSBvdGhlci5kdXJhdGlvbiAmJiB0aXRsZSA9PSBvdGhlci50aXRsZTsKICAg
ICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRw
dXQubW0KaW5kZXggMGJjMDgzODE0YzA4YzdkZWVkNjFjOTA3OWMyMmJlM2Y1MDc4YTc3ZS4uOTQ5
YzYwYmM0OGU1YTlhMGIyNTgwZjFhMjEyMmVlZTg3NTQ1MTVlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9P
dXRwdXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KQEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQg
UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpCiAgICAg
aWYgKG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBjdXJyZW50VGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1cnJlbnRUaW1l
XSk7Ci0gICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCBjdXJy
ZW50VGltZSk7CisgICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVz
LCBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pKTsKICAgICBpZiAoaXRl
ciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgpIHx8ICsraXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIG5leHRJbWFnZVRpbWUgPSBpdGVyLT5maXJz
dDsKIAotICAgIG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRCb3Vu
ZGFyeVRpbWVPYnNlcnZlckZvclRpbWVzOkBbW05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lOlBBTDo6
dG9DTVRpbWUoY3VycmVudFRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgp
IHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb3RlY3RlZERlbGVn
YXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091dHB1dF0gKCkgbXV0
YWJsZSB7CisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJv
dW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFM
Ojp0b0NNVGltZShuZXh0SW1hZ2VUaW1lKV1dIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVl
dWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWRE
ZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdICgp
IG11dGFibGUgewogICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3Zl
KHdlYWtUaGlzKV0gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT5uZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcAppbmRleCAwNWE4MzE2ZGMyN2U2MzAxN2YzOTdmMTkyNDY5YjgyYTMzYjdiMDM0
Li4wNGMwMDNiNGUyZTg3NjhjZDU4Nzc3NGU1ZDFlYzYzMjc5Yzg4YmQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMTQyMiwxOCArMTQyMiwxOCBAQCB3ZWJtOjpTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURh
dGEod2VibTo6UmVhZAogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRl
bnRzOwotICAgICAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5z
aXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1
ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKSkgeworICAgICAgICAgICAgYXV0byBjb29raWVDb250
ZW50cyA9IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURh
dGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAg
ICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzKSB7CiAgICAgICAgICAgICAgICAgUEFSU0VSX0xP
R19FUlJPUl9JRl9QT1NTSUJMRSgiRmFpbGVkIHRvIHBhcnNlIE9wdXMgcHJpdmF0ZSBkYXRhIik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFjb29raWVDb250ZW50cy5mcmFtZXNQZXJQ
YWNrZXQpIHsKKyAgICAgICAgICAgIGlmICghY29va2llQ29udGVudHMtPmZyYW1lc1BlclBhY2tl
dCkgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIk9wdXMg
cHJpdmF0ZSBkYXRhIGluZGljYXRlcyAwIGZyYW1lcyBwZXIgcGFja2V0OyBiYWlsaW5nIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgbV9mcmFtZXNQZXJQYWNrZXQgPSBjb29raWVDb250ZW50
cy5mcmFtZXNQZXJQYWNrZXQ7Ci0gICAgICAgICAgICBtX2ZyYW1lRHVyYXRpb24gPSBjb29raWVD
b250ZW50cy5mcmFtZUR1cmF0aW9uOwotICAgICAgICAgICAgZm9ybWF0RGVzY3JpcHRpb24gPSBj
cmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb29raWVDb250ZW50cyk7CisgICAgICAg
ICAgICBtX2ZyYW1lc1BlclBhY2tldCA9IGNvb2tpZUNvbnRlbnRzLT5mcmFtZXNQZXJQYWNrZXQ7
CisgICAgICAgICAgICBtX2ZyYW1lRHVyYXRpb24gPSBjb29raWVDb250ZW50cy0+ZnJhbWVEdXJh
dGlvbjsKKyAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlT3B1c0F1ZGlvRm9y
bWF0RGVzY3JpcHRpb24oKmNvb2tpZUNvbnRlbnRzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghZm9ybWF0RGVzY3JpcHRpb24pIHsKQEAgLTE0NTMsNyArMTQ1Myw2IEBAIHdlYm06OlN0YXR1
cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0
YSh3ZWJtOjpSZWFkCiAgICAgICAgIC8vIE9wdXMgdGVjaG5pY2FsbHkgYWxsb3dzIHRoZSBmcmFt
ZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBlci1wYWNrZXQgdmFsdWVzIHRvIGNoYW5nZSBmcm9tIHBh
Y2tldCB0byBwYWNrZXQuCiAgICAgICAgIC8vIENvcmVBdWRpbyBkb2Vzbid0IHN1cHBvcnQgQVNC
RCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBjaGFuZ2Ugb24gYSBwZXItcGFja2V0IGJhc2lzLCBzbyB0
aHJvdyBhbiBlcnJvciB3aGVuCiAgICAgICAgIC8vIHRoYXQga2luZCBvZiB2YXJpYWJpbGl0eSBp
cyBlbmNvdW50ZXJlZC4KLSAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRz
OwogICAgICAgICBhdXRvJiBwcml2YXRlRGF0YSA9IHRyYWNrKCkuY29kZWNfcHJpdmF0ZS52YWx1
ZSgpOwogICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVC
bG9ja0J1ZmZlcihtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNp
emUpOwogICAgICAgICBpZiAoIWNvbnRpZ3VvdXNCdWZmZXIpIHsKQEAgLTE0NjYsOSArMTQ2NSw4
IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6
Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9S
X0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJy
b3IiLCBlcnIpOwogICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5p
bmcpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0
ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwg
YmxvY2tCdWZmZXJEYXRhLCBjb29raWVDb250ZW50cykKLSAgICAgICAgICAgIHx8IGNvb2tpZUNv
bnRlbnRzLmZyYW1lc1BlclBhY2tldCAhPSBtX2ZyYW1lc1BlclBhY2tldAotICAgICAgICAgICAg
fHwgY29va2llQ29udGVudHMuZnJhbWVEdXJhdGlvbiAhPSBtX2ZyYW1lRHVyYXRpb24pIHsKKyAg
ICAgICAgYXV0byBjb29raWVDb250ZW50cyA9IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVE
YXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJs
b2NrQnVmZmVyRGF0YSk7CisgICAgICAgIGlmICghY29va2llQ29udGVudHMgfHwgY29va2llQ29u
dGVudHMtPmZyYW1lc1BlclBhY2tldCAhPSBtX2ZyYW1lc1BlclBhY2tldCB8fCBjb29raWVDb250
ZW50cy0+ZnJhbWVEdXJhdGlvbiAhPSBtX2ZyYW1lRHVyYXRpb24pIHsKICAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIk9wdXMgZnJhbWVzLXBlci1wYWNrZXQgY2hhbmdl
ZCB3aXRoaW4gYSB0cmFjazsgZXJyb3IiKTsKICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjpDb2RlKEVycm9yQ29kZTo6VmFyaWFibGVGcmFtZUR1cmF0aW9uKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1B
dWRpb1V0aWxpdGllc0NvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oCmluZGV4IDg3MTA0ZDhiN2IzNTdjMTYwYjZk
Y2NjNDFiZmUxZjg5ZTBhNmMyNzEuLjhiNjdkZTZmNDkzMDFiYTAxMTU4YTk4MDA5OTU5Mjc3MDQ0
NTIzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaApAQCAtMjgsOCArMjgsOCBA
QAogI2lmIFBMQVRGT1JNKENPQ09BKQogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKLWNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERl
c2NyaXB0aW9uUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NSw5ICs1NSw5IEBAIHN0
cnVjdCBPcHVzQ29va2llQ29udGVudHMgewogCiBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3B1c0Rl
Y29kZXJBdmFpbGFibGUoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVnaXN0ZXJPcHVzRGVjb2Rl
cklmTmVlZGVkKCk7Ci1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBwcml2YXRlRGF0
YVNpemUsIGNvbnN0IHZvaWQqIHByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVEYXRhU2l6ZSwgY29u
c3Qgdm9pZCogZnJhbWVEYXRhLCBPcHVzQ29va2llQ29udGVudHMmKTsKK3N0ZDo6b3B0aW9uYWw8
T3B1c0Nvb2tpZUNvbnRlbnRzPiBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgcHJpdmF0ZURh
dGFTaXplLCBjb25zdCB2b2lkKiBwcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUsIGNv
bnN0IHZvaWQqIGZyYW1lRGF0YSk7CiBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4g
Y3JlYXRlT3B1c0F1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uc3QgT3B1c0Nvb2tpZUNvbnRlbnRz
Jik7CiAKIH0KIAotI2VuZGlmIC8vICYmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQppbmRleCA3ZTBhZmIy
OTBkZDg1YTc3ZjliZWZmZjQ5NDdhNDdiNzUzNWViMmY0Li5hYjViYTFmMjUyY2VjMjcxNmI1MDBm
NmY5YTVjNGJiYTY3NDI4MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQpA
QCAtMTY5LDcgKzE2OSw3IEBAIGNvbnN0ZXhwciBpbnQzMl90IG9wdXNDb25maWdUb0JhbmR3aWR0
aCh1aW50OF90IGNvbmZpZykKIH0KICNlbmRpZgogCi1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRh
KHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBz
aXplX3QgZnJhbWVTaXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50
cyYgY29va2llKQorc3RkOjpvcHRpb25hbDxPcHVzQ29va2llQ29udGVudHM+IHBhcnNlT3B1c1By
aXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZh
dGVEYXRhLCBzaXplX3QgZnJhbWVTaXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEpCiB7CiAjaWYg
RU5BQkxFKE9QVVMpCiAgICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc4NDUK
QEAgLTIwMSwxNiArMjAxLDE3IEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNv
ZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsCiAgICAgYXV0byog
cHJpdmF0ZURhdGFQdHIgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oY29kZWNQcml2YXRl
RGF0YSk7CiAKICAgICBpZiAoY29kZWNQcml2YXRlU2l6ZSA8IDE5KQotICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMS4gTWFnaWMgU2ln
bmF0dXJlOgogICAgIC8vCiAgICAgLy8gICAgIFRoaXMgaXMgYW4gOC1vY3RldCAoNjQtYml0KSBm
aWVsZCB0aGF0IGFsbG93cyBjb2RlYwogICAgIC8vICAgICBpZGVudGlmaWNhdGlvbiBhbmQgaXMg
aHVtYW4gcmVhZGFibGUuCiAgICAgaWYgKHN0cm5jbXAoIk9wdXNIZWFkIiwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4ocHJpdmF0ZURhdGFQdHIpLCA4KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMi4gVmVyc2lvbiAo
OCBiaXRzLCB1bnNpZ25lZCk6CisgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZTsKICAgICBj
b29raWUudmVyc2lvbiA9ICoocHJpdmF0ZURhdGFQdHIgKyA4KTsKIAogICAgIC8vIDMuIE91dHB1
dCBDaGFubmVsIENvdW50ICdDJyAoOCBiaXRzLCB1bnNpZ25lZCk6CkBAIC0yMzEsNyArMjMyLDcg
QEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29u
c3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAgICBhdXRvIGZyYW1lUHRyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGZyYW1lRGF0YSk7CiAKICAgICBpZiAoZnJhbWVTaXplIDwgMSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3MTYKICAgICAvLyAzLjEuIFRo
ZSBUT0MgQnl0ZQpAQCAtMjg1LDIxICsyODYsMjAgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0
YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwK
ICAgICAgICAgLy8KICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIEZpZ3VyZSA1OiBU
aGUgZnJhbWUgY291bnQgYnl0ZQogICAgICAgICBpZiAoZnJhbWVTaXplIDwgMikKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgdWludDhfdCBmcmFtZUNvdW50Qnl0ZSA9ICooZnJhbWVQdHIgKyAxKTsKICAgICAgICAg
Y29va2llLmlzVkJSID0gKChmcmFtZUNvdW50Qnl0ZSAmIDBiMTAwMDAwMDApID4+IDcpID09IDE7
CiAgICAgICAgIGNvb2tpZS5oYXNQYWRkaW5nID0gKChmcmFtZUNvdW50Qnl0ZSAmIDBiMDEwMDAw
MDApID4+IDYpID09IDE7CiAgICAgICAgIGNvb2tpZS5mcmFtZXNQZXJQYWNrZXQgPSAoZnJhbWVD
b3VudEJ5dGUgJiAwYjAwMTExMTExKTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGNvb2tpZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvZGVjUHJpdmF0ZVNpemUpOwog
ICAgIFVOVVNFRF9QQVJBTShjb2RlY1ByaXZhdGVEYXRhKTsKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVTaXplKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVEYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
Y29va2llKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUxheWVyUG9vbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllclBvb2wuaAppbmRleCA4ZGMyMTNmNDdkNGY4MTkyMTExMWE0YTY5YzQ5OTYyZWE3M2ZjZjBh
Li5kY2Q2YTQ3YmE2MDg1M2RhMDhlMTJmMDIwMjg3OWQ0OWRiMzYzNDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUu
aD4KIAogQGNsYXNzIExlZ2FjeVRpbGVMYXllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCmluZGV4IGI1MmM4NjE4NmYwYmIwNmZkMzIzZWQyOWY4
MmQ3N2M5NThmZTI2MDguLjlmOGRlYmU5NTQ2MTFlYTBlOGFkNzMzMGNkOTI2YWMyYTMwOTE0MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KQEAg
LTM1LDQzICszNSwyOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgT1NCdWlsZElu
Zm8gewotICAgIE9TQnVpbGRJbmZvKCkKLSAgICAgICAgOiBtYWpvcigwKQotICAgICAgICAsIG1p
bm9yKDApCi0gICAgICAgICwgYnVpbGQoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgT1NCdWlsZElu
Zm8oaW50IG1ham9yLCBpbnQgbWlub3IsIGludCBidWlsZCkKLSAgICAgICAgOiBtYWpvcihtYWpv
cikKLSAgICAgICAgLCBtaW5vcihtaW5vcikKLSAgICAgICAgLCBidWlsZChidWlsZCkKLSAgICB7
Ci0gICAgfQorICAgIGludCBtYWpvciB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgMTMgaW4gMTND
NjQuCisgICAgaW50IG1pbm9yIHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSBDIGluIDEzQzY0IChh
cyBhIG51bWJlciB3aGVyZSBBID09IDEsIGkuZS4gMykuCisgICAgaW50IGJ1aWxkIHsgMCB9OyAv
LyBSZXByZXNlbnRzIHRoZSA2NCBpbiAxM0M2NC4KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShPU0J1aWxkSW5mbyBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWpvciA9
PSBvdGhlci5tYWpvciAmJiBtaW5vciA9PSBvdGhlci5taW5vciAmJiBidWlsZCA9PSBvdGhlci5i
dWlsZDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBPU0J1aWxkSW5mbyYgb3Ro
ZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KE9TQnVpbGRJbmZvIG90aGVy
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVp
bGQpID4gc3RkOjp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CiAg
ICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29u
c3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KE9TQnVpbGRJbmZvIG90aGVyKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpIDw9
IHN0ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0K
IAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKKyAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoT1NCdWlsZEluZm8gb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9yLCBidWlsZCkgPCBzdGQ6OnRp
ZShvdGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKICAgICB9Ci0KLSAgICBp
bnQgbWFqb3I7IC8vIFJlcHJlc2VudHMgdGhlIDEzIGluIDEzQzY0LgotICAgIGludCBtaW5vcjsg
Ly8gUmVwcmVzZW50cyB0aGUgQyBpbiAxM0M2NCAoYXMgYSBudW1iZXIgd2hlcmUgQSA9PSAxLCBp
LmUuIDMpLgotICAgIGludCBidWlsZDsgLy8gUmVwcmVzZW50cyB0aGUgNjQgaW4gMTNDNjQuCiB9
OwogCiBzdGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJp
bmcgKmJ1aWxkU3RyaW5nKQpAQCAtODMsNyArNjksNyBAQCBzdGF0aWMgT1NCdWlsZEluZm8gYnVp
bGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQogI2lmbmRlZiBO
REVCVUcKICAgICAgICAgTlNMb2coQCJXZWJHTEJsb2NrbGlzdCBjb3VsZCBub3QgcGFyc2UgT1NC
dWlsZCBlbnRyeTogJUAiLCBidWlsZFN0cmluZyk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE9T
QnVpbGRJbmZvKCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgTlNUZXh0Q2hl
Y2tpbmdSZXN1bHQgKm1hdGNoUmVzdWx0ID0gW21hdGNoZXMgb2JqZWN0QXRJbmRleDowXTsKQEAg
LTkyLDE0ICs3OCwxNCBAQCBzdGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRT
dHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNM
b2coQCJXZWJHTEJsb2NrbGlzdCBjb3VsZCBub3QgcGFyc2UgT1NCdWlsZCBlbnRyeTogJUAiLCBi
dWlsZFN0cmluZyk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE9TQnVpbGRJbmZvKCk7CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaW50IG1ham9yVmVyc2lvbiA9IFtbYnVpbGRT
dHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOlttYXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6MV1dIGlu
dFZhbHVlXTsKICAgICBpbnQgbWlub3JWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdX
aXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRleDoyXV0gY2hhcmFjdGVyQXRJbmRleDow
XSAtICdBJyArIDE7CiAgICAgaW50IGJ1aWxkVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3Ry
aW5nV2l0aFJhbmdlOlttYXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6M11dIGludFZhbHVlXTsKIAot
ICAgIHJldHVybiBPU0J1aWxkSW5mbyhtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRW
ZXJzaW9uKTsKKyAgICByZXR1cm4geyBtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRW
ZXJzaW9uIH07CiB9CiAKIGJvb2wgV2ViR0xCbG9ja2xpc3Q6OnNob3VsZEJsb2NrV2ViR0woKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9CYXNlQXVkaW9TaGFyZWRVbml0LmgKaW5kZXggOGNhNWYzMTllMmI4MDZjZWFhOTAyNjE3YzVj
M2EyNDlhMWM3NGE0YS4uMGExNmU1NGZkYmE0OGRiNWFhNjNlYzY0NzI2ZjI3NWYwZGIxMDhjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW0KaW5kZXggNjMxMmUwNjg0Mjk3YjQzYzMzMTFlNDczOWI2ODFhYjQ0NWMzMzY3Mi4uYmY1Yzc0
ZjRjZmRjYTM3NWUzYmU0MjMyZTQ3NWMyMmRhZmZjZWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvV2Fs
bFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCmluZGV4IGM0ZWI2N2Q2ZjdjMzM0
MDc2YjMyYjc5OGRjZWE0MGI1NzA2ODFlNmYuLjdkMGJiODVhNGE2ZDUxODFhOGFjNWY2MGZiNzFm
ZDllYWI0Y2VjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlU3Rh
dGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQu
Y3BwCmluZGV4IDU2MDJkN2MyZDRkNWJjYTkzMjQ1NDRiNzVhZDIyY2IyNjU4ZWQwMmMuLjBkZjc0
MjY1MWZmN2JkYzhiYjY0MzM0NmY5YmNjYmMyMDRjMTllMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBib29sIEdyaWRJdGVyYXRvcjo6aXNFbXB0eUFy
ZWFFbm91Z2godW5zaWduZWQgcm93U3BhbiwgdW5zaWduZWQgY29sdW1uU3BhbikgY29ucwogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRv
cjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZh
cnlpbmdUcmFja1NwYW4pCitzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5l
eHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5n
VHJhY2tTcGFuKQogewogICAgIEFTU0VSVCghbV9ncmlkLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KCFtX2dyaWRbMF0uaXNFbXB0eSgpKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4
ZWRUcmFja1NwYQogICAgIEFTU0VSVCh2YXJ5aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAgaWYg
KG1fZ3JpZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgcm93U3BhbiA9IChtX2RpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zKSA/IHZhcnlpbmdUcmFja1NwYW4gOiBmaXhlZFRyYWNrU3BhbjsKICAgICB1
bnNpZ25lZCBjb2x1bW5TcGFuID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRU
cmFja1NwYW4gOiB2YXJ5aW5nVHJhY2tTcGFuOwpAQCAtMjMxLDEzICsyMzEsMTMgQEAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2ln
bmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0lu
ZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3Jp
ZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5n
VHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFy
ZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRy
YW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFu
KSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1f
Y29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEdy
aWRBcmVhKEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBt
X3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bh
bihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAg
ICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVy
ZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAg
ICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQu
aAppbmRleCA3MmNhZGY2OGVmNGQzMjY2Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi41OTQ3ZmU1
ZTUzODY1M2QwYWFjODQ5NGZlYThkYTk2N2MzMDg1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmgKQEAgLTM3LDEwICszNywxMSBAQCB0eXBlZGVmIFZlY3RvcjxXZWFrUHRyPFJlbmRlckJveD4s
IDE+IEdyaWRDZWxsOwogdHlwZWRlZiBWZWN0b3I8VmVjdG9yPEdyaWRDZWxsPj4gR3JpZEFzTWF0
cml4OwogdHlwZWRlZiBMaXN0SGFzaFNldDxzaXplX3Q+IE9yZGVyZWRUcmFja0luZGV4U2V0Owog
Ci1jbGFzcyBHcmlkQXJlYTsKIGNsYXNzIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjsKIGNsYXNzIFJl
bmRlckdyaWQ7CiAKK3N0cnVjdCBHcmlkQXJlYTsKKwogY2xhc3MgR3JpZCBmaW5hbCB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgR3JpZChSZW5kZXJHcmlkJik7CkBAIC0xMTEsNyArMTEyLDcgQEAg
cHVibGljOgogCiAgICAgUmVuZGVyQm94KiBuZXh0R3JpZEl0ZW0oKTsKICAgICBib29sIGlzRW1w
dHlBcmVhRW5vdWdoKHVuc2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnN0
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWdu
ZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pOworICAgIHN0ZDo6
b3B0aW9uYWw8R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tT
cGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBH
cmlkQXNNYXRyaXgmIG1fZ3JpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcAppbmRleCBjZWNlZDM1ZTVjZTg3YmZiYzE0MDE4MzZjZDEzZWExYWVkZDdhZmMwLi4w
MGViZDVmZmMwNWI3MjIyYTRmN2E0M2IwYzQyMWIyYzM5NjU2ZDIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC00MzAsMjAgKzQzMCwxOSBAQCBTdHJp
bmcgUmVuZGVyQ291bnRlcjo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGJlZm9yZUFmdGVyQ29udGFpbmVyID0gYmVmb3JlQWZ0ZXJDb250
YWluZXItPnBhcmVudCgpOwogICAgICAgICB9Ci0gICAgICAgIG1ha2VDb3VudGVyTm9kZSgqYmVm
b3JlQWZ0ZXJDb250YWluZXIsIG1fY291bnRlci5pZGVudGlmaWVyKCksIHRydWUpLT5hZGRSZW5k
ZXJlcihjb25zdF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykpOworICAgICAgICBtYWtlQ291
bnRlck5vZGUoKmJlZm9yZUFmdGVyQ29udGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllciwgdHJ1
ZSktPmFkZFJlbmRlcmVyKGNvbnN0X2Nhc3Q8UmVuZGVyQ291bnRlciY+KCp0aGlzKSk7CiAgICAg
ICAgIEFTU0VSVChtX2NvdW50ZXJOb2RlKTsKICAgICB9CiAgICAgQ291bnRlck5vZGUqIGNoaWxk
ID0gbV9jb3VudGVyTm9kZTsKICAgICBpbnQgdmFsdWUgPSBjaGlsZC0+YWN0c0FzUmVzZXQoKSA/
IGNoaWxkLT52YWx1ZSgpIDogY2hpbGQtPmNvdW50SW5QYXJlbnQoKTsKIAotICAgIFN0cmluZyB0
ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCB2YWx1ZSk7CisgICAg
U3RyaW5nIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCB2YWx1ZSk7
CiAKLSAgICBpZiAoIW1fY291bnRlci5zZXBhcmF0b3IoKS5pc051bGwoKSkgeworICAgIGlmICgh
bV9jb3VudGVyLnNlcGFyYXRvci5pc051bGwoKSkgewogICAgICAgICBpZiAoIWNoaWxkLT5hY3Rz
QXNSZXNldCgpKQogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+cGFyZW50KCk7CiAgICAgICAg
IHdoaWxlIChDb3VudGVyTm9kZSogcGFyZW50ID0gY2hpbGQtPnBhcmVudCgpKSB7Ci0gICAgICAg
ICAgICB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCBjaGlsZC0+
Y291bnRJblBhcmVudCgpKQotICAgICAgICAgICAgICAgICsgbV9jb3VudGVyLnNlcGFyYXRvcigp
ICsgdGV4dDsKKyAgICAgICAgICAgIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlz
dFN0eWxlLCBjaGlsZC0+Y291bnRJblBhcmVudCgpKSArIG1fY291bnRlci5zZXBhcmF0b3IgKyB0
ZXh0OwogICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMjZmOGZjYmMwYWIyNzk2MGM0
OTM5MjIzZTc0OGQ5M2MzYjgzYzk5YS4uMWI2NzQ1YTllNzkwYjgwNWIxMzUwMDA0MmU0MWUwOTNl
ZDgxNjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzY1
LDEzICs3NjUsMTMgQEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9y
ZGVySXRlcmF0b3IoR3JpZCYgZ3JpZCkgY29uc3QKICAgICBncmlkLmVuc3VyZUdyaWRTaXplKG1h
eGltdW1Sb3dJbmRleCArIGV4cGxpY2l0Um93U3RhcnQsIG1heGltdW1Db2x1bW5JbmRleCArIGV4
cGxpY2l0Q29sdW1uU3RhcnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRl
ckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlk
KEdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3Np
dGlvbnMpIGNvbnN0CitHcmlkQXJlYSBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRT
cGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gm
IGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBj
b25zdCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBjb25zdAogewogICAgIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBjcm9zc0RpcmVjdGlvbiA9IHNwZWNpZmllZERpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gRm9yUm93cyA6IEZvckNvbHVtbnM7CiAgICAgY29uc3QgdW5zaWduZWQgZW5k
T2ZDcm9zc0RpcmVjdGlvbiA9IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1
bnNpZ25lZCBjcm9zc0RpcmVjdGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpz
cGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAg
R3JpZFNwYW4gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERl
ZmluaXRlR3JpZFNwYW4oZW5kT2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiAr
IGNyb3NzRGlyZWN0aW9uU3BhblNpemUpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRBcmVh
PihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRp
b25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAgICBy
ZXR1cm4gR3JpZEFyZWEoc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0Rp
cmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0
aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVt
c09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRl
bXMpIGNvbnN0CkBAIC03OTIsNyArNzkyLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNp
ZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW4KICAg
ICAgICAgdW5zaWduZWQgbWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uID0gbWFqb3JBeGlzUG9zaXRp
b25zLnN0YXJ0TGluZSgpOwogCiAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBh
dXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFy
dExpbmUoKSwgaXNHcmlkQXV0b0Zsb3dEZW5zZSA/IDAgOiBtaW5vckF4aXNDdXJzb3JzLmdldCht
YWpvckF4aXNJbml0aWFsUG9zaXRpb24pKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRB
cmVhPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlz
UG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKKyAgICAgICAgYXV0
byBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9z
aXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYgKCFl
bXB0eUdyaWRBcmVhKQogICAgICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3Jp
ZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0s
IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsK
IApAQCAtODI3LDcgKzgyNyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlz
SXRlbU9uR3JpZChHcmlkJiBncmlkLCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBBCiAgICAgdW5zaWdu
ZWQgbWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNE
aXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zID8gYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQgOiBh
dXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0OwogICAgIHVuc2lnbmVkIG1pbm9yQXhpc0F1dG9QbGFj
ZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29s
dW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3IuZmlyc3QgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLnNl
Y29uZDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhOwogICAgIEdyaWRTcGFuIG1p
bm9yQXhpc1Bvc2l0aW9ucyA9IGdyaWQuZ3JpZEl0ZW1TcGFuKGdyaWRJdGVtLCBhdXRvUGxhY2Vt
ZW50TWlub3JBeGlzRGlyZWN0aW9uKCkpOwogICAgIGlmIChtaW5vckF4aXNQb3NpdGlvbnMuaXNU
cmFuc2xhdGVkRGVmaW5pdGUoKSkgewogICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHRyYWNr
IGluIG1ham9yIGF4aXMgaWYgaW5pdGlhbCBwb3NpdGlvbiBpbiBtaW5vciBheGlzIGlzIGJlZm9y
ZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IuCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBSZW5kZXJH
cmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKEdyaWQmIGdyaWQsIFJlbmRlckJveCYg
Z3JpZEl0ZW0sIEEKIAogICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgZW1wdHkgZ3JpZCBhcmVh
IGFzIGl0IGRvZXMgbm90IGZpdCBpbiB0aGUgbWlub3IgYXhpcyBkaXJlY3Rpb24uCiAgICAgICAg
ICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZW1wdHkgZ3JpZCBhcmVh
IHlldCBhcyB3ZSBtaWdodCBmaW5kIGEgdmFsaWQgb25lIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4K
LSAgICAgICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAg
ICBlbXB0eUdyaWRBcmVhID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAvLyBBcyB3ZSdyZSBtb3ZpbmcgdG8gdGhlIG5leHQgdHJhY2sgaW4gdGhlIG1ham9yIGF4
aXMgd2Ugc2hvdWxkIHJlc2V0IHRoZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IgaW4gdGhlIG1pbm9y
IGF4aXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAyOWFlNTk0ODAw
M2VlNmQyZGQ0NDNiNTY5OWRjYjJkN2MxN2I5NjI2Li42NWM5ZTZlMjUyNjg0OTcwMzM4NGRkZGNi
YTE3ODNjNGJiNzdiMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAg
LTMyLDkgKzMyLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JpZEFyZWE7
CiBjbGFzcyBHcmlkU3BhbjsKIAorc3RydWN0IEdyaWRBcmVhOworCiBzdHJ1Y3QgQ29udGVudEFs
aWdubWVudERhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRBbGlnbm1lbnRE
YXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMTEsNyArMTEyLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0mLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCkgY29uc3Q7CiAgICAgdm9pZCBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3Io
R3JpZCYpIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1wdHlH
cmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRl
ckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsK
KyAgICBHcmlkQXJlYSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRz
aWRlR3JpZChHcmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
LCBjb25zdCBHcmlkU3BhbiYpIGNvbnN0OwogICAgIHZvaWQgcGxhY2VTcGVjaWZpZWRNYWpvckF4
aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAg
ICAgdm9pZCBwbGFjZUF1dG9NYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9y
PFJlbmRlckJveCo+JikgY29uc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBBdXRvUGxhY2VtZW50Q3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA3ZThkZDY4ODI0Y2ZiNDU2MjA4
MGU1OTRlY2Q4NDAyYTZjOWZjMDMyLi5mOWVkZTFkOTBiMzkzNmYxMzA5ZDQ3YjI0MDM1MTU0MmEy
NzdjNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcApAQCAtOTcsNyArOTcsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIFdlYkNv
cmVIYXMzRFJlbmRlcmluZyA9IHRydWU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhVVNF
KENPTVBPU0lUSU5HX0ZPUl9TTUFMTF9DQU5WQVNFUykKLXN0YXRpYyBjb25zdCBpbnQgY2FudmFz
QXJlYVRocmVzaG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CitzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9
IDUwICogMTAwOwogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBlOTYzN2VlYmUyMDYw
OWFlMGM1ZDJiMWQ2ZjZiM2U2MWJjOWYxMjk4Li44NDZhZDE1MjVhZjIwNjYwN2I0MmJmNGVkMTEw
Y2ZhYTkxNGU5M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKQEAgLTQ2Nyw4ICs0NjcsOCBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBs
YWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAKICAgICBM
ZW5ndGhQb2ludCBvYmplY3RQb3NpdGlvbiA9IHN0eWxlKCkub2JqZWN0UG9zaXRpb24oKTsKIAot
ICAgIExheW91dFVuaXQgeE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3Np
dGlvbi54KCksIGNvbnRlbnRSZWN0LndpZHRoKCkgLSBmaW5hbFJlY3Qud2lkdGgoKSk7Ci0gICAg
TGF5b3V0VW5pdCB5T2Zmc2V0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0aW9u
LnkoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOworICAgIExh
eW91dFVuaXQgeE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54
LCBjb250ZW50UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRoKCkpOworICAgIExheW91dFVu
aXQgeU9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi55LCBjb250
ZW50UmVjdC5oZWlnaHQoKSAtIGZpbmFsUmVjdC5oZWlnaHQoKSk7CiAKICAgICBmaW5hbFJlY3Qu
bW92ZSh4T2Zmc2V0LCB5T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Qm94UGFpbnRlci5jcHAKaW5kZXggY2E1Yjc0MGQ5MDQ0YmQ2NWUzNjZiNTdkNzZjMzQyOGMzZjll
ZTNmNi4uNGM0NzRjOTVlM2VlYzIyMmYwNTM5OTM1MjI1ZDRhMjE5YTYwMjhkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC02NDAsNyArNjQwLDcg
QEAgY29uc3QgU2hhZG93RGF0YSogVGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdygpIGNv
bnN0CiAgICAgaWYgKCF0ZXh0Qm94KCkubGVnYWN5SW5saW5lQm94KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlYnVn
VGV4dFNoYWRvdyhMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgo
TGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0
aCgyMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdC
QTx1aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTaGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFkb3coTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6
OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoMTAsIExlbmd0aFR5cGU6
OkZpeGVkKSwgTGVuZ3RoKDIwLCBMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3Jt
YWwsIHRydWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMTUwLCAwLCAwLCAxOTAgfSk7CiAgICAgcmV0dXJu
ICZkZWJ1Z1RleHRTaGFkb3cuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludFN0eWxlLmgKaW5kZXggNDU5YmFmMTEyZmMwMzI3MGFmZTQ2ZmZlODRlZDBkNWJhNmIy
NmUzOS4uMjVjZjQ4Y2Y0OTI4MTJlYTNlYjBmZmY0NjAwMmNkZDBkNzc2ZWIyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTMzLDEzICszMywxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVGV4
dDsKIGNsYXNzIFNoYWRvd0RhdGE7CisKIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBUZXh0
UGFpbnRTdHlsZSB7Ci0gICAgVGV4dFBhaW50U3R5bGUoKSB7IH0KKyAgICBUZXh0UGFpbnRTdHls
ZSgpID0gZGVmYXVsdDsKICAgICBUZXh0UGFpbnRTdHlsZShjb25zdCBDb2xvciYpOwogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRQYWludFN0eWxlJikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCmluZGV4IDU4NmNjNjY5
ODAyNjVkOTg2M2FjYWFhN2VlNmI4YTk4NjQ4MzI2YzYuLjdiZjViYzkwNmU4OGM1Mzc1ODEwY2Mz
ZTFmYzI4ODk5MDlkNTBhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db3VudGVyQ29udGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db3VudGVyQ29udGVudC5oCkBAIC0yOSwzMiArMjksMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDb3VudGVyQ29udGVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgQ291bnRlckNvbnRlbnQoY29uc3QgQXRvbVN0cmluZyYgaWRlbnRp
ZmllciwgTGlzdFN0eWxlVHlwZSBzdHlsZSwgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKQot
ICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbGlzdFN0eWxl
KHN0eWxlKQotICAgICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChzdHlsZSAhPSBMaXN0U3R5bGVUeXBlOjpTdHJpbmcpOwotICAgIH0KK3N0cnVjdCBD
b3VudGVyQ29udGVudCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0g
ICAgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQotICAgIExpc3RTdHlsZVR5cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9s
aXN0U3R5bGU7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3NlcGFyYXRvcjsgfQotCi1wcml2YXRlOgotICAgIEF0b21TdHJpbmcgbV9pZGVudGlm
aWVyOwotICAgIExpc3RTdHlsZVR5cGUgbV9saXN0U3R5bGU7Ci0gICAgQXRvbVN0cmluZyBtX3Nl
cGFyYXRvcjsKKyAgICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7CisgICAgTGlzdFN0eWxlVHlwZSBs
aXN0U3R5bGU7CisgICAgQXRvbVN0cmluZyBzZXBhcmF0b3I7CiB9OwogCi1zdGF0aWMgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyQ29udGVudCYgYSwgY29uc3QgQ291bnRlckNv
bnRlbnQmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50JiBh
LCBjb25zdCBDb3VudGVyQ29udGVudCYgYikKIHsKLSAgICByZXR1cm4gYS5pZGVudGlmaWVyKCkg
PT0gYi5pZGVudGlmaWVyKCkKLSAgICAgICAgJiYgYS5saXN0U3R5bGUoKSA9PSBiLmxpc3RTdHls
ZSgpCi0gICAgICAgICYmIGEuc2VwYXJhdG9yKCkgPT0gYi5zZXBhcmF0b3IoKTsKKyAgICByZXR1
cm4gYS5pZGVudGlmaWVyID09IGIuaWRlbnRpZmllcgorICAgICAgICAmJiBhLmxpc3RTdHlsZSA9
PSBiLmxpc3RTdHlsZQorICAgICAgICAmJiBhLnNlcGFyYXRvciA9PSBiLnNlcGFyYXRvcjsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5oCmluZGV4IDk1ZDM4NjI3ZTE0MTNmNTI2MWMwOWM5ZmQ5ZmIxYWEyMjBkNTQ4
YjQuLjcyNDBiOTZiZTgwZTk3MzM2YmNkY2JjZDRlZTdlMjhkYzY3ODg5ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTM1LDE4ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIHN0cnVjdCBGaWxsU2l6
ZSB7Ci0gICAgRmlsbFNpemUoKQotICAgICAgICA6IHR5cGUoRmlsbFNpemVUeXBlOjpTaXplKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBGaWxsU2l6ZShGaWxsU2l6ZVR5cGUgdHlwZSwgY29uc3QgTGVu
Z3RoU2l6ZSYgc2l6ZSkKLSAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICwgc2l6ZShzaXpl
KQotICAgIHsKLSAgICB9Ci0KLSAgICBGaWxsU2l6ZVR5cGUgdHlwZTsKKyAgICBGaWxsU2l6ZVR5
cGUgdHlwZSB7IEZpbGxTaXplVHlwZTo6U2l6ZSB9OwogICAgIExlbmd0aFNpemUgc2l6ZTsKIH07
CiAKQEAgLTg0LDcgKzczLDcgQEAgcHVibGljOgogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKTsgfQogICAg
IGNvbnN0IExlbmd0aFNpemUmIHNpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NpemVMZW5n
dGg7IH0KICAgICBGaWxsU2l6ZVR5cGUgc2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxGaWxsU2l6ZVR5cGU+KG1fc2l6ZVR5cGUpOyB9Ci0gICAgRmlsbFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIEZpbGxTaXplKHN0YXRpY19jYXN0PEZpbGxTaXplVHlwZT4obV9zaXplVHlw
ZSksIG1fc2l6ZUxlbmd0aCk7IH0KKyAgICBGaWxsU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4g
eyBzaXplVHlwZSgpLCBtX3NpemVMZW5ndGggfTsgfQogICAgIE1hc2tNb2RlIG1hc2tNb2RlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWFza01vZGU+KG1fbWFza01vZGUpOyB9CiAKICAg
ICBjb25zdCBGaWxsTGF5ZXIqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQxZDk2
MWRlODgyNmZiODMwMzMwOWI4ZTYzNTJmMjBmOWVhYi4uZDQ3NmY5MzE5ODdjZmNhNzE0MTRjYmZk
ZWNkODFhYmIxZWRmY2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRB
cmVhLmgKQEAgLTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRGVzcGl0ZSBs
aW5lIG51bWJlcnMgaW4gdGhlIHNwZWMgc3RhcnQgaW4gIjEiLCB0aGUgaW5kZXhlcyBoZXJlIHN0
YXJ0IGluICIwIi4KIGNsYXNzIEdyaWRTcGFuIHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBHcmlk
U3BhbiB1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQogICAgIHsKICAgICAgICAgcmV0dXJuIEdyaWRTcGFuKHN0YXJ0TGluZSwgZW5kTGluZSwg
VW50cmFuc2xhdGVkRGVmaW5pdGUpOwpAQCAtMTQyLDggKzE0MSw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0KLSAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5p
dGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CisgICAgZW51bSBHcmlkU3BhblR5
cGUgOiB1aW50OF90IHsgVW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwg
SW5kZWZpbml0ZSB9OwogCiAgICAgR3JpZFNwYW4oaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUs
IEdyaWRTcGFuVHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQpAQCAtMTYzLDI0ICsx
NjEsMjQgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9zdGFydExpbmU7CiAgICAgaW50IG1fZW5kTGlu
ZTsKICAgICBHcmlkU3BhblR5cGUgbV90eXBlOwotCi0KIH07CiAKIC8vIFRoaXMgcmVwcmVzZW50
cyBhIGdyaWQgYXJlYSB0aGF0IHNwYW5zIGluIGJvdGggcm93cycgYW5kIGNvbHVtbnMnIGRpcmVj
dGlvbi4KLWNsYXNzIEdyaWRBcmVhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICAvLyBIYXNoTWFwIHJlcXVpcmVzIGEgZGVmYXVsdCBjb25zdHVjdG9yLgorc3Ry
dWN0IEdyaWRBcmVhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAg
ICBHcmlkU3BhbiByb3dzOworICAgIEdyaWRTcGFuIGNvbHVtbnM7CisKICAgICBHcmlkQXJlYSgp
Ci0gICAgICAgIDogY29sdW1ucyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCi0gICAg
ICAgICwgcm93cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgIDogcm93
cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgICwgY29sdW1ucyhHcmlk
U3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCiAgICAgewogICAgIH0KIAotICAgIEdyaWRBcmVh
KGNvbnN0IEdyaWRTcGFuJiByLCBjb25zdCBHcmlkU3BhbiYgYykKLSAgICAgICAgOiBjb2x1bW5z
KGMpCi0gICAgICAgICwgcm93cyhyKQorICAgIEdyaWRBcmVhKEdyaWRTcGFuIHJvd3MsIEdyaWRT
cGFuIGNvbHVtbnMpCisgICAgICAgIDogcm93cyhyb3dzKQorICAgICAgICAsIGNvbHVtbnMoY29s
dW1ucykKICAgICB7CiAgICAgfQogCkBAIC0xOTMsMTEgKzE5MSw4IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KLQotICAgIEdyaWRTcGFuIGNv
bHVtbnM7Ci0gICAgR3JpZFNwYW4gcm93czsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IEdyaWRBcmVhPiBOYW1lZEdyaWRBcmVhTWFwOwordXNpbmcgTmFtZWRHcmlkQXJlYU1hcCA9IEhh
c2hNYXA8U3RyaW5nLCBHcmlkQXJlYT47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oCmluZGV4IDg2YWNkMzMwZGY2
OWY4M2IwZDJmZDMyMjdlYmI4MGU5ZWZlN2U4N2EuLjVmODhkZTFmYzljMjEyMmNlMjJhZDdlMzBh
MzBiMDg0OTM4NWU5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRM
ZW5ndGguaApAQCAtNDIsNyArNDIsNiBAQCBjbGFzcyBHcmlkTGVuZ3RoIHsKIHB1YmxpYzoKICAg
ICBHcmlkTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3RoKGxl
bmd0aCkKLSAgICAgICAgLCBtX2ZsZXgoMCkKICAgICAgICAgLCBtX3R5cGUoTGVuZ3RoVHlwZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbGVuZ3RoLmlzVW5kZWZpbmVkKCkpOwpAQCAtNzIsMTQg
KzcxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSA9PSBMZW5ndGhUeXBlICYmIG1fbGVuZ3RoLmlzQXV0bygpOyB9CiAKIHByaXZhdGU6Ci0gICAg
Ly8gSWRlYWxseSB3ZSB3b3VsZCBwdXQgdGhlIDIgZm9sbG93aW5nIGZpZWxkcyBpbiBhIHVuaW9u
LCBidXQgTGVuZ3RoIGhhcyBhIGNvbnN0cnVjdG9yLAotICAgIC8vIGEgZGVzdHJ1Y3RvciBhbmQg
YSBjb3B5IGFzc2lnbm1lbnQgd2hpY2ggaXNuJ3QgYWxsb3dlZC4KKyAgICAvLyBDb3VsZCB1c2Ug
YSBWYXJpYW50IGhlcmUgc2luY2Ugd2Ugb25seSB1c2UgbV9sZW5ndGggb3IgbV9mbGV4LCBhbmQg
bV90eXBlIGRldGVybWluZXMgd2hpY2guCiAgICAgTGVuZ3RoIG1fbGVuZ3RoOwotICAgIGRvdWJs
ZSBtX2ZsZXg7Ci0gICAgZW51bSBHcmlkTGVuZ3RoVHlwZSB7Ci0gICAgICAgIExlbmd0aFR5cGUs
Ci0gICAgICAgIEZsZXhUeXBlCi0gICAgfTsKKyAgICBkb3VibGUgbV9mbGV4IHsgMCB9OworICAg
IGVudW0gR3JpZExlbmd0aFR5cGUgOiBib29sIHsgTGVuZ3RoVHlwZSwgRmxleFR5cGUgfTsKICAg
ICBHcmlkTGVuZ3RoVHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBhZDVhYmFkYWMwNGY3ZDJlYmJjYzY3MDRl
MDEyOTNiMWRkZmFlM2E0Li4yZThkNTI2YTlmYTE5NWQ0NTc0MTYyZWU2MTc5ZjNlY2U2M2M3ZWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
QEAgLTE0OTcsNyArMTQ5Nyw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0aFRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zCiAgICAgLy8gU2hp
ZnQgZWxlbWVudCB0byB0aGUgYW5jaG9yIHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgogICAg
IGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9y
bU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigp
OwogICAgIGF1dG8gYW5jaG9yID0gdHJhbnNmb3JtT3JpZ2luOwotICAgIGlmICghb2Zmc2V0QW5j
aG9yKCkueCgpLmlzQXV0bygpKQorICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueC5pc0F1dG8oKSkK
ICAgICAgICAgYW5jaG9yID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hvcigp
LCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKC1hbmNob3IueCgpLCAtYW5jaG9yLnkoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNGYyMTM1ZWFhZWQ2MjE4
NzE5YWVjYjZiYmMwYTIyMDVjOTk4ZDM1OS4uM2RhYzc3MzNlMDYxNDA1MDM0ODU2ZjAzODMzMGRk
MWRlOTE2YTk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTEwOSw3ICsxMDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJv
cmRlckRhdGE7CiBjbGFzcyBDb250ZW50RGF0YTsKLWNsYXNzIENvdW50ZXJDb250ZW50OwogY2xh
c3MgQ3Vyc29yTGlzdDsKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRm9udE1ldHJpY3M7CkBA
IC0xMjEsNiArMTIwLDcgQEAgY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhOwogY2xhc3MgU3R5bGVT
Y3JvbGxTbmFwQXJlYTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCitzdHJ1Y3QgQ291
bnRlckNvbnRlbnQ7CiBzdHJ1Y3QgU2Nyb2xsU25hcEFsaWduOwogc3RydWN0IFNjcm9sbFNuYXBU
eXBlOwogCkBAIC03MDAsNyArNzAwLDcgQEAgcHVibGljOgogICAgIFRleHRDb21iaW5lIHRleHRD
b21iaW5lKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRDb21iaW5lKTsgfQogICAgIGJvb2wgaGFzVGV4dENvbWJpbmUoKSBj
b25zdCB7IHJldHVybiB0ZXh0Q29tYmluZSgpICE9IFRleHRDb21iaW5lOjpOb25lOyB9CiAKLSAg
ICBjb25zdCBUYWJTaXplJiB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGFiU2l6ZTsgfQorICAgIFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemU7IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMK
IApAQCAtMTI3Niw3ICsxMjc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2Ryb3BGaWx0
ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGJhY2tkcm9wRmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAjZW5k
aWYKIAotICAgIHZvaWQgc2V0VGFiU2l6ZShjb25zdCBUYWJTaXplJiBzaXplKSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNldFRhYlNp
emUoVGFiU2l6ZSBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwg
c2l6ZSk7IH0KIAogICAgIHZvaWQgc2V0QnJlYWtCZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFrQmVo
YXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0JlZm9yZSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJyZWFrQmVoYXZpb3IpKTsgfQogICAgIHZvaWQgc2V0QnJlYWtB
ZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGJyZWFrQWZ0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9y
KSk7IH0KQEAgLTE1ODQsNyArMTU4NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENvbWJp
bmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0KICAg
ICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVy
biBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFs
T2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0Rml0OjpGaWxsOyB9Ci0gICAgc3RhdGljIExlbmd0
aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0
aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6
UGVyY2VudCkpOyB9CisgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlv
bigpIHsgcmV0dXJuIHsgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3Ro
KDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSB9OyB9CiAgICAgc3RhdGljIEVtcHR5Q2VsbCBp
bml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJuIEVtcHR5Q2VsbDo6U2hvdzsgfQogICAgIHN0YXRp
YyBMaXN0U3R5bGVQb3NpdGlvbiBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBM
aXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lkZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBpbml0aWFsTGlzdFN0eWxlU3RyaW5nVmFsdWUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CkBA
IC0xODk4LDExICsxODk4LDExIEBAIHB1YmxpYzoKIAogICAgIExlbmd0aFBvaW50IG9mZnNldFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0UG9z
aXRpb247IH0KICAgICB2b2lkIHNldE9mZnNldFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRp
b24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvZmZzZXRQb3NpdGlvbiwgV1RG
TW92ZShwb3NpdGlvbikpOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRQ
b3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwg
TGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0
aWFsT2Zmc2V0UG9zaXRpb24oKSB7IHJldHVybiB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExl
bmd0aFR5cGU6OkF1dG8gfSB9OyB9CiAKICAgICBMZW5ndGhQb2ludCBvZmZzZXRBbmNob3IoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vZmZzZXRBbmNob3I7IH0KICAg
ICB2b2lkIHNldE9mZnNldEFuY2hvcihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zmc2V0QW5jaG9yLCBXVEZNb3ZlKHBvc2l0aW9uKSk7
IH0KLSAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJu
IExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0QW5jaG9yKCkg
eyByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsg
fQogCiAgICAgT2Zmc2V0Um90YXRpb24gb2Zmc2V0Um90YXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0Um90YXRlOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRS
b3RhdGUoT2Zmc2V0Um90YXRpb24mJiByb3RhdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIG9mZnNldFJvdGF0ZSwgV1RGTW92ZShyb3RhdGlvbikpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggODdjYTJiMjUyZjk2
Zjg1ZTRiNDQwYjZmZDJjMGY4ZTkzYWRlN2EwYy4uZGUzZGM2YzRjZGUxMjk3ZWVhMGNmY2Q2ZDYx
ZDY0NDEyODEwZTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFk
b3dEYXRhLmNwcApAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFk
b3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCi0gICAgOiBtX2xvY2F0aW9u
KG8ubV9sb2NhdGlvbi54KCksIG8ubV9sb2NhdGlvbi55KCkpCisgICAgOiBtX2xvY2F0aW9uKG8u
bV9sb2NhdGlvbikKICAgICAsIG1fc3ByZWFkKG8ubV9zcHJlYWQpCiAgICAgLCBtX3JhZGl1cyhv
Lm1fcmFkaXVzKQogICAgICwgbV9jb2xvcihvLm1fY29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAppbmRleCAyMmZlZjc2MmJjYTMxMGI2M2FlZmU4NTg2
ZjQyMmFiOWY4M2MwNWYyLi5kOWE0MWExNWJhMGQxZWZhOWM4ZmU1NDA3YjNkNTBlOWYyZWUwYWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIFNoYWRvd0RhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICBT
aGFkb3dEYXRhKGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbiwgTGVuZ3RoIHJhZGl1cywgTGVu
Z3RoIHNwcmVhZCwgU2hhZG93U3R5bGUgc3R5bGUsIGJvb2wgaXNXZWJraXRCb3hTaGFkb3csIGNv
bnN0IENvbG9yJiBjb2xvcikKLSAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uLngoKSwgbG9j
YXRpb24ueSgpKQorICAgICAgICA6IG1fbG9jYXRpb24obG9jYXRpb24pCiAgICAgICAgICwgbV9z
cHJlYWQoc3ByZWFkKQogICAgICAgICAsIG1fcmFkaXVzKHJhZGl1cykKICAgICAgICAgLCBtX2Nv
bG9yKGNvbG9yKQpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG8pOwogICAgIH0KICAgICAKLSAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJl
dHVybiBtX2xvY2F0aW9uLngoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYXRpb24ueSgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1
cm4gbV9sb2NhdGlvbi54OyB9CisgICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4g
bV9sb2NhdGlvbi55OyB9CiAgICAgY29uc3QgTGVuZ3RoUG9pbnQmIGxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhdGlvbjsgfQogICAgIGNvbnN0IExlbmd0aCYgcmFkaXVzKCkgY29uc3Qg
eyByZXR1cm4gbV9yYWRpdXM7IH0KICAgICBMYXlvdXRVbml0IHBhaW50aW5nRXh0ZW50KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9s
bFNuYXBQb2ludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9s
bFNuYXBQb2ludHMuaAppbmRleCBhMmM3YjBkYjNkNmU1ZmVkNjUzNmE1NjM5YjQ1NzkyZTQ3ODAx
MTc5Li41Mzc0NzIyYWIwOTRjNTc4Mzc4Y2RkMWU1ZDI5YWYwZWQ5OWE1YjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50
cy5oCkBAIC0yNSwxMSArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkxlbmd0
aEJveC5oIgotI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggOTE1MDQwMWE2NDVlNDI4NGU5MTY5MWJhMGJh
NWM5NzhjOTgyZWZiZC4uMTI3ZWYzMjcyNDQ2NmNkNDhjMzc0MDJkZTc2MGE1Yjk3MGE2ZmE0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTI2
OCw4ICsyNjgsOCBAQCBpbmxpbmUgVGFiU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFi
U2l6ZShjb25zdCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogewogICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIFRhYlNpemUocHJpbWl0
aXZlVmFsdWUuZmxvYXRWYWx1ZSgpLCBTcGFjZVZhbHVlVHlwZSk7Ci0gICAgcmV0dXJuIFRhYlNp
emUocHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoKSksIExlbmd0aFZhbHVlVHlwZSk7CisgICAgICAgIHJldHVy
biB7IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSwgVGFiU2l6ZTo6U3BhY2VzIH07CisgICAg
cmV0dXJuIHsgcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRl
LmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSksIFRhYlNpemU6Okxlbmd0aCB9OwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNDE3LDcgKzQxNyw3IEBAIGlubGluZSBMZW5ndGhQb2lu
dCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsCiAgICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NT
VmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihidWlsZGVyU3RhdGUsICpwYWlyLT5maXJzdCgpKTsK
ICAgICBMZW5ndGggbGVuZ3RoWSA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRv
cCwgQ1NTVmFsdWVCb3R0b20+KGJ1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKIAotICAg
IHJldHVybiBMZW5ndGhQb2ludChsZW5ndGhYLCBsZW5ndGhZKTsKKyAgICByZXR1cm4geyBsZW5n
dGhYLCBsZW5ndGhZIH07CiB9CiAKIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0UG9zaXRpb25PckF1dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTQyNyw3ICs0MjcsNyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQg
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlcgogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1BhaXIoKSkKICAgICAgICAgcmV0dXJuIGNv
bnZlcnRQb3NpdGlvbihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIAotICAgIHJldHVybiBMZW5ndGhQ
b2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7
CisgICAgcmV0dXJuIHsgeyBMZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9
IH07CiB9CiAKIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRl
eCAxM2NhZDliN2ZkNzcyYTZjZDIzOTgzNDBlMjgyNzcxYmQ0OWI0NDYxLi5lODNlZjljNGE3ZjJk
NGNlMTAyYWRkYjc5YzlhN2QwMjliMzA4Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXJDdXN0b20uaApAQCAtOTU2LDcgKzk1Niw3IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJD
dXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gYnVpbGRlclN0YXRlLnN0eWxl
KCkuY29sb3IoKTsKIAotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRv
d0RhdGE+KExlbmd0aFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9w
ZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29s
b3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9
IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oTGVuZ3RoUG9pbnQgeyB4LCB5IH0sIGJsdXIsIHNwcmVh
ZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBj
b2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICAg
ICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlz
Rmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qg
ZW50cnkKICAgICAgICAgZWxzZQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgaW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHUKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVy
VmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQg
IT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNf
Y2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAg
ICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVy
VmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0
b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250
ZW50PihDb3VudGVyQ29udGVudCB7IGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5
bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpIH0pOwogICAgICAgICAgICAgYnVpbGRl
clN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAg
ICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggMzM1ZjNmYWRmYWFlZWUzZWI2MjUx
ZWZiOTg5OTUzOTE0ZDYwMTYzNS4uZDhmNzdmNmFmMWI1N2EyMDhhNGVlMmRlMzM1OWE1YmFhODlk
MmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9w
dGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxv
cHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGY1NjJjOTEwMzMzMDk0NWMwN2E3YmRkOGJlNDQyYjVhODg3Nzk3MGUuLjNhODJhN2VlZTU0MmEx
M2MzMzIzYmJkMGM4OWY2MzI0ZjkxYmQ5YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5
IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9N
ZWRpYVRpbWUuY3BwOiBVcGRhdGVkIHRlc3RzIGZvciBjaGFuZ2UgdG8gT3B0aW9uU2V0IGZvcgor
ICAgICAgICBNZWRpYVRpbWUgZmxhZ3MsIGFuZCBmb3IgbmFtZSBjaGFuZ2UgZnJvbSBSb3VuZGlu
Z0ZsYWdzIHRvIFJvdW5kaW5nTW9kZS4KKwogMjAyMi0wMS0yMCAgSm9uYXRoYW4gQmVkYXJkICA8
amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0VXU10gU3VwcG9ydCBwdWxsIHJlcXVlc3Qg
aW4gQW5heWx6ZVBhdGNoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGM4MjI3Nzk4ZmExMTIy
ZWZlNDRiMmQ1YzY0ZmJmNjUwMzAxNTZlYjAuLmU5MjFlODk2YjcwYmEyYWFjZmE1OTkzZTI1N2Mz
Mjk5ZWRiMzAzYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBP
QkpDX0NMQVNTIE5TVW5kb01hbmFnZXI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
TWVkaWFUaW1lLmNwcAppbmRleCBiMGI1NGE4MDNmYWM4NWQxNTg0ZTcyM2M4NmUxZDljYmE0NGRj
ZTdhLi5kYzhlMjg5ODRhZTNhODAyZTU3Mzg2NzY2MTUyOTU5NGFjNTlkNDc5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAKQEAgLTE3MSw3ICsxNzEsNyBA
QCBURVNUKFdURiwgTWVkaWFUaW1lKQogCiAgICAgLy8gQ29uc3RhbnRzCiAgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6emVyb1RpbWUoKSwgTWVkaWFUaW1lKDAsIDEpKTsKLSAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRpYVRpbWUoLTEsIDEsIDApKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRpYVRpbWUoLTEsIDEsIHsgfSkpOwog
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGlt
ZSgwLCAxLCBNZWRpYVRpbWU6OlBvc2l0aXZlSW5maW5pdGUpKTsKICAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1l
OjpOZWdhdGl2ZUluZmluaXRlKSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0
ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6SW5kZWZpbml0ZSkpOwpAQCAtMjU0
LDY5ICsyNTQsNjkgQEAgVEVTVChXVEYsIE1lZGlhVGltZSkKICAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDIsIDIpLnRvVGltZVNjYWxlKDEpLnRpbWVWYWx1ZSgpLCAxKTsKICAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDIsIDYpLnRvVGltZVNjYWxlKDMpLnRpbWVWYWx1ZSgpLCAxKTsKICAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEpLmhhc0JlZW5Sb3VuZGVkKCksIHRy
dWUpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSg1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKDQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdz
OjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpI
YWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdh
eUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUx
LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJv
bVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybyku
dGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwg
MCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8p
LnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgp
LCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDks
IDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJv
KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsK
LSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6
OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
LTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21a
ZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFs
dWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdG
bGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOwotICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDAp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0x
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZl
SW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUx
LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVn
YXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dh
cmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZB
d2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDUx
LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZy
b21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSg0OSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVy
bykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVW
YWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVl
KCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2Fy
ZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZh
bHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdN
b2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFpl
cm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZh
bHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6
VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEs
IDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJv
KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVW
YWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0y
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdN
b2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
TW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdN
b2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAt
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIC0yKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptYXgoKSwgMSkudG9UaW1lU2NhbGUoMiksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZp
bml0ZVRpbWUoKSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWluKCksIDEpLnRvVGltZVNjYWxlKDIpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5p
dGVUaW1lKCkpOwogICAgIGludDY0X3QgbWF4SW50MzIgPSBudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShtYXhJbnQzMiAqIDIsIDEpLnRvVGlt
ZVNjYWxlKDIpLnRpbWVWYWx1ZSgpLCBtYXhJbnQzMiAqIDQpOwogICAgIGludDY0X3QgYmlnSW50
ID0gMUxMIDw8IDYyOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50LCAxVSA8PCAzMSku
dG9UaW1lU2NhbGUoMVUgPDwgMjkpLnRpbWVWYWx1ZSgpLCBiaWdJbnQgLyA0KTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKGJpZ0ludCArIDEsIDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAy
OSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgYmln
SW50IC8gNCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQgKyAxLCAxVSA8PCAzMSku
dG9UaW1lU2NhbGUoMVUgPDwgMjksIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJv
KS50aW1lVmFsdWUoKSwgYmlnSW50IC8gNCk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJ
bnQgKyAxLCAxVSA8PCAzMSkudG9UaW1lU2NhbGUoMVUgPDwgMjkpLmhhc0JlZW5Sb3VuZGVkKCks
IHRydWUpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50IC0gMiwgTWVkaWFUaW1lOjpN
YXhpbXVtVGltZVNjYWxlKS50b1RpbWVTY2FsZShNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUg
LSAxKS5oYXNCZWVuUm91bmRlZCgpLCB0cnVlKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJp
Z0ludCwgMSkudG9UaW1lU2NhbGUoTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNjYWxlKSwgTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1NpZ25hbHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU2lnbmFscy5jcHAKaW5kZXggMjQ1YjFhZTcxNzM5NWIzN2U4ZDI1ZTgyMzM0OGM1YjBlYjIx
MzE0MC4uZDYwMmU2MzFmMjdiMGM5MmE2OTNlY2ZhMGQ5NjdiNmU3YTQyYTdkOCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVk
ZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RocmVhZHMvU2lnbmFscy5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9HZXRVc2VyTWVkaWEubW0KaW5kZXggNjViZmJkZWYwODIyNDYwODIzY2ZkNjFhYTM3
Mjg3NDk1YjJiMWRhNC4uNTQ0NGFjN2VjYWNiYjkzNmJlOGMwZjY4Mjc2NTExODZiOGUzMDk1MiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlh
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5t
bQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS0ludGVybmFsRGVidWdGZWF0
dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KKyNpbXBv
cnQgPHd0Zi9TZWNvbmRzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQubW0KaW5kZXggZWEwMTEwYzVmNTRjMGE1NDAyMjBlMTc2N2E2ZGUxMzc4ZjNjMmNjMC4uYjky
YjBmOTVmMGY3MWVkYTZiNDgwYWU1MTE4NWI5YzQ4MjZjMzBhZSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3
dGYvV2FsbFRpbWUuaD4KIAogc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdXaXRo
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRJbk5ldHdvcmtQcm9jZXNzKCkKIHsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKaW5kZXggMjE5NGNhM2UwYjg3NTc0ZTFi
OGM4Mjc0ZmYxNGY1Y2E4NWYyYjEzNy4uNmM0MTUwYTQ0YzE5Yzg3Y2E5OWExMTc5YzBjMTViZGRi
NjQzZmRkMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449945</attachid>
            <date>2022-01-25 11:06:23 -0800</date>
            <delta_ts>2022-01-25 16:07:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220125110622.patch</filename>
            <type>text/plain</type>
            <size>151446</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTljMTE1MzRhMDlmMWNlODkwM2RiNTFhNmRiNmQ3OTM4Y2Y2MWRhLi44ODg5NDExOGJiODVmMGE2
ZDc3MmQ4OWI4NTkyNjFlZjg3NWU0MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBWZWN0b3IgYW5kIEZpeGVkVmVjdG9yOjpmaW5kTWF0Y2hpbmcgdG8gZmluZElmIHRv
IG1hdGNoIHN0bCBuYW1pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJhNzhhYzEwZjU5NWE5NmIyMzczZDMwMTliYzZmMGM4
NjYxYWJjODUuLjIyMTBlNTZjYWM3NTA3MzgxNzA3YWJkYTM3YzdjMTJkMWQ1ZDE5ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTA1IEBACisyMDIyLTAxLTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3Vz
IHNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9Gb3J3YXJkLmg6IEFkZCBTZWNvbmRzIGFuZCBXYWxsVGltZSB0byB0aGUg
dXNpbmcgc2VjdGlvbi4KKworICAgICAgICAqIHd0Zi9Mb2NrLmg6IFVzZSBGb3J3YXJkLmggaW5z
dGVhZCBvZiBTZWNvbmRzLmggc2luY2UgU2Vjb25kcyBpcyBvbmx5IHVzZWQKKyAgICAgICAgaGVy
ZSBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJuIHR5cGUsIG5vIGFjdHVhbCB1c2Ugb2YgdGhlIGNs
YXNzIGluIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmNwcDoKKyAgICAg
ICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRpbWUpOiBEZWxldGVkIHRoZSBjb3B5IGNvbnN0cnVj
dG9yIHRoYXQgdXNlZCB0aGUgYXNzaWdubWVudAorICAgICAgICBvcGVyYXRvci4gVGhlIGRlZmF1
bHQgY29weSBjb25zdHJ1Y3RvciB3b3JrcyBmaW5lLCB3ZSBkb24ndCBoYXZlIHRvIHdyaXRlIG9u
ZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRpbWUpOiBBZGRlZCBhIEhhc0RvdWJs
ZSBjb25zdHJ1Y3RvciBmb3IgdXNlIGluIGNyZWF0ZQorICAgICAgICBmdW5jdGlvbnMuIEl0J3Mg
Y29uc3RleHByIGJ1dCBpdCdzIGluIHRoZSAuY3BwIGZpbGUgYmVjYXVzZSBpdCdzIHByaXZhdGUu
CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KTogU2ltcGxpZmllZCBi
eSB1c2luZyB0aGUgSGFzRG91YmxlIGNvbnN0cnVjdG9yLgorICAgICAgICBBbHNvIHVzZSBzdGQ6
OmlzbmFuIGluc3RlYWQgb2YgYSB0cmlja3kgYWx0ZXJuYXRlIHdheSBvZiBkb2luZyBpdC4gUmVt
b3ZlZCBhCisgICAgICAgIHNwZWNpYWwgY2FzZSBmb3IgaW5maW5pdHkgc2luY2UgdGhlIG1heGlt
dW0gYW5kIG1pbmltdW0gY2FzZXMgYWxyZWFkeSBjb3ZlciB0aGF0LgorICAgICAgICBBbmQgcmVw
bGFjZWQgYSBzdGF0aWNfY2FzdCB3aXRoIGFuIGFzc2lnbm1lbnQgdG8gdGhlIGRlc2lyZWQgdHlw
ZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKTogRGl0dG8uIFRo
ZXNlIGZ1bmN0aW9ucyBhcmUgc28gc2ltaWxhciB0aGUKKyAgICAgICAgc2hvdWxkIHByb2JhYmx5
IGJlIHRlbXBsYXRlZCBpbnN0ZWFkIG9mIHJlcGVhdGVkIHR3aWNlLgorICAgICAgICAoV1RGOjpN
ZWRpYVRpbWU6OnRvRmxvYXQgY29uc3QpOiBSZXBsYWNlZCBhIHN0YXRpY19jYXN0IHdpdGggYXNz
aWdubWVudCB0byB0aGUKKyAgICAgICAgZGVzaXJlZCB0eXBlLgorICAgICAgICAoV1RGOjpNZWRp
YVRpbWU6OnRvRG91YmxlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6
b3BlcmF0b3I9KTogRGVsZXRlZC4gVGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciB3b3Jr
cyBmaW5lLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yKyBjb25zdCk6IFRha2Ug
dGhlIGFyZ3VtZW50IGJ5IHZhbHVlIGluc3RlYWQgb2YgcmVmZXJlbmNlLgorICAgICAgICAoV1RG
OjpNZWRpYVRpbWU6Om9wZXJhdG9yLSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpNZWRp
YVRpbWU6Om9wZXJhdG9yKiBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6
Om9wZXJhdG9yISBjb25zdCk6IFNpbXBsaWZpZWQgdGhlIGltcGxlbWVudGF0aW9uIGJ5IHVzaW5n
CisgICAgICAgIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBmbGFncyBkaXJlY3Rs
eS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciBib29sIGNvbnN0KTogQ2FsbCBv
cGVyYXRvciEgaW5zdGVhZCBvZiByZXBlYXRpbmcgdGhlCisgICAgICAgIGxvZ2ljIHR3aWNlLgor
ICAgICAgICAoV1RGOjpvcmRlcmluZyk6IEFkZGVkIHR3byBvdmVybG9hZGVkIGZ1bmN0aW9ucy4g
T25lIGlzIGEgdGVtcGxhdGUgdGhhdCBjb21wYXJlcworICAgICAgICBzY2FsYXJzIGFuZCB0aGUg
b3RoZXIgY29tcGFyZXMgdHdvIE1lZGlhVGltZSBvYmplY3RzLiBUaGUgc2Vjb25kIG9uZSByZXBs
YWNlcyB0aGUKKyAgICAgICAgTWVkaWFUaW1lOjpjb21wYXJlIGZ1bmN0aW9uLCB3aGljaCBpcyBu
b3cganVzdCBhIGxpZ2h0d2VpZ2h0IGNvdmVyIGZvciB0aGlzLgorICAgICAgICBUaGUgb2xkIGNv
ZGUgaGFkIHRyaWNreSBsb2dpYywgYW5kIHRoaXMgbmV3IGZ1bmN0aW9uIGlzIGEgY29tcGxldGUg
cmV3cml0ZS4KKyAgICAgICAgVG8gbWFrZSB0aGUgbG9naWMgZWFzeSB0byBmb2xsb3csIHdlIGV4
dHJhY3QgdGhlIHBpZWNlcyBvZiB0aGUgTWVkaWFUaW1lIGFuZAorICAgICAgICBjb21wYXJlIHRo
ZW0uIElmIHRoZXkgYXJlIGVxdWFsIHRoZW4gd2UgZmFsbCB0aHJvdWdoIHRvIHRoZSBuZXh0LCBh
bmQgc28gb24uCisgICAgICAgIEF0IHRoZSBlbmQgdGhlcmUgYXJlIHZhcmlvdXMgY2FzZXMgZm9y
IHRpbWVzIHdlIGNhbiBjb21wYXJlIHdpdGhvdXQgZG9pbmcKKyAgICAgICAgYXJpdGhtZXRpYywg
YW5kIHRoZXNlIGFyZSB0aGUgc2FtZSBhcyB0aGUgb25lcyB0aGF0IHdlcmUgYWxyZWFkeSBoZXJl
LCBidXQgd2l0aAorICAgICAgICBzaW1wbGlmaWVkIGxvZ2ljIGluIHNvbWUgY2FzZXMgdGhhdCBz
aG91ZGwgYmUgZWFzaWVyIHRvIGZvbGxvdywgYW5kIG5vIHVzZXMgb2YKKyAgICAgICAgc3RhdGlj
X2Nhc3QgYW55IG1vcmUuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aXNCZXR3ZWVuIGNvbnN0
KTogVGFrZSBhcmd1bWVudHMgYnkgdmFsdWUgaW5zdGVhZCBvZiByZWZlcmVuY2UuCisgICAgICAg
IChXVEY6Ok1lZGlhVGltZTo6emVyb1RpbWUpOiBEZWxldGVkLiBOb3cgYSBjb25zdGV4cHIgaW4g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbnZhbGlkVGltZSk6IERlbGV0
ZWQuIERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1l
KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6bmVnYXRpdmVJbmZp
bml0ZVRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbmRl
ZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRv
VGltZVNjYWxlIGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSb3VuZGluZ0ZsYWdzIGlzIG5vdworICAg
ICAgICBSb3VuZGluZ01vZGUuIEl0IGRpZG4ndCBtYWtlIHNlbnNlIHRvIHRyZWF0IG11dHVhbGx5
IGV4Y2x1c2l2ZSByb3VuZGluZyBwb2xpY2llcworICAgICAgICBhcyAiZmxhZ3MiLgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSk6IERpdHRvLiBBbHNvIHVzZSBzdGQ6OmV4
Y2hhbmdlIGluc3RlYWQgb2Ygc3RkOjpzd2FwCisgICAgICAgIGFuZCB1c2Ugc3RkOjphYnMgaW5z
dGVhZCBvZiBsbGFicy4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0pTT05PYmplY3QgY29u
c3QpOiBSZW1vdmVkIHN0YXRpY19jYXN0IHRvIGRvdWJsZS4KKyAgICAgICAgKFdURjo6YWJzKTog
VGFrZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0ZWFkIG9mIHJlZmVyZW5jZS4gUmVuYW1lZCBhcmd1
bWVudCBmcm9tIHJocworICAgICAgICBzaW5jZSB0aGUgYXJndW1lbnQgaXMgbm90IHRoZSByaWdo
dC1oYW5kIHNpZGUgb2YgYW4gb3BlcmF0b3IuIFJlbW92ZWQgdW5uZWVkZWQKKyAgICAgICAgc3Bl
Y2lhbCBjYXNlIHRvIGhhbmRsZSBpbnZhbGlkIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIHdvcmtzIGZp
bmUgb24gaW52YWxpZCB3aXRob3V0IGl0LgorICAgICAgICBVc2Ugc3RkOjphYnMgaW5zdGVhZCBv
ZiBmYWJzLgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KTogVGFrZSBhcmd1bWVudCBieSB2YWx1
ZSBpbnN0ZWFkIG9mIHJlZmVyZW5jZS4KKworICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuaDogUmVt
b3ZlZCBtYW55IHVubmVlZGVkIGluY2x1ZGVzLiBSZW1vdmVkIFdURl9FWFBPUlRfUFJJVkFURQor
ICAgICAgICBmcm9tIHRoZSBjbGFzcyBiZWNhdXNlIGl0J3Mgbm90IGNvbXBhdGlibGUgd2l0aCBp
bmxpbmVkIGZ1bmN0aW9ucyBhY2NvcmRpbmcgdG8KKyAgICAgICAgdGhlIHN0eWxlIGNoZWNrZXIg
c2NyaXB0LCBpbnN0ZWFkIGV4cG9ydGluZyBpbmRpdmlkdWFsIGZ1bmN0aW9ucy4gVXNlIE9wdGlv
blNldAorICAgICAgICBmb3IgdGhlIGZsYWdzLiBDaGFuZ2VkIGZ1bmN0aW9ucyB0byB0YWtlIE1l
ZGlhVGltZSBieSB2YWx1ZSwgc2luY2UgaXQncyBqdXN0IGEKKyAgICAgICAgZmV3IHNjYWxhcnMs
IG5vIHNpZ25pZmljYW50IGNvc3QgdG8gY29weWluZyBpdCwgYW5kIHBhc3NpbmcgYnkgdmFsdWUg
bWVhbnMgdGhlCisgICAgICAgIHdob2xlIHRoaW5nIG1pZ2h0IGVuZCB1cCBpbiByZWdpc3RlcnMg
c2luY2Ugd2Ugd29uJ3QgbmVlZCBhIHBvaW50ZXIgdG8gaXQgdG8KKyAgICAgICAgcGFzcyBhcyB0
aGUgcmVmZXJlbmNlLiBNYWRlIHRoZSB2YXJpb3VzIHNwZWNpYWwgdGltZXMgcmV0dXJuIGNvbnN0
ZXhwciB2YWx1ZXMsCisgICAgICAgIHdoaWNoIHdpbGwgY29tcGlsZSB0aGUgYXBwcm9wcmlhdGUg
Yml0IHBhdHRlcm4gd2l0aG91dCBhbnkgY29tcHV0YXRpb24gbmVlZGVkLgorICAgICAgICBDaGFu
Z2VkIHRoZSB0aW1lVmFsdWUgYW5kIHRpbWVTY2FsZSBmdW5jdGlvbnMgdG8gcmV0dXJuIHRoZSBz
Y2FsYXJzLCBub3QgYQorICAgICAgICBjb25zdCByZWZlcmVuY2UuIFJlbmFtZWQgUm91bmRpbmdG
bGFncyB0byBSb3VuZGluZ01vZGUgc2luY2UgaXQncyBhIGJ1bmNoIG9mCisgICAgICAgIG11dHVh
bGx5IGV4Y2x1c2l2ZSByb3VuZGluZyBtb2Rlcywgbm90IGEgc2V0IG9mIGZsYWdzIHdlIGNhbiBj
b21iaW5lLiBSZW5hbWVkCisgICAgICAgIHRoZSBkYXRhIG1lbWJlcnMsIHNpbmNlIHRoZXkgZG9u
4oCZdCBhbGwgbmVlZCBhICJ0aW1lIiBwcmVmaXggaW4gYSBjbGFzcyB0aGF0IGlzCisgICAgICAg
IGFscmVhZHkgbmFtZWQgTWVkaWFUaW1lLiBUb29rIHNvbWUgdW5uZWVkZWQgY29uc3Qgb3V0IG9m
IE1lZGlhVGltZVJhbmdlLgorICAgICAgICBBZGRlZCB0aGUgRW51bVRyYWl0cyBmb3IgdGhlIGZs
YWdzIHNvIHRoZXkgY2FuIGJlIGVuY29kZWQgYW5kIGRlY29kZWQuIEJlZm9yZQorICAgICAgICB3
ZSB3ZXJlIGVuY29kaW5nIHRoZSBzZXQgb2YgZmxhZ3MgYXMgYSB1aW50OF90LCB0aGlzIGlzIGJl
dHRlci4KKworICAgICAgICAqIHd0Zi9TZWNvbmRzLmg6IE1vdmVkIHRoZSAidXNpbmcgV1RGOjpT
ZWNvbmRzIiB0byBGb3J3YXJkLmguCisKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oOiBJbmNsdWRlIEZvcndhcmQuaCBpbnN0ZWFkIG9mIFdhbGxUaW1lLmggc2luY2UKKyAgICAg
ICAgdGhpcyBmaWxlIG9ubHkgZGVmaW5lcyBhIGZ1bmN0aW9uIHdpdGggYSBXYWxsVGltZSBhcmd1
bWVudCBhbmQgZG9lc24ndCBuZWVkCisgICAgICAgIHRvIHB1bGwgdGhlIGVudGlyZSBjbGFzcyBk
ZWZpbml0aW9uIGluLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAgIChXVEY6OnBv
cnRBbGxvd2VkKTogVXNlIFNvcnRlZEFycmF5U2V0LgorCisgICAgICAgICogd3RmL1dhbGxUaW1l
Lmg6IE1vdmVkIHRoZSAidXNpbmcgV1RGOjpXYWxsVGltZSIgdG8gRm9yd2FyZC5oLgorCisgICAg
ICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oOiBJbmNsdWRlIDxvcHRpb25h
bD4gaW5zdGVhZCBvZiBGb3J3YXJkLmguCisgICAgICAgIFRoZSBmb3JtZXIgaXMgYWxsIHRoYXQn
cyBuZWVkZWQuCisKKyAgICAgICAgKiB3dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwOiBBZGRl
ZCBhbiBpbmNsdWRlIG9mIFdhbGxUaW1lLmggc2luY2UKKyAgICAgICAgVGhyZWFkaW5nUHJpbWl0
aXZlcy5oIG5vIGxvbmdlciBwdWxscyBpdCBpbi4KKworICAgICAgICAqIHd0Zi90aHJlYWRzL1Np
Z25hbHMuaDogQWRkZWQgYW4gaW5jbHVkZSBvZiA8b3B0aW9uYWw+IHNpbmNlIExvY2suaCBubwor
ICAgICAgICBsb25nZXIgcHVsbHMgaXQgaW4gYnkgaW5jbHVkaW5nIFNlY29uZHMuaC4KKworICAg
ICAgICAqIHd0Zi93aW4vVGhyZWFkaW5nV2luLmNwcDogQWRkZWQgaW5jbHVkZSBvZiBXYWxsVGlt
ZS5oIHNpbmNlCisgICAgICAgIFRocmVhZGluZ1ByaW1pdGl2ZXMuaCBubyBsb25nZXIgcHVsbHMg
aXQgaW4uCisKKwogMjAyMi0wMS0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVuYW1lIFZlY3RvciBhbmQgRml4ZWRWZWN0b3I6OmZpbmRNYXRjaGluZyB0byBm
aW5kSWYgdG8gbWF0Y2ggc3RsIG5hbWluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1OGYyMmRlMDg4NWQ2YjQ4
OTc1ZmY1YzIwNzFiNzBkY2Y3NzFiZmU5Li42NGE0MWU5ZTIzZGUxNTQ1ODU3YTNmMTMwZmNmZGNi
MGM1OTEyOGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc4IEBACisyMDIyLTAxLTI0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxp
ZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGEuaDogQWRkZWQgaW5jbHVkZSBvZgorICAgICAgICA8b3B0aW9u
YWw+IHNpbmNlIG5vdGhpbmcgcHVsbHMgdGhlbSBpbi4KKworICAgICAgICAqIGFuaW1hdGlvbi9D
U1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOiBV
cGRhdGVkIHNpbmNlIFRhYlNpemUgYW5kIExlbmd0aFBvaW50IGFyZSBib3RoIG5vdworICAgICAg
ICBzdHJ1Y3R1cmVzLCBhbmQgaGF2ZSBwdWJsaWMgZGF0YSBtZW1iZXJzIHJhdGhlciB0aGFuIGdl
dHRlciBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dGb3JCbGVuZGluZyk6ICBV
cGRhdGVkIHRvIHJldHVybiBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbgorICAgICAgICBhIG5ldmVy
LW51bGwgcG9pbnRlciBhbmQgZm9yIGNoYW5nZXMgdG8gTGVuZ3RoUG9pbnQuCisKKyAgICAgICAg
KiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnZhbHVlRm9yUG9zaXRpb24pOiBVcGRhdGVkIHNpbmNlIExlbmd0aFBvaW50IGlzIGEgc3RydWN0
dXJlLgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JQb3NpdGlvbk9yQXV0byk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Y29udGVudFRvQ1NTVmFsdWUpOiBVcGRhdGVkIHNpbmNlIENvdW50
ZXJDb250ZW50IGlzIGEgc3RydWN0dXJlLgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUpOiBVcGRhdGVkCisgICAgICAgIHNp
bmNlIFRhYlNpemUgaXMgYSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50Rm9yTGVuZ3RoUG9pbnQpOiBVcGRhdGVk
IHNpbmNlIExlbmd0aFBvaW50IGlzIGEgc3RydWN0dXJlLgorICAgICAgICAoV2ViQ29yZTo6Zmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KTogRGl0dG8uCisKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9E
aXNwbGF5U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlN0eWxlOjp0YWJTaXpl
IGNvbnN0KTogUGFzcyBUYWJTaXplIGJ5IHZhbHVlIGluc3RlYWQKKyAgICAgICAgb2YgYnkgcmVm
ZXJlbmNlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzUG90ZW50aWFsQ3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXIpOiBVc2UgU29ydGVkQXJyYXlT
ZXQuCisgICAgICAgIEl0IGRvZXMgdGhlIHNvcnRlZCBjaGVjayBhdCBjb21waWxlIHRpbWUgaW5z
dGVhZCBvZiBhdCBydW50aW1lIGluIGRlYnVnCisgICAgICAgIGJ1aWxkcywgYW5kIGFsc28gc2Vs
ZWN0cyBsaW5lYXIgc2VhcmNoIGlmIGl0J3MgZmFzdGVyIHRoYW4gYmluYXJ5IHNlYXJjaC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmg6IEFkZGVkIGluY2x1
ZGUgb2YgV2FsbFRpbWUuaCwgbm8KKyAgICAgICAgbG9uZ2VyIHB1bGxlZCBpbiBieSBUaHJlYWRp
bmcuaC4KKworICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aFBvaW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yPDwpOiBVcGRhdGVkIHNpbmNlIExlbmd0aFBvaW50IGlzIGEgc3RydWN0
dXJlLgorCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoUG9pbnQuaDogQ2hhbmdlZCBMZW5ndGhQ
b2ludCB0byBiZSBhIHRydWUgc3RydWN0dXJlCisgICAgICAgIHdpdGggcHVibGljIGRhdGEgbWVt
YmVycy4gVGhlIG9sZCBvbmUgd2FzLCBzdHJhbmdlbHksIGEgc3RydWN0LCBidXQKKyAgICAgICAg
d2l0aCBwcml2YXRlIGRhdGEuIFJlbW92ZWQgdGhlIGNvbnN0cnVjdG9ycywgZ2V0dGVycywgYW5k
IHNldHRlcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKTogQXZvaWQgYSB3YXJu
aW5nIGFib3V0IG1peGVkIGludGVnZXIKKyAgICAgICAgdHlwZXMgYnkgdXNpbmcgYSBsb2NhbCB2
YXJpYWJsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6dGFiV2lkdGggY29uc3QpOiBQYXNzIFRhYlNp
emUgYnkgdmFsdWUgaW5zdGVhZAorICAgICAgICBvZiBieSByZWZlcmVuY2UuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmg6IFJlbW92ZWQgdGhlIG1fIHByZWZpeGVzIGZy
b20gdGhlIGRhdGEKKyAgICAgICAgbWVtYmVycyBzaW5jZSBUYWJTaXplIGlzIGEgc3RydWN0LiBS
ZW1vdmVkIHRoZSBnZXR0ZXJzLiBNYXJrZWQgdGhlCisgICAgICAgIG9wZXJhdG9yIGJvb2wgZXhw
bGljaXQgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBhY2NpZGVudGFsbHkgcGFzcyB0aGlzCisgICAg
ICAgIHRvIHNvbWV0aGluZyB0YWtpbmcgYW4gaW50ZWdlciBhbmQgZ2V0dGluZyBhIDAgb3IgMS4g
QWRkZWQgYSBUZXh0U3RyZWFtCisgICAgICAgIG92ZXJsb2FkIHNvIHdlIGNhbiBzdHJlYW0gdGhp
cyB3aXRob3V0IGV4cGxpY2l0bHkgcGlja2luZyBpdCBhcGFydCBhdAorICAgICAgICBlYWNoIGNh
bGwgc2l0ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRSdW46OnRhYlNpemUgY29uc3QpOiBQYXNzIFRhYlNpemUgYnkgdmFs
dWUgaW5zdGVhZCBvZgorICAgICAgICBieSByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UnVuOjpzZXRUYWJTaXplKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9WUDlVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQTGV2ZWwpOiBV
c2UgU29ydGVkQXJyYXlTZXQuIFNhbWUgcmVhc29ucyBhcyBhYm92ZS4KKyAgICAgICAgKFdlYkNv
cmU6OmlzVmFsaWRWUENvbG9yUHJpbWFyaWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpp
c1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRl
QVZGT2JqQy5oOgorICAgICAgICBSZW1vdmVkIHRoZSBtXyBwcmVmaXhlcyBmcm9tIEluYmFuZENo
YXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDOjpDaGFwdGVyRGF0YQorICAgICAgICBkYXRhIG1lbWJl
cnMgc2luY2UgaXQncyBhIHN0cnVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6
UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcik6IEZpeGVk
IGEKKyAgICAgICAgYnVnIHdoZXJlIHRoaXMgdXNlZCBjdXJyZW50SW1hZ2VUaW1lIGluc3RlYWQg
b2YgbmV4dEltYWdlIHRpbWUsIGV4cG9zZWQKKyAgICAgICAgYmVjYXVzZSB0aGUgY2hhbmdlcyB0
byBNZWRpYVRpbWUgbWFkZSBpdCBnaXZlIHVzIGFuIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5nLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1Ry
YWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2UgcGFyc2VP
cHVzUHJpdmF0ZURhdGEgbm93IHJldHVybnMgYW4gb3B0aW9uYWwgaW5zdGVhZCBvZgorICAgICAg
ICByZXR1cm5pbmcgYSBib29sZWFuIGFuZCB1c2luZyBhbiBvdXQgYXJndW1lbnQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oOiBB
ZGRlZCBhbiBpbmNsdWRlCisgICAgICAgIG9mIFNlY29uZHMuaCBzaW5jZSBpdCdzIG5vIGxvbmdl
ciBwdWxsZWQgaW4gYnkgb3RoZXIgaW5jbHVkZXMgYW5kCisgICAgICAgIHRoaXMgc3RydWN0dXJl
IGhhcyBhIFNlY29uZHMgZGF0YSBtZW1iZXIuIENoYW5nZWQgdGhlIHBhcnNlT3B1c1ByaXZhdGVE
YXRhCisgICAgICAgIGZ1bmN0aW9uIHRvIHJldHVybiBhbiBvcHRpb25hbCBpbnN0ZWFkIG9mIHJl
dHVybmluZyBhIGJvb2wgYW5kIHVzaW5nCisgICAgICAgIGFuIG91dCBhcmd1bWVudCBmb3Igd2hh
dCBpcyBwYXJzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVk
aW9VdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlT3B1c1ByaXZhdGVE
YXRhKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW06
IFJlbW92ZWQgdGhlIGNvbnN0cnVjdG9ycyBmcm9tCisgICAgICAgIE9TQnVpbGRJbmZvIGFuZCBt
YWRlIGFsbCBpdHMgb3BlcmF0b3JzIGNvbnN0ZXhwci4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0Lmg6IEFkZGVkIGFuIGluY2x1ZGUKKyAg
ICAgICAgb2YgU2Vjb25kcy5oLCBubyBsb25nZXIgcHVsbGVkIGluIGJ5IExvY2suaC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tOiBBZGRl
ZCBhbiBpbmNsdWRlIG9mCisgICAgICAgIFdhbGxUaW1lLmgsIG5vIGxvbmdlciBwdWxsZWQgaW4g
YnkgVGhyZWFkaW5nUHJpbWl0aXZlcy5oLgorCisgICAgICAgICogcmVuZGVyaW5nL0dyaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSk6IFJl
dHVybiBhbiBvcHRpb25hbCBpbnN0ZWFkIG9mCisgICAgICAgIGEgdW5pcXVlX3B0ci4gTm8gcmVh
c29uIHRvIHVzZSBhIGhlYXAgYmxvY2sgZm9yIHRoaXMuCisgICAgICAgICogcmVuZGVyaW5nL0dy
aWQuaDogVXBkYXRlZCBzaW5jZSBHcmlkQXJlYSBpcyBub3cgYSBzdHJ1Y3QgYW5kIGZvciB0aGUg
YWJvdmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpvcmlnaW5hbFRleHQgY29uc3QpOiBVcGRhdGVkIHNp
bmNlIENvdW50ZXJDb250ZW50CisgICAgICAgIGlzIG5vdyBhIHN0cnVjdHVyZS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkIGNv
bnN0KToKKyAgICAgICAgUmV0dXJuIGEgR3JpZEFyZWEgaW5zdGVhZCBvZiBhIHVuaXF1ZV9wdHIu
IFRoZSByZXR1cm4gdmFsdWUgaXMgbmV2ZXIgbnVsbCBhbmQKKyAgICAgICAgdGhlcmUgaXMgbm8g
bmVlZCB0byBwdXQgaXQgb24gdGhlIGhlYXAuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkIGNvbnN0KTogVXBkYXRlZCBmb3IK
KyAgICAgICAgdGhlIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQgY29uc3QpOiBVc2Ugb3B0aW9uYWwgaW5zdGVh
ZAorICAgICAgICBvZiB1bmlxdWVfcHRyIGZvciBhIGxvY2FsIHZhcmlhYmxlIHdpdGggdGhlIGVt
cHR5IGdyaWQgYXJlYSBpbiBpdC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOiBV
cGRhdGVkIHNpbmNlIEdyaWRBcmVhIGlzIGEgc3RydWN0IGFuZCBmb3IgdGhlIGFib3ZlLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6IFVzZSBjb25zdGV4
cHIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnJlcGxhY2VkQ29udGVudFJlY3QgY29uc3QpOiBVcGRh
dGVkIHNpbmNlCisgICAgICAgIExlbmd0aFBvaW50IGlzIGEgc3RydWN0dXJlLgorICAgICAgICAq
IHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94
UGFpbnRlcjo6ZGVidWdUZXh0U2hhZG93IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvVGV4dFBhaW50U3R5bGUuaDogU3R5bGUgdHdlYWtzLgorCisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL0NvdW50ZXJDb250ZW50Lmg6IFR1cm5lZCB0aGUgQ291bnRlckNvbnRlbnQgY2xh
c3MgaW50byBhCisgICAgICAgIHN0cnVjdHVyZSB3aXRoIHB1YmxpYyBkYXRhIG1lbWJlcnMuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmg6IFJlbW92ZWQgdGhlIEZpbGxT
aXplIGNvbnN0cnVjdG9ycy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5o
OiBNYWRlIEdyaWRTcGFuVHlwZSBiZSBiYXNlZCBvbiBhIHVpbnQ4X3QuCisgICAgICAgIFJlb3Jk
ZXJlZCB0aGUgZGF0YSBtZW1iZXJzIG9mIEdyaWRBcmVhIHRvIGJlIHJvd3MgZmlyc3QgYW5kIHRo
ZW4gY29sdW1ucworICAgICAgICB0byBmb2xsb3cgdGhlIG9yZGVyIGZyb20gdGhlIGNvbnN0cnVj
dG9yIGFuZCBhbHNvIHRoZSBjb252ZW50aW9uYWwKKyAgICAgICAgInggYmVmb3JlIHkiIG9yZGVy
aW5nLiBUaGlzIHdpbGwgYWxzbyBiZSBnb29kIHNvbWUgZGF5IHdoZW4gd2UgY2FuIHVzZSB0aGUK
KyAgICAgICAgZGVmYXVsdCA8PT4gZnJvbSBDKysyMCwgd2hpY2ggZGVwZW5kcyBvbiBkYXRhIG1l
bWJlciBvcmRlcmluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmg6
IFR3ZWFrZWQgY29tbWVudHMgYW5kIG1vdmVkIGluaXRpYWxpemF0aW9uCisgICAgICAgIG9mIG1f
ZmxleCBmcm9tIHRoZSBjb25zdHJ1Y3RvciB0byB0aGUgZGF0YSBtZW1iZXIgZGVmaW5pdGlvbi4K
KworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlNb3Rpb25QYXRoVHJhbnNmb3JtIGNvbnN0KTogVXBk
YXRlZCBzaW5jZQorICAgICAgICBMZW5ndGhQb2ludCBpcyBhIHN0cnVjdHVyZS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOiBVcGRhdGVkIHNpbmNlIENvdW50ZXJD
b250ZW50IGFuZCBMZW5naHRQb2ludAorICAgICAgICBhcmUgc3RydWN0dXJlcywgYW5kIHRvIHBh
c3MgVGFiU2l6ZSBieSB2YWx1ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TaGFkb3dE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OlNoYWRvd0RhdGEpOiBTaW1w
bGlmaWVkIGNvbnN0cnVjdG9yIHNpbmNlIG1fbG9jYXRpb24KKyAgICAgICAgZG9lcyBub3QgaGF2
ZSB0byBiZSBzcGxpdCBvdXQgaW50byB4IGFuZCB5IGp1c3QgdG8gY29weSBpdC4KKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
RGF0YTo6U2hhZG93RGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6
eCBjb25zdCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgbm93IGEgc3RydWN0dXJlLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6eSBjb25zdCk6IERpdHRvLgorCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oOiBSZW1vdmVkIHVubmVl
ZGVkIGluY2x1ZGVzLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhYlNp
emUpOiBVcGRhdGVkIHNpbmNlIFRhYlNpemUKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyBjb25zdHJ1
Y3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFBvc2l0aW9uKTogVXBkYXRlZCBzaW5jZSBMZW5ndGhQb2ludAorICAgICAgICBubyBsb25nZXIg
aGFzIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UG9zaXRpb25PckF1dG8pOiBEaXR0by4KKyAgICAgICAgKiBzdHlsZS9TdHls
ZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9t
OjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOiBVcGRhdGVkIHNpbmNlIENv
dW50ZXJDb250ZW50CisgICAgICAgIG5vIGxvbmdlciBoYXMgY29uc3RydWN0b3JzLgorCiAyMDIy
LTAxLTI1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjgxNDE5KTogaUNsb3VkLmNvbSBOb3RlcyB3ZWIgYXBwIGZvbnRzIHJl
bmRlciBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMDVjNWFiZmE0YTNkMjc0YjRi
YzJlMDc4YTA2NDMyYTZlYzFjMDgxZi4uMWQ1NmE5Y2JjMDljZDg2ZjkyYjE3ODgzODVlYWFlMzRj
ZWZkNmZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDEtMjMg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFuZCBz
aW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2F2Zm91bmRhdGlvbi9N
ZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoUEFMOjpDTVRpbWVIYXNGbGFncyk6
IERlbGV0ZWQuCisgICAgICAgIChQQUw6OnRvTWVkaWFUaW1lKTogVGFrZSBDTVRpbWUgYnkgdmFs
dWUuIEFsc28gc2ltcGxpZmllZCBsb2dpYworICAgICAgICB0byBqdXN0IGNoZWNrIG9uZSBmbGFn
IGF0IGEgdGltZSwgd2hpY2ggbWVhbnMgdGhlIENNVGltZUhhc0ZsYWdzCisgICAgICAgIGZ1bmN0
aW9uIGlzbid0IG5lZWRlZCBhbnkgbW9yZS4gQWxzbyBub3cgdXNlcyBPcHRpb25TZXQgYmVjYXVz
ZQorICAgICAgICB0aGF0IGlzIGhvdyBNZWRpYVRpbWUgd29ya3MuCisgICAgICAgIChQQUw6OnRv
Q01UaW1lKTogVGFrZSBNZWRpYVRpbWUgYnkgdmFsdWUuCisgICAgICAgICogcGFsL2F2Zm91bmRh
dGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCiAy
MDIyLTAxLTI0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMjgyMzIwKTogW0NvY29hXSBVc2VyLWluc3RhbGxlZCBmb250cyBk
b24ndCB3b3JrIGluIHRoZSBHUFUgUHJvY2VzcyAoaW4gV0tXZWJWaWV3KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
Mzk2MTgwY2JhMmM0ODUxZDQ0ZWM3YWQ2MmUzNTEwM2YwNWM3ODMxLi5mNWUxMDYzODg1MGE5OTcw
MzNhYzBiNGNhYjNkYmY3YWZmMTUxMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIy
LTAxLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6
ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNpbXBsZSBzdHJ1Y3RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDoKKyAgICAgICAg
QWRkZWQgYW4gaW5jbHVkZSBvZiA8b3B0aW9uYWw+LCBubyBsb25nZXIgcHVsbGVkIGluIGJvdGgg
b3RoZXIgaGVhZGVycy4KKwogMjAyMi0wMS0yNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uIChyMjM1MjM2KTogTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyIHNlbmRzIG1lc3NhZ2VzIHRvIHdyb25nIFN0b3JhZ2VBcmVhTWFwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCmluZGV4IDVmNjYzYjJmZjVh
NWUzY2UwOGNlNDEyOTViODBhOWI3MTA2Yzg5NzkuLjU0NmNhZDc2ZWM4OGQ3MTA1NDFlNmEzZTU5
ODVmYTY0OTVmYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dXBlclNhbXBsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiT3B0aW9ucy5oIgog
I2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRl
IDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmgKaW5kZXggM2NlNzYxMjQyYzMyZWMxNjk0YzY1YTc3ZTc0MGU5YzY2OTNj
M2JiNC4uMzY0ODcyYTIwMWM2ZGJlZmZjOTdlNGM5MGM2NTYxYmY1OWQwNzRiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQu
aApAQCAtMTQ5LDYgKzE0OSw3IEBAIHVzaW5nIFdURjo6UmVmUHRyOwogdXNpbmcgV1RGOjpSZXRh
aW5QdHI7CiB1c2luZyBXVEY6OlNIQTE7CiB1c2luZyBXVEY6OlNjb3BlZExhbWJkYTsKK3VzaW5n
IFdURjo6U2Vjb25kczsKIHVzaW5nIFdURjo6U3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmdCdWZm
ZXI7CiB1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CkBAIC0xNjEsNiArMTYyLDcgQEAgdXNpbmcg
V1RGOjpUZXh0U3RyZWFtOwogdXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsK
IHVzaW5nIFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXYWxsVGltZTsKIHVzaW5nIFdURjo6V2Vh
a1B0cjsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0ZWQgPSBzdGQ6
OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9Mb2NrLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXggNDJlNGFhYzBjOWE0YWFlNTll
NzFiNWU5MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQzMTY5MGM2NDJlYmI3YmI3NmVh
NzY5OTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9jay5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tB
bGdvcml0aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZXR5QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5jcHAKaW5kZXggMjI0ZTc3NDk1ZmI5MzgzNGY1OGY5Y2YzMjM0MzdmMzkxNjkzOTQyZi4uYzE3
NTQ5YjlmZTViYzMxMDg0YWUyZGE4MzYwZjhlNjVlYTI2NjJjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3Bw
CkBAIC03Miw5ICs3Miw5IEBAIHN0YXRpYyBpbnQ2NF90IHNpZ251bShpbnQ2NF90IHZhbCkKIAog
Y29uc3QgdWludDMyX3QgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNjYWxlID0gMTAwMDAwMDAwMDsK
IAotTWVkaWFUaW1lOjpNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpCitjb25zdGV4cHIg
TWVkaWFUaW1lOjpNZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91YmxlIHZhbHVlKQorICAgIDog
bV92YWx1ZUFzRG91YmxlKHZhbHVlKQogewotICAgICp0aGlzID0gcmhzOwogfQogCiBNZWRpYVRp
bWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKQpAQCAtODQsNTcg
Kzg0LDUxIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9h
dFRpbWUpCiAgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZl
SW5maW5pdGVUaW1lKCk7CiAKLSAgICBNZWRpYVRpbWUgdmFsdWUoMCwgRGVmYXVsdFRpbWVTY2Fs
ZSwgVmFsaWQgfCBEb3VibGVWYWx1ZSk7Ci0gICAgdmFsdWUubV90aW1lVmFsdWVBc0RvdWJsZSA9
IGZsb2F0VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgZG91YmxlIHZhbHVlID0gZmxvYXRU
aW1lOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsKIH0KIAotTWVkaWFUaW1lIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwgdWludDMyX3QgdGltZVNj
YWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlLCB1
aW50MzJfdCB0aW1lU2NhbGUpCiB7Ci0gICAgaWYgKGZsb2F0VGltZSAhPSBmbG9hdFRpbWUpCisg
ICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsK
LSAgICBpZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQotICAgICAgICByZXR1cm4gc3RkOjpzaWdu
Yml0KGZsb2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0
ZVRpbWUoKTsKLSAgICBpZiAoZmxvYXRUaW1lID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAg
aWYgKHZhbHVlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHJldHVybiBwb3NpdGl2
ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDY0X3Q+OjptaW4oKSkKKyAgICBpZiAodmFsdWUgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAg
ICAgaWYgKCF0aW1lU2NhbGUpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZmxvYXRUaW1l
KSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAg
ICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
OiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUgKGZsb2F0VGltZSAqIHRpbWVT
Y2FsZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIHdoaWxlICh2YWx1ZSAqIHRpbWVTY2Fs
ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICB0aW1lU2NhbGUgLz0gMjsKLSAgICBy
ZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZsb2F0VGltZSAqIHRpbWVTY2Fs
ZSksIHRpbWVTY2FsZSwgVmFsaWQpOworICAgIGludDY0X3Qgc2NhbGVkVmFsdWUgPSB2YWx1ZSAq
IHRpbWVTY2FsZTsKKyAgICByZXR1cm4geyBzY2FsZWRWYWx1ZSwgdGltZVNjYWxlIH07CiB9CiAK
LU1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUp
CitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSkKIHsK
LSAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgIGlmIChzdGQ6OmlzbmFuKHZh
bHVlKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYo
ZG91YmxlVGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBu
ZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLQotICAgIE1l
ZGlhVGltZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxpZCB8IERvdWJsZVZhbHVlKTsK
LSAgICB2YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZG91YmxlVGltZTsKLSAgICByZXR1cm4g
dmFsdWU7CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpKQorICAgICAgICByZXR1cm4gc3RkOjpz
aWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRl
VGltZSgpOworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsKIH0KIAotTWVkaWFUaW1l
IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSwgdWludDMyX3Qg
dGltZVNjYWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUg
dmFsdWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAoZG91YmxlVGltZSAhPSBkb3Vi
bGVUaW1lKQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGludmFs
aWRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGltZSkpCi0gICAgICAgIHJldHVy
biBzdGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGltZSA+PSBtYXhQbHVzT25lPGlu
dDY0X3Q+KQorICAgIGlmICh2YWx1ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICBy
ZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGltZSA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlmICh2YWx1ZSA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2ln
bmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmlu
aXRlVGltZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUgKGRv
dWJsZVRpbWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKKyAgICB3aGlsZSAo
dmFsdWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKICAgICAgICAgdGltZVNj
YWxlIC89IDI7Ci0gICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6
OnJvdW5kKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUpKSwgdGltZVNjYWxlLCBWYWxpZCk7CisgICAg
aW50NjRfdCBzY2FsZWRWYWx1ZSA9IHN0ZDo6cm91bmQodmFsdWUgKiB0aW1lU2NhbGUpOworICAg
IHJldHVybiB7IHNjYWxlZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0KIAogZmxvYXQgTWVkaWFUaW1l
Ojp0b0Zsb2F0KCkgY29uc3QKQEAgLTE0Niw4ICsxNDAsOSBAQCBmbG9hdCBNZWRpYVRpbWU6OnRv
RmxvYXQoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0
dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKICAgICBpZiAoaGFz
RG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlQXNEb3VibGU7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbWVWYWx1ZSkgLyBtX3RpbWVTY2FsZTsKKyAg
ICAgICAgcmV0dXJuIG1fdmFsdWVBc0RvdWJsZTsKKyAgICBmbG9hdCB2YWx1ZSA9IG1fdmFsdWU7
CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAogZG91YmxlIE1lZGlhVGltZTo6dG9E
b3VibGUoKSBjb25zdApAQCAtMTU5LDE5ICsxNTQsMTIgQEAgZG91YmxlIE1lZGlhVGltZTo6dG9E
b3VibGUoKSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0
dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiAgICAgaWYgKGhh
c0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZUFzRG91YmxlOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSAvIG1fdGltZVNjYWxlOwor
ICAgICAgICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOworICAgIGRvdWJsZSB2YWx1ZSA9IG1fdmFs
dWU7CisgICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAotTWVkaWFUaW1lJiBNZWRpYVRp
bWU6Om9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocykKLXsKLSAgICBtX3RpbWVWYWx1ZSA9
IHJocy5tX3RpbWVWYWx1ZTsKLSAgICBtX3RpbWVTY2FsZSA9IHJocy5tX3RpbWVTY2FsZTsKLSAg
ICBtX3RpbWVGbGFncyA9IHJocy5tX3RpbWVGbGFnczsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
LU1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29u
c3QKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhNZWRpYVRpbWUgcmhzKSBjb25zdAog
ewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBpbnZhbGlkVGltZSgpOwpAQCAtMTkyLDcgKzE4MCw3IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6
Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJuIG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiByaHMu
aGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERv
dWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlICsgcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOworICAg
ICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSAr
IHJocy5tX3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwgcmhz
Lmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUodG9Eb3VibGUoKSArIHJocy50b0RvdWJsZSgpKTsKQEAgLTIwMSwxMyArMTg5LDEzIEBA
IE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29u
c3QKICAgICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVTY2Fs
ZTsKLSAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUoYS5tX3RpbWVTY2FsZSwgYi5tX3RpbWVT
Y2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNj
YWxlKQorICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZShhLm1fc2NhbGUsIGIubV9zY2FsZSwg
Y29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQog
ICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxlOwogICAgIGEuc2V0VGlt
ZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNj
YWxlKTsKLSAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwg
YS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3ZhbHVlLCBiLm1fdmFs
dWUsIGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVTY2FsZSA9PSAxKQotICAg
ICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICByZXR1cm4gYS5tX3ZhbHVl
ID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwog
ICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5zZXRUaW1lU2NhbGUoY29t
bW9uVGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsK
QEAgLTIxNSw3ICsyMDMsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvcisoY29uc3Qg
TWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAgcmV0dXJuIGE7CiB9CiAKLU1lZGlhVGltZSBNZWRp
YVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK01lZGlhVGltZSBN
ZWRpYVRpbWU6Om9wZXJhdG9yLShNZWRpYVRpbWUgcmhzKSBjb25zdAogewogICAgIGlmIChyaHMu
aXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgp
OwpAQCAtMjM2LDcgKzIyNCw3IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25z
dCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVU
aW1lKCk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiByaHMuaGFzRG91YmxlVmFsdWUo
KSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3RpbWVWYWx1
ZUFzRG91YmxlIC0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOworICAgICAgICByZXR1cm4gTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSAtIHJocy5tX3ZhbHVlQXNE
b3VibGUpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwgcmhzLmhhc0RvdWJsZVZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUodG9Eb3VibGUo
KSAtIHJocy50b0RvdWJsZSgpKTsKQEAgLTI0NSwxMyArMjMzLDEzIEBAIE1lZGlhVGltZSBNZWRp
YVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICBNZWRpYVRp
bWUgYiA9IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVTY2FsZTsKLSAgICBpZiAoIWxl
YXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV90aW1lU2NhbGUsIHJocy5tX3RpbWVTY2FsZSwgY29t
bW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAg
IGlmICghbGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3NjYWxlLCByaHMubV9zY2FsZSwgY29t
bW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQogICAg
ICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxlOwogICAgIGEuc2V0VGltZVNj
YWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxl
KTsKLSAgICB3aGlsZSAoIXNhZmVTdWIoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5t
X3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVTdWIoYS5tX3ZhbHVlLCBiLm1fdmFsdWUs
IGEubV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVTY2FsZSA9PSAxKQotICAgICAg
ICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICByZXR1cm4gYS5tX3ZhbHVlID4g
MCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAg
ICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9u
VGltZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKQEAg
LTI3NSw5ICsyNjMsOSBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvci0oKSBjb25zdAog
CiAgICAgTWVkaWFUaW1lIG5lZ2F0aXZlVGltZSA9ICp0aGlzOwogICAgIGlmIChuZWdhdGl2ZVRp
bWUuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNE
b3VibGUgPSAtbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAgIG5lZ2F0
aXZlVGltZS5tX3ZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1lLm1fdmFsdWVBc0RvdWJsZTsK
ICAgICBlbHNlCi0gICAgICAgIG5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZSA9IC1uZWdhdGl2ZVRp
bWUubV90aW1lVmFsdWU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5tX3ZhbHVlID0gLW5lZ2F0aXZl
VGltZS5tX3ZhbHVlOwogICAgIHJldHVybiBuZWdhdGl2ZVRpbWU7CiB9CiAKQEAgLTMwNywxNCAr
Mjk1LDE0IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKihpbnQzMl90IHJocykgY29u
c3QKICAgICBNZWRpYVRpbWUgYSA9ICp0aGlzOwogCiAgICAgaWYgKGEuaGFzRG91YmxlVmFsdWUo
KSkgewotICAgICAgICBhLm1fdGltZVZhbHVlQXNEb3VibGUgKj0gcmhzOworICAgICAgICBhLm1f
dmFsdWVBc0RvdWJsZSAqPSByaHM7CiAgICAgICAgIHJldHVybiBhOwogICAgIH0KIAotICAgIHdo
aWxlICghc2FmZU11bHRpcGx5KGEubV90aW1lVmFsdWUsIHJocywgYS5tX3RpbWVWYWx1ZSkpIHsK
LSAgICAgICAgaWYgKGEubV90aW1lU2NhbGUgPT0gMSkKLSAgICAgICAgICAgIHJldHVybiBzaWdu
dW0oYS5tX3RpbWVWYWx1ZSkgPT0gc2lnbnVtKHJocykgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgp
IDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICAgICAgYS5zZXRUaW1lU2NhbGUoYS5tX3Rp
bWVTY2FsZSAvIDIpOworICAgIHdoaWxlICghc2FmZU11bHRpcGx5KGEubV92YWx1ZSwgcmhzLCBh
Lm1fdmFsdWUpKSB7CisgICAgICAgIGlmIChhLm1fc2NhbGUgPT0gMSkKKyAgICAgICAgICAgIHJl
dHVybiBzaWdudW0oYS5tX3ZhbHVlKSA9PSBzaWdudW0ocmhzKSA/IHBvc2l0aXZlSW5maW5pdGVU
aW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICBhLnNldFRpbWVTY2FsZShh
Lm1fc2NhbGUgLyAyKTsKICAgICB9CiAKICAgICByZXR1cm4gYTsKQEAgLTMyMiwxNzYgKzMxMCwx
MDkgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IqKGludDMyX3QgcmhzKSBjb25zdAog
CiBib29sIE1lZGlhVGltZTo6b3BlcmF0b3IhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1fdGlt
ZUZsYWdzID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAgICAgfHwgKG1fdGltZUZsYWdz
ID09IChWYWxpZCB8IERvdWJsZVZhbHVlKSAmJiAhbV90aW1lVmFsdWVBc0RvdWJsZSkKLSAgICAg
ICAgfHwgaXNJbnZhbGlkKCk7CisgICAgcmV0dXJuIGlzSW52YWxpZCgpIHx8IChoYXNEb3VibGVW
YWx1ZSgpID8gIW1fdmFsdWVBc0RvdWJsZSA6ICFtX3ZhbHVlKTsKIH0KIAogTWVkaWFUaW1lOjpv
cGVyYXRvciBib29sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIShtX3RpbWVGbGFncyA9PSBWYWxp
ZCAmJiAhbV90aW1lVmFsdWUpCi0gICAgICAgICYmICEobV90aW1lRmxhZ3MgPT0gKFZhbGlkIHwg
RG91YmxlVmFsdWUpICYmICFtX3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICAmJiAhaXNJbnZh
bGlkKCk7CisgICAgcmV0dXJuICEhKnRoaXM7CiB9CiAKLU1lZGlhVGltZTo6Q29tcGFyaXNvbkZs
YWdzIE1lZGlhVGltZTo6Y29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFncyBvcmRlcmlu
ZyhUIGEsIFQgYikKIHsKLSAgICBhdXRvIGFuZEZsYWdzID0gbV90aW1lRmxhZ3MgJiByaHMubV90
aW1lRmxhZ3M7Ci0gICAgaWYgKGFuZEZsYWdzICYgKFBvc2l0aXZlSW5maW5pdGUgfCBOZWdhdGl2
ZUluZmluaXRlIHwgSW5kZWZpbml0ZSkpCi0gICAgICAgIHJldHVybiBFcXVhbFRvOwotCi0gICAg
YXV0byBvckZsYWdzID0gbV90aW1lRmxhZ3MgfCByaHMubV90aW1lRmxhZ3M7Ci0gICAgaWYgKCEo
b3JGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICBpZiAoIShh
bmRGbGFncyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIGlzSW52YWxpZCgpID8gR3JlYXRlclRo
YW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgTmVnYXRpdmVJbmZpbml0ZSkKLSAg
ICAgICAgcmV0dXJuIGlzTmVnYXRpdmVJbmZpbml0ZSgpID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhh
bjsKLQotICAgIGlmIChvckZsYWdzICYgUG9zaXRpdmVJbmZpbml0ZSkKLSAgICAgICAgcmV0dXJu
IGlzUG9zaXRpdmVJbmZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlm
IChvckZsYWdzICYgSW5kZWZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGlzSW5kZWZpbml0ZSgpID8g
R3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChhbmRGbGFncyAmIERvdWJsZVZhbHVl
KSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZUFzRG91YmxlID09IHJocy5tX3RpbWVWYWx1ZUFz
RG91YmxlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICAgICAgcmV0dXJuIG1f
dGltZVZhbHVlQXNEb3VibGUgPCByaHMubV90aW1lVmFsdWVBc0RvdWJsZSA/IExlc3NUaGFuIDog
R3JlYXRlclRoYW47Ci0gICAgfQotCi0gICAgaWYgKG9yRmxhZ3MgJiBEb3VibGVWYWx1ZSkgewot
ICAgICAgICBkb3VibGUgYSA9IHRvRG91YmxlKCk7Ci0gICAgICAgIGRvdWJsZSBiID0gcmhzLnRv
RG91YmxlKCk7Ci0gICAgICAgIGlmIChhID4gYikKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVy
VGhhbjsKLSAgICAgICAgaWYgKGEgPCBiKQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwot
ICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAgICB9Ci0KLSAgICBpZiAoKG1fdGltZVZhbHVlIDwg
MCkgIT0gKHJocy5tX3RpbWVWYWx1ZSA8IDApKQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWUg
PCAwID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKKyAgICByZXR1cm4gYSA8IGIgPyBNZWRpYVRp
bWU6OkNvbXBhcmlzb25GbGFnczo6TGVzc1RoYW4gOiBiIDwgYSA/IE1lZGlhVGltZTo6Q29tcGFy
aXNvbkZsYWdzOjpHcmVhdGVyVGhhbiA6IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzOjpFcXVh
bFRvOworfQogCi0gICAgaWYgKCFtX3RpbWVWYWx1ZSAmJiAhcmhzLm1fdGltZVZhbHVlKQotICAg
ICAgICByZXR1cm4gRXF1YWxUbzsKK01lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzIG9yZGVyaW5n
KE1lZGlhVGltZSBhLCBNZWRpYVRpbWUgYikKK3sKKyAgICBhdXRvIG9yZGVyaW5nQ2xhc3MgPSBb
XShNZWRpYVRpbWUgdGltZSkgeworICAgICAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5maW5pdGUo
KSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHRpbWUuaXNJbmRlZmluaXRl
KCkpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKHRpbWUuaXNQb3NpdGl2ZUlu
ZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgaWYgKHRpbWUuaXNJbnZh
bGlkKCkpCisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfTsK
KyAgICBhdXRvIGFDbGFzcyA9IG9yZGVyaW5nQ2xhc3MoYSk7CisgICAgYXV0byBiQ2xhc3MgPSBv
cmRlcmluZ0NsYXNzKGIpOworICAgIGlmIChhQ2xhc3MgIT0gYkNsYXNzKQorICAgICAgICByZXR1
cm4gb3JkZXJpbmcoYUNsYXNzLCBiQ2xhc3MpOwogCi0gICAgaWYgKG1fdGltZVNjYWxlID09IHJo
cy5tX3RpbWVTY2FsZSkgewotICAgICAgICBpZiAobV90aW1lVmFsdWUgPT0gcmhzLm1fdGltZVZh
bHVlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgICAgIHJldHVybiBtX3RpbWVW
YWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47Ci0gICAgfQor
ICAgIGlmIChhLmhhc0RvdWJsZVZhbHVlKCkgfHwgYi5oYXNEb3VibGVWYWx1ZSgpKQorICAgICAg
ICByZXR1cm4gb3JkZXJpbmcoYS50b0RvdWJsZSgpLCBiLnRvRG91YmxlKCkpOwogCi0gICAgaWYg
KG1fdGltZVZhbHVlID09IHJocy5tX3RpbWVWYWx1ZSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVNj
YWxlIDwgcmhzLm1fdGltZVNjYWxlID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKKyAgICBpZiAo
KGEubV92YWx1ZSA8IDApICE9IChiLm1fdmFsdWUgPCAwKSB8fCAhYS5tX3ZhbHVlIHx8ICFiLm1f
dmFsdWUgfHwgYS5tX3NjYWxlID09IGIubV9zY2FsZSkKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5n
KGEubV92YWx1ZSwgYi5tX3ZhbHVlKTsKIAotICAgIGlmIChtX3RpbWVWYWx1ZSA+PSAwKSB7Ci0g
ICAgICAgIGlmIChtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+
IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKyAgICBpZiAo
YS5tX3ZhbHVlID09IGIubV92YWx1ZSkKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGIubV9zY2Fs
ZSwgYS5tX3NjYWxlKTsKIAotICAgICAgICBpZiAobV90aW1lVmFsdWUgPiByaHMubV90aW1lVmFs
dWUgJiYgbV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4g
R3JlYXRlclRoYW47CisgICAgaWYgKGEubV92YWx1ZSA+PSAwKSB7CisgICAgICAgIGlmIChhLm1f
dmFsdWUgPCBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlID4gYi5tX3NjYWxlKQorICAgICAgICAgICAg
cmV0dXJuIE1lZGlhVGltZTo6TGVzc1RoYW47CisgICAgICAgIGlmIChhLm1fdmFsdWUgPiBiLm1f
dmFsdWUgJiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlh
VGltZTo6R3JlYXRlclRoYW47CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVl
IDwgcmhzLm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlIDwgcmhzLm1fdGltZVNjYWxlKQotICAg
ICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA+IHJo
cy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAg
ICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA8IGIubV92YWx1
ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1l
OjpMZXNzVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIubV92YWx1ZSAmJiBhLm1fc2Nh
bGUgPiBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpHcmVhdGVyVGhh
bjsKICAgICB9CiAKLSAgICBpbnQ2NF90IGxoc0ZhY3RvcjsKLSAgICBpbnQ2NF90IHJoc0ZhY3Rv
cjsKLSAgICBpZiAoc2FmZU11bHRpcGx5KG1fdGltZVZhbHVlLCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihyaHMubV90aW1lU2NhbGUpLCBsaHNGYWN0b3IpCi0gICAgICAgICYmIHNhZmVNdWx0aXBseShy
aHMubV90aW1lVmFsdWUsIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fdGltZVNjYWxlKSwgcmhzRmFj
dG9yKSkgewotICAgICAgICBpZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgICAg
IHJldHVybiBFcXVhbFRvOwotICAgICAgICByZXR1cm4gbGhzRmFjdG9yIDwgcmhzRmFjdG9yID8g
TGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9CisgICAgaW50NjRfdCBhUHJvZHVjdDsKKyAg
ICBpbnQ2NF90IGJQcm9kdWN0OworICAgIGludDY0X3QgYVRpbWVTY2FsZSA9IGEubV9zY2FsZTsK
KyAgICBpbnQ2NF90IGJUaW1lU2NhbGUgPSBiLm1fc2NhbGU7CisgICAgaWYgKHNhZmVNdWx0aXBs
eShhLm1fdmFsdWUsIGFUaW1lU2NhbGUsIGFQcm9kdWN0KSAmJiBzYWZlTXVsdGlwbHkoYi5tX3Zh
bHVlLCBiVGltZVNjYWxlLCBiUHJvZHVjdCkpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhhUHJv
ZHVjdCwgYlByb2R1Y3QpOworCisgICAgYXV0byBhUXVvdGllbnQgPSBhLm1fdmFsdWUgLyBhLm1f
c2NhbGU7CisgICAgYXV0byBiUXVvdGllbnQgPSBiLm1fdmFsdWUgLyBiLm1fc2NhbGU7CisgICAg
aWYgKGFRdW90aWVudCAhPSBiUXVvdGllbnQpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhhUXVv
dGllbnQsIGJRdW90aWVudCk7CiAKLSAgICBpbnQ2NF90IHJoc1dob2xlID0gcmhzLm1fdGltZVZh
bHVlIC8gcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzV2hvbGUgPSBtX3RpbWVWYWx1
ZSAvIG1fdGltZVNjYWxlOwotICAgIGlmIChsaHNXaG9sZSA+IHJoc1dob2xlKQotICAgICAgICBy
ZXR1cm4gR3JlYXRlclRoYW47Ci0gICAgaWYgKGxoc1dob2xlIDwgcmhzV2hvbGUpCi0gICAgICAg
IHJldHVybiBMZXNzVGhhbjsKLQotICAgIGludDY0X3QgcmhzUmVtYWluID0gcmhzLm1fdGltZVZh
bHVlICUgcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzUmVtYWluID0gbV90aW1lVmFs
dWUgJSBtX3RpbWVTY2FsZTsKLSAgICBsaHNGYWN0b3IgPSBsaHNSZW1haW4gKiByaHMubV90aW1l
U2NhbGU7Ci0gICAgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90aW1lU2NhbGU7Ci0KLSAgICBp
ZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAg
cmV0dXJuIGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47Cisg
ICAgYXV0byBhUmVtYWluZGVyID0gYS5tX3ZhbHVlICUgYS5tX3NjYWxlICogYS5tX3NjYWxlOwor
ICAgIGF1dG8gYlJlbWFpbmRlciA9IGIubV92YWx1ZSAlIGIubV9zY2FsZSAqIGIubV9zY2FsZTsK
KyAgICByZXR1cm4gb3JkZXJpbmcoYVJlbWFpbmRlciwgYlJlbWFpbmRlcik7CiB9CiAKLWJvb2wg
TWVkaWFUaW1lOjppc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiBhLCBjb25zdCBNZWRpYVRpbWUm
IGIpIGNvbnN0Citib29sIE1lZGlhVGltZTo6aXNCZXR3ZWVuKE1lZGlhVGltZSBhLCBNZWRpYVRp
bWUgYikgY29uc3QKIHsKICAgICBpZiAoYSA+IGIpCiAgICAgICAgIHJldHVybiAqdGhpcyA+IGIg
JiYgKnRoaXMgPCBhOwogICAgIHJldHVybiAqdGhpcyA+IGEgJiYgKnRoaXMgPCBiOwogfQogCi1j
b25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6emVyb1RpbWUoKQotewotICAgIHN0YXRpYyBjb25z
dCBNZWRpYVRpbWUgdGltZSgwLCAxLCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLWNv
bnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpCi17Ci0gICAgc3RhdGljIGNv
bnN0IE1lZGlhVGltZSB0aW1lKC0xLCAxLCAwKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29u
c3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkKLXsKLSAgICBz
dGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgUG9zaXRpdmVJbmZpbml0ZSB8IFZhbGlk
KTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6Om5l
Z2F0aXZlSW5maW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUo
LTEsIDEsIE5lZ2F0aXZlSW5maW5pdGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0K
LWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpCi17Ci0gICAgc3Rh
dGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIEluZGVmaW5pdGUgfCBWYWxpZCk7Ci0gICAg
cmV0dXJuIHRpbWU7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6OnRvVGltZVNjYWxlKHVpbnQz
Ml90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykgY29uc3QKK01lZGlhVGltZSBNZWRp
YVRpbWU6OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdNb2RlIG1vZGUp
IGNvbnN0CiB7CiAgICAgTWVkaWFUaW1lIHJlc3VsdCA9ICp0aGlzOwotICAgIHJlc3VsdC5zZXRU
aW1lU2NhbGUodGltZVNjYWxlLCBmbGFncyk7CisgICAgcmVzdWx0LnNldFRpbWVTY2FsZSh0aW1l
U2NhbGUsIG1vZGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTWVkaWFUaW1lOjpz
ZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ0ZsYWdzIGZsYWdzKQordm9p
ZCBNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nTW9k
ZSBtb2RlKQogewogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgICp0aGlzID0g
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUsIHRpbWVTY2Fs
ZSk7CisgICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVB
c0RvdWJsZSwgdGltZVNjYWxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICgh
dGltZVNjYWxlKSB7Ci0gICAgICAgICp0aGlzID0gbV90aW1lVmFsdWUgPCAwID8gbmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICp0aGlzID0g
bV92YWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRp
bWUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh0aW1lU2NhbGUgPT0gbV90
aW1lU2NhbGUpCisgICAgaWYgKHRpbWVTY2FsZSA9PSBtX3NjYWxlKQogICAgICAgICByZXR1cm47
CiAKICAgICB0aW1lU2NhbGUgPSBzdGQ6Om1pbihNYXhpbXVtVGltZVNjYWxlLCB0aW1lU2NhbGUp
OwogCi0gICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8SW50MTI4PihtX3RpbWVWYWx1
ZSkgKiB0aW1lU2NhbGU7Ci0gICAgaW50NjRfdCByZW1haW5kZXIgPSBzdGF0aWNfY2FzdDxpbnQ2
NF90PihuZXdWYWx1ZSAlIG1fdGltZVNjYWxlKTsKLSAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlIC8g
bV90aW1lU2NhbGU7CisgICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8SW50MTI4Piht
X3ZhbHVlKSAqIHRpbWVTY2FsZTsKKyAgICBpbnQ2NF90IHJlbWFpbmRlciA9IHN0YXRpY19jYXN0
PGludDY0X3Q+KG5ld1ZhbHVlICUgbV9zY2FsZSk7CisgICAgbmV3VmFsdWUgPSBuZXdWYWx1ZSAv
IG1fc2NhbGU7CiAKICAgICBpZiAobmV3VmFsdWUgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0
X3Q+OjptaW4oKSkgewogICAgICAgICAqdGhpcyA9IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CkBA
IC01MDMsNDIgKzQyNCw0MiBAQCB2b2lkIE1lZGlhVGltZTo6c2V0VGltZVNjYWxlKHVpbnQzMl90
IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fdGltZVZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obmV3VmFsdWUpOwotICAg
IHN0ZDo6c3dhcChtX3RpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAgICBtX3ZhbHVlID0gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG5ld1ZhbHVlKTsKKyAgICBhdXRvIG9sZFRpbWVTY2FsZSA9IHN0ZDo6
ZXhjaGFuZ2UobV9zY2FsZSwgdGltZVNjYWxlKTsKIAogICAgIGlmICghcmVtYWluZGVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVGbGFncyB8PSBIYXNCZWVuUm91bmRlZDsKLSAgICBz
d2l0Y2ggKGZsYWdzKSB7Ci0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJv
OgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGxhYnMocmVtYWluZGVyKSkgKiAy
ID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVTY2FsZSkpIHsKKyAgICBtX2ZsYWdzLmFkZChI
YXNCZWVuUm91bmRlZCk7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZBd2F5RnJvbVplcm86CisgICAgICAgIGlmIChzdGQ6OmFicyhyZW1haW5kZXIpICog
MiA+PSBvbGRUaW1lU2NhbGUpIHsKICAgICAgICAgICAgIC8vIHJvdW5kIHVwIChhd2F5IGZyb20g
emVybykKICAgICAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgICAgIG1f
dGltZVZhbHVlLS07CisgICAgICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlKys7CisgICAgICAgICAgICAgICAgKyttX3Zh
bHVlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBSb3VuZGluZ0ZsYWdz
OjpUb3dhcmRaZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUb3dhcmRaZXJvOgogICAgICAg
ICBicmVhazsKIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvOgorICAgIGNh
c2UgUm91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm86CiAgICAgICAgIGlmIChyZW1haW5kZXIgPCAw
KQotICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAgICAgICAgICAgIC0tbV92YWx1ZTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICsrbV92
YWx1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBv
c2l0aXZlSW5maW5pdHk6CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5m
aW5pdHk6CiAgICAgICAgIGlmIChyZW1haW5kZXIgPiAwKQotICAgICAgICAgICAgbV90aW1lVmFs
dWUrKzsKKyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAot
ICAgIGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToKICAgICAgICAgaWYgKHJlbWFp
bmRlciA8IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZS0tOworICAgICAgICAgICAgLS1tX3Zh
bHVlOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC01NDcsNyArNDY4LDcgQEAgdm9pZCBN
ZWRpYVRpbWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQo
InsiKTsKICAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIG91dC5wcmludChtX3Rp
bWVWYWx1ZSwgIi8iLCBtX3RpbWVTY2FsZSwgIiA9ICIpOworICAgICAgICBvdXQucHJpbnQobV92
YWx1ZSwgIi8iLCBtX3NjYWxlLCAiID0gIik7CiAgICAgb3V0LnByaW50KHRvRG91YmxlKCksICJ9
Iik7CiB9CiAKQEAgLTU1Niw3ICs0NzcsNyBAQCBTdHJpbmcgTWVkaWFUaW1lOjp0b1N0cmluZygp
IGNvbnN0CiAgICAgY29uc3QgY2hhciogaW52YWxpZCA9IGlzSW52YWxpZCgpID8gIiwgaW52YWxp
ZCIgOiAiIjsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoJ3snLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwotICAgIHJldHVybiBtYWtlU3Ry
aW5nKCd7JywgbV90aW1lVmFsdWUsICcvJywgbV90aW1lU2NhbGUsICIgPSAiLCB0b0RvdWJsZSgp
LCBpbnZhbGlkLCAnfScpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV92YWx1ZSwgJy8n
LCBtX3NjYWxlLCAiID0gIiwgdG9Eb3VibGUoKSwgaW52YWxpZCwgJ30nKTsKIH0KIAogUmVmPEpT
T046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdApAQCAtNTc5LDkgKzUw
MCw5IEBAIFJlZjxKU09OOjpPYmplY3Q+IE1lZGlhVGltZTo6dG9KU09OT2JqZWN0KCkgY29uc3QK
ICAgICBlbHNlCiAgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfcywgdG9Eb3VibGUo
KSk7CiAKLSAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9yIl9zLCBzdGF0aWNfY2FzdDxk
b3VibGU+KG1fdGltZVZhbHVlKSk7Ci0gICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRv
ciJfcywgbV90aW1lU2NhbGUpOwotICAgIG9iamVjdC0+c2V0SW50ZWdlcigiZmxhZ3MiX3MsIG1f
dGltZUZsYWdzKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9yIl9zLCBtX3ZhbHVl
KTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9yIl9zLCBtX3NjYWxlKTsKKyAg
ICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX2ZsYWdzLnRvUmF3KCkpOwogCiAgICAg
cmV0dXJuIG9iamVjdDsKIH0KQEAgLTU5MSwzMyArNTEyLDI4IEBAIFN0cmluZyBNZWRpYVRpbWU6
OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRvSlNPTk9iamVjdCgpLT50b0pTT05T
dHJpbmcoKTsKIH0KIAotTWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocykKK01lZGlh
VGltZSBhYnMoTWVkaWFUaW1lIHRpbWUpCiB7Ci0gICAgaWYgKHJocy5pc0ludmFsaWQoKSkKLSAg
ICAgICAgcmV0dXJuIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKLSAgICBpZiAocmhzLmlzTmVn
YXRpdmVJbmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICBpZiAodGlt
ZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6cG9zaXRp
dmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAocmhzLmhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAg
IHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZmFicyhyaHMubV90aW1lVmFsdWVB
c0RvdWJsZSkpOwotCi0gICAgTWVkaWFUaW1lIHZhbCA9IHJoczsKLSAgICB2YWwubV90aW1lVmFs
dWUgPSBzdGQ6OmFicyhyaHMubV90aW1lVmFsdWUpOwotICAgIHJldHVybiB2YWw7CisgICAgaWYg
KHRpbWUuaGFzRG91YmxlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShzdGQ6OmFicyh0aW1lLm1fdmFsdWVBc0RvdWJsZSkpOworICAgIE1lZGlhVGlt
ZSByZXN1bHQgPSB0aW1lOworICAgIHJlc3VsdC5tX3ZhbHVlID0gc3RkOjphYnMocmVzdWx0Lm1f
dmFsdWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmluZyBNZWRpYVRpbWVSYW5nZTo6
dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7Ci0KICAgICBvYmplY3QtPnNldE9iamVjdCgic3RhcnQiX3MsIHN0YXJ0LnRvSlNP
Tk9iamVjdCgpKTsKICAgICBvYmplY3QtPnNldE9iamVjdCgiZW5kIl9zLCBlbmQudG9KU09OT2Jq
ZWN0KCkpOwotCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiB9CiAKICNpZm5k
ZWYgTkRFQlVHCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBNZWRpYVRpbWUmIHRpbWUpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHN0cmVhbSwgTWVkaWFUaW1lIHRpbWUpCiB7CiAgICAgcmV0dXJuIHN0cmVhbSA8PCB0aW1lLnRv
SlNPTlN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAppbmRleCA3MWFjZjMyOWViMzk4OTMzNTEyZmQ3
ZjNmNThkNjBiZWNmZjIzYzUwLi4wNjE0NzI1ZmRmN2ZlMjMwMGQ0OWM2ODA5OTNmZWMxMTFmOTk0
MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9NZWRpYVRpbWUuaApAQCAtMzAsMjEgKzMwLDE2IEBACiAKICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxsaW1pdHM+
Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50U3RyZWFtOwogCi1j
bGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGZpbmFsIHsKK2NsYXNzIE1lZGlhVGlt
ZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZW51
bSB7CisgICAgZW51bSBGbGFnIDogdWludDhfdCB7CiAgICAgICAgIFZhbGlkID0gMSA8PCAwLAog
ICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwKICAgICAgICAgUG9zaXRpdmVJbmZpbml0
ZSA9IDEgPDwgMiwKQEAgLTUyLDY3ICs0Nyw2NSBAQCBwdWJsaWM6CiAgICAgICAgIEluZGVmaW5p
dGUgPSAxIDw8IDQsCiAgICAgICAgIERvdWJsZVZhbHVlID0gMSA8PCA1LAogICAgIH07Ci0KLSAg
ICBjb25zdGV4cHIgTWVkaWFUaW1lKCk7Ci0gICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90
IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgdWludDhfdCBmbGFncyA9IFZhbGlkKTsKLSAgICBNZWRp
YVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpOwotCi0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVh
dGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0
ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0gICAgc3Rh
dGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lKTsKLSAgICBz
dGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUsIHVpbnQz
Ml90IHRpbWVTY2FsZSk7Ci0KLSAgICBmbG9hdCB0b0Zsb2F0KCkgY29uc3Q7Ci0gICAgZG91Ymxl
IHRvRG91YmxlKCkgY29uc3Q7Ci0KLSAgICBNZWRpYVRpbWUmIG9wZXJhdG9yPShjb25zdCBNZWRp
YVRpbWUmIHJocyk7Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvcis9KGNvbnN0IE1lZGlhVGltZSYg
cmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9Ci0gICAgTWVkaWFUaW1lJiBvcGVy
YXRvci09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzIC0gcmhz
OyB9Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7
Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0g
ICAgTWVkaWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0OwotICAgIE1lZGlhVGltZSBvcGVyYXRvcioo
aW50MzJfdCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTWVkaWFUaW1lJiByaHMp
IGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBMZXNzVGhhbjsgfQotICAgIGJvb2wgb3Bl
cmF0b3I+KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykg
PT0gR3JlYXRlclRoYW47IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWVkaWFUaW1lJiBy
aHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJo
cykgPT0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJo
cykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87IH0KLSAgICBib29sIG9w
ZXJhdG9yPD0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhz
KSA8PSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLSAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVmIGVudW0geworICAgIGNvbnN0
ZXhwciBNZWRpYVRpbWUoKSA6IE1lZGlhVGltZSB7IGludDY0X3QgeyB9LCBEZWZhdWx0VGltZVNj
YWxlIH0geyB9CisgICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJf
dCBzY2FsZSwgT3B0aW9uU2V0PEZsYWc+ID0geyBWYWxpZCB9KTsKKworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCB2YWx1ZSk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZs
b2F0IHZhbHVlLCB1aW50MzJfdCBzY2FsZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBNZWRpYVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFsdWUpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVl
LCB1aW50MzJfdCBzY2FsZSk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9h
dCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoKSBjb25z
dDsKKworICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShNZWRpYVRpbWUgcmhzKSB7IHJldHVybiAq
dGhpcyA9ICp0aGlzICsgcmhzOyB9CisgICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KE1lZGlhVGlt
ZSByaHMpIHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0KKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKyhNZWRpYVRpbWUpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBNZWRpYVRpbWUgb3BlcmF0b3ItKE1lZGlhVGltZSkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvci0oKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90KSBjb25zdDsKKyAgICBib29s
IG9wZXJhdG9yPChNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0g
TGVzc1RoYW47IH0KKyAgICBib29sIG9wZXJhdG9yPihNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJl
dHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KKyAgICBib29sIG9wZXJhdG9yIT0o
TWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpICE9IEVxdWFsVG87IH0K
KyAgICBib29sIG9wZXJhdG9yPT0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFy
ZShyaHMpID09IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPj0oTWVkaWFUaW1lIHJocykg
Y29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJh
dG9yPD0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpIDw9IEVxdWFs
VG87IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OworCisg
ICAgZW51bSBDb21wYXJpc29uRmxhZ3MgewogICAgICAgICBMZXNzVGhhbiA9IC0xLAogICAgICAg
ICBFcXVhbFRvID0gMCwKICAgICAgICAgR3JlYXRlclRoYW4gPSAxLAotICAgIH0gQ29tcGFyaXNv
bkZsYWdzOworICAgIH07CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWU6
OkNvbXBhcmlzb25GbGFncyBvcmRlcmluZyhNZWRpYVRpbWUsIE1lZGlhVGltZSk7CisgICAgQ29t
cGFyaXNvbkZsYWdzIGNvbXBhcmUoTWVkaWFUaW1lIG90aGVyKSBjb25zdCB7IHJldHVybiBvcmRl
cmluZygqdGhpcywgb3RoZXIpOyB9CiAKLSAgICBDb21wYXJpc29uRmxhZ3MgY29tcGFyZShjb25z
dCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgYm9vbCBpc0JldHdlZW4oY29uc3QgTWVkaWFU
aW1lJiwgY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNCZXR3ZWVuKE1lZGlhVGltZSwgTWVkaWFUaW1lKSBjb25zdDsKIAotICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFsaWQ7IH0KKyAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFZhbGlkKTsgfQogICAgIGJv
b2wgaXNJbnZhbGlkKCkgY29uc3QgeyByZXR1cm4gIWlzVmFsaWQoKTsgfQotICAgIGJvb2wgaGFz
QmVlblJvdW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEhhc0JlZW5Sb3VuZGVk
OyB9Ci0gICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVG
bGFncyAmIFBvc2l0aXZlSW5maW5pdGU7IH0KLSAgICBib29sIGlzTmVnYXRpdmVJbmZpbml0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgTmVnYXRpdmVJbmZpbml0ZTsgfQotICAgIGJv
b2wgaXNJbmRlZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBJbmRlZmluaXRl
OyB9CisgICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29u
dGFpbnMoSGFzQmVlblJvdW5kZWQpOyB9CisgICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBj
b25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFBvc2l0aXZlSW5maW5pdGUpOyB9CisgICAg
Ym9vbCBpc05lZ2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5z
KE5lZ2F0aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBpc0luZGVmaW5pdGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzLmNvbnRhaW5zKEluZGVmaW5pdGUpOyB9CiAgICAgYm9vbCBpc0Zpbml0ZSgp
IGNvbnN0IHsgcmV0dXJuICFpc0ludmFsaWQoKSAmJiAhaXNJbmRlZmluaXRlKCkgJiYgIWlzUG9z
aXRpdmVJbmZpbml0ZSgpICYmICFpc05lZ2F0aXZlSW5maW5pdGUoKTsgfQotICAgIGJvb2wgaGFz
RG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIERvdWJsZVZhbHVlOyB9
Ci0gICAgdWludDhfdCB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFnczsgfQor
ICAgIGJvb2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5z
KERvdWJsZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxGbGFnPiB0aW1lRmxhZ3MoKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzOyB9CiAKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiB6ZXJvVGlt
ZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGludmFsaWRUaW1lKCk7Ci0gICAgc3Rh
dGljIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBzdGF0aWMg
Y29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwotICAgIHN0YXRpYyBjb25z
dCBNZWRpYVRpbWUmIGluZGVmaW5pdGVUaW1lKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRp
YVRpbWUgemVyb1RpbWUoKSB7IHJldHVybiB7IDAsIDEsIFZhbGlkIH07IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIE1lZGlhVGltZSBpbnZhbGlkVGltZSgpIHsgcmV0dXJuIHsgLTEsIDEsIHsgfSB9
OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KSB7IHJldHVybiB7IDAsIDEsIHsgUG9zaXRpdmVJbmZpbml0ZSwgVmFsaWQgfSB9OyB9CisgICAg
c3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVy
biB7IC0xLCAxLCB7IE5lZ2F0aXZlSW5maW5pdGUsIFZhbGlkIH0gfTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgTWVkaWFUaW1lIGluZGVmaW5pdGVUaW1lKCkgeyByZXR1cm4geyAwLCAxLCB7IElu
ZGVmaW5pdGUsIFZhbGlkIH0gfTsgfQogCi0gICAgY29uc3QgaW50NjRfdCYgdGltZVZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lVmFsdWU7IH0KLSAgICBjb25zdCB1aW50MzJfdCYgdGltZVNj
YWxlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKyAgICBpbnQ2NF90IHRpbWVWYWx1
ZSgpIGNvbnN0IHsgQVNTRVJUKCFoYXNEb3VibGVWYWx1ZSgpKTsgcmV0dXJuIG1fdmFsdWU7IH0K
KyAgICB1aW50MzJfdCB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAKLSAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0gICAgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwotICAgIFJlZjxKU09O
OjpPYmplY3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b0pT
T05TdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPEpTT046Ok9iamVj
dD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7CiAKICAgICAvLyBNYWtlIHRoZSBmb2xsb3dpbmcgY2Fz
dHMgZXJyb3JzOgogICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0ID0gZGVsZXRlOwpAQCAtMTIw
LDkzICsxMTMsOTkgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIGludCgpIGNvbnN0ID0gZGVsZXRl
OwogICAgIE1lZGlhVGltZShpbnQpID0gZGVsZXRlOwogCi0gICAgZnJpZW5kIFdURl9FWFBPUlRf
UFJJVkFURSBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKKyAgICBmcmllbmQg
V1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFUaW1lKTsKIAotICAgIHN0YXRp
YyBjb25zdCB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7Ci0gICAgc3RhdGlj
IGNvbnN0IHVpbnQzMl90IE1heGltdW1UaW1lU2NhbGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBjb25zdCB1aW50MzJfdCBNYXhpbXVtVGltZVNjYWxlOwogCi0gICAgZW51bSBj
bGFzcyBSb3VuZGluZ0ZsYWdzIHsKLSAgICAgICAgSGFsZkF3YXlGcm9tWmVybyA9IDAsCisgICAg
ZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgeworICAgICAgICBIYWxmQXdheUZyb21aZXJvLAogICAg
ICAgICBUb3dhcmRaZXJvLAogICAgICAgICBBd2F5RnJvbVplcm8sCiAgICAgICAgIFRvd2FyZFBv
c2l0aXZlSW5maW5pdHksCiAgICAgICAgIFRvd2FyZE5lZ2F0aXZlSW5maW5pdHksCiAgICAgfTsK
LQotICAgIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdGbGFncyA9IFJv
dW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBNZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3Qgc2NhbGUsIFJvdW5kaW5nTW9kZSA9
IFJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgTWVkaWFUaW1lJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRUaW1lU2NhbGUodWlu
dDMyX3QsIFJvdW5kaW5nRmxhZ3MgPSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKTsK
KyAgICBlbnVtIFVzZURvdWJsZUZsYWcgeyBVc2VEb3VibGUgfTsKKyAgICBjb25zdGV4cHIgTWVk
aWFUaW1lKFVzZURvdWJsZUZsYWcsIGRvdWJsZSB2YWx1ZSk7CisKKyAgICB2b2lkIHNldFRpbWVT
Y2FsZSh1aW50MzJfdCwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21a
ZXJvKTsKIAogICAgIHVuaW9uIHsKLSAgICAgICAgaW50NjRfdCBtX3RpbWVWYWx1ZTsKLSAgICAg
ICAgZG91YmxlIG1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAgIGludDY0X3QgbV92YWx1ZTsK
KyAgICAgICAgZG91YmxlIG1fdmFsdWVBc0RvdWJsZTsKICAgICB9OwotICAgIHVpbnQzMl90IG1f
dGltZVNjYWxlOwotICAgIHVpbnQ4X3QgbV90aW1lRmxhZ3M7CisgICAgdWludDMyX3QgbV9zY2Fs
ZSB7IERlZmF1bHRUaW1lU2NhbGUgfTsKKyAgICBPcHRpb25TZXQ8RmxhZz4gbV9mbGFncyB7IFZh
bGlkIH07CiB9OwogCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoKQotICAgIDogbV90
aW1lVmFsdWUoMCkKLSAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRUaW1lU2NhbGUpCi0gICAgLCBt
X3RpbWVGbGFncyhWYWxpZCkKLXsKLX0KLQotY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFUaW1l
KGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50OF90IGZsYWdzKQotICAgIDogbV90
aW1lVmFsdWUodmFsdWUpCi0gICAgLCBtX3RpbWVTY2FsZShzY2FsZSkKLSAgICAsIG1fdGltZUZs
YWdzKGZsYWdzKQotewotICAgIGlmIChzY2FsZSB8fCAhKGZsYWdzICYgVmFsaWQpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotfQorV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlh
VGltZSBhYnMoTWVkaWFUaW1lKTsKIAotaW5saW5lIE1lZGlhVGltZSBvcGVyYXRvciooaW50MzJf
dCBsaHMsIGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiByaHMub3BlcmF0b3IqKGxocyk7
IH0KLQotV1RGX0VYUE9SVF9QUklWQVRFIGV4dGVybiBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlh
VGltZSYgcmhzKTsKLQotc3RydWN0IFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWVSYW5nZSB7
CitzdHJ1Y3QgTWVkaWFUaW1lUmFuZ2UgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKIAotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCi0gICAgY29uc3QgTWVkaWFU
aW1lIHN0YXJ0OwotICAgIGNvbnN0IE1lZGlhVGltZSBlbmQ7CisgICAgTWVkaWFUaW1lIHN0YXJ0
OworICAgIE1lZGlhVGltZSBlbmQ7CiB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9p
ZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorY29uc3RleHByIE1l
ZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCBPcHRpb25T
ZXQ8RmxhZz4gZmxhZ3MpCisgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICwgbV9zY2FsZShzY2Fs
ZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCit7CisgICAgaWYgKCEoc2NhbGUgfHwgIShmbGFncyAm
IFZhbGlkKSkpCisgICAgICAgICp0aGlzID0gdmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGNvbnN0IFQmIGEsIE1lZGlhVGltZSBiKQogewot
ICAgIGVuY29kZXIgPDwgbV90aW1lVmFsdWUgPDwgbV90aW1lU2NhbGUgPDwgbV90aW1lRmxhZ3M7
CisgICAgcmV0dXJuIGIgKiBhOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9vbCBN
ZWRpYVRpbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVRpbWUmIHRpbWUpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIE1lZGlhVGltZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lVmFs
dWUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lU2NhbGUpCi0gICAgICAg
ICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lRmxhZ3MpOworICAgIGVuY29kZXIgPDwgbV92
YWx1ZSA8PCBtX3NjYWxlIDw8IG1fZmxhZ3M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IGJvb2wgTWVkaWFUaW1lOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFUaW1lJiB0
aW1lKQoreworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fdmFsdWUpCisgICAgICAg
ICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV9zY2FsZSkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNv
ZGUodGltZS5tX2ZsYWdzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1
bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lPiB7Ci0gICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpIHsgcmV0dXJuIHRp
bWUudG9KU09OU3RyaW5nKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKE1lZGlhVGlt
ZSB0aW1lKSB7IHJldHVybiB0aW1lLnRvSlNPTlN0cmluZygpOyB9CiB9OwogdGVtcGxhdGU8PiBz
dHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lUmFuZ2U+IHsKICAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IE1lZGlhVGltZVJhbmdlJiByYW5nZSkgeyByZXR1cm4gcmFuZ2UudG9KU09O
U3RyaW5nKCk7IH0KIH07CiAKICNpZm5kZWYgTkRFQlVHCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTWVkaWFUaW1lJik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgTWVkaWFU
aW1lKTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPE1lZGlhVGltZTo6
RmxhZz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIE1lZGlhVGlt
ZTo6RmxhZywKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpWYWxpZCwKKyAgICAgICAgTWVkaWFU
aW1lOjpGbGFnOjpIYXNCZWVuUm91bmRlZCwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpQb3Np
dGl2ZUluZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6Ok5lZ2F0aXZlSW5maW5pdGUs
CisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6SW5kZWZpbml0ZSwKKyAgICAgICAgTWVkaWFUaW1l
OjpGbGFnOjpEb3VibGVWYWx1ZQorICAgID47Cit9OworCiB9CiAKIHVzaW5nIFdURjo6TWVkaWFU
aW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dURi93
dGYvU2Vjb25kcy5oCmluZGV4IGQyODJkYmJmNzE1YmU3NDI3ODllYTEwZjFjY2IyOWFkMTQ1MzU2
NGYuLjFhMjk2NGM2ZGVhMTU1ZDkzNmUwNGI1MmUzMzIzZjMyYWYxNmI0ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM3Miw0ICszNzMsMyBAQCBpbmxpbmUg
Ym9vbCBpc2Zpbml0ZShXVEY6OlNlY29uZHMgc2Vjb25kcykKIH0gLy8gbmFtZXNwYWNlIHN0ZAog
CiB1c2luZyBuYW1lc3BhY2UgV1RGOjpzZWNvbmRzX2xpdGVyYWxzOwotdXNpbmcgV1RGOjpTZWNv
bmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGIv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IGZkNTU5YjI0MmRkZmZk
NWU4ZDhmMTMzZWM0MTNiYTNhYjViNTI2NDcuLmU1YTNjYjYzNWVhZjFjYTg4OWRkMjIwOTc1MjVm
Y2Q0MjhlMzE4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTMyLDkg
KzMyLDkgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAK
ICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDQ0OGRkZWUy
MTYwZWYxOGNhNWUwNjYxMzkwZTU5OGQ1M2JjNTRkMmEuLjBjOGYzMzE1MGIxNTM0ODRmZDRjMWM4
YWQwMDFhNDlmYmJmYWFmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtOTIyLDcgKzkyMyw3IEBAIGJvb2wgcG9ydEFsbG93ZWQo
Y29uc3QgVVJMJiB1cmwpCiAKICAgICAvLyBUaGlzIGJsb2NrZWQgcG9ydCBsaXN0IG1hdGNoZXMg
dGhlIHBvcnQgYmxvY2tpbmcgdGhhdCBNb3ppbGxhIGltcGxlbWVudHMuCiAgICAgLy8gU2VlIGh0
dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbmV0bGliL1BvcnRCYW5uaW5nLmh0bWwgZm9y
IG1vcmUgaW5mb3JtYXRpb24uCi0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGJsb2NrZWRQb3J0
TGlzdFtdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0
W10gPSB7CiAgICAgICAgIDEsICAgIC8vIHRjcG11eAogICAgICAgICA3LCAgICAvLyBlY2hvCiAg
ICAgICAgIDksICAgIC8vIGRpc2NhcmQKQEAgLTEwMDYsMTAgKzEwMDcsMTAgQEAgYm9vbCBwb3J0
QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICAgICAgNjY5NywgLy8gSVJDK1NTTCBbQXBwbGUg
YWRkaXRpb25dCiAgICAgICAgIDEwMDgwLCAvLyBhbWFuZGEKICAgICB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgU29ydGVkQXJyYXlTZXQgYmxvY2tlZFBvcnRTZXQgeyBibG9ja2VkUG9ydExpc3Qg
fTsKIAogICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3Qs
IGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQ
b3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0ZDo6Ymlu
YXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQ
b3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCisgICAgaWYgKCFibG9ja2VkUG9ydFNldC5jb250YWlu
cygqcG9ydCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQWxsb3cgcG9ydHMgMjEg
YW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvV2FsbFRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKaW5kZXggNTQz
OGNjMDFiNjFhYTlmNmM3YzQ1NmU1Zjg5MWU0NDY2ZjczM2JiYy4uMWNlOGQzNzU1NjFkMjliNTg5
NjFiZTNmY2YxOTM5NDA0ZmU4ODk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV2FsbFRp
bWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9DbG9ja1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9HZW5lcmljVGltZU1peGluLmg+CiAjaW5jbHVkZSA8
d3RmL0ludDEyOC5oPgogCkBAIC05OSw1ICsxMDAsMyBAQCBpbmxpbmUgYm9vbCBpc2Zpbml0ZShX
VEY6OldhbGxUaW1lIHRpbWUpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIHN0ZAotCi11c2luZyBXVEY6
OldhbGxUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudENvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIu
aAppbmRleCBhZmMzM2YzOGQ0MjMzNWJkOWU2MTI2YTRhNzhhNTA3MTBkYjI2MDhhLi4yMDdmYTA0
NDY5ZmI5NDgzODc2OGU5ZjQxYTJhMzI4OTdmNWNiMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAK
IG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJl
YWRpbmdQT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAK
aW5kZXggZDkyNDQ5MGQxYjU3ZjNlZTA2ZWU1ZWFkOGEyZDNjMTFjMjBjYjVkMS4uNmQzNDBlNDZm
MmIyODQ0MGIxMTNlZDc3MDllYTM3MTAxYTgyZjg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1Ro
cmVhZGluZ1BPU0lYLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUg
PHd0Zi9XVEZDb25maWcuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvV29yZExvY2suaD4KIAogI2lmIE9TKExJTlVYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGhyZWFkcy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApp
bmRleCA4YjQwYzE0Yzg0MjNmZDRlY2JmNjM1MDZkNjBiZmYxYzBmZDg1NjBmLi45ZjE4NmY2MzU0
ODQxYTc1NWFiYzBkODllYzMzZjBiNWZlMGVmODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90aHJlYWRzL1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgT1MoVU5JWCkKIAorI2luY2x1ZGUgPG9wdGlvbmFs
PgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHR1cGxlPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAppbmRleCBkYzI0ODlmZjg5
ZThmOWY4OTE0YmM4ZTNmYzI5NjZmNGRlZWU1NzRlLi5hOWY1OTUyNGFmYzVjYmM3MzZmYmM0ZTgx
NmRjZGJlZGM3ZjkwYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5n
V2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcApAQCAtOTUs
NiArOTUsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KKyNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEuaAppbmRleCA5MjYyMjE3MGM4YWFkNjk4OWI4YTEyY2U0ODM1NmRjNjg3YmY2ZTM1
Li5lMjJjYzk0NjZhN2FhMzdkMTc1Nzg3NTVlZTNkNjRiZDBmMmFmZThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBv
c2l0aW9uRGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PGNtYXRoPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcAppbmRleCAw
NjU5ODQwNjg5ZTRhYmI1MjIwZTViZGQ4MDUyM2Q3NDAyZjRhY2UyLi44ODhiZWYzMjM2ODJlYTIy
OTk3ZWY2NDA5YTBkNzFkODU1ZmZmZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAKQEAg
LTMyLDM3ICszMiwyOCBAQAogCiBuYW1lc3BhY2UgUEFMIHsKIAotc3RhdGljIGJvb2wgQ01UaW1l
SGFzRmxhZ3MoY29uc3QgQ01UaW1lJiBjbVRpbWUsIHVpbnQzMl90IGZsYWdzKQorTWVkaWFUaW1l
IHRvTWVkaWFUaW1lKENNVGltZSB0aW1lKQogewotICAgIHJldHVybiAoY21UaW1lLmZsYWdzICYg
ZmxhZ3MpID09IGZsYWdzOworICAgIE9wdGlvblNldDxNZWRpYVRpbWU6OkZsYWc+IGZsYWdzOwor
ICAgIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX1ZhbGlkKSB7CisgICAgICAgIGZsYWdz
LmFkZChNZWRpYVRpbWU6OlZhbGlkKTsKKyAgICAgICAgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1l
RmxhZ3NfUG9zaXRpdmVJbmZpbml0eSkKKyAgICAgICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6
OlBvc2l0aXZlSW5maW5pdGUpOworICAgICAgICBlbHNlIGlmICh0aW1lLmZsYWdzICYga0NNVGlt
ZUZsYWdzX05lZ2F0aXZlSW5maW5pdHkpCisgICAgICAgICAgICBmbGFncy5hZGQoTWVkaWFUaW1l
OjpOZWdhdGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBpZiAodGltZS5mbGFncyAmIGtDTVRp
bWVGbGFnc19JbmRlZmluaXRlKQorICAgICAgICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6SW5k
ZWZpbml0ZSk7CisgICAgfQorICAgIHJldHVybiBNZWRpYVRpbWUodGltZS52YWx1ZSwgdGltZS50
aW1lc2NhbGUsIGZsYWdzKTsKIH0KIAotTWVkaWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0IENNVGlt
ZSYgY21UaW1lKQotewotICAgIHVpbnQzMl90IGZsYWdzID0gMDsKLSAgICBpZiAoQ01UaW1lSGFz
RmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQpKQotICAgICAgICBmbGFncyB8PSBNZWRp
YVRpbWU6OlZhbGlkOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFn
c19WYWxpZCB8IGtDTVRpbWVGbGFnc19IYXNCZWVuUm91bmRlZCkpCi0gICAgICAgIGZsYWdzIHw9
IE1lZGlhVGltZTo6SGFzQmVlblJvdW5kZWQ7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGlt
ZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHkpKQot
ICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OlBvc2l0aXZlSW5maW5pdGU7Ci0gICAgaWYgKENN
VGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX05l
Z2F0aXZlSW5maW5pdHkpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5m
aW5pdGU7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlk
IHwga0NNVGltZUZsYWdzX0luZGVmaW5pdGUpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6
OkluZGVmaW5pdGU7Ci0KLSAgICByZXR1cm4gTWVkaWFUaW1lKGNtVGltZS52YWx1ZSwgY21UaW1l
LnRpbWVzY2FsZSwgZmxhZ3MpOwotfQotCi1DTVRpbWUgdG9DTVRpbWUoY29uc3QgTWVkaWFUaW1l
JiBtZWRpYVRpbWUpCitDTVRpbWUgdG9DTVRpbWUoTWVkaWFUaW1lIG1lZGlhVGltZSkKIHsKICAg
ICBDTVRpbWUgdGltZTsKLQogICAgIGlmIChtZWRpYVRpbWUuaGFzRG91YmxlVmFsdWUoKSkKICAg
ICAgICAgdGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyhtZWRpYVRpbWUudG9Eb3VibGUoKSwg
bWVkaWFUaW1lLnRpbWVTY2FsZSgpKTsKICAgICBlbHNlCiAgICAgICAgIHRpbWUgPSBDTVRpbWVN
YWtlKG1lZGlhVGltZS50aW1lVmFsdWUoKSwgbWVkaWFUaW1lLnRpbWVTY2FsZSgpKTsKLQogICAg
IGlmIChtZWRpYVRpbWUuaXNWYWxpZCgpKQogICAgICAgICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVG
bGFnc19WYWxpZDsKICAgICBpZiAobWVkaWFUaW1lLmhhc0JlZW5Sb3VuZGVkKCkpCkBAIC03MSw3
ICs2Miw2IEBAIENNVGltZSB0b0NNVGltZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkKICAg
ICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfUG9zaXRpdmVJbmZpbml0eTsKICAgICBp
ZiAobWVkaWFUaW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAgICAgICB0aW1lLmZsYWdzIHw9
IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5OwotCiAgICAgcmV0dXJuIHRpbWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGlt
ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmgKaW5kZXggYjNkYmUxN2FhOWJjMTI1MWRjZTJlYzhhZGVlN2Ni
ODQ5NDc5YmY3MC4uYTJiY2RhZTlmOGU5OWQwZjA0ZTNmM2MzZWQyMGEzZjM2YTI5MDZkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZG
b3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmgKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFBBTCB7
CiAKLVBBTF9FWFBPUlQgQ01UaW1lIHRvQ01UaW1lKGNvbnN0IE1lZGlhVGltZSYpOwotUEFMX0VY
UE9SVCBNZWRpYVRpbWUgdG9NZWRpYVRpbWUoY29uc3QgQ01UaW1lJik7CitQQUxfRVhQT1JUIENN
VGltZSB0b0NNVGltZShNZWRpYVRpbWUpOworUEFMX0VYUE9SVCBNZWRpYVRpbWUgdG9NZWRpYVRp
bWUoQ01UaW1lKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCAwZTFhZDcyNDVmZTE2ZTFlOTZlM2RhMWNiNTg0Yjlh
NGE2ZDg5ZjNiLi44NDQ2ZGI5ODU1MWUwYzUzODJhOTZmZjg0NzFmYmI2NzIzMTBjNGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
QEAgLTExOSwxMCArMTE5LDEwIEBAIHN0YXRpYyBpbmxpbmUgR2FwTGVuZ3RoIGJsZW5kRnVuYyhj
b25zdCBHYXBMZW5ndGgmIGZyb20sIGNvbnN0IEdhcExlbmd0aCYgdG8sIGNvCiAgICAgcmV0dXJu
IGJsZW5kKGZyb20ubGVuZ3RoKCksIHRvLmxlbmd0aCgpLCBjb250ZXh0LCBWYWx1ZVJhbmdlOjpO
b25OZWdhdGl2ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgVGFiU2l6ZSBibGVuZEZ1bmMoY29uc3Qg
VGFiU2l6ZSYgZnJvbSwgY29uc3QgVGFiU2l6ZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRp
bmdDb250ZXh0JiBjb250ZXh0KQorc3RhdGljIGlubGluZSBUYWJTaXplIGJsZW5kRnVuYyhUYWJT
aXplIGZyb20sIFRhYlNpemUgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBj
b250ZXh0KQogewotICAgIGF1dG8gYmxlbmRlZFZhbHVlID0gYmxlbmQoZnJvbS52YWx1ZSgpLCB0
by52YWx1ZSgpLCBjb250ZXh0KTsKLSAgICByZXR1cm4geyBibGVuZGVkVmFsdWUgPCAwID8gMCA6
IGJsZW5kZWRWYWx1ZSwgZnJvbS5pc1NwYWNlcygpID8gU3BhY2VWYWx1ZVR5cGUgOiBMZW5ndGhW
YWx1ZVR5cGUgfTsKKyAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9IGJsZW5kKGZyb20udmFsdWUsIHRv
LnZhbHVlLCBjb250ZXh0KTsKKyAgICByZXR1cm4geyBibGVuZGVkVmFsdWUgPCAwID8gMCA6IGJs
ZW5kZWRWYWx1ZSwgZnJvbS5pc1NwYWNlcyA/IFRhYlNpemU6OlNwYWNlcyA6IFRhYlNpemU6Okxl
bmd0aCB9OwogfQogCiBzdGF0aWMgaW5saW5lIExlbmd0aFNpemUgYmxlbmRGdW5jKGNvbnN0IExl
bmd0aFNpemUmIGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJs
ZW5kaW5nQ29udGV4dCYgY29udGV4dCkKQEAgLTk3OCwxMCArOTc4LDkgQEAgcHJpdmF0ZToKICAg
ICAvLyBpdCdzIG9ubHkgcG9zc2libGUgaWYgdGhleSdyZSBib3RoIG5vdCBhdXRvLgogICAgIGJv
b2wgY2FuSW50ZXJwb2xhdGUoY29uc3QgUmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJlbmRlclN0
eWxlJiB0bywgQ29tcG9zaXRlT3BlcmF0aW9uKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAg
Ym9vbCBmcm9tSXNBdXRvID0gdmFsdWUoZnJvbSkueCgpLmlzQXV0bygpICYmIHZhbHVlKGZyb20p
LnkoKS5pc0F1dG8oKTsKLSAgICAgICAgYm9vbCB0b0lzQXV0byA9IHZhbHVlKHRvKS54KCkuaXNB
dXRvKCkgJiYgdmFsdWUodG8pLnkoKS5pc0F1dG8oKTsKLQotICAgICAgICByZXR1cm4gKCFmcm9t
SXNBdXRvICYmICF0b0lzQXV0byk7IAorICAgICAgICBib29sIGZyb21Jc0F1dG8gPSB2YWx1ZShm
cm9tKS54LmlzQXV0bygpICYmIHZhbHVlKGZyb20pLnkuaXNBdXRvKCk7CisgICAgICAgIGJvb2wg
dG9Jc0F1dG8gPSB2YWx1ZSh0bykueC5pc0F1dG8oKSAmJiB2YWx1ZSh0bykueS5pc0F1dG8oKTsK
KyAgICAgICAgcmV0dXJuICFmcm9tSXNBdXRvICYmICF0b0lzQXV0bzsKICAgICB9CiB9OwogCkBA
IC0xMjkyLDIwICsxMjkxLDIwIEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IHNoYWRvd0xpc3RMZW5n
dGgoY29uc3QgU2hhZG93RGF0YSogc2hhZG93KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3Rh
dGljIGlubGluZSBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dGb3JCbGVuZGluZyhjb25zdCBTaGFk
b3dEYXRhKiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVyU2hhZG93KQorc3RhdGlj
IGlubGluZSBjb25zdCBTaGFkb3dEYXRhJiBzaGFkb3dGb3JCbGVuZGluZyhjb25zdCBTaGFkb3dE
YXRhKiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVyU2hhZG93KQogewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0U2hhZG93RGF0YShMZW5ndGhQ
b2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQp
KSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
U2hhZG93U3R5bGU6Ok5vcm1hbCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0
YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlw
ZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50Qmxh
Y2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0
Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5n
dGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3Ro
KExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRy
YW5zcGFyZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBk
ZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhU
eXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlw
ZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQs
IHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5
cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCBm
YWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTaGFkb3dEYXRhPiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5n
dGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5
cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0
LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludCB7
IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aChM
ZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxl
OjpOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YShM
ZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9
IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCks
IFNoYWRvd1N0eWxlOjpJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogCiAg
ICAgaWYgKHNyY1NoYWRvdykKLSAgICAgICAgcmV0dXJuIHNyY1NoYWRvdzsKKyAgICAgICAgcmV0
dXJuICpzcmNTaGFkb3c7CiAKICAgICBpZiAob3RoZXJTaGFkb3ctPnN0eWxlKCkgPT0gU2hhZG93
U3R5bGU6Okluc2V0KQotICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hh
ZG93KCkgPyAmZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZhdWx0
SW5zZXRTaGFkb3dEYXRhLmdldCgpOworICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Vi
a2l0Qm94U2hhZG93KCkgPyBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDog
ZGVmYXVsdEluc2V0U2hhZG93RGF0YS5nZXQoKTsKIAotICAgIHJldHVybiBvdGhlclNoYWRvdy0+
aXNXZWJraXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6
ICZkZWZhdWx0U2hhZG93RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Vi
a2l0Qm94U2hhZG93KCkgPyBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6IGRlZmF1
bHRTaGFkb3dEYXRhLmdldCgpOwogfQogCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJTaGFkb3cgZmlu
YWwgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7CkBAIC0xNDI4LDExICsx
NDI3LDExIEBAIHByaXZhdGU6CiAgICAgICAgIFNoYWRvd0RhdGEqIGxhc3RTaGFkb3cgPSBudWxs
cHRyOwogCiAgICAgICAgIHdoaWxlIChzaGFkb3dBIHx8IHNoYWRvd0IpIHsKLSAgICAgICAgICAg
IGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0Es
IHNoYWRvd0IpOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0U2hhZG93ID0gc2hh
ZG93Rm9yQmxlbmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CisgICAgICAgICAgICBhdXRvJiBzcmNT
aGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dBLCBzaGFkb3dCKTsKKyAgICAgICAgICAg
IGF1dG8mIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0IsIHNoYWRvd0EpOwog
Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRvdyA9
IGJsZW5kRnVuYyhzcmNTaGFkb3csIGRzdFNoYWRvdywgY29udGV4dCk7Ci0gICAgICAgICAgICBT
aGFkb3dEYXRhKiBibGVuZGVkU2hhZG93UHRyID0gYmxlbmRlZFNoYWRvdy5nZXQoKTsKKyAgICAg
ICAgICAgIGF1dG8gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYygmc3JjU2hhZG93LCAmZHN0U2hh
ZG93LCBjb250ZXh0KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNoYWRvd1B0ciA9IGJsZW5k
ZWRTaGFkb3cuZ2V0KCk7CiAKICAgICAgICAgICAgIGlmICghbGFzdFNoYWRvdykKICAgICAgICAg
ICAgICAgICBuZXdTaGFkb3dEYXRhID0gV1RGTW92ZShibGVuZGVkU2hhZG93KTsKQEAgLTE0NDEs
OCArMTQ0MCw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGxhc3RTaGFkb3cgPSBibGVuZGVk
U2hhZG93UHRyOwogCi0gICAgICAgICAgICBzaGFkb3dBID0gc2hhZG93QSA/IHNoYWRvd0EtPm5l
eHQoKSA6IDA7Ci0gICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93QiA/IHNoYWRvd0ItPm5leHQo
KSA6IDA7CisgICAgICAgICAgICBzaGFkb3dBID0gc2hhZG93QSA/IHNoYWRvd0EtPm5leHQoKSA6
IG51bGxwdHI7CisgICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93QiA/IHNoYWRvd0ItPm5leHQo
KSA6IG51bGxwdHI7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3U2hhZG93RGF0YTsK
QEAgLTE0NzEsMTMgKzE0NzAsMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICBpbnQgbWF4TGVuZ3Ro
ID0gc3RkOjptYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOwogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG1heExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBm
cm9tU2hhZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IDA7Ci0gICAgICAg
ICAgICBjb25zdCBTaGFkb3dEYXRhKiB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRvU2hhZG93
c1tpXSA6IDA7CisgICAgICAgICAgICBhdXRvIGZyb21TaGFkb3cgPSBpIDwgZnJvbUxlbmd0aCA/
IGZyb21TaGFkb3dzW2ldIDogbnVsbHB0cjsKKyAgICAgICAgICAgIGF1dG8gdG9TaGFkb3cgPSBp
IDwgdG9MZW5ndGggPyB0b1NoYWRvd3NbaV0gOiBudWxscHRyOworCisgICAgICAgICAgICBhdXRv
JiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1NoYWRvdyk7Cisg
ICAgICAgICAgICBhdXRvJiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyh0b1NoYWRvdywg
ZnJvbVNoYWRvdyk7CiAKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9
IHNoYWRvd0ZvckJsZW5kaW5nKGZyb21TaGFkb3csIHRvU2hhZG93KTsKLSAgICAgICAgICAgIGNv
bnN0IFNoYWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHRvU2hhZG93LCBm
cm9tU2hhZG93KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYygm
c3JjU2hhZG93LCAmZHN0U2hhZG93LCBjb250ZXh0KTsKIAotICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoc3JjU2hhZG93LCBk
c3RTaGFkb3csIGNvbnRleHQpOwogICAgICAgICAgICAgLy8gSW5zZXJ0IGF0IHRoZSBzdGFydCBv
ZiB0aGUgbGlzdCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIuCiAgICAgICAgICAgICBibGVuZGVkU2hh
ZG93LT5zZXROZXh0KFdURk1vdmUobmV3U2hhZG93RGF0YSkpOwogICAgICAgICAgICAgbmV3U2hh
ZG93RGF0YSA9IFdURk1vdmUoYmxlbmRlZFNoYWRvdyk7CkBAIC0yMzQ4LDE4ICsyMzQ4LDE4IEBA
IHByaXZhdGU6CiAgICAgfQogfTsKIAotY2xhc3MgVGFiU2l6ZVByb3BlcnR5V3JhcHBlciBmaW5h
bCA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgVGFiU2l6ZSY+IHsKK2NsYXNzIFRhYlNp
emVQcm9wZXJ0eVdyYXBwZXIgZmluYWwgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyPFRhYlNpemU+
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUYWJTaXplUHJv
cGVydHlXcmFwcGVyKCkKLSAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgVGFiU2l6ZSY+
KENTU1Byb3BlcnR5VGFiU2l6ZSwgJlJlbmRlclN0eWxlOjp0YWJTaXplLCAmUmVuZGVyU3R5bGU6
OnNldFRhYlNpemUpCisgICAgICAgIDogUHJvcGVydHlXcmFwcGVyPFRhYlNpemU+KENTU1Byb3Bl
cnR5VGFiU2l6ZSwgJlJlbmRlclN0eWxlOjp0YWJTaXplLCAmUmVuZGVyU3R5bGU6OnNldFRhYlNp
emUpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIGNhbkludGVycG9sYXRlKGNv
bnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHlsZSYgdG8sIENvbXBvc2l0ZU9w
ZXJhdGlvbikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZShmcm9tKS5p
c1NwYWNlcygpID09IHZhbHVlKHRvKS5pc1NwYWNlcygpOworICAgICAgICByZXR1cm4gdmFsdWUo
ZnJvbSkuaXNTcGFjZXMgPT0gdmFsdWUodG8pLmlzU3BhY2VzOwogICAgIH0KIAogICAgIHZvaWQg
YmxlbmQoUmVuZGVyU3R5bGUmIGRlc3RpbmF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgZnJvbSwg
Y29uc3QgUmVuZGVyU3R5bGUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4dCYg
Y29udGV4dCkgY29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMTU1NTdhYjIwMGQ2ZTE2MTY0MzRlMGE0ODI3
MjhmZWJkNWZlNjA5My4uZGZkMDQ1NGM0YmNjMmEwNzRhZWIzMDRmNzI3NTZiMTdiOGE0OWUyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKQEAgLTE1MzMsMTQgKzE1MzMsMTQgQEAgc3RhdGljIEVsZW1lbnQqIHN0eWxlRWxlbWVu
dEZvck5vZGUoTm9kZSogbm9kZSkKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yUG9zaXRp
b24oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMZW5ndGhQb2ludCYgcG9zaXRpb24p
CiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwotICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0
aW9uLngoKSwgc3R5bGUpKTsKLSAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZUZvckxlbmd0aChwb3NpdGlvbi55KCksIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueCwgc3R5bGUpKTsKKyAgICBsaXN0
LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3NpdGlvbi55LCBzdHls
ZSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZv
clBvc2l0aW9uT3JBdXRvKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGVuZ3RoUG9p
bnQmIHBvc2l0aW9uKQogewotICAgIGlmIChwb3NpdGlvbi54KCkuaXNBdXRvKCkgJiYgcG9zaXRp
b24ueSgpLmlzQXV0bygpKQorICAgIGlmIChwb3NpdGlvbi54LmlzQXV0bygpICYmIHBvc2l0aW9u
LnkuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogCiAgICAgcmV0dXJuIHZhbHVlRm9y
UG9zaXRpb24oc3R5bGUsIHBvc2l0aW9uKTsKQEAgLTE5MzYsNyArMTkzNiw3IEBAIHN0YXRpYyBS
ZWY8Q1NTVmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwogICAgIGZvciAoYXV0byogY29udGVudERhdGEgPSBzdHlsZS5jb250ZW50RGF0YSgpOyBjb250
ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CiAgICAgICAgIGlm
IChpczxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PENvdW50ZXJDb250ZW50
RGF0YT4oKmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRpZmllcigpLCBDU1NVbml0VHlwZTo6
Q1NTX0NPVU5URVJfTkFNRSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSku
Y291bnRlcigpLmlkZW50aWZpZXIsIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCiAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnRE
YXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAgICBlbHNlIGlmIChpczxUZXh0Q29udGVu
dERhdGE+KCpjb250ZW50RGF0YSkpCkBAIC0zMDI5LDcgKzMwMjksNyBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0
IFJlbmRlclN0eQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShzdHlsZS5jb2x1bW5XaWR0aCgpLCBzdHlsZSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlUYWJTaXplOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS50YWJTaXplKCkud2lkdGhJblBpeGVscygxLjApLCBzdHlsZS50YWJTaXpl
KCkuaXNTcGFjZXMoKSA/IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSIDogQ1NTVW5pdFR5cGU6OkNT
U19QWCk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
LnRhYlNpemUoKS53aWR0aEluUGl4ZWxzKDEuMCksIHN0eWxlLnRhYlNpemUoKS5pc1NwYWNlcyA/
IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSIDogQ1NTVW5pdFR5cGU6OkNTU19QWCk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3Q7CiAgICAgICAgICAgICBhdXRvKiBjdXJzb3JzID0gc3R5bGUuY3Vyc29ycygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAppbmRleCBmNWJjOGNhOTZiOTBkNjA1
NTBkY2E1ODIxZTgzODU0OWE0YjJmN2VmLi5kNmExMmNiYjk2OTIyNzM4NTQyZjRlMDk3NDczZTdi
OGVjN2RlNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcApAQCAtMTIz
LDcgKzEyMyw3IEBAIExheW91dFNpemUgc2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6
ZSYgbGVuZ3RoLCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtCiAKIExheW91dFBvaW50IHBvaW50
Rm9yTGVuZ3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0aFBvaW50LCBjb25zdCBMYXlv
dXRTaXplJiBtYXhpbXVtVmFsdWUpCiB7Ci0gICAgcmV0dXJuIHsgdmFsdWVGb3JMZW5ndGgobGVu
Z3RoUG9pbnQueCgpLCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0
aFBvaW50LnkoKSwgbWF4aW11bVZhbHVlLmhlaWdodCgpKSB9OworICAgIHJldHVybiB7IHZhbHVl
Rm9yTGVuZ3RoKGxlbmd0aFBvaW50LngsIG1heGltdW1WYWx1ZS53aWR0aCgpKSwgdmFsdWVGb3JM
ZW5ndGgobGVuZ3RoUG9pbnQueSwgbWF4aW11bVZhbHVlLmhlaWdodCgpKSB9OwogfQogCiBGbG9h
dFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCkBAIC0xMzMsNyArMTMzLDcgQEAgRmxvYXRTaXpl
IGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29u
c3QgRmxvYXRTaXplJgogCiBGbG9hdFBvaW50IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChjb25z
dCBMZW5ndGhQb2ludCYgbGVuZ3RoUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKIHsK
LSAgICByZXR1cm4geyBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngoKSwgYm94U2l6
ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55KCksIGJveFNpemUu
aGVpZ2h0KCkpIH07CisgICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2lu
dC54LCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50Lnks
IGJveFNpemUuaGVpZ2h0KCkpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKaW5kZXggN2VlMzBhM2UxMzEyOTRh
M2Q1NWFjZWY0Y2FhMGE3MWMzZDEwYWQ1OC4uNmZlYzM3NDUwYWMwYWJmZWQwY2E4MDc1MzkwZWUy
Njk4NGNhYzBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eVN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgK
QEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUoKSBj
b25zdDsKICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSgpIGNvbnN0OwogCi0gICAgY29uc3Qg
VGFiU2l6ZSYgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6ZTsgfQorICAgIFRhYlNp
emUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6ZTsgfQogCiBwcml2YXRlOgogICAg
IHZvaWQgc2V0dXBCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlclN0eWxlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCBlYjE2NzhiMmU4NmJmNzVmMDNhNjZjYjdhYjEzYzA0MjI4ZjgxYTA1Li5i
NjY1NjRjMTYyZGE0YjEyZDFkMGUxYzg4OTY4YWI2OGIyNTEwNzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTI3OCw2ICsyNzgsNyBAQAogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29w
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0
ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWZmZXIuaD4KQEAgLTEyMzAsMzIgKzEyMzEsMzggQEAgc3RydWN0IFVuaWNvZGVDb2Rl
UG9pbnRSYW5nZSB7CiAgICAgVUNoYXIzMiBtYXhpbXVtOwogfTsKIAotI2lmIEFTU0VSVF9FTkFC
TEVECi0KLXN0YXRpYyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5pY29kZUNvZGVQb2lu
dFJhbmdlJiBhLCBjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UmIGIpCitzdGF0aWMgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I8KFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBhLCBVbmljb2RlQ29kZVBv
aW50UmFuZ2UgYikKIHsKLSAgICBBU1NFUlQoYS5taW5pbXVtIDw9IGEubWF4aW11bSk7Ci0gICAg
QVNTRVJUKGIubWluaW11bSA8PSBiLm1heGltdW0pOworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVY
UFJfQ09OVEVYVChhLm1pbmltdW0gPD0gYS5tYXhpbXVtKTsKKyAgICBBU1NFUlRfVU5ERVJfQ09O
U1RFWFBSX0NPTlRFWFQoYi5taW5pbXVtIDw9IGIubWF4aW11bSk7CiAgICAgcmV0dXJuIGEubWF4
aW11bSA8IGIubWluaW11bTsKIH0KIAotI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECi0KLXN0YXRp
YyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBhLCBV
Q2hhcjMyIGIpCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFVuaWNvZGVDb2RlUG9p
bnRSYW5nZSBhLCBVQ2hhcjMyIGIpCiB7Ci0gICAgQVNTRVJUKGEubWluaW11bSA8PSBhLm1heGlt
dW0pOworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChhLm1pbmltdW0gPD0gYS5t
YXhpbXVtKTsKICAgICByZXR1cm4gYS5tYXhpbXVtIDwgYjsKIH0KIAotc3RhdGljIGlubGluZSBi
b29sIG9wZXJhdG9yPChVQ2hhcjMyIGEsIGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSYgYikK
K3N0YXRpYyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoVUNoYXIzMiBhLCBVbmljb2RlQ29kZVBv
aW50UmFuZ2UgYikKIHsKLSAgICBBU1NFUlQoYi5taW5pbXVtIDw9IGIubWF4aW11bSk7CisgICAg
QVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKGIubWluaW11bSA8PSBiLm1heGltdW0pOwog
ICAgIHJldHVybiBhIDwgYi5taW5pbXVtOwogfQogCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShVbmljb2RlQ29kZVBvaW50UmFuZ2UgYSwgVUNoYXIzMiBiKQoreworICAgIHJldHVy
biAhKGEgPCBiKSAmJiAhKGIgPCBhKTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oVUNoYXIzMiBhLCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgYikKK3sKKyAgICByZXR1cm4g
YiA9PSBhOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3RlbnRpYWxDdXN0b21FbGVtZW50
TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKIHsKLSAgICBzdGF0aWMgY29uc3QgVW5p
Y29kZUNvZGVQb2ludFJhbmdlIHJhbmdlc1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgVW5p
Y29kZUNvZGVQb2ludFJhbmdlIHJhbmdlc1tdID0gewogICAgICAgICB7ICctJywgJy4nIH0sCiAg
ICAgICAgIHsgJzAnLCAnOScgfSwKICAgICAgICAgeyAnXycsICdfJyB9LApAQCAtMTI3NCw5ICsx
MjgxLDggQEAgc3RhdGljIGlubGluZSBib29sIGlzUG90ZW50aWFsQ3VzdG9tRWxlbWVudE5hbWVD
aGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgICAgIHsgMHhGREYwLCAweEZGRkQgfSwK
ICAgICAgICAgeyAweDEwMDAwLCAweEVGRkZGIH0sCiAgICAgfTsKLQotICAgIEFTU0VSVChzdGQ6
OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHJhbmdlcyksIHN0ZDo6ZW5kKHJhbmdlcykpKTsKLSAgICBy
ZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4ocmFuZ2VzKSwgc3RkOjplbmQocmFu
Z2VzKSwgY2hhcmFjdGVyKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNl
dCB7IHJhbmdlcyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMoY2hhcmFjdGVyKTsKIH0KIAog
Q3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3Rv
bUVsZW1lbnROYW1lKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aFBvaW50LmNwcAppbmRleCA5YTM2NzU5NmRkMDI2OWQ1OWY2M2ViMGY2Yzg5
ZTM0ZGQ4MjE4MmQ5Li5iNWY0Y2MwNWUyNzY3YTE4YzY3M2QwOGUzNGNkMjIwNjljNTgxOTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgTGVuZ3RoUG9pbnQmIHNpemUpCiB7Ci0gICAgcmV0dXJuIHRzIDw8IHNpemUu
eCgpIDw8ICIgIiA8PCBzaXplLnkoKTsKKyAgICByZXR1cm4gdHMgPDwgc2l6ZS54IDw8ICIgIiA8
PCBzaXplLnk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhQb2ludC5oCmluZGV4IDgxMjA1YmIxM2RkYTUwMzNiMmM5MGZiZWEwNTMwYzJmNTZm
OTkzNmIuLjk4YmRjY2EwNzFmOGMyMTliMmNiYTkwYmNiYzAxZjMyNWI2MjIyMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuaApAQCAtMzIsNDQgKzMyLDI1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHN0cnVjdCBCbGVuZGluZ0NvbnRleHQ7CiAKIHN0cnVjdCBMZW5ndGhQb2lu
dCB7Ci1wdWJsaWM6Ci0gICAgTGVuZ3RoUG9pbnQoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAg
TGVuZ3RoUG9pbnQoTGVuZ3RoIHgsIExlbmd0aCB5KQotICAgICAgICA6IG1feChXVEZNb3ZlKHgp
KQotICAgICAgICAsIG1feShXVEZNb3ZlKHkpKQotICAgIHsKLSAgICB9CisgICAgTGVuZ3RoIHg7
CisgICAgTGVuZ3RoIHk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoUG9pbnQm
IG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFBvaW50JiBvdGhlcikg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ggPT0gby5tX3ggJiYgbV95ID09IG8ubV95
OworICAgICAgICByZXR1cm4geCA9PSBvdGhlci54ICYmIHkgPT0gb3RoZXIueTsKICAgICB9CiAK
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0CisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAgICAgICByZXR1cm4geCAhPSBvdGhlci54IHx8
IHkgIT0gb3RoZXIueTsKICAgICB9CiAKLSAgICB2b2lkIHNldFgoTGVuZ3RoIHgpIHsgbV94ID0g
V1RGTW92ZSh4KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsg
fQotCi0gICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IG1feSA9IFdURk1vdmUoeSk7IH0KLSAgICBj
b25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KLQotICAgIGJvb2wgaXNaZXJv
KCkgY29uc3QgeyByZXR1cm4gbV94LmlzWmVybygpICYmIG1feS5pc1plcm8oKTsgfQotCi1wcml2
YXRlOgotICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIHRvIHBhY2sgdGhlIHR3byBMZW5n
dGhzIHRvZ2V0aGVyIGJldHRlciBzb21laG93ICh0byBhdm9pZCBwYWRkaW5nIGJldHdlZW4gdGhl
bSkuCi0gICAgTGVuZ3RoIG1feDsKLSAgICBMZW5ndGggbV95OworICAgIGJvb2wgaXNaZXJvKCkg
Y29uc3QgeyByZXR1cm4geC5pc1plcm8oKSAmJiB5LmlzWmVybygpOyB9CiB9OwogCiBpbmxpbmUg
TGVuZ3RoUG9pbnQgYmxlbmQoY29uc3QgTGVuZ3RoUG9pbnQmIGZyb20sIGNvbnN0IExlbmd0aFBv
aW50JiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVybiBM
ZW5ndGhQb2ludChibGVuZChmcm9tLngoKSwgdG8ueCgpLCBjb250ZXh0KSwgYmxlbmQoZnJvbS55
KCksIHRvLnkoKSwgY29udGV4dCkpOworICAgIHJldHVybiB7IGJsZW5kKGZyb20ueCwgdG8ueCwg
Y29udGV4dCksIGJsZW5kKGZyb20ueSwgdG8ueSwgY29udGV4dCkgfTsKIH0KIAogV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IExlbmd0aFBvaW50Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRl
eCBiYWJlOTY2ODRlN2MxNWNiOWNhOTY5M2JhMzU2MGE4YWEzZDJjOTZjLi5lOWYyNjhjMTBkYWI0
Mjg0Njc5OGE4NmQ5Zjk5MmRjNWE1ZmI4MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTE2NSw4ICsxNjUsOCBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBwcmlt
YXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7IH0KICAgICBmbG9hdCBzcGFjZVdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWFyeUZvbnQoKS5zcGFjZVdpZHRoKCkgKyBtX2xldHRlclNwYWNpbmc7IH0K
LSAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBGb250JiwgY29uc3QgVGFiU2l6ZSYsIGZsb2F0KSBj
b25zdDsKLSAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBUYWJTaXplJiB0YWJTaXplLCBmbG9hdCBw
b3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJpbWFyeUZvbnQoKSwgdGFiU2l6ZSwg
cG9zaXRpb24pOyB9CisgICAgZmxvYXQgdGFiV2lkdGgoY29uc3QgRm9udCYsIFRhYlNpemUsIGZs
b2F0KSBjb25zdDsKKyAgICBmbG9hdCB0YWJXaWR0aChUYWJTaXplIHRhYlNpemUsIGZsb2F0IHBv
c2l0aW9uKSBjb25zdCB7IHJldHVybiB0YWJXaWR0aChwcmltYXJ5Rm9udCgpLCB0YWJTaXplLCBw
b3NpdGlvbik7IH0KICAgICBib29sIGhhc1ZhbGlkQXZlcmFnZUNoYXJXaWR0aCgpIGNvbnN0Owog
ICAgIGJvb2wgZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJsZShmbG9hdCAmd2lkdGgpIGNv
bnN0OyAvLyByZXR1cm5zIHRydWUgb24gc3VjY2VzcwogCkBAIC0zNzAsNyArMzcwLDcgQEAgaW5s
aW5lIEZvbnRTZWxlY3RvciogRm9udENhc2NhZGU6OmZvbnRTZWxlY3RvcigpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZm9udHMgPyBtX2ZvbnRzLT5mb250U2VsZWN0b3IoKSA6IG51bGxwdHI7CiB9CiAK
LWlubGluZSBmbG9hdCBGb250Q2FzY2FkZTo6dGFiV2lkdGgoY29uc3QgRm9udCYgZm9udCwgY29u
c3QgVGFiU2l6ZSYgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0CitpbmxpbmUgZmxvYXQg
Rm9udENhc2NhZGU6OnRhYldpZHRoKGNvbnN0IEZvbnQmIGZvbnQsIFRhYlNpemUgdGFiU2l6ZSwg
ZmxvYXQgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgZmxvYXQgYmFzZVRhYldpZHRoID0gdGFiU2l6
ZS53aWR0aEluUGl4ZWxzKGZvbnQuc3BhY2VXaWR0aCgpKTsKICAgICBpZiAoIWJhc2VUYWJXaWR0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNw
cAppbmRleCA3NTQzZjQ3NWEyN2E2NTE1OTA2Y2MyMmViM2Y2MGE5MTQwOTI5MGJhLi4wNzU2MTk0
Y2YyZjVlOGI5ZmJiMjdhMTBjZTc4YTJlMThjMjNjZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC03NCw3ICs3NCw4IEBAIHN0
ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4
ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZl
clNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKGJ1ZmZlclNpemUgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICB1aW50MzJfdCBtYXggPSBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICBpZiAoYnVmZmVyU2l6ZSA+IG1h
eCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJyYXkgPSBV
aW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJTaXplKTsKICAg
ICBpZiAoIXBpeGVsQXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UYWJTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJT
aXplLmgKaW5kZXggMzRhNzA4MTA2MjhhYzk1MjdmNGY1Y2YwNDc1ZDgzNWI3Y2MyZWFjZi4uMzY2
NDJmOGE4YzQ3NDA3ZWFjZTkzNTEyMjgzNjBmMmM4N2Q3YzIyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaApAQCAtMjksNDkgKzI5LDM5IEBACiAKICNwcmFn
bWEgb25jZQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0
cmVhbS5oPgogCi1lbnVtIFRhYlNpemVWYWx1ZVR5cGUgewotICAgIExlbmd0aFZhbHVlVHlwZSwK
LSAgICBTcGFjZVZhbHVlVHlwZSwKLX07CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBU
YWJTaXplIHsKLSAgICBUYWJTaXplKGZsb2F0IG51bU9yTGVuZ3RoLCBUYWJTaXplVmFsdWVUeXBl
IGlzU3BhY2VzID0gU3BhY2VWYWx1ZVR5cGUpCi0gICAgICAgIDogbV92YWx1ZShudW1Pckxlbmd0
aCkKLSAgICAgICAgLCBtX2lzU3BhY2VzKGlzU3BhY2VzKQotICAgIHsKLSAgICB9Ci0KLSAgICBi
b29sIGlzU3BhY2VzKCkgY29uc3QKKyAgICBlbnVtIFZhbHVlVHlwZSB7IExlbmd0aCwgU3BhY2Vz
IH07CisgICAgVGFiU2l6ZShmbG9hdCBudW1Pckxlbmd0aCwgVmFsdWVUeXBlIHR5cGUgPSBTcGFj
ZXMpCisgICAgICAgIDogdmFsdWUobnVtT3JMZW5ndGgpCisgICAgICAgICwgaXNTcGFjZXModHlw
ZSA9PSBTcGFjZXMpCiAgICAgewotICAgICAgICByZXR1cm4gbV9pc1NwYWNlczsKICAgICB9CiAK
ICAgICBmbG9hdCB3aWR0aEluUGl4ZWxzKGZsb2F0IHNwYWNlV2lkdGgpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gbV9pc1NwYWNlcyA/IG1fdmFsdWUgKiBzcGFjZVdpZHRoIDogbV92YWx1
ZTsKKyAgICAgICAgcmV0dXJuIGlzU3BhY2VzID8gdmFsdWUgKiBzcGFjZVdpZHRoIDogdmFsdWU7
CiAgICAgfQogCi0gICAgZmxvYXQgdmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fdmFsdWU7Ci0gICAgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiB2YWx1ZTsgfQogCi0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
KCk7IH0KLQotICAgIGZsb2F0IG1fdmFsdWU7Ci0gICAgYm9vbCBtX2lzU3BhY2VzOworICAgIGZs
b2F0IHZhbHVlOworICAgIGJvb2wgaXNTcGFjZXM7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRhYlNpemUmIGEsIGNvbnN0IFRhYlNpemUmIGIpCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KFRhYlNpemUgYSwgVGFiU2l6ZSBiKQogewotICAgIHJldHVybiAoYS5tX3ZhbHVlID09
IGIubV92YWx1ZSkgJiYgKGEubV9pc1NwYWNlcyA9PSBiLm1faXNTcGFjZXMpOworICAgIHJldHVy
biBhLnZhbHVlID09IGIudmFsdWUgJiYgYS5pc1NwYWNlcyA9PSBiLmlzU3BhY2VzOwogfQogCi1p
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRhYlNpemUmIGEsIGNvbnN0IFRhYlNpemUmIGIp
CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFRhYlNpemUgYSwgVGFiU2l6ZSBiKQogewogICAgIHJl
dHVybiAhKGEgPT0gYik7CiB9CiAKK2lubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHN0cmVhbSwgVGFiU2l6ZSBzaXplKSB7IHJldHVybiBzdHJlYW0gPDwgc2l6ZS52YWx1
ZSA8PCAoc2l6ZS5pc1NwYWNlcyA/ICIgc3BhY2VzIiA6ICIiKTsgfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKaW5k
ZXggMWQ0N2Q2NWQ2ODI0NjI2ZTE1OTI4ODAwZjQ2OTdjMjc2Y2IyNzYzNC4uYTIwOTZjZjlkZTM1
ZThhNWIzOTNhN2ZhYzBhNDgzZDU3MWM0ZjFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RleHRSdW4uaApAQCAtOTUsOCArOTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRIb3Jpem9udGFsR2x5cGhTdHJldGNoKGZsb2F0IHNjYWxlKSB7IG1faG9yaXpvbnRhbEdseXBo
U3RyZXRjaCA9IHNjYWxlOyB9CiAKICAgICBib29sIGFsbG93VGFicygpIGNvbnN0IHsgcmV0dXJu
IG1fYWxsb3dUYWJzOyB9Ci0gICAgY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFiU2l6ZTsgfQotICAgIHZvaWQgc2V0VGFiU2l6ZShib29sLCBjb25zdCBUYWJTaXpl
Jik7CisgICAgVGFiU2l6ZSB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV90YWJTaXplOyB9Cisg
ICAgdm9pZCBzZXRUYWJTaXplKGJvb2wsIFRhYlNpemUpOwogCiAgICAgZmxvYXQgeFBvcygpIGNv
bnN0IHsgcmV0dXJuIG1feHBvczsgfQogICAgIHZvaWQgc2V0WFBvcyhmbG9hdCB4UG9zKSB7IG1f
eHBvcyA9IHhQb3M7IH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fZGlzYWJsZVNwYWNpbmcgOiAxOwogfTsKIAotaW5saW5lIHZvaWQgVGV4dFJ1bjo6c2V0VGFi
U2l6ZShib29sIGFsbG93LCBjb25zdCBUYWJTaXplJiBzaXplKQoraW5saW5lIHZvaWQgVGV4dFJ1
bjo6c2V0VGFiU2l6ZShib29sIGFsbG93LCBUYWJTaXplIHNpemUpCiB7CiAgICAgbV9hbGxvd1Rh
YnMgPSBhbGxvdzsKICAgICBtX3RhYlNpemUgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5kZXggOTJmNDJiNjc3ZDUzZGQ5
YzZhM2Y2YmQ2ZTNkOTFjYmFjNjZhYTRiOS4uOWRiMTExMTI4YTFmYjdjZWZlYTRhZDAyYWVjMTFi
YTVlMjkxZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VlA5VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9W
UDlVdGlsaXRpZXMuY3BwCkBAIC0yNywxMyArMjcsMTQgQEAKICNpbmNsdWRlICJWUDlVdGlsaXRp
ZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9T
b3J0ZWRBcnJheU1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBM
ZXZlbCh1aW50OF90IGxldmVsKQogewotICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkTGV2ZWxz
W10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkTGV2ZWxzW10gPSB7CiAg
ICAgICAgIFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8xLAogICAgICAgICBWUENvbmZpZ3Vy
YXRpb25MZXZlbDo6TGV2ZWxfMV8xLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2
ZWxfMiwKQEAgLTQ5LDE0ICs1MCwxMyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBMZXZlbCh1aW50
OF90IGxldmVsKQogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfNl8xLAogICAg
ICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfNl8yLAogICAgIH07Ci0KLSAgICBBU1NF
UlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZExldmVscyksIHN0ZDo6ZW5kKHZhbGlk
TGV2ZWxzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxp
ZExldmVscyksIHN0ZDo6ZW5kKHZhbGlkTGV2ZWxzKSwgbGV2ZWwpOworICAgIHN0YXRpYyBjb25z
dGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRMZXZlbHMgfTsKKyAgICByZXR1cm4gc2V0
LmNvbnRhaW5zKGxldmVsKTsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZFZQQ29sb3JQcmltYXJp
ZXModWludDhfdCBjb2xvclByaW1hcmllcykKIHsKLSAgICBjb25zdGV4cHIgdWludDhfdCB2YWxp
ZENvbG9yUHJpbWFyaWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZhbGlk
Q29sb3JQcmltYXJpZXNbXSA9IHsKICAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJp
ZXM6OkJUXzcwOV82LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6VW5z
cGVjaWZpZWQsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF80NzBf
Nl9NLApAQCAtNzAsMTQgKzcwLDEzIEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUENvbG9yUHJpbWFy
aWVzKHVpbnQ4X3QgY29sb3JQcmltYXJpZXMpCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9y
UHJpbWFyaWVzOjpTTVBURV9FR180MzJfMSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQ
cmltYXJpZXM6OkVCVV9UZWNoXzMyMTNfRSwKICAgICB9OwotCi0gICAgQVNTRVJUKHN0ZDo6aXNf
c29ydGVkKHN0ZDo6YmVnaW4odmFsaWRDb2xvclByaW1hcmllcyksIHN0ZDo6ZW5kKHZhbGlkQ29s
b3JQcmltYXJpZXMpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2lu
KHZhbGlkQ29sb3JQcmltYXJpZXMpLCBzdGQ6OmVuZCh2YWxpZENvbG9yUHJpbWFyaWVzKSwgY29s
b3JQcmltYXJpZXMpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsg
dmFsaWRDb2xvclByaW1hcmllcyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMoY29sb3JQcmlt
YXJpZXMpOwogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyh1aW50OF90IHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKQogewotICAgIGNvbnN0ZXhwciB1aW50
OF90IHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3NbXSA9IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljc1tdID0gewogICAgICAgICBW
UENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNzA5XzYsCiAgICAgICAg
IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZCwKICAg
ICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzQ3MF82X00s
CkBAIC05NiwxMyArOTUsMTMgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0
ZXJpc3RpY3ModWludDhfdCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcykKICAgICAgICAgVlBDb25m
aWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzQyOF8xLAogICAgICAg
ICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjEwMF9ITEcsCiAg
ICAgfTsKLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZFRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzKSwgc3RkOjplbmQodmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcykp
KTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRUcmFuc2Zl
ckNoYXJhY3RlcmlzdGljcyksIHN0ZDo6ZW5kKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Mp
LCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRB
cnJheVNldCBzZXQgeyB2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIH07CisgICAgcmV0dXJu
IHNldC5jb250YWlucyh0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyk7CiB9CiAKIHN0YXRpYyBib29s
IGlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cyh1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cykK
IHsKLSAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZE1hdHJpeENvZWZmaWNpZW50c1tdID0gewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZE1hdHJpeENvZWZmaWNpZW50c1tdID0g
ewogICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OklkZW50aXR5LAog
ICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzcwOV82LAogICAg
ICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVkLApAQCAt
MTE4LDggKzExNyw4IEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cyh1
aW50OF90IG1hdHJpeENvZWZmaWNpZW50cykKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4
Q29lZmZpY2llbnRzOjpDaHJvbWFjaXR5X05vbmNvbnN0YW50X0x1bWluYW5jZSwKICAgICAgICAg
VlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF8yMTAwX0lDQywKICAgICB9Owot
ICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkTWF0cml4Q29lZmZpY2ll
bnRzKSwgc3RkOjplbmQodmFsaWRNYXRyaXhDb2VmZmljaWVudHMpKSk7Ci0gICAgcmV0dXJuIHN0
ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSwgc3Rk
OjplbmQodmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBtYXRyaXhDb2VmZmljaWVudHMpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRNYXRyaXhDb2VmZmlj
aWVudHMgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKG1hdHJpeENvZWZmaWNpZW50cyk7CiB9
CiAKIHN0ZDo6b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2Rl
Y1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJh
Y2tQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCBl
ZTFhMzc5YTViZDgyYTI2YWMzMjEyYzNkZGY2ZTdjMDQwYzE4YzU1Li5lMmQxOThmY2EyYjRjMWM4
ZjdmZTY0ODQzYjFjNDEzZDdiMTg0ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTYwLDEzICs2
MCwxMyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQyI7IH0KIAogICAg
IHN0cnVjdCBDaGFwdGVyRGF0YSB7Ci0gICAgICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKLSAg
ICAgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247Ci0gICAgICAgIFN0cmluZyBtX3RpdGxlOworICAg
ICAgICBNZWRpYVRpbWUgc3RhcnRUaW1lOworICAgICAgICBNZWRpYVRpbWUgZHVyYXRpb247Cisg
ICAgICAgIFN0cmluZyB0aXRsZTsKIAogICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENoYXB0ZXJEYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG1fc3RhcnRUaW1lID09IG90aGVyLm1fc3RhcnRUaW1lICYmIG1fZHVyYXRpb24gPT0g
b3RoZXIubV9kdXJhdGlvbiAmJiBtX3RpdGxlID09IG90aGVyLm1fdGl0bGU7CisgICAgICAgICAg
ICByZXR1cm4gc3RhcnRUaW1lID09IG90aGVyLnN0YXJ0VGltZSAmJiBkdXJhdGlvbiA9PSBvdGhl
ci5kdXJhdGlvbiAmJiB0aXRsZSA9PSBvdGhlci50aXRsZTsKICAgICAgICAgfQogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KaW5kZXggMGJjMDgz
ODE0YzA4YzdkZWVkNjFjOTA3OWMyMmJlM2Y1MDc4YTc3ZS4uOTQ5YzYwYmM0OGU1YTlhMGIyNTgw
ZjFhMjEyMmVlZTg3NTQ1MTVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlk
ZW9PdXRwdXQubW0KQEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6
OmNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpCiAgICAgaWYgKG1fbmV4dEltYWdlVGlt
ZWJhc2VPYnNlcnZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjdXJyZW50VGltZSA9
IFBBTDo6dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1cnJlbnRUaW1lXSk7Ci0gICAgYXV0byBpdGVy
ID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCBjdXJyZW50VGltZSk7CisgICAgYXV0
byBpdGVyID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCBQQUw6OnRvTWVkaWFUaW1l
KFttX3BsYXllciBjdXJyZW50VGltZV0pKTsKICAgICBpZiAoaXRlciA9PSBtX3ZpZGVvRnJhbWVz
LmVuZCgpIHx8ICsraXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIG5leHRJbWFnZVRpbWUgPSBpdGVyLT5maXJzdDsKIAotICAgIG1fbmV4dElt
YWdlVGltZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRCb3VuZGFyeVRpbWVPYnNlcnZlckZv
clRpbWVzOkBbW05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lOlBBTDo6dG9DTVRpbWUoY3VycmVudFRp
bWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb3RlY3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwg
cHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091dHB1dF0gKCkgbXV0YWJsZSB7CisgICAgbV9uZXh0
SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJvdW5kYXJ5VGltZU9ic2VydmVy
Rm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFMOjp0b0NNVGltZShuZXh0SW1h
Z2VUaW1lKV1dIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdh
dGUsIHByb3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdICgpIG11dGFibGUgewogICAgICAg
ICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0gewogICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5uZXh0SW1h
Z2VUaW1lUmVhY2hlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAw
NWE4MzE2ZGMyN2U2MzAxN2YzOTdmMTkyNDY5YjgyYTMzYjdiMDM0Li4wNGMwMDNiNGUyZTg3Njhj
ZDU4Nzc3NGU1ZDFlYzYzMjc5Yzg4YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcApAQCAtMTQyMiwxOCArMTQyMiwxOCBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAg
ICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJH
ZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRzOwotICAgICAgICAgICAg
aWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRh
LmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNv
bnRlbnRzKSkgeworICAgICAgICAgICAgYXV0byBjb29raWVDb250ZW50cyA9IHBhcnNlT3B1c1By
aXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21w
bGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICBpZiAoIWNvb2tp
ZUNvbnRlbnRzKSB7CiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiRmFpbGVkIHRvIHBhcnNlIE9wdXMgcHJpdmF0ZSBkYXRhIik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKCFjb29raWVDb250ZW50cy5mcmFtZXNQZXJQYWNrZXQpIHsKKyAgICAgICAg
ICAgIGlmICghY29va2llQ29udGVudHMtPmZyYW1lc1BlclBhY2tldCkgewogICAgICAgICAgICAg
ICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIk9wdXMgcHJpdmF0ZSBkYXRhIGluZGlj
YXRlcyAwIGZyYW1lcyBwZXIgcGFja2V0OyBiYWlsaW5nIik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgbV9mcmFtZXNQZXJQYWNrZXQgPSBjb29raWVDb250ZW50cy5mcmFtZXNQZXJQYWNrZXQ7
Ci0gICAgICAgICAgICBtX2ZyYW1lRHVyYXRpb24gPSBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0
aW9uOwotICAgICAgICAgICAgZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVPcHVzQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbihjb29raWVDb250ZW50cyk7CisgICAgICAgICAgICBtX2ZyYW1lc1BlclBh
Y2tldCA9IGNvb2tpZUNvbnRlbnRzLT5mcmFtZXNQZXJQYWNrZXQ7CisgICAgICAgICAgICBtX2Zy
YW1lRHVyYXRpb24gPSBjb29raWVDb250ZW50cy0+ZnJhbWVEdXJhdGlvbjsKKyAgICAgICAgICAg
IGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlT3B1c0F1ZGlvRm9ybWF0RGVzY3JpcHRpb24oKmNv
b2tpZUNvbnRlbnRzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghZm9ybWF0RGVzY3JpcHRp
b24pIHsKQEAgLTE0NTMsNyArMTQ1Myw2IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAg
ICAgIC8vIE9wdXMgdGVjaG5pY2FsbHkgYWxsb3dzIHRoZSBmcmFtZSBkdXJhdGlvbiBhbmQgZnJh
bWVzLXBlci1wYWNrZXQgdmFsdWVzIHRvIGNoYW5nZSBmcm9tIHBhY2tldCB0byBwYWNrZXQuCiAg
ICAgICAgIC8vIENvcmVBdWRpbyBkb2Vzbid0IHN1cHBvcnQgQVNCRCB2YWx1ZXMgbGlrZSB0aGVz
ZSB0byBjaGFuZ2Ugb24gYSBwZXItcGFja2V0IGJhc2lzLCBzbyB0aHJvdyBhbiBlcnJvciB3aGVu
CiAgICAgICAgIC8vIHRoYXQga2luZCBvZiB2YXJpYWJpbGl0eSBpcyBlbmNvdW50ZXJlZC4KLSAg
ICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRzOwogICAgICAgICBhdXRvJiBw
cml2YXRlRGF0YSA9IHRyYWNrKCkuY29kZWNfcHJpdmF0ZS52YWx1ZSgpOwogICAgICAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihtX2N1cnJl
bnRQYWNrZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOwogICAgICAgICBpZiAo
IWNvbnRpZ3VvdXNCdWZmZXIpIHsKQEAgLTE0NjYsOSArMTQ2NSw4IEBAIHdlYm06OlN0YXR1cyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3
ZWJtOjpSZWFkCiAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJs
b2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwogICAgICAg
ICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2
YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhLCBj
b29raWVDb250ZW50cykKLSAgICAgICAgICAgIHx8IGNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBh
Y2tldCAhPSBtX2ZyYW1lc1BlclBhY2tldAotICAgICAgICAgICAgfHwgY29va2llQ29udGVudHMu
ZnJhbWVEdXJhdGlvbiAhPSBtX2ZyYW1lRHVyYXRpb24pIHsKKyAgICAgICAgYXV0byBjb29raWVD
b250ZW50cyA9IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0
ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSk7Cisg
ICAgICAgIGlmICghY29va2llQ29udGVudHMgfHwgY29va2llQ29udGVudHMtPmZyYW1lc1BlclBh
Y2tldCAhPSBtX2ZyYW1lc1BlclBhY2tldCB8fCBjb29raWVDb250ZW50cy0+ZnJhbWVEdXJhdGlv
biAhPSBtX2ZyYW1lRHVyYXRpb24pIHsKICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZf
UE9TU0lCTEUoIk9wdXMgZnJhbWVzLXBlci1wYWNrZXQgY2hhbmdlZCB3aXRoaW4gYSB0cmFjazsg
ZXJyb3IiKTsKICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29k
ZTo6VmFyaWFibGVGcmFtZUR1cmF0aW9uKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGls
aXRpZXNDb2NvYS5oCmluZGV4IDg3MTA0ZDhiN2IzNTdjMTYwYjZkY2NjNDFiZmUxZjg5ZTBhNmMy
NzEuLjhiNjdkZTZmNDkzMDFiYTAxMTU4YTk4MDA5OTU5Mjc3MDQ0NTIzNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGll
c0NvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
TUF1ZGlvVXRpbGl0aWVzQ29jb2EuaApAQCAtMjgsOCArMjgsOCBAQAogI2lmIFBMQVRGT1JNKENP
Q09BKQogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRz
Lmg+CiAKLWNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NSw5ICs1NSw5IEBAIHN0cnVjdCBPcHVzQ29va2llQ29u
dGVudHMgewogCiBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3B1c0RlY29kZXJBdmFpbGFibGUoKTsK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVnaXN0ZXJPcHVzRGVjb2RlcklmTmVlZGVkKCk7Ci1ib29s
IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBwcml2YXRlRGF0YVNpemUsIGNvbnN0IHZvaWQq
IHByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRh
LCBPcHVzQ29va2llQ29udGVudHMmKTsKK3N0ZDo6b3B0aW9uYWw8T3B1c0Nvb2tpZUNvbnRlbnRz
PiBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgcHJpdmF0ZURhdGFTaXplLCBjb25zdCB2b2lk
KiBwcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0
YSk7CiBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlT3B1c0F1ZGlvRm9y
bWF0RGVzY3JpcHRpb24oY29uc3QgT3B1c0Nvb2tpZUNvbnRlbnRzJik7CiAKIH0KIAotI2VuZGlm
IC8vICYmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRp
bGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQppbmRleCA3ZTBhZmIyOTBkZDg1YTc3ZjliZWZmZjQ5
NDdhNDdiNzUzNWViMmY0Li5hYjViYTFmMjUyY2VjMjcxNmI1MDBmNmY5YTVjNGJiYTY3NDI4MTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBA
IGNvbnN0ZXhwciBpbnQzMl90IG9wdXNDb25maWdUb0JhbmR3aWR0aCh1aW50OF90IGNvbmZpZykK
IH0KICNlbmRpZgogCi1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZh
dGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVTaXplLCBj
b25zdCB2b2lkKiBmcmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50cyYgY29va2llKQorc3RkOjpv
cHRpb25hbDxPcHVzQ29va2llQ29udGVudHM+IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBj
b2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBzaXplX3QgZnJh
bWVTaXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEpCiB7CiAjaWYgRU5BQkxFKE9QVVMpCiAgICAg
Ly8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc4NDUKQEAgLTIwMSwxNiArMjAxLDE3
IEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNv
bnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsCiAgICAgYXV0byogcHJpdmF0ZURhdGFQdHIgPSBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oY29kZWNQcml2YXRlRGF0YSk7CiAKICAgICBpZiAo
Y29kZWNQcml2YXRlU2l6ZSA8IDE5KQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMS4gTWFnaWMgU2lnbmF0dXJlOgogICAgIC8vCiAg
ICAgLy8gICAgIFRoaXMgaXMgYW4gOC1vY3RldCAoNjQtYml0KSBmaWVsZCB0aGF0IGFsbG93cyBj
b2RlYwogICAgIC8vICAgICBpZGVudGlmaWNhdGlvbiBhbmQgaXMgaHVtYW4gcmVhZGFibGUuCiAg
ICAgaWYgKHN0cm5jbXAoIk9wdXNIZWFkIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
cHJpdmF0ZURhdGFQdHIpLCA4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMi4gVmVyc2lvbiAoOCBiaXRzLCB1bnNpZ25lZCk6
CisgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZTsKICAgICBjb29raWUudmVyc2lvbiA9ICoo
cHJpdmF0ZURhdGFQdHIgKyA4KTsKIAogICAgIC8vIDMuIE91dHB1dCBDaGFubmVsIENvdW50ICdD
JyAoOCBiaXRzLCB1bnNpZ25lZCk6CkBAIC0yMzEsNyArMjMyLDcgQEAgYm9vbCBwYXJzZU9wdXNQ
cml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2
YXRlRGF0YSwKICAgICBhdXRvIGZyYW1lUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGZyYW1lRGF0YSk7CiAKICAgICBpZiAoZnJhbWVTaXplIDwgMSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gaHR0cHM6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzY3MTYKICAgICAvLyAzLjEuIFRoZSBUT0MgQnl0ZQpAQCAtMjg1
LDIxICsyODYsMjAgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2
YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAgICAgICAgLy8KICAgICAg
ICAgLy8gICAgICAgICAgICAgICAgICAgICAgIEZpZ3VyZSA1OiBUaGUgZnJhbWUgY291bnQgYnl0
ZQogICAgICAgICBpZiAoZnJhbWVTaXplIDwgMikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgdWludDhfdCBmcmFt
ZUNvdW50Qnl0ZSA9ICooZnJhbWVQdHIgKyAxKTsKICAgICAgICAgY29va2llLmlzVkJSID0gKChm
cmFtZUNvdW50Qnl0ZSAmIDBiMTAwMDAwMDApID4+IDcpID09IDE7CiAgICAgICAgIGNvb2tpZS5o
YXNQYWRkaW5nID0gKChmcmFtZUNvdW50Qnl0ZSAmIDBiMDEwMDAwMDApID4+IDYpID09IDE7CiAg
ICAgICAgIGNvb2tpZS5mcmFtZXNQZXJQYWNrZXQgPSAoZnJhbWVDb3VudEJ5dGUgJiAwYjAwMTEx
MTExKTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGNvb2tpZTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGNvZGVjUHJpdmF0ZVNpemUpOwogICAgIFVOVVNFRF9QQVJBTShj
b2RlY1ByaXZhdGVEYXRhKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVTaXplKTsKICAgICBVTlVT
RURfUEFSQU0oZnJhbWVEYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY29va2llKTsKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaAppbmRleCA4
ZGMyMTNmNDdkNGY4MTkyMTExMWE0YTY5YzQ5OTYyZWE3M2ZjZjBhLi5kY2Q2YTQ3YmE2MDg1M2Rh
MDhlMTJmMDIwMjg3OWQ0OWRiMzYzNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogQGNsYXNzIExlZ2Fj
eVRpbGVMYXllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkdMQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2ts
aXN0Lm1tCmluZGV4IGI1MmM4NjE4NmYwYmIwNmZkMzIzZWQyOWY4MmQ3N2M5NThmZTI2MDguLjlm
OGRlYmU5NTQ2MTFlYTBlOGFkNzMzMGNkOTI2YWMyYTMwOTE0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KQEAgLTM1LDQzICszNSwyOSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgT1NCdWlsZEluZm8gewotICAgIE9TQnVpbGRJ
bmZvKCkKLSAgICAgICAgOiBtYWpvcigwKQotICAgICAgICAsIG1pbm9yKDApCi0gICAgICAgICwg
YnVpbGQoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgT1NCdWlsZEluZm8oaW50IG1ham9yLCBpbnQg
bWlub3IsIGludCBidWlsZCkKLSAgICAgICAgOiBtYWpvcihtYWpvcikKLSAgICAgICAgLCBtaW5v
cihtaW5vcikKLSAgICAgICAgLCBidWlsZChidWlsZCkKLSAgICB7Ci0gICAgfQorICAgIGludCBt
YWpvciB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgMTMgaW4gMTNDNjQuCisgICAgaW50IG1pbm9y
IHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSBDIGluIDEzQzY0IChhcyBhIG51bWJlciB3aGVyZSBB
ID09IDEsIGkuZS4gMykuCisgICAgaW50IGJ1aWxkIHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSA2
NCBpbiAxM0M2NC4KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPU0J1aWxkSW5mbyYgb3Ro
ZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShPU0J1aWxkSW5mbyBvdGhl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWpvciA9PSBvdGhlci5tYWpvciAmJiBt
aW5vciA9PSBvdGhlci5taW5vciAmJiBidWlsZCA9PSBvdGhlci5idWlsZDsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPihjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I+KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpID4gc3RkOjp0aWUob3Ro
ZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CiAgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcjw9KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcjw9KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpIDw9IHN0ZDo6dGllKG90aGVyLm1h
am9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcjwoT1NCdWlsZEluZm8gb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
c3RkOjp0aWUobWFqb3IsIG1pbm9yLCBidWlsZCkgPCBzdGQ6OnRpZShvdGhlci5tYWpvciwgb3Ro
ZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKICAgICB9Ci0KLSAgICBpbnQgbWFqb3I7IC8vIFJlcHJl
c2VudHMgdGhlIDEzIGluIDEzQzY0LgotICAgIGludCBtaW5vcjsgLy8gUmVwcmVzZW50cyB0aGUg
QyBpbiAxM0M2NCAoYXMgYSBudW1iZXIgd2hlcmUgQSA9PSAxLCBpLmUuIDMpLgotICAgIGludCBi
dWlsZDsgLy8gUmVwcmVzZW50cyB0aGUgNjQgaW4gMTNDNjQuCiB9OwogCiBzdGF0aWMgT1NCdWls
ZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQpA
QCAtODMsNyArNjksNyBAQCBzdGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRT
dHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNM
b2coQCJXZWJHTEJsb2NrbGlzdCBjb3VsZCBub3QgcGFyc2UgT1NCdWlsZCBlbnRyeTogJUAiLCBi
dWlsZFN0cmluZyk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE9TQnVpbGRJbmZvKCk7CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm1hdGNo
UmVzdWx0ID0gW21hdGNoZXMgb2JqZWN0QXRJbmRleDowXTsKQEAgLTkyLDE0ICs3OCwxNCBAQCBz
dGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJpbmcgKmJ1
aWxkU3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNMb2coQCJXZWJHTEJsb2NrbGlz
dCBjb3VsZCBub3QgcGFyc2UgT1NCdWlsZCBlbnRyeTogJUAiLCBidWlsZFN0cmluZyk7CiAjZW5k
aWYKLSAgICAgICAgcmV0dXJuIE9TQnVpbGRJbmZvKCk7CisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCiAgICAgaW50IG1ham9yVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0
aFJhbmdlOlttYXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6MV1dIGludFZhbHVlXTsKICAgICBpbnQg
bWlub3JWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21hdGNoUmVz
dWx0IHJhbmdlQXRJbmRleDoyXV0gY2hhcmFjdGVyQXRJbmRleDowXSAtICdBJyArIDE7CiAgICAg
aW50IGJ1aWxkVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOlttYXRj
aFJlc3VsdCByYW5nZUF0SW5kZXg6M11dIGludFZhbHVlXTsKIAotICAgIHJldHVybiBPU0J1aWxk
SW5mbyhtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRWZXJzaW9uKTsKKyAgICByZXR1
cm4geyBtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRWZXJzaW9uIH07CiB9CiAKIGJv
b2wgV2ViR0xCbG9ja2xpc3Q6OnNob3VsZEJsb2NrV2ViR0woKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRV
bml0LmgKaW5kZXggOGNhNWYzMTllMmI4MDZjZWFhOTAyNjE3YzVjM2EyNDlhMWM3NGE0YS4uMGEx
NmU1NGZkYmE0OGRiNWFhNjNlYzY0NzI2ZjI3NWYwZGIxMDhjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hh
cmVkVW5pdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRl
IDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KaW5kZXggNjMxMmUwNjg0
Mjk3YjQzYzMzMTFlNDczOWI2ODFhYjQ0NWMzMzY3Mi4uYmY1Yzc0ZjRjZmRjYTM3NWUzYmU0MjMy
ZTQ3NWMyMmRhZmZjZWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
TlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCmluZGV4IGM0ZWI2N2Q2ZjdjMzM0MDc2YjMyYjc5OGRjZWE0MGI1
NzA2ODFlNmYuLjdkMGJiODVhNGE2ZDUxODFhOGFjNWY2MGZiNzFmZDllYWI0Y2VjMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IDU2MDJkN2My
ZDRkNWJjYTkzMjQ1NDRiNzVhZDIyY2IyNjU4ZWQwMmMuLjBkZjc0MjY1MWZmN2JkYzhiYjY0MzM0
NmY5YmNjYmMyMDRjMTllMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIxNCw3
ICsyMTQsNyBAQCBib29sIEdyaWRJdGVyYXRvcjo6aXNFbXB0eUFyZWFFbm91Z2godW5zaWduZWQg
cm93U3BhbiwgdW5zaWduZWQgY29sdW1uU3BhbikgY29ucwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFy
ZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pCitz
dGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVu
c2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKQogewogICAg
IEFTU0VSVCghbV9ncmlkLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2dyaWRbMF0uaXNFbXB0
eSgpKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJ
dGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYQogICAgIEFT
U0VSVCh2YXJ5aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAgaWYgKG1fZ3JpZC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgdW5zaWduZWQgcm93U3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHZh
cnlpbmdUcmFja1NwYW4gOiBmaXhlZFRyYWNrU3BhbjsKICAgICB1bnNpZ25lZCBjb2x1bW5TcGFu
ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja1NwYW4gOiB2YXJ5aW5n
VHJhY2tTcGFuOwpAQCAtMjMxLDEzICsyMzEsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVh
PiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEK
ICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9u
ID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7CiAgICAg
Zm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5
aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93U3Bhbiwg
Y29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVz
dWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdy
aWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5z
bGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1
bW5TcGFuKSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEdyaWRBcmVhKEdyaWRTcGFuOjp0
cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3Bh
biksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBt
X2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUg
aXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4g
dGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdU
cmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0K
LSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAppbmRleCA3MmNhZGY2OGVm
NGQzMjY2Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi41OTQ3ZmU1ZTUzODY1M2QwYWFjODQ5NGZl
YThkYTk2N2MzMDg1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTM3LDEwICszNywx
MSBAQCB0eXBlZGVmIFZlY3RvcjxXZWFrUHRyPFJlbmRlckJveD4sIDE+IEdyaWRDZWxsOwogdHlw
ZWRlZiBWZWN0b3I8VmVjdG9yPEdyaWRDZWxsPj4gR3JpZEFzTWF0cml4OwogdHlwZWRlZiBMaXN0
SGFzaFNldDxzaXplX3Q+IE9yZGVyZWRUcmFja0luZGV4U2V0OwogCi1jbGFzcyBHcmlkQXJlYTsK
IGNsYXNzIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjsKIGNsYXNzIFJlbmRlckdyaWQ7CiAKK3N0cnVj
dCBHcmlkQXJlYTsKKwogY2xhc3MgR3JpZCBmaW5hbCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
R3JpZChSZW5kZXJHcmlkJik7CkBAIC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgUmVu
ZGVyQm94KiBuZXh0R3JpZEl0ZW0oKTsKICAgICBib29sIGlzRW1wdHlBcmVhRW5vdWdoKHVuc2ln
bmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4s
IHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pOworICAgIHN0ZDo6b3B0aW9uYWw8R3JpZEFyZWE+
IG5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5
aW5nVHJhY2tTcGFuKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBHcmlkQXNNYXRyaXgmIG1fZ3Jp
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBjZWNl
ZDM1ZTVjZTg3YmZiYzE0MDE4MzZjZDEzZWExYWVkZDdhZmMwLi4wMGViZDVmZmMwNWI3MjIyYTRm
N2E0M2IwYzQyMWIyYzM5NjU2ZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwCkBAIC00MzAsMjAgKzQzMCwxOSBAQCBTdHJpbmcgUmVuZGVyQ291bnRlcjo6
b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGJlZm9yZUFmdGVyQ29udGFpbmVyID0gYmVmb3JlQWZ0ZXJDb250YWluZXItPnBhcmVudCgpOwog
ICAgICAgICB9Ci0gICAgICAgIG1ha2VDb3VudGVyTm9kZSgqYmVmb3JlQWZ0ZXJDb250YWluZXIs
IG1fY291bnRlci5pZGVudGlmaWVyKCksIHRydWUpLT5hZGRSZW5kZXJlcihjb25zdF9jYXN0PFJl
bmRlckNvdW50ZXImPigqdGhpcykpOworICAgICAgICBtYWtlQ291bnRlck5vZGUoKmJlZm9yZUFm
dGVyQ29udGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllciwgdHJ1ZSktPmFkZFJlbmRlcmVyKGNv
bnN0X2Nhc3Q8UmVuZGVyQ291bnRlciY+KCp0aGlzKSk7CiAgICAgICAgIEFTU0VSVChtX2NvdW50
ZXJOb2RlKTsKICAgICB9CiAgICAgQ291bnRlck5vZGUqIGNoaWxkID0gbV9jb3VudGVyTm9kZTsK
ICAgICBpbnQgdmFsdWUgPSBjaGlsZC0+YWN0c0FzUmVzZXQoKSA/IGNoaWxkLT52YWx1ZSgpIDog
Y2hpbGQtPmNvdW50SW5QYXJlbnQoKTsKIAotICAgIFN0cmluZyB0ZXh0ID0gbGlzdE1hcmtlclRl
eHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCB2YWx1ZSk7CisgICAgU3RyaW5nIHRleHQgPSBsaXN0
TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCB2YWx1ZSk7CiAKLSAgICBpZiAoIW1fY291
bnRlci5zZXBhcmF0b3IoKS5pc051bGwoKSkgeworICAgIGlmICghbV9jb3VudGVyLnNlcGFyYXRv
ci5pc051bGwoKSkgewogICAgICAgICBpZiAoIWNoaWxkLT5hY3RzQXNSZXNldCgpKQogICAgICAg
ICAgICAgY2hpbGQgPSBjaGlsZC0+cGFyZW50KCk7CiAgICAgICAgIHdoaWxlIChDb3VudGVyTm9k
ZSogcGFyZW50ID0gY2hpbGQtPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICB0ZXh0ID0gbGlzdE1h
cmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCBjaGlsZC0+Y291bnRJblBhcmVudCgpKQot
ICAgICAgICAgICAgICAgICsgbV9jb3VudGVyLnNlcGFyYXRvcigpICsgdGV4dDsKKyAgICAgICAg
ICAgIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCBjaGlsZC0+Y291
bnRJblBhcmVudCgpKSArIG1fY291bnRlci5zZXBhcmF0b3IgKyB0ZXh0OwogICAgICAgICAgICAg
Y2hpbGQgPSBwYXJlbnQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKaW5kZXggMjZmOGZjYmMwYWIyNzk2MGM0OTM5MjIzZTc0OGQ5M2MzYjgz
Yzk5YS4uMWI2NzQ1YTllNzkwYjgwNWIxMzUwMDA0MmU0MWUwOTNlZDgxNjkzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzY1LDEzICs3NjUsMTMgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYg
Z3JpZCkgY29uc3QKICAgICBncmlkLmVuc3VyZUdyaWRTaXplKG1heGltdW1Sb3dJbmRleCArIGV4
cGxpY2l0Um93U3RhcnQsIG1heGltdW1Db2x1bW5JbmRleCArIGV4cGxpY2l0Q29sdW1uU3RhcnQp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5
R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmIGdyaWQsIGNvbnN0
IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBzcGVjaWZpZWRE
aXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlvbnMpIGNvbnN0CitHcmlk
QXJlYSBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNP
dXRzaWRlR3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3Bl
Y2lmaWVkUG9zaXRpb25zKSBjb25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBj
cm9zc0RpcmVjdGlvbiA9IHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gRm9yUm93
cyA6IEZvckNvbHVtbnM7CiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZDcm9zc0RpcmVjdGlvbiA9
IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1bnNpZ25lZCBjcm9zc0RpcmVj
dGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFj
ZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAgR3JpZFNwYW4gY3Jvc3NEaXJl
Y3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oZW5k
T2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiArIGNyb3NzRGlyZWN0aW9uU3Bh
blNpemUpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRBcmVhPihzcGVjaWZpZWREaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zIDogc3BlY2lmaWVkUG9z
aXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHNwZWNpZmllZFBvc2l0
aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAgICByZXR1cm4gR3JpZEFyZWEoc3Bl
Y2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6
IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBz
cGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CiB9CiAKIHZvaWQg
UmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlk
LCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRlbXMpIGNvbnN0CkBAIC03OTIs
NyArNzkyLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1z
T25HcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW4KICAgICAgICAgdW5zaWduZWQgbWFq
b3JBeGlzSW5pdGlhbFBvc2l0aW9uID0gbWFqb3JBeGlzUG9zaXRpb25zLnN0YXJ0TGluZSgpOwog
CiAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBhdXRvUGxhY2VtZW50TWFqb3JB
eGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFydExpbmUoKSwgaXNHcmlkQXV0
b0Zsb3dEZW5zZSA/IDAgOiBtaW5vckF4aXNDdXJzb3JzLmdldChtYWpvckF4aXNJbml0aWFsUG9z
aXRpb24pKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVh
ID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJT
cGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKKyAgICAgICAgYXV0byBlbXB0eUdyaWRBcmVhID0g
aXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFu
KCksIG1pbm9yQXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYgKCFlbXB0eUdyaWRBcmVhKQogICAg
ICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBv
c2l0aW9uc091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpv
ckF4aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKIApAQCAtODI3LDcgKzgyNyw3
IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChHcmlkJiBn
cmlkLCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBBCiAgICAgdW5zaWduZWQgbWFqb3JBeGlzQXV0b1Bs
YWNlbWVudEN1cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JD
b2x1bW5zID8gYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQgOiBhdXRvUGxhY2VtZW50Q3Vyc29y
LmZpcnN0OwogICAgIHVuc2lnbmVkIG1pbm9yQXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRv
UGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1l
bnRDdXJzb3IuZmlyc3QgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLnNlY29uZDsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdy
aWRBcmVhPiBlbXB0eUdyaWRBcmVhOwogICAgIEdyaWRTcGFuIG1pbm9yQXhpc1Bvc2l0aW9ucyA9
IGdyaWQuZ3JpZEl0ZW1TcGFuKGdyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWlub3JBeGlzRGlyZWN0
aW9uKCkpOwogICAgIGlmIChtaW5vckF4aXNQb3NpdGlvbnMuaXNUcmFuc2xhdGVkRGVmaW5pdGUo
KSkgewogICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHRyYWNrIGluIG1ham9yIGF4aXMgaWYg
aW5pdGlhbCBwb3NpdGlvbiBpbiBtaW5vciBheGlzIGlzIGJlZm9yZSBhdXRvLXBsYWNlbWVudCBj
dXJzb3IuCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpv
ckF4aXNJdGVtT25HcmlkKEdyaWQmIGdyaWQsIFJlbmRlckJveCYgZ3JpZEl0ZW0sIEEKIAogICAg
ICAgICAgICAgICAgIC8vIERpc2NhcmQgZW1wdHkgZ3JpZCBhcmVhIGFzIGl0IGRvZXMgbm90IGZp
dCBpbiB0aGUgbWlub3IgYXhpcyBkaXJlY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZW1wdHkgZ3JpZCBhcmVhIHlldCBhcyB3ZSBtaWdodCBm
aW5kIGEgdmFsaWQgb25lIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAgICAgICAgICBl
bXB0eUdyaWRBcmVhID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBBcyB3ZSdyZSBt
b3ZpbmcgdG8gdGhlIG5leHQgdHJhY2sgaW4gdGhlIG1ham9yIGF4aXMgd2Ugc2hvdWxkIHJlc2V0
IHRoZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IgaW4gdGhlIG1pbm9yIGF4aXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAyOWFlNTk0ODAwM2VlNmQyZGQ0NDNiNTY5OWRj
YjJkN2MxN2I5NjI2Li42NWM5ZTZlMjUyNjg0OTcwMzM4NGRkZGNiYTE3ODNjNGJiNzdiMTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTMyLDkgKzMyLDEwIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JpZEFyZWE7CiBjbGFzcyBHcmlkU3BhbjsK
IAorc3RydWN0IEdyaWRBcmVhOworCiBzdHJ1Y3QgQ29udGVudEFsaWdubWVudERhdGEgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRBbGlnbm1lbnREYXRhKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMTEsNyArMTEyLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mLCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkgY29uc3Q7CiAgICAgdm9p
ZCBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYpIGNvbnN0OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVk
UG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsKKyAgICBHcmlkQXJlYSBjcmVh
dGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiwgY29u
c3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYp
IGNvbnN0OwogICAgIHZvaWQgcGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlk
JiwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAgICAgdm9pZCBwbGFjZUF1dG9N
YWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29u
c3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBdXRvUGxhY2Vt
ZW50Q3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAppbmRleCA3ZThkZDY4ODI0Y2ZiNDU2MjA4MGU1OTRlY2Q4NDAyYTZjOWZj
MDMyLi5mOWVkZTFkOTBiMzkzNmYxMzA5ZDQ3YjI0MDM1MTU0MmEyNzdjNDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAt
OTcsNyArOTcsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIFdlYkNvcmVIYXMzRFJlbmRlcmluZyA9
IHRydWU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhVVNFKENPTVBPU0lUSU5HX0ZPUl9T
TUFMTF9DQU5WQVNFUykKLXN0YXRpYyBjb25zdCBpbnQgY2FudmFzQXJlYVRocmVzaG9sZFJlcXVp
cmluZ0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNh
bnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAwOwogI2VuZGlm
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBlOTYzN2VlYmUyMDYwOWFlMGM1ZDJiMWQ2ZjZiM2U2
MWJjOWYxMjk4Li44NDZhZDE1MjVhZjIwNjYwN2I0MmJmNGVkMTEwY2ZhYTkxNGU5M2VlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTQ2Nyw4ICs0
NjcsOCBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0KGNv
bnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAKICAgICBMZW5ndGhQb2ludCBvYmplY3RQ
b3NpdGlvbiA9IHN0eWxlKCkub2JqZWN0UG9zaXRpb24oKTsKIAotICAgIExheW91dFVuaXQgeE9m
ZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54KCksIGNvbnRlbnRS
ZWN0LndpZHRoKCkgLSBmaW5hbFJlY3Qud2lkdGgoKSk7Ci0gICAgTGF5b3V0VW5pdCB5T2Zmc2V0
ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0aW9uLnkoKSwgY29udGVudFJlY3Qu
aGVpZ2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgeE9mZnNldCA9
IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54LCBjb250ZW50UmVjdC53aWR0
aCgpIC0gZmluYWxSZWN0LndpZHRoKCkpOworICAgIExheW91dFVuaXQgeU9mZnNldCA9IG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi55LCBjb250ZW50UmVjdC5oZWlnaHQoKSAt
IGZpbmFsUmVjdC5oZWlnaHQoKSk7CiAKICAgICBmaW5hbFJlY3QubW92ZSh4T2Zmc2V0LCB5T2Zm
c2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWlu
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKaW5k
ZXggY2E1Yjc0MGQ5MDQ0YmQ2NWUzNjZiNTdkNzZjMzQyOGMzZjllZTNmNi4uNGM0NzRjOTVlM2Vl
YzIyMmYwNTM5OTM1MjI1ZDRhMjE5YTYwMjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC02NDAsNyArNjQwLDcgQEAgY29uc3QgU2hhZG93RGF0
YSogVGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdygpIGNvbnN0CiAgICAgaWYgKCF0ZXh0
Qm94KCkubGVnYWN5SW5saW5lQm94KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlYnVnVGV4dFNoYWRvdyhMZW5ndGhQ
b2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQp
KSwgTGVuZ3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgyMCwgTGVuZ3RoVHlwZTo6
Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1aW50OF90PiB7IDE1MCwg
MCwgMCwgMTkwIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWJ1
Z1RleHRTaGFkb3coTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3Ro
VHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoMTAsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKDIw
LCBMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIFNSR0JBPHVp
bnQ4X3Q+IHsgMTUwLCAwLCAwLCAxOTAgfSk7CiAgICAgcmV0dXJuICZkZWJ1Z1RleHRTaGFkb3cu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKaW5k
ZXggNDU5YmFmMTEyZmMwMzI3MGFmZTQ2ZmZlODRlZDBkNWJhNmIyNmUzOS4uMjVjZjQ4Y2Y0OTI4
MTJlYTNlYjBmZmY0NjAwMmNkZDBkNzc2ZWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludFN0eWxlLmgKQEAgLTMzLDEzICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgUmVuZGVyVGV4
dDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFNoYWRvd0Rh
dGE7CisKIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBUZXh0UGFpbnRTdHlsZSB7Ci0gICAg
VGV4dFBhaW50U3R5bGUoKSB7IH0KKyAgICBUZXh0UGFpbnRTdHlsZSgpID0gZGVmYXVsdDsKICAg
ICBUZXh0UGFpbnRTdHlsZShjb25zdCBDb2xvciYpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRleHRQYWludFN0eWxlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Db3VudGVyQ29udGVudC5oCmluZGV4IDU4NmNjNjY5ODAyNjVkOTg2M2FjYWFhN2Vl
NmI4YTk4NjQ4MzI2YzYuLjdiZjViYzkwNmU4OGM1Mzc1ODEwY2MzZTFmYzI4ODk5MDlkNTBhYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5o
CkBAIC0yOSwzMiArMjksMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb3Vu
dGVyQ29udGVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
Q291bnRlckNvbnRlbnQoY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllciwgTGlzdFN0eWxlVHlw
ZSBzdHlsZSwgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKQotICAgICAgICA6IG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbGlzdFN0eWxlKHN0eWxlKQotICAgICAgICAs
IG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzdHlsZSAhPSBM
aXN0U3R5bGVUeXBlOjpTdHJpbmcpOwotICAgIH0KK3N0cnVjdCBDb3VudGVyQ29udGVudCB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgY29uc3QgQXRvbVN0cmlu
ZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIExpc3RT
dHlsZVR5cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGU7IH0KLSAgICBj
b25zdCBBdG9tU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlcGFyYXRvcjsg
fQotCi1wcml2YXRlOgotICAgIEF0b21TdHJpbmcgbV9pZGVudGlmaWVyOwotICAgIExpc3RTdHls
ZVR5cGUgbV9saXN0U3R5bGU7Ci0gICAgQXRvbVN0cmluZyBtX3NlcGFyYXRvcjsKKyAgICBBdG9t
U3RyaW5nIGlkZW50aWZpZXI7CisgICAgTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGU7CisgICAgQXRv
bVN0cmluZyBzZXBhcmF0b3I7CiB9OwogCi1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb3VudGVyQ29udGVudCYgYSwgY29uc3QgQ291bnRlckNvbnRlbnQmIGIpCitpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50JiBhLCBjb25zdCBDb3VudGVyQ29u
dGVudCYgYikKIHsKLSAgICByZXR1cm4gYS5pZGVudGlmaWVyKCkgPT0gYi5pZGVudGlmaWVyKCkK
LSAgICAgICAgJiYgYS5saXN0U3R5bGUoKSA9PSBiLmxpc3RTdHlsZSgpCi0gICAgICAgICYmIGEu
c2VwYXJhdG9yKCkgPT0gYi5zZXBhcmF0b3IoKTsKKyAgICByZXR1cm4gYS5pZGVudGlmaWVyID09
IGIuaWRlbnRpZmllcgorICAgICAgICAmJiBhLmxpc3RTdHlsZSA9PSBiLmxpc3RTdHlsZQorICAg
ICAgICAmJiBhLnNlcGFyYXRvciA9PSBiLnNlcGFyYXRvcjsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCmluZGV4
IDk1ZDM4NjI3ZTE0MTNmNTI2MWMwOWM5ZmQ5ZmIxYWEyMjBkNTQ4YjQuLjcyNDBiOTZiZTgwZTk3
MzM2YmNkY2JjZDRlZTdlMjhkYzY3ODg5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsbExheWVyLmgKQEAgLTM1LDE4ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIHN0cnVjdCBGaWxsU2l6ZSB7Ci0gICAgRmlsbFNpemUo
KQotICAgICAgICA6IHR5cGUoRmlsbFNpemVUeXBlOjpTaXplKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBGaWxsU2l6ZShGaWxsU2l6ZVR5cGUgdHlwZSwgY29uc3QgTGVuZ3RoU2l6ZSYgc2l6ZSkKLSAg
ICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICwgc2l6ZShzaXplKQotICAgIHsKLSAgICB9Ci0K
LSAgICBGaWxsU2l6ZVR5cGUgdHlwZTsKKyAgICBGaWxsU2l6ZVR5cGUgdHlwZSB7IEZpbGxTaXpl
VHlwZTo6U2l6ZSB9OwogICAgIExlbmd0aFNpemUgc2l6ZTsKIH07CiAKQEAgLTg0LDcgKzczLDcg
QEAgcHVibGljOgogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKTsgfQogICAgIGNvbnN0IExlbmd0aFNpemUm
IHNpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NpemVMZW5ndGg7IH0KICAgICBGaWxsU2l6
ZVR5cGUgc2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGaWxsU2l6ZVR5cGU+
KG1fc2l6ZVR5cGUpOyB9Ci0gICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZpbGxT
aXplKHN0YXRpY19jYXN0PEZpbGxTaXplVHlwZT4obV9zaXplVHlwZSksIG1fc2l6ZUxlbmd0aCk7
IH0KKyAgICBGaWxsU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4geyBzaXplVHlwZSgpLCBtX3Np
emVMZW5ndGggfTsgfQogICAgIE1hc2tNb2RlIG1hc2tNb2RlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWFza01vZGU+KG1fbWFza01vZGUpOyB9CiAKICAgICBjb25zdCBGaWxsTGF5ZXIq
IG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQxZDk2MWRlODgyNmZiODMwMzMwOWI4
ZTYzNTJmMjBmOWVhYi4uZDQ3NmY5MzE5ODdjZmNhNzE0MTRjYmZkZWNkODFhYmIxZWRmY2UzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKQEAgLTQyLDcgKzQy
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRGVzcGl0ZSBsaW5lIG51bWJlcnMgaW4gdGhl
IHNwZWMgc3RhcnQgaW4gIjEiLCB0aGUgaW5kZXhlcyBoZXJlIHN0YXJ0IGluICIwIi4KIGNsYXNz
IEdyaWRTcGFuIHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBHcmlkU3BhbiB1bnRyYW5zbGF0ZWRE
ZWZpbml0ZUdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIEdyaWRTcGFuKHN0YXJ0TGluZSwgZW5kTGluZSwgVW50cmFuc2xhdGVkRGVmaW5p
dGUpOwpAQCAtMTQyLDggKzE0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0KLSAg
ICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZp
bml0ZSwgSW5kZWZpbml0ZX07CisgICAgZW51bSBHcmlkU3BhblR5cGUgOiB1aW50OF90IHsgVW50
cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZSB9OwogCiAg
ICAgR3JpZFNwYW4oaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIEdyaWRTcGFuVHlwZSB0eXBl
KQogICAgICAgICA6IG1fdHlwZSh0eXBlKQpAQCAtMTYzLDI0ICsxNjEsMjQgQEAgcHJpdmF0ZToK
ICAgICBpbnQgbV9zdGFydExpbmU7CiAgICAgaW50IG1fZW5kTGluZTsKICAgICBHcmlkU3BhblR5
cGUgbV90eXBlOwotCi0KIH07CiAKIC8vIFRoaXMgcmVwcmVzZW50cyBhIGdyaWQgYXJlYSB0aGF0
IHNwYW5zIGluIGJvdGggcm93cycgYW5kIGNvbHVtbnMnIGRpcmVjdGlvbi4KLWNsYXNzIEdyaWRB
cmVhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBIYXNo
TWFwIHJlcXVpcmVzIGEgZGVmYXVsdCBjb25zdHVjdG9yLgorc3RydWN0IEdyaWRBcmVhIHsKKyAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBHcmlkU3BhbiByb3dzOwor
ICAgIEdyaWRTcGFuIGNvbHVtbnM7CisKICAgICBHcmlkQXJlYSgpCi0gICAgICAgIDogY29sdW1u
cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCi0gICAgICAgICwgcm93cyhHcmlkU3Bh
bjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgIDogcm93cyhHcmlkU3Bhbjo6aW5kZWZp
bml0ZUdyaWRTcGFuKCkpCisgICAgICAgICwgY29sdW1ucyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdy
aWRTcGFuKCkpCiAgICAgewogICAgIH0KIAotICAgIEdyaWRBcmVhKGNvbnN0IEdyaWRTcGFuJiBy
LCBjb25zdCBHcmlkU3BhbiYgYykKLSAgICAgICAgOiBjb2x1bW5zKGMpCi0gICAgICAgICwgcm93
cyhyKQorICAgIEdyaWRBcmVhKEdyaWRTcGFuIHJvd3MsIEdyaWRTcGFuIGNvbHVtbnMpCisgICAg
ICAgIDogcm93cyhyb3dzKQorICAgICAgICAsIGNvbHVtbnMoY29sdW1ucykKICAgICB7CiAgICAg
fQogCkBAIC0xOTMsMTEgKzE5MSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG8pOwogICAgIH0KLQotICAgIEdyaWRTcGFuIGNvbHVtbnM7Ci0gICAgR3JpZFNw
YW4gcm93czsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEdyaWRBcmVhPiBOYW1lZEdy
aWRBcmVhTWFwOwordXNpbmcgTmFtZWRHcmlkQXJlYU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBHcmlk
QXJlYT47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZExlbmd0aC5oCmluZGV4IDg2YWNkMzMwZGY2OWY4M2IwZDJmZDMyMjdlYmI4
MGU5ZWZlN2U4N2EuLjVmODhkZTFmYzljMjEyMmNlMjJhZDdlMzBhMzBiMDg0OTM4NWU5MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaApAQCAtNDIsNyAr
NDIsNiBAQCBjbGFzcyBHcmlkTGVuZ3RoIHsKIHB1YmxpYzoKICAgICBHcmlkTGVuZ3RoKGNvbnN0
IExlbmd0aCYgbGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAgICAgLCBt
X2ZsZXgoMCkKICAgICAgICAgLCBtX3R5cGUoTGVuZ3RoVHlwZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghbGVuZ3RoLmlzVW5kZWZpbmVkKCkpOwpAQCAtNzIsMTQgKzcxLDEwIEBAIHB1YmxpYzoK
ICAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBMZW5ndGhUeXBlICYm
IG1fbGVuZ3RoLmlzQXV0bygpOyB9CiAKIHByaXZhdGU6Ci0gICAgLy8gSWRlYWxseSB3ZSB3b3Vs
ZCBwdXQgdGhlIDIgZm9sbG93aW5nIGZpZWxkcyBpbiBhIHVuaW9uLCBidXQgTGVuZ3RoIGhhcyBh
IGNvbnN0cnVjdG9yLAotICAgIC8vIGEgZGVzdHJ1Y3RvciBhbmQgYSBjb3B5IGFzc2lnbm1lbnQg
d2hpY2ggaXNuJ3QgYWxsb3dlZC4KKyAgICAvLyBDb3VsZCB1c2UgYSBWYXJpYW50IGhlcmUgc2lu
Y2Ugd2Ugb25seSB1c2UgbV9sZW5ndGggb3IgbV9mbGV4LCBhbmQgbV90eXBlIGRldGVybWluZXMg
d2hpY2guCiAgICAgTGVuZ3RoIG1fbGVuZ3RoOwotICAgIGRvdWJsZSBtX2ZsZXg7Ci0gICAgZW51
bSBHcmlkTGVuZ3RoVHlwZSB7Ci0gICAgICAgIExlbmd0aFR5cGUsCi0gICAgICAgIEZsZXhUeXBl
Ci0gICAgfTsKKyAgICBkb3VibGUgbV9mbGV4IHsgMCB9OworICAgIGVudW0gR3JpZExlbmd0aFR5
cGUgOiBib29sIHsgTGVuZ3RoVHlwZSwgRmxleFR5cGUgfTsKICAgICBHcmlkTGVuZ3RoVHlwZSBt
X3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAppbmRleCBhZDVhYmFkYWMwNGY3ZDJlYmJjYzY3MDRlMDEyOTNiMWRkZmFlM2E0Li4y
ZThkNTI2YTlmYTE5NWQ0NTc0MTYyZWU2MTc5ZjNlY2U2M2M3ZWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTE0OTcsNyArMTQ5Nyw3
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zCiAgICAgLy8gU2hpZnQgZWxlbWVudCB0byB0aGUg
YW5jaG9yIHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgogICAgIGF1dG8gdHJhbnNmb3JtT3Jp
Z2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5k
aW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOwogICAgIGF1dG8gYW5jaG9y
ID0gdHJhbnNmb3JtT3JpZ2luOwotICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueCgpLmlzQXV0bygp
KQorICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueC5pc0F1dG8oKSkKICAgICAgICAgYW5jaG9yID0g
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hvcigpLCBib3VuZGluZ0JveC5zaXpl
KCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1h
bmNob3IueCgpLCAtYW5jaG9yLnkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNzMyNDQ2OWQzMzYwZjRlMTM0ZDM0YzJkNmY4OGJlYmVj
Y2Y5YjYyNC4uOGNjZTI5M2FkYTU1N2ZiODRiODIzZjFhMTE4Mjg0OGJlNDJkZjJmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEwOSw3ICsx
MDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJvcmRlckRhdGE7CiBjbGFzcyBD
b250ZW50RGF0YTsKLWNsYXNzIENvdW50ZXJDb250ZW50OwogY2xhc3MgQ3Vyc29yTGlzdDsKIGNs
YXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRm9udE1ldHJpY3M7CkBAIC0xMjEsNiArMTIwLDcgQEAg
Y2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhOwogY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYTsKIGNs
YXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCitzdHJ1Y3QgQ291bnRlckNvbnRlbnQ7CiBzdHJ1
Y3QgU2Nyb2xsU25hcEFsaWduOwogc3RydWN0IFNjcm9sbFNuYXBUeXBlOwogCkBAIC03MDEsNyAr
NzAxLDcgQEAgcHVibGljOgogICAgIFRleHRDb21iaW5lIHRleHRDb21iaW5lKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRD
b21iaW5lKTsgfQogICAgIGJvb2wgaGFzVGV4dENvbWJpbmUoKSBjb25zdCB7IHJldHVybiB0ZXh0
Q29tYmluZSgpICE9IFRleHRDb21iaW5lOjpOb25lOyB9CiAKLSAgICBjb25zdCBUYWJTaXplJiB0
YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGFiU2l6ZTsgfQor
ICAgIFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEt
PnRhYlNpemU7IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMKIApAQCAtMTI3OCw3ICsxMjc4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2Ryb3BGaWx0ZXIoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJh
Y2tkcm9wRmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0
VGFiU2l6ZShjb25zdCBUYWJTaXplJiBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNldFRhYlNpemUoVGFiU2l6ZSBzaXplKSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KIAogICAgIHZv
aWQgc2V0QnJlYWtCZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0JlZm9yZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGJyZWFrQmVoYXZpb3IpKTsgfQogICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVha0JldHdlZW4g
YnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFrQWZ0
ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KQEAgLTE1ODYsNyAr
MTU4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21i
aW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0KICAgICBzdGF0aWMgVGV4dE9yaWVu
dGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246
Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkgeyByZXR1
cm4gT2JqZWN0Rml0OjpGaWxsOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmpl
Y3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlw
ZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOyB9CisgICAg
c3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIHsgTGVu
Z3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBl
OjpQZXJjZW50KSB9OyB9CiAgICAgc3RhdGljIEVtcHR5Q2VsbCBpbml0aWFsRW1wdHlDZWxscygp
IHsgcmV0dXJuIEVtcHR5Q2VsbDo6U2hvdzsgfQogICAgIHN0YXRpYyBMaXN0U3R5bGVQb3NpdGlv
biBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBMaXN0U3R5bGVQb3NpdGlvbjo6
T3V0c2lkZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbml0aWFsTGlzdFN0eWxl
U3RyaW5nVmFsdWUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CkBAIC0xOTAxLDExICsxOTAxLDEx
IEBAIHB1YmxpYzoKIAogICAgIExlbmd0aFBvaW50IG9mZnNldFBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0UG9zaXRpb247IH0KICAgICB2b2lk
IHNldE9mZnNldFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRpb24pIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBvZmZzZXRQb3NpdGlvbiwgV1RGTW92ZShwb3NpdGlvbikpOyB9
Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRQb3NpdGlvbigpIHsgcmV0dXJu
IExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0UG9zaXRpb24o
KSB7IHJldHVybiB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6OkF1dG8gfSB9
OyB9CiAKICAgICBMZW5ndGhQb2ludCBvZmZzZXRBbmNob3IoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5vZmZzZXRBbmNob3I7IH0KICAgICB2b2lkIHNldE9mZnNldEFu
Y2hvcihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgb2Zmc2V0QW5jaG9yLCBXVEZNb3ZlKHBvc2l0aW9uKSk7IH0KLSAgICBzdGF0aWMgTGVu
Z3RoUG9pbnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0
aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsgfQorICAgIHN0
YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0QW5jaG9yKCkgeyByZXR1cm4geyB7IExlbmd0
aFR5cGU6OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsgfQogCiAgICAgT2Zmc2V0Um90
YXRpb24gb2Zmc2V0Um90YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+b2Zmc2V0Um90YXRlOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRSb3RhdGUoT2Zmc2V0Um90YXRp
b24mJiByb3RhdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9mZnNldFJv
dGF0ZSwgV1RGTW92ZShyb3RhdGlvbikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggODdjYTJiMjUyZjk2Zjg1ZTRiNDQwYjZmZDJjMGY4
ZTkzYWRlN2EwYy4uZGUzZGM2YzRjZGUxMjk3ZWVhMGNmY2Q2ZDYxZDY0NDEyODEwZTJiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMjgs
NyArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dEYXRhOjpTaGFkb3dEYXRh
KGNvbnN0IFNoYWRvd0RhdGEmIG8pCi0gICAgOiBtX2xvY2F0aW9uKG8ubV9sb2NhdGlvbi54KCks
IG8ubV9sb2NhdGlvbi55KCkpCisgICAgOiBtX2xvY2F0aW9uKG8ubV9sb2NhdGlvbikKICAgICAs
IG1fc3ByZWFkKG8ubV9zcHJlYWQpCiAgICAgLCBtX3JhZGl1cyhvLm1fcmFkaXVzKQogICAgICwg
bV9jb2xvcihvLm1fY29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRv
d0RhdGEuaAppbmRleCAyMmZlZjc2MmJjYTMxMGI2M2FlZmU4NTg2ZjQyMmFiOWY4M2MwNWYyLi5k
OWE0MWExNWJhMGQxZWZhOWM4ZmU1NDA3YjNkNTBlOWYyZWUwYWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIFNoYWRvd0RhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFkb3dEYXRhKGNvbnN0IExl
bmd0aFBvaW50JiBsb2NhdGlvbiwgTGVuZ3RoIHJhZGl1cywgTGVuZ3RoIHNwcmVhZCwgU2hhZG93
U3R5bGUgc3R5bGUsIGJvb2wgaXNXZWJraXRCb3hTaGFkb3csIGNvbnN0IENvbG9yJiBjb2xvcikK
LSAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgpKQorICAgICAg
ICA6IG1fbG9jYXRpb24obG9jYXRpb24pCiAgICAgICAgICwgbV9zcHJlYWQoc3ByZWFkKQogICAg
ICAgICAsIG1fcmFkaXVzKHJhZGl1cykKICAgICAgICAgLCBtX2NvbG9yKGNvbG9yKQpAQCAtNjIs
OCArNjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0K
ICAgICAKLSAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uLngo
KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ueSgp
OyB9CisgICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi54OyB9
CisgICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi55OyB9CiAg
ICAgY29uc3QgTGVuZ3RoUG9pbnQmIGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlv
bjsgfQogICAgIGNvbnN0IExlbmd0aCYgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7
IH0KICAgICBMYXlvdXRVbml0IHBhaW50aW5nRXh0ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaAppbmRl
eCBhMmM3YjBkYjNkNmU1ZmVkNjUzNmE1NjM5YjQ1NzkyZTQ3ODAxMTc5Li41Mzc0NzIyYWIwOTRj
NTc4Mzc4Y2RkMWU1ZDI5YWYwZWQ5OWE1YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCkBAIC0yNSwxMSArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkxlbmd0aEJveC5oIgotI2luY2x1ZGUg
Ikxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKaW5kZXggMGY5MGJjMjI1OWVkNGYzYzBiMzY0YTlhNmQ0YjQ3NDQzNWYxZGRjMi4uYjcw
YjU1MTg0MDQyZjkyZWM5YWQ5ZTg0ZTIzYzNkZjg4ZmRiYzFhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTI2OSw4ICsyNjksOCBAQCBpbmxp
bmUgVGFiU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZShjb25zdCBCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNO
dW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIFRhYlNpemUocHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1
ZSgpLCBTcGFjZVZhbHVlVHlwZSk7Ci0gICAgcmV0dXJuIFRhYlNpemUocHJpbWl0aXZlVmFsdWUu
Y29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEoKSksIExlbmd0aFZhbHVlVHlwZSk7CisgICAgICAgIHJldHVybiB7IHByaW1pdGl2ZVZhbHVl
LmZsb2F0VmFsdWUoKSwgVGFiU2l6ZTo6U3BhY2VzIH07CisgICAgcmV0dXJuIHsgcHJpbWl0aXZl
VmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEoKSksIFRhYlNpemU6Okxlbmd0aCB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpAQCAtNDE4LDcgKzQxOCw3IEBAIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0UG9zaXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgTGVuZ3Ro
IGxlbmd0aFggPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1
ZVJpZ2h0PihidWlsZGVyU3RhdGUsICpwYWlyLT5maXJzdCgpKTsKICAgICBMZW5ndGggbGVuZ3Ro
WSA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20+
KGJ1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKIAotICAgIHJldHVybiBMZW5ndGhQb2lu
dChsZW5ndGhYLCBsZW5ndGhZKTsKKyAgICByZXR1cm4geyBsZW5ndGhYLCBsZW5ndGhZIH07CiB9
CiAKIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25P
ckF1dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
QEAgLTQyOCw3ICs0MjgsNyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlcgogICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS5pc1BhaXIoKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRQb3NpdGlvbihidWls
ZGVyU3RhdGUsIHZhbHVlKTsKIAotICAgIHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3Ro
VHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7CisgICAgcmV0dXJuIHsgeyBM
ZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9IH07CiB9CiAKIGlubGluZSBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4
dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAxM2NhZDliN2ZkNzcyYTZj
ZDIzOTgzNDBlMjgyNzcxYmQ0OWI0NDYxLi5lODNlZjljNGE3ZjJkNGNlMTAyYWRkYjc5YzlhN2Qw
MjliMzA4Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJD
dXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaApA
QCAtOTU2LDcgKzk1Niw3IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9y
Qm94U2hhZG93VmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbG9yID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuY29sb3IoKTsKIAotICAg
ICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KExlbmd0aFBvaW50
KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNw
YXJlbnRCbGFjayk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IG1ha2VVbmlxdWU8U2hhZG93
RGF0YT4oTGVuZ3RoUG9pbnQgeyB4LCB5IH0sIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBj
b2xvciA6IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICAgICAgaWYgKHByb3BlcnR5ID09
IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgp
LnNldFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFk
ZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxz
ZQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUNvbnRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHUKICAgICAgICAg
ICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlk
ZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQog
ICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBl
PihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAgICAgICAgICBhdXRvIGNvdW50
ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIo
KSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAg
ICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50PihDb3VudGVyQ29udGVu
dCB7IGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFs
dWUtPnNlcGFyYXRvcigpIH0pOwogICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0
Q29udGVudChXVEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0g
dHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFBvcHVwTWVudS5oCmluZGV4IGYzZjVlYjkyN2MzNDI1MmUxZGI2YThhNGNh
MDA3MWEyODhlMjYyOWIuLjI0ODE2ZDU2YTFjNTIwNzAyYWQ5MDM4ZDMxZDhjNjUwMGJkOGM5MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBN
ZW51LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb3B1cE1l
bnUuaApAQCAtMjAsNiArMjAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJQb3B1
cE1lbnVQcm94eS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE9wdGlvbk1lbnUgV2ViS2l0T3B0aW9u
TWVudTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXgg
MzM1ZjNmYWRmYWFlZWUzZWI2MjUxZWZiOTg5OTUzOTE0ZDYwMTYzNS4uZDhmNzdmNmFmMWI1N2Ey
MDhhNGVlMmRlMzM1OWE1YmFhODlkMmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0Jhc2UuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI1MDZjNGVkNThhNjNkMzM5MmMyNGY5NmI1YjIzMzQwNGQ2
MDE5MjIuLmM4ZTRlODg5N2EzYjQ0MzA4MWNjZjY1YmM4YTc3YWY2NGI5ZDNiYWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMi0wMS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
T3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwOiBVcGRhdGVkIHRlc3RzIGZvciBjaGFu
Z2UgdG8gT3B0aW9uU2V0IGZvcgorICAgICAgICBNZWRpYVRpbWUgZmxhZ3MsIGFuZCBmb3IgbmFt
ZSBjaGFuZ2UgZnJvbSBSb3VuZGluZ0ZsYWdzIHRvIFJvdW5kaW5nTW9kZS4KKwogMjAyMi0wMS0y
NSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0VXU10g
U3VwcG9ydCBwdWxsIHJlcXVlc3RzIGluIFRyaWdnZXIgKEZvbGxvdy11cCBmaXgpCmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmggYi9Ub29scy9NaW5pQnJvd3Nlci93
aW4vQ29tbW9uLmgKaW5kZXggOTk2NGQ1ZTUwNDMxOWQ3NzgzMzY4M2RkZjU4MDliYzdmN2Y0ZGMw
Yi4uODA1ZTM2MjdkNzc0MGJlMjA5MDgwYzg0NTdhODJmOGE5YzMzZGUzOSAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dp
bi9Db21tb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAic3RkYWZ4LmgiCiAjaW5j
bHVkZSAiTWFpbldpbmRvdy5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgogCiBlbnVtIGNsYXNzIEJy
b3dzZXJXaW5kb3dUeXBlIHsKICAgICBXZWJLaXQsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4
IGM4MjI3Nzk4ZmExMTIyZWZlNDRiMmQ1YzY0ZmJmNjUwMzAxNTZlYjAuLmU5MjFlODk2YjcwYmEy
YWFjZmE1OTkzZTI1N2MzMjk5ZWRiMzAzYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogCiBPQkpDX0NMQVNTIE5TVW5kb01hbmFnZXI7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcAppbmRleCBiMGI1NGE4MDNmYWM4NWQxNTg0ZTcy
M2M4NmUxZDljYmE0NGRjZTdhLi5kYzhlMjg5ODRhZTNhODAyZTU3Mzg2NzY2MTUyOTU5NGFjNTlk
NDc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAKQEAg
LTE3MSw3ICsxNzEsNyBAQCBURVNUKFdURiwgTWVkaWFUaW1lKQogCiAgICAgLy8gQ29uc3RhbnRz
CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgTWVkaWFUaW1lKDAsIDEpKTsK
LSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRpYVRpbWUoLTEsIDEs
IDApKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRpYVRpbWUo
LTEsIDEsIHsgfSkpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVU
aW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRpYVRpbWU6OlBvc2l0aXZlSW5maW5pdGUpKTsKICAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWUo
MCwgMSwgTWVkaWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlKSk7CiAgICAgRVhQRUNUX0VRKE1lZGlh
VGltZTo6aW5kZWZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6SW5kZWZp
bml0ZSkpOwpAQCAtMjU0LDY5ICsyNTQsNjkgQEAgVEVTVChXVEYsIE1lZGlhVGltZSkKICAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKDIsIDIpLnRvVGltZVNjYWxlKDEpLnRpbWVWYWx1ZSgpLCAxKTsK
ICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDIsIDYpLnRvVGltZVNjYWxlKDMpLnRpbWVWYWx1ZSgp
LCAxKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEpLmhhc0Jl
ZW5Sb3VuZGVkKCksIHRydWUpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1l
VmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSg1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDQ5LCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCks
IDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7Ci0gICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdG
bGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6Okhh
bGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFs
ZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxm
QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
MSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJv
KS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUo
KSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFpl
cm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVW
YWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAw
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJv
bVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGlt
ZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
Mik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOwotICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdG
bGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6
QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
LTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZy
b21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZh
bHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgp
LCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCks
IDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVl
KCksIDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZh
bHVlKCksIDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZh
bHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZl
SW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZl
SW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZl
SW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZl
SW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0
aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0
OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5l
Z2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5l
Z2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dh
cmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6
VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6
OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdG
bGFnczo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdN
b2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSg0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6
SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5
RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJv
KS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVW
YWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgp
LCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93
YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVW
YWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93
YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50
aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAt
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21a
ZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZh
bHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAy
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9k
ZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5
RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywg
MikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybyku
dGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZh
bHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCks
IC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwg
MSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAw
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMik7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAy
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCks
IDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwg
MCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVl
KCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUo
KSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZh
bHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50
aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5p
dHkpLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5p
dHkpLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgMSkudG9UaW1lU2NhbGUoMiksIE1lZGlhVGlt
ZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIDEpLnRvVGltZVNjYWxlKDIpLCBNZWRpYVRpbWU6
Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOwogICAgIGludDY0X3QgbWF4SW50MzIgPSBudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZShtYXhJbnQz
MiAqIDIsIDEpLnRvVGltZVNjYWxlKDIpLnRpbWVWYWx1ZSgpLCBtYXhJbnQzMiAqIDQpOwogICAg
IGludDY0X3QgYmlnSW50ID0gMUxMIDw8IDYyOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmln
SW50LCAxVSA8PCAzMSkudG9UaW1lU2NhbGUoMVUgPDwgMjkpLnRpbWVWYWx1ZSgpLCBiaWdJbnQg
LyA0KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCArIDEsIDFVIDw8IDMxKS50b1Rp
bWVTY2FsZSgxVSA8PCAyOSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50
aW1lVmFsdWUoKSwgYmlnSW50IC8gNCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQg
KyAxLCAxVSA8PCAzMSkudG9UaW1lU2NhbGUoMVUgPDwgMjksIE1lZGlhVGltZTo6Um91bmRpbmdN
b2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgYmlnSW50IC8gNCk7CiAgICAgRVhQRUNUX0VR
KE1lZGlhVGltZShiaWdJbnQgKyAxLCAxVSA8PCAzMSkudG9UaW1lU2NhbGUoMVUgPDwgMjkpLmhh
c0JlZW5Sb3VuZGVkKCksIHRydWUpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50IC0g
MiwgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNjYWxlKS50b1RpbWVTY2FsZShNZWRpYVRpbWU6Ok1h
eGltdW1UaW1lU2NhbGUgLSAxKS5oYXNCZWVuUm91bmRlZCgpLCB0cnVlKTsKICAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKGJpZ0ludCwgMSkudG9UaW1lU2NhbGUoTWVkaWFUaW1lOjpNYXhpbXVtVGlt
ZVNjYWxlKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NpZ25hbHMuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5jcHAKaW5kZXggMjQ1YjFhZTcxNzM5NWIzN2U4ZDI1
ZTgyMzM0OGM1YjBlYjIxMzE0MC4uZDYwMmU2MzFmMjdiMGM5MmE2OTNlY2ZhMGQ5NjdiNmU3YTQy
YTdkOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KaW5kZXggNjViZmJkZWYwODIy
NDYwODIzY2ZkNjFhYTM3Mjg3NDk1YjJiMWRhNC4uNTQ0NGFjN2VjYWNiYjkzNmJlOGMwZjY4Mjc2
NTExODZiOGUzMDk1MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvR2V0VXNlck1lZGlhLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L0dldFVzZXJNZWRpYS5tbQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS0lu
dGVybmFsRGVidWdGZWF0dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9TZWNvbmRzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQubW0KaW5kZXggZWEwMTEwYzVmNTRjMGE1NDAyMjBlMTc2N2E2ZGUx
Mzc4ZjNjMmNjMC4uYjkyYjBmOTVmMGY3MWVkYTZiNDgwYWU1MTE4NWI5YzQ4MjZjMzBhZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0
IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvV2FsbFRpbWUuaD4KIAogc3RhdGljIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHdlYlZpZXdXaXRoUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRJbk5ldHdvcmtQcm9j
ZXNzKCkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKaW5kZXggMjE5
NGNhM2UwYjg3NTc0ZTFiOGM4Mjc0ZmYxNGY1Y2E4NWYyYjEzNy4uNmM0MTUwYTQ0YzE5Yzg3Y2E5
OWExMTc5YzBjMTViZGRiNjQzZmRkMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDxvcHRpb25h
bD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAK
</data>
<flag name="commit-queue"
          id="476221"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449971</attachid>
            <date>2022-01-25 15:13:27 -0800</date>
            <delta_ts>2022-01-26 09:51:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220125151327.patch</filename>
            <type>text/plain</type>
            <size>151852</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTljMTE1MzRhMDlmMWNlODkwM2RiNTFhNmRiNmQ3OTM4Y2Y2MWRhLi45NWM4Y2Y4NDE4MmMwNzYw
ZDEwYmM0N2IyNDQyOGFhODk5MmMxZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBWZWN0b3IgYW5kIEZpeGVkVmVjdG9yOjpmaW5kTWF0Y2hpbmcgdG8gZmluZElmIHRv
IG1hdGNoIHN0bCBuYW1pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJhNzhhYzEwZjU5NWE5NmIyMzczZDMwMTliYzZmMGM4
NjYxYWJjODUuLjNlNTFlY2YyMGMyYjI3YTRkNDU0NmUxM2IwN2ExNDEwOWJlNzBhMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTA1IEBACisyMDIyLTAxLTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3Vz
IHNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9Gb3J3YXJkLmg6IEFkZCBTZWNvbmRzIGFuZCBXYWxsVGltZSB0byB0aGUg
dXNpbmcgc2VjdGlvbi4KKworICAgICAgICAqIHd0Zi9Mb2NrLmg6IFVzZSBGb3J3YXJkLmggaW5z
dGVhZCBvZiBTZWNvbmRzLmggc2luY2UgU2Vjb25kcyBpcyBvbmx5IHVzZWQKKyAgICAgICAgaGVy
ZSBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJuIHR5cGUsIG5vIGFjdHVhbCB1c2Ugb2YgdGhlIGNs
YXNzIGluIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmNwcDoKKyAgICAg
ICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRpbWUpOiBEZWxldGVkIHRoZSBjb3B5IGNvbnN0cnVj
dG9yIHRoYXQgdXNlZCB0aGUgYXNzaWdubWVudAorICAgICAgICBvcGVyYXRvci4gVGhlIGRlZmF1
bHQgY29weSBjb25zdHJ1Y3RvciB3b3JrcyBmaW5lLCB3ZSBkb24ndCBoYXZlIHRvIHdyaXRlIG9u
ZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRpbWUpOiBBZGRlZCBhIEhhc0RvdWJs
ZSBjb25zdHJ1Y3RvciBmb3IgdXNlIGluIGNyZWF0ZQorICAgICAgICBmdW5jdGlvbnMuIEl0J3Mg
Y29uc3RleHByIGJ1dCBpdCdzIGluIHRoZSAuY3BwIGZpbGUgYmVjYXVzZSBpdCdzIHByaXZhdGUu
CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KTogU2ltcGxpZmllZCBi
eSB1c2luZyB0aGUgSGFzRG91YmxlIGNvbnN0cnVjdG9yLgorICAgICAgICBBbHNvIHVzZSBzdGQ6
OmlzbmFuIGluc3RlYWQgb2YgYSB0cmlja3kgYWx0ZXJuYXRlIHdheSBvZiBkb2luZyBpdC4gUmVt
b3ZlZCBhCisgICAgICAgIHNwZWNpYWwgY2FzZSBmb3IgaW5maW5pdHkgc2luY2UgdGhlIG1heGlt
dW0gYW5kIG1pbmltdW0gY2FzZXMgYWxyZWFkeSBjb3ZlciB0aGF0LgorICAgICAgICBBbmQgcmVw
bGFjZWQgYSBzdGF0aWNfY2FzdCB3aXRoIGFuIGFzc2lnbm1lbnQgdG8gdGhlIGRlc2lyZWQgdHlw
ZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKTogRGl0dG8uIFRo
ZXNlIGZ1bmN0aW9ucyBhcmUgc28gc2ltaWxhciB0aGUKKyAgICAgICAgc2hvdWxkIHByb2JhYmx5
IGJlIHRlbXBsYXRlZCBpbnN0ZWFkIG9mIHJlcGVhdGVkIHR3aWNlLgorICAgICAgICAoV1RGOjpN
ZWRpYVRpbWU6OnRvRmxvYXQgY29uc3QpOiBSZXBsYWNlZCBhIHN0YXRpY19jYXN0IHdpdGggYXNz
aWdubWVudCB0byB0aGUKKyAgICAgICAgZGVzaXJlZCB0eXBlLgorICAgICAgICAoV1RGOjpNZWRp
YVRpbWU6OnRvRG91YmxlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6
b3BlcmF0b3I9KTogRGVsZXRlZC4gVGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciB3b3Jr
cyBmaW5lLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yKyBjb25zdCk6IFRha2Ug
dGhlIGFyZ3VtZW50IGJ5IHZhbHVlIGluc3RlYWQgb2YgcmVmZXJlbmNlLgorICAgICAgICAoV1RG
OjpNZWRpYVRpbWU6Om9wZXJhdG9yLSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpNZWRp
YVRpbWU6Om9wZXJhdG9yKiBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6
Om9wZXJhdG9yISBjb25zdCk6IFNpbXBsaWZpZWQgdGhlIGltcGxlbWVudGF0aW9uIGJ5IHVzaW5n
CisgICAgICAgIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBmbGFncyBkaXJlY3Rs
eS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciBib29sIGNvbnN0KTogQ2FsbCBv
cGVyYXRvciEgaW5zdGVhZCBvZiByZXBlYXRpbmcgdGhlCisgICAgICAgIGxvZ2ljIHR3aWNlLgor
ICAgICAgICAoV1RGOjpvcmRlcmluZyk6IEFkZGVkIHR3byBvdmVybG9hZGVkIGZ1bmN0aW9ucy4g
T25lIGlzIGEgdGVtcGxhdGUgdGhhdCBjb21wYXJlcworICAgICAgICBzY2FsYXJzIGFuZCB0aGUg
b3RoZXIgY29tcGFyZXMgdHdvIE1lZGlhVGltZSBvYmplY3RzLiBUaGUgc2Vjb25kIG9uZSByZXBs
YWNlcyB0aGUKKyAgICAgICAgTWVkaWFUaW1lOjpjb21wYXJlIGZ1bmN0aW9uLCB3aGljaCBpcyBu
b3cganVzdCBhIGxpZ2h0d2VpZ2h0IGNvdmVyIGZvciB0aGlzLgorICAgICAgICBUaGUgb2xkIGNv
ZGUgaGFkIHRyaWNreSBsb2dpYywgYW5kIHRoaXMgbmV3IGZ1bmN0aW9uIGlzIGEgY29tcGxldGUg
cmV3cml0ZS4KKyAgICAgICAgVG8gbWFrZSB0aGUgbG9naWMgZWFzeSB0byBmb2xsb3csIHdlIGV4
dHJhY3QgdGhlIHBpZWNlcyBvZiB0aGUgTWVkaWFUaW1lIGFuZAorICAgICAgICBjb21wYXJlIHRo
ZW0uIElmIHRoZXkgYXJlIGVxdWFsIHRoZW4gd2UgZmFsbCB0aHJvdWdoIHRvIHRoZSBuZXh0LCBh
bmQgc28gb24uCisgICAgICAgIEF0IHRoZSBlbmQgdGhlcmUgYXJlIHZhcmlvdXMgY2FzZXMgZm9y
IHRpbWVzIHdlIGNhbiBjb21wYXJlIHdpdGhvdXQgZG9pbmcKKyAgICAgICAgYXJpdGhtZXRpYywg
YW5kIHRoZXNlIGFyZSB0aGUgc2FtZSBhcyB0aGUgb25lcyB0aGF0IHdlcmUgYWxyZWFkeSBoZXJl
LCBidXQgd2l0aAorICAgICAgICBzaW1wbGlmaWVkIGxvZ2ljIGluIHNvbWUgY2FzZXMgdGhhdCBz
aG91ZGwgYmUgZWFzaWVyIHRvIGZvbGxvdywgYW5kIG5vIHVzZXMgb2YKKyAgICAgICAgc3RhdGlj
X2Nhc3QgYW55IG1vcmUuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aXNCZXR3ZWVuIGNvbnN0
KTogVGFrZSBhcmd1bWVudHMgYnkgdmFsdWUgaW5zdGVhZCBvZiByZWZlcmVuY2UuCisgICAgICAg
IChXVEY6Ok1lZGlhVGltZTo6emVyb1RpbWUpOiBEZWxldGVkLiBOb3cgYSBjb25zdGV4cHIgaW4g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbnZhbGlkVGltZSk6IERlbGV0
ZWQuIERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1l
KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6bmVnYXRpdmVJbmZp
bml0ZVRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbmRl
ZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRv
VGltZVNjYWxlIGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSb3VuZGluZ0ZsYWdzIGlzIG5vdworICAg
ICAgICBSb3VuZGluZ01vZGUuIEl0IGRpZG4ndCBtYWtlIHNlbnNlIHRvIHRyZWF0IG11dHVhbGx5
IGV4Y2x1c2l2ZSByb3VuZGluZyBwb2xpY2llcworICAgICAgICBhcyAiZmxhZ3MiLgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSk6IERpdHRvLiBBbHNvIHVzZSBzdGQ6OmV4
Y2hhbmdlIGluc3RlYWQgb2Ygc3RkOjpzd2FwCisgICAgICAgIGFuZCB1c2Ugc3RkOjphYnMgaW5z
dGVhZCBvZiBsbGFicy4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0pTT05PYmplY3QgY29u
c3QpOiBSZW1vdmVkIHN0YXRpY19jYXN0IHRvIGRvdWJsZS4KKyAgICAgICAgKFdURjo6YWJzKTog
VGFrZSBhcmd1bWVudCBieSB2YWx1ZSBpbnN0ZWFkIG9mIHJlZmVyZW5jZS4gUmVuYW1lZCBhcmd1
bWVudCBmcm9tIHJocworICAgICAgICBzaW5jZSB0aGUgYXJndW1lbnQgaXMgbm90IHRoZSByaWdo
dC1oYW5kIHNpZGUgb2YgYW4gb3BlcmF0b3IuIFJlbW92ZWQgdW5uZWVkZWQKKyAgICAgICAgc3Bl
Y2lhbCBjYXNlIHRvIGhhbmRsZSBpbnZhbGlkIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIHdvcmtzIGZp
bmUgb24gaW52YWxpZCB3aXRob3V0IGl0LgorICAgICAgICBVc2Ugc3RkOjphYnMgaW5zdGVhZCBv
ZiBmYWJzLgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KTogVGFrZSBhcmd1bWVudCBieSB2YWx1
ZSBpbnN0ZWFkIG9mIHJlZmVyZW5jZS4KKworICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuaDogUmVt
b3ZlZCBtYW55IHVubmVlZGVkIGluY2x1ZGVzLiBSZW1vdmVkIFdURl9FWFBPUlRfUFJJVkFURQor
ICAgICAgICBmcm9tIHRoZSBjbGFzcyBiZWNhdXNlIGl0J3Mgbm90IGNvbXBhdGlibGUgd2l0aCBp
bmxpbmVkIGZ1bmN0aW9ucyBhY2NvcmRpbmcgdG8KKyAgICAgICAgdGhlIHN0eWxlIGNoZWNrZXIg
c2NyaXB0LCBpbnN0ZWFkIGV4cG9ydGluZyBpbmRpdmlkdWFsIGZ1bmN0aW9ucy4gVXNlIE9wdGlv
blNldAorICAgICAgICBmb3IgdGhlIGZsYWdzLiBDaGFuZ2VkIGZ1bmN0aW9ucyB0byB0YWtlIE1l
ZGlhVGltZSBieSB2YWx1ZSwgc2luY2UgaXQncyBqdXN0IGEKKyAgICAgICAgZmV3IHNjYWxhcnMs
IG5vIHNpZ25pZmljYW50IGNvc3QgdG8gY29weWluZyBpdCwgYW5kIHBhc3NpbmcgYnkgdmFsdWUg
bWVhbnMgdGhlCisgICAgICAgIHdob2xlIHRoaW5nIG1pZ2h0IGVuZCB1cCBpbiByZWdpc3RlcnMg
c2luY2Ugd2Ugd29uJ3QgbmVlZCBhIHBvaW50ZXIgdG8gaXQgdG8KKyAgICAgICAgcGFzcyBhcyB0
aGUgcmVmZXJlbmNlLiBNYWRlIHRoZSB2YXJpb3VzIHNwZWNpYWwgdGltZXMgcmV0dXJuIGNvbnN0
ZXhwciB2YWx1ZXMsCisgICAgICAgIHdoaWNoIHdpbGwgY29tcGlsZSB0aGUgYXBwcm9wcmlhdGUg
Yml0IHBhdHRlcm4gd2l0aG91dCBhbnkgY29tcHV0YXRpb24gbmVlZGVkLgorICAgICAgICBDaGFu
Z2VkIHRoZSB0aW1lVmFsdWUgYW5kIHRpbWVTY2FsZSBmdW5jdGlvbnMgdG8gcmV0dXJuIHRoZSBz
Y2FsYXJzLCBub3QgYQorICAgICAgICBjb25zdCByZWZlcmVuY2UuIFJlbmFtZWQgUm91bmRpbmdG
bGFncyB0byBSb3VuZGluZ01vZGUgc2luY2UgaXQncyBhIGJ1bmNoIG9mCisgICAgICAgIG11dHVh
bGx5IGV4Y2x1c2l2ZSByb3VuZGluZyBtb2Rlcywgbm90IGEgc2V0IG9mIGZsYWdzIHdlIGNhbiBj
b21iaW5lLiBSZW5hbWVkCisgICAgICAgIHRoZSBkYXRhIG1lbWJlcnMsIHNpbmNlIHRoZXkgZG9u
J3QgYWxsIG5lZWQgYSAidGltZSIgcHJlZml4IGluIGEgY2xhc3MgdGhhdCBpcworICAgICAgICBh
bHJlYWR5IG5hbWVkIE1lZGlhVGltZS4gVG9vayBzb21lIHVubmVlZGVkIGNvbnN0IG91dCBvZiBN
ZWRpYVRpbWVSYW5nZS4KKyAgICAgICAgQWRkZWQgdGhlIEVudW1UcmFpdHMgZm9yIHRoZSBmbGFn
cyBzbyB0aGV5IGNhbiBiZSBlbmNvZGVkIGFuZCBkZWNvZGVkLiBCZWZvcmUKKyAgICAgICAgd2Ug
d2VyZSBlbmNvZGluZyB0aGUgc2V0IG9mIGZsYWdzIGFzIGEgdWludDhfdCwgdGhpcyBpcyBiZXR0
ZXIuCisKKyAgICAgICAgKiB3dGYvU2Vjb25kcy5oOiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6U2Vj
b25kcyIgdG8gRm9yd2FyZC5oLgorCisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aDogSW5jbHVkZSBGb3J3YXJkLmggaW5zdGVhZCBvZiBXYWxsVGltZS5oIHNpbmNlCisgICAgICAg
IHRoaXMgZmlsZSBvbmx5IGRlZmluZXMgYSBmdW5jdGlvbiB3aXRoIGEgV2FsbFRpbWUgYXJndW1l
bnQgYW5kIGRvZXNuJ3QgbmVlZAorICAgICAgICB0byBwdWxsIHRoZSBlbnRpcmUgY2xhc3MgZGVm
aW5pdGlvbiBpbi4KKworICAgICAgICAqIHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjpwb3J0
QWxsb3dlZCk6IFVzZSBTb3J0ZWRBcnJheVNldC4KKworICAgICAgICAqIHd0Zi9XYWxsVGltZS5o
OiBNb3ZlZCB0aGUgInVzaW5nIFdURjo6V2FsbFRpbWUiIHRvIEZvcndhcmQuaC4KKworICAgICAg
ICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaDogSW5jbHVkZSA8b3B0aW9uYWw+
IGluc3RlYWQgb2YgRm9yd2FyZC5oLgorICAgICAgICBUaGUgZm9ybWVyIGlzIGFsbCB0aGF0J3Mg
bmVlZGVkLgorCisgICAgICAgICogd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcDogQWRkZWQg
YW4gaW5jbHVkZSBvZiBXYWxsVGltZS5oIHNpbmNlCisgICAgICAgIFRocmVhZGluZ1ByaW1pdGl2
ZXMuaCBubyBsb25nZXIgcHVsbHMgaXQgaW4uCisKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWdu
YWxzLmg6IEFkZGVkIGFuIGluY2x1ZGUgb2YgPG9wdGlvbmFsPiBzaW5jZSBMb2NrLmggbm8KKyAg
ICAgICAgbG9uZ2VyIHB1bGxzIGl0IGluIGJ5IGluY2x1ZGluZyBTZWNvbmRzLmguCisKKyAgICAg
ICAgKiB3dGYvd2luL1RocmVhZGluZ1dpbi5jcHA6IEFkZGVkIGluY2x1ZGUgb2YgV2FsbFRpbWUu
aCBzaW5jZQorICAgICAgICBUaHJlYWRpbmdQcmltaXRpdmVzLmggbm8gbG9uZ2VyIHB1bGxzIGl0
IGluLgorCisKIDIwMjItMDEtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbmFtZSBWZWN0b3IgYW5kIEZpeGVkVmVjdG9yOjpmaW5kTWF0Y2hpbmcgdG8gZmlu
ZElmIHRvIG1hdGNoIHN0bCBuYW1pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThmMjJkZTA4ODVkNmI0ODk3
NWZmNWMyMDcxYjcwZGNmNzcxYmZlOS4uMjZmNGY2NjViYjMzZDJjODBkMjhlMjliOTZmMWUxNjhm
NGY4NGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMi0wMS0yNSAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5
IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhLmg6IEFkZGVkIGluY2x1ZGUgb2YKKyAgICAgICAgPG9wdGlvbmFs
PiBzaW5jZSBub3RoaW5nIHB1bGxzIGl0IGluLgorCisgICAgICAgICogYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0
ZWQgc2luY2UgVGFiU2l6ZSBhbmQgTGVuZ3RoUG9pbnQgYXJlIGJvdGggbm93CisgICAgICAgIHN0
cnVjdHVyZXMsIGFuZCBoYXZlIHB1YmxpYyBkYXRhIG1lbWJlcnMgcmF0aGVyIHRoYW4gZ2V0dGVy
IGZ1bmN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0ZvckJsZW5kaW5nKTogIFVwZGF0
ZWQgdG8gcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAgICAgIGEgbmV2ZXItbnVs
bCBwb2ludGVyIGFuZCBmb3IgY2hhbmdlcyB0byBMZW5ndGhQb2ludC4KKworICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVGb3JQb3NpdGlvbik6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUu
CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvclBvc2l0aW9uT3JBdXRvKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNv
bnRlbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZSk6IFVwZGF0ZWQKKyAgICAgICAgc2luY2Ug
VGFiU2l6ZSBpcyBhIHN0cnVjdHVyZS4KKworICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRGb3JMZW5ndGhQb2ludCk6IFVwZGF0ZWQgc2lu
Y2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpmbG9hdFBv
aW50Rm9yTGVuZ3RoUG9pbnQpOiBEaXR0by4KKworICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3Bs
YXlTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6U3R5bGU6OnRhYlNpemUgY29u
c3QpOiBQYXNzIFRhYlNpemUgYnkgdmFsdWUgaW5zdGVhZAorICAgICAgICBvZiBieSByZWZlcmVu
Y2UuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNQ
b3RlbnRpYWxDdXN0b21FbGVtZW50TmFtZUNoYXJhY3Rlcik6IFVzZSBTb3J0ZWRBcnJheVNldC4K
KyAgICAgICAgSXQgZG9lcyB0aGUgc29ydGVkIGNoZWNrIGF0IGNvbXBpbGUgdGltZSBpbnN0ZWFk
IG9mIGF0IHJ1bnRpbWUgaW4gZGVidWcKKyAgICAgICAgYnVpbGRzLCBhbmQgYWxzbyBzZWxlY3Rz
IGxpbmVhciBzZWFyY2ggaWYgaXQncyBmYXN0ZXIgdGhhbiBiaW5hcnkgc2VhcmNoLgorCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaDogQWRkZWQgaW5jbHVkZSBv
ZiBXYWxsVGltZS5oLCBubworICAgICAgICBsb25nZXIgcHVsbGVkIGluIGJ5IFRocmVhZGluZy5o
LgorCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlcmF0b3I8PCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5oOiBDaGFuZ2VkIExlbmd0aFBvaW50
IHRvIGJlIGEgdHJ1ZSBzdHJ1Y3R1cmUKKyAgICAgICAgd2l0aCBwdWJsaWMgZGF0YSBtZW1iZXJz
LiBUaGUgb2xkIG9uZSB3YXMsIHN0cmFuZ2VseSwgYSBzdHJ1Y3QsIGJ1dAorICAgICAgICB3aXRo
IHByaXZhdGUgZGF0YS4gUmVtb3ZlZCB0aGUgY29uc3RydWN0b3JzLCBnZXR0ZXJzLCBhbmQgc2V0
dGVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOiBBdm9pZCBhIHdhcm5pbmcg
YWJvdXQgbWl4ZWQgaW50ZWdlcgorICAgICAgICB0eXBlcyBieSB1c2luZyBhIGxvY2FsIHZhcmlh
YmxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp0YWJXaWR0aCBjb25zdCk6IFBhc3MgVGFiU2l6ZSBi
eSB2YWx1ZSBpbnN0ZWFkCisgICAgICAgIG9mIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaDogUmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMgZnJvbSB0
aGUgZGF0YQorICAgICAgICBtZW1iZXJzIHNpbmNlIFRhYlNpemUgaXMgYSBzdHJ1Y3QuIFJlbW92
ZWQgdGhlIGdldHRlcnMuIE1hcmtlZCB0aGUKKyAgICAgICAgb3BlcmF0b3IgYm9vbCBleHBsaWNp
dCBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGFjY2lkZW50YWxseSBwYXNzIHRoaXMKKyAgICAgICAg
dG8gc29tZXRoaW5nIHRha2luZyBhbiBpbnRlZ2VyIGFuZCBnZXR0aW5nIGEgMCBvciAxLiBBZGRl
ZCBhIFRleHRTdHJlYW0KKyAgICAgICAgb3ZlcmxvYWQgc28gd2UgY2FuIHN0cmVhbSB0aGlzIHdp
dGhvdXQgZXhwbGljaXRseSBwaWNraW5nIGl0IGFwYXJ0IGF0CisgICAgICAgIGVhY2ggY2FsbCBz
aXRlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFJ1bjo6dGFiU2l6ZSBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBp
bnN0ZWFkIG9mCisgICAgICAgIGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
dW46OnNldFRhYlNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQ
OVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBMZXZlbCk6IFVzZSBT
b3J0ZWRBcnJheVNldC4gU2FtZSByZWFzb25zIGFzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZFZQQ29sb3JQcmltYXJpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFs
aWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpp
c1ZhbGlkVlBNYXRyaXhDb2VmZmljaWVudHMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZP
YmpDLmg6CisgICAgICAgIFJlbW92ZWQgdGhlIG1fIHByZWZpeGVzIGZyb20gSW5iYW5kQ2hhcHRl
clRyYWNrUHJpdmF0ZUFWRk9iakM6OkNoYXB0ZXJEYXRhCisgICAgICAgIGRhdGEgbWVtYmVycyBz
aW5jZSBpdCdzIGEgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWV1
ZWRWaWRlb091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKTogRml4ZWQgYQor
ICAgICAgICBidWcgd2hlcmUgdGhpcyB1c2VkIGN1cnJlbnRJbWFnZVRpbWUgaW5zdGVhZCBvZiBu
ZXh0SW1hZ2UgdGltZSwgZXhwb3NlZAorICAgICAgICBiZWNhdXNlIHRoZSBjaGFuZ2VzIHRvIE1l
ZGlhVGltZSBtYWRlIGl0IGdpdmUgdXMgYW4gdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tE
YXRhOjpjb25zdW1lRnJhbWVEYXRhKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBwYXJzZU9wdXNQ
cml2YXRlRGF0YSBub3cgcmV0dXJucyBhbiBvcHRpb25hbCBpbnN0ZWFkIG9mCisgICAgICAgIHJl
dHVybmluZyBhIGJvb2xlYW4gYW5kIHVzaW5nIGFuIG91dCBhcmd1bWVudC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmg6IEFkZGVk
IGFuIGluY2x1ZGUKKyAgICAgICAgb2YgU2Vjb25kcy5oIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIHB1
bGxlZCBpbiBieSBvdGhlciBpbmNsdWRlcyBhbmQKKyAgICAgICAgdGhpcyBzdHJ1Y3R1cmUgaGFz
IGEgU2Vjb25kcyBkYXRhIG1lbWJlci4gQ2hhbmdlZCB0aGUgcGFyc2VPcHVzUHJpdmF0ZURhdGEK
KyAgICAgICAgZnVuY3Rpb24gdG8gcmV0dXJuIGFuIG9wdGlvbmFsIGluc3RlYWQgb2YgcmV0dXJu
aW5nIGEgYm9vbCBhbmQgdXNpbmcKKyAgICAgICAgYW4gb3V0IGFyZ3VtZW50IGZvciB3aGF0IGlz
IHBhcnNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0
aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHVzUHJpdmF0ZURhdGEp
OiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbTogUmVt
b3ZlZCB0aGUgY29uc3RydWN0b3JzIGZyb20KKyAgICAgICAgT1NCdWlsZEluZm8gYW5kIG1hZGUg
YWxsIGl0cyBvcGVyYXRvcnMgY29uc3RleHByLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuaDogQWRkZWQgYW4gaW5jbHVkZQorICAgICAg
ICBvZiBTZWNvbmRzLmgsIG5vIGxvbmdlciBwdWxsZWQgaW4gYnkgTG9jay5oLgorCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW06IEFkZGVkIGFu
IGluY2x1ZGUgb2YKKyAgICAgICAgV2FsbFRpbWUuaCwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBU
aHJlYWRpbmdQcmltaXRpdmVzLmguCisKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKTogUmV0dXJu
IGFuIG9wdGlvbmFsIGluc3RlYWQgb2YKKyAgICAgICAgYSB1bmlxdWVfcHRyLiBObyByZWFzb24g
dG8gdXNlIGEgaGVhcCBibG9jayBmb3IgdGhpcy4KKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5o
OiBVcGRhdGVkIHNpbmNlIEdyaWRBcmVhIGlzIG5vdyBhIHN0cnVjdCBhbmQgZm9yIHRoZSBhYm92
ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCBjb25zdCk6IFVwZGF0ZWQgc2luY2Ug
Q291bnRlckNvbnRlbnQKKyAgICAgICAgaXMgbm93IGEgc3RydWN0dXJlLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQgY29uc3Qp
OgorICAgICAgICBSZXR1cm4gYSBHcmlkQXJlYSBpbnN0ZWFkIG9mIGEgdW5pcXVlX3B0ci4gVGhl
IHJldHVybiB2YWx1ZSBpcyBuZXZlciBudWxsIGFuZAorICAgICAgICB0aGVyZSBpcyBubyBuZWVk
IHRvIHB1dCBpdCBvbiB0aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBs
YWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOiBVcGRhdGVkIGZvcgorICAg
ICAgICB0aGUgYWJvdmUgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxh
Y2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZCBjb25zdCk6IFVzZSBvcHRpb25hbCBpbnN0ZWFkCisg
ICAgICAgIG9mIHVuaXF1ZV9wdHIgZm9yIGEgbG9jYWwgdmFyaWFibGUgd2l0aCB0aGUgZW1wdHkg
Z3JpZCBhcmVhIGluIGl0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6IFVwZGF0
ZWQgc2luY2UgR3JpZEFyZWEgaXMgYSBzdHJ1Y3QgYW5kIGZvciB0aGUgYWJvdmUuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDogVXNlIGNvbnN0ZXhwci4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdCBjb25zdCk6IFVwZGF0ZWQg
c2luY2UKKyAgICAgICAgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1cmUuCisgICAgICAgICogcmVu
ZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hQYWlu
dGVyOjpkZWJ1Z1RleHRTaGFkb3cgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9UZXh0UGFpbnRTdHlsZS5oOiBTdHlsZSB0d2Vha3MuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQ291bnRlckNvbnRlbnQuaDogVHVybmVkIHRoZSBDb3VudGVyQ29udGVudCBjbGFzcyBp
bnRvIGEKKyAgICAgICAgc3RydWN0dXJlIHdpdGggcHVibGljIGRhdGEgbWVtYmVycy4KKworICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDogUmVtb3ZlZCB0aGUgRmlsbFNpemUg
Y29uc3RydWN0b3JzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6IE1h
ZGUgR3JpZFNwYW5UeXBlIGJlIGJhc2VkIG9uIGEgdWludDhfdC4KKyAgICAgICAgUmVvcmRlcmVk
IHRoZSBkYXRhIG1lbWJlcnMgb2YgR3JpZEFyZWEgdG8gYmUgcm93cyBmaXJzdCBhbmQgdGhlbiBj
b2x1bW5zCisgICAgICAgIHRvIGZvbGxvdyB0aGUgb3JkZXIgZnJvbSB0aGUgY29uc3RydWN0b3Ig
YW5kIGFsc28gdGhlIGNvbnZlbnRpb25hbAorICAgICAgICAieCBiZWZvcmUgeSIgb3JkZXJpbmcu
IFRoaXMgd2lsbCBhbHNvIGJlIGdvb2Qgc29tZSBkYXkgd2hlbiB3ZSBjYW4gdXNlIHRoZQorICAg
ICAgICBkZWZhdWx0IDw9PiBmcm9tIEMrKzIwLCB3aGljaCBkZXBlbmRzIG9uIGRhdGEgbWVtYmVy
IG9yZGVyaW5nLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaDogVHdl
YWtlZCBjb21tZW50cyBhbmQgbW92ZWQgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgb2YgbV9mbGV4
IGZyb20gdGhlIGNvbnN0cnVjdG9yIHRvIHRoZSBkYXRhIG1lbWJlciBkZWZpbml0aW9uLgorCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOiBVcGRhdGVk
IHNpbmNlCisgICAgICAgIExlbmd0aFBvaW50IGlzIGEgc3RydWN0dXJlLgorCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6IFVwZGF0ZWQgc2luY2UgQ291bnRlckNvbnRl
bnQgYW5kIExlbmdodFBvaW50CisgICAgICAgIGFyZSBzdHJ1Y3R1cmVzLCBhbmQgdG8gcGFzcyBU
YWJTaXplIGJ5IHZhbHVlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6IFNpbXBsaWZp
ZWQgY29uc3RydWN0b3Igc2luY2UgbV9sb2NhdGlvbgorICAgICAgICBkb2VzIG5vdCBoYXZlIHRv
IGJlIHNwbGl0IG91dCBpbnRvIHggYW5kIHkganVzdCB0byBjb3B5IGl0LgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRh
OjpTaGFkb3dEYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjp4IGNv
bnN0KTogVXBkYXRlZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBub3cgYSBzdHJ1Y3R1cmUuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjp5IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmg6IFJlbW92ZWQgdW5uZWVkZWQg
aW5jbHVkZXMuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZSk6
IFVwZGF0ZWQgc2luY2UgVGFiU2l6ZQorICAgICAgICBubyBsb25nZXIgaGFzIGNvbnN0cnVjdG9y
cy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9z
aXRpb24pOiBVcGRhdGVkIHNpbmNlIExlbmd0aFBvaW50CisgICAgICAgIG5vIGxvbmdlciBoYXMg
Y29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRQb3NpdGlvbk9yQXV0byk6IERpdHRvLgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVp
bGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5VGV4dE9yQm94U2hhZG93VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6IFVwZGF0ZWQgc2luY2UgQ291bnRl
ckNvbnRlbnQKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisKIDIwMjItMDEt
MjUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyODE0MTkpOiBpQ2xvdWQuY29tIE5vdGVzIHdlYiBhcHAgZm9udHMgcmVuZGVy
IGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwNWM1YWJmYTRhM2QyNzRiNGJjMmUw
NzhhMDY0MzJhNmVjMWMwODFmLi5kMzUwYjM3MzBkOWRjOThjMTBjMzNlOWU5MjAyNDViMjhiYzA2
MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMS0yNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBs
aWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9uL01lZGlh
VGltZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChQQUw6OkNNVGltZUhhc0ZsYWdzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFBBTDo6dG9NZWRpYVRpbWUpOiBUYWtlIENNVGltZSBieSB2YWx1ZS4g
QWxzbyBzaW1wbGlmaWVkIGxvZ2ljCisgICAgICAgIHRvIGp1c3QgY2hlY2sgb25lIGZsYWcgYXQg
YSB0aW1lLCB3aGljaCBtZWFucyB0aGUgQ01UaW1lSGFzRmxhZ3MKKyAgICAgICAgZnVuY3Rpb24g
aXNuJ3QgbmVlZGVkIGFueSBtb3JlLiBBbHNvIG5vdyB1c2VzIE9wdGlvblNldCBiZWNhdXNlCisg
ICAgICAgIHRoYXQgaXMgaG93IE1lZGlhVGltZSB3b3Jrcy4KKyAgICAgICAgKFBBTDo6dG9DTVRp
bWUpOiBUYWtlIE1lZGlhVGltZSBieSB2YWx1ZS4KKyAgICAgICAgKiBwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKIDIwMjIt
MDEtMjQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OKHIyODIzMjApOiBbQ29jb2FdIFVzZXItaW5zdGFsbGVkIGZvbnRzIGRvbid0
IHdvcmsgaW4gdGhlIEdQVSBQcm9jZXNzIChpbiBXS1dlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzOTYx
ODBjYmEyYzQ4NTFkNDRlYzdhZDYyZTM1MTAzZjA1Yzc4MzEuLjUyNmM2OWY0NDA2NGQ4ZGE2N2Mw
NzVhYjE0ZDg3NmM5NmNhNjFmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEt
MjUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGFu
ZCBzaW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxlIHN0cnVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTUwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oOgorICAgICAgICBBZGRl
ZCBhbiBpbmNsdWRlIG9mIDxvcHRpb25hbD4sIG5vIGxvbmdlciBwdWxsZWQgaW4gYnkgb3RoZXIg
aGVhZGVycy4KKwogMjAyMi0wMS0yNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZWdyZXNzaW9uIChyMjM1MjM2KTogTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIHNl
bmRzIG1lc3NhZ2VzIHRvIHdyb25nIFN0b3JhZ2VBcmVhTWFwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCmluZGV4IDVmNjYzYjJmZjVhNWUzY2Uw
OGNlNDEyOTViODBhOWI3MTA2Yzg5NzkuLjU0NmNhZDc2ZWM4OGQ3MTA1NDFlNmEzZTU5ODVmYTY0
OTVmYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBl
clNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNh
bXBsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1
ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9G
b3J3YXJkLmgKaW5kZXggM2NlNzYxMjQyYzMyZWMxNjk0YzY1YTc3ZTc0MGU5YzY2OTNjM2JiNC4u
MzY0ODcyYTIwMWM2ZGJlZmZjOTdlNGM5MGM2NTYxYmY1OWQwNzRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAt
MTQ5LDYgKzE0OSw3IEBAIHVzaW5nIFdURjo6UmVmUHRyOwogdXNpbmcgV1RGOjpSZXRhaW5QdHI7
CiB1c2luZyBXVEY6OlNIQTE7CiB1c2luZyBXVEY6OlNjb3BlZExhbWJkYTsKK3VzaW5nIFdURjo6
U2Vjb25kczsKIHVzaW5nIFdURjo6U3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1
c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CkBAIC0xNjEsNiArMTYyLDcgQEAgdXNpbmcgV1RGOjpU
ZXh0U3RyZWFtOwogdXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5n
IFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXYWxsVGltZTsKIHVzaW5nIFdURjo6V2Vha1B0cjsK
IAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVy
aW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2Nr
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXggNDJlNGFhYzBjOWE0YWFlNTllNzFiNWU5
MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQzMTY5MGM2NDJlYmI3YmI3NmVhNzY5OTA4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9jay5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG11
dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tBbGdvcml0
aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZXR5
QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAK
aW5kZXggMjI0ZTc3NDk1ZmI5MzgzNGY1OGY5Y2YzMjM0MzdmMzkxNjkzOTQyZi4uNTU1ZDljMTc5
YmI5ZmEwNmMwNDE5NWQ3ZTdlNWZhMzkwNTU4Y2QxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC03
Miw5ICs3Miw5IEBAIHN0YXRpYyBpbnQ2NF90IHNpZ251bShpbnQ2NF90IHZhbCkKIAogY29uc3Qg
dWludDMyX3QgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNjYWxlID0gMTAwMDAwMDAwMDsKIAotTWVk
aWFUaW1lOjpNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpCitjb25zdGV4cHIgTWVkaWFU
aW1lOjpNZWRpYVRpbWUoVXNlRG91YmxlRmxhZywgZG91YmxlIHZhbHVlKQorICAgIDogbV92YWx1
ZUFzRG91YmxlKHZhbHVlKQogewotICAgICp0aGlzID0gcmhzOwogfQogCiBNZWRpYVRpbWUgTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKQpAQCAtODQsNTcgKzg0LDUx
IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUp
CiAgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6c2ln
bmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5p
dGVUaW1lKCk7CiAKLSAgICBNZWRpYVRpbWUgdmFsdWUoMCwgRGVmYXVsdFRpbWVTY2FsZSwgVmFs
aWQgfCBEb3VibGVWYWx1ZSk7Ci0gICAgdmFsdWUubV90aW1lVmFsdWVBc0RvdWJsZSA9IGZsb2F0
VGltZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgZG91YmxlIHZhbHVlID0gZmxvYXRUaW1lOwor
ICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwgdWludDMyX3QgdGltZVNjYWxlKQor
TWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlLCB1aW50MzJf
dCB0aW1lU2NhbGUpCiB7Ci0gICAgaWYgKGZsb2F0VGltZSAhPSBmbG9hdFRpbWUpCisgICAgaWYg
KHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKLSAgICBp
ZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZs
b2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KTsKLSAgICBpZiAoZmxvYXRUaW1lID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAgaWYgKHZh
bHVlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHJldHVybiBwb3NpdGl2ZUluZmlu
aXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0
X3Q+OjptaW4oKSkKKyAgICBpZiAodmFsdWUgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgaWYg
KCF0aW1lU2NhbGUpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICBy
ZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3Np
dGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUgKGZsb2F0VGltZSAqIHRpbWVTY2FsZSA+
PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIHdoaWxlICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBt
YXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICB0aW1lU2NhbGUgLz0gMjsKLSAgICByZXR1cm4g
TWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZsb2F0VGltZSAqIHRpbWVTY2FsZSksIHRp
bWVTY2FsZSwgVmFsaWQpOworICAgIGludDY0X3Qgc2NhbGVkVmFsdWUgPSB2YWx1ZSAqIHRpbWVT
Y2FsZTsKKyAgICByZXR1cm4geyBzY2FsZWRWYWx1ZSwgdGltZVNjYWxlIH07CiB9CiAKLU1lZGlh
VGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUpCitNZWRp
YVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBp
ZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZG91Ymxl
VGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2
ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLQotICAgIE1lZGlhVGlt
ZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxpZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2
YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZG91YmxlVGltZTsKLSAgICByZXR1cm4gdmFsdWU7
CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpKQorICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0
KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgp
OworICAgIHJldHVybiB7IFVzZURvdWJsZSwgdmFsdWUgfTsKIH0KIAotTWVkaWFUaW1lIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSwgdWludDMyX3QgdGltZVNj
YWxlKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFsdWUs
IHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1l
KQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1l
KCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGltZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+
KQorICAgIGlmICh2YWx1ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICByZXR1cm4g
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZG91YmxlVGltZSA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlmICh2YWx1ZSA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChk
b3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGlt
ZSgpOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/IG5lZ2F0aXZlSW5maW5p
dGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUgKGRvdWJsZVRp
bWUgKiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKKyAgICB3aGlsZSAodmFsdWUg
KiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKICAgICAgICAgdGltZVNjYWxlIC89
IDI7Ci0gICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6OnJvdW5k
KGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUpKSwgdGltZVNjYWxlLCBWYWxpZCk7CisgICAgaW50NjRf
dCBzY2FsZWRWYWx1ZSA9IHN0ZDo6cm91bmQodmFsdWUgKiB0aW1lU2NhbGUpOworICAgIHJldHVy
biB7IHNjYWxlZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0KIAogZmxvYXQgTWVkaWFUaW1lOjp0b0Zs
b2F0KCkgY29uc3QKQEAgLTE0Niw4ICsxNDAsOSBAQCBmbG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQo
KSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIC1z
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKICAgICBpZiAoaGFzRG91Ymxl
VmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlQXNEb3VibGU7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbWVWYWx1ZSkgLyBtX3RpbWVTY2FsZTsKKyAgICAgICAg
cmV0dXJuIG1fdmFsdWVBc0RvdWJsZTsKKyAgICBmbG9hdCB2YWx1ZSA9IG1fdmFsdWU7CisgICAg
cmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAogZG91YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUo
KSBjb25zdApAQCAtMTU5LDE5ICsxNTQsMTIgQEAgZG91YmxlIE1lZGlhVGltZTo6dG9Eb3VibGUo
KSBjb25zdAogICAgIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIC1z
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiAgICAgaWYgKGhhc0RvdWJs
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZUFzRG91YmxlOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSAvIG1fdGltZVNjYWxlOworICAgICAg
ICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOworICAgIGRvdWJsZSB2YWx1ZSA9IG1fdmFsdWU7Cisg
ICAgcmV0dXJuIHZhbHVlIC8gbV9zY2FsZTsKIH0KIAotTWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9w
ZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocykKLXsKLSAgICBtX3RpbWVWYWx1ZSA9IHJocy5t
X3RpbWVWYWx1ZTsKLSAgICBtX3RpbWVTY2FsZSA9IHJocy5tX3RpbWVTY2FsZTsKLSAgICBtX3Rp
bWVGbGFncyA9IHJocy5tX3RpbWVGbGFnczsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLU1lZGlh
VGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK01l
ZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhNZWRpYVRpbWUgcmhzKSBjb25zdAogewogICAg
IGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJldHVybiBpbnZh
bGlkVGltZSgpOwpAQCAtMTkyLDcgKzE4MCw3IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJh
dG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiByaHMuaGFzRG91
YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSht
X3RpbWVWYWx1ZUFzRG91YmxlICsgcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOworICAgICAgICBy
ZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSArIHJocy5t
X3ZhbHVlQXNEb3VibGUpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwgcmhzLmhhc0Rv
dWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
dG9Eb3VibGUoKSArIHJocy50b0RvdWJsZSgpKTsKQEAgLTIwMSwxMyArMTg5LDEzIEBAIE1lZGlh
VGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAg
ICBNZWRpYVRpbWUgYiA9IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVTY2FsZTsKLSAg
ICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUoYS5tX3RpbWVTY2FsZSwgYi5tX3RpbWVTY2FsZSwg
Y29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQor
ICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZShhLm1fc2NhbGUsIGIubV9zY2FsZSwgY29tbW9u
VGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQogICAgICAg
ICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxlOwogICAgIGEuc2V0VGltZVNjYWxl
KGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsK
LSAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3Rp
bWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3ZhbHVlLCBiLm1fdmFsdWUsIGEu
bV92YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVTY2FsZSA9PSAxKQotICAgICAgICAg
ICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICByZXR1cm4gYS5tX3ZhbHVlID4gMCA/
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAgICAg
ICBjb21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGlt
ZVNjYWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKQEAgLTIx
NSw3ICsyMDMsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvcisoY29uc3QgTWVkaWFU
aW1lJiByaHMpIGNvbnN0CiAgICAgcmV0dXJuIGE7CiB9CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6
Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK01lZGlhVGltZSBNZWRpYVRp
bWU6Om9wZXJhdG9yLShNZWRpYVRpbWUgcmhzKSBjb25zdAogewogICAgIGlmIChyaHMuaXNJbnZh
bGlkKCkgfHwgaXNJbnZhbGlkKCkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwpAQCAt
MjM2LDcgKzIyNCw3IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yLShjb25zdCBNZWRp
YVRpbWUmIHJocykgY29uc3QKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7
CiAKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSAmJiByaHMuaGFzRG91YmxlVmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91
YmxlIC0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpOworICAgICAgICByZXR1cm4gTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJsZSAtIHJocy5tX3ZhbHVlQXNEb3VibGUp
OwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgfHwgcmhzLmhhc0RvdWJsZVZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUodG9Eb3VibGUoKSAtIHJo
cy50b0RvdWJsZSgpKTsKQEAgLTI0NSwxMyArMjMzLDEzIEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6
Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICBNZWRpYVRpbWUgYiA9
IHJoczsKIAogICAgIHVpbnQzMl90IGNvbW1vblRpbWVTY2FsZTsKLSAgICBpZiAoIWxlYXN0Q29t
bW9uTXVsdGlwbGUodGhpcy0+bV90aW1lU2NhbGUsIHJocy5tX3RpbWVTY2FsZSwgY29tbW9uVGlt
ZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgIGlmICgh
bGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3NjYWxlLCByaHMubV9zY2FsZSwgY29tbW9uVGlt
ZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQogICAgICAgICBj
b21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxlOwogICAgIGEuc2V0VGltZVNjYWxlKGNv
bW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKLSAg
ICB3aGlsZSAoIXNhZmVTdWIoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVW
YWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVTdWIoYS5tX3ZhbHVlLCBiLm1fdmFsdWUsIGEubV92
YWx1ZSkpIHsKICAgICAgICAgaWYgKGNvbW1vblRpbWVTY2FsZSA9PSAxKQotICAgICAgICAgICAg
cmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICAgICByZXR1cm4gYS5tX3ZhbHVlID4gMCA/IHBv
c2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAgICAgICBj
b21tb25UaW1lU2NhbGUgLz0gMjsKICAgICAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNj
YWxlKTsKICAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKQEAgLTI3NSw5
ICsyNjMsOSBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvci0oKSBjb25zdAogCiAgICAg
TWVkaWFUaW1lIG5lZ2F0aXZlVGltZSA9ICp0aGlzOwogICAgIGlmIChuZWdhdGl2ZVRpbWUuaGFz
RG91YmxlVmFsdWUoKSkKLSAgICAgICAgbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNEb3VibGUg
PSAtbmVnYXRpdmVUaW1lLm1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAgIG5lZ2F0aXZlVGlt
ZS5tX3ZhbHVlQXNEb3VibGUgPSAtbmVnYXRpdmVUaW1lLm1fdmFsdWVBc0RvdWJsZTsKICAgICBl
bHNlCi0gICAgICAgIG5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZSA9IC1uZWdhdGl2ZVRpbWUubV90
aW1lVmFsdWU7CisgICAgICAgIG5lZ2F0aXZlVGltZS5tX3ZhbHVlID0gLW5lZ2F0aXZlVGltZS5t
X3ZhbHVlOwogICAgIHJldHVybiBuZWdhdGl2ZVRpbWU7CiB9CiAKQEAgLTMwNywxNCArMjk1LDE0
IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKihpbnQzMl90IHJocykgY29uc3QKICAg
ICBNZWRpYVRpbWUgYSA9ICp0aGlzOwogCiAgICAgaWYgKGEuaGFzRG91YmxlVmFsdWUoKSkgewot
ICAgICAgICBhLm1fdGltZVZhbHVlQXNEb3VibGUgKj0gcmhzOworICAgICAgICBhLm1fdmFsdWVB
c0RvdWJsZSAqPSByaHM7CiAgICAgICAgIHJldHVybiBhOwogICAgIH0KIAotICAgIHdoaWxlICgh
c2FmZU11bHRpcGx5KGEubV90aW1lVmFsdWUsIHJocywgYS5tX3RpbWVWYWx1ZSkpIHsKLSAgICAg
ICAgaWYgKGEubV90aW1lU2NhbGUgPT0gMSkKLSAgICAgICAgICAgIHJldHVybiBzaWdudW0oYS5t
X3RpbWVWYWx1ZSkgPT0gc2lnbnVtKHJocykgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVn
YXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICAgICAgYS5zZXRUaW1lU2NhbGUoYS5tX3RpbWVTY2Fs
ZSAvIDIpOworICAgIHdoaWxlICghc2FmZU11bHRpcGx5KGEubV92YWx1ZSwgcmhzLCBhLm1fdmFs
dWUpKSB7CisgICAgICAgIGlmIChhLm1fc2NhbGUgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiBz
aWdudW0oYS5tX3ZhbHVlKSA9PSBzaWdudW0ocmhzKSA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkg
OiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICBhLnNldFRpbWVTY2FsZShhLm1fc2Nh
bGUgLyAyKTsKICAgICB9CiAKICAgICByZXR1cm4gYTsKQEAgLTMyMiwxNzYgKzMxMCwxMDkgQEAg
TWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IqKGludDMyX3QgcmhzKSBjb25zdAogCiBib29s
IE1lZGlhVGltZTo6b3BlcmF0b3IhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1fdGltZUZsYWdz
ID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAgICAgfHwgKG1fdGltZUZsYWdzID09IChW
YWxpZCB8IERvdWJsZVZhbHVlKSAmJiAhbV90aW1lVmFsdWVBc0RvdWJsZSkKLSAgICAgICAgfHwg
aXNJbnZhbGlkKCk7CisgICAgcmV0dXJuIGlzSW52YWxpZCgpIHx8IChoYXNEb3VibGVWYWx1ZSgp
ID8gIW1fdmFsdWVBc0RvdWJsZSA6ICFtX3ZhbHVlKTsKIH0KIAogTWVkaWFUaW1lOjpvcGVyYXRv
ciBib29sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIShtX3RpbWVGbGFncyA9PSBWYWxpZCAmJiAh
bV90aW1lVmFsdWUpCi0gICAgICAgICYmICEobV90aW1lRmxhZ3MgPT0gKFZhbGlkIHwgRG91Ymxl
VmFsdWUpICYmICFtX3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICAmJiAhaXNJbnZhbGlkKCk7
CisgICAgcmV0dXJuICEhKnRoaXM7CiB9CiAKLU1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzIE1l
ZGlhVGltZTo6Y29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFncyBvcmRlcmluZyhUIGEs
IFQgYikKIHsKLSAgICBhdXRvIGFuZEZsYWdzID0gbV90aW1lRmxhZ3MgJiByaHMubV90aW1lRmxh
Z3M7Ci0gICAgaWYgKGFuZEZsYWdzICYgKFBvc2l0aXZlSW5maW5pdGUgfCBOZWdhdGl2ZUluZmlu
aXRlIHwgSW5kZWZpbml0ZSkpCi0gICAgICAgIHJldHVybiBFcXVhbFRvOwotCi0gICAgYXV0byBv
ckZsYWdzID0gbV90aW1lRmxhZ3MgfCByaHMubV90aW1lRmxhZ3M7Ci0gICAgaWYgKCEob3JGbGFn
cyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICBpZiAoIShhbmRGbGFn
cyAmIFZhbGlkKSkKLSAgICAgICAgcmV0dXJuIGlzSW52YWxpZCgpID8gR3JlYXRlclRoYW4gOiBM
ZXNzVGhhbjsKLQotICAgIGlmIChvckZsYWdzICYgTmVnYXRpdmVJbmZpbml0ZSkKLSAgICAgICAg
cmV0dXJuIGlzTmVnYXRpdmVJbmZpbml0ZSgpID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLQot
ICAgIGlmIChvckZsYWdzICYgUG9zaXRpdmVJbmZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGlzUG9z
aXRpdmVJbmZpbml0ZSgpID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChvckZs
YWdzICYgSW5kZWZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGlzSW5kZWZpbml0ZSgpID8gR3JlYXRl
clRoYW4gOiBMZXNzVGhhbjsKLQotICAgIGlmIChhbmRGbGFncyAmIERvdWJsZVZhbHVlKSB7Ci0g
ICAgICAgIGlmIChtX3RpbWVWYWx1ZUFzRG91YmxlID09IHJocy5tX3RpbWVWYWx1ZUFzRG91Ymxl
KQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICAgICAgcmV0dXJuIG1fdGltZVZh
bHVlQXNEb3VibGUgPCByaHMubV90aW1lVmFsdWVBc0RvdWJsZSA/IExlc3NUaGFuIDogR3JlYXRl
clRoYW47Ci0gICAgfQotCi0gICAgaWYgKG9yRmxhZ3MgJiBEb3VibGVWYWx1ZSkgewotICAgICAg
ICBkb3VibGUgYSA9IHRvRG91YmxlKCk7Ci0gICAgICAgIGRvdWJsZSBiID0gcmhzLnRvRG91Ymxl
KCk7Ci0gICAgICAgIGlmIChhID4gYikKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsK
LSAgICAgICAgaWYgKGEgPCBiKQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotICAgICAg
ICByZXR1cm4gRXF1YWxUbzsKLSAgICB9Ci0KLSAgICBpZiAoKG1fdGltZVZhbHVlIDwgMCkgIT0g
KHJocy5tX3RpbWVWYWx1ZSA8IDApKQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWUgPCAwID8g
TGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKKyAgICByZXR1cm4gYSA8IGIgPyBNZWRpYVRpbWU6OkNv
bXBhcmlzb25GbGFnczo6TGVzc1RoYW4gOiBiIDwgYSA/IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZs
YWdzOjpHcmVhdGVyVGhhbiA6IE1lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzOjpFcXVhbFRvOwor
fQogCi0gICAgaWYgKCFtX3RpbWVWYWx1ZSAmJiAhcmhzLm1fdGltZVZhbHVlKQotICAgICAgICBy
ZXR1cm4gRXF1YWxUbzsKK01lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzIG9yZGVyaW5nKE1lZGlh
VGltZSBhLCBNZWRpYVRpbWUgYikKK3sKKyAgICBhdXRvIG9yZGVyaW5nQ2xhc3MgPSBbXShNZWRp
YVRpbWUgdGltZSkgeworICAgICAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAg
ICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHRpbWUuaXNJbmRlZmluaXRlKCkpCisg
ICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKHRpbWUuaXNQb3NpdGl2ZUluZmluaXRl
KCkpCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgaWYgKHRpbWUuaXNJbnZhbGlkKCkp
CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfTsKKyAgICBh
dXRvIGFDbGFzcyA9IG9yZGVyaW5nQ2xhc3MoYSk7CisgICAgYXV0byBiQ2xhc3MgPSBvcmRlcmlu
Z0NsYXNzKGIpOworICAgIGlmIChhQ2xhc3MgIT0gYkNsYXNzKQorICAgICAgICByZXR1cm4gb3Jk
ZXJpbmcoYUNsYXNzLCBiQ2xhc3MpOwogCi0gICAgaWYgKG1fdGltZVNjYWxlID09IHJocy5tX3Rp
bWVTY2FsZSkgewotICAgICAgICBpZiAobV90aW1lVmFsdWUgPT0gcmhzLm1fdGltZVZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8
IHJocy5tX3RpbWVWYWx1ZSA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47Ci0gICAgfQorICAgIGlm
IChhLmhhc0RvdWJsZVZhbHVlKCkgfHwgYi5oYXNEb3VibGVWYWx1ZSgpKQorICAgICAgICByZXR1
cm4gb3JkZXJpbmcoYS50b0RvdWJsZSgpLCBiLnRvRG91YmxlKCkpOwogCi0gICAgaWYgKG1fdGlt
ZVZhbHVlID09IHJocy5tX3RpbWVWYWx1ZSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVNjYWxlIDwg
cmhzLm1fdGltZVNjYWxlID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKKyAgICBpZiAoKGEubV92
YWx1ZSA8IDApICE9IChiLm1fdmFsdWUgPCAwKSB8fCAhYS5tX3ZhbHVlIHx8ICFiLm1fdmFsdWUg
fHwgYS5tX3NjYWxlID09IGIubV9zY2FsZSkKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGEubV92
YWx1ZSwgYi5tX3ZhbHVlKTsKIAotICAgIGlmIChtX3RpbWVWYWx1ZSA+PSAwKSB7Ci0gICAgICAg
IGlmIChtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5t
X3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKyAgICBpZiAoYS5tX3Zh
bHVlID09IGIubV92YWx1ZSkKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGIubV9zY2FsZSwgYS5t
X3NjYWxlKTsKIAotICAgICAgICBpZiAobV90aW1lVmFsdWUgPiByaHMubV90aW1lVmFsdWUgJiYg
bV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gR3JlYXRl
clRoYW47CisgICAgaWYgKGEubV92YWx1ZSA+PSAwKSB7CisgICAgICAgIGlmIChhLm1fdmFsdWUg
PCBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlID4gYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6TGVzc1RoYW47CisgICAgICAgIGlmIChhLm1fdmFsdWUgPiBiLm1fdmFsdWUg
JiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6
R3JlYXRlclRoYW47CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlIDwgcmhz
Lm1fdGltZVZhbHVlICYmIG1fdGltZVNjYWxlIDwgcmhzLm1fdGltZVNjYWxlKQotICAgICAgICAg
ICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA+IHJocy5tX3Rp
bWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJl
dHVybiBHcmVhdGVyVGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA8IGIubV92YWx1ZSAmJiBh
Lm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpMZXNz
VGhhbjsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPiBi
Lm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpHcmVhdGVyVGhhbjsKICAg
ICB9CiAKLSAgICBpbnQ2NF90IGxoc0ZhY3RvcjsKLSAgICBpbnQ2NF90IHJoc0ZhY3RvcjsKLSAg
ICBpZiAoc2FmZU11bHRpcGx5KG1fdGltZVZhbHVlLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihyaHMu
bV90aW1lU2NhbGUpLCBsaHNGYWN0b3IpCi0gICAgICAgICYmIHNhZmVNdWx0aXBseShyaHMubV90
aW1lVmFsdWUsIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fdGltZVNjYWxlKSwgcmhzRmFjdG9yKSkg
ewotICAgICAgICBpZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgICAgIHJldHVy
biBFcXVhbFRvOwotICAgICAgICByZXR1cm4gbGhzRmFjdG9yIDwgcmhzRmFjdG9yID8gTGVzc1Ro
YW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9CisgICAgaW50NjRfdCBhUHJvZHVjdDsKKyAgICBpbnQ2
NF90IGJQcm9kdWN0OworICAgIGludDY0X3QgYVRpbWVTY2FsZSA9IGEubV9zY2FsZTsKKyAgICBp
bnQ2NF90IGJUaW1lU2NhbGUgPSBiLm1fc2NhbGU7CisgICAgaWYgKHNhZmVNdWx0aXBseShhLm1f
dmFsdWUsIGJUaW1lU2NhbGUsIGFQcm9kdWN0KSAmJiBzYWZlTXVsdGlwbHkoYi5tX3ZhbHVlLCBh
VGltZVNjYWxlLCBiUHJvZHVjdCkpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhhUHJvZHVjdCwg
YlByb2R1Y3QpOworCisgICAgYXV0byBhUXVvdGllbnQgPSBhLm1fdmFsdWUgLyBhLm1fc2NhbGU7
CisgICAgYXV0byBiUXVvdGllbnQgPSBiLm1fdmFsdWUgLyBiLm1fc2NhbGU7CisgICAgaWYgKGFR
dW90aWVudCAhPSBiUXVvdGllbnQpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhhUXVvdGllbnQs
IGJRdW90aWVudCk7CiAKLSAgICBpbnQ2NF90IHJoc1dob2xlID0gcmhzLm1fdGltZVZhbHVlIC8g
cmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzV2hvbGUgPSBtX3RpbWVWYWx1ZSAvIG1f
dGltZVNjYWxlOwotICAgIGlmIChsaHNXaG9sZSA+IHJoc1dob2xlKQotICAgICAgICByZXR1cm4g
R3JlYXRlclRoYW47Ci0gICAgaWYgKGxoc1dob2xlIDwgcmhzV2hvbGUpCi0gICAgICAgIHJldHVy
biBMZXNzVGhhbjsKLQotICAgIGludDY0X3QgcmhzUmVtYWluID0gcmhzLm1fdGltZVZhbHVlICUg
cmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzUmVtYWluID0gbV90aW1lVmFsdWUgJSBt
X3RpbWVTY2FsZTsKLSAgICBsaHNGYWN0b3IgPSBsaHNSZW1haW4gKiByaHMubV90aW1lU2NhbGU7
Ci0gICAgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90aW1lU2NhbGU7Ci0KLSAgICBpZiAobGhz
RmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgcmV0dXJu
IGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47CisgICAgYXV0
byBhUmVtYWluZGVyID0gYS5tX3ZhbHVlICUgYS5tX3NjYWxlICogYS5tX3NjYWxlOworICAgIGF1
dG8gYlJlbWFpbmRlciA9IGIubV92YWx1ZSAlIGIubV9zY2FsZSAqIGIubV9zY2FsZTsKKyAgICBy
ZXR1cm4gb3JkZXJpbmcoYVJlbWFpbmRlciwgYlJlbWFpbmRlcik7CiB9CiAKLWJvb2wgTWVkaWFU
aW1lOjppc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiBhLCBjb25zdCBNZWRpYVRpbWUmIGIpIGNv
bnN0Citib29sIE1lZGlhVGltZTo6aXNCZXR3ZWVuKE1lZGlhVGltZSBhLCBNZWRpYVRpbWUgYikg
Y29uc3QKIHsKICAgICBpZiAoYSA+IGIpCiAgICAgICAgIHJldHVybiAqdGhpcyA+IGIgJiYgKnRo
aXMgPCBhOwogICAgIHJldHVybiAqdGhpcyA+IGEgJiYgKnRoaXMgPCBiOwogfQogCi1jb25zdCBN
ZWRpYVRpbWUmIE1lZGlhVGltZTo6emVyb1RpbWUoKQotewotICAgIHN0YXRpYyBjb25zdCBNZWRp
YVRpbWUgdGltZSgwLCAxLCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1l
ZGlhVGltZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1l
ZGlhVGltZSB0aW1lKC0xLCAxLCAwKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVk
aWFUaW1lJiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMg
Y29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgUG9zaXRpdmVJbmZpbml0ZSB8IFZhbGlkKTsKLSAg
ICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6Om5lZ2F0aXZl
SW5maW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoLTEsIDEs
IE5lZ2F0aXZlSW5maW5pdGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0
IE1lZGlhVGltZSYgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpCi17Ci0gICAgc3RhdGljIGNv
bnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIEluZGVmaW5pdGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJu
IHRpbWU7Ci19Ci0KLU1lZGlhVGltZSBNZWRpYVRpbWU6OnRvVGltZVNjYWxlKHVpbnQzMl90IHRp
bWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykgY29uc3QKK01lZGlhVGltZSBNZWRpYVRpbWU6
OnRvVGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdNb2RlIG1vZGUpIGNvbnN0
CiB7CiAgICAgTWVkaWFUaW1lIHJlc3VsdCA9ICp0aGlzOwotICAgIHJlc3VsdC5zZXRUaW1lU2Nh
bGUodGltZVNjYWxlLCBmbGFncyk7CisgICAgcmVzdWx0LnNldFRpbWVTY2FsZSh0aW1lU2NhbGUs
IG1vZGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTWVkaWFUaW1lOjpzZXRUaW1l
U2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ0ZsYWdzIGZsYWdzKQordm9pZCBNZWRp
YVRpbWU6OnNldFRpbWVTY2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nTW9kZSBtb2Rl
KQogewogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgICp0aGlzID0gTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUsIHRpbWVTY2FsZSk7Cisg
ICAgICAgICp0aGlzID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdmFsdWVBc0RvdWJs
ZSwgdGltZVNjYWxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghdGltZVNj
YWxlKSB7Ci0gICAgICAgICp0aGlzID0gbV90aW1lVmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgICp0aGlzID0gbV92YWx1
ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh0aW1lU2NhbGUgPT0gbV90aW1lU2Nh
bGUpCisgICAgaWYgKHRpbWVTY2FsZSA9PSBtX3NjYWxlKQogICAgICAgICByZXR1cm47CiAKICAg
ICB0aW1lU2NhbGUgPSBzdGQ6Om1pbihNYXhpbXVtVGltZVNjYWxlLCB0aW1lU2NhbGUpOwogCi0g
ICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8SW50MTI4PihtX3RpbWVWYWx1ZSkgKiB0
aW1lU2NhbGU7Ci0gICAgaW50NjRfdCByZW1haW5kZXIgPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihu
ZXdWYWx1ZSAlIG1fdGltZVNjYWxlKTsKLSAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlIC8gbV90aW1l
U2NhbGU7CisgICAgSW50MTI4IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8SW50MTI4PihtX3ZhbHVl
KSAqIHRpbWVTY2FsZTsKKyAgICBpbnQ2NF90IHJlbWFpbmRlciA9IHN0YXRpY19jYXN0PGludDY0
X3Q+KG5ld1ZhbHVlICUgbV9zY2FsZSk7CisgICAgbmV3VmFsdWUgPSBuZXdWYWx1ZSAvIG1fc2Nh
bGU7CiAKICAgICBpZiAobmV3VmFsdWUgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
aW4oKSkgewogICAgICAgICAqdGhpcyA9IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CkBAIC01MDMs
NDIgKzQyNCw0MiBAQCB2b2lkIE1lZGlhVGltZTo6c2V0VGltZVNjYWxlKHVpbnQzMl90IHRpbWVT
Y2FsZSwgUm91bmRpbmdGbGFncyBmbGFncykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fdGltZVZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obmV3VmFsdWUpOwotICAgIHN0ZDo6
c3dhcChtX3RpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG5ld1ZhbHVlKTsKKyAgICBhdXRvIG9sZFRpbWVTY2FsZSA9IHN0ZDo6ZXhjaGFu
Z2UobV9zY2FsZSwgdGltZVNjYWxlKTsKIAogICAgIGlmICghcmVtYWluZGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3RpbWVGbGFncyB8PSBIYXNCZWVuUm91bmRlZDsKLSAgICBzd2l0Y2gg
KGZsYWdzKSB7Ci0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvOgotICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGxhYnMocmVtYWluZGVyKSkgKiAyID49IHN0
YXRpY19jYXN0PGludDY0X3Q+KHRpbWVTY2FsZSkpIHsKKyAgICBtX2ZsYWdzLmFkZChIYXNCZWVu
Um91bmRlZCk7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6Okhh
bGZBd2F5RnJvbVplcm86CisgICAgICAgIGlmIChzdGQ6OmFicyhyZW1haW5kZXIpICogMiA+PSBv
bGRUaW1lU2NhbGUpIHsKICAgICAgICAgICAgIC8vIHJvdW5kIHVwIChhd2F5IGZyb20gemVybykK
ICAgICAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgICAgIG1fdGltZVZh
bHVlLS07CisgICAgICAgICAgICAgICAgLS1tX3ZhbHVlOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIG1fdGltZVZhbHVlKys7CisgICAgICAgICAgICAgICAgKyttX3ZhbHVlOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dh
cmRaZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUb3dhcmRaZXJvOgogICAgICAgICBicmVh
azsKIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvOgorICAgIGNhc2UgUm91
bmRpbmdNb2RlOjpBd2F5RnJvbVplcm86CiAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQotICAg
ICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAgICAgICAgICAgIC0tbV92YWx1ZTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICsrbV92YWx1ZTsK
ICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZl
SW5maW5pdHk6CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6
CiAgICAgICAgIGlmIChyZW1haW5kZXIgPiAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsK
KyAgICAgICAgICAgICsrbV92YWx1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNh
c2UgUm91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToKKyAgICBjYXNlIFJvdW5k
aW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0eToKICAgICAgICAgaWYgKHJlbWFpbmRlciA8
IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZS0tOworICAgICAgICAgICAgLS1tX3ZhbHVlOwog
ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC01NDcsNyArNDY4LDcgQEAgdm9pZCBNZWRpYVRp
bWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoInsiKTsK
ICAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIG91dC5wcmludChtX3RpbWVWYWx1
ZSwgIi8iLCBtX3RpbWVTY2FsZSwgIiA9ICIpOworICAgICAgICBvdXQucHJpbnQobV92YWx1ZSwg
Ii8iLCBtX3NjYWxlLCAiID0gIik7CiAgICAgb3V0LnByaW50KHRvRG91YmxlKCksICJ9Iik7CiB9
CiAKQEAgLTU1Niw3ICs0NzcsNyBAQCBTdHJpbmcgTWVkaWFUaW1lOjp0b1N0cmluZygpIGNvbnN0
CiAgICAgY29uc3QgY2hhciogaW52YWxpZCA9IGlzSW52YWxpZCgpID8gIiwgaW52YWxpZCIgOiAi
IjsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
J3snLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKCd7
JywgbV90aW1lVmFsdWUsICcvJywgbV90aW1lU2NhbGUsICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZh
bGlkLCAnfScpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV92YWx1ZSwgJy8nLCBtX3Nj
YWxlLCAiID0gIiwgdG9Eb3VibGUoKSwgaW52YWxpZCwgJ30nKTsKIH0KIAogUmVmPEpTT046Ok9i
amVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdApAQCAtNTc5LDkgKzUwMCw5IEBA
IFJlZjxKU09OOjpPYmplY3Q+IE1lZGlhVGltZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKICAgICBl
bHNlCiAgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfcywgdG9Eb3VibGUoKSk7CiAK
LSAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9yIl9zLCBzdGF0aWNfY2FzdDxkb3VibGU+
KG1fdGltZVZhbHVlKSk7Ci0gICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRvciJfcywg
bV90aW1lU2NhbGUpOwotICAgIG9iamVjdC0+c2V0SW50ZWdlcigiZmxhZ3MiX3MsIG1fdGltZUZs
YWdzKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9yIl9zLCBtX3ZhbHVlKTsKKyAg
ICBvYmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9yIl9zLCBtX3NjYWxlKTsKKyAgICBvYmpl
Y3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX2ZsYWdzLnRvUmF3KCkpOwogCiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KQEAgLTU5MSwzMyArNTEyLDI4IEBAIFN0cmluZyBNZWRpYVRpbWU6OnRvSlNP
TlN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRvSlNPTk9iamVjdCgpLT50b0pTT05TdHJpbmco
KTsKIH0KIAotTWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocykKK01lZGlhVGltZSBh
YnMoTWVkaWFUaW1lIHRpbWUpCiB7Ci0gICAgaWYgKHJocy5pc0ludmFsaWQoKSkKLSAgICAgICAg
cmV0dXJuIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKLSAgICBpZiAocmhzLmlzTmVnYXRpdmVJ
bmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICBpZiAodGltZS5pc05l
Z2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZp
bml0ZVRpbWUoKTsKLSAgICBpZiAocmhzLmhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVy
biBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZmFicyhyaHMubV90aW1lVmFsdWVBc0RvdWJs
ZSkpOwotCi0gICAgTWVkaWFUaW1lIHZhbCA9IHJoczsKLSAgICB2YWwubV90aW1lVmFsdWUgPSBz
dGQ6OmFicyhyaHMubV90aW1lVmFsdWUpOwotICAgIHJldHVybiB2YWw7CisgICAgaWYgKHRpbWUu
aGFzRG91YmxlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERv
dWJsZShzdGQ6OmFicyh0aW1lLm1fdmFsdWVBc0RvdWJsZSkpOworICAgIE1lZGlhVGltZSByZXN1
bHQgPSB0aW1lOworICAgIHJlc3VsdC5tX3ZhbHVlID0gc3RkOjphYnMocmVzdWx0Lm1fdmFsdWUp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmluZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09O
U3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0KICAgICBvYmplY3QtPnNldE9iamVjdCgic3RhcnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVj
dCgpKTsKICAgICBvYmplY3QtPnNldE9iamVjdCgiZW5kIl9zLCBlbmQudG9KU09OT2JqZWN0KCkp
OwotCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiB9CiAKICNpZm5kZWYgTkRF
QlVHCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBN
ZWRpYVRpbWUmIHRpbWUpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVh
bSwgTWVkaWFUaW1lIHRpbWUpCiB7CiAgICAgcmV0dXJuIHN0cmVhbSA8PCB0aW1lLnRvSlNPTlN0
cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAppbmRleCA3MWFjZjMyOWViMzk4OTMzNTEyZmQ3ZjNmNThk
NjBiZWNmZjIzYzUwLi4wNjE0NzI1ZmRmN2ZlMjMwMGQ0OWM2ODA5OTNmZWMxMTFmOTk0MDIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9NZWRpYVRpbWUuaApAQCAtMzAsMjEgKzMwLDE2IEBACiAKICNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5j
bHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50U3RyZWFtOwogCi1jbGFzcyBX
VEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGZpbmFsIHsKK2NsYXNzIE1lZGlhVGltZSBmaW5h
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZW51bSB7Cisg
ICAgZW51bSBGbGFnIDogdWludDhfdCB7CiAgICAgICAgIFZhbGlkID0gMSA8PCAwLAogICAgICAg
ICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwKICAgICAgICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEg
PDwgMiwKQEAgLTUyLDY3ICs0Nyw2NSBAQCBwdWJsaWM6CiAgICAgICAgIEluZGVmaW5pdGUgPSAx
IDw8IDQsCiAgICAgICAgIERvdWJsZVZhbHVlID0gMSA8PCA1LAogICAgIH07Ci0KLSAgICBjb25z
dGV4cHIgTWVkaWFUaW1lKCk7Ci0gICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVl
LCB1aW50MzJfdCBzY2FsZSwgdWludDhfdCBmbGFncyA9IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUo
Y29uc3QgTWVkaWFUaW1lJiByaHMpOwotCi0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRo
RmxvYXQoZmxvYXQgZmxvYXRUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhG
bG9hdChmbG9hdCBmbG9hdFRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0gICAgc3RhdGljIE1l
ZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lKTsKLSAgICBzdGF0aWMg
TWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUsIHVpbnQzMl90IHRp
bWVTY2FsZSk7Ci0KLSAgICBmbG9hdCB0b0Zsb2F0KCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91
YmxlKCkgY29uc3Q7Ci0KLSAgICBNZWRpYVRpbWUmIG9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUm
IHJocyk7Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvcis9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7
IHJldHVybiAqdGhpcyA9ICp0aGlzICsgcmhzOyB9Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvci09
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzIC0gcmhzOyB9Ci0g
ICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAg
TWVkaWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVk
aWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0OwotICAgIE1lZGlhVGltZSBvcGVyYXRvciooaW50MzJf
dCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0
IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBMZXNzVGhhbjsgfQotICAgIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gR3Jl
YXRlclRoYW47IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNv
bnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0g
RXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29u
c3QgeyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87IH0KLSAgICBib29sIG9wZXJhdG9y
PD0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA8PSBF
cXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLSAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVmIGVudW0geworICAgIGNvbnN0ZXhwciBN
ZWRpYVRpbWUoKSA6IE1lZGlhVGltZSB7IGludDY0X3QgeyB9LCBEZWZhdWx0VGltZVNjYWxlIH0g
eyB9CisgICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2Fs
ZSwgT3B0aW9uU2V0PEZsYWc+ID0geyBWYWxpZCB9KTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCB2YWx1ZSk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZh
bHVlLCB1aW50MzJfdCBzY2FsZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZWRp
YVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFsdWUpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlLCB1aW50
MzJfdCBzY2FsZSk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9hdCgpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoKSBjb25zdDsKKwor
ICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShNZWRpYVRpbWUgcmhzKSB7IHJldHVybiAqdGhpcyA9
ICp0aGlzICsgcmhzOyB9CisgICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KE1lZGlhVGltZSByaHMp
IHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
TWVkaWFUaW1lIG9wZXJhdG9yKyhNZWRpYVRpbWUpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBNZWRpYVRpbWUgb3BlcmF0b3ItKE1lZGlhVGltZSkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvci0oKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90KSBjb25zdDsKKyAgICBib29sIG9wZXJh
dG9yPChNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gTGVzc1Ro
YW47IH0KKyAgICBib29sIG9wZXJhdG9yPihNZWRpYVRpbWUgcmhzKSBjb25zdCB7IHJldHVybiBj
b21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KKyAgICBib29sIG9wZXJhdG9yIT0oTWVkaWFU
aW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpICE9IEVxdWFsVG87IH0KKyAgICBi
b29sIG9wZXJhdG9yPT0oTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMp
ID09IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPj0oTWVkaWFUaW1lIHJocykgY29uc3Qg
eyByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87IH0KKyAgICBib29sIG9wZXJhdG9yPD0o
TWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpIDw9IEVxdWFsVG87IH0K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OworCisgICAgZW51
bSBDb21wYXJpc29uRmxhZ3MgewogICAgICAgICBMZXNzVGhhbiA9IC0xLAogICAgICAgICBFcXVh
bFRvID0gMCwKICAgICAgICAgR3JlYXRlclRoYW4gPSAxLAotICAgIH0gQ29tcGFyaXNvbkZsYWdz
OworICAgIH07CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWU6OkNvbXBh
cmlzb25GbGFncyBvcmRlcmluZyhNZWRpYVRpbWUsIE1lZGlhVGltZSk7CisgICAgQ29tcGFyaXNv
bkZsYWdzIGNvbXBhcmUoTWVkaWFUaW1lIG90aGVyKSBjb25zdCB7IHJldHVybiBvcmRlcmluZygq
dGhpcywgb3RoZXIpOyB9CiAKLSAgICBDb21wYXJpc29uRmxhZ3MgY29tcGFyZShjb25zdCBNZWRp
YVRpbWUmIHJocykgY29uc3Q7Ci0gICAgYm9vbCBpc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiwg
Y29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNC
ZXR3ZWVuKE1lZGlhVGltZSwgTWVkaWFUaW1lKSBjb25zdDsKIAotICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFsaWQ7IH0KKyAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFZhbGlkKTsgfQogICAgIGJvb2wgaXNJ
bnZhbGlkKCkgY29uc3QgeyByZXR1cm4gIWlzVmFsaWQoKTsgfQotICAgIGJvb2wgaGFzQmVlblJv
dW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEhhc0JlZW5Sb3VuZGVkOyB9Ci0g
ICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAm
IFBvc2l0aXZlSW5maW5pdGU7IH0KLSAgICBib29sIGlzTmVnYXRpdmVJbmZpbml0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgTmVnYXRpdmVJbmZpbml0ZTsgfQotICAgIGJvb2wgaXNJ
bmRlZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBJbmRlZmluaXRlOyB9Cisg
ICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMo
SGFzQmVlblJvdW5kZWQpOyB9CisgICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFBvc2l0aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBp
c05lZ2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKE5lZ2F0
aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBpc0luZGVmaW5pdGUoKSBjb25zdCB7IHJldHVybiBt
X2ZsYWdzLmNvbnRhaW5zKEluZGVmaW5pdGUpOyB9CiAgICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0
IHsgcmV0dXJuICFpc0ludmFsaWQoKSAmJiAhaXNJbmRlZmluaXRlKCkgJiYgIWlzUG9zaXRpdmVJ
bmZpbml0ZSgpICYmICFpc05lZ2F0aXZlSW5maW5pdGUoKTsgfQotICAgIGJvb2wgaGFzRG91Ymxl
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIERvdWJsZVZhbHVlOyB9Ci0gICAg
dWludDhfdCB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFnczsgfQorICAgIGJv
b2wgaGFzRG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKERvdWJs
ZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxGbGFnPiB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzOyB9CiAKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiB6ZXJvVGltZSgpOwot
ICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGludmFsaWRUaW1lKCk7Ci0gICAgc3RhdGljIGNv
bnN0IE1lZGlhVGltZSYgcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBzdGF0aWMgY29uc3Qg
TWVkaWFUaW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRp
YVRpbWUmIGluZGVmaW5pdGVUaW1lKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUg
emVyb1RpbWUoKSB7IHJldHVybiB7IDAsIDEsIFZhbGlkIH07IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIE1lZGlhVGltZSBpbnZhbGlkVGltZSgpIHsgcmV0dXJuIHsgLTEsIDEsIHsgfSB9OyB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJl
dHVybiB7IDAsIDEsIHsgUG9zaXRpdmVJbmZpbml0ZSwgVmFsaWQgfSB9OyB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBNZWRpYVRpbWUgbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVybiB7IC0x
LCAxLCB7IE5lZ2F0aXZlSW5maW5pdGUsIFZhbGlkIH0gfTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgTWVkaWFUaW1lIGluZGVmaW5pdGVUaW1lKCkgeyByZXR1cm4geyAwLCAxLCB7IEluZGVmaW5p
dGUsIFZhbGlkIH0gfTsgfQogCi0gICAgY29uc3QgaW50NjRfdCYgdGltZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV90aW1lVmFsdWU7IH0KLSAgICBjb25zdCB1aW50MzJfdCYgdGltZVNjYWxlKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKyAgICBpbnQ2NF90IHRpbWVWYWx1ZSgpIGNv
bnN0IHsgQVNTRVJUKCFoYXNEb3VibGVWYWx1ZSgpKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB1
aW50MzJfdCB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAKLSAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwotICAgIFJlZjxKU09OOjpPYmpl
Y3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRv
U3RyaW5nKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b0pTT05TdHJp
bmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPEpTT046Ok9iamVjdD4gdG9K
U09OT2JqZWN0KCkgY29uc3Q7CiAKICAgICAvLyBNYWtlIHRoZSBmb2xsb3dpbmcgY2FzdHMgZXJy
b3JzOgogICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0ID0gZGVsZXRlOwpAQCAtMTIwLDkzICsx
MTMsOTkgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIGludCgpIGNvbnN0ID0gZGVsZXRlOwogICAg
IE1lZGlhVGltZShpbnQpID0gZGVsZXRlOwogCi0gICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFU
RSBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKKyAgICBmcmllbmQgV1RGX0VY
UE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFUaW1lKTsKIAotICAgIHN0YXRpYyBjb25z
dCB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0
IHVpbnQzMl90IE1heGltdW1UaW1lU2NhbGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBNYXhpbXVtVGltZVNjYWxlOwogCi0gICAgZW51bSBjbGFzcyBS
b3VuZGluZ0ZsYWdzIHsKLSAgICAgICAgSGFsZkF3YXlGcm9tWmVybyA9IDAsCisgICAgZW51bSBj
bGFzcyBSb3VuZGluZ01vZGUgeworICAgICAgICBIYWxmQXdheUZyb21aZXJvLAogICAgICAgICBU
b3dhcmRaZXJvLAogICAgICAgICBBd2F5RnJvbVplcm8sCiAgICAgICAgIFRvd2FyZFBvc2l0aXZl
SW5maW5pdHksCiAgICAgICAgIFRvd2FyZE5lZ2F0aXZlSW5maW5pdHksCiAgICAgfTsKLQotICAg
IE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdGbGFncyA9IFJvdW5kaW5n
RmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBN
ZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3Qgc2NhbGUsIFJvdW5kaW5nTW9kZSA9IFJvdW5k
aW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
TWVkaWFUaW1lJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRUaW1lU2NhbGUodWludDMyX3Qs
IFJvdW5kaW5nRmxhZ3MgPSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKTsKKyAgICBl
bnVtIFVzZURvdWJsZUZsYWcgeyBVc2VEb3VibGUgfTsKKyAgICBjb25zdGV4cHIgTWVkaWFUaW1l
KFVzZURvdWJsZUZsYWcsIGRvdWJsZSB2YWx1ZSk7CisKKyAgICB2b2lkIHNldFRpbWVTY2FsZSh1
aW50MzJfdCwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKTsK
IAogICAgIHVuaW9uIHsKLSAgICAgICAgaW50NjRfdCBtX3RpbWVWYWx1ZTsKLSAgICAgICAgZG91
YmxlIG1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAgIGludDY0X3QgbV92YWx1ZTsKKyAgICAg
ICAgZG91YmxlIG1fdmFsdWVBc0RvdWJsZTsKICAgICB9OwotICAgIHVpbnQzMl90IG1fdGltZVNj
YWxlOwotICAgIHVpbnQ4X3QgbV90aW1lRmxhZ3M7CisgICAgdWludDMyX3QgbV9zY2FsZSB7IERl
ZmF1bHRUaW1lU2NhbGUgfTsKKyAgICBPcHRpb25TZXQ8RmxhZz4gbV9mbGFncyB7IFZhbGlkIH07
CiB9OwogCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoKQotICAgIDogbV90aW1lVmFs
dWUoMCkKLSAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRUaW1lU2NhbGUpCi0gICAgLCBtX3RpbWVG
bGFncyhWYWxpZCkKLXsKLX0KLQotY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFUaW1lKGludDY0
X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50OF90IGZsYWdzKQotICAgIDogbV90aW1lVmFs
dWUodmFsdWUpCi0gICAgLCBtX3RpbWVTY2FsZShzY2FsZSkKLSAgICAsIG1fdGltZUZsYWdzKGZs
YWdzKQotewotICAgIGlmIChzY2FsZSB8fCAhKGZsYWdzICYgVmFsaWQpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBw
b3NpdGl2ZUluZmluaXRlVGltZSgpOwotfQorV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBh
YnMoTWVkaWFUaW1lKTsKIAotaW5saW5lIE1lZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCBsaHMs
IGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiByaHMub3BlcmF0b3IqKGxocyk7IH0KLQot
V1RGX0VYUE9SVF9QUklWQVRFIGV4dGVybiBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYg
cmhzKTsKLQotc3RydWN0IFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWVSYW5nZSB7CitzdHJ1
Y3QgTWVkaWFUaW1lUmFuZ2UgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
IAotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCi0gICAgY29uc3QgTWVkaWFUaW1lIHN0
YXJ0OwotICAgIGNvbnN0IE1lZGlhVGltZSBlbmQ7CisgICAgTWVkaWFUaW1lIHN0YXJ0OworICAg
IE1lZGlhVGltZSBlbmQ7CiB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBNZWRp
YVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorY29uc3RleHByIE1lZGlhVGlt
ZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCBPcHRpb25TZXQ8Rmxh
Zz4gZmxhZ3MpCisgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICwgbV9zY2FsZShzY2FsZSkKKyAg
ICAsIG1fZmxhZ3MoZmxhZ3MpCit7CisgICAgaWYgKCEoc2NhbGUgfHwgIShmbGFncyAmIFZhbGlk
KSkpCisgICAgICAgICp0aGlzID0gdmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6
IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGNvbnN0IFQmIGEsIE1lZGlhVGltZSBiKQogewotICAgIGVu
Y29kZXIgPDwgbV90aW1lVmFsdWUgPDwgbV90aW1lU2NhbGUgPDwgbV90aW1lRmxhZ3M7CisgICAg
cmV0dXJuIGIgKiBhOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9vbCBNZWRpYVRp
bWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVRpbWUmIHRpbWUpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbmNvZGVyPiB2b2lkIE1lZGlhVGltZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lVmFsdWUpCi0g
ICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lU2NhbGUpCi0gICAgICAgICYmIGRl
Y29kZXIuZGVjb2RlKHRpbWUubV90aW1lRmxhZ3MpOworICAgIGVuY29kZXIgPDwgbV92YWx1ZSA8
PCBtX3NjYWxlIDw8IG1fZmxhZ3M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IGJv
b2wgTWVkaWFUaW1lOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFUaW1lJiB0aW1lKQor
eworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fdmFsdWUpCisgICAgICAgICYmIGRl
Y29kZXIuZGVjb2RlKHRpbWUubV9zY2FsZSkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGlt
ZS5tX2ZsYWdzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lPiB7Ci0gICAgc3RhdGlj
IFN0cmluZyB0b1N0cmluZyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpIHsgcmV0dXJuIHRpbWUudG9K
U09OU3RyaW5nKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKE1lZGlhVGltZSB0aW1l
KSB7IHJldHVybiB0aW1lLnRvSlNPTlN0cmluZygpOyB9CiB9OwogdGVtcGxhdGU8PiBzdHJ1Y3Qg
TG9nQXJndW1lbnQ8TWVkaWFUaW1lUmFuZ2U+IHsKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KGNvbnN0IE1lZGlhVGltZVJhbmdlJiByYW5nZSkgeyByZXR1cm4gcmFuZ2UudG9KU09OU3RyaW5n
KCk7IH0KIH07CiAKICNpZm5kZWYgTkRFQlVHCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTWVkaWFUaW1lJik7CitXVEZfRVhQT1JU
X1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgTWVkaWFUaW1lKTsK
ICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPE1lZGlhVGltZTo6RmxhZz4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIE1lZGlhVGltZTo6Rmxh
ZywKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpWYWxpZCwKKyAgICAgICAgTWVkaWFUaW1lOjpG
bGFnOjpIYXNCZWVuUm91bmRlZCwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpQb3NpdGl2ZUlu
ZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6Ok5lZ2F0aXZlSW5maW5pdGUsCisgICAg
ICAgIE1lZGlhVGltZTo6RmxhZzo6SW5kZWZpbml0ZSwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFn
OjpEb3VibGVWYWx1ZQorICAgID47Cit9OworCiB9CiAKIHVzaW5nIFdURjo6TWVkaWFUaW1lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dURi93dGYvU2Vj
b25kcy5oCmluZGV4IGQyODJkYmJmNzE1YmU3NDI3ODllYTEwZjFjY2IyOWFkMTQ1MzU2NGYuLjFh
Mjk2NGM2ZGVhMTU1ZDkzNmUwNGI1MmUzMzIzZjMyYWYxNmI0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM3Miw0ICszNzMsMyBAQCBpbmxpbmUgYm9vbCBp
c2Zpbml0ZShXVEY6OlNlY29uZHMgc2Vjb25kcykKIH0gLy8gbmFtZXNwYWNlIHN0ZAogCiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOjpzZWNvbmRzX2xpdGVyYWxzOwotdXNpbmcgV1RGOjpTZWNvbmRzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IGZkNTU5YjI0MmRkZmZkNWU4ZDhm
MTMzZWM0MTNiYTNhYjViNTI2NDcuLmU1YTNjYjYzNWVhZjFjYTg4OWRkMjIwOTc1MjVmY2Q0Mjhl
MzE4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTMyLDkgKzMyLDkg
QEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKICNpZiBP
UyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDQ0OGRkZWUyMTYwZWYx
OGNhNWUwNjYxMzkwZTU5OGQ1M2JjNTRkMmEuLjBjOGYzMzE1MGIxNTM0ODRmZDRjMWM4YWQwMDFh
NDlmYmJmYWFmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgpAQCAtOTIyLDcgKzkyMyw3IEBAIGJvb2wgcG9ydEFsbG93ZWQoY29uc3Qg
VVJMJiB1cmwpCiAKICAgICAvLyBUaGlzIGJsb2NrZWQgcG9ydCBsaXN0IG1hdGNoZXMgdGhlIHBv
cnQgYmxvY2tpbmcgdGhhdCBNb3ppbGxhIGltcGxlbWVudHMuCiAgICAgLy8gU2VlIGh0dHA6Ly93
d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbmV0bGliL1BvcnRCYW5uaW5nLmh0bWwgZm9yIG1vcmUg
aW5mb3JtYXRpb24uCi0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGJsb2NrZWRQb3J0TGlzdFtd
ID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7
CiAgICAgICAgIDEsICAgIC8vIHRjcG11eAogICAgICAgICA3LCAgICAvLyBlY2hvCiAgICAgICAg
IDksICAgIC8vIGRpc2NhcmQKQEAgLTEwMDYsMTAgKzEwMDcsMTAgQEAgYm9vbCBwb3J0QWxsb3dl
ZChjb25zdCBVUkwmIHVybCkKICAgICAgICAgNjY5NywgLy8gSVJDK1NTTCBbQXBwbGUgYWRkaXRp
b25dCiAgICAgICAgIDEwMDgwLCAvLyBhbWFuZGEKICAgICB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgU29ydGVkQXJyYXlTZXQgYmxvY2tlZFBvcnRTZXQgeyBibG9ja2VkUG9ydExpc3QgfTsKIAog
ICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93
IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlz
dCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0ZDo6YmluYXJ5X3Nl
YXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlz
dCksIHBvcnQudmFsdWUoKSkpCisgICAgaWYgKCFibG9ja2VkUG9ydFNldC5jb250YWlucygqcG9y
dCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIy
IGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvV2FsbFRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKaW5kZXggNTQzOGNjMDFi
NjFhYTlmNmM3YzQ1NmU1Zjg5MWU0NDY2ZjczM2JiYy4uMWNlOGQzNzU1NjFkMjliNTg5NjFiZTNm
Y2YxOTM5NDA0ZmU4ODk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV2FsbFRpbWUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9DbG9ja1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9HZW5lcmljVGltZU1peGluLmg+CiAjaW5jbHVkZSA8d3RmL0lu
dDEyOC5oPgogCkBAIC05OSw1ICsxMDAsMyBAQCBpbmxpbmUgYm9vbCBpc2Zpbml0ZShXVEY6Oldh
bGxUaW1lIHRpbWUpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIHN0ZAotCi11c2luZyBXVEY6OldhbGxU
aW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENv
ZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAppbmRl
eCBhZmMzM2YzOGQ0MjMzNWJkOWU2MTI2YTRhNzhhNTA3MTBkYjI2MDhhLi4yMDdmYTA0NDY5ZmI5
NDgzODc2OGU5ZjQxYTJhMzI4OTdmNWNiMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAKIG5hbWVz
cGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQ
T1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKaW5kZXgg
ZDkyNDQ5MGQxYjU3ZjNlZTA2ZWU1ZWFkOGEyZDNjMTFjMjBjYjVkMS4uNmQzNDBlNDZmMmIyODQ0
MGIxMTNlZDc3MDllYTM3MTAxYTgyZjg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9z
aXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGlu
Z1BPU0lYLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9X
VEZDb25maWcuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvV29y
ZExvY2suaD4KIAogI2lmIE9TKExJTlVYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhy
ZWFkcy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRleCA4
YjQwYzE0Yzg0MjNmZDRlY2JmNjM1MDZkNjBiZmYxYzBmZDg1NjBmLi45ZjE4NmY2MzU0ODQxYTc1
NWFiYzBkODllYzMzZjBiNWZlMGVmODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgT1MoVU5JWCkKIAorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2lu
Y2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHR1cGxlPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAppbmRleCBkYzI0ODlmZjg5ZThmOWY4
OTE0YmM4ZTNmYzI5NjZmNGRlZWU1NzRlLi5hOWY1OTUyNGFmYzVjYmM3MzZmYmM0ZTgxNmRjZGJl
ZGM3ZjkwYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcApAQCAtOTUsNiArOTUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KKyNpbmNsdWRl
IDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEuaAppbmRleCA5MjYyMjE3MGM4YWFkNjk4OWI4YTEyY2U0ODM1NmRjNjg3YmY2ZTM1Li5lMjJj
Yzk0NjZhN2FhMzdkMTc1Nzg3NTVlZTNkNjRiZDBmMmFmZThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9u
RGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPGNtYXRo
PgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2
Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcAppbmRleCAwNjU5ODQw
Njg5ZTRhYmI1MjIwZTViZGQ4MDUyM2Q3NDAyZjRhY2UyLi44ODhiZWYzMjM2ODJlYTIyOTk3ZWY2
NDA5YTBkNzFkODU1ZmZmZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2
Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAKQEAgLTMyLDM3
ICszMiwyOCBAQAogCiBuYW1lc3BhY2UgUEFMIHsKIAotc3RhdGljIGJvb2wgQ01UaW1lSGFzRmxh
Z3MoY29uc3QgQ01UaW1lJiBjbVRpbWUsIHVpbnQzMl90IGZsYWdzKQorTWVkaWFUaW1lIHRvTWVk
aWFUaW1lKENNVGltZSB0aW1lKQogewotICAgIHJldHVybiAoY21UaW1lLmZsYWdzICYgZmxhZ3Mp
ID09IGZsYWdzOworICAgIE9wdGlvblNldDxNZWRpYVRpbWU6OkZsYWc+IGZsYWdzOworICAgIGlm
ICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX1ZhbGlkKSB7CisgICAgICAgIGZsYWdzLmFkZChN
ZWRpYVRpbWU6OlZhbGlkKTsKKyAgICAgICAgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3Nf
UG9zaXRpdmVJbmZpbml0eSkKKyAgICAgICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6OlBvc2l0
aXZlSW5maW5pdGUpOworICAgICAgICBlbHNlIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdz
X05lZ2F0aXZlSW5maW5pdHkpCisgICAgICAgICAgICBmbGFncy5hZGQoTWVkaWFUaW1lOjpOZWdh
dGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFn
c19JbmRlZmluaXRlKQorICAgICAgICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6SW5kZWZpbml0
ZSk7CisgICAgfQorICAgIHJldHVybiBNZWRpYVRpbWUodGltZS52YWx1ZSwgdGltZS50aW1lc2Nh
bGUsIGZsYWdzKTsKIH0KIAotTWVkaWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0IENNVGltZSYgY21U
aW1lKQotewotICAgIHVpbnQzMl90IGZsYWdzID0gMDsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3Mo
Y21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6
OlZhbGlkOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxp
ZCB8IGtDTVRpbWVGbGFnc19IYXNCZWVuUm91bmRlZCkpCi0gICAgICAgIGZsYWdzIHw9IE1lZGlh
VGltZTo6SGFzQmVlblJvdW5kZWQ7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NN
VGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHkpKQotICAgICAg
ICBmbGFncyB8PSBNZWRpYVRpbWU6OlBvc2l0aXZlSW5maW5pdGU7Ci0gICAgaWYgKENNVGltZUhh
c0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX05lZ2F0aXZl
SW5maW5pdHkpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGU7
Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NN
VGltZUZsYWdzX0luZGVmaW5pdGUpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OkluZGVm
aW5pdGU7Ci0KLSAgICByZXR1cm4gTWVkaWFUaW1lKGNtVGltZS52YWx1ZSwgY21UaW1lLnRpbWVz
Y2FsZSwgZmxhZ3MpOwotfQotCi1DTVRpbWUgdG9DTVRpbWUoY29uc3QgTWVkaWFUaW1lJiBtZWRp
YVRpbWUpCitDTVRpbWUgdG9DTVRpbWUoTWVkaWFUaW1lIG1lZGlhVGltZSkKIHsKICAgICBDTVRp
bWUgdGltZTsKLQogICAgIGlmIChtZWRpYVRpbWUuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAg
dGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyhtZWRpYVRpbWUudG9Eb3VibGUoKSwgbWVkaWFU
aW1lLnRpbWVTY2FsZSgpKTsKICAgICBlbHNlCiAgICAgICAgIHRpbWUgPSBDTVRpbWVNYWtlKG1l
ZGlhVGltZS50aW1lVmFsdWUoKSwgbWVkaWFUaW1lLnRpbWVTY2FsZSgpKTsKLQogICAgIGlmICht
ZWRpYVRpbWUuaXNWYWxpZCgpKQogICAgICAgICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVGbGFnc19W
YWxpZDsKICAgICBpZiAobWVkaWFUaW1lLmhhc0JlZW5Sb3VuZGVkKCkpCkBAIC03MSw3ICs2Miw2
IEBAIENNVGltZSB0b0NNVGltZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkKICAgICAgICAg
dGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfUG9zaXRpdmVJbmZpbml0eTsKICAgICBpZiAobWVk
aWFUaW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAgICAgICB0aW1lLmZsYWdzIHw9IGtDTVRp
bWVGbGFnc19OZWdhdGl2ZUluZmluaXR5OwotCiAgICAgcmV0dXJuIHRpbWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1l
QVZGb3VuZGF0aW9uLmgKaW5kZXggYjNkYmUxN2FhOWJjMTI1MWRjZTJlYzhhZGVlN2NiODQ5NDc5
YmY3MC4uYTJiY2RhZTlmOGU5OWQwZjA0ZTNmM2MzZWQyMGEzZjM2YTI5MDZkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1l
QVZGb3VuZGF0aW9uLmgKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLVBB
TF9FWFBPUlQgQ01UaW1lIHRvQ01UaW1lKGNvbnN0IE1lZGlhVGltZSYpOwotUEFMX0VYUE9SVCBN
ZWRpYVRpbWUgdG9NZWRpYVRpbWUoY29uc3QgQ01UaW1lJik7CitQQUxfRVhQT1JUIENNVGltZSB0
b0NNVGltZShNZWRpYVRpbWUpOworUEFMX0VYUE9SVCBNZWRpYVRpbWUgdG9NZWRpYVRpbWUoQ01U
aW1lKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5
QW5pbWF0aW9uLmNwcAppbmRleCAwZTFhZDcyNDVmZTE2ZTFlOTZlM2RhMWNiNTg0YjlhNGE2ZDg5
ZjNiLi44NDQ2ZGI5ODU1MWUwYzUzODJhOTZmZjg0NzFmYmI2NzIzMTBjNGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTEx
OSwxMCArMTE5LDEwIEBAIHN0YXRpYyBpbmxpbmUgR2FwTGVuZ3RoIGJsZW5kRnVuYyhjb25zdCBH
YXBMZW5ndGgmIGZyb20sIGNvbnN0IEdhcExlbmd0aCYgdG8sIGNvCiAgICAgcmV0dXJuIGJsZW5k
KGZyb20ubGVuZ3RoKCksIHRvLmxlbmd0aCgpLCBjb250ZXh0LCBWYWx1ZVJhbmdlOjpOb25OZWdh
dGl2ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgVGFiU2l6ZSBibGVuZEZ1bmMoY29uc3QgVGFiU2l6
ZSYgZnJvbSwgY29uc3QgVGFiU2l6ZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250
ZXh0JiBjb250ZXh0KQorc3RhdGljIGlubGluZSBUYWJTaXplIGJsZW5kRnVuYyhUYWJTaXplIGZy
b20sIFRhYlNpemUgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KQogewotICAgIGF1dG8gYmxlbmRlZFZhbHVlID0gYmxlbmQoZnJvbS52YWx1ZSgpLCB0by52YWx1
ZSgpLCBjb250ZXh0KTsKLSAgICByZXR1cm4geyBibGVuZGVkVmFsdWUgPCAwID8gMCA6IGJsZW5k
ZWRWYWx1ZSwgZnJvbS5pc1NwYWNlcygpID8gU3BhY2VWYWx1ZVR5cGUgOiBMZW5ndGhWYWx1ZVR5
cGUgfTsKKyAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9IGJsZW5kKGZyb20udmFsdWUsIHRvLnZhbHVl
LCBjb250ZXh0KTsKKyAgICByZXR1cm4geyBibGVuZGVkVmFsdWUgPCAwID8gMCA6IGJsZW5kZWRW
YWx1ZSwgZnJvbS5pc1NwYWNlcyA/IFRhYlNpemU6OlNwYWNlcyA6IFRhYlNpemU6Okxlbmd0aCB9
OwogfQogCiBzdGF0aWMgaW5saW5lIExlbmd0aFNpemUgYmxlbmRGdW5jKGNvbnN0IExlbmd0aFNp
emUmIGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5n
Q29udGV4dCYgY29udGV4dCkKQEAgLTk3OCwxMCArOTc4LDkgQEAgcHJpdmF0ZToKICAgICAvLyBp
dCdzIG9ubHkgcG9zc2libGUgaWYgdGhleSdyZSBib3RoIG5vdCBhdXRvLgogICAgIGJvb2wgY2Fu
SW50ZXJwb2xhdGUoY29uc3QgUmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJlbmRlclN0eWxlJiB0
bywgQ29tcG9zaXRlT3BlcmF0aW9uKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgYm9vbCBm
cm9tSXNBdXRvID0gdmFsdWUoZnJvbSkueCgpLmlzQXV0bygpICYmIHZhbHVlKGZyb20pLnkoKS5p
c0F1dG8oKTsKLSAgICAgICAgYm9vbCB0b0lzQXV0byA9IHZhbHVlKHRvKS54KCkuaXNBdXRvKCkg
JiYgdmFsdWUodG8pLnkoKS5pc0F1dG8oKTsKLQotICAgICAgICByZXR1cm4gKCFmcm9tSXNBdXRv
ICYmICF0b0lzQXV0byk7IAorICAgICAgICBib29sIGZyb21Jc0F1dG8gPSB2YWx1ZShmcm9tKS54
LmlzQXV0bygpICYmIHZhbHVlKGZyb20pLnkuaXNBdXRvKCk7CisgICAgICAgIGJvb2wgdG9Jc0F1
dG8gPSB2YWx1ZSh0bykueC5pc0F1dG8oKSAmJiB2YWx1ZSh0bykueS5pc0F1dG8oKTsKKyAgICAg
ICAgcmV0dXJuICFmcm9tSXNBdXRvICYmICF0b0lzQXV0bzsKICAgICB9CiB9OwogCkBAIC0xMjky
LDIwICsxMjkxLDIwIEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IHNoYWRvd0xpc3RMZW5ndGgoY29u
c3QgU2hhZG93RGF0YSogc2hhZG93KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIGlu
bGluZSBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dGb3JCbGVuZGluZyhjb25zdCBTaGFkb3dEYXRh
KiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVyU2hhZG93KQorc3RhdGljIGlubGlu
ZSBjb25zdCBTaGFkb3dEYXRhJiBzaGFkb3dGb3JCbGVuZGluZyhjb25zdCBTaGFkb3dEYXRhKiBz
cmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVyU2hhZG93KQogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0U2hhZG93RGF0YShMZW5ndGhQb2ludChM
ZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVu
Z3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93
U3R5bGU6Ok5vcm1hbCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0YShMZW5n
dGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4
ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSwgU2hhZG93U3R5bGU6Okluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hh
ZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVu
Z3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0
aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFy
ZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0
SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4
ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIHRydWUs
IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hh
ZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZp
eGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQp
LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCBmYWxzZSwg
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFk
b3dEYXRhPiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBl
OjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZp
eGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCBmYWxz
ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
aGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludCB7IHsgTGVu
Z3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aChMZW5ndGhU
eXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3Jt
YWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQ
b2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExl
bmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRv
d1N0eWxlOjpJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogCiAgICAgaWYg
KHNyY1NoYWRvdykKLSAgICAgICAgcmV0dXJuIHNyY1NoYWRvdzsKKyAgICAgICAgcmV0dXJuICpz
cmNTaGFkb3c7CiAKICAgICBpZiAob3RoZXJTaGFkb3ctPnN0eWxlKCkgPT0gU2hhZG93U3R5bGU6
Okluc2V0KQotICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkg
PyAmZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZhdWx0SW5zZXRT
aGFkb3dEYXRhLmdldCgpOworICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94
U2hhZG93KCkgPyBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogZGVmYXVs
dEluc2V0U2hhZG93RGF0YS5nZXQoKTsKIAotICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJr
aXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZh
dWx0U2hhZG93RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94
U2hhZG93KCkgPyBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6IGRlZmF1bHRTaGFk
b3dEYXRhLmdldCgpOwogfQogCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJTaGFkb3cgZmluYWwgOiBw
dWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7CkBAIC0xNDI4LDExICsxNDI3LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIFNoYWRvd0RhdGEqIGxhc3RTaGFkb3cgPSBudWxscHRyOwog
CiAgICAgICAgIHdoaWxlIChzaGFkb3dBIHx8IHNoYWRvd0IpIHsKLSAgICAgICAgICAgIGNvbnN0
IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0EsIHNoYWRv
d0IpOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0U2hhZG93ID0gc2hhZG93Rm9y
QmxlbmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CisgICAgICAgICAgICBhdXRvJiBzcmNTaGFkb3cg
PSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dBLCBzaGFkb3dCKTsKKyAgICAgICAgICAgIGF1dG8m
IGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0IsIHNoYWRvd0EpOwogCi0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRvdyA9IGJsZW5k
RnVuYyhzcmNTaGFkb3csIGRzdFNoYWRvdywgY29udGV4dCk7Ci0gICAgICAgICAgICBTaGFkb3dE
YXRhKiBibGVuZGVkU2hhZG93UHRyID0gYmxlbmRlZFNoYWRvdy5nZXQoKTsKKyAgICAgICAgICAg
IGF1dG8gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYygmc3JjU2hhZG93LCAmZHN0U2hhZG93LCBj
b250ZXh0KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNoYWRvd1B0ciA9IGJsZW5kZWRTaGFk
b3cuZ2V0KCk7CiAKICAgICAgICAgICAgIGlmICghbGFzdFNoYWRvdykKICAgICAgICAgICAgICAg
ICBuZXdTaGFkb3dEYXRhID0gV1RGTW92ZShibGVuZGVkU2hhZG93KTsKQEAgLTE0NDEsOCArMTQ0
MCw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGxhc3RTaGFkb3cgPSBibGVuZGVkU2hhZG93
UHRyOwogCi0gICAgICAgICAgICBzaGFkb3dBID0gc2hhZG93QSA/IHNoYWRvd0EtPm5leHQoKSA6
IDA7Ci0gICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93QiA/IHNoYWRvd0ItPm5leHQoKSA6IDA7
CisgICAgICAgICAgICBzaGFkb3dBID0gc2hhZG93QSA/IHNoYWRvd0EtPm5leHQoKSA6IG51bGxw
dHI7CisgICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93QiA/IHNoYWRvd0ItPm5leHQoKSA6IG51
bGxwdHI7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3U2hhZG93RGF0YTsKQEAgLTE0
NzEsMTMgKzE0NzAsMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICBpbnQgbWF4TGVuZ3RoID0gc3Rk
OjptYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG1heExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBmcm9tU2hh
ZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IDA7Ci0gICAgICAgICAgICBj
b25zdCBTaGFkb3dEYXRhKiB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRvU2hhZG93c1tpXSA6
IDA7CisgICAgICAgICAgICBhdXRvIGZyb21TaGFkb3cgPSBpIDwgZnJvbUxlbmd0aCA/IGZyb21T
aGFkb3dzW2ldIDogbnVsbHB0cjsKKyAgICAgICAgICAgIGF1dG8gdG9TaGFkb3cgPSBpIDwgdG9M
ZW5ndGggPyB0b1NoYWRvd3NbaV0gOiBudWxscHRyOworCisgICAgICAgICAgICBhdXRvJiBzcmNT
aGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1NoYWRvdyk7CisgICAgICAg
ICAgICBhdXRvJiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyh0b1NoYWRvdywgZnJvbVNo
YWRvdyk7CiAKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRv
d0ZvckJsZW5kaW5nKGZyb21TaGFkb3csIHRvU2hhZG93KTsKLSAgICAgICAgICAgIGNvbnN0IFNo
YWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHRvU2hhZG93LCBmcm9tU2hh
ZG93KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYygmc3JjU2hh
ZG93LCAmZHN0U2hhZG93LCBjb250ZXh0KTsKIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoc3JjU2hhZG93LCBkc3RTaGFk
b3csIGNvbnRleHQpOwogICAgICAgICAgICAgLy8gSW5zZXJ0IGF0IHRoZSBzdGFydCBvZiB0aGUg
bGlzdCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIuCiAgICAgICAgICAgICBibGVuZGVkU2hhZG93LT5z
ZXROZXh0KFdURk1vdmUobmV3U2hhZG93RGF0YSkpOwogICAgICAgICAgICAgbmV3U2hhZG93RGF0
YSA9IFdURk1vdmUoYmxlbmRlZFNoYWRvdyk7CkBAIC0yMzQ4LDE4ICsyMzQ4LDE4IEBAIHByaXZh
dGU6CiAgICAgfQogfTsKIAotY2xhc3MgVGFiU2l6ZVByb3BlcnR5V3JhcHBlciBmaW5hbCA6IHB1
YmxpYyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgVGFiU2l6ZSY+IHsKK2NsYXNzIFRhYlNpemVQcm9w
ZXJ0eVdyYXBwZXIgZmluYWwgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyPFRhYlNpemU+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUYWJTaXplUHJvcGVydHlX
cmFwcGVyKCkKLSAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgVGFiU2l6ZSY+KENTU1By
b3BlcnR5VGFiU2l6ZSwgJlJlbmRlclN0eWxlOjp0YWJTaXplLCAmUmVuZGVyU3R5bGU6OnNldFRh
YlNpemUpCisgICAgICAgIDogUHJvcGVydHlXcmFwcGVyPFRhYlNpemU+KENTU1Byb3BlcnR5VGFi
U2l6ZSwgJlJlbmRlclN0eWxlOjp0YWJTaXplLCAmUmVuZGVyU3R5bGU6OnNldFRhYlNpemUpCiAg
ICAgewogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIGNhbkludGVycG9sYXRlKGNvbnN0IFJl
bmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHlsZSYgdG8sIENvbXBvc2l0ZU9wZXJhdGlv
bikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZShmcm9tKS5pc1NwYWNl
cygpID09IHZhbHVlKHRvKS5pc1NwYWNlcygpOworICAgICAgICByZXR1cm4gdmFsdWUoZnJvbSku
aXNTcGFjZXMgPT0gdmFsdWUodG8pLmlzU3BhY2VzOwogICAgIH0KIAogICAgIHZvaWQgYmxlbmQo
UmVuZGVyU3R5bGUmIGRlc3RpbmF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgZnJvbSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29udGV4dCYgY29udGV4
dCkgY29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMTU1NTdhYjIwMGQ2ZTE2MTY0MzRlMGE0ODI3MjhmZWJk
NWZlNjA5My4uZGZkMDQ1NGM0YmNjMmEwNzRhZWIzMDRmNzI3NTZiMTdiOGE0OWUyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTE1MzMsMTQgKzE1MzMsMTQgQEAgc3RhdGljIEVsZW1lbnQqIHN0eWxlRWxlbWVudEZvck5v
ZGUoTm9kZSogbm9kZSkKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yUG9zaXRpb24oY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMZW5ndGhQb2ludCYgcG9zaXRpb24pCiB7CiAg
ICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLngo
KSwgc3R5bGUpKTsKLSAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxl
bmd0aChwb3NpdGlvbi55KCksIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueCwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3NpdGlvbi55LCBzdHlsZSkpOwog
ICAgIHJldHVybiBsaXN0OwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclBvc2l0
aW9uT3JBdXRvKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGVuZ3RoUG9pbnQmIHBv
c2l0aW9uKQogewotICAgIGlmIChwb3NpdGlvbi54KCkuaXNBdXRvKCkgJiYgcG9zaXRpb24ueSgp
LmlzQXV0bygpKQorICAgIGlmIChwb3NpdGlvbi54LmlzQXV0bygpICYmIHBvc2l0aW9uLnkuaXNB
dXRvKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogCiAgICAgcmV0dXJuIHZhbHVlRm9yUG9zaXRp
b24oc3R5bGUsIHBvc2l0aW9uKTsKQEAgLTE5MzYsNyArMTkzNiw3IEBAIHN0YXRpYyBSZWY8Q1NT
VmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAg
ICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAg
IGZvciAoYXV0byogY29udGVudERhdGEgPSBzdHlsZS5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0
YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CiAgICAgICAgIGlmIChpczxD
b3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PENvdW50ZXJDb250ZW50RGF0YT4o
KmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRpZmllcigpLCBDU1NVbml0VHlwZTo6Q1NTX0NP
VU5URVJfTkFNRSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRl
cigpLmlkZW50aWZpZXIsIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CiAgICAgICAg
IGVsc2UgaWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCiAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5p
bWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAgICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+
KCpjb250ZW50RGF0YSkpCkBAIC0zMDI5LDcgKzMwMjksNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRl
clN0eQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZShzdHlsZS5jb2x1bW5XaWR0aCgpLCBzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlUYWJTaXplOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS50YWJTaXplKCkud2lkdGhJblBpeGVscygxLjApLCBzdHlsZS50YWJTaXplKCkuaXNT
cGFjZXMoKSA/IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSIDogQ1NTVW5pdFR5cGU6OkNTU19QWCk7
CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRhYlNp
emUoKS53aWR0aEluUGl4ZWxzKDEuMCksIHN0eWxlLnRhYlNpemUoKS5pc1NwYWNlcyA/IENTU1Vu
aXRUeXBlOjpDU1NfTlVNQkVSIDogQ1NTVW5pdFR5cGU6OkNTU19QWCk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlDdXJzb3I6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3Q7CiAgICAgICAgICAgICBhdXRvKiBjdXJzb3JzID0gc3R5bGUuY3Vyc29ycygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAppbmRleCBmNWJjOGNhOTZiOTBkNjA1NTBkY2E1
ODIxZTgzODU0OWE0YjJmN2VmLi5kNmExMmNiYjk2OTIyNzM4NTQyZjRlMDk3NDczZTdiOGVjN2Rl
NjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIExheW91dFNpemUgc2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVu
Z3RoLCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtCiAKIExheW91dFBvaW50IHBvaW50Rm9yTGVu
Z3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0aFBvaW50LCBjb25zdCBMYXlvdXRTaXpl
JiBtYXhpbXVtVmFsdWUpCiB7Ci0gICAgcmV0dXJuIHsgdmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9p
bnQueCgpLCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50
LnkoKSwgbWF4aW11bVZhbHVlLmhlaWdodCgpKSB9OworICAgIHJldHVybiB7IHZhbHVlRm9yTGVu
Z3RoKGxlbmd0aFBvaW50LngsIG1heGltdW1WYWx1ZS53aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgo
bGVuZ3RoUG9pbnQueSwgbWF4aW11bVZhbHVlLmhlaWdodCgpKSB9OwogfQogCiBGbG9hdFNpemUg
ZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBjb25z
dCBGbG9hdFNpemUmIGJveFNpemUpCkBAIC0xMzMsNyArMTMzLDcgQEAgRmxvYXRTaXplIGZsb2F0
U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxv
YXRTaXplJgogCiBGbG9hdFBvaW50IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChjb25zdCBMZW5n
dGhQb2ludCYgbGVuZ3RoUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKIHsKLSAgICBy
ZXR1cm4geyBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngoKSwgYm94U2l6ZS53aWR0
aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55KCksIGJveFNpemUuaGVpZ2h0
KCkpIH07CisgICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54LCBi
b3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LnksIGJveFNp
emUuaGVpZ2h0KCkpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKaW5kZXggN2VlMzBhM2UxMzEyOTRhM2Q1NWFj
ZWY0Y2FhMGE3MWMzZDEwYWQ1OC4uNmZlYzM3NDUwYWMwYWJmZWQwY2E4MDc1MzkwZWUyNjk4NGNh
YzBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKQEAgLTEw
MCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUoKSBjb25zdDsK
ICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSgpIGNvbnN0OwogCi0gICAgY29uc3QgVGFiU2l6
ZSYgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6ZTsgfQorICAgIFRhYlNpemUgdGFi
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6ZTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQg
c2V0dXBCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlclN0eWxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCBlYjE2NzhiMmU4NmJmNzVmMDNhNjZjYjdhYjEzYzA0MjI4ZjgxYTA1Li5iNjY1NjRj
MTYyZGE0YjEyZDFkMGUxYzg4OTY4YWI2OGIyNTEwNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTI3OCw2ICsyNzgsNyBAQAogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgor
I2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFj
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWZmZXIuaD4KQEAgLTEyMzAsMzIgKzEyMzEsMzggQEAgc3RydWN0IFVuaWNvZGVDb2RlUG9pbnRS
YW5nZSB7CiAgICAgVUNoYXIzMiBtYXhpbXVtOwogfTsKIAotI2lmIEFTU0VSVF9FTkFCTEVECi0K
LXN0YXRpYyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdl
JiBhLCBjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UmIGIpCitzdGF0aWMgY29uc3RleHByIGJv
b2wgb3BlcmF0b3I8KFVuaWNvZGVDb2RlUG9pbnRSYW5nZSBhLCBVbmljb2RlQ29kZVBvaW50UmFu
Z2UgYikKIHsKLSAgICBBU1NFUlQoYS5taW5pbXVtIDw9IGEubWF4aW11bSk7Ci0gICAgQVNTRVJU
KGIubWluaW11bSA8PSBiLm1heGltdW0pOworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09O
VEVYVChhLm1pbmltdW0gPD0gYS5tYXhpbXVtKTsKKyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBS
X0NPTlRFWFQoYi5taW5pbXVtIDw9IGIubWF4aW11bSk7CiAgICAgcmV0dXJuIGEubWF4aW11bSA8
IGIubWluaW11bTsKIH0KIAotI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECi0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBhLCBVQ2hhcjMy
IGIpCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFVuaWNvZGVDb2RlUG9pbnRSYW5n
ZSBhLCBVQ2hhcjMyIGIpCiB7Ci0gICAgQVNTRVJUKGEubWluaW11bSA8PSBhLm1heGltdW0pOwor
ICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChhLm1pbmltdW0gPD0gYS5tYXhpbXVt
KTsKICAgICByZXR1cm4gYS5tYXhpbXVtIDwgYjsKIH0KIAotc3RhdGljIGlubGluZSBib29sIG9w
ZXJhdG9yPChVQ2hhcjMyIGEsIGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSYgYikKK3N0YXRp
YyBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoVUNoYXIzMiBhLCBVbmljb2RlQ29kZVBvaW50UmFu
Z2UgYikKIHsKLSAgICBBU1NFUlQoYi5taW5pbXVtIDw9IGIubWF4aW11bSk7CisgICAgQVNTRVJU
X1VOREVSX0NPTlNURVhQUl9DT05URVhUKGIubWluaW11bSA8PSBiLm1heGltdW0pOwogICAgIHJl
dHVybiBhIDwgYi5taW5pbXVtOwogfQogCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShVbmljb2RlQ29kZVBvaW50UmFuZ2UgYSwgVUNoYXIzMiBiKQoreworICAgIHJldHVybiAhKGEg
PCBiKSAmJiAhKGIgPCBhKTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0o
VUNoYXIzMiBhLCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgYikKK3sKKyAgICByZXR1cm4gYiA9PSBh
OworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3RlbnRpYWxDdXN0b21FbGVtZW50TmFtZUNo
YXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKIHsKLSAgICBzdGF0aWMgY29uc3QgVW5pY29kZUNv
ZGVQb2ludFJhbmdlIHJhbmdlc1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgVW5pY29kZUNv
ZGVQb2ludFJhbmdlIHJhbmdlc1tdID0gewogICAgICAgICB7ICctJywgJy4nIH0sCiAgICAgICAg
IHsgJzAnLCAnOScgfSwKICAgICAgICAgeyAnXycsICdfJyB9LApAQCAtMTI3NCw5ICsxMjgxLDgg
QEAgc3RhdGljIGlubGluZSBib29sIGlzUG90ZW50aWFsQ3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0
ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgICAgIHsgMHhGREYwLCAweEZGRkQgfSwKICAgICAg
ICAgeyAweDEwMDAwLCAweEVGRkZGIH0sCiAgICAgfTsKLQotICAgIEFTU0VSVChzdGQ6OmlzX3Nv
cnRlZChzdGQ6OmJlZ2luKHJhbmdlcyksIHN0ZDo6ZW5kKHJhbmdlcykpKTsKLSAgICByZXR1cm4g
c3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4ocmFuZ2VzKSwgc3RkOjplbmQocmFuZ2VzKSwg
Y2hhcmFjdGVyKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHJh
bmdlcyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMoY2hhcmFjdGVyKTsKIH0KIAogQ3VzdG9t
RWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1l
bnROYW1lKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aFBvaW50LmNwcAppbmRleCA5YTM2NzU5NmRkMDI2OWQ1OWY2M2ViMGY2Yzg5ZTM0ZGQ4
MjE4MmQ5Li5iNWY0Y2MwNWUyNzY3YTE4YzY3M2QwOGUzNGNkMjIwNjljNTgxOTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgTGVuZ3RoUG9pbnQmIHNpemUpCiB7Ci0gICAgcmV0dXJuIHRzIDw8IHNpemUueCgpIDw8
ICIgIiA8PCBzaXplLnkoKTsKKyAgICByZXR1cm4gdHMgPDwgc2l6ZS54IDw8ICIgIiA8PCBzaXpl
Lnk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGhQb2ludC5oCmluZGV4IDgxMjA1YmIxM2RkYTUwMzNiMmM5MGZiZWEwNTMwYzJmNTZmOTkzNmIu
Ljk4YmRjY2EwNzFmOGMyMTliMmNiYTkwYmNiYzAxZjMyNWI2MjIyMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoUG9pbnQuaApAQCAtMzIsNDQgKzMyLDI1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0cnVjdCBCbGVuZGluZ0NvbnRleHQ7CiAKIHN0cnVjdCBMZW5ndGhQb2ludCB7Ci1w
dWJsaWM6Ci0gICAgTGVuZ3RoUG9pbnQoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgTGVuZ3Ro
UG9pbnQoTGVuZ3RoIHgsIExlbmd0aCB5KQotICAgICAgICA6IG1feChXVEZNb3ZlKHgpKQotICAg
ICAgICAsIG1feShXVEZNb3ZlKHkpKQotICAgIHsKLSAgICB9CisgICAgTGVuZ3RoIHg7CisgICAg
TGVuZ3RoIHk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNv
bnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFBvaW50JiBvdGhlcikgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ggPT0gby5tX3ggJiYgbV95ID09IG8ubV95OworICAg
ICAgICByZXR1cm4geCA9PSBvdGhlci54ICYmIHkgPT0gb3RoZXIueTsKICAgICB9CiAKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IExlbmd0aFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG8pOworICAgICAgICByZXR1cm4geCAhPSBvdGhlci54IHx8IHkgIT0g
b3RoZXIueTsKICAgICB9CiAKLSAgICB2b2lkIHNldFgoTGVuZ3RoIHgpIHsgbV94ID0gV1RGTW92
ZSh4KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQotCi0g
ICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IG1feSA9IFdURk1vdmUoeSk7IH0KLSAgICBjb25zdCBM
ZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KLQotICAgIGJvb2wgaXNaZXJvKCkgY29u
c3QgeyByZXR1cm4gbV94LmlzWmVybygpICYmIG1feS5pc1plcm8oKTsgfQotCi1wcml2YXRlOgot
ICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIHRvIHBhY2sgdGhlIHR3byBMZW5ndGhzIHRv
Z2V0aGVyIGJldHRlciBzb21laG93ICh0byBhdm9pZCBwYWRkaW5nIGJldHdlZW4gdGhlbSkuCi0g
ICAgTGVuZ3RoIG1feDsKLSAgICBMZW5ndGggbV95OworICAgIGJvb2wgaXNaZXJvKCkgY29uc3Qg
eyByZXR1cm4geC5pc1plcm8oKSAmJiB5LmlzWmVybygpOyB9CiB9OwogCiBpbmxpbmUgTGVuZ3Ro
UG9pbnQgYmxlbmQoY29uc3QgTGVuZ3RoUG9pbnQmIGZyb20sIGNvbnN0IExlbmd0aFBvaW50JiB0
bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVybiBMZW5ndGhQ
b2ludChibGVuZChmcm9tLngoKSwgdG8ueCgpLCBjb250ZXh0KSwgYmxlbmQoZnJvbS55KCksIHRv
LnkoKSwgY29udGV4dCkpOworICAgIHJldHVybiB7IGJsZW5kKGZyb20ueCwgdG8ueCwgY29udGV4
dCksIGJsZW5kKGZyb20ueSwgdG8ueSwgY29udGV4dCkgfTsKIH0KIAogV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IExlbmd0aFBvaW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCBiYWJl
OTY2ODRlN2MxNWNiOWNhOTY5M2JhMzU2MGE4YWEzZDJjOTZjLi5lOWYyNjhjMTBkYWI0Mjg0Njc5
OGE4NmQ5Zjk5MmRjNWE1ZmI4MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTE2NSw4ICsxNjUsOCBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBwcmltYXJ5Rm9u
dCgpLmZvbnRNZXRyaWNzKCk7IH0KICAgICBmbG9hdCBzcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1
cm4gcHJpbWFyeUZvbnQoKS5zcGFjZVdpZHRoKCkgKyBtX2xldHRlclNwYWNpbmc7IH0KLSAgICBm
bG9hdCB0YWJXaWR0aChjb25zdCBGb250JiwgY29uc3QgVGFiU2l6ZSYsIGZsb2F0KSBjb25zdDsK
LSAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBUYWJTaXplJiB0YWJTaXplLCBmbG9hdCBwb3NpdGlv
bikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJpbWFyeUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRp
b24pOyB9CisgICAgZmxvYXQgdGFiV2lkdGgoY29uc3QgRm9udCYsIFRhYlNpemUsIGZsb2F0KSBj
b25zdDsKKyAgICBmbG9hdCB0YWJXaWR0aChUYWJTaXplIHRhYlNpemUsIGZsb2F0IHBvc2l0aW9u
KSBjb25zdCB7IHJldHVybiB0YWJXaWR0aChwcmltYXJ5Rm9udCgpLCB0YWJTaXplLCBwb3NpdGlv
bik7IH0KICAgICBib29sIGhhc1ZhbGlkQXZlcmFnZUNoYXJXaWR0aCgpIGNvbnN0OwogICAgIGJv
b2wgZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJsZShmbG9hdCAmd2lkdGgpIGNvbnN0OyAv
LyByZXR1cm5zIHRydWUgb24gc3VjY2VzcwogCkBAIC0zNzAsNyArMzcwLDcgQEAgaW5saW5lIEZv
bnRTZWxlY3RvciogRm9udENhc2NhZGU6OmZvbnRTZWxlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZm9udHMgPyBtX2ZvbnRzLT5mb250U2VsZWN0b3IoKSA6IG51bGxwdHI7CiB9CiAKLWlubGlu
ZSBmbG9hdCBGb250Q2FzY2FkZTo6dGFiV2lkdGgoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGFi
U2l6ZSYgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0CitpbmxpbmUgZmxvYXQgRm9udENh
c2NhZGU6OnRhYldpZHRoKGNvbnN0IEZvbnQmIGZvbnQsIFRhYlNpemUgdGFiU2l6ZSwgZmxvYXQg
cG9zaXRpb24pIGNvbnN0CiB7CiAgICAgZmxvYXQgYmFzZVRhYldpZHRoID0gdGFiU2l6ZS53aWR0
aEluUGl4ZWxzKGZvbnQuc3BhY2VXaWR0aCgpKTsKICAgICBpZiAoIWJhc2VUYWJXaWR0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAppbmRl
eCA3NTQzZjQ3NWEyN2E2NTE1OTA2Y2MyMmViM2Y2MGE5MTQwOTI5MGJhLi4wNzU2MTk0Y2YyZjVl
OGI5ZmJiMjdhMTBjZTc4YTJlMThjMjNjZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC03NCw3ICs3NCw4IEBAIHN0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZm
ZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUo
Zm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKGJ1ZmZlclNpemUgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICB1aW50MzJfdCBtYXggPSBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICBpZiAoYnVmZmVyU2l6ZSA+IG1heCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJTaXplKTsKICAgICBpZiAo
IXBpeGVsQXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UYWJTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgK
aW5kZXggMzRhNzA4MTA2MjhhYzk1MjdmNGY1Y2YwNDc1ZDgzNWI3Y2MyZWFjZi4uMzY2NDJmOGE4
YzQ3NDA3ZWFjZTkzNTEyMjgzNjBmMmM4N2Q3YzIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RhYlNpemUuaApAQCAtMjksNDkgKzI5LDM5IEBACiAKICNwcmFnbWEgb25j
ZQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCi1lbnVtIFRhYlNpemVWYWx1ZVR5cGUgewotICAgIExlbmd0aFZhbHVlVHlwZSwKLSAgICBT
cGFjZVZhbHVlVHlwZSwKLX07CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBUYWJTaXpl
IHsKLSAgICBUYWJTaXplKGZsb2F0IG51bU9yTGVuZ3RoLCBUYWJTaXplVmFsdWVUeXBlIGlzU3Bh
Y2VzID0gU3BhY2VWYWx1ZVR5cGUpCi0gICAgICAgIDogbV92YWx1ZShudW1Pckxlbmd0aCkKLSAg
ICAgICAgLCBtX2lzU3BhY2VzKGlzU3BhY2VzKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlz
U3BhY2VzKCkgY29uc3QKKyAgICBlbnVtIFZhbHVlVHlwZSB7IExlbmd0aCwgU3BhY2VzIH07Cisg
ICAgVGFiU2l6ZShmbG9hdCBudW1Pckxlbmd0aCwgVmFsdWVUeXBlIHR5cGUgPSBTcGFjZXMpCisg
ICAgICAgIDogdmFsdWUobnVtT3JMZW5ndGgpCisgICAgICAgICwgaXNTcGFjZXModHlwZSA9PSBT
cGFjZXMpCiAgICAgewotICAgICAgICByZXR1cm4gbV9pc1NwYWNlczsKICAgICB9CiAKICAgICBm
bG9hdCB3aWR0aEluUGl4ZWxzKGZsb2F0IHNwYWNlV2lkdGgpIGNvbnN0CiAgICAgewotICAgICAg
ICByZXR1cm4gbV9pc1NwYWNlcyA/IG1fdmFsdWUgKiBzcGFjZVdpZHRoIDogbV92YWx1ZTsKKyAg
ICAgICAgcmV0dXJuIGlzU3BhY2VzID8gdmFsdWUgKiBzcGFjZVdpZHRoIDogdmFsdWU7CiAgICAg
fQogCi0gICAgZmxvYXQgdmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFs
dWU7Ci0gICAgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB2
YWx1ZTsgfQogCi0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlKCk7IH0K
LQotICAgIGZsb2F0IG1fdmFsdWU7Ci0gICAgYm9vbCBtX2lzU3BhY2VzOworICAgIGZsb2F0IHZh
bHVlOworICAgIGJvb2wgaXNTcGFjZXM7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRhYlNpemUmIGEsIGNvbnN0IFRhYlNpemUmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KFRhYlNpemUgYSwgVGFiU2l6ZSBiKQogewotICAgIHJldHVybiAoYS5tX3ZhbHVlID09IGIubV92
YWx1ZSkgJiYgKGEubV9pc1NwYWNlcyA9PSBiLm1faXNTcGFjZXMpOworICAgIHJldHVybiBhLnZh
bHVlID09IGIudmFsdWUgJiYgYS5pc1NwYWNlcyA9PSBiLmlzU3BhY2VzOwogfQogCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFRhYlNpemUmIGEsIGNvbnN0IFRhYlNpemUmIGIpCitpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KFRhYlNpemUgYSwgVGFiU2l6ZSBiKQogewogICAgIHJldHVybiAh
KGEgPT0gYik7CiB9CiAKK2lubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHN0cmVhbSwgVGFiU2l6ZSBzaXplKSB7IHJldHVybiBzdHJlYW0gPDwgc2l6ZS52YWx1ZSA8PCAo
c2l6ZS5pc1NwYWNlcyA/ICIgc3BhY2VzIiA6ICIiKTsgfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKaW5kZXggMWQ0
N2Q2NWQ2ODI0NjI2ZTE1OTI4ODAwZjQ2OTdjMjc2Y2IyNzYzNC4uYTIwOTZjZjlkZTM1ZThhNWIz
OTNhN2ZhYzBhNDgzZDU3MWM0ZjFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RleHRSdW4uaApAQCAtOTUsOCArOTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIb3Jp
em9udGFsR2x5cGhTdHJldGNoKGZsb2F0IHNjYWxlKSB7IG1faG9yaXpvbnRhbEdseXBoU3RyZXRj
aCA9IHNjYWxlOyB9CiAKICAgICBib29sIGFsbG93VGFicygpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dUYWJzOyB9Ci0gICAgY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFiU2l6ZTsgfQotICAgIHZvaWQgc2V0VGFiU2l6ZShib29sLCBjb25zdCBUYWJTaXplJik7Cisg
ICAgVGFiU2l6ZSB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV90YWJTaXplOyB9CisgICAgdm9p
ZCBzZXRUYWJTaXplKGJvb2wsIFRhYlNpemUpOwogCiAgICAgZmxvYXQgeFBvcygpIGNvbnN0IHsg
cmV0dXJuIG1feHBvczsgfQogICAgIHZvaWQgc2V0WFBvcyhmbG9hdCB4UG9zKSB7IG1feHBvcyA9
IHhQb3M7IH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZGlz
YWJsZVNwYWNpbmcgOiAxOwogfTsKIAotaW5saW5lIHZvaWQgVGV4dFJ1bjo6c2V0VGFiU2l6ZShi
b29sIGFsbG93LCBjb25zdCBUYWJTaXplJiBzaXplKQoraW5saW5lIHZvaWQgVGV4dFJ1bjo6c2V0
VGFiU2l6ZShib29sIGFsbG93LCBUYWJTaXplIHNpemUpCiB7CiAgICAgbV9hbGxvd1RhYnMgPSBh
bGxvdzsKICAgICBtX3RhYlNpemUgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5kZXggOTJmNDJiNjc3ZDUzZGQ5YzZhM2Y2
YmQ2ZTNkOTFjYmFjNjZhYTRiOS4uOWRiMTExMTI4YTFmYjdjZWZlYTRhZDAyYWVjMTFiYTVlMjkx
ZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGls
aXRpZXMuY3BwCkBAIC0yNywxMyArMjcsMTQgQEAKICNpbmNsdWRlICJWUDlVdGlsaXRpZXMuaCIK
IAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRB
cnJheU1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBMZXZlbCh1
aW50OF90IGxldmVsKQogewotICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkTGV2ZWxzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkTGV2ZWxzW10gPSB7CiAgICAgICAg
IFZQQ29uZmlndXJhdGlvbkxldmVsOjpMZXZlbF8xLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25M
ZXZlbDo6TGV2ZWxfMV8xLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfMiwK
QEAgLTQ5LDE0ICs1MCwxMyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBMZXZlbCh1aW50OF90IGxl
dmVsKQogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfNl8xLAogICAgICAgICBW
UENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfNl8yLAogICAgIH07Ci0KLSAgICBBU1NFUlQoc3Rk
Ojppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZExldmVscyksIHN0ZDo6ZW5kKHZhbGlkTGV2ZWxz
KSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZExldmVs
cyksIHN0ZDo6ZW5kKHZhbGlkTGV2ZWxzKSwgbGV2ZWwpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
U29ydGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRMZXZlbHMgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRh
aW5zKGxldmVsKTsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZFZQQ29sb3JQcmltYXJpZXModWlu
dDhfdCBjb2xvclByaW1hcmllcykKIHsKLSAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZENvbG9y
UHJpbWFyaWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkQ29sb3JQ
cmltYXJpZXNbXSA9IHsKICAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJU
XzcwOV82LAogICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6VW5zcGVjaWZp
ZWQsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF80NzBfNl9NLApA
QCAtNzAsMTQgKzcwLDEzIEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUENvbG9yUHJpbWFyaWVzKHVp
bnQ4X3QgY29sb3JQcmltYXJpZXMpCiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFy
aWVzOjpTTVBURV9FR180MzJfMSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJp
ZXM6OkVCVV9UZWNoXzMyMTNfRSwKICAgICB9OwotCi0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVk
KHN0ZDo6YmVnaW4odmFsaWRDb2xvclByaW1hcmllcyksIHN0ZDo6ZW5kKHZhbGlkQ29sb3JQcmlt
YXJpZXMpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlk
Q29sb3JQcmltYXJpZXMpLCBzdGQ6OmVuZCh2YWxpZENvbG9yUHJpbWFyaWVzKSwgY29sb3JQcmlt
YXJpZXMpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRD
b2xvclByaW1hcmllcyB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMoY29sb3JQcmltYXJpZXMp
OwogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyh1aW50
OF90IHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKQogewotICAgIGNvbnN0ZXhwciB1aW50OF90IHZh
bGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3NbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljc1tdID0gewogICAgICAgICBWUENvbmZp
Z3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNzA5XzYsCiAgICAgICAgIFZQQ29u
ZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZCwKICAgICAgICAg
VlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzQ3MF82X00sCkBAIC05
NiwxMyArOTUsMTMgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3ModWludDhfdCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcykKICAgICAgICAgVlBDb25maWd1cmF0
aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzQyOF8xLAogICAgICAgICBWUENv
bmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjEwMF9ITEcsCiAgICAgfTsK
LSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZFRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzKSwgc3RkOjplbmQodmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcykpKTsKLSAg
ICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRUcmFuc2ZlckNoYXJh
Y3RlcmlzdGljcyksIHN0ZDo6ZW5kKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpLCB0cmFu
c2ZlckNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNl
dCBzZXQgeyB2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIH07CisgICAgcmV0dXJuIHNldC5j
b250YWlucyh0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyk7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFs
aWRWUE1hdHJpeENvZWZmaWNpZW50cyh1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cykKIHsKLSAg
ICBjb25zdGV4cHIgdWludDhfdCB2YWxpZE1hdHJpeENvZWZmaWNpZW50c1tdID0geworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZE1hdHJpeENvZWZmaWNpZW50c1tdID0gewogICAg
ICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OklkZW50aXR5LAogICAgICAg
ICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzcwOV82LAogICAgICAgICBW
UENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVkLApAQCAtMTE4LDgg
KzExNyw4IEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cyh1aW50OF90
IG1hdHJpeENvZWZmaWNpZW50cykKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZp
Y2llbnRzOjpDaHJvbWFjaXR5X05vbmNvbnN0YW50X0x1bWluYW5jZSwKICAgICAgICAgVlBDb25m
aWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF8yMTAwX0lDQywKICAgICB9OwotICAgIEFT
U0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSwg
c3RkOjplbmQodmFsaWRNYXRyaXhDb2VmZmljaWVudHMpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6Ymlu
YXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSwgc3RkOjplbmQo
dmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBtYXRyaXhDb2VmZmljaWVudHMpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRNYXRyaXhDb2VmZmljaWVudHMg
fTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKG1hdHJpeENvZWZmaWNpZW50cyk7CiB9CiAKIHN0
ZDo6b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFt
ZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2
YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCBlZTFhMzc5
YTViZDgyYTI2YWMzMjEyYzNkZGY2ZTdjMDQwYzE4YzU1Li5lMmQxOThmY2EyYjRjMWM4ZjdmZTY0
ODQzYjFjNDEzZDdiMTg0ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTYwLDEzICs2MCwxMyBA
QCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQyI7IH0KIAogICAgIHN0cnVj
dCBDaGFwdGVyRGF0YSB7Ci0gICAgICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKLSAgICAgICAg
TWVkaWFUaW1lIG1fZHVyYXRpb247Ci0gICAgICAgIFN0cmluZyBtX3RpdGxlOworICAgICAgICBN
ZWRpYVRpbWUgc3RhcnRUaW1lOworICAgICAgICBNZWRpYVRpbWUgZHVyYXRpb247CisgICAgICAg
IFN0cmluZyB0aXRsZTsKIAogICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENoYXB0ZXJEYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG1fc3RhcnRUaW1lID09IG90aGVyLm1fc3RhcnRUaW1lICYmIG1fZHVyYXRpb24gPT0gb3RoZXIu
bV9kdXJhdGlvbiAmJiBtX3RpdGxlID09IG90aGVyLm1fdGl0bGU7CisgICAgICAgICAgICByZXR1
cm4gc3RhcnRUaW1lID09IG90aGVyLnN0YXJ0VGltZSAmJiBkdXJhdGlvbiA9PSBvdGhlci5kdXJh
dGlvbiAmJiB0aXRsZSA9PSBvdGhlci50aXRsZTsKICAgICAgICAgfQogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1F1ZXVlZFZpZGVvT3V0cHV0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KaW5kZXggMGJjMDgzODE0YzA4
YzdkZWVkNjFjOTA3OWMyMmJlM2Y1MDc4YTc3ZS4uOTQ5YzYwYmM0OGU1YTlhMGIyNTgwZjFhMjEy
MmVlZTg3NTQ1MTVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRw
dXQubW0KQEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZp
Z3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpCiAgICAgaWYgKG1fbmV4dEltYWdlVGltZWJhc2VP
YnNlcnZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjdXJyZW50VGltZSA9IFBBTDo6
dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1cnJlbnRUaW1lXSk7Ci0gICAgYXV0byBpdGVyID0gZmlu
ZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCBjdXJyZW50VGltZSk7CisgICAgYXV0byBpdGVy
ID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCBQQUw6OnRvTWVkaWFUaW1lKFttX3Bs
YXllciBjdXJyZW50VGltZV0pKTsKICAgICBpZiAoaXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgp
IHx8ICsraXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvIG5leHRJbWFnZVRpbWUgPSBpdGVyLT5maXJzdDsKIAotICAgIG1fbmV4dEltYWdlVGlt
ZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRCb3VuZGFyeVRpbWVPYnNlcnZlckZvclRpbWVz
OkBbW05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lOlBBTDo6dG9DTVRpbWUoY3VycmVudFRpbWUpXV0g
cXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHByb3RlY3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVj
dGVkT3V0cHV0ID0gbV92aWRlb091dHB1dF0gKCkgbXV0YWJsZSB7CisgICAgbV9uZXh0SW1hZ2VU
aW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJvdW5kYXJ5VGltZU9ic2VydmVyRm9yVGlt
ZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFMOjp0b0NNVGltZShuZXh0SW1hZ2VUaW1l
KV1dIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHBy
b3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdICgpIG11dGFibGUgewogICAgICAgICBjYWxs
T25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0gewogICAgICAgICAg
ICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5uZXh0SW1hZ2VUaW1l
UmVhY2hlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAwNWE4MzE2
ZGMyN2U2MzAxN2YzOTdmMTkyNDY5YjgyYTMzYjdiMDM0Li4wNGMwMDNiNGUyZTg3NjhjZDU4Nzc3
NGU1ZDFlYzYzMjc5Yzg4YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApA
QCAtMTQyMiwxOCArMTQyMiwxOCBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAg
ICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRh
UG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRzOwotICAgICAgICAgICAgaWYgKCFw
YXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEo
KSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRz
KSkgeworICAgICAgICAgICAgYXV0byBjb29raWVDb250ZW50cyA9IHBhcnNlT3B1c1ByaXZhdGVE
YXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBh
Y2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICBpZiAoIWNvb2tpZUNvbnRl
bnRzKSB7CiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiRmFp
bGVkIHRvIHBhcnNlIE9wdXMgcHJpdmF0ZSBkYXRhIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKCFjb29raWVDb250ZW50cy5mcmFtZXNQZXJQYWNrZXQpIHsKKyAgICAgICAgICAgIGlm
ICghY29va2llQ29udGVudHMtPmZyYW1lc1BlclBhY2tldCkgewogICAgICAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIk9wdXMgcHJpdmF0ZSBkYXRhIGluZGljYXRlcyAw
IGZyYW1lcyBwZXIgcGFja2V0OyBiYWlsaW5nIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNr
aXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9mcmFtZXNQZXJQYWNrZXQgPSBjb29raWVDb250ZW50cy5mcmFtZXNQZXJQYWNrZXQ7Ci0gICAg
ICAgICAgICBtX2ZyYW1lRHVyYXRpb24gPSBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uOwot
ICAgICAgICAgICAgZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbihjb29raWVDb250ZW50cyk7CisgICAgICAgICAgICBtX2ZyYW1lc1BlclBhY2tldCA9
IGNvb2tpZUNvbnRlbnRzLT5mcmFtZXNQZXJQYWNrZXQ7CisgICAgICAgICAgICBtX2ZyYW1lRHVy
YXRpb24gPSBjb29raWVDb250ZW50cy0+ZnJhbWVEdXJhdGlvbjsKKyAgICAgICAgICAgIGZvcm1h
dERlc2NyaXB0aW9uID0gY3JlYXRlT3B1c0F1ZGlvRm9ybWF0RGVzY3JpcHRpb24oKmNvb2tpZUNv
bnRlbnRzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghZm9ybWF0RGVzY3JpcHRpb24pIHsK
QEAgLTE0NTMsNyArMTQ1Myw2IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgICAgIC8v
IE9wdXMgdGVjaG5pY2FsbHkgYWxsb3dzIHRoZSBmcmFtZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBl
ci1wYWNrZXQgdmFsdWVzIHRvIGNoYW5nZSBmcm9tIHBhY2tldCB0byBwYWNrZXQuCiAgICAgICAg
IC8vIENvcmVBdWRpbyBkb2Vzbid0IHN1cHBvcnQgQVNCRCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBj
aGFuZ2Ugb24gYSBwZXItcGFja2V0IGJhc2lzLCBzbyB0aHJvdyBhbiBlcnJvciB3aGVuCiAgICAg
ICAgIC8vIHRoYXQga2luZCBvZiB2YXJpYWJpbGl0eSBpcyBlbmNvdW50ZXJlZC4KLSAgICAgICAg
T3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRzOwogICAgICAgICBhdXRvJiBwcml2YXRl
RGF0YSA9IHRyYWNrKCkuY29kZWNfcHJpdmF0ZS52YWx1ZSgpOwogICAgICAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihtX2N1cnJlbnRQYWNr
ZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOwogICAgICAgICBpZiAoIWNvbnRp
Z3VvdXNCdWZmZXIpIHsKQEAgLTE0NjYsOSArMTQ2NSw4IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpS
ZWFkCiAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVm
ZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwogICAgICAgICAgICAg
cmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICB9Ci0gICAgICAg
IGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0
YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhLCBjb29raWVD
b250ZW50cykKLSAgICAgICAgICAgIHx8IGNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldCAh
PSBtX2ZyYW1lc1BlclBhY2tldAotICAgICAgICAgICAgfHwgY29va2llQ29udGVudHMuZnJhbWVE
dXJhdGlvbiAhPSBtX2ZyYW1lRHVyYXRpb24pIHsKKyAgICAgICAgYXV0byBjb29raWVDb250ZW50
cyA9IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEu
ZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAg
IGlmICghY29va2llQ29udGVudHMgfHwgY29va2llQ29udGVudHMtPmZyYW1lc1BlclBhY2tldCAh
PSBtX2ZyYW1lc1BlclBhY2tldCB8fCBjb29raWVDb250ZW50cy0+ZnJhbWVEdXJhdGlvbiAhPSBt
X2ZyYW1lRHVyYXRpb24pIHsKICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIk9wdXMgZnJhbWVzLXBlci1wYWNrZXQgY2hhbmdlZCB3aXRoaW4gYSB0cmFjazsgZXJyb3Ii
KTsKICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6VmFy
aWFibGVGcmFtZUR1cmF0aW9uKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXND
b2NvYS5oCmluZGV4IDg3MTA0ZDhiN2IzNTdjMTYwYjZkY2NjNDFiZmUxZjg5ZTBhNmMyNzEuLjhi
NjdkZTZmNDkzMDFiYTAxMTU4YTk4MDA5OTU5Mjc3MDQ0NTIzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EuaApAQCAtMjgsOCArMjgsOCBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQog
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAK
LWNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFx
dWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01NSw5ICs1NSw5IEBAIHN0cnVjdCBPcHVzQ29va2llQ29udGVudHMg
ewogCiBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3B1c0RlY29kZXJBdmFpbGFibGUoKTsKIFdFQkNP
UkVfRVhQT1JUIGJvb2wgcmVnaXN0ZXJPcHVzRGVjb2RlcklmTmVlZGVkKCk7Ci1ib29sIHBhcnNl
T3B1c1ByaXZhdGVEYXRhKHNpemVfdCBwcml2YXRlRGF0YVNpemUsIGNvbnN0IHZvaWQqIHByaXZh
dGVEYXRhLCBzaXplX3QgZnJhbWVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhLCBPcHVz
Q29va2llQ29udGVudHMmKTsKK3N0ZDo6b3B0aW9uYWw8T3B1c0Nvb2tpZUNvbnRlbnRzPiBwYXJz
ZU9wdXNQcml2YXRlRGF0YShzaXplX3QgcHJpdmF0ZURhdGFTaXplLCBjb25zdCB2b2lkKiBwcml2
YXRlRGF0YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSk7CiBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlT3B1c0F1ZGlvRm9ybWF0RGVz
Y3JpcHRpb24oY29uc3QgT3B1c0Nvb2tpZUNvbnRlbnRzJik7CiAKIH0KIAotI2VuZGlmIC8vICYm
IFBMQVRGT1JNKENPQ09BKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVk
aW9VdGlsaXRpZXNDb2NvYS5tbQppbmRleCA3ZTBhZmIyOTBkZDg1YTc3ZjliZWZmZjQ5NDdhNDdi
NzUzNWViMmY0Li5hYjViYTFmMjUyY2VjMjcxNmI1MDBmNmY5YTVjNGJiYTY3NDI4MTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIGNvbnN0
ZXhwciBpbnQzMl90IG9wdXNDb25maWdUb0JhbmR3aWR0aCh1aW50OF90IGNvbmZpZykKIH0KICNl
bmRpZgogCi1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXpl
LCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVTaXplLCBjb25zdCB2
b2lkKiBmcmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50cyYgY29va2llKQorc3RkOjpvcHRpb25h
bDxPcHVzQ29va2llQ29udGVudHM+IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1By
aXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVTaXpl
LCBjb25zdCB2b2lkKiBmcmFtZURhdGEpCiB7CiAjaWYgRU5BQkxFKE9QVVMpCiAgICAgLy8gaHR0
cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc4NDUKQEAgLTIwMSwxNiArMjAxLDE3IEBAIGJv
b2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZv
aWQqIGNvZGVjUHJpdmF0ZURhdGEsCiAgICAgYXV0byogcHJpdmF0ZURhdGFQdHIgPSBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oY29kZWNQcml2YXRlRGF0YSk7CiAKICAgICBpZiAoY29kZWNQ
cml2YXRlU2l6ZSA8IDE5KQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gMS4gTWFnaWMgU2lnbmF0dXJlOgogICAgIC8vCiAgICAgLy8g
ICAgIFRoaXMgaXMgYW4gOC1vY3RldCAoNjQtYml0KSBmaWVsZCB0aGF0IGFsbG93cyBjb2RlYwog
ICAgIC8vICAgICBpZGVudGlmaWNhdGlvbiBhbmQgaXMgaHVtYW4gcmVhZGFibGUuCiAgICAgaWYg
KHN0cm5jbXAoIk9wdXNIZWFkIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocHJpdmF0
ZURhdGFQdHIpLCA4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gMi4gVmVyc2lvbiAoOCBiaXRzLCB1bnNpZ25lZCk6CisgICAg
T3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZTsKICAgICBjb29raWUudmVyc2lvbiA9ICoocHJpdmF0
ZURhdGFQdHIgKyA4KTsKIAogICAgIC8vIDMuIE91dHB1dCBDaGFubmVsIENvdW50ICdDJyAoOCBi
aXRzLCB1bnNpZ25lZCk6CkBAIC0yMzEsNyArMjMyLDcgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRl
RGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0
YSwKICAgICBhdXRvIGZyYW1lUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGZyYW1l
RGF0YSk7CiAKICAgICBpZiAoZnJhbWVTaXplIDwgMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gaHR0cHM6Ly90b29scy5pZXRm
Lm9yZy9odG1sL3JmYzY3MTYKICAgICAvLyAzLjEuIFRoZSBUT0MgQnl0ZQpAQCAtMjg1LDIxICsy
ODYsMjAgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6
ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAgICAgICAgLy8KICAgICAgICAgLy8g
ICAgICAgICAgICAgICAgICAgICAgIEZpZ3VyZSA1OiBUaGUgZnJhbWUgY291bnQgYnl0ZQogICAg
ICAgICBpZiAoZnJhbWVTaXplIDwgMikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgdWludDhfdCBmcmFtZUNvdW50
Qnl0ZSA9ICooZnJhbWVQdHIgKyAxKTsKICAgICAgICAgY29va2llLmlzVkJSID0gKChmcmFtZUNv
dW50Qnl0ZSAmIDBiMTAwMDAwMDApID4+IDcpID09IDE7CiAgICAgICAgIGNvb2tpZS5oYXNQYWRk
aW5nID0gKChmcmFtZUNvdW50Qnl0ZSAmIDBiMDEwMDAwMDApID4+IDYpID09IDE7CiAgICAgICAg
IGNvb2tpZS5mcmFtZXNQZXJQYWNrZXQgPSAoZnJhbWVDb3VudEJ5dGUgJiAwYjAwMTExMTExKTsK
ICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGNvb2tpZTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGNvZGVjUHJpdmF0ZVNpemUpOwogICAgIFVOVVNFRF9QQVJBTShjb2RlY1By
aXZhdGVEYXRhKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVTaXplKTsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVEYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY29va2llKTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaAppbmRleCA4ZGMyMTNm
NDdkNGY4MTkyMTExMWE0YTY5YzQ5OTYyZWE3M2ZjZjBhLi5kY2Q2YTQ3YmE2MDg1M2RhMDhlMTJm
MDIwMjg3OWQ0OWRiMzYzNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogQGNsYXNzIExlZ2FjeVRpbGVM
YXllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxv
Y2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1t
CmluZGV4IGI1MmM4NjE4NmYwYmIwNmZkMzIzZWQyOWY4MmQ3N2M5NThmZTI2MDguLjlmOGRlYmU5
NTQ2MTFlYTBlOGFkNzMzMGNkOTI2YWMyYTMwOTE0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KQEAgLTM1LDQzICszNSwyOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgT1NCdWlsZEluZm8gewotICAgIE9TQnVpbGRJbmZvKCkK
LSAgICAgICAgOiBtYWpvcigwKQotICAgICAgICAsIG1pbm9yKDApCi0gICAgICAgICwgYnVpbGQo
MCkKLSAgICB7Ci0gICAgfQotCi0gICAgT1NCdWlsZEluZm8oaW50IG1ham9yLCBpbnQgbWlub3Is
IGludCBidWlsZCkKLSAgICAgICAgOiBtYWpvcihtYWpvcikKLSAgICAgICAgLCBtaW5vcihtaW5v
cikKLSAgICAgICAgLCBidWlsZChidWlsZCkKLSAgICB7Ci0gICAgfQorICAgIGludCBtYWpvciB7
IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgMTMgaW4gMTNDNjQuCisgICAgaW50IG1pbm9yIHsgMCB9
OyAvLyBSZXByZXNlbnRzIHRoZSBDIGluIDEzQzY0IChhcyBhIG51bWJlciB3aGVyZSBBID09IDEs
IGkuZS4gMykuCisgICAgaW50IGJ1aWxkIHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSA2NCBpbiAx
M0M2NC4KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNv
bnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShPU0J1aWxkSW5mbyBvdGhlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWpvciA9PSBvdGhlci5tYWpvciAmJiBtaW5vciA9
PSBvdGhlci5taW5vciAmJiBidWlsZCA9PSBvdGhlci5idWlsZDsKICAgICB9CiAKLSAgICBib29s
IG9wZXJhdG9yPihjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I+KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpID4gc3RkOjp0aWUob3RoZXIubWFq
b3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRv
cjw9KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcjw9KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpIDw9IHN0ZDo6dGllKG90aGVyLm1ham9yLCBv
dGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjwoT1NCdWlsZEluZm8gb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjp0
aWUobWFqb3IsIG1pbm9yLCBidWlsZCkgPCBzdGQ6OnRpZShvdGhlci5tYWpvciwgb3RoZXIubWlu
b3IsIG90aGVyLmJ1aWxkKTsKICAgICB9Ci0KLSAgICBpbnQgbWFqb3I7IC8vIFJlcHJlc2VudHMg
dGhlIDEzIGluIDEzQzY0LgotICAgIGludCBtaW5vcjsgLy8gUmVwcmVzZW50cyB0aGUgQyBpbiAx
M0M2NCAoYXMgYSBudW1iZXIgd2hlcmUgQSA9PSAxLCBpLmUuIDMpLgotICAgIGludCBidWlsZDsg
Ly8gUmVwcmVzZW50cyB0aGUgNjQgaW4gMTNDNjQuCiB9OwogCiBzdGF0aWMgT1NCdWlsZEluZm8g
YnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQpAQCAtODMs
NyArNjksNyBAQCBzdGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmco
TlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNMb2coQCJX
ZWJHTEJsb2NrbGlzdCBjb3VsZCBub3QgcGFyc2UgT1NCdWlsZCBlbnRyeTogJUAiLCBidWlsZFN0
cmluZyk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE9TQnVpbGRJbmZvKCk7CisgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCiAgICAgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm1hdGNoUmVzdWx0
ID0gW21hdGNoZXMgb2JqZWN0QXRJbmRleDowXTsKQEAgLTkyLDE0ICs3OCwxNCBAQCBzdGF0aWMg
T1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3Ry
aW5nKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNMb2coQCJXZWJHTEJsb2NrbGlzdCBjb3Vs
ZCBub3QgcGFyc2UgT1NCdWlsZCBlbnRyeTogJUAiLCBidWlsZFN0cmluZyk7CiAjZW5kaWYKLSAg
ICAgICAgcmV0dXJuIE9TQnVpbGRJbmZvKCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CiAgICAgaW50IG1ham9yVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdl
OlttYXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6MV1dIGludFZhbHVlXTsKICAgICBpbnQgbWlub3JW
ZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJh
bmdlQXRJbmRleDoyXV0gY2hhcmFjdGVyQXRJbmRleDowXSAtICdBJyArIDE7CiAgICAgaW50IGJ1
aWxkVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOlttYXRjaFJlc3Vs
dCByYW5nZUF0SW5kZXg6M11dIGludFZhbHVlXTsKIAotICAgIHJldHVybiBPU0J1aWxkSW5mbyht
YWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRWZXJzaW9uKTsKKyAgICByZXR1cm4geyBt
YWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRWZXJzaW9uIH07CiB9CiAKIGJvb2wgV2Vi
R0xCbG9ja2xpc3Q6OnNob3VsZEJsb2NrV2ViR0woKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmgK
aW5kZXggOGNhNWYzMTllMmI4MDZjZWFhOTAyNjE3YzVjM2EyNDlhMWM3NGE0YS4uMGExNmU1NGZk
YmE0OGRiNWFhNjNlYzY0NzI2ZjI3NWYwZGIxMDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5p
dC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KaW5kZXggNjMxMmUwNjg0Mjk3YjQz
YzMzMTFlNDczOWI2ODFhYjQ0NWMzMzY3Mi4uYmY1Yzc0ZjRjZmRjYTM3NWUzYmU0MjMyZTQ3NWMy
MmRhZmZjZWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2ltcG9ydCAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVUkxD
b25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5oCmluZGV4IGM0ZWI2N2Q2ZjdjMzM0MDc2YjMyYjc5OGRjZWE0MGI1NzA2ODFl
NmYuLjdkMGJiODVhNGE2ZDUxODFhOGFjNWY2MGZiNzFmZDllYWI0Y2VjMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IDU2MDJkN2MyZDRkNWJj
YTkzMjQ1NDRiNzVhZDIyY2IyNjU4ZWQwMmMuLjBkZjc0MjY1MWZmN2JkYzhiYjY0MzM0NmY5YmNj
YmMyMDRjMTllMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIxNCw3ICsyMTQs
NyBAQCBib29sIEdyaWRJdGVyYXRvcjo6aXNFbXB0eUFyZWFFbm91Z2godW5zaWduZWQgcm93U3Bh
biwgdW5zaWduZWQgY29sdW1uU3BhbikgY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5z
aWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pCitzdGQ6Om9w
dGlvbmFsPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVk
IGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKQogewogICAgIEFTU0VS
VCghbV9ncmlkLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2dyaWRbMF0uaXNFbXB0eSgpKTsK
QEAgLTIyMiw3ICsyMjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRv
cjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYQogICAgIEFTU0VSVCh2
YXJ5aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAgaWYgKG1fZ3JpZC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
dW5zaWduZWQgcm93U3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHZhcnlpbmdU
cmFja1NwYW4gOiBmaXhlZFRyYWNrU3BhbjsKICAgICB1bnNpZ25lZCBjb2x1bW5TcGFuID0gKG1f
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja1NwYW4gOiB2YXJ5aW5nVHJhY2tT
cGFuOwpAQCAtMjMxLDEzICsyMzEsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlk
SXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEKICAgICBj
b25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7CiAgICAgZm9yICg7
IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJh
Y2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93U3BhbiwgY29sdW1u
U3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0g
bWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFu
KG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWRE
ZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFu
KSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEdyaWRBcmVhKEdyaWRTcGFuOjp0cmFuc2xh
dGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdy
aWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVt
bkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0
b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNh
bWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdUcmFja0lu
ZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAppbmRleCA3MmNhZGY2OGVmNGQzMjY2
Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi41OTQ3ZmU1ZTUzODY1M2QwYWFjODQ5NGZlYThkYTk2
N2MzMDg1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTM3LDEwICszNywxMSBAQCB0
eXBlZGVmIFZlY3RvcjxXZWFrUHRyPFJlbmRlckJveD4sIDE+IEdyaWRDZWxsOwogdHlwZWRlZiBW
ZWN0b3I8VmVjdG9yPEdyaWRDZWxsPj4gR3JpZEFzTWF0cml4OwogdHlwZWRlZiBMaXN0SGFzaFNl
dDxzaXplX3Q+IE9yZGVyZWRUcmFja0luZGV4U2V0OwogCi1jbGFzcyBHcmlkQXJlYTsKIGNsYXNz
IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjsKIGNsYXNzIFJlbmRlckdyaWQ7CiAKK3N0cnVjdCBHcmlk
QXJlYTsKKwogY2xhc3MgR3JpZCBmaW5hbCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR3JpZChS
ZW5kZXJHcmlkJik7CkBAIC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94
KiBuZXh0R3JpZEl0ZW0oKTsKICAgICBib29sIGlzRW1wdHlBcmVhRW5vdWdoKHVuc2lnbmVkIHJv
d1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmlkQXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2ln
bmVkIHZhcnlpbmdUcmFja1NwYW4pOworICAgIHN0ZDo6b3B0aW9uYWw8R3JpZEFyZWE+IG5leHRF
bXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJh
Y2tTcGFuKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBHcmlkQXNNYXRyaXgmIG1fZ3JpZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBjZWNlZDM1ZTVj
ZTg3YmZiYzE0MDE4MzZjZDEzZWExYWVkZDdhZmMwLi4wMGViZDVmZmMwNWI3MjIyYTRmN2E0M2Iw
YzQyMWIyYzM5NjU2ZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCkBAIC00MzAsMjAgKzQzMCwxOSBAQCBTdHJpbmcgUmVuZGVyQ291bnRlcjo6b3JpZ2lu
YWxUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGJlZm9y
ZUFmdGVyQ29udGFpbmVyID0gYmVmb3JlQWZ0ZXJDb250YWluZXItPnBhcmVudCgpOwogICAgICAg
ICB9Ci0gICAgICAgIG1ha2VDb3VudGVyTm9kZSgqYmVmb3JlQWZ0ZXJDb250YWluZXIsIG1fY291
bnRlci5pZGVudGlmaWVyKCksIHRydWUpLT5hZGRSZW5kZXJlcihjb25zdF9jYXN0PFJlbmRlckNv
dW50ZXImPigqdGhpcykpOworICAgICAgICBtYWtlQ291bnRlck5vZGUoKmJlZm9yZUFmdGVyQ29u
dGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllciwgdHJ1ZSktPmFkZFJlbmRlcmVyKGNvbnN0X2Nh
c3Q8UmVuZGVyQ291bnRlciY+KCp0aGlzKSk7CiAgICAgICAgIEFTU0VSVChtX2NvdW50ZXJOb2Rl
KTsKICAgICB9CiAgICAgQ291bnRlck5vZGUqIGNoaWxkID0gbV9jb3VudGVyTm9kZTsKICAgICBp
bnQgdmFsdWUgPSBjaGlsZC0+YWN0c0FzUmVzZXQoKSA/IGNoaWxkLT52YWx1ZSgpIDogY2hpbGQt
PmNvdW50SW5QYXJlbnQoKTsKIAotICAgIFN0cmluZyB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9j
b3VudGVyLmxpc3RTdHlsZSgpLCB2YWx1ZSk7CisgICAgU3RyaW5nIHRleHQgPSBsaXN0TWFya2Vy
VGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCB2YWx1ZSk7CiAKLSAgICBpZiAoIW1fY291bnRlci5z
ZXBhcmF0b3IoKS5pc051bGwoKSkgeworICAgIGlmICghbV9jb3VudGVyLnNlcGFyYXRvci5pc051
bGwoKSkgewogICAgICAgICBpZiAoIWNoaWxkLT5hY3RzQXNSZXNldCgpKQogICAgICAgICAgICAg
Y2hpbGQgPSBjaGlsZC0+cGFyZW50KCk7CiAgICAgICAgIHdoaWxlIChDb3VudGVyTm9kZSogcGFy
ZW50ID0gY2hpbGQtPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICB0ZXh0ID0gbGlzdE1hcmtlclRl
eHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCBjaGlsZC0+Y291bnRJblBhcmVudCgpKQotICAgICAg
ICAgICAgICAgICsgbV9jb3VudGVyLnNlcGFyYXRvcigpICsgdGV4dDsKKyAgICAgICAgICAgIHRl
eHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCBjaGlsZC0+Y291bnRJblBh
cmVudCgpKSArIG1fY291bnRlci5zZXBhcmF0b3IgKyB0ZXh0OwogICAgICAgICAgICAgY2hpbGQg
PSBwYXJlbnQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAKaW5kZXggMjZmOGZjYmMwYWIyNzk2MGM0OTM5MjIzZTc0OGQ5M2MzYjgzYzk5YS4u
MWI2NzQ1YTllNzkwYjgwNWIxMzUwMDA0MmU0MWUwOTNlZDgxNjkzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzY1LDEzICs3NjUsMTMgQEAgdm9pZCBSZW5k
ZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYgZ3JpZCkg
Y29uc3QKICAgICBncmlkLmVuc3VyZUdyaWRTaXplKG1heGltdW1Sb3dJbmRleCArIGV4cGxpY2l0
Um93U3RhcnQsIG1heGltdW1Db2x1bW5JbmRleCArIGV4cGxpY2l0Q29sdW1uU3RhcnQpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFy
ZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFJlbmRl
ckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rp
b24sIGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlvbnMpIGNvbnN0CitHcmlkQXJlYSBS
ZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRl
R3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVk
UG9zaXRpb25zKSBjb25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjcm9zc0Rp
cmVjdGlvbiA9IHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gRm9yUm93cyA6IEZv
ckNvbHVtbnM7CiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZDcm9zc0RpcmVjdGlvbiA9IGdyaWQu
bnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1bnNpZ25lZCBjcm9zc0RpcmVjdGlvblNw
YW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVt
KGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAgR3JpZFNwYW4gY3Jvc3NEaXJlY3Rpb25Q
b3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oZW5kT2ZDcm9z
c0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiArIGNyb3NzRGlyZWN0aW9uU3BhblNpemUp
OwotICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRBcmVhPihzcGVjaWZpZWREaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zIDogc3BlY2lmaWVkUG9zaXRpb25z
LCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6
IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAgICByZXR1cm4gR3JpZEFyZWEoc3BlY2lmaWVk
RGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNp
ZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZp
ZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVy
R3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25z
dCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRlbXMpIGNvbnN0CkBAIC03OTIsNyArNzky
LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25Hcmlk
KEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW4KICAgICAgICAgdW5zaWduZWQgbWFqb3JBeGlz
SW5pdGlhbFBvc2l0aW9uID0gbWFqb3JBeGlzUG9zaXRpb25zLnN0YXJ0TGluZSgpOwogCiAgICAg
ICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGly
ZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFydExpbmUoKSwgaXNHcmlkQXV0b0Zsb3dE
ZW5zZSA/IDAgOiBtaW5vckF4aXNDdXJzb3JzLmdldChtYWpvckF4aXNJbml0aWFsUG9zaXRpb24p
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhID0gaXRl
cmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFuKCks
IG1pbm9yQXhpc1NwYW5TaXplKTsKKyAgICAgICAgYXV0byBlbXB0eUdyaWRBcmVhID0gaXRlcmF0
b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1p
bm9yQXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYgKCFlbXB0eUdyaWRBcmVhKQogICAgICAgICAg
ICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9u
c091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNE
aXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKIApAQCAtODI3LDcgKzgyNyw3IEBAIHZv
aWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChHcmlkJiBncmlkLCBS
ZW5kZXJCb3gmIGdyaWRJdGVtLCBBCiAgICAgdW5zaWduZWQgbWFqb3JBeGlzQXV0b1BsYWNlbWVu
dEN1cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5z
ID8gYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0
OwogICAgIHVuc2lnbmVkIG1pbm9yQXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2Vt
ZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJz
b3IuZmlyc3QgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLnNlY29uZDsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdyaWRBcmVh
PiBlbXB0eUdyaWRBcmVhOwogICAgIEdyaWRTcGFuIG1pbm9yQXhpc1Bvc2l0aW9ucyA9IGdyaWQu
Z3JpZEl0ZW1TcGFuKGdyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkp
OwogICAgIGlmIChtaW5vckF4aXNQb3NpdGlvbnMuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSkgewog
ICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHRyYWNrIGluIG1ham9yIGF4aXMgaWYgaW5pdGlh
bCBwb3NpdGlvbiBpbiBtaW5vciBheGlzIGlzIGJlZm9yZSBhdXRvLXBsYWNlbWVudCBjdXJzb3Iu
CkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJ
dGVtT25HcmlkKEdyaWQmIGdyaWQsIFJlbmRlckJveCYgZ3JpZEl0ZW0sIEEKIAogICAgICAgICAg
ICAgICAgIC8vIERpc2NhcmQgZW1wdHkgZ3JpZCBhcmVhIGFzIGl0IGRvZXMgbm90IGZpdCBpbiB0
aGUgbWlub3IgYXhpcyBkaXJlY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBjcmVhdGUgYSBuZXcgZW1wdHkgZ3JpZCBhcmVhIHlldCBhcyB3ZSBtaWdodCBmaW5kIGEg
dmFsaWQgb25lIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAgICAgICAgICBlbXB0eUdy
aWRBcmVhID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBBcyB3ZSdyZSBtb3Zpbmcg
dG8gdGhlIG5leHQgdHJhY2sgaW4gdGhlIG1ham9yIGF4aXMgd2Ugc2hvdWxkIHJlc2V0IHRoZSBh
dXRvLXBsYWNlbWVudCBjdXJzb3IgaW4gdGhlIG1pbm9yIGF4aXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuaAppbmRleCAyOWFlNTk0ODAwM2VlNmQyZGQ0NDNiNTY5OWRjYjJkN2Mx
N2I5NjI2Li42NWM5ZTZlMjUyNjg0OTcwMzM4NGRkZGNiYTE3ODNjNGJiNzdiMTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTMyLDkgKzMyLDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JpZEFyZWE7CiBjbGFzcyBHcmlkU3BhbjsKIAorc3Ry
dWN0IEdyaWRBcmVhOworCiBzdHJ1Y3QgQ29udGVudEFsaWdubWVudERhdGEgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENvbnRlbnRBbGlnbm1lbnREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC0xMTEsNyArMTEyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mLCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkgY29uc3Q7CiAgICAgdm9pZCBwb3B1
bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYpIGNvbnN0OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRp
b25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsKKyAgICBHcmlkQXJlYSBjcmVhdGVFbXB0
eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiwgY29uc3QgUmVu
ZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYpIGNvbnN0
OwogICAgIHZvaWQgcGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiwgY29u
c3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAgICAgdm9pZCBwbGFjZUF1dG9NYWpvckF4
aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAg
ICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBdXRvUGxhY2VtZW50Q3Vy
c29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAppbmRleCA3ZThkZDY4ODI0Y2ZiNDU2MjA4MGU1OTRlY2Q4NDAyYTZjOWZjMDMyLi5m
OWVkZTFkOTBiMzkzNmYxMzA5ZDQ3YjI0MDM1MTU0MmEyNzdjNDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtOTcsNyAr
OTcsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIFdlYkNvcmVIYXMzRFJlbmRlcmluZyA9IHRydWU7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhVVNFKENPTVBPU0lUSU5HX0ZPUl9TTUFMTF9D
QU5WQVNFUykKLXN0YXRpYyBjb25zdCBpbnQgY2FudmFzQXJlYVRocmVzaG9sZFJlcXVpcmluZ0Nv
bXBvc2l0aW5nID0gNTAgKiAxMDA7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNhbnZhc0Fy
ZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAwOwogI2VuZGlmCiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcAppbmRleCBlOTYzN2VlYmUyMDYwOWFlMGM1ZDJiMWQ2ZjZiM2U2MWJjOWYx
Mjk4Li44NDZhZDE1MjVhZjIwNjYwN2I0MmJmNGVkMTEwY2ZhYTkxNGU5M2VlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTQ2Nyw4ICs0NjcsOCBA
QCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IExh
eW91dFNpemUmIGludHJpbnNpY1NpemUpCiAKICAgICBMZW5ndGhQb2ludCBvYmplY3RQb3NpdGlv
biA9IHN0eWxlKCkub2JqZWN0UG9zaXRpb24oKTsKIAotICAgIExheW91dFVuaXQgeE9mZnNldCA9
IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54KCksIGNvbnRlbnRSZWN0Lndp
ZHRoKCkgLSBmaW5hbFJlY3Qud2lkdGgoKSk7Ci0gICAgTGF5b3V0VW5pdCB5T2Zmc2V0ID0gbWlu
aW11bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0aW9uLnkoKSwgY29udGVudFJlY3QuaGVpZ2h0
KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgeE9mZnNldCA9IG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54LCBjb250ZW50UmVjdC53aWR0aCgpIC0g
ZmluYWxSZWN0LndpZHRoKCkpOworICAgIExheW91dFVuaXQgeU9mZnNldCA9IG1pbmltdW1WYWx1
ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi55LCBjb250ZW50UmVjdC5oZWlnaHQoKSAtIGZpbmFs
UmVjdC5oZWlnaHQoKSk7CiAKICAgICBmaW5hbFJlY3QubW92ZSh4T2Zmc2V0LCB5T2Zmc2V0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKaW5kZXggY2E1
Yjc0MGQ5MDQ0YmQ2NWUzNjZiNTdkNzZjMzQyOGMzZjllZTNmNi4uNGM0NzRjOTVlM2VlYzIyMmYw
NTM5OTM1MjI1ZDRhMjE5YTYwMjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEJveFBhaW50ZXIuY3BwCkBAIC02NDAsNyArNjQwLDcgQEAgY29uc3QgU2hhZG93RGF0YSogVGV4
dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdygpIGNvbnN0CiAgICAgaWYgKCF0ZXh0Qm94KCku
bGVnYWN5SW5saW5lQm94KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlYnVnVGV4dFNoYWRvdyhMZW5ndGhQb2ludChM
ZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVu
Z3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgyMCwgTGVuZ3RoVHlwZTo6Rml4ZWQp
LCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1aW50OF90PiB7IDE1MCwgMCwgMCwg
MTkwIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWJ1Z1RleHRT
aGFkb3coTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSB9LCBMZW5ndGgoMTAsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKDIwLCBMZW5n
dGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIFNSR0JBPHVpbnQ4X3Q+
IHsgMTUwLCAwLCAwLCAxOTAgfSk7CiAgICAgcmV0dXJuICZkZWJ1Z1RleHRTaGFkb3cuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKaW5kZXggNDU5
YmFmMTEyZmMwMzI3MGFmZTQ2ZmZlODRlZDBkNWJhNmIyNmUzOS4uMjVjZjQ4Y2Y0OTI4MTJlYTNl
YjBmZmY0NjAwMmNkZDBkNzc2ZWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludFN0eWxlLmgKQEAgLTMzLDEzICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgUmVuZGVyVGV4dDsKIGNs
YXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFNoYWRvd0RhdGE7CisK
IHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBUZXh0UGFpbnRTdHlsZSB7Ci0gICAgVGV4dFBh
aW50U3R5bGUoKSB7IH0KKyAgICBUZXh0UGFpbnRTdHlsZSgpID0gZGVmYXVsdDsKICAgICBUZXh0
UGFpbnRTdHlsZShjb25zdCBDb2xvciYpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRl
eHRQYWludFN0eWxlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db3VudGVyQ29udGVudC5oCmluZGV4IDU4NmNjNjY5ODAyNjVkOTg2M2FjYWFhN2VlNmI4YTk4
NjQ4MzI2YzYuLjdiZjViYzkwNmU4OGM1Mzc1ODEwY2MzZTFmYzI4ODk5MDlkNTBhYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCkBAIC0y
OSwzMiArMjksMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb3VudGVyQ29u
dGVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ291bnRl
ckNvbnRlbnQoY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllciwgTGlzdFN0eWxlVHlwZSBzdHls
ZSwgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKQotICAgICAgICA6IG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQotICAgICAgICAsIG1fbGlzdFN0eWxlKHN0eWxlKQotICAgICAgICAsIG1fc2Vw
YXJhdG9yKHNlcGFyYXRvcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzdHlsZSAhPSBMaXN0U3R5
bGVUeXBlOjpTdHJpbmcpOwotICAgIH0KK3N0cnVjdCBDb3VudGVyQ29udGVudCB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgY29uc3QgQXRvbVN0cmluZyYgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIExpc3RTdHlsZVR5
cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGU7IH0KLSAgICBjb25zdCBB
dG9tU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlcGFyYXRvcjsgfQotCi1w
cml2YXRlOgotICAgIEF0b21TdHJpbmcgbV9pZGVudGlmaWVyOwotICAgIExpc3RTdHlsZVR5cGUg
bV9saXN0U3R5bGU7Ci0gICAgQXRvbVN0cmluZyBtX3NlcGFyYXRvcjsKKyAgICBBdG9tU3RyaW5n
IGlkZW50aWZpZXI7CisgICAgTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGU7CisgICAgQXRvbVN0cmlu
ZyBzZXBhcmF0b3I7CiB9OwogCi1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b3VudGVyQ29udGVudCYgYSwgY29uc3QgQ291bnRlckNvbnRlbnQmIGIpCitpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50JiBhLCBjb25zdCBDb3VudGVyQ29udGVudCYg
YikKIHsKLSAgICByZXR1cm4gYS5pZGVudGlmaWVyKCkgPT0gYi5pZGVudGlmaWVyKCkKLSAgICAg
ICAgJiYgYS5saXN0U3R5bGUoKSA9PSBiLmxpc3RTdHlsZSgpCi0gICAgICAgICYmIGEuc2VwYXJh
dG9yKCkgPT0gYi5zZXBhcmF0b3IoKTsKKyAgICByZXR1cm4gYS5pZGVudGlmaWVyID09IGIuaWRl
bnRpZmllcgorICAgICAgICAmJiBhLmxpc3RTdHlsZSA9PSBiLmxpc3RTdHlsZQorICAgICAgICAm
JiBhLnNlcGFyYXRvciA9PSBiLnNlcGFyYXRvcjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCmluZGV4IDk1ZDM4
NjI3ZTE0MTNmNTI2MWMwOWM5ZmQ5ZmIxYWEyMjBkNTQ4YjQuLjcyNDBiOTZiZTgwZTk3MzM2YmNk
Y2JjZDRlZTdlMjhkYzY3ODg5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RmlsbExheWVyLmgKQEAgLTM1LDE4ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlbmRlckVsZW1lbnQ7CiAKIHN0cnVjdCBGaWxsU2l6ZSB7Ci0gICAgRmlsbFNpemUoKQotICAg
ICAgICA6IHR5cGUoRmlsbFNpemVUeXBlOjpTaXplKQotICAgIHsKLSAgICB9Ci0KLSAgICBGaWxs
U2l6ZShGaWxsU2l6ZVR5cGUgdHlwZSwgY29uc3QgTGVuZ3RoU2l6ZSYgc2l6ZSkKLSAgICAgICAg
OiB0eXBlKHR5cGUpCi0gICAgICAgICwgc2l6ZShzaXplKQotICAgIHsKLSAgICB9Ci0KLSAgICBG
aWxsU2l6ZVR5cGUgdHlwZTsKKyAgICBGaWxsU2l6ZVR5cGUgdHlwZSB7IEZpbGxTaXplVHlwZTo6
U2l6ZSB9OwogICAgIExlbmd0aFNpemUgc2l6ZTsKIH07CiAKQEAgLTg0LDcgKzczLDcgQEAgcHVi
bGljOgogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKTsgfQogICAgIGNvbnN0IExlbmd0aFNpemUmIHNpemVM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NpemVMZW5ndGg7IH0KICAgICBGaWxsU2l6ZVR5cGUg
c2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGaWxsU2l6ZVR5cGU+KG1fc2l6
ZVR5cGUpOyB9Ci0gICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZpbGxTaXplKHN0
YXRpY19jYXN0PEZpbGxTaXplVHlwZT4obV9zaXplVHlwZSksIG1fc2l6ZUxlbmd0aCk7IH0KKyAg
ICBGaWxsU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4geyBzaXplVHlwZSgpLCBtX3NpemVMZW5n
dGggfTsgfQogICAgIE1hc2tNb2RlIG1hc2tNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TWFza01vZGU+KG1fbWFza01vZGUpOyB9CiAKICAgICBjb25zdCBGaWxsTGF5ZXIqIG5leHQo
KSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQxZDk2MWRlODgyNmZiODMwMzMwOWI4ZTYzNTJm
MjBmOWVhYi4uZDQ3NmY5MzE5ODdjZmNhNzE0MTRjYmZkZWNkODFhYmIxZWRmY2UzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKQEAgLTQyLDcgKzQyLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRGVzcGl0ZSBsaW5lIG51bWJlcnMgaW4gdGhlIHNwZWMg
c3RhcnQgaW4gIjEiLCB0aGUgaW5kZXhlcyBoZXJlIHN0YXJ0IGluICIwIi4KIGNsYXNzIEdyaWRT
cGFuIHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBHcmlkU3BhbiB1bnRyYW5zbGF0ZWREZWZpbml0
ZUdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgcmV0
dXJuIEdyaWRTcGFuKHN0YXJ0TGluZSwgZW5kTGluZSwgVW50cmFuc2xhdGVkRGVmaW5pdGUpOwpA
QCAtMTQyLDggKzE0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0KLSAgICBlbnVt
IEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwg
SW5kZWZpbml0ZX07CisgICAgZW51bSBHcmlkU3BhblR5cGUgOiB1aW50OF90IHsgVW50cmFuc2xh
dGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZSB9OwogCiAgICAgR3Jp
ZFNwYW4oaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIEdyaWRTcGFuVHlwZSB0eXBlKQogICAg
ICAgICA6IG1fdHlwZSh0eXBlKQpAQCAtMTYzLDI0ICsxNjEsMjQgQEAgcHJpdmF0ZToKICAgICBp
bnQgbV9zdGFydExpbmU7CiAgICAgaW50IG1fZW5kTGluZTsKICAgICBHcmlkU3BhblR5cGUgbV90
eXBlOwotCi0KIH07CiAKIC8vIFRoaXMgcmVwcmVzZW50cyBhIGdyaWQgYXJlYSB0aGF0IHNwYW5z
IGluIGJvdGggcm93cycgYW5kIGNvbHVtbnMnIGRpcmVjdGlvbi4KLWNsYXNzIEdyaWRBcmVhIHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBIYXNoTWFwIHJl
cXVpcmVzIGEgZGVmYXVsdCBjb25zdHVjdG9yLgorc3RydWN0IEdyaWRBcmVhIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBHcmlkU3BhbiByb3dzOworICAgIEdy
aWRTcGFuIGNvbHVtbnM7CisKICAgICBHcmlkQXJlYSgpCi0gICAgICAgIDogY29sdW1ucyhHcmlk
U3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCi0gICAgICAgICwgcm93cyhHcmlkU3Bhbjo6aW5k
ZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgIDogcm93cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdy
aWRTcGFuKCkpCisgICAgICAgICwgY29sdW1ucyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFu
KCkpCiAgICAgewogICAgIH0KIAotICAgIEdyaWRBcmVhKGNvbnN0IEdyaWRTcGFuJiByLCBjb25z
dCBHcmlkU3BhbiYgYykKLSAgICAgICAgOiBjb2x1bW5zKGMpCi0gICAgICAgICwgcm93cyhyKQor
ICAgIEdyaWRBcmVhKEdyaWRTcGFuIHJvd3MsIEdyaWRTcGFuIGNvbHVtbnMpCisgICAgICAgIDog
cm93cyhyb3dzKQorICAgICAgICAsIGNvbHVtbnMoY29sdW1ucykKICAgICB7CiAgICAgfQogCkBA
IC0xOTMsMTEgKzE5MSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG8pOwogICAgIH0KLQotICAgIEdyaWRTcGFuIGNvbHVtbnM7Ci0gICAgR3JpZFNwYW4gcm93
czsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEdyaWRBcmVhPiBOYW1lZEdyaWRBcmVh
TWFwOwordXNpbmcgTmFtZWRHcmlkQXJlYU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBHcmlkQXJlYT47
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvR3JpZExlbmd0aC5oCmluZGV4IDg2YWNkMzMwZGY2OWY4M2IwZDJmZDMyMjdlYmI4MGU5ZWZl
N2U4N2EuLjVmODhkZTFmYzljMjEyMmNlMjJhZDdlMzBhMzBiMDg0OTM4NWU5MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaApAQCAtNDIsNyArNDIsNiBA
QCBjbGFzcyBHcmlkTGVuZ3RoIHsKIHB1YmxpYzoKICAgICBHcmlkTGVuZ3RoKGNvbnN0IExlbmd0
aCYgbGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAgICAgLCBtX2ZsZXgo
MCkKICAgICAgICAgLCBtX3R5cGUoTGVuZ3RoVHlwZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCgh
bGVuZ3RoLmlzVW5kZWZpbmVkKCkpOwpAQCAtNzIsMTQgKzcxLDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBMZW5ndGhUeXBlICYmIG1fbGVu
Z3RoLmlzQXV0bygpOyB9CiAKIHByaXZhdGU6Ci0gICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBwdXQg
dGhlIDIgZm9sbG93aW5nIGZpZWxkcyBpbiBhIHVuaW9uLCBidXQgTGVuZ3RoIGhhcyBhIGNvbnN0
cnVjdG9yLAotICAgIC8vIGEgZGVzdHJ1Y3RvciBhbmQgYSBjb3B5IGFzc2lnbm1lbnQgd2hpY2gg
aXNuJ3QgYWxsb3dlZC4KKyAgICAvLyBDb3VsZCB1c2UgYSBWYXJpYW50IGhlcmUgc2luY2Ugd2Ug
b25seSB1c2UgbV9sZW5ndGggb3IgbV9mbGV4LCBhbmQgbV90eXBlIGRldGVybWluZXMgd2hpY2gu
CiAgICAgTGVuZ3RoIG1fbGVuZ3RoOwotICAgIGRvdWJsZSBtX2ZsZXg7Ci0gICAgZW51bSBHcmlk
TGVuZ3RoVHlwZSB7Ci0gICAgICAgIExlbmd0aFR5cGUsCi0gICAgICAgIEZsZXhUeXBlCi0gICAg
fTsKKyAgICBkb3VibGUgbV9mbGV4IHsgMCB9OworICAgIGVudW0gR3JpZExlbmd0aFR5cGUgOiBi
b29sIHsgTGVuZ3RoVHlwZSwgRmxleFR5cGUgfTsKICAgICBHcmlkTGVuZ3RoVHlwZSBtX3R5cGU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAppbmRleCBhZDVhYmFkYWMwNGY3ZDJlYmJjYzY3MDRlMDEyOTNiMWRkZmFlM2E0Li4yZThkNTI2
YTlmYTE5NWQ0NTc0MTYyZWU2MTc5ZjNlY2U2M2M3ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTE0OTcsNyArMTQ5Nyw3IEBAIHZv
aWQgUmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zCiAgICAgLy8gU2hpZnQgZWxlbWVudCB0byB0aGUgYW5jaG9y
IHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgogICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0g
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94
LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOwogICAgIGF1dG8gYW5jaG9yID0gdHJh
bnNmb3JtT3JpZ2luOwotICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueCgpLmlzQXV0bygpKQorICAg
IGlmICghb2Zmc2V0QW5jaG9yKCkueC5pc0F1dG8oKSkKICAgICAgICAgYW5jaG9yID0gZmxvYXRQ
b2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hvcigpLCBib3VuZGluZ0JveC5zaXplKCkpICsg
Ym91bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1hbmNob3Iu
eCgpLCAtYW5jaG9yLnkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKaW5kZXggNzMyNDQ2OWQzMzYwZjRlMTM0ZDM0YzJkNmY4OGJlYmVjY2Y5YjYy
NC4uOGNjZTI5M2FkYTU1N2ZiODRiODIzZjFhMTE4Mjg0OGJlNDJkZjJmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEwOSw3ICsxMDksNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJvcmRlckRhdGE7CiBjbGFzcyBDb250ZW50
RGF0YTsKLWNsYXNzIENvdW50ZXJDb250ZW50OwogY2xhc3MgQ3Vyc29yTGlzdDsKIGNsYXNzIEZv
bnRDYXNjYWRlOwogY2xhc3MgRm9udE1ldHJpY3M7CkBAIC0xMjEsNiArMTIwLDcgQEAgY2xhc3Mg
U3R5bGVJbmhlcml0ZWREYXRhOwogY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYTsKIGNsYXNzIFRy
YW5zZm9ybWF0aW9uTWF0cml4OwogCitzdHJ1Y3QgQ291bnRlckNvbnRlbnQ7CiBzdHJ1Y3QgU2Ny
b2xsU25hcEFsaWduOwogc3RydWN0IFNjcm9sbFNuYXBUeXBlOwogCkBAIC03MDEsNyArNzAxLDcg
QEAgcHVibGljOgogICAgIFRleHRDb21iaW5lIHRleHRDb21iaW5lKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRDb21iaW5l
KTsgfQogICAgIGJvb2wgaGFzVGV4dENvbWJpbmUoKSBjb25zdCB7IHJldHVybiB0ZXh0Q29tYmlu
ZSgpICE9IFRleHRDb21iaW5lOjpOb25lOyB9CiAKLSAgICBjb25zdCBUYWJTaXplJiB0YWJTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGFiU2l6ZTsgfQorICAgIFRh
YlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNp
emU7IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMKIApAQCAtMTI3OCw3ICsxMjc4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QmFja2Ryb3BGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJhY2tkcm9w
RmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0VGFiU2l6
ZShjb25zdCBUYWJTaXplJiBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFi
U2l6ZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNldFRhYlNpemUoVGFiU2l6ZSBzaXplKSB7IFNFVF9W
QVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KIAogICAgIHZvaWQgc2V0
QnJlYWtCZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBicmVha0JlZm9yZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJyZWFr
QmVoYXZpb3IpKTsgfQogICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVha0JldHdlZW4gYnJlYWtC
ZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFrQWZ0ZXIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KQEAgLTE1ODYsNyArMTU4Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21iaW5lKCkg
eyByZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0KICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9u
IGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVk
OyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2Jq
ZWN0Rml0OjpGaWxsOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3Np
dGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVy
Y2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOyB9CisgICAgc3RhdGlj
IExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIHsgTGVuZ3RoKDUw
LjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJj
ZW50KSB9OyB9CiAgICAgc3RhdGljIEVtcHR5Q2VsbCBpbml0aWFsRW1wdHlDZWxscygpIHsgcmV0
dXJuIEVtcHR5Q2VsbDo6U2hvdzsgfQogICAgIHN0YXRpYyBMaXN0U3R5bGVQb3NpdGlvbiBpbml0
aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBMaXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lk
ZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbml0aWFsTGlzdFN0eWxlU3RyaW5n
VmFsdWUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CkBAIC0xOTAxLDExICsxOTAxLDExIEBAIHB1
YmxpYzoKIAogICAgIExlbmd0aFBvaW50IG9mZnNldFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0UG9zaXRpb247IH0KICAgICB2b2lkIHNldE9m
ZnNldFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBvZmZzZXRQb3NpdGlvbiwgV1RGTW92ZShwb3NpdGlvbikpOyB9Ci0gICAg
c3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0
aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8p
KTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0UG9zaXRpb24oKSB7IHJl
dHVybiB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6OkF1dG8gfSB9OyB9CiAK
ICAgICBMZW5ndGhQb2ludCBvZmZzZXRBbmNob3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5vZmZzZXRBbmNob3I7IH0KICAgICB2b2lkIHNldE9mZnNldEFuY2hvcihM
ZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
b2Zmc2V0QW5jaG9yLCBXVEZNb3ZlKHBvc2l0aW9uKSk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoUG9p
bnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aChMZW5n
dGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsgfQorICAgIHN0YXRpYyBM
ZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0QW5jaG9yKCkgeyByZXR1cm4geyB7IExlbmd0aFR5cGU6
OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsgfQogCiAgICAgT2Zmc2V0Um90YXRpb24g
b2Zmc2V0Um90YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zm
c2V0Um90YXRlOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRSb3RhdGUoT2Zmc2V0Um90YXRpb24mJiBy
b3RhdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9mZnNldFJvdGF0ZSwg
V1RGTW92ZShyb3RhdGlvbikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHAKaW5kZXggODdjYTJiMjUyZjk2Zjg1ZTRiNDQwYjZmZDJjMGY4ZTkzYWRl
N2EwYy4uZGUzZGM2YzRjZGUxMjk3ZWVhMGNmY2Q2ZDYxZDY0NDEyODEwZTJiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMjgsNyArMjgs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0
IFNoYWRvd0RhdGEmIG8pCi0gICAgOiBtX2xvY2F0aW9uKG8ubV9sb2NhdGlvbi54KCksIG8ubV9s
b2NhdGlvbi55KCkpCisgICAgOiBtX2xvY2F0aW9uKG8ubV9sb2NhdGlvbikKICAgICAsIG1fc3By
ZWFkKG8ubV9zcHJlYWQpCiAgICAgLCBtX3JhZGl1cyhvLm1fcmFkaXVzKQogICAgICwgbV9jb2xv
cihvLm1fY29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEu
aAppbmRleCAyMmZlZjc2MmJjYTMxMGI2M2FlZmU4NTg2ZjQyMmFiOWY4M2MwNWYyLi5kOWE0MWEx
NWJhMGQxZWZhOWM4ZmU1NDA3YjNkNTBlOWYyZWUwYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IFNoYWRvd0RhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFkb3dEYXRhKGNvbnN0IExlbmd0aFBv
aW50JiBsb2NhdGlvbiwgTGVuZ3RoIHJhZGl1cywgTGVuZ3RoIHNwcmVhZCwgU2hhZG93U3R5bGUg
c3R5bGUsIGJvb2wgaXNXZWJraXRCb3hTaGFkb3csIGNvbnN0IENvbG9yJiBjb2xvcikKLSAgICAg
ICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgpKQorICAgICAgICA6IG1f
bG9jYXRpb24obG9jYXRpb24pCiAgICAgICAgICwgbV9zcHJlYWQoc3ByZWFkKQogICAgICAgICAs
IG1fcmFkaXVzKHJhZGl1cykKICAgICAgICAgLCBtX2NvbG9yKGNvbG9yKQpAQCAtNjIsOCArNjIs
OCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KICAgICAK
LSAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uLngoKTsgfQot
ICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ueSgpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi54OyB9CisgICAg
Y29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi55OyB9CiAgICAgY29u
c3QgTGVuZ3RoUG9pbnQmIGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQog
ICAgIGNvbnN0IExlbmd0aCYgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KICAg
ICBMYXlvdXRVbml0IHBhaW50aW5nRXh0ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaAppbmRleCBhMmM3
YjBkYjNkNmU1ZmVkNjUzNmE1NjM5YjQ1NzkyZTQ3ODAxMTc5Li41Mzc0NzIyYWIwOTRjNTc4Mzc4
Y2RkMWU1ZDI5YWYwZWQ5OWE1YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCkBAIC0yNSwxMSArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkxlbmd0aEJveC5oIgotI2luY2x1ZGUgIkxlbmd0
aFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgK
aW5kZXggMGY5MGJjMjI1OWVkNGYzYzBiMzY0YTlhNmQ0YjQ3NDQzNWYxZGRjMi4uYjcwYjU1MTg0
MDQyZjkyZWM5YWQ5ZTg0ZTIzYzNkZjg4ZmRiYzFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTI2OSw4ICsyNjksOCBAQCBpbmxpbmUgVGFi
U2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFiU2l6ZShjb25zdCBCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIo
KSkKLSAgICAgICAgcmV0dXJuIFRhYlNpemUocHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpLCBT
cGFjZVZhbHVlVHlwZSk7Ci0gICAgcmV0dXJuIFRhYlNpemUocHJpbWl0aXZlVmFsdWUuY29tcHV0
ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSks
IExlbmd0aFZhbHVlVHlwZSk7CisgICAgICAgIHJldHVybiB7IHByaW1pdGl2ZVZhbHVlLmZsb2F0
VmFsdWUoKSwgVGFiU2l6ZTo6U3BhY2VzIH07CisgICAgcmV0dXJuIHsgcHJpbWl0aXZlVmFsdWUu
Y29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEoKSksIFRhYlNpemU6Okxlbmd0aCB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
NDE4LDcgKzQxOCw3IEBAIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UG9zaXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgTGVuZ3RoIGxlbmd0
aFggPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0
PihidWlsZGVyU3RhdGUsICpwYWlyLT5maXJzdCgpKTsKICAgICBMZW5ndGggbGVuZ3RoWSA9IGNv
bnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20+KGJ1aWxk
ZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKIAotICAgIHJldHVybiBMZW5ndGhQb2ludChsZW5n
dGhYLCBsZW5ndGhZKTsKKyAgICByZXR1cm4geyBsZW5ndGhYLCBsZW5ndGhZIH07CiB9CiAKIGlu
bGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25PckF1dG8o
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTQy
OCw3ICs0MjgsNyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlcgogICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5pc1BhaXIoKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRQb3NpdGlvbihidWlsZGVyU3Rh
dGUsIHZhbHVlKTsKIAotICAgIHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6
QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7CisgICAgcmV0dXJuIHsgeyBMZW5ndGhU
eXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9IH07CiB9CiAKIGlubGluZSBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb25MaW5lPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29y
YXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAxM2NhZDliN2ZkNzcyYTZjZDIzOTgz
NDBlMjgyNzcxYmQ0OWI0NDYxLi5lODNlZjljNGE3ZjJkNGNlMTAyYWRkYjc5YzlhN2QwMjliMzA4
Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtOTU2
LDcgKzk1Niw3IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hh
ZG93VmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbG9yID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuY29sb3IoKTsKIAotICAgICAgICBh
dXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KExlbmd0aFBvaW50KHgsIHkp
LCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtp
dEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRC
bGFjayk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4o
TGVuZ3RoUG9pbnQgeyB4LCB5IH0sIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5
ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6
IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1By
b3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRl
eHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0
aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQpAQCAt
MTU4Myw3ICsxNTgzLDcgQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNv
bnRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHUKICAgICAgICAgICAgIENT
U1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7
CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAg
ICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0
U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBt
YWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlz
dFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRv
IGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50PihDb3VudGVyQ29udGVudCB7IGNv
dW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNl
cGFyYXRvcigpIH0pOwogICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q29udGVu
dChXVEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsK
ICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0UG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFBvcHVwTWVudS5oCmluZGV4IGYzZjVlYjkyN2MzNDI1MmUxZGI2YThhNGNhMDA3MWEy
ODhlMjYyOWIuLjI0ODE2ZDU2YTFjNTIwNzAyYWQ5MDM4ZDMxZDhjNjUwMGJkOGM5MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb3B1cE1lbnUuaApA
QCAtMjAsNiArMjAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQ
cm94eS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIu
aD4KIAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE9wdGlvbk1lbnUgV2ViS2l0T3B0aW9uTWVudTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggMzM1ZjNm
YWRmYWFlZWUzZWI2MjUxZWZiOTg5OTUzOTE0ZDYwMTYzNS4uZDhmNzdmNmFmMWI1N2EyMDhhNGVl
MmRlMzM1OWE1YmFhODlkMmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGI1MDZjNGVkNThhNjNkMzM5MmMyNGY5NmI1YjIzMzQwNGQ2MDE5MjIu
LjhkZTVmZjJlYjMyZWM1MzkyNjJiYmMyMjU3ZjU2YmRlMjQ4ZTgzYjcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
Mi0wMS0yNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1p
emUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci93aW4vQ29tbW9uLmg6IEFkZGVkIGluY2x1ZGUgb2YgPG9wdGlvbmFsPiwgbm8gbG9uZ2VyIHB1
bGxlZCBpbiBieQorICAgICAgICBvdGhlciBoZWFkZXJzLgorCisgICAgICAgICogVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkIGluY2x1
ZGUgb2YKKyAgICAgICAgPG9wdGlvbmFsPiwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBvdGhlciBo
ZWFkZXJzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNw
cDogVXBkYXRlZCB0ZXN0cyBmb3IgY2hhbmdlIHRvIE9wdGlvblNldCBmb3IKKyAgICAgICAgTWVk
aWFUaW1lIGZsYWdzLCBhbmQgZm9yIG5hbWUgY2hhbmdlIGZyb20gUm91bmRpbmdGbGFncyB0byBS
b3VuZGluZ01vZGUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDogQWRkZWQgaW5jbHVkZQorICAgICAgICBv
ZiA8b3B0aW9uYWw+LCBubyBsb25nZXIgcHVsbGVkIGluIGJ5IG90aGVyIGhlYWRlcnMuCisKIDIw
MjItMDEtMjUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtFV1NdIFN1cHBvcnQgcHVsbCByZXF1ZXN0cyBpbiBUcmlnZ2VyIChGb2xsb3ctdXAgZml4KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oIGIvVG9vbHMvTWluaUJy
b3dzZXIvd2luL0NvbW1vbi5oCmluZGV4IDk5NjRkNWU1MDQzMTlkNzc4MzM2ODNkZGY1ODA5YmM3
ZjdmNGRjMGIuLjgwNWUzNjI3ZDc3NDBiZTIwOTA4MGM4NDU3YTgyZjhhOWMzM2RlMzkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaAorKysgYi9Ub29scy9NaW5pQnJv
d3Nlci93aW4vQ29tbW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgInN0ZGFmeC5o
IgogI2luY2x1ZGUgIk1haW5XaW5kb3cuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KIAogZW51bSBj
bGFzcyBCcm93c2VyV2luZG93VHlwZSB7CiAgICAgV2ViS2l0LApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9U
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
aAppbmRleCBjODIyNzc5OGZhMTEyMmVmZTQ0YjJkNWM2NGZiZjY1MDMwMTU2ZWIwLi5lOTIxZTg5
NmI3MGJhMmFhY2ZhNTk5M2UyNTdjMzI5OWVkYjMwM2E2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KIAogT0JKQ19DTEFTUyBOU1VuZG9NYW5hZ2VyOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAKaW5kZXggYjBiNTRhODAzZmFjODVk
MTU4NGU3MjNjODZlMWQ5Y2JhNDRkY2U3YS4uZGM4ZTI4OTg0YWUzYTgwMmU1NzM4Njc2NjE1Mjk1
OTRhYzU5ZDQ3OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVk
aWFUaW1lLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUu
Y3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgVEVTVChXVEYsIE1lZGlhVGltZSkKIAogICAgIC8vIENv
bnN0YW50cwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Onplcm9UaW1lKCksIE1lZGlhVGltZSgw
LCAxKSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1l
KC0xLCAxLCAwKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVk
aWFUaW1lKC0xLCAxLCB7IH0pKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRl
KSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVk
aWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZSkpOwogICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRpYVRpbWU6
OkluZGVmaW5pdGUpKTsKQEAgLTI1NCw2OSArMjU0LDY5IEBAIFRFU1QoV1RGLCBNZWRpYVRpbWUp
CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgyLCAyKS50b1RpbWVTY2FsZSgxKS50aW1lVmFsdWUo
KSwgMSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgyLCA2KS50b1RpbWVTY2FsZSgzKS50aW1l
VmFsdWUoKSwgMSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgx
KS5oYXNCZWVuUm91bmRlZCgpLCB0cnVlKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVy
bykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSg0OSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVW
YWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCks
IDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlh
VGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFn
czo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkWmVybykudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGlt
ZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7
Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFU
aW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpU
b3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEs
IDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJv
KS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFs
dWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwg
TWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOwot
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6
QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgt
MSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVpl
cm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZh
bHVlKCksIDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
Mik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6
OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEw
MCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1l
VmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5p
dHkpLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5m
aW5pdHkpLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5m
aW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0x
NDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQ
b3NpdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRO
ZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRO
ZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRO
ZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dh
cmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpU
b3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpU
b3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFn
czo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0y
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSg1MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpI
YWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgxNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZB
d2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0
OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlG
cm9tWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJv
KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1l
VmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgp
LCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwg
LTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0x
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJv
KS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1
ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01v
ZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJk
WmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFs
dWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0x
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5k
aW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3
YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMs
IDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFs
dWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGlt
ZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKC00OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9k
ZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJv
bVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8p
LnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVW
YWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZh
bHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVl
KCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1lVmFs
dWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZh
bHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50aW1l
VmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5p
dHkpLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1Rp
bWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0
eSkudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5p
dHkpLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZp
bml0eSkudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAx
MDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2
ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMs
IDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2
ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1
MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVn
YXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0xNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2Fy
ZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7CiAgICAgRVhQRUNUX0VRKE1lZGlh
VGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIDEpLnRvVGltZVNjYWxlKDIpLCBN
ZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOwogICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpLCAxKS50b1RpbWVTY2FsZSgyKSwgTWVk
aWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsKICAgICBpbnQ2NF90IG1heEludDMyID0g
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
bWF4SW50MzIgKiAyLCAxKS50b1RpbWVTY2FsZSgyKS50aW1lVmFsdWUoKSwgbWF4SW50MzIgKiA0
KTsKICAgICBpbnQ2NF90IGJpZ0ludCA9IDFMTCA8PCA2MjsKICAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKGJpZ0ludCwgMVUgPDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8IDI5KS50aW1lVmFsdWUoKSwg
YmlnSW50IC8gNCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQgKyAxLCAxVSA8PCAz
MSkudG9UaW1lU2NhbGUoMVUgPDwgMjksIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJk
WmVybykudGltZVZhbHVlKCksIGJpZ0ludCAvIDQpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
YmlnSW50ICsgMSwgMVUgPDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8IDI5LCBNZWRpYVRpbWU6OlJv
dW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIGJpZ0ludCAvIDQpOwogICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoYmlnSW50ICsgMSwgMVUgPDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8
IDI5KS5oYXNCZWVuUm91bmRlZCgpLCB0cnVlKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJp
Z0ludCAtIDIsIE1lZGlhVGltZTo6TWF4aW11bVRpbWVTY2FsZSkudG9UaW1lU2NhbGUoTWVkaWFU
aW1lOjpNYXhpbXVtVGltZVNjYWxlIC0gMSkuaGFzQmVlblJvdW5kZWQoKSwgdHJ1ZSk7CiAgICAg
RVhQRUNUX0VRKE1lZGlhVGltZShiaWdJbnQsIDEpLnRvVGltZVNjYWxlKE1lZGlhVGltZTo6TWF4
aW11bVRpbWVTY2FsZSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TaWduYWxzLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NpZ25hbHMuY3BwCmluZGV4IDI0NWIxYWU3MTczOTVi
MzdlOGQyNWU4MjMzNDhjNWIwZWIyMTMxNDAuLmQ2MDJlNjMxZjI3YjBjOTJhNjkzZWNmYTBkOTY3
YjZlN2E0MmE3ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Np
Z25hbHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NpZ25hbHMuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3
dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCmluZGV4IDY1YmZi
ZGVmMDgyMjQ2MDgyM2NmZDYxYWEzNzI4NzQ5NWIyYjFkYTQuLjU0NDRhYzdlY2FjYmI5MzZiZThj
MGY2ODI3NjUxMTg2YjhlMzA5NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9HZXRVc2VyTWVkaWEubW0KQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgPFdlYktp
dC9fV0tJbnRlcm5hbERlYnVnRmVhdHVyZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvU2Vjb25kcy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCmluZGV4IGVhMDExMGM1ZjU0YzBhNTQwMjIwZTE3
NjdhNmRlMTM3OGYzYzJjYzAuLmI5MmIwZjk1ZjBmNzFlZGE2YjQ4MGFlNTExODViOWM0ODI2YzMw
YWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQpAQCAtMzUsNiArMzUsNyBAQAog
I2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1dhbGxUaW1lLmg+CiAKIHN0YXRpYyBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3V2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkSW5OZXR3
b3JrUHJvY2VzcygpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCmlu
ZGV4IDIxOTRjYTNlMGI4NzU3NGUxYjhjODI3NGZmMTRmNWNhODVmMmIxMzcuLjZjNDE1MGE0NGMx
OWM4N2NhOTlhMTE3OWMwYzE1YmRkYjY0M2ZkZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJKU1dyYXBwYWJs
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8
b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450030</attachid>
            <date>2022-01-26 09:51:19 -0800</date>
            <delta_ts>2022-01-26 12:03:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235501-20220126095118.patch</filename>
            <type>text/plain</type>
            <size>152084</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OGQzMThiMmQ3NWUwMDQwYzVmZTBhYmM5OTc3MmMxMTVhMTg3ZmFmLi5lODBiZjVmYTIzM2Y4YTk2
YjE4MDY1M2U5OTNiZTllMWFlYTQxNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMS0yNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1w
bGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwOiBBZGQgYW4gaW5jbHVkZSBvZiBTZWNvbmRz
Lmggc2luY2UKKyAgICAgICAgaW5jbHVkaW5nIExvY2suaCBubyBsb25nZXIgcHVsbHMgaXQgaW4u
CisKIDIwMjItMDEtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBEbyBub3QgcnVuIHRlc3RQaW5nUG9uZ1N0YWNrT3ZlcmZsb3cgd2hpbGUgcnVu
bmluZyBtdWx0aXRocmVhZGVkIE11bHRpdGhyZWFkZWRNdWx0aVZNRXhlY3V0aW9uVGVzdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCAzNTZmNDIwYzM2Y2EzNWU2YzQzZjBhZGIyZGY0ZGJlZjJlMTYyMmVhLi40MTVlMjQ1ZTNiMWNk
N2FhZDFiYmIyZjJiNjUxN2M4M2YyODczZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMi0w
MS0yNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUg
YW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBzaW1wbGUgc3RydWN0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTAxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5o
OiBBZGQgU2Vjb25kcyBhbmQgV2FsbFRpbWUgdG8gdGhlIHVzaW5nIHNlY3Rpb24uCisKKyAgICAg
ICAgKiB3dGYvTG9jay5oOiBVc2UgRm9yd2FyZC5oIGluc3RlYWQgb2YgU2Vjb25kcy5oIHNpbmNl
IFNlY29uZHMgaXMgb25seSB1c2VkCisgICAgICAgIGhlcmUgYXMgYW4gYXJndW1lbnQgYW5kIHJl
dHVybiB0eXBlLCBubyBhY3R1YWwgdXNlIG9mIHRoZSBjbGFzcyBpbiB0aGUgaGVhZGVyLgorCisg
ICAgICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVk
aWFUaW1lKTogRGVsZXRlZCB0aGUgY29weSBjb25zdHJ1Y3RvciB0aGF0IHVzZWQgdGhlIGFzc2ln
bm1lbnQKKyAgICAgICAgb3BlcmF0b3IuIFRoZSBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3Igd29y
a3MgZmluZSwgd2UgZG9uJ3QgaGF2ZSB0byB3cml0ZSBvbmUuCisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6TWVkaWFUaW1lKTogQWRkZWQgYSBIYXNEb3VibGUgY29uc3RydWN0b3IgZm9yIHVzZSBp
biBjcmVhdGUKKyAgICAgICAgZnVuY3Rpb25zLiBJdCdzIGNvbnN0ZXhwciBidXQgaXQncyBpbiB0
aGUgLmNwcCBmaWxlIGJlY2F1c2UgaXQncyBwcml2YXRlLgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhGbG9hdCk6IFNpbXBsaWZpZWQgYnkgdXNpbmcgdGhlIEhhc0RvdWJsZSBj
b25zdHJ1Y3Rvci4KKyAgICAgICAgQWxzbyB1c2Ugc3RkOjppc25hbiBpbnN0ZWFkIG9mIGEgdHJp
Y2t5IGFsdGVybmF0ZSB3YXkgb2YgZG9pbmcgaXQuIFJlbW92ZWQgYQorICAgICAgICBzcGVjaWFs
IGNhc2UgZm9yIGluZmluaXR5IHNpbmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIGNhc2VzIGFs
cmVhZHkgY292ZXIgdGhhdC4KKyAgICAgICAgQW5kIHJlcGxhY2VkIGEgc3RhdGljX2Nhc3Qgd2l0
aCBhbiBhc3NpZ25tZW50IHRvIHRoZSBkZXNpcmVkIHR5cGUuCisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZSk6IERpdHRvLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHNvIHNp
bWlsYXIgdGhlCisgICAgICAgIHNob3VsZCBwcm9iYWJseSBiZSB0ZW1wbGF0ZWQgaW5zdGVhZCBv
ZiByZXBlYXRlZCB0d2ljZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0Zsb2F0IGNvbnN0
KTogUmVwbGFjZWQgYSBzdGF0aWNfY2FzdCB3aXRoIGFzc2lnbm1lbnQgdG8gdGhlCisgICAgICAg
IGRlc2lyZWQgdHlwZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0RvdWJsZSBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuIFRo
ZSBkZWZhdWx0IGFzc2lnbm1lbnQgb3BlcmF0b3Igd29ya3MgZmluZS4KKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpvcGVyYXRvcisgY29uc3QpOiBUYWtlIHRoZSBhcmd1bWVudCBieSB2YWx1ZSBp
bnN0ZWFkIG9mIHJlZmVyZW5jZS4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvci0g
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciogY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvciEgY29uc3QpOiBTaW1w
bGlmaWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBieSB1c2luZworICAgICAgICBmdW5jdGlvbnMgaW5z
dGVhZCBvZiBjaGVja2luZyB0aGUgZmxhZ3MgZGlyZWN0bHkuCisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IENhbGwgb3BlcmF0b3IhIGluc3RlYWQgb2YgcmVw
ZWF0aW5nIHRoZQorICAgICAgICBsb2dpYyB0d2ljZS4KKyAgICAgICAgKFdURjo6b3JkZXJpbmcp
OiBBZGRlZCB0d28gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuIE9uZSBpcyBhIHRlbXBsYXRlIHRoYXQg
Y29tcGFyZXMKKyAgICAgICAgc2NhbGFycyBhbmQgdGhlIG90aGVyIGNvbXBhcmVzIHR3byBNZWRp
YVRpbWUgb2JqZWN0cy4gVGhlIHNlY29uZCBvbmUgcmVwbGFjZXMgdGhlCisgICAgICAgIE1lZGlh
VGltZTo6Y29tcGFyZSBmdW5jdGlvbiwgd2hpY2ggaXMgbm93IGp1c3QgYSBsaWdodHdlaWdodCBj
b3ZlciBmb3IgdGhpcy4KKyAgICAgICAgVGhlIG9sZCBjb2RlIGhhZCB0cmlja3kgbG9naWMsIGFu
ZCB0aGlzIG5ldyBmdW5jdGlvbiBpcyBhIGNvbXBsZXRlIHJld3JpdGUuCisgICAgICAgIFRvIG1h
a2UgdGhlIGxvZ2ljIGVhc3kgdG8gZm9sbG93LCB3ZSBleHRyYWN0IHRoZSBwaWVjZXMgb2YgdGhl
IE1lZGlhVGltZSBhbmQKKyAgICAgICAgY29tcGFyZSB0aGVtLiBJZiB0aGV5IGFyZSBlcXVhbCB0
aGVuIHdlIGZhbGwgdGhyb3VnaCB0byB0aGUgbmV4dCwgYW5kIHNvIG9uLgorICAgICAgICBBdCB0
aGUgZW5kIHRoZXJlIGFyZSB2YXJpb3VzIGNhc2VzIGZvciB0aW1lcyB3ZSBjYW4gY29tcGFyZSB3
aXRob3V0IGRvaW5nCisgICAgICAgIGFyaXRobWV0aWMsIGFuZCB0aGVzZSBhcmUgdGhlIHNhbWUg
YXMgdGhlIG9uZXMgdGhhdCB3ZXJlIGFscmVhZHkgaGVyZSwgYnV0IHdpdGgKKyAgICAgICAgc2lt
cGxpZmllZCBsb2dpYyBpbiBzb21lIGNhc2VzIHRoYXQgc2hvdWRsIGJlIGVhc2llciB0byBmb2xs
b3csIGFuZCBubyB1c2VzIG9mCisgICAgICAgIHN0YXRpY19jYXN0IGFueSBtb3JlLgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6OmlzQmV0d2VlbiBjb25zdCk6IFRha2UgYXJndW1lbnRzIGJ5IHZh
bHVlIGluc3RlYWQgb2YgcmVmZXJlbmNlLgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9U
aW1lKTogRGVsZXRlZC4gTm93IGEgY29uc3RleHByIGluIHRoZSBoZWFkZXIuCisgICAgICAgIChX
VEY6Ok1lZGlhVGltZTo6aW52YWxpZFRpbWUpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdU
Rjo6TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSk6IERlbGV0ZWQuIERpdHRvLgorICAg
ICAgICAoV1RGOjpNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKTogRGVsZXRlZC4gRGl0
dG8uCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUpOiBEZWxldGVkLiBE
aXR0by4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b1RpbWVTY2FsZSBjb25zdCk6IFVwZGF0
ZWQgc2luY2UgUm91bmRpbmdGbGFncyBpcyBub3cKKyAgICAgICAgUm91bmRpbmdNb2RlLiBJdCBk
aWRuJ3QgbWFrZSBzZW5zZSB0byB0cmVhdCBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcgcG9s
aWNpZXMKKyAgICAgICAgYXMgImZsYWdzIi4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpzZXRU
aW1lU2NhbGUpOiBEaXR0by4gQWxzbyB1c2Ugc3RkOjpleGNoYW5nZSBpbnN0ZWFkIG9mIHN0ZDo6
c3dhcAorICAgICAgICBhbmQgdXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgbGxhYnMuCisgICAgICAg
IChXVEY6Ok1lZGlhVGltZTo6dG9KU09OT2JqZWN0IGNvbnN0KTogUmVtb3ZlZCBzdGF0aWNfY2Fz
dCB0byBkb3VibGUuCisgICAgICAgIChXVEY6OmFicyk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUg
aW5zdGVhZCBvZiByZWZlcmVuY2UuIFJlbmFtZWQgYXJndW1lbnQgZnJvbSByaHMKKyAgICAgICAg
c2luY2UgdGhlIGFyZ3VtZW50IGlzIG5vdCB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG9wZXJh
dG9yLiBSZW1vdmVkIHVubmVlZGVkCisgICAgICAgIHNwZWNpYWwgY2FzZSB0byBoYW5kbGUgaW52
YWxpZCBiZWNhdXNlIHRoZSBmdW5jdGlvbiB3b3JrcyBmaW5lIG9uIGludmFsaWQgd2l0aG91dCBp
dC4KKyAgICAgICAgVXNlIHN0ZDo6YWJzIGluc3RlYWQgb2YgZmFicy4KKyAgICAgICAgKFdURjo6
b3BlcmF0b3I8PCk6IFRha2UgYXJndW1lbnQgYnkgdmFsdWUgaW5zdGVhZCBvZiByZWZlcmVuY2Uu
CisKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmg6IFJlbW92ZWQgbWFueSB1bm5lZWRlZCBpbmNs
dWRlcy4gUmVtb3ZlZCBXVEZfRVhQT1JUX1BSSVZBVEUKKyAgICAgICAgZnJvbSB0aGUgY2xhc3Mg
YmVjYXVzZSBpdCdzIG5vdCBjb21wYXRpYmxlIHdpdGggaW5saW5lZCBmdW5jdGlvbnMgYWNjb3Jk
aW5nIHRvCisgICAgICAgIHRoZSBzdHlsZSBjaGVja2VyIHNjcmlwdCwgaW5zdGVhZCBleHBvcnRp
bmcgaW5kaXZpZHVhbCBmdW5jdGlvbnMuIFVzZSBPcHRpb25TZXQKKyAgICAgICAgZm9yIHRoZSBm
bGFncy4gQ2hhbmdlZCBmdW5jdGlvbnMgdG8gdGFrZSBNZWRpYVRpbWUgYnkgdmFsdWUsIHNpbmNl
IGl0J3MganVzdCBhCisgICAgICAgIGZldyBzY2FsYXJzLCBubyBzaWduaWZpY2FudCBjb3N0IHRv
IGNvcHlpbmcgaXQsIGFuZCBwYXNzaW5nIGJ5IHZhbHVlIG1lYW5zIHRoZQorICAgICAgICB3aG9s
ZSB0aGluZyBtaWdodCBlbmQgdXAgaW4gcmVnaXN0ZXJzIHNpbmNlIHdlIHdvbid0IG5lZWQgYSBw
b2ludGVyIHRvIGl0IHRvCisgICAgICAgIHBhc3MgYXMgdGhlIHJlZmVyZW5jZS4gTWFkZSB0aGUg
dmFyaW91cyBzcGVjaWFsIHRpbWVzIHJldHVybiBjb25zdGV4cHIgdmFsdWVzLAorICAgICAgICB3
aGljaCB3aWxsIGNvbXBpbGUgdGhlIGFwcHJvcHJpYXRlIGJpdCBwYXR0ZXJuIHdpdGhvdXQgYW55
IGNvbXB1dGF0aW9uIG5lZWRlZC4KKyAgICAgICAgQ2hhbmdlZCB0aGUgdGltZVZhbHVlIGFuZCB0
aW1lU2NhbGUgZnVuY3Rpb25zIHRvIHJldHVybiB0aGUgc2NhbGFycywgbm90IGEKKyAgICAgICAg
Y29uc3QgcmVmZXJlbmNlLiBSZW5hbWVkIFJvdW5kaW5nRmxhZ3MgdG8gUm91bmRpbmdNb2RlIHNp
bmNlIGl0J3MgYSBidW5jaCBvZgorICAgICAgICBtdXR1YWxseSBleGNsdXNpdmUgcm91bmRpbmcg
bW9kZXMsIG5vdCBhIHNldCBvZiBmbGFncyB3ZSBjYW4gY29tYmluZS4gUmVuYW1lZAorICAgICAg
ICB0aGUgZGF0YSBtZW1iZXJzLCBzaW5jZSB0aGV5IGRvbid0IGFsbCBuZWVkIGEgInRpbWUiIHBy
ZWZpeCBpbiBhIGNsYXNzIHRoYXQgaXMKKyAgICAgICAgYWxyZWFkeSBuYW1lZCBNZWRpYVRpbWUu
IFRvb2sgc29tZSB1bm5lZWRlZCBjb25zdCBvdXQgb2YgTWVkaWFUaW1lUmFuZ2UuCisgICAgICAg
IEFkZGVkIHRoZSBFbnVtVHJhaXRzIGZvciB0aGUgZmxhZ3Mgc28gdGhleSBjYW4gYmUgZW5jb2Rl
ZCBhbmQgZGVjb2RlZC4gQmVmb3JlCisgICAgICAgIHdlIHdlcmUgZW5jb2RpbmcgdGhlIHNldCBv
ZiBmbGFncyBhcyBhIHVpbnQ4X3QsIHRoaXMgaXMgYmV0dGVyLgorCisgICAgICAgICogd3RmL1Nl
Y29uZHMuaDogTW92ZWQgdGhlICJ1c2luZyBXVEY6OlNlY29uZHMiIHRvIEZvcndhcmQuaC4KKwor
ICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6IEluY2x1ZGUgRm9yd2FyZC5oIGlu
c3RlYWQgb2YgV2FsbFRpbWUuaCBzaW5jZQorICAgICAgICB0aGlzIGZpbGUgb25seSBkZWZpbmVz
IGEgZnVuY3Rpb24gd2l0aCBhIFdhbGxUaW1lIGFyZ3VtZW50IGFuZCBkb2Vzbid0IG5lZWQKKyAg
ICAgICAgdG8gcHVsbCB0aGUgZW50aXJlIGNsYXNzIGRlZmluaXRpb24gaW4uCisKKyAgICAgICAg
KiB3dGYvVVJMLmNwcDoKKyAgICAgICAgKFdURjo6cG9ydEFsbG93ZWQpOiBVc2UgU29ydGVkQXJy
YXlTZXQuCisKKyAgICAgICAgKiB3dGYvV2FsbFRpbWUuaDogTW92ZWQgdGhlICJ1c2luZyBXVEY6
OldhbGxUaW1lIiB0byBGb3J3YXJkLmguCisKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudENvZGVyLmg6IEluY2x1ZGUgPG9wdGlvbmFsPiBpbnN0ZWFkIG9mIEZvcndhcmQuaC4K
KyAgICAgICAgVGhlIGZvcm1lciBpcyBhbGwgdGhhdCdzIG5lZWRlZC4KKworICAgICAgICAqIHd0
Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHA6IEFkZGVkIGFuIGluY2x1ZGUgb2YgV2FsbFRpbWUu
aCBzaW5jZQorICAgICAgICBUaHJlYWRpbmdQcmltaXRpdmVzLmggbm8gbG9uZ2VyIHB1bGxzIGl0
IGluLgorCisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5oOiBBZGRlZCBhbiBpbmNsdWRl
IG9mIDxvcHRpb25hbD4gc2luY2UgTG9jay5oIG5vCisgICAgICAgIGxvbmdlciBwdWxscyBpdCBp
biBieSBpbmNsdWRpbmcgU2Vjb25kcy5oLgorCisgICAgICAgICogd3RmL3dpbi9UaHJlYWRpbmdX
aW4uY3BwOiBBZGRlZCBpbmNsdWRlIG9mIFdhbGxUaW1lLmggc2luY2UKKyAgICAgICAgVGhyZWFk
aW5nUHJpbWl0aXZlcy5oIG5vIGxvbmdlciBwdWxscyBpdCBpbi4KKworCiAyMDIyLTAxLTI1ICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10g
QWRkIG5ldyBzY3JlZW4gYW5kIHdpbmRvdyBjYXB0dXJlIGJhY2tlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0
YTIyYmNmZmRhNzYxY2FhOGFlYjBmOWY1ZmFlMzM3ODg3MDY2OWI3Li5mMDRhMmNjY2ZmZWQwNDQw
YjdkNTNlNDk3MTEyYTU4ZTI3ZDQwOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc4IEBACisy
MDIyLTAxLTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRp
bWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3VzIHNpbXBsZSBzdHJ1Y3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1MDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaDogQWRkZWQgaW5jbHVkZSBvZgor
ICAgICAgICA8b3B0aW9uYWw+IHNpbmNlIG5vdGhpbmcgcHVsbHMgaXQgaW4uCisKKyAgICAgICAg
KiBhbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YmxlbmRGdW5jKTogVXBkYXRlZCBzaW5jZSBUYWJTaXplIGFuZCBMZW5ndGhQb2ludCBhcmUgYm90
aCBub3cKKyAgICAgICAgc3RydWN0dXJlcywgYW5kIGhhdmUgcHVibGljIGRhdGEgbWVtYmVycyBy
YXRoZXIgdGhhbiBnZXR0ZXIgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93Rm9y
QmxlbmRpbmcpOiAgVXBkYXRlZCB0byByZXR1cm4gYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4KKyAg
ICAgICAgYSBuZXZlci1udWxsIHBvaW50ZXIgYW5kIGZvciBjaGFuZ2VzIHRvIExlbmd0aFBvaW50
LgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2YWx1ZUZvclBvc2l0aW9uKTogVXBkYXRlZCBzaW5jZSBMZW5ndGhQb2lu
dCBpcyBhIHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yUG9zaXRpb25PckF1
dG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRUb0NTU1ZhbHVlKTogVXBkYXRl
ZCBzaW5jZSBDb3VudGVyQ29udGVudCBpcyBhIHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKTogVXBkYXRl
ZAorICAgICAgICBzaW5jZSBUYWJTaXplIGlzIGEgc3RydWN0dXJlLgorCisgICAgICAgICogY3Nz
L0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb2ludEZvckxlbmd0aFBv
aW50KTogVXBkYXRlZCBzaW5jZSBMZW5ndGhQb2ludCBpcyBhIHN0cnVjdHVyZS4KKyAgICAgICAg
KFdlYkNvcmU6OmZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCk6IERpdHRvLgorCisgICAgICAgICog
ZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpT
dHlsZTo6dGFiU2l6ZSBjb25zdCk6IFBhc3MgVGFiU2l6ZSBieSB2YWx1ZSBpbnN0ZWFkCisgICAg
ICAgIG9mIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppc1BvdGVudGlhbEN1c3RvbUVsZW1lbnROYW1lQ2hhcmFjdGVyKTogVXNl
IFNvcnRlZEFycmF5U2V0LgorICAgICAgICBJdCBkb2VzIHRoZSBzb3J0ZWQgY2hlY2sgYXQgY29t
cGlsZSB0aW1lIGluc3RlYWQgb2YgYXQgcnVudGltZSBpbiBkZWJ1ZworICAgICAgICBidWlsZHMs
IGFuZCBhbHNvIHNlbGVjdHMgbGluZWFyIHNlYXJjaCBpZiBpdCdzIGZhc3RlciB0aGFuIGJpbmFy
eSBzZWFyY2guCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5o
OiBBZGRlZCBpbmNsdWRlIG9mIFdhbGxUaW1lLmgsIG5vCisgICAgICAgIGxvbmdlciBwdWxsZWQg
aW4gYnkgVGhyZWFkaW5nLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTogVXBkYXRlZCBzaW5jZSBMZW5ndGhQb2lu
dCBpcyBhIHN0cnVjdHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aFBvaW50Lmg6IENo
YW5nZWQgTGVuZ3RoUG9pbnQgdG8gYmUgYSB0cnVlIHN0cnVjdHVyZQorICAgICAgICB3aXRoIHB1
YmxpYyBkYXRhIG1lbWJlcnMuIFRoZSBvbGQgb25lIHdhcywgc3RyYW5nZWx5LCBhIHN0cnVjdCwg
YnV0CisgICAgICAgIHdpdGggcHJpdmF0ZSBkYXRhLiBSZW1vdmVkIHRoZSBjb25zdHJ1Y3RvcnMs
IGdldHRlcnMsIGFuZCBzZXR0ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZSk6
IEF2b2lkIGEgd2FybmluZyBhYm91dCBtaXhlZCBpbnRlZ2VyCisgICAgICAgIHR5cGVzIGJ5IHVz
aW5nIGEgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OnRhYldpZHRoIGNvbnN0
KTogUGFzcyBUYWJTaXplIGJ5IHZhbHVlIGluc3RlYWQKKyAgICAgICAgb2YgYnkgcmVmZXJlbmNl
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oOiBSZW1vdmVkIHRoZSBt
XyBwcmVmaXhlcyBmcm9tIHRoZSBkYXRhCisgICAgICAgIG1lbWJlcnMgc2luY2UgVGFiU2l6ZSBp
cyBhIHN0cnVjdC4gUmVtb3ZlZCB0aGUgZ2V0dGVycy4gTWFya2VkIHRoZQorICAgICAgICBvcGVy
YXRvciBib29sIGV4cGxpY2l0IHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gYWNjaWRlbnRhbGx5IHBh
c3MgdGhpcworICAgICAgICB0byBzb21ldGhpbmcgdGFraW5nIGFuIGludGVnZXIgYW5kIGdldHRp
bmcgYSAwIG9yIDEuIEFkZGVkIGEgVGV4dFN0cmVhbQorICAgICAgICBvdmVybG9hZCBzbyB3ZSBj
YW4gc3RyZWFtIHRoaXMgd2l0aG91dCBleHBsaWNpdGx5IHBpY2tpbmcgaXQgYXBhcnQgYXQKKyAg
ICAgICAgZWFjaCBjYWxsIHNpdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0
UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjp0YWJTaXplIGNvbnN0KTogUGFzcyBU
YWJTaXplIGJ5IHZhbHVlIGluc3RlYWQgb2YKKyAgICAgICAgYnkgcmVmZXJlbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFJ1bjo6c2V0VGFiU2l6ZSk6IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFs
aWRWUExldmVsKTogVXNlIFNvcnRlZEFycmF5U2V0LiBTYW1lIHJlYXNvbnMgYXMgYWJvdmUuCisg
ICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBDb2xvclByaW1hcmllcyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6aXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cyk6IERpdHRvLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRl
clRyYWNrUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgUmVtb3ZlZCB0aGUgbV8gcHJlZml4ZXMg
ZnJvbSBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQzo6Q2hhcHRlckRhdGEKKyAgICAg
ICAgZGF0YSBtZW1iZXJzIHNpbmNlIGl0J3MgYSBzdHJ1Y3QuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2Jz
ZXJ2ZXIpOiBGaXhlZCBhCisgICAgICAgIGJ1ZyB3aGVyZSB0aGlzIHVzZWQgY3VycmVudEltYWdl
VGltZSBpbnN0ZWFkIG9mIG5leHRJbWFnZSB0aW1lLCBleHBvc2VkCisgICAgICAgIGJlY2F1c2Ug
dGhlIGNoYW5nZXMgdG8gTWVkaWFUaW1lIG1hZGUgaXQgZ2l2ZSB1cyBhbiB1bnVzZWQgdmFyaWFi
bGUgd2FybmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEpOgorICAgICAgICBVcGRhdGVk
IHNpbmNlIHBhcnNlT3B1c1ByaXZhdGVEYXRhIG5vdyByZXR1cm5zIGFuIG9wdGlvbmFsIGluc3Rl
YWQgb2YKKyAgICAgICAgcmV0dXJuaW5nIGEgYm9vbGVhbiBhbmQgdXNpbmcgYW4gb3V0IGFyZ3Vt
ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EuaDogQWRkZWQgYW4gaW5jbHVkZQorICAgICAgICBvZiBTZWNvbmRzLmggc2luY2Ug
aXQncyBubyBsb25nZXIgcHVsbGVkIGluIGJ5IG90aGVyIGluY2x1ZGVzIGFuZAorICAgICAgICB0
aGlzIHN0cnVjdHVyZSBoYXMgYSBTZWNvbmRzIGRhdGEgbWVtYmVyLiBDaGFuZ2VkIHRoZSBwYXJz
ZU9wdXNQcml2YXRlRGF0YQorICAgICAgICBmdW5jdGlvbiB0byByZXR1cm4gYW4gb3B0aW9uYWwg
aW5zdGVhZCBvZiByZXR1cm5pbmcgYSBib29sIGFuZCB1c2luZworICAgICAgICBhbiBvdXQgYXJn
dW1lbnQgZm9yIHdoYXQgaXMgcGFyc2VkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZU9wdXNQcml2YXRlRGF0YSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkdM
QmxvY2tsaXN0Lm1tOiBSZW1vdmVkIHRoZSBjb25zdHJ1Y3RvcnMgZnJvbQorICAgICAgICBPU0J1
aWxkSW5mbyBhbmQgbWFkZSBhbGwgaXRzIG9wZXJhdG9ycyBjb25zdGV4cHIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oOiBBZGRlZCBh
biBpbmNsdWRlCisgICAgICAgIG9mIFNlY29uZHMuaCwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBM
b2NrLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0
cmljcy5tbTogQWRkZWQgYW4gaW5jbHVkZSBvZgorICAgICAgICBXYWxsVGltZS5oLCBubyBsb25n
ZXIgcHVsbGVkIGluIGJ5IFRocmVhZGluZ1ByaW1pdGl2ZXMuaC4KKworICAgICAgICAqIHJlbmRl
cmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5
R3JpZEFyZWEpOiBSZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVhZCBvZgorICAgICAgICBhIHVuaXF1
ZV9wdHIuIE5vIHJlYXNvbiB0byB1c2UgYSBoZWFwIGJsb2NrIGZvciB0aGlzLgorICAgICAgICAq
IHJlbmRlcmluZy9HcmlkLmg6IFVwZGF0ZWQgc2luY2UgR3JpZEFyZWEgaXMgbm93IGEgc3RydWN0
IGFuZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6b3JpZ2luYWxUZXh0IGNvbnN0
KTogVXBkYXRlZCBzaW5jZSBDb3VudGVyQ29udGVudAorICAgICAgICBpcyBub3cgYSBzdHJ1Y3R1
cmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNP
dXRzaWRlR3JpZCBjb25zdCk6CisgICAgICAgIFJldHVybiBhIEdyaWRBcmVhIGluc3RlYWQgb2Yg
YSB1bmlxdWVfcHRyLiBUaGUgcmV0dXJuIHZhbHVlIGlzIG5ldmVyIG51bGwgYW5kCisgICAgICAg
IHRoZXJlIGlzIG5vIG5lZWQgdG8gcHV0IGl0IG9uIHRoZSBoZWFwLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZCBjb25zdCk6
IFVwZGF0ZWQgZm9yCisgICAgICAgIHRoZSBhYm92ZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkIGNvbnN0KTogVXNlIG9w
dGlvbmFsIGluc3RlYWQKKyAgICAgICAgb2YgdW5pcXVlX3B0ciBmb3IgYSBsb2NhbCB2YXJpYWJs
ZSB3aXRoIHRoZSBlbXB0eSBncmlkIGFyZWEgaW4gaXQuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaDogVXBkYXRlZCBzaW5jZSBHcmlkQXJlYSBpcyBhIHN0cnVjdCBhbmQgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
OiBVc2UgY29uc3RleHByLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0
IGNvbnN0KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBMZW5ndGhQb2ludCBpcyBhIHN0cnVjdHVy
ZS4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdyBjb25zdCk6IERpdHRvLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmg6IFN0eWxlIHR3ZWFrcy4KKworICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oOiBUdXJuZWQgdGhlIENvdW50
ZXJDb250ZW50IGNsYXNzIGludG8gYQorICAgICAgICBzdHJ1Y3R1cmUgd2l0aCBwdWJsaWMgZGF0
YSBtZW1iZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oOiBSZW1v
dmVkIHRoZSBGaWxsU2l6ZSBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvR3JpZEFyZWEuaDogTWFkZSBHcmlkU3BhblR5cGUgYmUgYmFzZWQgb24gYSB1aW50OF90Lgor
ICAgICAgICBSZW9yZGVyZWQgdGhlIGRhdGEgbWVtYmVycyBvZiBHcmlkQXJlYSB0byBiZSByb3dz
IGZpcnN0IGFuZCB0aGVuIGNvbHVtbnMKKyAgICAgICAgdG8gZm9sbG93IHRoZSBvcmRlciBmcm9t
IHRoZSBjb25zdHJ1Y3RvciBhbmQgYWxzbyB0aGUgY29udmVudGlvbmFsCisgICAgICAgICJ4IGJl
Zm9yZSB5IiBvcmRlcmluZy4gVGhpcyB3aWxsIGFsc28gYmUgZ29vZCBzb21lIGRheSB3aGVuIHdl
IGNhbiB1c2UgdGhlCisgICAgICAgIGRlZmF1bHQgPD0+IGZyb20gQysrMjAsIHdoaWNoIGRlcGVu
ZHMgb24gZGF0YSBtZW1iZXIgb3JkZXJpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
R3JpZExlbmd0aC5oOiBUd2Vha2VkIGNvbW1lbnRzIGFuZCBtb3ZlZCBpbml0aWFsaXphdGlvbgor
ICAgICAgICBvZiBtX2ZsZXggZnJvbSB0aGUgY29uc3RydWN0b3IgdG8gdGhlIGRhdGEgbWVtYmVy
IGRlZmluaXRpb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0aFRyYW5zZm9y
bSBjb25zdCk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgTGVuZ3RoUG9pbnQgaXMgYSBzdHJ1Y3R1
cmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDogVXBkYXRlZCBz
aW5jZSBDb3VudGVyQ29udGVudCBhbmQgTGVuZ2h0UG9pbnQKKyAgICAgICAgYXJlIHN0cnVjdHVy
ZXMsIGFuZCB0byBwYXNzIFRhYlNpemUgYnkgdmFsdWUuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFk
b3dEYXRhKTogU2ltcGxpZmllZCBjb25zdHJ1Y3RvciBzaW5jZSBtX2xvY2F0aW9uCisgICAgICAg
IGRvZXMgbm90IGhhdmUgdG8gYmUgc3BsaXQgb3V0IGludG8geCBhbmQgeSBqdXN0IHRvIGNvcHkg
aXQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0RhdGE6OlNoYWRvd0RhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0RhdGE6OnggY29uc3QpOiBVcGRhdGVkIHNpbmNlIExlbmd0aFBvaW50IGlzIG5vdyBh
IHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OnkgY29uc3QpOiBEaXR0
by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaDog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRl
ckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUYWJTaXplKTogVXBkYXRlZCBzaW5jZSBUYWJTaXplCisgICAgICAgIG5vIGxvbmdl
ciBoYXMgY29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbik6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoUG9pbnQKKyAgICAg
ICAgbm8gbG9uZ2VyIGhhcyBjb25zdHJ1Y3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKTogRGl0dG8uCisgICAgICAg
ICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KTogVXBk
YXRlZCBzaW5jZSBDb3VudGVyQ29udGVudAorICAgICAgICBubyBsb25nZXIgaGFzIGNvbnN0cnVj
dG9ycy4KKwogMjAyMi0wMS0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBEYXRhIGRldGVjdG9ycyBzb21ldGltZXMgc2hvdyB1cCBpbiB0aGUgd3Jv
bmcgcGxhY2Ugd2hlbiByZXNpemluZyBpbWFnZXMgd2l0aCBMaXZlIFRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCmluZGV4IDhkNzU1YmIyNjI3ZGQ3NzY1ZDY1OTQzMDUyNTRlYzYxOTJkMTE3YWMuLmQ4Njg1
NGM1NWYyY2VlMDUxOTVkOTA3ZGU3MjQ4MzY3ODljYTQwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBhbmQgc2ltcGxpZnkgTWVkaWFUaW1lIGFuZCB2YXJpb3Vz
IHNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzU1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcDoKKyAg
ICAgICAgKFBBTDo6Q01UaW1lSGFzRmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjp0b01l
ZGlhVGltZSk6IFRha2UgQ01UaW1lIGJ5IHZhbHVlLiBBbHNvIHNpbXBsaWZpZWQgbG9naWMKKyAg
ICAgICAgdG8ganVzdCBjaGVjayBvbmUgZmxhZyBhdCBhIHRpbWUsIHdoaWNoIG1lYW5zIHRoZSBD
TVRpbWVIYXNGbGFncworICAgICAgICBmdW5jdGlvbiBpc24ndCBuZWVkZWQgYW55IG1vcmUuIEFs
c28gbm93IHVzZXMgT3B0aW9uU2V0IGJlY2F1c2UKKyAgICAgICAgdGhhdCBpcyBob3cgTWVkaWFU
aW1lIHdvcmtzLgorICAgICAgICAoUEFMOjp0b0NNVGltZSk6IFRha2UgTWVkaWFUaW1lIGJ5IHZh
bHVlLgorICAgICAgICAqIHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKwogMjAyMi0wMS0yNiAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBEYXRhIGRldGVjdG9ycyBzb21ldGltZXMg
c2hvdyB1cCBpbiB0aGUgd3JvbmcgcGxhY2Ugd2hlbiByZXNpemluZyBpbWFnZXMgd2l0aCBMaXZl
IFRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOTVmYzRlNGI1MmYwYTRhYWM3MzY2NTVjMDYyMzA0M2JlY2MyNjVm
MS4uZWU2NzM1ZDRiOTEzNDJhNWFiM2FkYzg2ZTcyY2Q2NmNmMjAzYmY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMi0wMS0yNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgT3B0aW1pemUgYW5kIHNpbXBsaWZ5IE1lZGlhVGltZSBhbmQgdmFyaW91cyBz
aW1wbGUgc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmg6CisgICAgICAgIEFkZGVkIGFuIGluY2x1ZGUgb2YgPG9wdGlvbmFsPiwgbm8gbG9u
Z2VyIHB1bGxlZCBpbiBieSBvdGhlciBoZWFkZXJzLgorCiAyMDIyLTAxLTI2ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gTW91c2UgaW50ZXJh
Y3Rpb24gZm9yIDxtb2RlbD4gaXMgZmxpcHBlZCBpbiB0aGUgeS1heGlzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCmluZGV4IDVmNjYzYjJmZjVh
NWUzY2UwOGNlNDEyOTViODBhOWI3MTA2Yzg5NzkuLjU0NmNhZDc2ZWM4OGQ3MTA1NDFlNmEzZTU5
ODVmYTY0OTVmYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dXBlclNhbXBsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiT3B0aW9ucy5oIgog
I2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRl
IDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmgKaW5kZXggM2NlNzYxMjQyYzMyZWMxNjk0YzY1YTc3ZTc0MGU5YzY2OTNj
M2JiNC4uMzY0ODcyYTIwMWM2ZGJlZmZjOTdlNGM5MGM2NTYxYmY1OWQwNzRiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQu
aApAQCAtMTQ5LDYgKzE0OSw3IEBAIHVzaW5nIFdURjo6UmVmUHRyOwogdXNpbmcgV1RGOjpSZXRh
aW5QdHI7CiB1c2luZyBXVEY6OlNIQTE7CiB1c2luZyBXVEY6OlNjb3BlZExhbWJkYTsKK3VzaW5n
IFdURjo6U2Vjb25kczsKIHVzaW5nIFdURjo6U3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmdCdWZm
ZXI7CiB1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CkBAIC0xNjEsNiArMTYyLDcgQEAgdXNpbmcg
V1RGOjpUZXh0U3RyZWFtOwogdXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsK
IHVzaW5nIFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXYWxsVGltZTsKIHVzaW5nIFdURjo6V2Vh
a1B0cjsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0ZWQgPSBzdGQ6
OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9Mb2NrLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXggNDJlNGFhYzBjOWE0YWFlNTll
NzFiNWU5MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQzMTY5MGM2NDJlYmI3YmI3NmVh
NzY5OTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9jay5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tB
bGdvcml0aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZXR5QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5jcHAKaW5kZXggMjI0ZTc3NDk1ZmI5MzgzNGY1OGY5Y2YzMjM0MzdmMzkxNjkzOTQyZi4uYTkz
MTEwODVjMDcxMDI0ZGYzNmY5NzQ5MDQ2MjZlZWU5OGVjNjZlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3Bw
CkBAIC03Miw2OSArNzIsNjQgQEAgc3RhdGljIGludDY0X3Qgc2lnbnVtKGludDY0X3QgdmFsKQog
CiBjb25zdCB1aW50MzJfdCBNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUgPSAxMDAwMDAwMDAw
OwogCi1NZWRpYVRpbWU6Ok1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHJocykKK2NvbnN0ZXhw
ciBNZWRpYVRpbWU6Ok1lZGlhVGltZShVc2VEb3VibGVGbGFnLCBkb3VibGUgdmFsdWUpCisgICAg
OiBtX3ZhbHVlQXNEb3VibGUodmFsdWUpCisgICAgLCBtX2ZsYWdzIHsgVmFsaWQsIERvdWJsZVZh
bHVlIH0KIHsKLSAgICAqdGhpcyA9IHJoczsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSkKK01lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhGbG9hdChmbG9hdCB2YWx1ZSkKIHsKLSAgICBpZiAoZmxvYXRUaW1lICE9IGZsb2F0VGlt
ZSkKKyAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGlt
ZSgpOwotICAgIGlmIChzdGQ6OmlzaW5mKGZsb2F0VGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpOworICAgIGlmIChzdGQ6OmlzaW5mKHZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKTsKIAotICAgIE1lZGlhVGltZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxl
LCBWYWxpZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0g
ZmxvYXRUaW1lOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBkb3VibGUgZG91YmxlVmFsdWUgPSB2
YWx1ZTsKKyAgICByZXR1cm4geyBVc2VEb3VibGUsIGRvdWJsZVZhbHVlIH07CiB9CiAKLU1lZGlh
VGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIHVpbnQzMl90
IHRpbWVTY2FsZSkKK01lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChmbG9hdCB2
YWx1ZSwgdWludDMyX3QgdGltZVNjYWxlKQogewotICAgIGlmIChmbG9hdFRpbWUgIT0gZmxvYXRU
aW1lKQorICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRU
aW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZl
SW5maW5pdGVUaW1lKCk7Ci0gICAgaWYgKGZsb2F0VGltZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+
KQorICAgIGlmICh2YWx1ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICByZXR1cm4g
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAoZmxvYXRUaW1lIDwgc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCisgICAgaWYgKHZhbHVlIDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWluKCkpCiAgICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpOwogICAgIGlmICghdGltZVNjYWxlKQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZs
b2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyBuZWdhdGl2ZUluZmluaXRl
VGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKIAotICAgIHdoaWxlIChmbG9hdFRpbWUg
KiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKKyAgICB3aGlsZSAodmFsdWUgKiB0
aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKICAgICAgICAgdGltZVNjYWxlIC89IDI7
Ci0gICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2FzdDxpbnQ2NF90PihmbG9hdFRpbWUgKiB0
aW1lU2NhbGUpLCB0aW1lU2NhbGUsIFZhbGlkKTsKKyAgICBpbnQ2NF90IHNjYWxlZFZhbHVlID0g
dmFsdWUgKiB0aW1lU2NhbGU7CisgICAgcmV0dXJuIHsgc2NhbGVkVmFsdWUsIHRpbWVTY2FsZSB9
OwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3Vi
bGVUaW1lKQorTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFs
dWUpCiB7Ci0gICAgaWYgKGRvdWJsZVRpbWUgIT0gZG91YmxlVGltZSkKKyAgICBpZiAoc3RkOjpp
c25hbih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwotICAgIGlmIChzdGQ6
OmlzaW5mKGRvdWJsZVRpbWUpKQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGRvdWJsZVRp
bWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0K
LSAgICBNZWRpYVRpbWUgdmFsdWUoMCwgRGVmYXVsdFRpbWVTY2FsZSwgVmFsaWQgfCBEb3VibGVW
YWx1ZSk7Ci0gICAgdmFsdWUubV90aW1lVmFsdWVBc0RvdWJsZSA9IGRvdWJsZVRpbWU7Ci0gICAg
cmV0dXJuIHZhbHVlOworICAgIGlmIChzdGQ6OmlzaW5mKHZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKTsKKyAgICByZXR1cm4geyBVc2VEb3VibGUsIHZhbHVlIH07CiB9CiAKLU1l
ZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUsIHVp
bnQzMl90IHRpbWVTY2FsZSkKK01lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
ZG91YmxlIHZhbHVlLCB1aW50MzJfdCB0aW1lU2NhbGUpCiB7Ci0gICAgaWYgKGRvdWJsZVRpbWUg
IT0gZG91YmxlVGltZSkKKyAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCiAgICAgICAgIHJldHVy
biBpbnZhbGlkVGltZSgpOwotICAgIGlmIChzdGQ6OmlzaW5mKGRvdWJsZVRpbWUpKQotICAgICAg
ICByZXR1cm4gc3RkOjpzaWduYml0KGRvdWJsZVRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUo
KSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgaWYgKGRvdWJsZVRpbWUgPj0gbWF4UGx1
c09uZTxpbnQ2NF90PikKKyAgICBpZiAodmFsdWUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKICAg
ICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgaWYgKGRvdWJsZVRpbWUg
PCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICBpZiAodmFsdWUgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgaWYgKCF0aW1lU2NhbGUpCi0gICAgICAgIHJldHVybiBz
dGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRp
dmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyBu
ZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKIAotICAgIHdo
aWxlIChkb3VibGVUaW1lICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAg
d2hpbGUgKHZhbHVlICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAgICAg
IHRpbWVTY2FsZSAvPSAyOwotICAgIHJldHVybiBNZWRpYVRpbWUoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oc3RkOjpyb3VuZChkb3VibGVUaW1lICogdGltZVNjYWxlKSksIHRpbWVTY2FsZSwgVmFsaWQp
OworICAgIGludDY0X3Qgc2NhbGVkVmFsdWUgPSBzdGQ6OnJvdW5kKHZhbHVlICogdGltZVNjYWxl
KTsKKyAgICByZXR1cm4geyBzY2FsZWRWYWx1ZSwgdGltZVNjYWxlIH07CiB9CiAKIGZsb2F0IE1l
ZGlhVGltZTo6dG9GbG9hdCgpIGNvbnN0CkBAIC0xNDYsOCArMTQxLDkgQEAgZmxvYXQgTWVkaWFU
aW1lOjp0b0Zsb2F0KCkgY29uc3QKICAgICBpZiAoaXNOZWdhdGl2ZUluZmluaXRlKCkpCiAgICAg
ICAgIHJldHVybiAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CiAgICAg
aWYgKGhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZUFzRG91Ymxl
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV90aW1lVmFsdWUpIC8gbV90aW1lU2Nh
bGU7CisgICAgICAgIHJldHVybiBtX3ZhbHVlQXNEb3VibGU7CisgICAgZmxvYXQgdmFsdWUgPSBt
X3ZhbHVlOworICAgIHJldHVybiB2YWx1ZSAvIG1fc2NhbGU7CiB9CiAKIGRvdWJsZSBNZWRpYVRp
bWU6OnRvRG91YmxlKCkgY29uc3QKQEAgLTE1OSwxOSArMTU1LDEyIEBAIGRvdWJsZSBNZWRpYVRp
bWU6OnRvRG91YmxlKCkgY29uc3QKICAgICBpZiAoaXNOZWdhdGl2ZUluZmluaXRlKCkpCiAgICAg
ICAgIHJldHVybiAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwogICAg
IGlmIChoYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWVBc0RvdWJs
ZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RpbWVWYWx1ZSkgLyBtX3RpbWVT
Y2FsZTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVBc0RvdWJsZTsKKyAgICBkb3VibGUgdmFsdWUg
PSBtX3ZhbHVlOworICAgIHJldHVybiB2YWx1ZSAvIG1fc2NhbGU7CiB9CiAKLU1lZGlhVGltZSYg
TWVkaWFUaW1lOjpvcGVyYXRvcj0oY29uc3QgTWVkaWFUaW1lJiByaHMpCi17Ci0gICAgbV90aW1l
VmFsdWUgPSByaHMubV90aW1lVmFsdWU7Ci0gICAgbV90aW1lU2NhbGUgPSByaHMubV90aW1lU2Nh
bGU7Ci0gICAgbV90aW1lRmxhZ3MgPSByaHMubV90aW1lRmxhZ3M7Ci0gICAgcmV0dXJuICp0aGlz
OwotfQotCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiBy
aHMpIGNvbnN0CitNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvcisoTWVkaWFUaW1lIHJocykg
Y29uc3QKIHsKICAgICBpZiAocmhzLmlzSW52YWxpZCgpIHx8IGlzSW52YWxpZCgpKQogICAgICAg
ICByZXR1cm4gaW52YWxpZFRpbWUoKTsKQEAgLTE5Miw3ICsxODEsNyBAQCBNZWRpYVRpbWUgTWVk
aWFUaW1lOjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkg
JiYgcmhzLmhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUobV90aW1lVmFsdWVBc0RvdWJsZSArIHJocy5tX3RpbWVWYWx1ZUFzRG91Ymxl
KTsKKyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3ZhbHVlQXNE
b3VibGUgKyByaHMubV92YWx1ZUFzRG91YmxlKTsKIAogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgp
IHx8IHJocy5oYXNEb3VibGVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKHRvRG91YmxlKCkgKyByaHMudG9Eb3VibGUoKSk7CkBAIC0yMDEsMTMgKzE5
MCwxMyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiBy
aHMpIGNvbnN0CiAgICAgTWVkaWFUaW1lIGIgPSByaHM7CiAKICAgICB1aW50MzJfdCBjb21tb25U
aW1lU2NhbGU7Ci0gICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKGEubV90aW1lU2NhbGUsIGIu
bV90aW1lU2NhbGUsIGNvbW1vblRpbWVTY2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11
bVRpbWVTY2FsZSkKKyAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUoYS5tX3NjYWxlLCBiLm1f
c2NhbGUsIGNvbW1vblRpbWVTY2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVT
Y2FsZSkKICAgICAgICAgY29tbW9uVGltZVNjYWxlID0gTWF4aW11bVRpbWVTY2FsZTsKICAgICBh
LnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwogICAgIGIuc2V0VGltZVNjYWxlKGNvbW1v
blRpbWVTY2FsZSk7Ci0gICAgd2hpbGUgKCFzYWZlQWRkKGEubV90aW1lVmFsdWUsIGIubV90aW1l
VmFsdWUsIGEubV90aW1lVmFsdWUpKSB7CisgICAgd2hpbGUgKCFzYWZlQWRkKGEubV92YWx1ZSwg
Yi5tX3ZhbHVlLCBhLm1fdmFsdWUpKSB7CiAgICAgICAgIGlmIChjb21tb25UaW1lU2NhbGUgPT0g
MSkKLSAgICAgICAgICAgIHJldHVybiBhLm1fdGltZVZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5p
dGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICAgICAgcmV0dXJuIGEu
bV92YWx1ZSA+IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKTsKICAgICAgICAgY29tbW9uVGltZVNjYWxlIC89IDI7CiAgICAgICAgIGEuc2V0VGltZVNj
YWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVT
Y2FsZSk7CkBAIC0yMTUsNyArMjA0LDcgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3Ir
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgIHJldHVybiBhOwogfQogCi1NZWRpYVRp
bWUgTWVkaWFUaW1lOjpvcGVyYXRvci0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CitNZWRp
YVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvci0oTWVkaWFUaW1lIHJocykgY29uc3QKIHsKICAgICBp
ZiAocmhzLmlzSW52YWxpZCgpIHx8IGlzSW52YWxpZCgpKQogICAgICAgICByZXR1cm4gaW52YWxp
ZFRpbWUoKTsKQEAgLTIzNiw3ICsyMjUsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRv
ci0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAgICAgIHJldHVybiBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgJiYgcmhzLmhhc0RvdWJs
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV90
aW1lVmFsdWVBc0RvdWJsZSAtIHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlKTsKKyAgICAgICAgcmV0
dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3ZhbHVlQXNEb3VibGUgLSByaHMubV92
YWx1ZUFzRG91YmxlKTsKIAogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpIHx8IHJocy5oYXNEb3Vi
bGVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHRv
RG91YmxlKCkgLSByaHMudG9Eb3VibGUoKSk7CkBAIC0yNDUsMTMgKzIzNCwxMyBAQCBNZWRpYVRp
bWUgTWVkaWFUaW1lOjpvcGVyYXRvci0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAg
TWVkaWFUaW1lIGIgPSByaHM7CiAKICAgICB1aW50MzJfdCBjb21tb25UaW1lU2NhbGU7Ci0gICAg
aWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKHRoaXMtPm1fdGltZVNjYWxlLCByaHMubV90aW1lU2Nh
bGUsIGNvbW1vblRpbWVTY2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2Fs
ZSkKKyAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV9zY2FsZSwgcmhzLm1fc2Nh
bGUsIGNvbW1vblRpbWVTY2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2Fs
ZSkKICAgICAgICAgY29tbW9uVGltZVNjYWxlID0gTWF4aW11bVRpbWVTY2FsZTsKICAgICBhLnNl
dFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwogICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRp
bWVTY2FsZSk7Ci0gICAgd2hpbGUgKCFzYWZlU3ViKGEubV90aW1lVmFsdWUsIGIubV90aW1lVmFs
dWUsIGEubV90aW1lVmFsdWUpKSB7CisgICAgd2hpbGUgKCFzYWZlU3ViKGEubV92YWx1ZSwgYi5t
X3ZhbHVlLCBhLm1fdmFsdWUpKSB7CiAgICAgICAgIGlmIChjb21tb25UaW1lU2NhbGUgPT0gMSkK
LSAgICAgICAgICAgIHJldHVybiBhLm1fdGltZVZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVU
aW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICAgICAgcmV0dXJuIGEubV92
YWx1ZSA+IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUo
KTsKICAgICAgICAgY29tbW9uVGltZVNjYWxlIC89IDI7CiAgICAgICAgIGEuc2V0VGltZVNjYWxl
KGNvbW1vblRpbWVTY2FsZSk7CiAgICAgICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2Fs
ZSk7CkBAIC0yNzUsOSArMjY0LDkgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKCkg
Y29uc3QKIAogICAgIE1lZGlhVGltZSBuZWdhdGl2ZVRpbWUgPSAqdGhpczsKICAgICBpZiAobmVn
YXRpdmVUaW1lLmhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIG5lZ2F0aXZlVGltZS5tX3RpbWVW
YWx1ZUFzRG91YmxlID0gLW5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZUFzRG91YmxlOworICAgICAg
ICBuZWdhdGl2ZVRpbWUubV92YWx1ZUFzRG91YmxlID0gLW5lZ2F0aXZlVGltZS5tX3ZhbHVlQXNE
b3VibGU7CiAgICAgZWxzZQotICAgICAgICBuZWdhdGl2ZVRpbWUubV90aW1lVmFsdWUgPSAtbmVn
YXRpdmVUaW1lLm1fdGltZVZhbHVlOworICAgICAgICBuZWdhdGl2ZVRpbWUubV92YWx1ZSA9IC1u
ZWdhdGl2ZVRpbWUubV92YWx1ZTsKICAgICByZXR1cm4gbmVnYXRpdmVUaW1lOwogfQogCkBAIC0z
MDcsMTQgKzI5NiwxNCBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvciooaW50MzJfdCBy
aHMpIGNvbnN0CiAgICAgTWVkaWFUaW1lIGEgPSAqdGhpczsKIAogICAgIGlmIChhLmhhc0RvdWJs
ZVZhbHVlKCkpIHsKLSAgICAgICAgYS5tX3RpbWVWYWx1ZUFzRG91YmxlICo9IHJoczsKKyAgICAg
ICAgYS5tX3ZhbHVlQXNEb3VibGUgKj0gcmhzOwogICAgICAgICByZXR1cm4gYTsKICAgICB9CiAK
LSAgICB3aGlsZSAoIXNhZmVNdWx0aXBseShhLm1fdGltZVZhbHVlLCByaHMsIGEubV90aW1lVmFs
dWUpKSB7Ci0gICAgICAgIGlmIChhLm1fdGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1
cm4gc2lnbnVtKGEubV90aW1lVmFsdWUpID09IHNpZ251bShyaHMpID8gcG9zaXRpdmVJbmZpbml0
ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgICAgIGEuc2V0VGltZVNjYWxl
KGEubV90aW1lU2NhbGUgLyAyKTsKKyAgICB3aGlsZSAoIXNhZmVNdWx0aXBseShhLm1fdmFsdWUs
IHJocywgYS5tX3ZhbHVlKSkgeworICAgICAgICBpZiAoYS5tX3NjYWxlID09IDEpCisgICAgICAg
ICAgICByZXR1cm4gc2lnbnVtKGEubV92YWx1ZSkgPT0gc2lnbnVtKHJocykgPyBwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgYS5zZXRUaW1l
U2NhbGUoYS5tX3NjYWxlIC8gMik7CiAgICAgfQogCiAgICAgcmV0dXJuIGE7CkBAIC0zMjIsMTc2
ICszMTEsMTA5IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKihpbnQzMl90IHJocykg
Y29uc3QKIAogYm9vbCBNZWRpYVRpbWU6Om9wZXJhdG9yISgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IChtX3RpbWVGbGFncyA9PSBWYWxpZCAmJiAhbV90aW1lVmFsdWUpCi0gICAgICAgIHx8IChtX3Rp
bWVGbGFncyA9PSAoVmFsaWQgfCBEb3VibGVWYWx1ZSkgJiYgIW1fdGltZVZhbHVlQXNEb3VibGUp
Ci0gICAgICAgIHx8IGlzSW52YWxpZCgpOworICAgIHJldHVybiBpc0ludmFsaWQoKSB8fCAoaGFz
RG91YmxlVmFsdWUoKSA/ICFtX3ZhbHVlQXNEb3VibGUgOiAhbV92YWx1ZSk7CiB9CiAKIE1lZGlh
VGltZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEobV90aW1lRmxhZ3Mg
PT0gVmFsaWQgJiYgIW1fdGltZVZhbHVlKQotICAgICAgICAmJiAhKG1fdGltZUZsYWdzID09IChW
YWxpZCB8IERvdWJsZVZhbHVlKSAmJiAhbV90aW1lVmFsdWVBc0RvdWJsZSkKLSAgICAgICAgJiYg
IWlzSW52YWxpZCgpOworICAgIHJldHVybiAhISp0aGlzOwogfQogCi1NZWRpYVRpbWU6OkNvbXBh
cmlzb25GbGFncyBNZWRpYVRpbWU6OmNvbXBhcmUoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3Mg
b3JkZXJpbmcoVCBhLCBUIGIpCiB7Ci0gICAgYXV0byBhbmRGbGFncyA9IG1fdGltZUZsYWdzICYg
cmhzLm1fdGltZUZsYWdzOwotICAgIGlmIChhbmRGbGFncyAmIChQb3NpdGl2ZUluZmluaXRlIHwg
TmVnYXRpdmVJbmZpbml0ZSB8IEluZGVmaW5pdGUpKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsK
LQotICAgIGF1dG8gb3JGbGFncyA9IG1fdGltZUZsYWdzIHwgcmhzLm1fdGltZUZsYWdzOwotICAg
IGlmICghKG9yRmxhZ3MgJiBWYWxpZCkpCi0gICAgICAgIHJldHVybiBFcXVhbFRvOwotCi0gICAg
aWYgKCEoYW5kRmxhZ3MgJiBWYWxpZCkpCi0gICAgICAgIHJldHVybiBpc0ludmFsaWQoKSA/IEdy
ZWF0ZXJUaGFuIDogTGVzc1RoYW47Ci0KLSAgICBpZiAob3JGbGFncyAmIE5lZ2F0aXZlSW5maW5p
dGUpCi0gICAgICAgIHJldHVybiBpc05lZ2F0aXZlSW5maW5pdGUoKSA/IExlc3NUaGFuIDogR3Jl
YXRlclRoYW47Ci0KLSAgICBpZiAob3JGbGFncyAmIFBvc2l0aXZlSW5maW5pdGUpCi0gICAgICAg
IHJldHVybiBpc1Bvc2l0aXZlSW5maW5pdGUoKSA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47Ci0K
LSAgICBpZiAob3JGbGFncyAmIEluZGVmaW5pdGUpCi0gICAgICAgIHJldHVybiBpc0luZGVmaW5p
dGUoKSA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47Ci0KLSAgICBpZiAoYW5kRmxhZ3MgJiBEb3Vi
bGVWYWx1ZSkgewotICAgICAgICBpZiAobV90aW1lVmFsdWVBc0RvdWJsZSA9PSByaHMubV90aW1l
VmFsdWVBc0RvdWJsZSkKLSAgICAgICAgICAgIHJldHVybiBFcXVhbFRvOwotCi0gICAgICAgIHJl
dHVybiBtX3RpbWVWYWx1ZUFzRG91YmxlIDwgcmhzLm1fdGltZVZhbHVlQXNEb3VibGUgPyBMZXNz
VGhhbiA6IEdyZWF0ZXJUaGFuOwotICAgIH0KLQotICAgIGlmIChvckZsYWdzICYgRG91YmxlVmFs
dWUpIHsKLSAgICAgICAgZG91YmxlIGEgPSB0b0RvdWJsZSgpOwotICAgICAgICBkb3VibGUgYiA9
IHJocy50b0RvdWJsZSgpOwotICAgICAgICBpZiAoYSA+IGIpCi0gICAgICAgICAgICByZXR1cm4g
R3JlYXRlclRoYW47Ci0gICAgICAgIGlmIChhIDwgYikKLSAgICAgICAgICAgIHJldHVybiBMZXNz
VGhhbjsKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgfQotCi0gICAgaWYgKChtX3RpbWVW
YWx1ZSA8IDApICE9IChyaHMubV90aW1lVmFsdWUgPCAwKSkKLSAgICAgICAgcmV0dXJuIG1fdGlt
ZVZhbHVlIDwgMCA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47CisgICAgcmV0dXJuIGEgPCBiID8g
TWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3M6Okxlc3NUaGFuIDogYiA8IGEgPyBNZWRpYVRpbWU6
OkNvbXBhcmlzb25GbGFnczo6R3JlYXRlclRoYW4gOiBNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFn
czo6RXF1YWxUbzsKK30KIAotICAgIGlmICghbV90aW1lVmFsdWUgJiYgIXJocy5tX3RpbWVWYWx1
ZSkKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87CitNZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFncyBv
cmRlcmluZyhNZWRpYVRpbWUgYSwgTWVkaWFUaW1lIGIpCit7CisgICAgYXV0byBvcmRlcmluZ0Ns
YXNzID0gW10oTWVkaWFUaW1lIHRpbWUpIHsKKyAgICAgICAgaWYgKHRpbWUuaXNOZWdhdGl2ZUlu
ZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmICh0aW1lLmlzSW5k
ZWZpbml0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGlmICh0aW1lLmlzUG9z
aXRpdmVJbmZpbml0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIGlmICh0aW1l
LmlzSW52YWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH07CisgICAgYXV0byBhQ2xhc3MgPSBvcmRlcmluZ0NsYXNzKGEpOworICAgIGF1dG8gYkNs
YXNzID0gb3JkZXJpbmdDbGFzcyhiKTsKKyAgICBpZiAoYUNsYXNzIHx8IGJDbGFzcykKKyAgICAg
ICAgcmV0dXJuIG9yZGVyaW5nKGFDbGFzcywgYkNsYXNzKTsKIAotICAgIGlmIChtX3RpbWVTY2Fs
ZSA9PSByaHMubV90aW1lU2NhbGUpIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlID09IHJocy5t
X3RpbWVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgICAgICByZXR1cm4g
bV90aW1lVmFsdWUgPCByaHMubV90aW1lVmFsdWUgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwot
ICAgIH0KKyAgICBpZiAoYS5oYXNEb3VibGVWYWx1ZSgpIHx8IGIuaGFzRG91YmxlVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGEudG9Eb3VibGUoKSwgYi50b0RvdWJsZSgpKTsKIAot
ICAgIGlmIChtX3RpbWVWYWx1ZSA9PSByaHMubV90aW1lVmFsdWUpCi0gICAgICAgIHJldHVybiBt
X3RpbWVTY2FsZSA8IHJocy5tX3RpbWVTY2FsZSA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47Cisg
ICAgaWYgKChhLm1fdmFsdWUgPCAwKSAhPSAoYi5tX3ZhbHVlIDwgMCkgfHwgIWEubV92YWx1ZSB8
fCAhYi5tX3ZhbHVlIHx8IGEubV9zY2FsZSA9PSBiLm1fc2NhbGUpCisgICAgICAgIHJldHVybiBv
cmRlcmluZyhhLm1fdmFsdWUsIGIubV92YWx1ZSk7CiAKLSAgICBpZiAobV90aW1lVmFsdWUgPj0g
MCkgewotICAgICAgICBpZiAobV90aW1lVmFsdWUgPCByaHMubV90aW1lVmFsdWUgJiYgbV90aW1l
U2NhbGUgPiByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47Cisg
ICAgaWYgKGEubV92YWx1ZSA9PSBiLm1fdmFsdWUpCisgICAgICAgIHJldHVybiBvcmRlcmluZyhi
Lm1fc2NhbGUsIGEubV9zY2FsZSk7CiAKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlID4gcmhzLm1f
dGltZVZhbHVlICYmIG1fdGltZVNjYWxlIDwgcmhzLm1fdGltZVNjYWxlKQotICAgICAgICAgICAg
cmV0dXJuIEdyZWF0ZXJUaGFuOworICAgIGlmIChhLm1fdmFsdWUgPj0gMCkgeworICAgICAgICBp
ZiAoYS5tX3ZhbHVlIDwgYi5tX3ZhbHVlICYmIGEubV9zY2FsZSA+IGIubV9zY2FsZSkKKyAgICAg
ICAgICAgIHJldHVybiBNZWRpYVRpbWU6Okxlc3NUaGFuOworICAgICAgICBpZiAoYS5tX3ZhbHVl
ID4gYi5tX3ZhbHVlICYmIGEubV9zY2FsZSA8IGIubV9zY2FsZSkKKyAgICAgICAgICAgIHJldHVy
biBNZWRpYVRpbWU6OkdyZWF0ZXJUaGFuOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3Rp
bWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA8IHJocy5tX3RpbWVTY2Fs
ZSkKLSAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbjsKLQotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPiByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUgPiByaHMubV90aW1lU2NhbGUpCi0g
ICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47CisgICAgICAgIGlmIChhLm1fdmFsdWUgPCBi
Lm1fdmFsdWUgJiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJuIE1l
ZGlhVGltZTo6TGVzc1RoYW47CisgICAgICAgIGlmIChhLm1fdmFsdWUgPiBiLm1fdmFsdWUgJiYg
YS5tX3NjYWxlID4gYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6R3Jl
YXRlclRoYW47CiAgICAgfQogCi0gICAgaW50NjRfdCBsaHNGYWN0b3I7Ci0gICAgaW50NjRfdCBy
aHNGYWN0b3I7Ci0gICAgaWYgKHNhZmVNdWx0aXBseShtX3RpbWVWYWx1ZSwgc3RhdGljX2Nhc3Q8
aW50NjRfdD4ocmhzLm1fdGltZVNjYWxlKSwgbGhzRmFjdG9yKQotICAgICAgICAmJiBzYWZlTXVs
dGlwbHkocmhzLm1fdGltZVZhbHVlLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX3RpbWVTY2FsZSks
IHJoc0ZhY3RvcikpIHsKLSAgICAgICAgaWYgKGxoc0ZhY3RvciA9PSByaHNGYWN0b3IpCi0gICAg
ICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAgICAgICAgcmV0dXJuIGxoc0ZhY3RvciA8IHJoc0Zh
Y3RvciA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47Ci0gICAgfQorICAgIGludDY0X3QgYVByb2R1
Y3Q7CisgICAgaW50NjRfdCBiUHJvZHVjdDsKKyAgICBpbnQ2NF90IGFUaW1lU2NhbGUgPSBhLm1f
c2NhbGU7CisgICAgaW50NjRfdCBiVGltZVNjYWxlID0gYi5tX3NjYWxlOworICAgIGlmIChzYWZl
TXVsdGlwbHkoYS5tX3ZhbHVlLCBiVGltZVNjYWxlLCBhUHJvZHVjdCkgJiYgc2FmZU11bHRpcGx5
KGIubV92YWx1ZSwgYVRpbWVTY2FsZSwgYlByb2R1Y3QpKQorICAgICAgICByZXR1cm4gb3JkZXJp
bmcoYVByb2R1Y3QsIGJQcm9kdWN0KTsKIAotICAgIGludDY0X3QgcmhzV2hvbGUgPSByaHMubV90
aW1lVmFsdWUgLyByaHMubV90aW1lU2NhbGU7Ci0gICAgaW50NjRfdCBsaHNXaG9sZSA9IG1fdGlt
ZVZhbHVlIC8gbV90aW1lU2NhbGU7Ci0gICAgaWYgKGxoc1dob2xlID4gcmhzV2hvbGUpCi0gICAg
ICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICBpZiAobGhzV2hvbGUgPCByaHNXaG9sZSkKLSAg
ICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgaW50NjRfdCByaHNSZW1haW4gPSByaHMubV90
aW1lVmFsdWUgJSByaHMubV90aW1lU2NhbGU7Ci0gICAgaW50NjRfdCBsaHNSZW1haW4gPSBtX3Rp
bWVWYWx1ZSAlIG1fdGltZVNjYWxlOwotICAgIGxoc0ZhY3RvciA9IGxoc1JlbWFpbiAqIHJocy5t
X3RpbWVTY2FsZTsKLSAgICByaHNGYWN0b3IgPSByaHNSZW1haW4gKiBtX3RpbWVTY2FsZTsKLQot
ICAgIGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9yKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsK
LSAgICByZXR1cm4gbGhzRmFjdG9yID4gcmhzRmFjdG9yID8gR3JlYXRlclRoYW4gOiBMZXNzVGhh
bjsKKyAgICBhdXRvIGFRdW90aWVudCA9IGEubV92YWx1ZSAvIGEubV9zY2FsZTsKKyAgICBhdXRv
IGJRdW90aWVudCA9IGIubV92YWx1ZSAvIGIubV9zY2FsZTsKKyAgICBpZiAoYVF1b3RpZW50ICE9
IGJRdW90aWVudCkKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5nKGFRdW90aWVudCwgYlF1b3RpZW50
KTsKKworICAgIGF1dG8gYVJlbWFpbmRlciA9IGEubV92YWx1ZSAlIGEubV9zY2FsZSAqIGEubV9z
Y2FsZTsKKyAgICBhdXRvIGJSZW1haW5kZXIgPSBiLm1fdmFsdWUgJSBiLm1fc2NhbGUgKiBiLm1f
c2NhbGU7CisgICAgcmV0dXJuIG9yZGVyaW5nKGFSZW1haW5kZXIsIGJSZW1haW5kZXIpOwogfQog
Ci1ib29sIE1lZGlhVGltZTo6aXNCZXR3ZWVuKGNvbnN0IE1lZGlhVGltZSYgYSwgY29uc3QgTWVk
aWFUaW1lJiBiKSBjb25zdAorYm9vbCBNZWRpYVRpbWU6OmlzQmV0d2VlbihNZWRpYVRpbWUgYSwg
TWVkaWFUaW1lIGIpIGNvbnN0CiB7CiAgICAgaWYgKGEgPiBiKQogICAgICAgICByZXR1cm4gKnRo
aXMgPiBiICYmICp0aGlzIDwgYTsKICAgICByZXR1cm4gKnRoaXMgPiBhICYmICp0aGlzIDwgYjsK
IH0KIAotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6Onplcm9UaW1lKCkKLXsKLSAgICBzdGF0
aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgVmFsaWQpOwotICAgIHJldHVybiB0aW1lOwot
fQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKQotewotICAgIHN0
YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgtMSwgMSwgMCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19
Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpCi17
Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIFBvc2l0aXZlSW5maW5pdGUg
fCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFU
aW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGlt
ZSB0aW1lKC0xLCAxLCBOZWdhdGl2ZUluZmluaXRlIHwgVmFsaWQpOwotICAgIHJldHVybiB0aW1l
OwotfQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKQotewot
ICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgwLCAxLCBJbmRlZmluaXRlIHwgVmFsaWQp
OwotICAgIHJldHVybiB0aW1lOwotfQotCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjp0b1RpbWVTY2Fs
ZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nRmxhZ3MgZmxhZ3MpIGNvbnN0CitNZWRpYVRp
bWUgTWVkaWFUaW1lOjp0b1RpbWVTY2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nTW9k
ZSBtb2RlKSBjb25zdAogewogICAgIE1lZGlhVGltZSByZXN1bHQgPSAqdGhpczsKLSAgICByZXN1
bHQuc2V0VGltZVNjYWxlKHRpbWVTY2FsZSwgZmxhZ3MpOworICAgIHJlc3VsdC5zZXRUaW1lU2Nh
bGUodGltZVNjYWxlLCBtb2RlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIE1lZGlh
VGltZTo6c2V0VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdGbGFncyBmbGFn
cykKK3ZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3Vu
ZGluZ01vZGUgbW9kZSkKIHsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkgewotICAgICAgICAq
dGhpcyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3RpbWVWYWx1ZUFzRG91YmxlLCB0
aW1lU2NhbGUpOworICAgICAgICAqdGhpcyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSht
X3ZhbHVlQXNEb3VibGUsIHRpbWVTY2FsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIXRpbWVTY2FsZSkgewotICAgICAgICAqdGhpcyA9IG1fdGltZVZhbHVlIDwgMCA/IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICAq
dGhpcyA9IG1fdmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5m
aW5pdGVUaW1lKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodGltZVNjYWxl
ID09IG1fdGltZVNjYWxlKQorICAgIGlmICh0aW1lU2NhbGUgPT0gbV9zY2FsZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgdGltZVNjYWxlID0gc3RkOjptaW4oTWF4aW11bVRpbWVTY2FsZSwgdGlt
ZVNjYWxlKTsKIAotICAgIEludDEyOCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PEludDEyOD4obV90
aW1lVmFsdWUpICogdGltZVNjYWxlOwotICAgIGludDY0X3QgcmVtYWluZGVyID0gc3RhdGljX2Nh
c3Q8aW50NjRfdD4obmV3VmFsdWUgJSBtX3RpbWVTY2FsZSk7Ci0gICAgbmV3VmFsdWUgPSBuZXdW
YWx1ZSAvIG1fdGltZVNjYWxlOworICAgIEludDEyOCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PElu
dDEyOD4obV92YWx1ZSkgKiB0aW1lU2NhbGU7CisgICAgaW50NjRfdCByZW1haW5kZXIgPSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1ZSAlIG1fc2NhbGUpOworICAgIG5ld1ZhbHVlID0gbmV3
VmFsdWUgLyBtX3NjYWxlOwogCiAgICAgaWYgKG5ld1ZhbHVlIDwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWluKCkpIHsKICAgICAgICAgKnRoaXMgPSBuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpOwpAQCAtNTAzLDQyICs0MjUsNDIgQEAgdm9pZCBNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSh1
aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nRmxhZ3MgZmxhZ3MpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3RpbWVWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG5ld1ZhbHVl
KTsKLSAgICBzdGQ6OnN3YXAobV90aW1lU2NhbGUsIHRpbWVTY2FsZSk7CisgICAgbV92YWx1ZSA9
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihuZXdWYWx1ZSk7CisgICAgYXV0byBvbGRUaW1lU2NhbGUg
PSBzdGQ6OmV4Y2hhbmdlKG1fc2NhbGUsIHRpbWVTY2FsZSk7CiAKICAgICBpZiAoIXJlbWFpbmRl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90aW1lRmxhZ3MgfD0gSGFzQmVlblJvdW5kZWQ7
Ci0gICAgc3dpdGNoIChmbGFncykgewotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6SGFsZkF3YXlG
cm9tWmVybzoKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDY0X3Q+KGxsYWJzKHJlbWFpbmRl
cikpICogMiA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lU2NhbGUpKSB7CisgICAgbV9mbGFn
cy5hZGQoSGFzQmVlblJvdW5kZWQpOworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgUm91
bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvOgorICAgICAgICBpZiAoc3RkOjphYnMocmVtYWlu
ZGVyKSAqIDIgPj0gb2xkVGltZVNjYWxlKSB7CiAgICAgICAgICAgICAvLyByb3VuZCB1cCAoYXdh
eSBmcm9tIHplcm8pCiAgICAgICAgICAgICBpZiAocmVtYWluZGVyIDwgMCkKLSAgICAgICAgICAg
ICAgICBtX3RpbWVWYWx1ZS0tOworICAgICAgICAgICAgICAgIC0tbV92YWx1ZTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3RpbWVWYWx1ZSsrOworICAgICAgICAgICAgICAg
ICsrbV92YWx1ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgUm91bmRp
bmdGbGFnczo6VG93YXJkWmVybzoKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VG93YXJkWmVybzoK
ICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybzoK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvOgogICAgICAgICBpZiAocmVtYWlu
ZGVyIDwgMCkKLSAgICAgICAgICAgIG1fdGltZVZhbHVlLS07CisgICAgICAgICAgICAtLW1fdmFs
dWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGltZVZhbHVlKys7CisgICAgICAgICAg
ICArK21fdmFsdWU7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpU
b3dhcmRQb3NpdGl2ZUluZmluaXR5OgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUb3dhcmRQb3Np
dGl2ZUluZmluaXR5OgogICAgICAgICBpZiAocmVtYWluZGVyID4gMCkKLSAgICAgICAgICAgIG1f
dGltZVZhbHVlKys7CisgICAgICAgICAgICArK21fdmFsdWU7CiAgICAgICAgIGJyZWFrOwogICAg
ICAgICAKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHk6Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHk6CiAgICAgICAgIGlm
IChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsKKyAgICAgICAgICAg
IC0tbV92YWx1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtNTQ3LDcgKzQ2OSw3IEBA
IHZvaWQgTWVkaWFUaW1lOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0
LnByaW50KCJ7Iik7CiAgICAgaWYgKCFoYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICBvdXQucHJp
bnQobV90aW1lVmFsdWUsICIvIiwgbV90aW1lU2NhbGUsICIgPSAiKTsKKyAgICAgICAgb3V0LnBy
aW50KG1fdmFsdWUsICIvIiwgbV9zY2FsZSwgIiA9ICIpOwogICAgIG91dC5wcmludCh0b0RvdWJs
ZSgpLCAifSIpOwogfQogCkBAIC01NTYsNyArNDc4LDcgQEAgU3RyaW5nIE1lZGlhVGltZTo6dG9T
dHJpbmcoKSBjb25zdAogICAgIGNvbnN0IGNoYXIqIGludmFsaWQgPSBpc0ludmFsaWQoKSA/ICIs
IGludmFsaWQiIDogIiI7CiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCd7JywgdG9Eb3VibGUoKSwgaW52YWxpZCwgJ30nKTsKLSAgICByZXR1cm4g
bWFrZVN0cmluZygneycsIG1fdGltZVZhbHVlLCAnLycsIG1fdGltZVNjYWxlLCAiID0gIiwgdG9E
b3VibGUoKSwgaW52YWxpZCwgJ30nKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygneycsIG1fdmFs
dWUsICcvJywgbV9zY2FsZSwgIiA9ICIsIHRvRG91YmxlKCksIGludmFsaWQsICd9Jyk7CiB9CiAK
IFJlZjxKU09OOjpPYmplY3Q+IE1lZGlhVGltZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKQEAgLTU3
OSw5ICs1MDEsOSBAQCBSZWY8SlNPTjo6T2JqZWN0PiBNZWRpYVRpbWU6OnRvSlNPTk9iamVjdCgp
IGNvbnN0CiAgICAgZWxzZQogICAgICAgICBvYmplY3QtPnNldERvdWJsZSgidmFsdWUiX3MsIHRv
RG91YmxlKCkpOwogCi0gICAgb2JqZWN0LT5zZXREb3VibGUoIm51bWVyYXRvciJfcywgc3RhdGlj
X2Nhc3Q8ZG91YmxlPihtX3RpbWVWYWx1ZSkpOwotICAgIG9iamVjdC0+c2V0SW50ZWdlcigiZGVu
b21pbmF0b3IiX3MsIG1fdGltZVNjYWxlKTsKLSAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdz
Il9zLCBtX3RpbWVGbGFncyk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoIm51bWVyYXRvciJfcywg
bV92YWx1ZSk7CisgICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRvciJfcywgbV9zY2Fs
ZSk7CisgICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJmbGFncyJfcywgbV9mbGFncy50b1JhdygpKTsK
IAogICAgIHJldHVybiBvYmplY3Q7CiB9CkBAIC01OTEsMzMgKzUxMywyOCBAQCBTdHJpbmcgTWVk
aWFUaW1lOjp0b0pTT05TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiB0b0pTT05PYmplY3QoKS0+
dG9KU09OU3RyaW5nKCk7CiB9CiAKLU1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1lJiByaHMp
CitNZWRpYVRpbWUgYWJzKE1lZGlhVGltZSB0aW1lKQogewotICAgIGlmIChyaHMuaXNJbnZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7Ci0gICAgaWYgKHJo
cy5pc05lZ2F0aXZlSW5maW5pdGUoKSB8fCByaHMuaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAg
aWYgKHRpbWUuaXNOZWdhdGl2ZUluZmluaXRlKCkpCiAgICAgICAgIHJldHVybiBNZWRpYVRpbWU6
OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgaWYgKHJocy5oYXNEb3VibGVWYWx1ZSgpKQot
ICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGZhYnMocmhzLm1fdGlt
ZVZhbHVlQXNEb3VibGUpKTsKLQotICAgIE1lZGlhVGltZSB2YWwgPSByaHM7Ci0gICAgdmFsLm1f
dGltZVZhbHVlID0gc3RkOjphYnMocmhzLm1fdGltZVZhbHVlKTsKLSAgICByZXR1cm4gdmFsOwor
ICAgIGlmICh0aW1lLmhhc0RvdWJsZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhEb3VibGUoc3RkOjphYnModGltZS5tX3ZhbHVlQXNEb3VibGUpKTsKKyAgICBN
ZWRpYVRpbWUgcmVzdWx0ID0gdGltZTsKKyAgICByZXN1bHQubV92YWx1ZSA9IHN0ZDo6YWJzKHJl
c3VsdC5tX3ZhbHVlKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBTdHJpbmcgTWVkaWFUaW1l
UmFuZ2U6OnRvSlNPTlN0cmluZygpIGNvbnN0CiB7CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwotCiAgICAgb2JqZWN0LT5zZXRPYmplY3QoInN0YXJ0Il9zLCBzdGFy
dC50b0pTT05PYmplY3QoKSk7CiAgICAgb2JqZWN0LT5zZXRPYmplY3QoImVuZCJfcywgZW5kLnRv
SlNPTk9iamVjdCgpKTsKLQogICAgIHJldHVybiBvYmplY3QtPnRvSlNPTlN0cmluZygpOwogfQog
CiAjaWZuZGVmIE5ERUJVRwogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0
cmVhbSwgY29uc3QgTWVkaWFUaW1lJiB0aW1lKQorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiBzdHJlYW0sIE1lZGlhVGltZSB0aW1lKQogewogICAgIHJldHVybiBzdHJlYW0gPDwg
dGltZS50b0pTT05TdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lZGlh
VGltZS5oIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmgKaW5kZXggNzFhY2YzMjllYjM5ODkz
MzUxMmZkN2YzZjU4ZDYwYmVjZmYyM2M1MC4uMDYxNDcyNWZkZjdmZTIzMDBkNDljNjgwOTkzZmVj
MTExZjk5NDAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmgKKysrIGIv
U291cmNlL1dURi93dGYvTWVkaWFUaW1lLmgKQEAgLTMwLDIxICszMCwxNiBAQAogCiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8
bGltaXRzPgotI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBQcmludFN0cmVh
bTsKIAotY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBmaW5hbCB7CitjbGFzcyBN
ZWRpYVRpbWUgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIGVudW0geworICAgIGVudW0gRmxhZyA6IHVpbnQ4X3QgewogICAgICAgICBWYWxpZCA9IDEg
PDwgMCwKICAgICAgICAgSGFzQmVlblJvdW5kZWQgPSAxIDw8IDEsCiAgICAgICAgIFBvc2l0aXZl
SW5maW5pdGUgPSAxIDw8IDIsCkBAIC01Miw2NyArNDcsNjUgQEAgcHVibGljOgogICAgICAgICBJ
bmRlZmluaXRlID0gMSA8PCA0LAogICAgICAgICBEb3VibGVWYWx1ZSA9IDEgPDwgNSwKICAgICB9
OwotCi0gICAgY29uc3RleHByIE1lZGlhVGltZSgpOwotICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUo
aW50NjRfdCB2YWx1ZSwgdWludDMyX3Qgc2NhbGUsIHVpbnQ4X3QgZmxhZ3MgPSBWYWxpZCk7Ci0g
ICAgTWVkaWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKLQotICAgIHN0YXRpYyBNZWRpYVRp
bWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSk7Ci0gICAgc3RhdGljIE1lZGlhVGlt
ZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpOwot
ICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSk7
Ci0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1l
LCB1aW50MzJfdCB0aW1lU2NhbGUpOwotCi0gICAgZmxvYXQgdG9GbG9hdCgpIGNvbnN0OwotICAg
IGRvdWJsZSB0b0RvdWJsZSgpIGNvbnN0OwotCi0gICAgTWVkaWFUaW1lJiBvcGVyYXRvcj0oY29u
c3QgTWVkaWFUaW1lJiByaHMpOwotICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShjb25zdCBNZWRp
YVRpbWUmIHJocykgeyByZXR1cm4gKnRoaXMgPSAqdGhpcyArIHJoczsgfQotICAgIE1lZGlhVGlt
ZSYgb3BlcmF0b3ItPShjb25zdCBNZWRpYVRpbWUmIHJocykgeyByZXR1cm4gKnRoaXMgPSAqdGhp
cyAtIHJoczsgfQotICAgIE1lZGlhVGltZSBvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMp
IGNvbnN0OwotICAgIE1lZGlhVGltZSBvcGVyYXRvci0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNv
bnN0OwotICAgIE1lZGlhVGltZSBvcGVyYXRvci0oKSBjb25zdDsKLSAgICBNZWRpYVRpbWUgb3Bl
cmF0b3IqKGludDMyX3QpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47IH0KLSAgICBi
b29sIG9wZXJhdG9yPihjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFy
ZShyaHMpID09IEdyZWF0ZXJUaGFuOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1lZGlh
VGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgIT0gRXF1YWxUbzsgfQotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29t
cGFyZShyaHMpID09IEVxdWFsVG87IH0KLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgTWVkaWFU
aW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA+PSBFcXVhbFRvOyB9Ci0gICAg
Ym9vbCBvcGVyYXRvcjw9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21w
YXJlKHJocykgPD0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7Ci0gICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwotCi0gICAgdHlwZWRlZiBlbnVtIHsKKyAg
ICBjb25zdGV4cHIgTWVkaWFUaW1lKCkgOiBNZWRpYVRpbWUgeyBpbnQ2NF90IHsgfSwgRGVmYXVs
dFRpbWVTY2FsZSB9IHsgfQorICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwg
dWludDMyX3Qgc2NhbGUsIE9wdGlvblNldDxGbGFnPiA9IHsgVmFsaWQgfSk7CisKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgdmFs
dWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhG
bG9hdChmbG9hdCB2YWx1ZSwgdWludDMyX3Qgc2NhbGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJs
ZSB2YWx1ZSwgdWludDMyX3Qgc2NhbGUpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0
IHRvRmxvYXQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvRG91Ymxl
KCkgY29uc3Q7CisKKyAgICBNZWRpYVRpbWUmIG9wZXJhdG9yKz0oTWVkaWFUaW1lIHJocykgeyBy
ZXR1cm4gKnRoaXMgPSAqdGhpcyArIHJoczsgfQorICAgIE1lZGlhVGltZSYgb3BlcmF0b3ItPShN
ZWRpYVRpbWUgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzIC0gcmhzOyB9CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvcisoTWVkaWFUaW1lKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIG9wZXJhdG9yLShNZWRpYVRpbWUpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgb3BlcmF0b3ItKCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvcjwoTWVkaWFUaW1lIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShy
aHMpID09IExlc3NUaGFuOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oTWVkaWFUaW1lIHJocykgY29u
c3QgeyByZXR1cm4gY29tcGFyZShyaHMpID09IEdyZWF0ZXJUaGFuOyB9CisgICAgYm9vbCBvcGVy
YXRvciE9KE1lZGlhVGltZSByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSAhPSBFcXVh
bFRvOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KE1lZGlhVGltZSByaHMpIGNvbnN0IHsgcmV0dXJu
IGNvbXBhcmUocmhzKSA9PSBFcXVhbFRvOyB9CisgICAgYm9vbCBvcGVyYXRvcj49KE1lZGlhVGlt
ZSByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA+PSBFcXVhbFRvOyB9CisgICAgYm9v
bCBvcGVyYXRvcjw9KE1lZGlhVGltZSByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA8
PSBFcXVhbFRvOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dDsKKworICAgIGVudW0gQ29tcGFyaXNvbkZsYWdzIHsKICAgICAgICAgTGVzc1RoYW4gPSAtMSwK
ICAgICAgICAgRXF1YWxUbyA9IDAsCiAgICAgICAgIEdyZWF0ZXJUaGFuID0gMSwKLSAgICB9IENv
bXBhcmlzb25GbGFnczsKKyAgICB9OworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVk
aWFUaW1lOjpDb21wYXJpc29uRmxhZ3Mgb3JkZXJpbmcoTWVkaWFUaW1lLCBNZWRpYVRpbWUpOwor
ICAgIENvbXBhcmlzb25GbGFncyBjb21wYXJlKE1lZGlhVGltZSBvdGhlcikgY29uc3QgeyByZXR1
cm4gb3JkZXJpbmcoKnRoaXMsIG90aGVyKTsgfQogCi0gICAgQ29tcGFyaXNvbkZsYWdzIGNvbXBh
cmUoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OwotICAgIGJvb2wgaXNCZXR3ZWVuKGNvbnN0
IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGlzQmV0d2VlbihNZWRpYVRpbWUsIE1lZGlhVGltZSkgY29uc3Q7CiAKLSAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIFZhbGlkOyB9CisgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhWYWxpZCk7IH0K
ICAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0IHsgcmV0dXJuICFpc1ZhbGlkKCk7IH0KLSAgICBi
b29sIGhhc0JlZW5Sb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBIYXNCZWVu
Um91bmRlZDsgfQotICAgIGJvb2wgaXNQb3NpdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lRmxhZ3MgJiBQb3NpdGl2ZUluZmluaXRlOyB9Ci0gICAgYm9vbCBpc05lZ2F0aXZlSW5m
aW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIE5lZ2F0aXZlSW5maW5pdGU7IH0K
LSAgICBib29sIGlzSW5kZWZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSW5k
ZWZpbml0ZTsgfQorICAgIGJvb2wgaGFzQmVlblJvdW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzLmNvbnRhaW5zKEhhc0JlZW5Sb3VuZGVkKTsgfQorICAgIGJvb2wgaXNQb3NpdGl2ZUluZmlu
aXRlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhQb3NpdGl2ZUluZmluaXRlKTsg
fQorICAgIGJvb2wgaXNOZWdhdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5j
b250YWlucyhOZWdhdGl2ZUluZmluaXRlKTsgfQorICAgIGJvb2wgaXNJbmRlZmluaXRlKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhJbmRlZmluaXRlKTsgfQogICAgIGJvb2wgaXNG
aW5pdGUoKSBjb25zdCB7IHJldHVybiAhaXNJbnZhbGlkKCkgJiYgIWlzSW5kZWZpbml0ZSgpICYm
ICFpc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiAhaXNOZWdhdGl2ZUluZmluaXRlKCk7IH0KLSAgICBi
b29sIGhhc0RvdWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBEb3VibGVW
YWx1ZTsgfQotICAgIHVpbnQ4X3QgdGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxh
Z3M7IH0KKyAgICBib29sIGhhc0RvdWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5j
b250YWlucyhEb3VibGVWYWx1ZSk7IH0KKyAgICBPcHRpb25TZXQ8RmxhZz4gdGltZUZsYWdzKCkg
Y29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQogCi0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYg
emVyb1RpbWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBpbnZhbGlkVGltZSgpOwot
ICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAg
c3RhdGljIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBzdGF0
aWMgY29uc3QgTWVkaWFUaW1lJiBpbmRlZmluaXRlVGltZSgpOworICAgIHN0YXRpYyBjb25zdGV4
cHIgTWVkaWFUaW1lIHplcm9UaW1lKCkgeyByZXR1cm4geyAwLCAxLCBWYWxpZCB9OyB9CisgICAg
c3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgaW52YWxpZFRpbWUoKSB7IHJldHVybiB7IC0xLCAx
LCB7IH0gfTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFUaW1lIHBvc2l0aXZlSW5maW5p
dGVUaW1lKCkgeyByZXR1cm4geyAwLCAxLCB7IFBvc2l0aXZlSW5maW5pdGUsIFZhbGlkIH0gfTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFUaW1lIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
eyByZXR1cm4geyAtMSwgMSwgeyBOZWdhdGl2ZUluZmluaXRlLCBWYWxpZCB9IH07IH0KKyAgICBz
dGF0aWMgY29uc3RleHByIE1lZGlhVGltZSBpbmRlZmluaXRlVGltZSgpIHsgcmV0dXJuIHsgMCwg
MSwgeyBJbmRlZmluaXRlLCBWYWxpZCB9IH07IH0KIAotICAgIGNvbnN0IGludDY0X3QmIHRpbWVW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVZhbHVlOyB9Ci0gICAgY29uc3QgdWludDMyX3Qm
IHRpbWVTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVNjYWxlOyB9CisgICAgaW50NjRfdCB0
aW1lVmFsdWUoKSBjb25zdCB7IEFTU0VSVCghaGFzRG91YmxlVmFsdWUoKSk7IHJldHVybiBtX3Zh
bHVlOyB9CisgICAgdWludDMyX3QgdGltZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsg
fQogCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwotICAgIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKLSAgICBS
ZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxKU09O
OjpPYmplY3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0OwogCiAgICAgLy8gTWFrZSB0aGUgZm9sbG93
aW5nIGNhc3RzIGVycm9yczoKICAgICBvcGVyYXRvciBkb3VibGUoKSBjb25zdCA9IGRlbGV0ZTsK
QEAgLTEyMCw5MyArMTEzLDk5IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBpbnQoKSBjb25zdCA9
IGRlbGV0ZTsKICAgICBNZWRpYVRpbWUoaW50KSA9IGRlbGV0ZTsKIAotICAgIGZyaWVuZCBXVEZf
RVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocyk7CisgICAg
ZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgYWJzKE1lZGlhVGltZSk7CiAKLSAg
ICBzdGF0aWMgY29uc3QgdWludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9IDEwMDAwMDAwOwotICAg
IHN0YXRpYyBjb25zdCB1aW50MzJfdCBNYXhpbXVtVGltZVNjYWxlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9IDEwMDAwMDAwOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgY29uc3QgdWludDMyX3QgTWF4aW11bVRpbWVTY2FsZTsKIAotICAg
IGVudW0gY2xhc3MgUm91bmRpbmdGbGFncyB7Ci0gICAgICAgIEhhbGZBd2F5RnJvbVplcm8gPSAw
LAorICAgIGVudW0gY2xhc3MgUm91bmRpbmdNb2RlIHsKKyAgICAgICAgSGFsZkF3YXlGcm9tWmVy
bywKICAgICAgICAgVG93YXJkWmVybywKICAgICAgICAgQXdheUZyb21aZXJvLAogICAgICAgICBU
b3dhcmRQb3NpdGl2ZUluZmluaXR5LAogICAgICAgICBUb3dhcmROZWdhdGl2ZUluZmluaXR5LAog
ICAgIH07Ci0KLSAgICBNZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3QsIFJvdW5kaW5nRmxh
Z3MgPSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgTWVkaWFUaW1lIHRvVGltZVNjYWxlKHVpbnQzMl90IHNjYWxlLCBSb3VuZGlu
Z01vZGUgPSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pIGNvbnN0OwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRGVjb2RlciYsIE1lZGlhVGltZSYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgc2V0VGltZVNj
YWxlKHVpbnQzMl90LCBSb3VuZGluZ0ZsYWdzID0gUm91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9t
WmVybyk7CisgICAgZW51bSBVc2VEb3VibGVGbGFnIHsgVXNlRG91YmxlIH07CisgICAgY29uc3Rl
eHByIE1lZGlhVGltZShVc2VEb3VibGVGbGFnLCBkb3VibGUgdmFsdWUpOworCisgICAgdm9pZCBz
ZXRUaW1lU2NhbGUodWludDMyX3QsIFJvdW5kaW5nTW9kZSA9IFJvdW5kaW5nTW9kZTo6SGFsZkF3
YXlGcm9tWmVybyk7CiAKICAgICB1bmlvbiB7Ci0gICAgICAgIGludDY0X3QgbV90aW1lVmFsdWU7
Ci0gICAgICAgIGRvdWJsZSBtX3RpbWVWYWx1ZUFzRG91YmxlOworICAgICAgICBpbnQ2NF90IG1f
dmFsdWU7CisgICAgICAgIGRvdWJsZSBtX3ZhbHVlQXNEb3VibGU7CiAgICAgfTsKLSAgICB1aW50
MzJfdCBtX3RpbWVTY2FsZTsKLSAgICB1aW50OF90IG1fdGltZUZsYWdzOworICAgIHVpbnQzMl90
IG1fc2NhbGUgeyBEZWZhdWx0VGltZVNjYWxlIH07CisgICAgT3B0aW9uU2V0PEZsYWc+IG1fZmxh
Z3MgeyBWYWxpZCB9OwogfTsKIAotY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFUaW1lKCkKLSAg
ICA6IG1fdGltZVZhbHVlKDApCi0gICAgLCBtX3RpbWVTY2FsZShEZWZhdWx0VGltZVNjYWxlKQot
ICAgICwgbV90aW1lRmxhZ3MoVmFsaWQpCi17Ci19Ci0KLWNvbnN0ZXhwciBNZWRpYVRpbWU6Ok1l
ZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgdWludDhfdCBmbGFncykKLSAg
ICA6IG1fdGltZVZhbHVlKHZhbHVlKQotICAgICwgbV90aW1lU2NhbGUoc2NhbGUpCi0gICAgLCBt
X3RpbWVGbGFncyhmbGFncykKLXsKLSAgICBpZiAoc2NhbGUgfHwgIShmbGFncyAmIFZhbGlkKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgKnRoaXMgPSB2YWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmlu
aXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLX0KK1dURl9FWFBPUlRfUFJJVkFU
RSBNZWRpYVRpbWUgYWJzKE1lZGlhVGltZSk7CiAKLWlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3Iq
KGludDMyX3QgbGhzLCBjb25zdCBNZWRpYVRpbWUmIHJocykgeyByZXR1cm4gcmhzLm9wZXJhdG9y
KihsaHMpOyB9Ci0KLVdURl9FWFBPUlRfUFJJVkFURSBleHRlcm4gTWVkaWFUaW1lIGFicyhjb25z
dCBNZWRpYVRpbWUmIHJocyk7Ci0KLXN0cnVjdCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1l
UmFuZ2Ugeworc3RydWN0IE1lZGlhVGltZVJhbmdlIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAKLSAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKIAotICAgIGNvbnN0
IE1lZGlhVGltZSBzdGFydDsKLSAgICBjb25zdCBNZWRpYVRpbWUgZW5kOworICAgIE1lZGlhVGlt
ZSBzdGFydDsKKyAgICBNZWRpYVRpbWUgZW5kOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KLXZvaWQgTWVkaWFUaW1lOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK2NvbnN0
ZXhwciBNZWRpYVRpbWU6Ok1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwg
T3B0aW9uU2V0PEZsYWc+IGZsYWdzKQorICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAsIG1fc2Nh
bGUoc2NhbGUpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQoreworICAgIGlmICghKHNjYWxlIHx8ICEo
ZmxhZ3MgJiBWYWxpZCkpKQorICAgICAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5lZ2F0aXZlSW5m
aW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgTWVkaWFUaW1lIG9wZXJhdG9yKihjb25zdCBUJiBhLCBNZWRpYVRpbWUg
YikKIHsKLSAgICBlbmNvZGVyIDw8IG1fdGltZVZhbHVlIDw8IG1fdGltZVNjYWxlIDw8IG1fdGlt
ZUZsYWdzOworICAgIHJldHVybiBiICogYTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LWJvb2wgTWVkaWFUaW1lOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFUaW1lJiB0aW1l
KQordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0aW1lLm1f
dGltZVZhbHVlKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fdGltZVNjYWxlKQot
ICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fdGltZUZsYWdzKTsKKyAgICBlbmNvZGVy
IDw8IG1fdmFsdWUgPDwgbV9zY2FsZSA8PCBtX2ZsYWdzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPiBib29sIE1lZGlhVGltZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlh
VGltZSYgdGltZSkKK3sKKyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUodGltZS5tX3ZhbHVlKQor
ICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fc2NhbGUpCisgICAgICAgICYmIGRlY29k
ZXIuZGVjb2RlKHRpbWUubV9mbGFncyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3Qg
TG9nQXJndW1lbnQ7CiAKIHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PE1lZGlhVGltZT4g
ewotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSB7IHJl
dHVybiB0aW1lLnRvSlNPTlN0cmluZygpOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhN
ZWRpYVRpbWUgdGltZSkgeyByZXR1cm4gdGltZS50b0pTT05TdHJpbmcoKTsgfQogfTsKIHRlbXBs
YXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PE1lZGlhVGltZVJhbmdlPiB7CiAgICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhjb25zdCBNZWRpYVRpbWVSYW5nZSYgcmFuZ2UpIHsgcmV0dXJuIHJhbmdl
LnRvSlNPTlN0cmluZygpOyB9CiB9OwogCiAjaWZuZGVmIE5ERUJVRwotV1RGX0VYUE9SVF9QUklW
QVRFIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IE1lZGlhVGltZSYp
OworV1RGX0VYUE9SVF9QUklWQVRFIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IE1lZGlhVGltZSk7CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxNZWRp
YVRpbWU6OkZsYWc+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBN
ZWRpYVRpbWU6OkZsYWcsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6VmFsaWQsCisgICAgICAg
IE1lZGlhVGltZTo6RmxhZzo6SGFzQmVlblJvdW5kZWQsCisgICAgICAgIE1lZGlhVGltZTo6Rmxh
Zzo6UG9zaXRpdmVJbmZpbml0ZSwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpOZWdhdGl2ZUlu
ZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6OkluZGVmaW5pdGUsCisgICAgICAgIE1l
ZGlhVGltZTo6RmxhZzo6RG91YmxlVmFsdWUKKyAgICA+OworfTsKKwogfQogCiB1c2luZyBXVEY6
Ok1lZGlhVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaCBiL1NvdXJj
ZS9XVEYvd3RmL1NlY29uZHMuaAppbmRleCBkMjgyZGJiZjcxNWJlNzQyNzg5ZWExMGYxY2NiMjlh
ZDE0NTM1NjRmLi4xYTI5NjRjNmRlYTE1NWQ5MzZlMDRiNTJlMzMyM2YzMmFmMTZiNGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKKysrIGIvU291cmNlL1dURi93dGYvU2Vj
b25kcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0zNzIsNCArMzczLDMgQEAg
aW5saW5lIGJvb2wgaXNmaW5pdGUoV1RGOjpTZWNvbmRzIHNlY29uZHMpCiB9IC8vIG5hbWVzcGFj
ZSBzdGQKIAogdXNpbmcgbmFtZXNwYWNlIFdURjo6c2Vjb25kc19saXRlcmFsczsKLXVzaW5nIFdU
Rjo6U2Vjb25kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAppbmRleCBmZDU1OWIy
NDJkZGZmZDVlOGQ4ZjEzM2VjNDEzYmEzYWI1YjUyNjQ3Li5lNWEzY2I2MzVlYWYxY2E4ODlkZDIy
MDk3NTI1ZmNkNDI4ZTMxODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCkBA
IC0zMiw5ICszMiw5IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCA0
NDhkZGVlMjE2MGVmMThjYTVlMDY2MTM5MGU1OThkNTNiYzU0ZDJhLi4wYzhmMzMxNTBiMTUzNDg0
ZmQ0YzFjOGFkMDAxYTQ5ZmJiZmFhZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTkyMiw3ICs5MjMsNyBAQCBib29sIHBvcnRB
bGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBt
YXRjaGVzIHRoZSBwb3J0IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgogICAgIC8v
IFNlZSBodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5o
dG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBibG9j
a2VkUG9ydExpc3RbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IGJsb2NrZWRQ
b3J0TGlzdFtdID0gewogICAgICAgICAxLCAgICAvLyB0Y3BtdXgKICAgICAgICAgNywgICAgLy8g
ZWNobwogICAgICAgICA5LCAgICAvLyBkaXNjYXJkCkBAIC0xMDA2LDEwICsxMDA3LDEwIEBAIGJv
b2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDY2OTcsIC8vIElSQytTU0wg
W0FwcGxlIGFkZGl0aW9uXQogICAgICAgICAxMDA4MCwgLy8gYW1hbmRhCiAgICAgfTsKKyAgICBz
dGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IGJsb2NrZWRQb3J0U2V0IHsgYmxvY2tlZFBv
cnRMaXN0IH07CiAKICAgICAvLyBJZiB0aGUgcG9ydCBpcyBub3QgaW4gdGhlIGJsb2NrZWQgcG9y
dCBsaXN0LCBhbGxvdyBpdC4KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbihi
bG9ja2VkUG9ydExpc3QpLCBzdGQ6OmVuZChibG9ja2VkUG9ydExpc3QpKSk7Ci0gICAgaWYgKCFz
dGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbihibG9ja2VkUG9ydExpc3QpLCBzdGQ6OmVuZChi
bG9ja2VkUG9ydExpc3QpLCBwb3J0LnZhbHVlKCkpKQorICAgIGlmICghYmxvY2tlZFBvcnRTZXQu
Y29udGFpbnMoKnBvcnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEFsbG93IHBv
cnRzIDIxIGFuZCAyMiBmb3IgRlRQIFVSTHMsIGFzIE1vemlsbGEgZG9lcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCmlu
ZGV4IDU0MzhjYzAxYjYxYWE5ZjZjN2M0NTZlNWY4OTFlNDQ2NmY3MzNiYmMuLjFjZThkMzc1NTYx
ZDI5YjU4OTYxYmUzZmNmMTkzOTQwNGZlODg5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1dhbGxUaW1lLmgKKysrIGIvU291cmNlL1dURi93dGYvV2FsbFRpbWUuaApAQCAtMjYsNiArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvQ2xvY2tUeXBlLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvR2VuZXJpY1RpbWVNaXhpbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9JbnQxMjguaD4KIApAQCAtOTksNSArMTAwLDMgQEAgaW5saW5lIGJvb2wgaXNm
aW5pdGUoV1RGOjpXYWxsVGltZSB0aW1lKQogfQogCiB9IC8vIG5hbWVzcGFjZSBzdGQKLQotdXNp
bmcgV1RGOjpXYWxsVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRDb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVyLmgKaW5kZXggYWZjMzNmMzhkNDIzMzViZDllNjEyNmE0YTc4YTUwNzEwZGIyNjA4YS4u
MjA3ZmEwNDQ2OWZiOTQ4Mzg3NjhlOWY0MWEyYTMyODk3ZjVjYjA4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPG9wdGlv
bmFsPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9z
aXgvVGhyZWFkaW5nUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9T
SVguY3BwCmluZGV4IGQ5MjQ0OTBkMWI1N2YzZWUwNmVlNWVhZDhhMmQzYzExYzIwY2I1ZDEuLjZk
MzQwZTQ2ZjJiMjg0NDBiMTEzZWQ3NzA5ZWEzNzEwMWE4MmY4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNp
bmNsdWRlIDx3dGYvV1RGQ29uZmlnLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL1dvcmRMb2NrLmg+CiAKICNpZiBPUyhMSU5VWCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWdu
YWxzLmgKaW5kZXggOGI0MGMxNGM4NDIzZmQ0ZWNiZjYzNTA2ZDYwYmZmMWMwZmQ4NTYwZi4uOWYx
ODZmNjM1NDg0MWE3NTVhYmMwZDg5ZWMzM2YwYjVmZTBlZjg2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9T
aWduYWxzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIE9TKFVOSVgpCiAKKyNpbmNsdWRlIDxv
cHRpb25hbD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRp
bmdXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggZGMy
NDg5ZmY4OWU4ZjlmODkxNGJjOGUzZmMyOTY2ZjRkZWVlNTc0ZS4uYTlmNTk1MjRhZmM1Y2JjNzM2
ZmJjNGU4MTZkY2RiZWRjN2Y5MGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1Ro
cmVhZGluZ1dpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAK
QEAgLTk1LDYgKzk1LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
Lmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9z
aXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uUG9zaXRpb25EYXRhLmgKaW5kZXggOTI2MjIxNzBjOGFhZDY5ODliOGExMmNlNDgzNTZkYzY4
N2JmNmUzNS4uZTIyY2M5NDY2YTdhYTM3ZDE3NTc4NzU1ZWUzZDY0YmQwZjJhZmU4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0
aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGEuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAK
aW5kZXggMDY1OTg0MDY4OWU0YWJiNTIyMGU1YmRkODA1MjNkNzQwMmY0YWNlMi4uODg4YmVmMzIz
NjgyZWEyMjk5N2VmNjQwOWEwZDcxZDg1NWZmZmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24u
Y3BwCkBAIC0zMiwzNyArMzIsMjggQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLXN0YXRpYyBib29s
IENNVGltZUhhc0ZsYWdzKGNvbnN0IENNVGltZSYgY21UaW1lLCB1aW50MzJfdCBmbGFncykKK01l
ZGlhVGltZSB0b01lZGlhVGltZShDTVRpbWUgdGltZSkKIHsKLSAgICByZXR1cm4gKGNtVGltZS5m
bGFncyAmIGZsYWdzKSA9PSBmbGFnczsKKyAgICBPcHRpb25TZXQ8TWVkaWFUaW1lOjpGbGFnPiBm
bGFnczsKKyAgICBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19WYWxpZCkgeworICAgICAg
ICBmbGFncy5hZGQoTWVkaWFUaW1lOjpWYWxpZCk7CisgICAgICAgIGlmICh0aW1lLmZsYWdzICYg
a0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHkpCisgICAgICAgICAgICBmbGFncy5hZGQoTWVk
aWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBpZiAodGltZS5mbGFncyAm
IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5KQorICAgICAgICAgICAgZmxhZ3MuYWRkKE1l
ZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZSk7CisgICAgICAgIGVsc2UgaWYgKHRpbWUuZmxhZ3Mg
JiBrQ01UaW1lRmxhZ3NfSW5kZWZpbml0ZSkKKyAgICAgICAgICAgIGZsYWdzLmFkZChNZWRpYVRp
bWU6OkluZGVmaW5pdGUpOworICAgIH0KKyAgICByZXR1cm4gTWVkaWFUaW1lKHRpbWUudmFsdWUs
IHRpbWUudGltZXNjYWxlLCBmbGFncyk7CiB9CiAKLU1lZGlhVGltZSB0b01lZGlhVGltZShjb25z
dCBDTVRpbWUmIGNtVGltZSkKLXsKLSAgICB1aW50MzJfdCBmbGFncyA9IDA7Ci0gICAgaWYgKENN
VGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkKSkKLSAgICAgICAgZmxhZ3Mg
fD0gTWVkaWFUaW1lOjpWYWxpZDsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01U
aW1lRmxhZ3NfVmFsaWQgfCBrQ01UaW1lRmxhZ3NfSGFzQmVlblJvdW5kZWQpKQotICAgICAgICBm
bGFncyB8PSBNZWRpYVRpbWU6Okhhc0JlZW5Sb3VuZGVkOwotICAgIGlmIChDTVRpbWVIYXNGbGFn
cyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19Qb3NpdGl2ZUluZmlu
aXR5KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlOwotICAg
IGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVG
bGFnc19OZWdhdGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpOZWdh
dGl2ZUluZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFn
c19WYWxpZCB8IGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKSkKLSAgICAgICAgZmxhZ3MgfD0gTWVk
aWFUaW1lOjpJbmRlZmluaXRlOwotCi0gICAgcmV0dXJuIE1lZGlhVGltZShjbVRpbWUudmFsdWUs
IGNtVGltZS50aW1lc2NhbGUsIGZsYWdzKTsKLX0KLQotQ01UaW1lIHRvQ01UaW1lKGNvbnN0IE1l
ZGlhVGltZSYgbWVkaWFUaW1lKQorQ01UaW1lIHRvQ01UaW1lKE1lZGlhVGltZSBtZWRpYVRpbWUp
CiB7CiAgICAgQ01UaW1lIHRpbWU7Ci0KICAgICBpZiAobWVkaWFUaW1lLmhhc0RvdWJsZVZhbHVl
KCkpCiAgICAgICAgIHRpbWUgPSBDTVRpbWVNYWtlV2l0aFNlY29uZHMobWVkaWFUaW1lLnRvRG91
YmxlKCksIG1lZGlhVGltZS50aW1lU2NhbGUoKSk7CiAgICAgZWxzZQogICAgICAgICB0aW1lID0g
Q01UaW1lTWFrZShtZWRpYVRpbWUudGltZVZhbHVlKCksIG1lZGlhVGltZS50aW1lU2NhbGUoKSk7
Ci0KICAgICBpZiAobWVkaWFUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgdGltZS5mbGFncyB8PSBr
Q01UaW1lRmxhZ3NfVmFsaWQ7CiAgICAgaWYgKG1lZGlhVGltZS5oYXNCZWVuUm91bmRlZCgpKQpA
QCAtNzEsNyArNjIsNiBAQCBDTVRpbWUgdG9DTVRpbWUoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRp
bWUpCiAgICAgICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHk7
CiAgICAgaWYgKG1lZGlhVGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAgICAgdGltZS5m
bGFncyB8PSBrQ01UaW1lRmxhZ3NfTmVnYXRpdmVJbmZpbml0eTsKLQogICAgIHJldHVybiB0aW1l
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9N
ZWRpYVRpbWVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0
aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCmluZGV4IGIzZGJlMTdhYTliYzEyNTFkY2UyZWM4
YWRlZTdjYjg0OTQ3OWJmNzAuLmEyYmNkYWU5ZjhlOTlkMGYwNGUzZjNjM2VkMjBhM2YzNmEyOTA2
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlh
VGltZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0
aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFj
ZSBQQUwgewogCi1QQUxfRVhQT1JUIENNVGltZSB0b0NNVGltZShjb25zdCBNZWRpYVRpbWUmKTsK
LVBBTF9FWFBPUlQgTWVkaWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0IENNVGltZSYpOworUEFMX0VY
UE9SVCBDTVRpbWUgdG9DTVRpbWUoTWVkaWFUaW1lKTsKK1BBTF9FWFBPUlQgTWVkaWFUaW1lIHRv
TWVkaWFUaW1lKENNVGltZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggMGUxYWQ3MjQ1ZmUxNmUxZTk2ZTNkYTFj
YjU4NGI5YTRhNmQ4OWYzYi4uODQ0NmRiOTg1NTFlMGM1MzgyYTk2ZmY4NDcxZmJiNjcyMzEwYzRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwCkBAIC0xMTksMTAgKzExOSwxMCBAQCBzdGF0aWMgaW5saW5lIEdhcExlbmd0aCBibGVu
ZEZ1bmMoY29uc3QgR2FwTGVuZ3RoJiBmcm9tLCBjb25zdCBHYXBMZW5ndGgmIHRvLCBjbwogICAg
IHJldHVybiBibGVuZChmcm9tLmxlbmd0aCgpLCB0by5sZW5ndGgoKSwgY29udGV4dCwgVmFsdWVS
YW5nZTo6Tm9uTmVnYXRpdmUpOwogfQogCi1zdGF0aWMgaW5saW5lIFRhYlNpemUgYmxlbmRGdW5j
KGNvbnN0IFRhYlNpemUmIGZyb20sIGNvbnN0IFRhYlNpemUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0
eUJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgVGFiU2l6ZSBibGVuZEZ1
bmMoVGFiU2l6ZSBmcm9tLCBUYWJTaXplIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ29u
dGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9IGJsZW5kKGZyb20udmFs
dWUoKSwgdG8udmFsdWUoKSwgY29udGV4dCk7Ci0gICAgcmV0dXJuIHsgYmxlbmRlZFZhbHVlIDwg
MCA/IDAgOiBibGVuZGVkVmFsdWUsIGZyb20uaXNTcGFjZXMoKSA/IFNwYWNlVmFsdWVUeXBlIDog
TGVuZ3RoVmFsdWVUeXBlIH07CisgICAgYXV0byBibGVuZGVkVmFsdWUgPSBibGVuZChmcm9tLnZh
bHVlLCB0by52YWx1ZSwgY29udGV4dCk7CisgICAgcmV0dXJuIHsgYmxlbmRlZFZhbHVlIDwgMCA/
IDAgOiBibGVuZGVkVmFsdWUsIGZyb20uaXNTcGFjZXMgPyBUYWJTaXplOjpTcGFjZXMgOiBUYWJT
aXplOjpMZW5ndGggfTsKIH0KIAogc3RhdGljIGlubGluZSBMZW5ndGhTaXplIGJsZW5kRnVuYyhj
b25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgY29uc3QgQ1NTUHJv
cGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCkBAIC05NzgsMTAgKzk3OCw5IEBAIHByaXZh
dGU6CiAgICAgLy8gaXQncyBvbmx5IHBvc3NpYmxlIGlmIHRoZXkncmUgYm90aCBub3QgYXV0by4K
ICAgICBib29sIGNhbkludGVycG9sYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBS
ZW5kZXJTdHlsZSYgdG8sIENvbXBvc2l0ZU9wZXJhdGlvbikgY29uc3QgZmluYWwKICAgICB7Ci0g
ICAgICAgIGJvb2wgZnJvbUlzQXV0byA9IHZhbHVlKGZyb20pLngoKS5pc0F1dG8oKSAmJiB2YWx1
ZShmcm9tKS55KCkuaXNBdXRvKCk7Ci0gICAgICAgIGJvb2wgdG9Jc0F1dG8gPSB2YWx1ZSh0byku
eCgpLmlzQXV0bygpICYmIHZhbHVlKHRvKS55KCkuaXNBdXRvKCk7Ci0KLSAgICAgICAgcmV0dXJu
ICghZnJvbUlzQXV0byAmJiAhdG9Jc0F1dG8pOyAKKyAgICAgICAgYm9vbCBmcm9tSXNBdXRvID0g
dmFsdWUoZnJvbSkueC5pc0F1dG8oKSAmJiB2YWx1ZShmcm9tKS55LmlzQXV0bygpOworICAgICAg
ICBib29sIHRvSXNBdXRvID0gdmFsdWUodG8pLnguaXNBdXRvKCkgJiYgdmFsdWUodG8pLnkuaXNB
dXRvKCk7CisgICAgICAgIHJldHVybiAhZnJvbUlzQXV0byAmJiAhdG9Jc0F1dG87CiAgICAgfQog
fTsKIApAQCAtMTI5MiwyMCArMTI5MSwyMCBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBzaGFkb3dM
aXN0TGVuZ3RoKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdykKICAgICByZXR1cm4gY291bnQ7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSogc2hhZG93Rm9yQmxlbmRpbmcoY29u
c3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBvdGhlclNoYWRvdykK
K3N0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSYgc2hhZG93Rm9yQmxlbmRpbmcoY29uc3Qg
U2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBvdGhlclNoYWRvdykKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEo
TGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFj
ayk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFNo
YWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExl
bmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5n
dGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3Bh
cmVudEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVs
dFdlYktpdEJveFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCks
IExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93
RGF0YT4gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgo
TGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExl
bmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6
Okluc2V0LCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBM
ZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0
aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5v
cm1hbCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0YShMZW5ndGhQb2ludCB7
IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aChM
ZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxl
OjpJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEoTGVuZ3Ro
UG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBM
ZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFk
b3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRv
d0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
KTsKIAogICAgIGlmIChzcmNTaGFkb3cpCi0gICAgICAgIHJldHVybiBzcmNTaGFkb3c7CisgICAg
ICAgIHJldHVybiAqc3JjU2hhZG93OwogCiAgICAgaWYgKG90aGVyU2hhZG93LT5zdHlsZSgpID09
IFNoYWRvd1N0eWxlOjpJbnNldCkKLSAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtp
dEJveFNoYWRvdygpID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAm
ZGVmYXVsdEluc2V0U2hhZG93RGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93
LT5pc1dlYmtpdEJveFNoYWRvdygpID8gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YS5n
ZXQoKSA6IGRlZmF1bHRJbnNldFNoYWRvd0RhdGEuZ2V0KCk7CiAKLSAgICByZXR1cm4gb3RoZXJT
aGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEu
Z2V0KCkgOiAmZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuIG90aGVyU2hhZG93
LT5pc1dlYmtpdEJveFNoYWRvdygpID8gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkg
OiBkZWZhdWx0U2hhZG93RGF0YS5nZXQoKTsKIH0KIAogY2xhc3MgUHJvcGVydHlXcmFwcGVyU2hh
ZG93IGZpbmFsIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewpAQCAtMTQy
OCwxMSArMTQyNywxMSBAQCBwcml2YXRlOgogICAgICAgICBTaGFkb3dEYXRhKiBsYXN0U2hhZG93
ID0gbnVsbHB0cjsKIAogICAgICAgICB3aGlsZSAoc2hhZG93QSB8fCBzaGFkb3dCKSB7Ci0gICAg
ICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhz
aGFkb3dBLCBzaGFkb3dCKTsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGRzdFNoYWRv
dyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0IsIHNoYWRvd0EpOworICAgICAgICAgICAgYXV0
byYgc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwgc2hhZG93Qik7CisgICAg
ICAgICAgICBhdXRvJiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dCLCBzaGFk
b3dBKTsKIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRT
aGFkb3cgPSBibGVuZEZ1bmMoc3JjU2hhZG93LCBkc3RTaGFkb3csIGNvbnRleHQpOwotICAgICAg
ICAgICAgU2hhZG93RGF0YSogYmxlbmRlZFNoYWRvd1B0ciA9IGJsZW5kZWRTaGFkb3cuZ2V0KCk7
CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoJnNyY1NoYWRvdywg
JmRzdFNoYWRvdywgY29udGV4dCk7CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRTaGFkb3dQdHIg
PSBibGVuZGVkU2hhZG93LmdldCgpOwogCiAgICAgICAgICAgICBpZiAoIWxhc3RTaGFkb3cpCiAg
ICAgICAgICAgICAgICAgbmV3U2hhZG93RGF0YSA9IFdURk1vdmUoYmxlbmRlZFNoYWRvdyk7CkBA
IC0xNDQxLDggKzE0NDAsOCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBsYXN0U2hhZG93ID0g
YmxlbmRlZFNoYWRvd1B0cjsKIAotICAgICAgICAgICAgc2hhZG93QSA9IHNoYWRvd0EgPyBzaGFk
b3dBLT5uZXh0KCkgOiAwOwotICAgICAgICAgICAgc2hhZG93QiA9IHNoYWRvd0IgPyBzaGFkb3dC
LT5uZXh0KCkgOiAwOworICAgICAgICAgICAgc2hhZG93QSA9IHNoYWRvd0EgPyBzaGFkb3dBLT5u
ZXh0KCkgOiBudWxscHRyOworICAgICAgICAgICAgc2hhZG93QiA9IHNoYWRvd0IgPyBzaGFkb3dC
LT5uZXh0KCkgOiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ld1NoYWRv
d0RhdGE7CkBAIC0xNDcxLDEzICsxNDcwLDE0IEBAIHByaXZhdGU6CiAKICAgICAgICAgaW50IG1h
eExlbmd0aCA9IHN0ZDo6bWF4KGZyb21MZW5ndGgsIHRvTGVuZ3RoKTsKICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBtYXhMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgY29uc3QgU2hhZG93
RGF0YSogZnJvbVNoYWRvdyA9IGkgPCBmcm9tTGVuZ3RoID8gZnJvbVNoYWRvd3NbaV0gOiAwOwot
ICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogdG9TaGFkb3cgPSBpIDwgdG9MZW5ndGggPyB0
b1NoYWRvd3NbaV0gOiAwOworICAgICAgICAgICAgYXV0byBmcm9tU2hhZG93ID0gaSA8IGZyb21M
ZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IG51bGxwdHI7CisgICAgICAgICAgICBhdXRvIHRvU2hh
ZG93ID0gaSA8IHRvTGVuZ3RoID8gdG9TaGFkb3dzW2ldIDogbnVsbHB0cjsKKworICAgICAgICAg
ICAgYXV0byYgc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoZnJvbVNoYWRvdywgdG9TaGFk
b3cpOworICAgICAgICAgICAgYXV0byYgZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcodG9T
aGFkb3csIGZyb21TaGFkb3cpOwogCi0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBzcmNT
aGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1NoYWRvdyk7Ci0gICAgICAg
ICAgICBjb25zdCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyh0b1No
YWRvdywgZnJvbVNoYWRvdyk7CisgICAgICAgICAgICBhdXRvIGJsZW5kZWRTaGFkb3cgPSBibGVu
ZEZ1bmMoJnNyY1NoYWRvdywgJmRzdFNoYWRvdywgY29udGV4dCk7CiAKLSAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKHNyY1No
YWRvdywgZHN0U2hhZG93LCBjb250ZXh0KTsKICAgICAgICAgICAgIC8vIEluc2VydCBhdCB0aGUg
c3RhcnQgb2YgdGhlIGxpc3QgdG8gcHJlc2VydmUgdGhlIG9yZGVyLgogICAgICAgICAgICAgYmxl
bmRlZFNoYWRvdy0+c2V0TmV4dChXVEZNb3ZlKG5ld1NoYWRvd0RhdGEpKTsKICAgICAgICAgICAg
IG5ld1NoYWRvd0RhdGEgPSBXVEZNb3ZlKGJsZW5kZWRTaGFkb3cpOwpAQCAtMjM0OCwxOCArMjM0
OCwxOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLWNsYXNzIFRhYlNpemVQcm9wZXJ0eVdyYXBw
ZXIgZmluYWwgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyPGNvbnN0IFRhYlNpemUmPiB7CitjbGFz
cyBUYWJTaXplUHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxU
YWJTaXplPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVGFi
U2l6ZVByb3BlcnR5V3JhcHBlcigpCi0gICAgICAgIDogUHJvcGVydHlXcmFwcGVyPGNvbnN0IFRh
YlNpemUmPihDU1NQcm9wZXJ0eVRhYlNpemUsICZSZW5kZXJTdHlsZTo6dGFiU2l6ZSwgJlJlbmRl
clN0eWxlOjpzZXRUYWJTaXplKQorICAgICAgICA6IFByb3BlcnR5V3JhcHBlcjxUYWJTaXplPihD
U1NQcm9wZXJ0eVRhYlNpemUsICZSZW5kZXJTdHlsZTo6dGFiU2l6ZSwgJlJlbmRlclN0eWxlOjpz
ZXRUYWJTaXplKQogICAgIHsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5JbnRlcnBv
bGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBDb21w
b3NpdGVPcGVyYXRpb24pIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gdmFsdWUo
ZnJvbSkuaXNTcGFjZXMoKSA9PSB2YWx1ZSh0bykuaXNTcGFjZXMoKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlKGZyb20pLmlzU3BhY2VzID09IHZhbHVlKHRvKS5pc1NwYWNlczsKICAgICB9CiAKICAg
ICB2b2lkIGJsZW5kKFJlbmRlclN0eWxlJiBkZXN0aW5hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUm
IGZyb20sIGNvbnN0IFJlbmRlclN0eWxlJiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDY5MmQ4NDY4MzMzNjk2YzQ1OGFi
MTM1NzJhNTVkMmU1NDFhODQwMzkuLmVhNWU0ZmY1MjY0YWUyOWEwYTJjMGQ1YjlmODYwNDA3MDg2
NjFlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC0xNTMzLDE0ICsxNTMzLDE0IEBAIHN0YXRpYyBFbGVtZW50KiBzdHls
ZUVsZW1lbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZv
clBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGVuZ3RoUG9pbnQmIHBv
c2l0aW9uKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKLSAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChwb3NpdGlvbi54KCksIHN0eWxlKSk7Ci0gICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueSgpLCBzdHlsZSkpOworICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLngsIHN0eWxlKSk7Cisg
ICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24u
eSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4g
dmFsdWVGb3JQb3NpdGlvbk9yQXV0byhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExl
bmd0aFBvaW50JiBwb3NpdGlvbikKIHsKLSAgICBpZiAocG9zaXRpb24ueCgpLmlzQXV0bygpICYm
IHBvc2l0aW9uLnkoKS5pc0F1dG8oKSkKKyAgICBpZiAocG9zaXRpb24ueC5pc0F1dG8oKSAmJiBw
b3NpdGlvbi55LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKIAogICAgIHJldHVybiB2
YWx1ZUZvclBvc2l0aW9uKHN0eWxlLCBwb3NpdGlvbik7CkBAIC0xOTM2LDcgKzE5MzYsNyBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKGF1dG8qIGNvbnRlbnREYXRhID0gc3R5bGUuY29udGVudERhdGEo
KTsgY29udGVudERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5leHQoKSkgewogICAg
ICAgICBpZiAoaXM8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpKQotICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxDb3VudGVy
Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRlcigpLmlkZW50aWZpZXIoKSwgQ1NTVW5p
dFR5cGU6OkNTU19DT1VOVEVSX05BTUUpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVu
dERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVyLCBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFN
RSkpOwogICAgICAgICBlbHNlIGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEp
KQogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGRvd25jYXN0PEltYWdlQ29udGVudERhdGE+KCpj
b250ZW50RGF0YSkuaW1hZ2UoKS5jc3NWYWx1ZSgpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8VGV4
dENvbnRlbnREYXRhPigqY29udGVudERhdGEpKQpAQCAtMzAyOSw3ICszMDI5LDcgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHls
ZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogICAgICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUuY29sdW1uV2lkdGgoKSwgc3R5bGUpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3R5bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhlbHMoMS4wKSwgc3R5bGUu
dGFiU2l6ZSgpLmlzU3BhY2VzKCkgPyBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiA6IENTU1VuaXRU
eXBlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS50YWJTaXplKCkud2lkdGhJblBpeGVscygxLjApLCBzdHlsZS50YWJTaXplKCkuaXNT
cGFjZXMgPyBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiA6IENTU1VuaXRUeXBlOjpDU1NfUFgpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q3Vyc29yOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0OwogICAgICAgICAgICAgYXV0byogY3Vyc29ycyA9IHN0eWxlLmN1cnNv
cnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKaW5kZXggZjViYzhjYTk2
YjkwZDYwNTUwZGNhNTgyMWU4Mzg1NDlhNGIyZjdlZi4uZDZhMTJjYmI5NjkyMjczODU0MmY0ZTA5
NzQ3M2U3YjhlYzdkZTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1
bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAK
QEAgLTEyMyw3ICsxMjMsNyBAQCBMYXlvdXRTaXplIHNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExl
bmd0aFNpemUmIGxlbmd0aCwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bQogCiBMYXlvdXRQb2lu
dCBwb2ludEZvckxlbmd0aFBvaW50KGNvbnN0IExlbmd0aFBvaW50JiBsZW5ndGhQb2ludCwgY29u
c3QgTGF5b3V0U2l6ZSYgbWF4aW11bVZhbHVlKQogewotICAgIHJldHVybiB7IHZhbHVlRm9yTGVu
Z3RoKGxlbmd0aFBvaW50LngoKSwgbWF4aW11bVZhbHVlLndpZHRoKCkpLCB2YWx1ZUZvckxlbmd0
aChsZW5ndGhQb2ludC55KCksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsKKyAgICByZXR1cm4g
eyB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54LCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZh
bHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LnksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsKIH0K
IAogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVu
Z3RoU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQpAQCAtMTMzLDcgKzEzMyw3IEBAIEZs
b2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYKIAogRmxvYXRQb2ludCBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9p
bnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0aFBvaW50LCBjb25zdCBGbG9hdFNpemUmIGJveFNp
emUpCiB7Ci0gICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54KCks
IGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSgpLCBi
b3hTaXplLmhlaWdodCgpKSB9OworICAgIHJldHVybiB7IGZsb2F0VmFsdWVGb3JMZW5ndGgobGVu
Z3RoUG9pbnQueCwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQ
b2ludC55LCBib3hTaXplLmhlaWdodCgpKSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oCmluZGV4IDdlZTMwYTNl
MTMxMjk0YTNkNTVhY2VmNGNhYTBhNzFjM2QxMGFkNTguLjZmZWMzNzQ1MGFjMGFiZmVkMGNhODA3
NTM5MGVlMjY5ODRjYWMwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlT
dHlsZS5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJlc2VydmVOZXds
aW5lKCkgY29uc3Q7CiAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBjb25zdDsKIAotICAg
IGNvbnN0IFRhYlNpemUmIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7IH0KKyAg
ICBUYWJTaXplIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3RhYlNpemU7IH0KIAogcHJpdmF0
ZToKICAgICB2b2lkIHNldHVwQmFja2dyb3VuZChjb25zdCBSZW5kZXJTdHlsZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggYjVhNDE1YWViNzc2MzM4MDc4NzRiZjk2ZjllNjk4MTM4YTM4
NTFlNC4uNmRjMjNmMDAxOTNjOTliNTVmZWM5YzQ3ZmFlMjJmMTM3YzZjNDgzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0yNzgsNiArMjc4LDcgQEAKICNpbmNsdWRlIDx3dGYvTGFuZ3Vh
Z2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0
Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KICNpbmNsdWRlIDx3
dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVmZmVyLmg+CkBAIC0xMjMwLDMyICsxMjMxLDM4IEBAIHN0cnVjdCBVbmlj
b2RlQ29kZVBvaW50UmFuZ2UgewogICAgIFVDaGFyMzIgbWF4aW11bTsKIH07CiAKLSNpZiBBU1NF
UlRfRU5BQkxFRAotCi1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVuaWNvZGVD
b2RlUG9pbnRSYW5nZSYgYSwgY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBiKQorc3RhdGlj
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChVbmljb2RlQ29kZVBvaW50UmFuZ2UgYSwgVW5pY29k
ZUNvZGVQb2ludFJhbmdlIGIpCiB7Ci0gICAgQVNTRVJUKGEubWluaW11bSA8PSBhLm1heGltdW0p
OwotICAgIEFTU0VSVChiLm1pbmltdW0gPD0gYi5tYXhpbXVtKTsKKyAgICBBU1NFUlRfVU5ERVJf
Q09OU1RFWFBSX0NPTlRFWFQoYS5taW5pbXVtIDw9IGEubWF4aW11bSk7CisgICAgQVNTRVJUX1VO
REVSX0NPTlNURVhQUl9DT05URVhUKGIubWluaW11bSA8PSBiLm1heGltdW0pOwogICAgIHJldHVy
biBhLm1heGltdW0gPCBiLm1pbmltdW07CiB9CiAKLSNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAot
Ci1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5n
ZSYgYSwgVUNoYXIzMiBiKQorc3RhdGljIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChVbmljb2Rl
Q29kZVBvaW50UmFuZ2UgYSwgVUNoYXIzMiBiKQogewotICAgIEFTU0VSVChhLm1pbmltdW0gPD0g
YS5tYXhpbXVtKTsKKyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoYS5taW5pbXVt
IDw9IGEubWF4aW11bSk7CiAgICAgcmV0dXJuIGEubWF4aW11bSA8IGI7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCBvcGVyYXRvcjwoVUNoYXIzMiBhLCBjb25zdCBVbmljb2RlQ29kZVBvaW50UmFu
Z2UmIGIpCitzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFVDaGFyMzIgYSwgVW5pY29k
ZUNvZGVQb2ludFJhbmdlIGIpCiB7Ci0gICAgQVNTRVJUKGIubWluaW11bSA8PSBiLm1heGltdW0p
OworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChiLm1pbmltdW0gPD0gYi5tYXhp
bXVtKTsKICAgICByZXR1cm4gYSA8IGIubWluaW11bTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oVW5pY29kZUNvZGVQb2ludFJhbmdlIGEsIFVDaGFyMzIgYikKK3sKKyAg
ICByZXR1cm4gIShhIDwgYikgJiYgIShiIDwgYSk7Cit9CisKK3N0YXRpYyBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KFVDaGFyMzIgYSwgVW5pY29kZUNvZGVQb2ludFJhbmdlIGIpCit7CisgICAg
cmV0dXJuIGIgPT0gYTsKK30KKwogc3RhdGljIGlubGluZSBib29sIGlzUG90ZW50aWFsQ3VzdG9t
RWxlbWVudE5hbWVDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSByYW5nZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIFVuaWNvZGVDb2RlUG9pbnRSYW5nZSByYW5nZXNbXSA9IHsKICAgICAgICAgeyAnLScsICcu
JyB9LAogICAgICAgICB7ICcwJywgJzknIH0sCiAgICAgICAgIHsgJ18nLCAnXycgfSwKQEAgLTEy
NzQsOSArMTI4MSw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1BvdGVudGlhbEN1c3RvbUVsZW1l
bnROYW1lQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgICAgICB7IDB4RkRGMCwgMHhG
RkZEIH0sCiAgICAgICAgIHsgMHgxMDAwMCwgMHhFRkZGRiB9LAogICAgIH07Ci0KLSAgICBBU1NF
UlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbihyYW5nZXMpLCBzdGQ6OmVuZChyYW5nZXMpKSk7
Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHJhbmdlcyksIHN0ZDo6
ZW5kKHJhbmdlcyksIGNoYXJhY3Rlcik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJh
eVNldCBzZXQgeyByYW5nZXMgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKGNoYXJhY3Rlcik7
CiB9CiAKIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1cyBEb2N1bWVudDo6dmFsaWRh
dGVDdXN0b21FbGVtZW50TmFtZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAKaW5kZXggOWEzNjc1OTZkZDAyNjlkNTlmNjNl
YjBmNmM4OWUzNGRkODIxODJkOS4uYjVmNGNjMDVlMjc2N2ExOGM2NzNkMDhlMzRjZDIyMDY5YzU4
MTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IExlbmd0aFBvaW50JiBzaXplKQogewotICAgIHJldHVybiB0cyA8
PCBzaXplLngoKSA8PCAiICIgPDwgc2l6ZS55KCk7CisgICAgcmV0dXJuIHRzIDw8IHNpemUueCA8
PCAiICIgPDwgc2l6ZS55OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoUG9pbnQuaAppbmRleCA4MTIwNWJiMTNkZGE1MDMzYjJjOTBmYmVhMDUz
MGMyZjU2Zjk5MzZiLi45OGJkY2NhMDcxZjhjMjE5YjJjYmE5MGJjYmMwMWYzMjViNjIyMjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKQEAgLTMyLDQ0ICszMiwyNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQmxlbmRpbmdDb250ZXh0OwogCiBzdHJ1Y3QgTGVu
Z3RoUG9pbnQgewotcHVibGljOgotICAgIExlbmd0aFBvaW50KCkKLSAgICB7Ci0gICAgfQotICAg
IAotICAgIExlbmd0aFBvaW50KExlbmd0aCB4LCBMZW5ndGggeSkKLSAgICAgICAgOiBtX3goV1RG
TW92ZSh4KSkKLSAgICAgICAgLCBtX3koV1RGTW92ZSh5KSkKLSAgICB7Ci0gICAgfQorICAgIExl
bmd0aCB4OworICAgIExlbmd0aCB5OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0
aFBvaW50JiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhQb2ludCYg
b3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV94ID09IG8ubV94ICYmIG1feSA9
PSBvLm1feTsKKyAgICAgICAgcmV0dXJuIHggPT0gb3RoZXIueCAmJiB5ID09IG90aGVyLnk7CiAg
ICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aFBvaW50JiBvKSBjb25zdAor
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGhQb2ludCYgb3RoZXIpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICAgICAgcmV0dXJuIHggIT0gb3Ro
ZXIueCB8fCB5ICE9IG90aGVyLnk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRYKExlbmd0aCB4KSB7
IG1feCA9IFdURk1vdmUoeCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVy
biBtX3g7IH0KLQotICAgIHZvaWQgc2V0WShMZW5ndGggeSkgeyBtX3kgPSBXVEZNb3ZlKHkpOyB9
Ci0gICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9Ci0KLSAgICBib29s
IGlzWmVybygpIGNvbnN0IHsgcmV0dXJuIG1feC5pc1plcm8oKSAmJiBtX3kuaXNaZXJvKCk7IH0K
LQotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgbmljZSB0byBwYWNrIHRoZSB0
d28gTGVuZ3RocyB0b2dldGhlciBiZXR0ZXIgc29tZWhvdyAodG8gYXZvaWQgcGFkZGluZyBiZXR3
ZWVuIHRoZW0pLgotICAgIExlbmd0aCBtX3g7Ci0gICAgTGVuZ3RoIG1feTsKKyAgICBib29sIGlz
WmVybygpIGNvbnN0IHsgcmV0dXJuIHguaXNaZXJvKCkgJiYgeS5pc1plcm8oKTsgfQogfTsKIAog
aW5saW5lIExlbmd0aFBvaW50IGJsZW5kKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBjb25zdCBM
ZW5ndGhQb2ludCYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gTGVuZ3RoUG9pbnQoYmxlbmQoZnJvbS54KCksIHRvLngoKSwgY29udGV4dCksIGJsZW5k
KGZyb20ueSgpLCB0by55KCksIGNvbnRleHQpKTsKKyAgICByZXR1cm4geyBibGVuZChmcm9tLngs
IHRvLngsIGNvbnRleHQpLCBibGVuZChmcm9tLnksIHRvLnksIGNvbnRleHQpIH07CiB9CiAKIFdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBMZW5ndGhQ
b2ludCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmgKaW5kZXggYmFiZTk2Njg0ZTdjMTVjYjljYTk2OTNiYTM1NjBhOGFhM2QyYzk2Yy4uZTlmMjY4
YzEwZGFiNDI4NDY3OThhODZkOWY5OTJkYzVhNWZiODJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xNjUsOCArMTY1LDggQEAgcHVi
bGljOgogCiAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1
cm4gcHJpbWFyeUZvbnQoKS5mb250TWV0cmljcygpOyB9CiAgICAgZmxvYXQgc3BhY2VXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIHByaW1hcnlGb250KCkuc3BhY2VXaWR0aCgpICsgbV9sZXR0ZXJTcGFj
aW5nOyB9Ci0gICAgZmxvYXQgdGFiV2lkdGgoY29uc3QgRm9udCYsIGNvbnN0IFRhYlNpemUmLCBm
bG9hdCkgY29uc3Q7Ci0gICAgZmxvYXQgdGFiV2lkdGgoY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSwg
ZmxvYXQgcG9zaXRpb24pIGNvbnN0IHsgcmV0dXJuIHRhYldpZHRoKHByaW1hcnlGb250KCksIHRh
YlNpemUsIHBvc2l0aW9uKTsgfQorICAgIGZsb2F0IHRhYldpZHRoKGNvbnN0IEZvbnQmLCBUYWJT
aXplLCBmbG9hdCkgY29uc3Q7CisgICAgZmxvYXQgdGFiV2lkdGgoVGFiU2l6ZSB0YWJTaXplLCBm
bG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJpbWFyeUZvbnQoKSwgdGFi
U2l6ZSwgcG9zaXRpb24pOyB9CiAgICAgYm9vbCBoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGgoKSBj
b25zdDsKICAgICBib29sIGZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxvYXQgJndp
ZHRoKSBjb25zdDsgLy8gcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MKIApAQCAtMzcwLDcgKzM3MCw3
IEBAIGlubGluZSBGb250U2VsZWN0b3IqIEZvbnRDYXNjYWRlOjpmb250U2VsZWN0b3IoKSBjb25z
dAogICAgIHJldHVybiBtX2ZvbnRzID8gbV9mb250cy0+Zm9udFNlbGVjdG9yKCkgOiBudWxscHRy
OwogfQogCi1pbmxpbmUgZmxvYXQgRm9udENhc2NhZGU6OnRhYldpZHRoKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IFRhYlNpemUmIHRhYlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdAoraW5saW5l
IGZsb2F0IEZvbnRDYXNjYWRlOjp0YWJXaWR0aChjb25zdCBGb250JiBmb250LCBUYWJTaXplIHRh
YlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdAogewogICAgIGZsb2F0IGJhc2VUYWJXaWR0aCA9
IHRhYlNpemUud2lkdGhJblBpeGVscyhmb250LnNwYWNlV2lkdGgoKSk7CiAgICAgaWYgKCFiYXNl
VGFiV2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5jcHAKaW5kZXggNzU0M2Y0NzVhMjdhNjUxNTkwNmNjMjJlYjNmNjBhOTE0MDkyOTBiYS4u
MDc1NjE5NGNmMmY1ZThiOWZiYjI3YTEwY2U3OGEyZTE4YzIzY2ZkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtNzQsNyArNzQs
OCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNv
bnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1
dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZs
b3dlZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmIChidWZmZXJTaXpl
ID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCisgICAgdWludDMyX3QgbWF4
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAgaWYgKGJ1ZmZlclNp
emUgPiBtYXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFy
cmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6
ZSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGFiU2l6ZS5oCmluZGV4IDM0YTcwODEwNjI4YWM5NTI3ZjRmNWNmMDQ3NWQ4MzViN2NjMmVh
Y2YuLjM2NjQyZjhhOGM0NzQwN2VhY2U5MzUxMjI4MzYwZjJjODdkN2MyMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKQEAgLTI5LDQ5ICsyOSwzOSBAQAog
CiAjcHJhZ21hIG9uY2UKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KIAotZW51bSBUYWJTaXplVmFsdWVUeXBlIHsKLSAgICBMZW5ndGhWYWx1
ZVR5cGUsCi0gICAgU3BhY2VWYWx1ZVR5cGUsCi19OworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgVGFiU2l6ZSB7Ci0gICAgVGFiU2l6ZShmbG9hdCBudW1Pckxlbmd0aCwgVGFiU2l6ZVZh
bHVlVHlwZSBpc1NwYWNlcyA9IFNwYWNlVmFsdWVUeXBlKQotICAgICAgICA6IG1fdmFsdWUobnVt
T3JMZW5ndGgpCi0gICAgICAgICwgbV9pc1NwYWNlcyhpc1NwYWNlcykKLSAgICB7Ci0gICAgfQot
Ci0gICAgYm9vbCBpc1NwYWNlcygpIGNvbnN0CisgICAgZW51bSBWYWx1ZVR5cGUgeyBMZW5ndGgs
IFNwYWNlcyB9OworICAgIFRhYlNpemUoZmxvYXQgbnVtT3JMZW5ndGgsIFZhbHVlVHlwZSB0eXBl
ID0gU3BhY2VzKQorICAgICAgICA6IHZhbHVlKG51bU9yTGVuZ3RoKQorICAgICAgICAsIGlzU3Bh
Y2VzKHR5cGUgPT0gU3BhY2VzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNTcGFjZXM7CiAg
ICAgfQogCiAgICAgZmxvYXQgd2lkdGhJblBpeGVscyhmbG9hdCBzcGFjZVdpZHRoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNTcGFjZXMgPyBtX3ZhbHVlICogc3BhY2VXaWR0aCA6
IG1fdmFsdWU7CisgICAgICAgIHJldHVybiBpc1NwYWNlcyA/IHZhbHVlICogc3BhY2VXaWR0aCA6
IHZhbHVlOwogICAgIH0KIAotICAgIGZsb2F0IHZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX3ZhbHVlOwotICAgIH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gdmFsdWU7IH0KIAotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biB2YWx1ZSgpOyB9Ci0KLSAgICBmbG9hdCBtX3ZhbHVlOwotICAgIGJvb2wgbV9pc1NwYWNlczsK
KyAgICBmbG9hdCB2YWx1ZTsKKyAgICBib29sIGlzU3BhY2VzOwogfTsKIAotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUYWJTaXplJiBhLCBjb25zdCBUYWJTaXplJiBiKQoraW5saW5lIGJv
b2wgb3BlcmF0b3I9PShUYWJTaXplIGEsIFRhYlNpemUgYikKIHsKLSAgICByZXR1cm4gKGEubV92
YWx1ZSA9PSBiLm1fdmFsdWUpICYmIChhLm1faXNTcGFjZXMgPT0gYi5tX2lzU3BhY2VzKTsKKyAg
ICByZXR1cm4gYS52YWx1ZSA9PSBiLnZhbHVlICYmIGEuaXNTcGFjZXMgPT0gYi5pc1NwYWNlczsK
IH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUYWJTaXplJiBhLCBjb25zdCBUYWJT
aXplJiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShUYWJTaXplIGEsIFRhYlNpemUgYikKIHsK
ICAgICByZXR1cm4gIShhID09IGIpOwogfQogCitpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiBzdHJlYW0sIFRhYlNpemUgc2l6ZSkgeyByZXR1cm4gc3RyZWFtIDw8IHNp
emUudmFsdWUgPDwgKHNpemUuaXNTcGFjZXMgPyAiIHNwYWNlcyIgOiAiIik7IH0KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1
bi5oCmluZGV4IDFkNDdkNjVkNjgyNDYyNmUxNTkyODgwMGY0Njk3YzI3NmNiMjc2MzQuLmEyMDk2
Y2Y5ZGUzNWU4YTViMzkzYTdmYWMwYTQ4M2Q1NzFjNGYxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTk1LDggKzk1LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0SG9yaXpvbnRhbEdseXBoU3RyZXRjaChmbG9hdCBzY2FsZSkgeyBtX2hvcml6b250
YWxHbHlwaFN0cmV0Y2ggPSBzY2FsZTsgfQogCiAgICAgYm9vbCBhbGxvd1RhYnMoKSBjb25zdCB7
IHJldHVybiBtX2FsbG93VGFiczsgfQotICAgIGNvbnN0IFRhYlNpemUmIHRhYlNpemUoKSBjb25z
dCB7IHJldHVybiBtX3RhYlNpemU7IH0KLSAgICB2b2lkIHNldFRhYlNpemUoYm9vbCwgY29uc3Qg
VGFiU2l6ZSYpOworICAgIFRhYlNpemUgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiU2l6
ZTsgfQorICAgIHZvaWQgc2V0VGFiU2l6ZShib29sLCBUYWJTaXplKTsKIAogICAgIGZsb2F0IHhQ
b3MoKSBjb25zdCB7IHJldHVybiBtX3hwb3M7IH0KICAgICB2b2lkIHNldFhQb3MoZmxvYXQgeFBv
cykgeyBtX3hwb3MgPSB4UG9zOyB9CkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2Rpc2FibGVTcGFjaW5nIDogMTsKIH07CiAKLWlubGluZSB2b2lkIFRleHRSdW46
OnNldFRhYlNpemUoYm9vbCBhbGxvdywgY29uc3QgVGFiU2l6ZSYgc2l6ZSkKK2lubGluZSB2b2lk
IFRleHRSdW46OnNldFRhYlNpemUoYm9vbCBhbGxvdywgVGFiU2l6ZSBzaXplKQogewogICAgIG1f
YWxsb3dUYWJzID0gYWxsb3c7CiAgICAgbV90YWJTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4IDkyZjQyYjY3
N2Q1M2RkOWM2YTNmNmJkNmUzZDkxY2JhYzY2YWE0YjkuLjlkYjExMTEyOGExZmI3Y2VmZWE0YWQw
MmFlYzExYmE1ZTI5MWRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVlA5VXRpbGl0aWVzLmNwcApAQCAtMjcsMTMgKzI3LDE0IEBACiAjaW5jbHVkZSAiVlA5
VXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgaXNW
YWxpZFZQTGV2ZWwodWludDhfdCBsZXZlbCkKIHsKLSAgICBjb25zdGV4cHIgdWludDhfdCB2YWxp
ZExldmVsc1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWxpZExldmVsc1td
ID0gewogICAgICAgICBWUENvbmZpZ3VyYXRpb25MZXZlbDo6TGV2ZWxfMSwKICAgICAgICAgVlBD
b25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzFfMSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2
ZWw6OkxldmVsXzIsCkBAIC00OSwxNCArNTAsMTMgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZQTGV2
ZWwodWludDhfdCBsZXZlbCkKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzZf
MSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTGV2ZWw6OkxldmVsXzZfMiwKICAgICB9OwotCi0g
ICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRMZXZlbHMpLCBzdGQ6OmVu
ZCh2YWxpZExldmVscykpKTsKLSAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVn
aW4odmFsaWRMZXZlbHMpLCBzdGQ6OmVuZCh2YWxpZExldmVscyksIGxldmVsKTsKKyAgICBzdGF0
aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHZhbGlkTGV2ZWxzIH07CisgICAgcmV0
dXJuIHNldC5jb250YWlucyhsZXZlbCk7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRWUENvbG9y
UHJpbWFyaWVzKHVpbnQ4X3QgY29sb3JQcmltYXJpZXMpCiB7Ci0gICAgY29uc3RleHByIHVpbnQ4
X3QgdmFsaWRDb2xvclByaW1hcmllc1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhf
dCB2YWxpZENvbG9yUHJpbWFyaWVzW10gPSB7CiAgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9y
UHJpbWFyaWVzOjpCVF83MDlfNiwKICAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJp
ZXM6OlVuc3BlY2lmaWVkLAogICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6
QlRfNDcwXzZfTSwKQEAgLTcwLDE0ICs3MCwxMyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBDb2xv
clByaW1hcmllcyh1aW50OF90IGNvbG9yUHJpbWFyaWVzKQogICAgICAgICBWUENvbmZpZ3VyYXRp
b25Db2xvclByaW1hcmllczo6U01QVEVfRUdfNDMyXzEsCiAgICAgICAgIFZQQ29uZmlndXJhdGlv
bkNvbG9yUHJpbWFyaWVzOjpFQlVfVGVjaF8zMjEzX0UsCiAgICAgfTsKLQotICAgIEFTU0VSVChz
dGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkQ29sb3JQcmltYXJpZXMpLCBzdGQ6OmVuZCh2
YWxpZENvbG9yUHJpbWFyaWVzKSkpOwotICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3Rk
OjpiZWdpbih2YWxpZENvbG9yUHJpbWFyaWVzKSwgc3RkOjplbmQodmFsaWRDb2xvclByaW1hcmll
cyksIGNvbG9yUHJpbWFyaWVzKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0
IHNldCB7IHZhbGlkQ29sb3JQcmltYXJpZXMgfTsKKyAgICByZXR1cm4gc2V0LmNvbnRhaW5zKGNv
bG9yUHJpbWFyaWVzKTsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0
ZXJpc3RpY3ModWludDhfdCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcykKIHsKLSAgICBjb25zdGV4
cHIgdWludDhfdCB2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzW10gPSB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50OF90IHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3NbXSA9IHsKICAg
ICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzcwOV82LAog
ICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6VW5zcGVjaWZp
ZWQsCiAgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF80
NzBfNl9NLApAQCAtOTYsMTMgKzk1LDEzIEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUFRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzKHVpbnQ4X3QgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpCiAgICAgICAg
IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpTTVBURV9TVF80MjhfMSwK
ICAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIxMDBf
SExHLAogICAgIH07Ci0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRU
cmFuc2ZlckNoYXJhY3RlcmlzdGljcyksIHN0ZDo6ZW5kKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3MpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlk
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpLCBzdGQ6OmVuZCh2YWxpZFRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzKSwgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
U29ydGVkQXJyYXlTZXQgc2V0IHsgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyB9OworICAg
IHJldHVybiBzZXQuY29udGFpbnModHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOwogfQogCiBzdGF0
aWMgYm9vbCBpc1ZhbGlkVlBNYXRyaXhDb2VmZmljaWVudHModWludDhfdCBtYXRyaXhDb2VmZmlj
aWVudHMpCiB7Ci0gICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRNYXRyaXhDb2VmZmljaWVudHNb
XSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRNYXRyaXhDb2VmZmljaWVu
dHNbXSA9IHsKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpJZGVu
dGl0eSwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF83MDlf
NiwKICAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpVbnNwZWNpZmll
ZCwKQEAgLTExOCw4ICsxMTcsOCBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBNYXRyaXhDb2VmZmlj
aWVudHModWludDhfdCBtYXRyaXhDb2VmZmljaWVudHMpCiAgICAgICAgIFZQQ29uZmlndXJhdGlv
bk1hdHJpeENvZWZmaWNpZW50czo6Q2hyb21hY2l0eV9Ob25jb25zdGFudF9MdW1pbmFuY2UsCiAg
ICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfMjEwMF9JQ0MsCiAg
ICAgfTsKLSAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZE1hdHJpeENv
ZWZmaWNpZW50cyksIHN0ZDo6ZW5kKHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSkpOwotICAgIHJl
dHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZE1hdHJpeENvZWZmaWNpZW50
cyksIHN0ZDo6ZW5kKHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSwgbWF0cml4Q29lZmZpY2llbnRz
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNldCB7IHZhbGlkTWF0cml4
Q29lZmZpY2llbnRzIH07CisgICAgcmV0dXJuIHNldC5jb250YWlucyhtYXRyaXhDb2VmZmljaWVu
dHMpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJz
ZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hh
cHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmgK
aW5kZXggZWUxYTM3OWE1YmQ4MmEyNmFjMzIxMmMzZGRmNmU3YzA0MGMxOGM1NS4uZTJkMTk4ZmNh
MmI0YzFjOGY3ZmU2NDg0M2IxYzQxM2Q3YjE4NGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNr
UHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oCkBAIC02
MCwxMyArNjAsMTMgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMiOyB9
CiAKICAgICBzdHJ1Y3QgQ2hhcHRlckRhdGEgewotICAgICAgICBNZWRpYVRpbWUgbV9zdGFydFRp
bWU7Ci0gICAgICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOwotICAgICAgICBTdHJpbmcgbV90aXRs
ZTsKKyAgICAgICAgTWVkaWFUaW1lIHN0YXJ0VGltZTsKKyAgICAgICAgTWVkaWFUaW1lIGR1cmF0
aW9uOworICAgICAgICBTdHJpbmcgdGl0bGU7CiAKICAgICAgICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDaGFwdGVyRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBtX3N0YXJ0VGltZSA9PSBvdGhlci5tX3N0YXJ0VGltZSAmJiBtX2R1cmF0
aW9uID09IG90aGVyLm1fZHVyYXRpb24gJiYgbV90aXRsZSA9PSBvdGhlci5tX3RpdGxlOworICAg
ICAgICAgICAgcmV0dXJuIHN0YXJ0VGltZSA9PSBvdGhlci5zdGFydFRpbWUgJiYgZHVyYXRpb24g
PT0gb3RoZXIuZHVyYXRpb24gJiYgdGl0bGUgPT0gb3RoZXIudGl0bGU7CiAgICAgICAgIH0KICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tCmluZGV4
IDBiYzA4MzgxNGMwOGM3ZGVlZDYxYzkwNzljMjJiZTNmNTA3OGE3N2UuLjk0OWM2MGJjNDhlNWE5
YTBiMjU4MGYxYTIxMjJlZWU4NzU0NTE1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1
ZXVlZFZpZGVvT3V0cHV0Lm1tCkBAIC0yMzEsMTQgKzIzMSwxMyBAQCB2b2lkIFF1ZXVlZFZpZGVv
T3V0cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQogICAgIGlmIChtX25leHRJ
bWFnZVRpbWViYXNlT2JzZXJ2ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY3VycmVu
dFRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pOwotICAgIGF1
dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgY3VycmVudFRpbWUpOwor
ICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgUEFMOjp0b01l
ZGlhVGltZShbbV9wbGF5ZXIgY3VycmVudFRpbWVdKSk7CiAgICAgaWYgKGl0ZXIgPT0gbV92aWRl
b0ZyYW1lcy5lbmQoKSB8fCArK2l0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byBuZXh0SW1hZ2VUaW1lID0gaXRlci0+Zmlyc3Q7CiAKLSAgICBt
X25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkQm91bmRhcnlUaW1lT2Jz
ZXJ2ZXJGb3JUaW1lczpAW1tOU1ZhbHVlIHZhbHVlV2l0aENNVGltZTpQQUw6OnRvQ01UaW1lKGN1
cnJlbnRUaW1lKV1dIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2Nr
Olt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVs
ZWdhdGUsIHByb3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdICgpIG11dGFibGUgeworICAg
IG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRCb3VuZGFyeVRpbWVP
YnNlcnZlckZvclRpbWVzOkBbW05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lOlBBTDo6dG9DTVRpbWUo
bmV4dEltYWdlVGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdC
bG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBt
X2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyld
IHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+
bmV4dEltYWdlVGltZVJlYWNoZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
aW5kZXggMDVhODMxNmRjMjdlNjMwMTdmMzk3ZjE5MjQ2OWI4MmEzM2I3YjAzNC4uMDRjMDAzYjRl
MmU4NzY4Y2Q1ODc3NzRlNWQxZWM2MzI3OWM4OGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKQEAgLTE0MjIsMTggKzE0MjIsMTggQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJl
YWQKICAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2Nr
QnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIE9wdXNDb29raWVDb250ZW50cyBjb29raWVDb250ZW50czsKLSAgICAg
ICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2
YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhLCBj
b29raWVDb250ZW50cykpIHsKKyAgICAgICAgICAgIGF1dG8gY29va2llQ29udGVudHMgPSBwYXJz
ZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwg
Km1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEpOworICAgICAgICAgICAgaWYg
KCFjb29raWVDb250ZW50cykgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZf
UE9TU0lCTEUoIkZhaWxlZCB0byBwYXJzZSBPcHVzIHByaXZhdGUgZGF0YSIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmICghY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0KSB7Cisg
ICAgICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzLT5mcmFtZXNQZXJQYWNrZXQpIHsKICAgICAg
ICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJPcHVzIHByaXZhdGUgZGF0
YSBpbmRpY2F0ZXMgMCBmcmFtZXMgcGVyIHBhY2tldDsgYmFpbGluZyIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIG1fZnJhbWVzUGVyUGFja2V0ID0gY29va2llQ29udGVudHMuZnJhbWVzUGVy
UGFja2V0OwotICAgICAgICAgICAgbV9mcmFtZUR1cmF0aW9uID0gY29va2llQ29udGVudHMuZnJh
bWVEdXJhdGlvbjsKLSAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlT3B1c0F1
ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29va2llQ29udGVudHMpOworICAgICAgICAgICAgbV9mcmFt
ZXNQZXJQYWNrZXQgPSBjb29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFja2V0OworICAgICAgICAg
ICAgbV9mcmFtZUR1cmF0aW9uID0gY29va2llQ29udGVudHMtPmZyYW1lRHVyYXRpb247CisgICAg
ICAgICAgICBmb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZU9wdXNBdWRpb0Zvcm1hdERlc2NyaXB0
aW9uKCpjb29raWVDb250ZW50cyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZvcm1hdERl
c2NyaXB0aW9uKSB7CkBAIC0xNDUzLDcgKzE0NTMsNiBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVh
ZAogICAgICAgICAvLyBPcHVzIHRlY2huaWNhbGx5IGFsbG93cyB0aGUgZnJhbWUgZHVyYXRpb24g
YW5kIGZyYW1lcy1wZXItcGFja2V0IHZhbHVlcyB0byBjaGFuZ2UgZnJvbSBwYWNrZXQgdG8gcGFj
a2V0LgogICAgICAgICAvLyBDb3JlQXVkaW8gZG9lc24ndCBzdXBwb3J0IEFTQkQgdmFsdWVzIGxp
a2UgdGhlc2UgdG8gY2hhbmdlIG9uIGEgcGVyLXBhY2tldCBiYXNpcywgc28gdGhyb3cgYW4gZXJy
b3Igd2hlbgogICAgICAgICAvLyB0aGF0IGtpbmQgb2YgdmFyaWFiaWxpdHkgaXMgZW5jb3VudGVy
ZWQuCi0gICAgICAgIE9wdXNDb29raWVDb250ZW50cyBjb29raWVDb250ZW50czsKICAgICAgICAg
YXV0byYgcHJpdmF0ZURhdGEgPSB0cmFjaygpLmNvZGVjX3ByaXZhdGUudmFsdWUoKTsKICAgICAg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIo
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsKICAgICAg
ICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7CkBAIC0xNDY2LDkgKzE0NjUsOCBAQCB3ZWJtOjpT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFt
ZURhdGEod2VibTo6UmVhZAogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsK
ICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUo
KSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVy
RGF0YSwgY29va2llQ29udGVudHMpCi0gICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFt
ZXNQZXJQYWNrZXQgIT0gbV9mcmFtZXNQZXJQYWNrZXQKLSAgICAgICAgICAgIHx8IGNvb2tpZUNv
bnRlbnRzLmZyYW1lRHVyYXRpb24gIT0gbV9mcmFtZUR1cmF0aW9uKSB7CisgICAgICAgIGF1dG8g
Y29va2llQ29udGVudHMgPSBwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCks
IHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRh
dGEpOworICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzIHx8IGNvb2tpZUNvbnRlbnRzLT5mcmFt
ZXNQZXJQYWNrZXQgIT0gbV9mcmFtZXNQZXJQYWNrZXQgfHwgY29va2llQ29udGVudHMtPmZyYW1l
RHVyYXRpb24gIT0gbV9mcmFtZUR1cmF0aW9uKSB7CiAgICAgICAgICAgICBQQVJTRVJfTE9HX0VS
Uk9SX0lGX1BPU1NJQkxFKCJPcHVzIGZyYW1lcy1wZXItcGFja2V0IGNoYW5nZWQgd2l0aGluIGEg
dHJhY2s7IGVycm9yIik7CiAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShF
cnJvckNvZGU6OlZhcmlhYmxlRnJhbWVEdXJhdGlvbikpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRp
ZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1
ZGlvVXRpbGl0aWVzQ29jb2EuaAppbmRleCA4NzEwNGQ4YjdiMzU3YzE2MGI2ZGNjYzQxYmZlMWY4
OWUwYTZjMjcxLi44YjY3ZGU2ZjQ5MzAxYmEwMTE1OGE5ODAwOTk1OTI3NzA0NDUyMzQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgKQEAgLTI4LDggKzI4LDggQEAKICNpZiBQTEFU
Rk9STShDT0NPQSkKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgogCi1jbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNjcmlwdGlvblJl
ZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTUsOSArNTUsOSBAQCBzdHJ1Y3QgT3B1c0Nv
b2tpZUNvbnRlbnRzIHsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc09wdXNEZWNvZGVyQXZhaWxh
YmxlKCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIHJlZ2lzdGVyT3B1c0RlY29kZXJJZk5lZWRlZCgp
OwotYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgcHJpdmF0ZURhdGFTaXplLCBjb25z
dCB2b2lkKiBwcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUsIGNvbnN0IHZvaWQqIGZy
YW1lRGF0YSwgT3B1c0Nvb2tpZUNvbnRlbnRzJik7CitzdGQ6Om9wdGlvbmFsPE9wdXNDb29raWVD
b250ZW50cz4gcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IHByaXZhdGVEYXRhU2l6ZSwgY29u
c3Qgdm9pZCogcHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZURhdGFTaXplLCBjb25zdCB2b2lkKiBm
cmFtZURhdGEpOwogUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZU9wdXNB
dWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IE9wdXNDb29raWVDb250ZW50cyYpOwogCiB9CiAK
LSNlbmRpZiAvLyAmJiBQTEFURk9STShDT0NPQSkKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1B
dWRpb1V0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggN2UwYWZiMjkwZGQ4NWE3N2Y5
YmVmZmY0OTQ3YTQ3Yjc1MzVlYjJmNC4uYWI1YmExZjI1MmNlYzI3MTZiNTAwZjZmOWE1YzRiYmE2
NzQyODE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KQEAgLTE2OSw3ICsx
NjksNyBAQCBjb25zdGV4cHIgaW50MzJfdCBvcHVzQ29uZmlnVG9CYW5kd2lkdGgodWludDhfdCBj
b25maWcpCiB9CiAjZW5kaWYKIAotYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29k
ZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1l
U2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhLCBPcHVzQ29va2llQ29udGVudHMmIGNvb2tpZSkK
K3N0ZDo6b3B0aW9uYWw8T3B1c0Nvb2tpZUNvbnRlbnRzPiBwYXJzZU9wdXNQcml2YXRlRGF0YShz
aXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwgc2l6
ZV90IGZyYW1lU2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhKQogewogI2lmIEVOQUJMRShPUFVT
KQogICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3ODQ1CkBAIC0yMDEsMTYg
KzIwMSwxNyBAQCBib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVT
aXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLAogICAgIGF1dG8qIHByaXZhdGVEYXRh
UHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNvZGVjUHJpdmF0ZURhdGEpOwogCiAg
ICAgaWYgKGNvZGVjUHJpdmF0ZVNpemUgPCAxOSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDEuIE1hZ2ljIFNpZ25hdHVyZToKICAg
ICAvLwogICAgIC8vICAgICBUaGlzIGlzIGFuIDgtb2N0ZXQgKDY0LWJpdCkgZmllbGQgdGhhdCBh
bGxvd3MgY29kZWMKICAgICAvLyAgICAgaWRlbnRpZmljYXRpb24gYW5kIGlzIGh1bWFuIHJlYWRh
YmxlLgogICAgIGlmIChzdHJuY21wKCJPcHVzSGVhZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KHByaXZhdGVEYXRhUHRyKSwgOCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDIuIFZlcnNpb24gKDggYml0cywgdW5z
aWduZWQpOgorICAgIE9wdXNDb29raWVDb250ZW50cyBjb29raWU7CiAgICAgY29va2llLnZlcnNp
b24gPSAqKHByaXZhdGVEYXRhUHRyICsgOCk7CiAKICAgICAvLyAzLiBPdXRwdXQgQ2hhbm5lbCBD
b3VudCAnQycgKDggYml0cywgdW5zaWduZWQpOgpAQCAtMjMxLDcgKzIzMiw3IEBAIGJvb2wgcGFy
c2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNv
ZGVjUHJpdmF0ZURhdGEsCiAgICAgYXV0byBmcmFtZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihmcmFtZURhdGEpOwogCiAgICAgaWYgKGZyYW1lU2l6ZSA8IDEpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIGh0dHBz
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NzE2CiAgICAgLy8gMy4xLiBUaGUgVE9DIEJ5dGUK
QEAgLTI4NSwyMSArMjg2LDIwIEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNv
ZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsCiAgICAgICAgIC8v
CiAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBGaWd1cmUgNTogVGhlIGZyYW1lIGNv
dW50IGJ5dGUKICAgICAgICAgaWYgKGZyYW1lU2l6ZSA8IDIpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHVpbnQ4
X3QgZnJhbWVDb3VudEJ5dGUgPSAqKGZyYW1lUHRyICsgMSk7CiAgICAgICAgIGNvb2tpZS5pc1ZC
UiA9ICgoZnJhbWVDb3VudEJ5dGUgJiAwYjEwMDAwMDAwKSA+PiA3KSA9PSAxOwogICAgICAgICBj
b29raWUuaGFzUGFkZGluZyA9ICgoZnJhbWVDb3VudEJ5dGUgJiAwYjAxMDAwMDAwKSA+PiA2KSA9
PSAxOwogICAgICAgICBjb29raWUuZnJhbWVzUGVyUGFja2V0ID0gKGZyYW1lQ291bnRCeXRlICYg
MGIwMDExMTExMSk7CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBjb29raWU7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb2RlY1ByaXZhdGVTaXplKTsKICAgICBVTlVTRURf
UEFSQU0oY29kZWNQcml2YXRlRGF0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lU2l6ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGZyYW1lRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvb2tpZSk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBv
b2wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgK
aW5kZXggOGRjMjEzZjQ3ZDRmODE5MjExMTFhNGE2OWM0OTk2MmVhNzNmY2YwYS4uZGNkNmE0N2Jh
NjA4NTNkYTA4ZTEyZjAyMDI4NzlkNDlkYjM2MzQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIEBjbGFz
cyBMZWdhY3lUaWxlTGF5ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJHTEJsb2NrbGlzdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJH
TEJsb2NrbGlzdC5tbQppbmRleCBiNTJjODYxODZmMGJiMDZmZDMyM2VkMjlmODJkNzdjOTU4ZmUy
NjA4Li45ZjhkZWJlOTU0NjExZWEwZThhZDczMzBjZDkyNmFjMmEzMDkxNDAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCkBAIC0zNSw0MyArMzUs
MjkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IE9TQnVpbGRJbmZvIHsKLSAgICBP
U0J1aWxkSW5mbygpCi0gICAgICAgIDogbWFqb3IoMCkKLSAgICAgICAgLCBtaW5vcigwKQotICAg
ICAgICAsIGJ1aWxkKDApCi0gICAgewotICAgIH0KLQotICAgIE9TQnVpbGRJbmZvKGludCBtYWpv
ciwgaW50IG1pbm9yLCBpbnQgYnVpbGQpCi0gICAgICAgIDogbWFqb3IobWFqb3IpCi0gICAgICAg
ICwgbWlub3IobWlub3IpCi0gICAgICAgICwgYnVpbGQoYnVpbGQpCi0gICAgewotICAgIH0KKyAg
ICBpbnQgbWFqb3IgeyAwIH07IC8vIFJlcHJlc2VudHMgdGhlIDEzIGluIDEzQzY0LgorICAgIGlu
dCBtaW5vciB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgQyBpbiAxM0M2NCAoYXMgYSBudW1iZXIg
d2hlcmUgQSA9PSAxLCBpLmUuIDMpLgorICAgIGludCBidWlsZCB7IDAgfTsgLy8gUmVwcmVzZW50
cyB0aGUgNjQgaW4gMTNDNjQuCiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT1NCdWlsZElu
Zm8mIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oT1NCdWlsZElu
Zm8gb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFqb3IgPT0gb3RoZXIubWFq
b3IgJiYgbWlub3IgPT0gb3RoZXIubWlub3IgJiYgYnVpbGQgPT0gb3RoZXIuYnVpbGQ7CiAgICAg
fQogCi0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25zdAor
ICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihPU0J1aWxkSW5mbyBvdGhlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA+IHN0ZDo6
dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8PShPU0J1aWxkSW5mbyBvdGhlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA8PSBzdGQ6OnRpZShv
dGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKICAgICB9CiAKLSAgICBib29s
IG9wZXJhdG9yPChjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8KE9TQnVpbGRJbmZvIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpIDwgc3RkOjp0aWUob3RoZXIubWFq
b3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CiAgICAgfQotCi0gICAgaW50IG1ham9yOyAv
LyBSZXByZXNlbnRzIHRoZSAxMyBpbiAxM0M2NC4KLSAgICBpbnQgbWlub3I7IC8vIFJlcHJlc2Vu
dHMgdGhlIEMgaW4gMTNDNjQgKGFzIGEgbnVtYmVyIHdoZXJlIEEgPT0gMSwgaS5lLiAzKS4KLSAg
ICBpbnQgYnVpbGQ7IC8vIFJlcHJlc2VudHMgdGhlIDY0IGluIDEzQzY0LgogfTsKIAogc3RhdGlj
IE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5TU3RyaW5nICpidWlsZFN0
cmluZykKQEAgLTgzLDcgKzY5LDcgQEAgc3RhdGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21P
U0J1aWxkU3RyaW5nKE5TU3RyaW5nICpidWlsZFN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIE5TTG9nKEAiV2ViR0xCbG9ja2xpc3QgY291bGQgbm90IHBhcnNlIE9TQnVpbGQgZW50cnk6
ICVAIiwgYnVpbGRTdHJpbmcpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiBPU0J1aWxkSW5mbygp
OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIE5TVGV4dENoZWNraW5nUmVzdWx0
ICptYXRjaFJlc3VsdCA9IFttYXRjaGVzIG9iamVjdEF0SW5kZXg6MF07CkBAIC05MiwxNCArNzgs
MTQgQEAgc3RhdGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5TU3Ry
aW5nICpidWlsZFN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIE5TTG9nKEAiV2ViR0xC
bG9ja2xpc3QgY291bGQgbm90IHBhcnNlIE9TQnVpbGQgZW50cnk6ICVAIiwgYnVpbGRTdHJpbmcp
OwogI2VuZGlmCi0gICAgICAgIHJldHVybiBPU0J1aWxkSW5mbygpOworICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIGludCBtYWpvclZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0
cmluZ1dpdGhSYW5nZTpbbWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjFdXSBpbnRWYWx1ZV07CiAg
ICAgaW50IG1pbm9yVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOltt
YXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6Ml1dIGNoYXJhY3RlckF0SW5kZXg6MF0gLSAnQScgKyAx
OwogICAgIGludCBidWlsZFZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5n
ZTpbbWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjNdXSBpbnRWYWx1ZV07CiAKLSAgICByZXR1cm4g
T1NCdWlsZEluZm8obWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1aWxkVmVyc2lvbik7Cisg
ICAgcmV0dXJuIHsgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1aWxkVmVyc2lvbiB9Owog
fQogCiBib29sIFdlYkdMQmxvY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdMKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRV
bml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlv
U2hhcmVkVW5pdC5oCmluZGV4IDc0ZGZlNmQ0NDY0MGU0NjMxMmY3YzhjZWIwZDdmMDkwY2MxMDFl
ZjkuLjI3ZGMzOTM5YjNjZWQ2YjUzYTBmYTM3NWJhY2VjMTFkOWExYmJmYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRV
bml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCmluZGV4IDYz
MTJlMDY4NDI5N2I0M2MzMzExZTQ3MzliNjgxYWI0NDVjMzM2NzIuLmJmNWM3NGY0Y2ZkY2EzNzVl
M2JlNDIzMmU0NzVjMjJkYWZmY2VjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TVVJMQ29ubmVjdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL1dhbGxUaW1lLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAppbmRleCBjNGViNjdkNmY3YzMzNDA3NmIzMmI3OThk
Y2VhNDBiNTcwNjgxZTZmLi43ZDBiYjg1YTRhNmQ1MTgxYThhYzVmNjBmYjcxZmQ5ZWFiNGNlYzIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCA1
NjAyZDdjMmQ0ZDViY2E5MzI0NTQ0Yjc1YWQyMmNiMjY1OGVkMDJjLi4wZGY3NDI2NTFmZjdiZGM4
YmI2NDMzNDZmOWJjY2JjMjA0YzE5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBA
IC0yMTQsNyArMjE0LDcgQEAgYm9vbCBHcmlkSXRlcmF0b3I6OmlzRW1wdHlBcmVhRW5vdWdoKHVu
c2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnMKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0
eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tT
cGFuKQorc3RkOjpvcHRpb25hbDxHcmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlk
QXJlYSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFyeWluZ1RyYWNrU3BhbikK
IHsKICAgICBBU1NFUlQoIW1fZ3JpZC5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9ncmlkWzBd
LmlzRW1wdHkoKSk7CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVh
PiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEK
ICAgICBBU1NFUlQodmFyeWluZ1RyYWNrU3BhbiA+PSAxKTsKIAogICAgIGlmIChtX2dyaWQuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHVuc2lnbmVkIHJvd1NwYW4gPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyB2YXJ5aW5nVHJhY2tTcGFuIDogZml4ZWRUcmFja1NwYW47CiAgICAgdW5zaWduZWQgY29s
dW1uU3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IGZpeGVkVHJhY2tTcGFuIDog
dmFyeWluZ1RyYWNrU3BhbjsKQEAgLTIzMSwxMyArMjMxLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxH
cmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRy
YWNrU3BhCiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleCA9IChtX2Rp
cmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkgOiBtX2dyaWRbMF0uc2l6ZSgp
OwogICAgIGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8IGVuZE9mVmFyeWluZ1RyYWNrSW5kZXg7
ICsrdmFyeWluZ1RyYWNrSW5kZXgpIHsKICAgICAgICAgaWYgKGlzRW1wdHlBcmVhRW5vdWdoKHJv
d1NwYW4sIGNvbHVtblNwYW4pKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFy
ZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVm
aW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFu
Ojp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4
ICsgY29sdW1uU3BhbikpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBHcmlkQXJlYShHcmlk
U3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCAr
IHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1bW5J
bmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKICAgICAgICAgICAgIC8vIEFkdmFu
Y2UgdGhlIGl0ZXJhdG9yIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hlcmUgd2Ugd291bGQg
cmV0dXJuIHRoZSBzYW1lIGdyaWQgYXJlYSBvdmVyIGFuZCBvdmVyLgogICAgICAgICAgICAgKyt2
YXJ5aW5nVHJhY2tJbmRleDsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKaW5kZXggNzJj
YWRmNjhlZjRkMzI2NmNlMWY4Y2VlYmRjOWE0OWRmMmJjODExYi4uNTk0N2ZlNWU1Mzg2NTNkMGFh
Yzg0OTRmZWE4ZGE5NjdjMzA4NWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oCkBAIC0zNywx
MCArMzcsMTEgQEAgdHlwZWRlZiBWZWN0b3I8V2Vha1B0cjxSZW5kZXJCb3g+LCAxPiBHcmlkQ2Vs
bDsKIHR5cGVkZWYgVmVjdG9yPFZlY3RvcjxHcmlkQ2VsbD4+IEdyaWRBc01hdHJpeDsKIHR5cGVk
ZWYgTGlzdEhhc2hTZXQ8c2l6ZV90PiBPcmRlcmVkVHJhY2tJbmRleFNldDsKIAotY2xhc3MgR3Jp
ZEFyZWE7CiBjbGFzcyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI7CiBjbGFzcyBSZW5kZXJHcmlkOwog
CitzdHJ1Y3QgR3JpZEFyZWE7CisKIGNsYXNzIEdyaWQgZmluYWwgewogcHVibGljOgogICAgIGV4
cGxpY2l0IEdyaWQoUmVuZGVyR3JpZCYpOwpAQCAtMTExLDcgKzExMiw3IEBAIHB1YmxpYzoKIAog
ICAgIFJlbmRlckJveCogbmV4dEdyaWRJdGVtKCk7CiAgICAgYm9vbCBpc0VtcHR5QXJlYUVub3Vn
aCh1bnNpZ25lZCByb3dTcGFuLCB1bnNpZ25lZCBjb2x1bW5TcGFuKSBjb25zdDsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJh
Y2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdy
aWRBcmVhPiBuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWdu
ZWQgdmFyeWluZ1RyYWNrU3Bhbik7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgR3JpZEFzTWF0cml4
JiBtX2dyaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5k
ZXggY2VjZWQzNWU1Y2U4N2JmYmMxNDAxODM2Y2QxM2VhMWFlZGQ3YWZjMC4uMDBlYmQ1ZmZjMDVi
NzIyMmE0ZjdhNDNiMGM0MjFiMmMzOTY1NmQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcApAQCAtNDMwLDIwICs0MzAsMTkgQEAgU3RyaW5nIFJlbmRlckNv
dW50ZXI6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBiZWZvcmVBZnRlckNvbnRhaW5lciA9IGJlZm9yZUFmdGVyQ29udGFpbmVyLT5wYXJl
bnQoKTsKICAgICAgICAgfQotICAgICAgICBtYWtlQ291bnRlck5vZGUoKmJlZm9yZUFmdGVyQ29u
dGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllcigpLCB0cnVlKS0+YWRkUmVuZGVyZXIoY29uc3Rf
Y2FzdDxSZW5kZXJDb3VudGVyJj4oKnRoaXMpKTsKKyAgICAgICAgbWFrZUNvdW50ZXJOb2RlKCpi
ZWZvcmVBZnRlckNvbnRhaW5lciwgbV9jb3VudGVyLmlkZW50aWZpZXIsIHRydWUpLT5hZGRSZW5k
ZXJlcihjb25zdF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykpOwogICAgICAgICBBU1NFUlQo
bV9jb3VudGVyTm9kZSk7CiAgICAgfQogICAgIENvdW50ZXJOb2RlKiBjaGlsZCA9IG1fY291bnRl
ck5vZGU7CiAgICAgaW50IHZhbHVlID0gY2hpbGQtPmFjdHNBc1Jlc2V0KCkgPyBjaGlsZC0+dmFs
dWUoKSA6IGNoaWxkLT5jb3VudEluUGFyZW50KCk7CiAKLSAgICBTdHJpbmcgdGV4dCA9IGxpc3RN
YXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwgdmFsdWUpOworICAgIFN0cmluZyB0ZXh0
ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSwgdmFsdWUpOwogCi0gICAgaWYg
KCFtX2NvdW50ZXIuc2VwYXJhdG9yKCkuaXNOdWxsKCkpIHsKKyAgICBpZiAoIW1fY291bnRlci5z
ZXBhcmF0b3IuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFjaGlsZC0+YWN0c0FzUmVzZXQoKSkK
ICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPnBhcmVudCgpOwogICAgICAgICB3aGlsZSAoQ291
bnRlck5vZGUqIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgdGV4dCA9
IGxpc3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwgY2hpbGQtPmNvdW50SW5QYXJl
bnQoKSkKLSAgICAgICAgICAgICAgICArIG1fY291bnRlci5zZXBhcmF0b3IoKSArIHRleHQ7Cisg
ICAgICAgICAgICB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSwgY2hp
bGQtPmNvdW50SW5QYXJlbnQoKSkgKyBtX2NvdW50ZXIuc2VwYXJhdG9yICsgdGV4dDsKICAgICAg
ICAgICAgIGNoaWxkID0gcGFyZW50OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDI2ZjhmY2JjMGFiMjc5NjBjNDkzOTIyM2U3NDhk
OTNjM2I4M2M5OWEuLjFiNjc0NWE5ZTc5MGI4MDViMTM1MDAwNDJlNDFlMDkzZWQ4MTY5MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTc2NSwxMyArNzY1LDEz
IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9y
KEdyaWQmIGdyaWQpIGNvbnN0CiAgICAgZ3JpZC5lbnN1cmVHcmlkU2l6ZShtYXhpbXVtUm93SW5k
ZXggKyBleHBsaWNpdFJvd1N0YXJ0LCBtYXhpbXVtQ29sdW1uSW5kZXggKyBleHBsaWNpdENvbHVt
blN0YXJ0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBSZW5kZXJHcmlkOjpjcmVh
dGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiBncmlk
LCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gc3Bl
Y2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBjb25z
dAorR3JpZEFyZWEgUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9z
aXRpb25zT3V0c2lkZUdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHNwZWNpZmllZERpcmVjdGlvbiwgY29uc3QgR3JpZFNw
YW4mIHNwZWNpZmllZFBvc2l0aW9ucykgY29uc3QKIHsKICAgICBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gY3Jvc3NEaXJlY3Rpb24gPSBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/
IEZvclJvd3MgOiBGb3JDb2x1bW5zOwogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJl
Y3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQgY3Jv
c3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JB
dXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFuIGNy
b3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRT
cGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVj
dGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVk
RGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNp
ZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZp
ZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIEdyaWRB
cmVhKHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3Np
dGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwogfQog
CiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3Jp
ZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25zdApA
QCAtNzkyLDcgKzc5Miw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4
aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuCiAgICAgICAgIHVuc2ln
bmVkIG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbiA9IG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFydExp
bmUoKTsKIAogICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IoZ3JpZCwgYXV0b1BsYWNlbWVu
dE1ham9yQXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlvbnMuc3RhcnRMaW5lKCksIGlz
R3JpZEF1dG9GbG93RGVuc2UgPyAwIDogbWlub3JBeGlzQ3Vyc29ycy5nZXQobWFqb3JBeGlzSW5p
dGlhbFBvc2l0aW9uKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gZW1wdHlH
cmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1ham9yQXhpc1Bvc2l0aW9ucy5p
bnRlZ2VyU3BhbigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CisgICAgICAgIGF1dG8gZW1wdHlHcmlk
QXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1ham9yQXhpc1Bvc2l0aW9ucy5pbnRl
Z2VyU3BhbigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CiAgICAgICAgIGlmICghZW1wdHlHcmlkQXJl
YSkKICAgICAgICAgICAgIGVtcHR5R3JpZEFyZWEgPSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVj
aWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChncmlkLCAqYXV0b0dyaWRJdGVtLCBhdXRvUGxhY2Vt
ZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucyk7CiAKQEAgLTgyNyw3
ICs4MjcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQo
R3JpZCYgZ3JpZCwgUmVuZGVyQm94JiBncmlkSXRlbSwgQQogICAgIHVuc2lnbmVkIG1ham9yQXhp
c0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkg
PT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3Iuc2Vjb25kIDogYXV0b1BsYWNlbWVu
dEN1cnNvci5maXJzdDsKICAgICB1bnNpZ25lZCBtaW5vckF4aXNBdXRvUGxhY2VtZW50Q3Vyc29y
ID0gYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpID09IEZvckNvbHVtbnMgPyBhdXRv
UGxhY2VtZW50Q3Vyc29yLmZpcnN0IDogYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQ7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGVtcHR5R3JpZEFyZWE7CisgICAgc3RkOjpvcHRp
b25hbDxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKICAgICBHcmlkU3BhbiBtaW5vckF4aXNQb3Np
dGlvbnMgPSBncmlkLmdyaWRJdGVtU3BhbihncmlkSXRlbSwgYXV0b1BsYWNlbWVudE1pbm9yQXhp
c0RpcmVjdGlvbigpKTsKICAgICBpZiAobWlub3JBeGlzUG9zaXRpb25zLmlzVHJhbnNsYXRlZERl
ZmluaXRlKCkpIHsKICAgICAgICAgLy8gTW92ZSB0byB0aGUgbmV4dCB0cmFjayBpbiBtYWpvciBh
eGlzIGlmIGluaXRpYWwgcG9zaXRpb24gaW4gbWlub3IgYXhpcyBpcyBiZWZvcmUgYXV0by1wbGFj
ZW1lbnQgY3Vyc29yLgpAQCAtODU3LDcgKzg1Nyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VB
dXRvTWFqb3JBeGlzSXRlbU9uR3JpZChHcmlkJiBncmlkLCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBB
CiAKICAgICAgICAgICAgICAgICAvLyBEaXNjYXJkIGVtcHR5IGdyaWQgYXJlYSBhcyBpdCBkb2Vz
IG5vdCBmaXQgaW4gdGhlIG1pbm9yIGF4aXMgZGlyZWN0aW9uLgogICAgICAgICAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGVtcHR5IGdyaWQgYXJlYSB5ZXQgYXMgd2Ug
bWlnaHQgZmluZCBhIHZhbGlkIG9uZSBpbiB0aGUgbmV4dCBpdGVyYXRpb24uCi0gICAgICAgICAg
ICAgICAgZW1wdHlHcmlkQXJlYSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgZW1wdHlHcmlk
QXJlYSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gQXMg
d2UncmUgbW92aW5nIHRvIHRoZSBuZXh0IHRyYWNrIGluIHRoZSBtYWpvciBheGlzIHdlIHNob3Vs
ZCByZXNldCB0aGUgYXV0by1wbGFjZW1lbnQgY3Vyc29yIGluIHRoZSBtaW5vciBheGlzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggMjlhZTU5NDgwMDNlZTZkMmRkNDQz
YjU2OTlkY2IyZDdjMTdiOTYyNi4uNjVjOWU2ZTI1MjY4NDk3MDMzODRkZGRjYmExNzgzYzRiYjc3
YjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0zMiw5ICszMiwx
MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyaWRBcmVhOwogY2xhc3MgR3Jp
ZFNwYW47CiAKK3N0cnVjdCBHcmlkQXJlYTsKKwogc3RydWN0IENvbnRlbnRBbGlnbm1lbnREYXRh
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZW50QWxpZ25tZW50RGF0YSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTExLDcgKzExMiw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIGNvbnN0Owog
ICAgIHZvaWQgcG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKEdyaWQmKSBjb25z
dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNw
ZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmLCBjb25zdCBSZW5kZXJCb3gmLCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJikgY29uc3Q7CisgICAgR3JpZEFy
ZWEgY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3Jp
ZCYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3Jp
ZFNwYW4mKSBjb25zdDsKICAgICB2b2lkIHBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdy
aWQoR3JpZCYsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNvbnN0OwogICAgIHZvaWQgcGxh
Y2VBdXRvTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gq
PiYpIGNvbnN0OwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gQXV0
b1BsYWNlbWVudEN1cnNvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggN2U4ZGQ2ODgyNGNmYjQ1NjIwODBlNTk0ZWNkODQw
MmE2YzlmYzAzMi4uZjllZGUxZDkwYjM5MzZmMTMwOWQ0N2IyNDAzNTE1NDJhMjc3YzQ5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKQEAgLTk3LDcgKzk3LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBXZWJDb3JlSGFzM0RSZW5k
ZXJpbmcgPSB0cnVlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVVTRShDT01QT1NJVElO
R19GT1JfU01BTExfQ0FOVkFTRVMpCi1zdGF0aWMgY29uc3QgaW50IGNhbnZhc0FyZWFUaHJlc2hv
bGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAwOworc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBjYW52YXNBcmVhVGhyZXNob2xkUmVxdWlyaW5nQ29tcG9zaXRpbmcgPSA1MCAqIDEwMDsK
ICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZTk2MzdlZWJlMjA2MDlhZTBjNWQyYjFk
NmY2YjNlNjFiYzlmMTI5OC4uODQ2YWQxNTI1YWYyMDY2MDdiNDJiZjRlZDExMGNmYWE5MTRlOTNl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00
NjcsOCArNDY3LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50
UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQogCiAgICAgTGVuZ3RoUG9pbnQg
b2JqZWN0UG9zaXRpb24gPSBzdHlsZSgpLm9iamVjdFBvc2l0aW9uKCk7CiAKLSAgICBMYXlvdXRV
bml0IHhPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9zaXRpb24ueCgpLCBj
b250ZW50UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRoKCkpOwotICAgIExheW91dFVuaXQg
eU9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi55KCksIGNvbnRl
bnRSZWN0LmhlaWdodCgpIC0gZmluYWxSZWN0LmhlaWdodCgpKTsKKyAgICBMYXlvdXRVbml0IHhP
ZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9zaXRpb24ueCwgY29udGVudFJl
Y3Qud2lkdGgoKSAtIGZpbmFsUmVjdC53aWR0aCgpKTsKKyAgICBMYXlvdXRVbml0IHlPZmZzZXQg
PSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9zaXRpb24ueSwgY29udGVudFJlY3QuaGVp
Z2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOwogCiAgICAgZmluYWxSZWN0Lm1vdmUoeE9mZnNl
dCwgeU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIu
Y3BwCmluZGV4IGNhNWI3NDBkOTA0NGJkNjVlMzY2YjU3ZDc2YzM0MjhjM2Y5ZWUzZjYuLjRjNDc0
Yzk1ZTNlZWMyMjJmMDUzOTkzNTIyNWQ0YTIxOWE2MDI4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApAQCAtNjQwLDcgKzY0MCw3IEBAIGNvbnN0IFNo
YWRvd0RhdGEqIFRleHRCb3hQYWludGVyOjpkZWJ1Z1RleHRTaGFkb3coKSBjb25zdAogICAgIGlm
ICghdGV4dEJveCgpLmxlZ2FjeUlubGluZUJveCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFkb3co
TGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6
OkZpeGVkKSksIExlbmd0aCgxMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoMjAsIExlbmd0
aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgU1JHQkE8dWludDhfdD4g
eyAxNTAsIDAsIDAsIDE5MCB9KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0
YT4gZGVidWdUZXh0U2hhZG93KExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7
IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExl
bmd0aCgyMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBT
UkdCQTx1aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOwogICAgIHJldHVybiAmZGVidWdUZXh0
U2hhZG93LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHls
ZS5oCmluZGV4IDQ1OWJhZjExMmZjMDMyNzBhZmU0NmZmZTg0ZWQwZDViYTZiMjZlMzkuLjI1Y2Y0
OGNmNDkyODEyZWEzZWIwZmZmNDYwMDJjZGQwZDc3NmViMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCkBAIC0zMywxMyArMzMsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFJl
bmRlclRleHQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBT
aGFkb3dEYXRhOworCiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiBzdHJ1Y3QgVGV4dFBhaW50U3R5bGUg
ewotICAgIFRleHRQYWludFN0eWxlKCkgeyB9CisgICAgVGV4dFBhaW50U3R5bGUoKSA9IGRlZmF1
bHQ7CiAgICAgVGV4dFBhaW50U3R5bGUoY29uc3QgQ29sb3ImKTsKIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUZXh0UGFpbnRTdHlsZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaAppbmRleCA1ODZjYzY2OTgwMjY1ZDk4NjNh
Y2FhYTdlZTZiOGE5ODY0ODMyNmM2Li43YmY1YmM5MDZlODhjNTM3NTgxMGNjM2UxZmMyODg5OTA5
ZDUwYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRl
ckNvbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNv
bnRlbnQuaApAQCAtMjksMzIgKzI5LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ291bnRlckNvbnRlbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIENvdW50ZXJDb250ZW50KGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXIsIExpc3RT
dHlsZVR5cGUgc3R5bGUsIGNvbnN0IEF0b21TdHJpbmcmIHNlcGFyYXRvcikKLSAgICAgICAgOiBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAgICAgLCBtX2xpc3RTdHlsZShzdHlsZSkKLSAg
ICAgICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgewotICAgICAgICBBU1NFUlQoc3R5
bGUgIT0gTGlzdFN0eWxlVHlwZTo6U3RyaW5nKTsKLSAgICB9CitzdHJ1Y3QgQ291bnRlckNvbnRl
bnQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGNvbnN0IEF0
b21TdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAg
ICBMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlOyB9
Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zZXBh
cmF0b3I7IH0KLQotcHJpdmF0ZToKLSAgICBBdG9tU3RyaW5nIG1faWRlbnRpZmllcjsKLSAgICBM
aXN0U3R5bGVUeXBlIG1fbGlzdFN0eWxlOwotICAgIEF0b21TdHJpbmcgbV9zZXBhcmF0b3I7Cisg
ICAgQXRvbVN0cmluZyBpZGVudGlmaWVyOworICAgIExpc3RTdHlsZVR5cGUgbGlzdFN0eWxlOwor
ICAgIEF0b21TdHJpbmcgc2VwYXJhdG9yOwogfTsKIAotc3RhdGljIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ291bnRlckNvbnRlbnQmIGEsIGNvbnN0IENvdW50ZXJDb250ZW50JiBiKQor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyQ29udGVudCYgYSwgY29uc3QgQ291
bnRlckNvbnRlbnQmIGIpCiB7Ci0gICAgcmV0dXJuIGEuaWRlbnRpZmllcigpID09IGIuaWRlbnRp
ZmllcigpCi0gICAgICAgICYmIGEubGlzdFN0eWxlKCkgPT0gYi5saXN0U3R5bGUoKQotICAgICAg
ICAmJiBhLnNlcGFyYXRvcigpID09IGIuc2VwYXJhdG9yKCk7CisgICAgcmV0dXJuIGEuaWRlbnRp
ZmllciA9PSBiLmlkZW50aWZpZXIKKyAgICAgICAgJiYgYS5saXN0U3R5bGUgPT0gYi5saXN0U3R5
bGUKKyAgICAgICAgJiYgYS5zZXBhcmF0b3IgPT0gYi5zZXBhcmF0b3I7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWxsTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIu
aAppbmRleCA5NWQzODYyN2UxNDEzZjUyNjFjMDljOWZkOWZiMWFhMjIwZDU0OGI0Li43MjQwYjk2
YmU4MGU5NzMzNmJjZGNiY2Q0ZWU3ZTI4ZGM2Nzg4OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCkBAIC0zNSwxOCArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogCiBzdHJ1Y3QgRmlsbFNpemUgewotICAgIEZp
bGxTaXplKCkKLSAgICAgICAgOiB0eXBlKEZpbGxTaXplVHlwZTo6U2l6ZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgRmlsbFNpemUoRmlsbFNpemVUeXBlIHR5cGUsIGNvbnN0IExlbmd0aFNpemUmIHNp
emUpCi0gICAgICAgIDogdHlwZSh0eXBlKQotICAgICAgICAsIHNpemUoc2l6ZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgRmlsbFNpemVUeXBlIHR5cGU7CisgICAgRmlsbFNpemVUeXBlIHR5cGUgeyBG
aWxsU2l6ZVR5cGU6OlNpemUgfTsKICAgICBMZW5ndGhTaXplIHNpemU7CiB9OwogCkBAIC04NCw3
ICs3Myw3IEBAIHB1YmxpYzoKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihtX2JsZW5kTW9kZSk7IH0KICAgICBjb25zdCBMZW5n
dGhTaXplJiBzaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplTGVuZ3RoOyB9CiAgICAg
RmlsbFNpemVUeXBlIHNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RmlsbFNp
emVUeXBlPihtX3NpemVUeXBlKTsgfQotICAgIEZpbGxTaXplIHNpemUoKSBjb25zdCB7IHJldHVy
biBGaWxsU2l6ZShzdGF0aWNfY2FzdDxGaWxsU2l6ZVR5cGU+KG1fc2l6ZVR5cGUpLCBtX3NpemVM
ZW5ndGgpOyB9CisgICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgc2l6ZVR5cGUo
KSwgbV9zaXplTGVuZ3RoIH07IH0KICAgICBNYXNrTW9kZSBtYXNrTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PE1hc2tNb2RlPihtX21hc2tNb2RlKTsgfQogCiAgICAgY29uc3QgRmls
bExheWVyKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCmluZGV4IGI3ZWJkMWQ5NjFkZTg4MjZmYjgz
MDMzMDliOGU2MzUyZjIwZjllYWIuLmQ0NzZmOTMxOTg3Y2ZjYTcxNDE0Y2JmZGVjZDgxYWJiMWVk
ZmNlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCkBAIC00
Miw3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIERlc3BpdGUgbGluZSBudW1iZXJz
IGluIHRoZSBzcGVjIHN0YXJ0IGluICIxIiwgdGhlIGluZGV4ZXMgaGVyZSBzdGFydCBpbiAiMCIu
CiBjbGFzcyBHcmlkU3BhbiB7CiBwdWJsaWM6Ci0KICAgICBzdGF0aWMgR3JpZFNwYW4gdW50cmFu
c2xhdGVkRGVmaW5pdGVHcmlkU3BhbihpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBHcmlkU3BhbihzdGFydExpbmUsIGVuZExpbmUsIFVudHJhbnNsYXRl
ZERlZmluaXRlKTsKQEAgLTE0Miw4ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotCi0gICAgZW51bSBHcmlkU3BhblR5cGUge1VudHJhbnNsYXRlZERlZmluaXRlLCBUcmFuc2xh
dGVkRGVmaW5pdGUsIEluZGVmaW5pdGV9OworICAgIGVudW0gR3JpZFNwYW5UeXBlIDogdWludDhf
dCB7IFVudHJhbnNsYXRlZERlZmluaXRlLCBUcmFuc2xhdGVkRGVmaW5pdGUsIEluZGVmaW5pdGUg
fTsKIAogICAgIEdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lLCBHcmlkU3BhblR5
cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTE2MywyNCArMTYxLDI0IEBAIHBy
aXZhdGU6CiAgICAgaW50IG1fc3RhcnRMaW5lOwogICAgIGludCBtX2VuZExpbmU7CiAgICAgR3Jp
ZFNwYW5UeXBlIG1fdHlwZTsKLQotCiB9OwogCiAvLyBUaGlzIHJlcHJlc2VudHMgYSBncmlkIGFy
ZWEgdGhhdCBzcGFucyBpbiBib3RoIHJvd3MnIGFuZCBjb2x1bW5zJyBkaXJlY3Rpb24uCi1jbGFz
cyBHcmlkQXJlYSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
Ly8gSGFzaE1hcCByZXF1aXJlcyBhIGRlZmF1bHQgY29uc3R1Y3Rvci4KK3N0cnVjdCBHcmlkQXJl
YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgR3JpZFNwYW4g
cm93czsKKyAgICBHcmlkU3BhbiBjb2x1bW5zOworCiAgICAgR3JpZEFyZWEoKQotICAgICAgICA6
IGNvbHVtbnMoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQotICAgICAgICAsIHJvd3Mo
R3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQorICAgICAgICA6IHJvd3MoR3JpZFNwYW46
OmluZGVmaW5pdGVHcmlkU3BhbigpKQorICAgICAgICAsIGNvbHVtbnMoR3JpZFNwYW46OmluZGVm
aW5pdGVHcmlkU3BhbigpKQogICAgIHsKICAgICB9CiAKLSAgICBHcmlkQXJlYShjb25zdCBHcmlk
U3BhbiYgciwgY29uc3QgR3JpZFNwYW4mIGMpCi0gICAgICAgIDogY29sdW1ucyhjKQotICAgICAg
ICAsIHJvd3MocikKKyAgICBHcmlkQXJlYShHcmlkU3BhbiByb3dzLCBHcmlkU3BhbiBjb2x1bW5z
KQorICAgICAgICA6IHJvd3Mocm93cykKKyAgICAgICAgLCBjb2x1bW5zKGNvbHVtbnMpCiAgICAg
ewogICAgIH0KIApAQCAtMTkzLDExICsxOTEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9Ci0KLSAgICBHcmlkU3BhbiBjb2x1bW5zOwotICAg
IEdyaWRTcGFuIHJvd3M7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBHcmlkQXJlYT4g
TmFtZWRHcmlkQXJlYU1hcDsKK3VzaW5nIE5hbWVkR3JpZEFyZWFNYXAgPSBIYXNoTWFwPFN0cmlu
ZywgR3JpZEFyZWE+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaAppbmRleCA4NmFjZDMzMGRmNjlmODNiMGQyZmQz
MjI3ZWJiODBlOWVmZTdlODdhLi41Zjg4ZGUxZmM5YzIxMjJjZTIyYWQ3ZTMwYTMwYjA4NDkzODVl
OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0
aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmgKQEAg
LTQyLDcgKzQyLDYgQEAgY2xhc3MgR3JpZExlbmd0aCB7CiBwdWJsaWM6CiAgICAgR3JpZExlbmd0
aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAgICAgOiBtX2xlbmd0aChsZW5ndGgpCi0gICAg
ICAgICwgbV9mbGV4KDApCiAgICAgICAgICwgbV90eXBlKExlbmd0aFR5cGUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoIWxlbmd0aC5pc1VuZGVmaW5lZCgpKTsKQEAgLTcyLDE0ICs3MSwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTGVuZ3Ro
VHlwZSAmJiBtX2xlbmd0aC5pc0F1dG8oKTsgfQogCiBwcml2YXRlOgotICAgIC8vIElkZWFsbHkg
d2Ugd291bGQgcHV0IHRoZSAyIGZvbGxvd2luZyBmaWVsZHMgaW4gYSB1bmlvbiwgYnV0IExlbmd0
aCBoYXMgYSBjb25zdHJ1Y3RvciwKLSAgICAvLyBhIGRlc3RydWN0b3IgYW5kIGEgY29weSBhc3Np
Z25tZW50IHdoaWNoIGlzbid0IGFsbG93ZWQuCisgICAgLy8gQ291bGQgdXNlIGEgVmFyaWFudCBo
ZXJlIHNpbmNlIHdlIG9ubHkgdXNlIG1fbGVuZ3RoIG9yIG1fZmxleCwgYW5kIG1fdHlwZSBkZXRl
cm1pbmVzIHdoaWNoLgogICAgIExlbmd0aCBtX2xlbmd0aDsKLSAgICBkb3VibGUgbV9mbGV4Owot
ICAgIGVudW0gR3JpZExlbmd0aFR5cGUgewotICAgICAgICBMZW5ndGhUeXBlLAotICAgICAgICBG
bGV4VHlwZQotICAgIH07CisgICAgZG91YmxlIG1fZmxleCB7IDAgfTsKKyAgICBlbnVtIEdyaWRM
ZW5ndGhUeXBlIDogYm9vbCB7IExlbmd0aFR5cGUsIEZsZXhUeXBlIH07CiAgICAgR3JpZExlbmd0
aFR5cGUgbV90eXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAKaW5kZXggYWQ1YWJhZGFjMDRmN2QyZWJiY2M2NzA0ZTAxMjkzYjFkZGZh
ZTNhNC4uMmU4ZDUyNmE5ZmExOTVkNDU3NDE2MmVlNjE3OWYzZWNlNjNjN2VjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0xNDk3LDcg
KzE0OTcsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29ucwogICAgIC8vIFNoaWZ0IGVsZW1lbnQg
dG8gdGhlIGFuY2hvciBzcGVjaWZpZWQgYnkgb2Zmc2V0LWFuY2hvci4KICAgICBhdXRvIHRyYW5z
Zm9ybU9yaWdpbiA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh0cmFuc2Zvcm1PcmlnaW5YWSgp
LCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICBhdXRv
IGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKLSAgICBpZiAoIW9mZnNldEFuY2hvcigpLngoKS5p
c0F1dG8oKSkKKyAgICBpZiAoIW9mZnNldEFuY2hvcigpLnguaXNBdXRvKCkpCiAgICAgICAgIGFu
Y2hvciA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChvZmZzZXRBbmNob3IoKSwgYm91bmRpbmdC
b3guc2l6ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CiAgICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZSgtYW5jaG9yLngoKSwgLWFuY2hvci55KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDczMjQ0NjlkMzM2MGY0ZTEzNGQzNGMyZDZm
ODhiZWJlY2NmOWI2MjQuLjhjY2UyOTNhZGE1NTdmYjg0YjgyM2YxYTExODI4NDhiZTQyZGYyZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0x
MDksNyArMTA5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCb3JkZXJEYXRhOwog
Y2xhc3MgQ29udGVudERhdGE7Ci1jbGFzcyBDb3VudGVyQ29udGVudDsKIGNsYXNzIEN1cnNvckxp
c3Q7CiBjbGFzcyBGb250Q2FzY2FkZTsKIGNsYXNzIEZvbnRNZXRyaWNzOwpAQCAtMTIxLDYgKzEy
MCw3IEBAIGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YTsKIGNsYXNzIFN0eWxlU2Nyb2xsU25hcEFy
ZWE7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAorc3RydWN0IENvdW50ZXJDb250ZW50
Owogc3RydWN0IFNjcm9sbFNuYXBBbGlnbjsKIHN0cnVjdCBTY3JvbGxTbmFwVHlwZTsKIApAQCAt
NzAxLDcgKzcwMSw3IEBAIHB1YmxpYzoKICAgICBUZXh0Q29tYmluZSB0ZXh0Q29tYmluZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPihtX3JhcmVJbmhlcml0ZWREYXRh
LT50ZXh0Q29tYmluZSk7IH0KICAgICBib29sIGhhc1RleHRDb21iaW5lKCkgY29uc3QgeyByZXR1
cm4gdGV4dENvbWJpbmUoKSAhPSBUZXh0Q29tYmluZTo6Tm9uZTsgfQogCi0gICAgY29uc3QgVGFi
U2l6ZSYgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNp
emU7IH0KKyAgICBUYWJTaXplIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0
ZWREYXRhLT50YWJTaXplOyB9CiAKICAgICAvLyBFbmQgQ1NTMyBHZXR0ZXJzCiAKQEAgLTEyNzgs
NyArMTI3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tkcm9wRmlsdGVyKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBiYWNrZHJvcEZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogI2VuZGlmCiAKLSAgICB2
b2lkIHNldFRhYlNpemUoY29uc3QgVGFiU2l6ZSYgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIHRhYlNpemUsIHNpemUpOyB9CisgICAgdm9pZCBzZXRUYWJTaXplKFRhYlNpemUg
c2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRhYlNpemUsIHNpemUpOyB9CiAK
ICAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZvcmUsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KICAgICB2b2lkIHNldEJyZWFrQWZ0ZXIoQnJlYWtC
ZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBi
cmVha0FmdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnJlYWtCZWhhdmlvcikpOyB9CkBAIC0x
NTg2LDcgKzE1ODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRDb21iaW5lIGluaXRpYWxU
ZXh0Q29tYmluZSgpIHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25lOyB9CiAgICAgc3RhdGljIFRl
eHRPcmllbnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVu
dGF0aW9uOjpNaXhlZDsgfQogICAgIHN0YXRpYyBPYmplY3RGaXQgaW5pdGlhbE9iamVjdEZpdCgp
IHsgcmV0dXJuIE9iamVjdEZpdDo6RmlsbDsgfQotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0
aWFsT2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoNTAuMGYsIExl
bmd0aFR5cGU6OlBlcmNlbnQpLCBMZW5ndGgoNTAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsg
fQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2JqZWN0UG9zaXRpb24oKSB7IHJldHVy
biB7IExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVu
Z3RoVHlwZTo6UGVyY2VudCkgfTsgfQogICAgIHN0YXRpYyBFbXB0eUNlbGwgaW5pdGlhbEVtcHR5
Q2VsbHMoKSB7IHJldHVybiBFbXB0eUNlbGw6OlNob3c7IH0KICAgICBzdGF0aWMgTGlzdFN0eWxl
UG9zaXRpb24gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCkgeyByZXR1cm4gTGlzdFN0eWxlUG9z
aXRpb246Ok91dHNpZGU7IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW5pdGlhbExp
c3RTdHlsZVN0cmluZ1ZhbHVlKCkgeyByZXR1cm4gbnVsbEF0b20oKTsgfQpAQCAtMTkwMSwxMSAr
MTkwMSwxMSBAQCBwdWJsaWM6CiAKICAgICBMZW5ndGhQb2ludCBvZmZzZXRQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9mZnNldFBvc2l0aW9uOyB9CiAg
ICAgdm9pZCBzZXRPZmZzZXRQb3NpdGlvbihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zmc2V0UG9zaXRpb24sIFdURk1vdmUocG9zaXRp
b24pKTsgfQotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0UG9zaXRpb24oKSB7
IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5n
dGhUeXBlOjpBdXRvKSk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldFBv
c2l0aW9uKCkgeyByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpB
dXRvIH0gfTsgfQogCiAgICAgTGVuZ3RoUG9pbnQgb2Zmc2V0QW5jaG9yKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0QW5jaG9yOyB9CiAgICAgdm9pZCBzZXRP
ZmZzZXRBbmNob3IoTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIG9mZnNldEFuY2hvciwgV1RGTW92ZShwb3NpdGlvbikpOyB9Ci0gICAgc3Rh
dGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRBbmNob3IoKSB7IHJldHVybiBMZW5ndGhQb2lu
dChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7IH0K
KyAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJuIHsg
eyBMZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9IH07IH0KIAogICAgIE9m
ZnNldFJvdGF0aW9uIG9mZnNldFJvdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm9mZnNldFJvdGF0ZTsgfQogICAgIHZvaWQgc2V0T2Zmc2V0Um90YXRlKE9mZnNl
dFJvdGF0aW9uJiYgcm90YXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBv
ZmZzZXRSb3RhdGUsIFdURk1vdmUocm90YXRpb24pKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IDg3Y2EyYjI1MmY5NmY4NWU0YjQ0MGI2
ZmQyYzBmOGU5M2FkZTdhMGMuLmRlM2RjNmM0Y2RlMTI5N2VlYTBjZmNkNmQ2MWQ2NDQxMjgxMGUy
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAK
QEAgLTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhZG93RGF0YTo6U2hh
ZG93RGF0YShjb25zdCBTaGFkb3dEYXRhJiBvKQotICAgIDogbV9sb2NhdGlvbihvLm1fbG9jYXRp
b24ueCgpLCBvLm1fbG9jYXRpb24ueSgpKQorICAgIDogbV9sb2NhdGlvbihvLm1fbG9jYXRpb24p
CiAgICAgLCBtX3NwcmVhZChvLm1fc3ByZWFkKQogICAgICwgbV9yYWRpdXMoby5tX3JhZGl1cykK
ICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TaGFkb3dEYXRhLmgKaW5kZXggMjJmZWY3NjJiY2EzMTBiNjNhZWZlODU4NmY0MjJhYjlmODNj
MDVmMi4uZDlhNDFhMTViYTBkMWVmYTljOGZlNTQwN2IzZDUwZTlmMmVlMGFhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICBTaGFkb3dEYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgU2hhZG93RGF0YShj
b25zdCBMZW5ndGhQb2ludCYgbG9jYXRpb24sIExlbmd0aCByYWRpdXMsIExlbmd0aCBzcHJlYWQs
IFNoYWRvd1N0eWxlIHN0eWxlLCBib29sIGlzV2Via2l0Qm94U2hhZG93LCBjb25zdCBDb2xvciYg
Y29sb3IpCi0gICAgICAgIDogbV9sb2NhdGlvbihsb2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSkK
KyAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uKQogICAgICAgICAsIG1fc3ByZWFkKHNwcmVh
ZCkKICAgICAgICAgLCBtX3JhZGl1cyhyYWRpdXMpCiAgICAgICAgICwgbV9jb2xvcihjb2xvcikK
QEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsK
ICAgICB9CiAgICAgCi0gICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
dGlvbi54KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0
aW9uLnkoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRp
b24ueDsgfQorICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24u
eTsgfQogICAgIGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bG9jYXRpb247IH0KICAgICBjb25zdCBMZW5ndGgmIHJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1f
cmFkaXVzOyB9CiAgICAgTGF5b3V0VW5pdCBwYWludGluZ0V4dGVudCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRz
LmgKaW5kZXggYTJjN2IwZGIzZDZlNWZlZDY1MzZhNTYzOWI0NTc5MmU0NzgwMTE3OS4uNTM3NDcy
MmFiMDk0YzU3ODM3OGNkZDFlNWQyOWFmMGVkOTlhNWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaApAQCAtMjUs
MTEgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJMZW5ndGhCb3guaCIKLSNp
bmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRl
ckNvbnZlcnRlci5oCmluZGV4IDBmOTBiYzIyNTllZDRmM2MwYjM2NGE5YTZkNGI0NzQ0MzVmMWRk
YzIuLmI3MGI1NTE4NDA0MmY5MmVjOWFkOWU4NGUyM2MzZGY4OGZkYmMxYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0yNjksOCArMjY5LDgg
QEAgaW5saW5lIFRhYlNpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhYlNpemUoY29uc3Qg
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBUYWJTaXplKHByaW1pdGl2ZVZhbHVlLmZs
b2F0VmFsdWUoKSwgU3BhY2VWYWx1ZVR5cGUpOwotICAgIHJldHVybiBUYWJTaXplKHByaW1pdGl2
ZVZhbHVlLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKCkpLCBMZW5ndGhWYWx1ZVR5cGUpOworICAgICAgICByZXR1cm4geyBwcmltaXRp
dmVWYWx1ZS5mbG9hdFZhbHVlKCksIFRhYlNpemU6OlNwYWNlcyB9OworICAgIHJldHVybiB7IHBy
aW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0
aENvbnZlcnNpb25EYXRhKCkpLCBUYWJTaXplOjpMZW5ndGggfTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KQEAgLTQxOCw3ICs0MTgsNyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLAogICAg
IExlbmd0aCBsZW5ndGhYID0gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlTGVmdCwg
Q1NTVmFsdWVSaWdodD4oYnVpbGRlclN0YXRlLCAqcGFpci0+Zmlyc3QoKSk7CiAgICAgTGVuZ3Ro
IGxlbmd0aFkgPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVUb3AsIENTU1ZhbHVl
Qm90dG9tPihidWlsZGVyU3RhdGUsICpwYWlyLT5zZWNvbmQoKSk7CiAKLSAgICByZXR1cm4gTGVu
Z3RoUG9pbnQobGVuZ3RoWCwgbGVuZ3RoWSk7CisgICAgcmV0dXJuIHsgbGVuZ3RoWCwgbGVuZ3Ro
WSB9OwogfQogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBv
c2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCkBAIC00MjgsNyArNDI4LDcgQEAgaW5saW5lIExlbmd0aFBvaW50IEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmIGJ1aWxkZXIKICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUuaXNQYWlyKCkpCiAgICAgICAgIHJldHVybiBjb252ZXJ0UG9zaXRp
b24oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiAKLSAgICByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3Ro
KExlbmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOworICAgIHJldHVy
biB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6OkF1dG8gfSB9OwogfQogCiBp
bmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRleHREZWNvcmF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggMTNjYWQ5Yjdm
ZDc3MmE2Y2QyMzk4MzQwZTI4Mjc3MWJkNDliNDQ2MS4uZTgzZWY5YzRhN2YyZDRjZTEwMmFkZGI3
OWM5YTdkMDI5YjMwODM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVC
dWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKQEAgLTk1Niw3ICs5NTYsNyBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBs
eVRleHRPckJveFNoYWRvd1ZhbHVlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLAogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb2xvciA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmNvbG9yKCk7
CiAKLSAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihMZW5n
dGhQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NT
UHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6
OnRyYW5zcGFyZW50QmxhY2spOworICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVl
PFNoYWRvd0RhdGE+KExlbmd0aFBvaW50IHsgeCwgeSB9LCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0
eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxp
ZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgICAgIGlmIChwcm9w
ZXJ0eSA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkp
OyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CiAgICAg
ICAgIGVsc2UKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVDb250ZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1CiAg
ICAgICAgICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0
U3R5bGVJZGVudCgpOwogICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVl
Tm9uZSkKICAgICAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlzdFN0
eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAgICAgICAgICAgYXV0
byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVu
dGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOworICAg
ICAgICAgICAgYXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oQ291bnRl
ckNvbnRlbnQgeyBjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291
bnRlclZhbHVlLT5zZXBhcmF0b3IoKSB9KTsKICAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpLnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRp
ZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBvcHVwTWVudS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRQb3B1cE1lbnUuaAppbmRleCBmM2Y1ZWI5MjdjMzQyNTJlMWRi
NmE4YTRjYTAwNzFhMjg4ZTI2MjliLi4yNDgxNmQ1NmExYzUyMDcwMmFkOTAzOGQzMWQ4YzY1MDBi
ZDhjOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFBvcHVwTWVudS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
UG9wdXBNZW51LmgKQEAgLTIwLDYgKzIwLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
V2ViUG9wdXBNZW51UHJveHkuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRPcHRpb25NZW51IFdlYktp
dE9wdGlvbk1lbnU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5o
CmluZGV4IDMzNWYzZmFkZmFhZWVlM2ViNjI1MWVmYjk4OTk1MzkxNGQ2MDE2MzUuLmQ4Zjc3ZjZh
ZjFiNTdhMjA4YTRlZTJkZTMzNTlhNWJhYTg5ZDJjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMjQ1OTQxYzgxMDBmMGIxZDIzYTM3ZWU2ODJm
YTEwMzc1YWJmMzhmLi43MjU5NjcyYjEzNTljOWYyNDgzNzEwMWY0NzI0Y2QxM2FlZGRjOGY1IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMjItMDEtMjUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE9wdGltaXplIGFuZCBzaW1wbGlmeSBNZWRpYVRpbWUgYW5kIHZhcmlvdXMgc2ltcGxl
IHN0cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oOiBBZGRlZCBpbmNsdWRlIG9mIDxvcHRpb25hbD4s
IG5vIGxvbmdlciBwdWxsZWQgaW4gYnkKKyAgICAgICAgb3RoZXIgaGVhZGVycy4KKworICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5o
OiBBZGRlZCBpbmNsdWRlIG9mCisgICAgICAgIDxvcHRpb25hbD4sIG5vIGxvbmdlciBwdWxsZWQg
aW4gYnkgb3RoZXIgaGVhZGVycy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L01lZGlhVGltZS5jcHA6IFVwZGF0ZWQgdGVzdHMgZm9yIGNoYW5nZSB0byBPcHRpb25TZXQgZm9y
CisgICAgICAgIE1lZGlhVGltZSBmbGFncywgYW5kIGZvciBuYW1lIGNoYW5nZSBmcm9tIFJvdW5k
aW5nRmxhZ3MgdG8gUm91bmRpbmdNb2RlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg6IEFkZGVkIGluY2x1
ZGUKKyAgICAgICAgb2YgPG9wdGlvbmFsPiwgbm8gbG9uZ2VyIHB1bGxlZCBpbiBieSBvdGhlciBo
ZWFkZXJzLgorCiAyMDIyLTAxLTI2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBDKysyMCB3YXJuaW5ncyBpbiBUZXN0Q29uc29sZU1lc3Nh
Z2UKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaCBiL1Rvb2xzL01p
bmlCcm93c2VyL3dpbi9Db21tb24uaAppbmRleCA5OTY0ZDVlNTA0MzE5ZDc3ODMzNjgzZGRmNTgw
OWJjN2Y3ZjRkYzBiLi44MDVlMzYyN2Q3NzQwYmUyMDkwODBjODQ1N2E4MmY4YTljMzNkZTM5IDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmgKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvd2luL0NvbW1vbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJzdGRh
ZnguaCIKICNpbmNsdWRlICJNYWluV2luZG93LmgiCisjaW5jbHVkZSA8b3B0aW9uYWw+CiAKIGVu
dW0gY2xhc3MgQnJvd3NlcldpbmRvd1R5cGUgewogICAgIFdlYktpdCwKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5o
IGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9s
bGVyLmgKaW5kZXggYzgyMjc3OThmYTExMjJlZmU0NGIyZDVjNjRmYmY2NTAzMDE1NmViMC4uZTky
MWU4OTZiNzBiYTJhYWNmYTU5OTNlMjU3YzMyOTllZGIzMDNhNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysr
IGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9s
bGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIE9CSkNfQ0xBU1MgTlNVbmRvTWFuYWdlcjsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCmluZGV4IGIwYjU0YTgwM2Zh
Yzg1ZDE1ODRlNzIzYzg2ZTFkOWNiYTQ0ZGNlN2EuLmRjOGUyODk4NGFlM2E4MDJlNTczODY3NjYx
NTI5NTk0YWM1OWQ0NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L01lZGlhVGltZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFU
aW1lLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIFRFU1QoV1RGLCBNZWRpYVRpbWUpCiAKICAgICAv
LyBDb25zdGFudHMKICAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBNZWRpYVRp
bWUoMCwgMSkpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIE1lZGlh
VGltZSgtMSwgMSwgMCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCks
IE1lZGlhVGltZSgtMSwgMSwgeyB9KSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRp
dmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6UG9zaXRpdmVJbmZp
bml0ZSkpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCks
IE1lZGlhVGltZSgwLCAxLCBNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGUpKTsKICAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFU
aW1lOjpJbmRlZmluaXRlKSk7CkBAIC0yNTQsNjkgKzI1NCw2OSBAQCBURVNUKFdURiwgTWVkaWFU
aW1lKQogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgMikudG9UaW1lU2NhbGUoMSkudGltZVZh
bHVlKCksIDEpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgNikudG9UaW1lU2NhbGUoMyku
dGltZVZhbHVlKCksIDEpOwogICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2Nh
bGUoMSkuaGFzQmVlblJvdW5kZWQoKSwgdHJ1ZSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgx
LCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJv
bVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVy
bykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoNDksIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1
ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2FsZSgx
LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgp
LCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBN
ZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAx
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0g
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDApOwotICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdGbGFnczo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6
OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0x
LCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8p
LnRpbWVWYWx1ZSgpLCAwKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCks
IDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1l
ZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFn
czo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
LTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJk
WmVybykudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGlt
ZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxl
KDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkWmVybykudGltZVZhbHVlKCksIC0x
KTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVk
aWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6
OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxh
Z3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZy
b21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRp
bWVWYWx1ZSgpLCAyKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybykudGltZVZhbHVl
KCksIDIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7
Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0Zs
YWdzOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgtMywgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpBd2F5
RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUx
LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6QXdheUZyb21a
ZXJvKS50aW1lVmFsdWUoKSwgLTIpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OkF3YXlGcm9tWmVybyku
dGltZVZhbHVlKCksIC0yKTsKLSAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50
aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCkudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgMik7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9U
aW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNTEsIDEwMCku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtNDksIDEw
MCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2
ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywg
MikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmRQb3NpdGl2
ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1
MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBv
c2l0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkUG9zaXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDApOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6VG93
YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFnczo6
VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFn
czo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIDEpOwotICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdGbGFn
czo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKLSAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5n
RmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7Ci0gICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3Vu
ZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTEpOwotICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdGbGFnczo6VG93YXJkTmVnYXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKLSAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIp
OwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgp
LCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lKDQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91
bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9k
ZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpI
YWxmQXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgxNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZB
d2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0x
LCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9t
WmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVy
bykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00OSwgMTAwKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybyku
dGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTMsIDIpLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKS50aW1lVmFs
dWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykudGltZVZhbHVl
KCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNDksIDEwMCkudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgp
LCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJk
WmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1l
VmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEwMCkudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAx
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRp
bWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGltZVZhbHVlKCksIDApOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRp
bmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRv
d2FyZFplcm8pLnRpbWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0zLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkWmVybykudGlt
ZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xNTEsIDEwMCkudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgp
LCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEs
IE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRaZXJvKS50aW1lVmFsdWUoKSwgLTEpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpS
b3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoLTEsIDIpLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2Rl
OjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgzLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21a
ZXJvKS50aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNTEsIDEwMCku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OkF3YXlGcm9tWmVybykudGlt
ZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgp
LCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRp
YVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTEpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWUoLTUxLCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6
Um91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm8pLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgtNDksIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGlu
Z01vZGU6OkF3YXlGcm9tWmVybykudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdh
eUZyb21aZXJvKS50aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE1
MSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21a
ZXJvKS50aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6QXdheUZyb21aZXJvKS50
aW1lVmFsdWUoKSwgLTIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAyKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9UaW1lU2NhbGUo
MSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRpbWVW
YWx1ZSgpLCAyKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDE1MSwgMTAwKS50b1RpbWVTY2Fs
ZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSkudGlt
ZVZhbHVlKCksIDIpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTQ5LCAxMDApLnRvVGltZVNj
YWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5KS50
aW1lVmFsdWUoKSwgMik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMikudG9UaW1lU2Nh
bGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkpLnRp
bWVWYWx1ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwgMTAwKS50b1RpbWVT
Y2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eSku
dGltZVZhbHVlKCksIDApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTQ5LCAxMDApLnRvVGlt
ZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmluaXR5
KS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMywgMikudG9UaW1l
U2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHkp
LnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMTUxLCAxMDApLnRv
VGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmRQb3NpdGl2ZUluZmlu
aXR5KS50aW1lVmFsdWUoKSwgLTEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoLTE0OSwgMTAw
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgtMSwgMiku
dG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZlSW5m
aW5pdHkpLnRpbWVWYWx1ZSgpLCAtMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50
b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJbmZp
bml0eSkudGltZVZhbHVlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMTUxLCAxMDAp
LnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpUb3dhcmROZWdhdGl2ZUlu
ZmluaXR5KS50aW1lVmFsdWUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxNDksIDEw
MCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2FyZE5lZ2F0aXZl
SW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC0xLCAy
KS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC01MSwg
MTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRp
dmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKC00
OSwgMTAwKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVn
YXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0xKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0zLCAyKS50b1RpbWVTY2FsZSgxLCBNZWRpYVRpbWU6OlJvdW5kaW5nTW9kZTo6VG93YXJkTmVn
YXRpdmVJbmZpbml0eSkudGltZVZhbHVlKCksIC0yKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KC0xNTEsIDEwMCkudG9UaW1lU2NhbGUoMSwgTWVkaWFUaW1lOjpSb3VuZGluZ01vZGU6OlRvd2Fy
ZE5lZ2F0aXZlSW5maW5pdHkpLnRpbWVWYWx1ZSgpLCAtMik7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgtMTQ5LCAxMDApLnRvVGltZVNjYWxlKDEsIE1lZGlhVGltZTo6Um91bmRpbmdNb2RlOjpU
b3dhcmROZWdhdGl2ZUluZmluaXR5KS50aW1lVmFsdWUoKSwgLTIpOwogICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxKS50b1RpbWVTY2FsZSgy
KSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKICAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwgMSkudG9UaW1lU2NhbGUoMiks
IE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSk7CiAgICAgaW50NjRfdCBtYXhJbnQz
MiA9IG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKICAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKG1heEludDMyICogMiwgMSkudG9UaW1lU2NhbGUoMikudGltZVZhbHVlKCksIG1heEludDMy
ICogNCk7CiAgICAgaW50NjRfdCBiaWdJbnQgPSAxTEwgPDwgNjI7CiAgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZShiaWdJbnQsIDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAyOSkudGltZVZhbHVl
KCksIGJpZ0ludCAvIDQpOwotICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50ICsgMSwgMVUg
PDwgMzEpLnRvVGltZVNjYWxlKDFVIDw8IDI5LCBNZWRpYVRpbWU6OlJvdW5kaW5nRmxhZ3M6OlRv
d2FyZFplcm8pLnRpbWVWYWx1ZSgpLCBiaWdJbnQgLyA0KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKGJpZ0ludCArIDEsIDFVIDw8IDMxKS50b1RpbWVTY2FsZSgxVSA8PCAyOSwgTWVkaWFUaW1l
OjpSb3VuZGluZ01vZGU6OlRvd2FyZFplcm8pLnRpbWVWYWx1ZSgpLCBiaWdJbnQgLyA0KTsKICAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKGJpZ0ludCArIDEsIDFVIDw8IDMxKS50b1RpbWVTY2FsZSgx
VSA8PCAyOSkuaGFzQmVlblJvdW5kZWQoKSwgdHJ1ZSk7CiAgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZShiaWdJbnQgLSAyLCBNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUpLnRvVGltZVNjYWxlKE1l
ZGlhVGltZTo6TWF4aW11bVRpbWVTY2FsZSAtIDEpLmhhc0JlZW5Sb3VuZGVkKCksIHRydWUpOwog
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoYmlnSW50LCAxKS50b1RpbWVTY2FsZShNZWRpYVRpbWU6
Ok1heGltdW1UaW1lU2NhbGUpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TaWduYWxzLmNwcAppbmRleCAyNDViMWFlNzE3
Mzk1YjM3ZThkMjVlODIzMzQ4YzViMGViMjEzMTQwLi5kNjAyZTYzMWYyN2IwYzkyYTY5M2VjZmEw
ZDk2N2I2ZTdhNDJhN2Q4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TaWduYWxzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TaWduYWxz
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9TaWduYWxzLmg+CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQppbmRleCA2
NWJmYmRlZjA4MjI0NjA4MjNjZmQ2MWFhMzcyODc0OTViMmIxZGE0Li41NDQ0YWM3ZWNhY2JiOTM2
YmU4YzBmNjgyNzY1MTE4NmI4ZTMwOTUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0IDxX
ZWJLaXQvX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1NlY29uZHMuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQppbmRleCBlYTAxMTBjNWY1NGMwYTU0MDIy
MGUxNzY3YTZkZTEzNzhmM2MyY2MwLi5iOTJiMGY5NWYwZjcxZWRhNmI0ODBhZTUxMTg1YjljNDgy
NmMzMGFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQubW0KQEAgLTM1LDYgKzM1LDcg
QEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9XYWxsVGltZS5oPgogCiBzdGF0aWMgUmV0YWlu
UHRyPFdLV2ViVmlldz4gd2ViVmlld1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZElu
TmV0d29ya1Byb2Nlc3MoKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uu
aAppbmRleCAyMTk0Y2EzZTBiODc1NzRlMWI4YzgyNzRmZjE0ZjVjYTg1ZjJiMTM3Li42YzQxNTBh
NDRjMTljODdjYTk5YTExNzljMGMxNWJkZGI2NDNmZGQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSlNXcmFw
cGFibGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1
ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KIAo=
</data>
<flag name="commit-queue"
          id="476330"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>