<?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>203550</bug_id>
          
          <creation_ts>2019-10-28 21:10:51 -0700</creation_ts>
          <short_desc>[JSC] DateMath should have TimeClipped version</short_desc>
          <delta_ts>2019-10-31 09:14:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202187</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1584827</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-28 21:10:51 -0700</bug_when>
    <thetext>ECMAScript uses milliseconds (double) as its internal representation, but Date constructor and its operation clips this double before actually using it.
As a result, this milliseconds is always within 53bit, and it is always integer. This means that we should use int64_t when calculating GregorianDateTime.
When running instruments profiler, 31% of time is consumed by `fmod`. This is really fun, we should use integers instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585175</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-29 16:48:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/56726976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585207</commentid>
    <comment_count>2</comment_count>
      <attachid>382260</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-29 18:34:50 -0700</bug_when>
    <thetext>Created attachment 382260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585237</commentid>
    <comment_count>3</comment_count>
      <attachid>382268</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-29 20:02:34 -0700</bug_when>
    <thetext>Created attachment 382268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585239</commentid>
    <comment_count>4</comment_count>
      <attachid>382270</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-29 20:09:47 -0700</bug_when>
    <thetext>Created attachment 382270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585730</commentid>
    <comment_count>5</comment_count>
      <attachid>382412</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-30 19:32:11 -0700</bug_when>
    <thetext>Created attachment 382412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585936</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-31 09:14:09 -0700</bug_when>
    <thetext>Committed r251852: &lt;https://trac.webkit.org/changeset/251852&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382260</attachid>
            <date>2019-10-29 18:34:50 -0700</date>
            <delta_ts>2019-10-29 20:02:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203550-20191029183450.patch</filename>
            <type>text/plain</type>
            <size>33249</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YmVkMjQyMGM1ZmI1NWJiYTEzNGYwNjc1NTM1NzFlZjgxNmI1OWRiLi4wOTlhMmVhNmFjYmMzMTQ5
NzJhZWNlMjhhOGFkNDY2M2ZiMmM5NjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOS0xMC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERhdGVNYXRoIHNob3VsZCBoYXZlIFRpbWVDbGlwcGVkIHZlcnNp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzU1
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEwJSBp
bXByb3ZlbWVudCBpbiBkYXRlLWZvcm1hdC14cGFyYi4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBhdGNoZWQKKworICAg
ICAgICAgICAgZGF0ZS1mb3JtYXQteHBhcmIgICAgICAgIDQuOTMxMSstMC4wMjcyICAgICBeICAg
ICAgNC40NTQwKy0wLjAyNzkgICAgICAgIF4gZGVmaW5pdGVseSAxLjEwNzF4IGZhc3RlcgorCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
RGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRlVGltZSk6CisgICAg
ICAgICogcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0RhdGVNYXRoLmNwcDoKKyAgICAgICAg
KEpTQzo6bG9jYWxUaW1lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dGltZVRvTVMpOgorICAgICAg
ICAoSlNDOjpncmVnb3JpYW5EYXRlVGltZVRvTVMpOgorICAgICAgICAoSlNDOjptc1RvR3JlZ29y
aWFuRGF0ZVRpbWUpOgorICAgICAgICAoSlNDOjpwYXJzZURhdGUpOgorICAgICAgICAoSlNDOjpt
c1RvU2Vjb25kcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Om1zVG9XZWVrRGF5KTogRGVsZXRl
ZC4KKwogMjAxOS0xMC0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbXBsZW1lbnQgdGhlIFJlbW90ZSBQbGF5YmFjayBBUEkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhMGU4YTMwMWY2
MjE3ZDNjZTY0ZThkMWQzM2Y1NDkyN2QzZWI4YTguLjZmMjZlNWVkYWUwNTk2MmUwNWMyNDFmYzNh
YjQxNTFkMDljMjM3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTktMTAtMjkgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBEYXRlTWF0aCBzaG91
bGQgaGF2ZSBUaW1lQ2xpcHBlZCB2ZXJzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5jcHA6CisgICAgICAgIChXVEY6Omlz
TGVhcFllYXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpkYXlzSW5ZZWFyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6ZGF5c0Zyb20xOTcwVG9ZZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6bXNUb0RheXMpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjptc1RvWWVhcik6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OmRheUluWWVhcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om1zVG9N
aW51dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bXNUb0hvdXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6bW9udGhGcm9tRGF5SW5ZZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
Y2hlY2tNb250aCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmRheUluTW9udGhGcm9tRGF5SW5Z
ZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6ZGF0ZVRvRGF5c0Zyb20xOTcwKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6dGltZUNsaXApOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9EYXRl
TWF0aC5oOgorICAgICAgICAoV1RGOjpUaW1lQ2xpcHBlZE1pbGxpc2Vjb25kczo6VGltZUNsaXBw
ZWRNaWxsaXNlY29uZHMpOgorICAgICAgICAoV1RGOjpUaW1lQ2xpcHBlZE1pbGxpc2Vjb25kczo6
dmFsdWUgY29uc3QpOgorICAgICAgICAoV1RGOjpUaW1lQ2xpcHBlZE1pbGxpc2Vjb25kczo6YXNE
b3VibGUgY29uc3QpOgorICAgICAgICAoV1RGOjp0aW1lQ2xpcCk6CisgICAgICAgIChXVEY6OmRh
eXNGcm9tMTk3MFRvWWVhcik6CisgICAgICAgIChXVEY6OmlzTGVhcFllYXIpOgorICAgICAgICAo
V1RGOjpkYXlzSW5ZZWFyKToKKyAgICAgICAgKFdURjo6bXNUb0RheXMpOgorICAgICAgICAoV1RG
OjpkYXlJblllYXIpOgorICAgICAgICAoV1RGOjpkYXRlVG9EYXlzRnJvbTE5NzApOgorICAgICAg
ICAoV1RGOjptc1RvWWVhcik6CisgICAgICAgIChXVEY6Om1zVG9NaW51dGVzKToKKyAgICAgICAg
KFdURjo6bXNUb0hvdXJzKToKKyAgICAgICAgKFdURjo6bXNUb1NlY29uZHMpOgorICAgICAgICAo
V1RGOjptc1RvV2Vla0RheSk6CisgICAgICAgIChXVEY6Om1vbnRoRnJvbURheUluWWVhcik6Cisg
ICAgICAgIChXVEY6OmRheUluTW9udGhGcm9tRGF5SW5ZZWFyKToKKyAgICAgICAgKiB3dGYvR3Jl
Z29yaWFuRGF0ZVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpHcmVnb3JpYW5EYXRlVGltZTo6R3Jl
Z29yaWFuRGF0ZVRpbWUpOgorICAgICAgICAqIHd0Zi9HcmVnb3JpYW5EYXRlVGltZS5oOgorCiAy
MDE5LTEwLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ10gQWRkIGZhc3QgcGF0aCBmb3IgU3RyaW5nI2xvY2FsZUNvbXBhcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IDlkN2Yx
MDRiYmJkMTU1NDEyYmRkMGEyODMxYmJhZDEyNjRkNjQ4YTIuLjJjZjg3ZTg2OWYwZjNjMjg3ZTJh
MDBiZmVkZjE0ZmQxMGEzNmIxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtNTUsOCArNTUsNiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KIGNvbnN0IENsYXNzSW5m
byBEYXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rp
b246OnNfaW5mbywgJmRhdGVDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKERhdGVDb25zdHJ1Y3RvcikgfTsKIAogLyogU291cmNlIGZvciBEYXRlQ29uc3RydWN0
b3IubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJz
aW9uLmNwcAppbmRleCBhZTlmNGUwY2E3Y2NiMDJmYWI0MmJmYzJlMjY0OWIwMmJhOGVkOTRhLi5l
NTA3MjY0NjBiMGM0MzIxZjdiMzk1NDIzYjdlOGFlZDMwMjc5ZjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0zNiw4ICszNiw2
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi11c2luZyBuYW1lc3BhY2UgV1RGOwotCiB0ZW1wbGF0
ZTxpbnQgd2lkdGg+CiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kTnVtYmVyKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIGludCB2YWx1ZSkKIHsKQEAgLTY4LDE2ICs2NiwxNiBAQCBTdHJpbmcgZm9y
bWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZv
cm1hdCwgYm9vbCBhcwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAogICAgIGlmIChhcHBl
bmREYXRlKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdlZWtkYXlOYW1lWyh0LndlZWtEYXko
KSArIDYpICUgN10pOworICAgICAgICBidWlsZGVyLmFwcGVuZChXVEY6OndlZWtkYXlOYW1lWyh0
LndlZWtEYXkoKSArIDYpICUgN10pOwogCiAgICAgICAgIGlmIChhc1VUQ1ZhcmlhbnQpIHsKICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgICAgIGFwcGVu
ZE51bWJlcjwyPihidWlsZGVyLCB0Lm1vbnRoRGF5KCkpOwogICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1vbnRoTmFtZVt0Lm1vbnRo
KCldKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURjo6bW9udGhOYW1lW3QubW9udGgo
KV0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1vbnRoTmFtZVt0Lm1vbnRoKCldKTsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURjo6bW9udGhOYW1lW3QubW9udGgoKV0pOwogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihi
dWlsZGVyLCB0Lm1vbnRoRGF5KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAppbmRleCA3YjRlNDVjZWE0MTk5YTE4NzIzNzkx
NDFjZDVlMjJlMTc2ZDM0ZTQ3Li40ODNkMTNmYzc2ODQ2MGZkNjQ4ZDU4MGY5ZTdhMjkzODhjOWUz
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5j
cHAKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXVzaW5nIG5hbWVzcGFj
ZSBXVEY7Ci0KIGNvbnN0IENsYXNzSW5mbyBEYXRlSW5zdGFuY2U6OnNfaW5mbyA9IHsiRGF0ZSIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRGF0
ZUluc3RhbmNlKX07CiAKIERhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCmluZGV4IDIzOWU5MzJlZWRjNGZhZDUwN2JlYTE4MzRmN2Q0OTc1ZTY5ZjEy
Y2UuLmNiYTJjOTgzZTkxOTA5ZWEyMzg5NzVhMDk3YmY2ZDBhZWUyNWRmZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC02OSw4ICs2
OSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi11c2luZyBuYW1lc3BhY2UgV1RGOwotCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXREYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGgu
Y3BwCmluZGV4IDc5OTZhOGY4YWU3MGVmMGM1NGRmYmIyOGQzMDZjMTlmYmM1YWFmMjEuLjY0ODI2
YWI5NmI1ZGIyMzBiZTI3NDRhMDU3YmRjODg4ZTQ3OTQyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBAIC0xMDAsMzAgKzEwMCw2IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi11c2luZyBuYW1lc3BhY2UgV1RGOwotCi1zdGF0aWMgaW5saW5lIGRv
dWJsZSB0aW1lVG9NUyhkb3VibGUgaG91ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91Ymxl
IG1zKQotewotICAgIHJldHVybiAoKChob3VyICogbWludXRlc1BlckhvdXIgKyBtaW4pICogc2Vj
b25kc1Blck1pbnV0ZSArIHNlYykgKiBtc1BlclNlY29uZCArIG1zKTsKLX0KLQotc3RhdGljIGlu
bGluZSBpbnQgbXNUb1NlY29uZHMoZG91YmxlIG1zKQotewotICAgIGRvdWJsZSByZXN1bHQgPSBm
bW9kKGZsb29yKG1zIC8gbXNQZXJTZWNvbmQpLCBzZWNvbmRzUGVyTWludXRlKTsKLSAgICBpZiAo
cmVzdWx0IDwgMCkKLSAgICAgICAgcmVzdWx0ICs9IHNlY29uZHNQZXJNaW51dGU7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKLX0KLQotLy8gMDogU3VuZGF5LCAxOiBNb25k
YXksIGV0Yy4KLXN0YXRpYyBpbmxpbmUgaW50IG1zVG9XZWVrRGF5KGRvdWJsZSBtcykKLXsKLSAg
ICBpbnQgd2QgPSAoc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5cyhtcykpICsgNCkgJSA3OwotICAg
IGlmICh3ZCA8IDApCi0gICAgICAgIHdkICs9IDc7Ci0gICAgcmV0dXJuIHdkOwotfQotCiAvLyBH
ZXQgdGhlIGNvbWJpbmVkIFVUQyArIERTVCBvZmZzZXQgZm9yIHRoZSB0aW1lIHBhc3NlZCBpbi4K
IC8vCiAvLyBOT1RFOiBUaGUgaW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQg
bm8gdGltZSB6b25lcyBoYXZlCkBAIC0xNTIsNyArMTI4LDcgQEAgc3RhdGljIExvY2FsVGltZU9m
ZnNldCBsb2NhbFRpbWVPZmZzZXQoVk0mIHZtLCBkb3VibGUgbXMsIFdURjo6VGltZVR5cGUgaW5w
dXRUaW0KICAgICAgICAgICAgICAgICAvLyB0aGUgb2Zmc2V0IGluIHRoZSBjYWNoZSwgd2UgZ3Jv
dyB0aGUgY2FjaGVkIHRpbWUgaW50ZXJ2YWwKICAgICAgICAgICAgICAgICAvLyBhbmQgcmV0dXJu
IHRoZSBvZmZzZXQuCiAgICAgICAgICAgICAgICAgY2FjaGUuZW5kID0gbmV3RW5kOwotICAgICAg
ICAgICAgICAgIGNhY2hlLmluY3JlbWVudCA9IG1zUGVyTW9udGg7CisgICAgICAgICAgICAgICAg
Y2FjaGUuaW5jcmVtZW50ID0gV1RGOjptc1Blck1vbnRoOwogICAgICAgICAgICAgICAgIHJldHVy
biBlbmRPZmZzZXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBMb2NhbFRpbWVPZmZzZXQg
b2Zmc2V0ID0gY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KG1zLCBpbnB1dFRpbWVUeXBlKTsKQEAg
LTE2Myw3ICsxMzksNyBAQCBzdGF0aWMgTG9jYWxUaW1lT2Zmc2V0IGxvY2FsVGltZU9mZnNldChW
TSYgdm0sIGRvdWJsZSBtcywgV1RGOjpUaW1lVHlwZSBpbnB1dFRpbQogICAgICAgICAgICAgICAg
IC8vIHRoZSBpbnRlcnZhbCB0byByZWZsZWN0IHRoaXMgYW5kIHJlc2V0IHRoZSBpbmNyZW1lbnQu
CiAgICAgICAgICAgICAgICAgY2FjaGUuc3RhcnQgPSBtczsKICAgICAgICAgICAgICAgICBjYWNo
ZS5lbmQgPSBuZXdFbmQ7Ci0gICAgICAgICAgICAgICAgY2FjaGUuaW5jcmVtZW50ID0gbXNQZXJN
b250aDsKKyAgICAgICAgICAgICAgICBjYWNoZS5pbmNyZW1lbnQgPSBXVEY6Om1zUGVyTW9udGg7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFRoZSBpbnRlcnZhbCBj
b250YWlucyBhIERTVCBvZmZzZXQgY2hhbmdlIGFuZCB0aGUgZ2l2ZW4gdGltZSBpcwogICAgICAg
ICAgICAgICAgIC8vIGJlZm9yZSBpdC4gQWRqdXN0IHRoZSBpbmNyZW1lbnQgdG8gYXZvaWQgYSBs
aW5lYXIgc2VhcmNoIGZvcgpAQCAtMTg0LDE3ICsxNjAsMjIgQEAgc3RhdGljIExvY2FsVGltZU9m
ZnNldCBsb2NhbFRpbWVPZmZzZXQoVk0mIHZtLCBkb3VibGUgbXMsIFdURjo6VGltZVR5cGUgaW5w
dXRUaW0KICAgICBjYWNoZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgY2FjaGUuc3RhcnQgPSBtczsK
ICAgICBjYWNoZS5lbmQgPSBtczsKLSAgICBjYWNoZS5pbmNyZW1lbnQgPSBtc1Blck1vbnRoOwor
ICAgIGNhY2hlLmluY3JlbWVudCA9IFdURjo6bXNQZXJNb250aDsKICAgICByZXR1cm4gb2Zmc2V0
OwogfQogCitzdGF0aWMgaW5saW5lIGRvdWJsZSB0aW1lVG9NUyhkb3VibGUgaG91ciwgZG91Ymxl
IG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1zKQoreworICAgIHJldHVybiAoKChob3VyICogV1RG
OjptaW51dGVzUGVySG91ciArIG1pbikgKiBXVEY6OnNlY29uZHNQZXJNaW51dGUgKyBzZWMpICog
V1RGOjptc1BlclNlY29uZCArIG1zKTsKK30KKwogZG91YmxlIGdyZWdvcmlhbkRhdGVUaW1lVG9N
UyhWTSYgdm0sIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBkb3VibGUgbWlsbGlTZWNvbmRz
LCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CiAgICAgZG91YmxlIGRheSA9IGRhdGVU
b0RheXNGcm9tMTk3MCh0LnllYXIoKSwgdC5tb250aCgpLCB0Lm1vbnRoRGF5KCkpOwogICAgIGRv
dWJsZSBtcyA9IHRpbWVUb01TKHQuaG91cigpLCB0Lm1pbnV0ZSgpLCB0LnNlY29uZCgpLCBtaWxs
aVNlY29uZHMpOwogICAgIGRvdWJsZSBsb2NhbFRpbWVSZXN1bHQgPSAoZGF5ICogV1RGOjptc1Bl
ckRheSkgKyBtczsKIAotICAgIGRvdWJsZSBsb2NhbFRvVVRDVGltZU9mZnNldCA9IGlucHV0VGlt
ZVR5cGUgPT0gTG9jYWxUaW1lCisgICAgZG91YmxlIGxvY2FsVG9VVENUaW1lT2Zmc2V0ID0gaW5w
dXRUaW1lVHlwZSA9PSBXVEY6OkxvY2FsVGltZQogICAgICAgICA/IGxvY2FsVGltZU9mZnNldCh2
bSwgbG9jYWxUaW1lUmVzdWx0LCBpbnB1dFRpbWVUeXBlKS5vZmZzZXQgOiAwOwogCiAgICAgcmV0
dXJuIGxvY2FsVGltZVJlc3VsdCAtIGxvY2FsVG9VVENUaW1lT2Zmc2V0OwpAQCAtMjA4LDE4ICsx
ODksNyBAQCB2b2lkIG1zVG9HcmVnb3JpYW5EYXRlVGltZShWTSYgdm0sIGRvdWJsZSBtcywgV1RG
OjpUaW1lVHlwZSBvdXRwdXRUaW1lVHlwZSwgR3JlZwogICAgICAgICBsb2NhbFRpbWUgPSBsb2Nh
bFRpbWVPZmZzZXQodm0sIG1zKTsKICAgICAgICAgbXMgKz0gbG9jYWxUaW1lLm9mZnNldDsKICAg
ICB9Ci0KLSAgICBjb25zdCBpbnQgeWVhciA9IG1zVG9ZZWFyKG1zKTsKLSAgICB0bS5zZXRTZWNv
bmQobXNUb1NlY29uZHMobXMpKTsKLSAgICB0bS5zZXRNaW51dGUobXNUb01pbnV0ZXMobXMpKTsK
LSAgICB0bS5zZXRIb3VyKG1zVG9Ib3VycyhtcykpOwotICAgIHRtLnNldFdlZWtEYXkobXNUb1dl
ZWtEYXkobXMpKTsKLSAgICB0bS5zZXRZZWFyRGF5KGRheUluWWVhcihtcywgeWVhcikpOwotICAg
IHRtLnNldE1vbnRoRGF5KGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKHRtLnllYXJEYXkoKSwgaXNM
ZWFwWWVhcih5ZWFyKSkpOwotICAgIHRtLnNldE1vbnRoKG1vbnRoRnJvbURheUluWWVhcih0bS55
ZWFyRGF5KCksIGlzTGVhcFllYXIoeWVhcikpKTsKLSAgICB0bS5zZXRZZWFyKHllYXIpOwotICAg
IHRtLnNldElzRFNUKGxvY2FsVGltZS5pc0RTVCk7Ci0gICAgdG0uc2V0VXRjT2Zmc2V0KGxvY2Fs
VGltZS5vZmZzZXQgLyBXVEY6Om1zUGVyU2Vjb25kKTsKKyAgICB0bSA9IEdyZWdvcmlhbkRhdGVU
aW1lKG1zLCBsb2NhbFRpbWUpOwogfQogCiBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5h
dGVkQ2hhcmFjdGVycyhWTSYgdm0sIGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpCkBAIC0yNTQsNyAr
MjI0LDcgQEAgZG91YmxlIHBhcnNlRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIGNvbnN0IFN0cmluZyYgZGF0ZSkKICAgICB9CiAKICAgICBhdXRvIGRhdGVVdGY4ID0g
ZXhwZWN0ZWRTdHJpbmcudmFsdWUoKTsKLSAgICBkb3VibGUgdmFsdWUgPSBwYXJzZUVTNURhdGVG
cm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGRhdGVVdGY4LmRhdGEoKSk7CisgICAgZG91Ymxl
IHZhbHVlID0gV1RGOjpwYXJzZUVTNURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGRh
dGVVdGY4LmRhdGEoKSk7CiAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICB2YWx1
ZSA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnModm0sIGRhdGVVdGY4LmRh
dGEoKSk7CiAgICAgdm0uY2FjaGVkRGF0ZVN0cmluZyA9IGRhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKaW5k
ZXggYzBhYjJlMTM5ODUwYjI1NTU2ZTdkMmVhZDVhM2I3MjBjMTg2NWZiMS4uMGJhY2QxZjgwOWIz
MGQwZmRkN2E2NWU3MTU5MGQ3NmYwZmFkZTNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtMTA5LDE1
ICsxMDksMTMgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMKIAogLyogQ29uc3RhbnRzICovCiAK
LXN0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1heFVuaXhUaW1lID0gMjE0NTg1OTIwMC4wOyAvLyAx
Mi8zMS8yMDM3Ci0vLyBFQ01BU2NyaXB0IGFza3Mgbm90IHRvIHN1cHBvcnQgZm9yIGEgZGF0ZSBv
ZiB3aGljaCB0b3RhbAotLy8gbWlsbGlzZWNvbmQgdmFsdWUgaXMgbGFyZ2VyIHRoYW4gdGhlIGZv
bGxvd2luZyB2YWx1ZS4KLS8vIFNlZSAxNS45LjEuMTQgb2YgRUNNQS0yNjIgNXRoIGVkaXRpb24u
Ci1zdGF0aWMgY29uc3RleHByIGRvdWJsZSBtYXhFQ01BU2NyaXB0VGltZSA9IDguNjRFMTU7Citj
b25zdCBjaGFyKiBjb25zdCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiIsICJUdWUiLCAiV2VkIiwg
IlRodSIsICJGcmkiLCAiU2F0IiwgIlN1biIgfTsKK2NvbnN0IGNoYXIqIGNvbnN0IG1vbnRoTmFt
ZVsxMl0gPSB7ICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsICJKdWwi
LCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIgfTsKK2NvbnN0IGNoYXIqIGNvbnN0
IG1vbnRoRnVsbE5hbWVbMTJdID0geyAiSmFudWFyeSIsICJGZWJydWFyeSIsICJNYXJjaCIsICJB
cHJpbCIsICJNYXkiLCAiSnVuZSIsICJKdWx5IiwgIkF1Z3VzdCIsICJTZXB0ZW1iZXIiLCAiT2N0
b2JlciIsICJOb3ZlbWJlciIsICJEZWNlbWJlciIgfTsKIAogLy8gRGF5IG9mIHllYXIgZm9yIHRo
ZSBmaXJzdCBkYXkgb2YgZWFjaCBtb250aCwgd2hlcmUgaW5kZXggMCBpcyBKYW51YXJ5LCBhbmQg
ZGF5IDAgaXMgSmFudWFyeSAxLgogLy8gRmlyc3QgZm9yIG5vbi1sZWFwIHllYXJzLCB0aGVuIGZv
ciBsZWFwIHllYXJzLgotc3RhdGljIGNvbnN0IGludCBmaXJzdERheU9mTW9udGhbMl1bMTJdID0g
eworY29uc3QgaW50IGZpcnN0RGF5T2ZNb250aFsyXVsxMl0gPSB7CiAgICAgezAsIDMxLCA1OSwg
OTAsIDEyMCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMwNCwgMzM0fSwKICAgICB7MCwgMzEs
IDYwLCA5MSwgMTIxLCAxNTIsIDE4MiwgMjEzLCAyNDQsIDI3NCwgMzA1LCAzMzV9CiB9OwpAQCAt
MTMzLDQ2ICsxMzEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRp
bWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxvY2FsVE0pCiB9CiAjZW5kaWYKIAotYm9vbCBp
c0xlYXBZZWFyKGludCB5ZWFyKQotewotICAgIGlmICh5ZWFyICUgNCAhPSAwKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHllYXIgJSA0MDAgPT0gMCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKHllYXIgJSAxMDAgPT0gMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIGludCBkYXlzSW5ZZWFyKGludCB5ZWFy
KQotewotICAgIHJldHVybiAzNjUgKyBpc0xlYXBZZWFyKHllYXIpOwotfQotCi1zdGF0aWMgaW5s
aW5lIGRvdWJsZSBkYXlzRnJvbTE5NzBUb1llYXIoaW50IHllYXIpCi17Ci0gICAgLy8gVGhlIEdy
ZWdvcmlhbiBDYWxlbmRhciBydWxlcyBmb3IgbGVhcCB5ZWFyczoKLSAgICAvLyBFdmVyeSBmb3Vy
dGggeWVhciBpcyBhIGxlYXAgeWVhci4gIDIwMDQsIDIwMDgsIGFuZCAyMDEyIGFyZSBsZWFwIHll
YXJzLgotICAgIC8vIEhvd2V2ZXIsIGV2ZXJ5IGh1bmRyZWR0aCB5ZWFyIGlzIG5vdCBhIGxlYXAg
eWVhci4gIDE5MDAgYW5kIDIxMDAgYXJlIG5vdCBsZWFwIHllYXJzLgotICAgIC8vIEV2ZXJ5IGZv
dXIgaHVuZHJlZCB5ZWFycywgdGhlcmUncyBhIGxlYXAgeWVhciBhZnRlciBhbGwuICAyMDAwIGFu
ZCAyNDAwIGFyZSBsZWFwIHllYXJzLgotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbGVhcERh
eXNCZWZvcmUxOTcxQnk0UnVsZSA9IDE5NzAgLyA0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IGV4Y2x1ZGVkTGVhcERheXNCZWZvcmUxOTcxQnkxMDBSdWxlID0gMTk3MCAvIDEwMDsKLSAgICBz
dGF0aWMgY29uc3RleHByIGludCBsZWFwRGF5c0JlZm9yZTE5NzFCeTQwMFJ1bGUgPSAxOTcwIC8g
NDAwOwotCi0gICAgY29uc3QgZG91YmxlIHllYXJNaW51c09uZSA9IHllYXIgLSAxOwotICAgIGNv
bnN0IGRvdWJsZSB5ZWFyc1RvQWRkQnk0UnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDQuMCkg
LSBsZWFwRGF5c0JlZm9yZTE5NzFCeTRSdWxlOwotICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvRXhj
bHVkZUJ5MTAwUnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDEwMC4wKSAtIGV4Y2x1ZGVkTGVh
cERheXNCZWZvcmUxOTcxQnkxMDBSdWxlOwotICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvQWRkQnk0
MDBSdWxlID0gZmxvb3IoeWVhck1pbnVzT25lIC8gNDAwLjApIC0gbGVhcERheXNCZWZvcmUxOTcx
Qnk0MDBSdWxlOwotCi0gICAgcmV0dXJuIDM2NS4wICogKHllYXIgLSAxOTcwLjApICsgeWVhcnNU
b0FkZEJ5NFJ1bGUgLSB5ZWFyc1RvRXhjbHVkZUJ5MTAwUnVsZSArIHllYXJzVG9BZGRCeTQwMFJ1
bGU7Ci19Ci0KLWRvdWJsZSBtc1RvRGF5cyhkb3VibGUgbXMpCi17Ci0gICAgcmV0dXJuIGZsb29y
KG1zIC8gbXNQZXJEYXkpOwotfQotCiBzdGF0aWMgdm9pZCBhcHBlbmRUd29EaWdpdE51bWJlcihT
dHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyKQogewogICAgIEFTU0VSVChudW1iZXIg
Pj0gMCk7CkBAIC0xODEsMjIgKzEzOSw2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFR3b0RpZ2l0TnVt
YmVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIpCiAgICAgYnVpbGRlci5hcHBl
bmQoc3RhdGljX2Nhc3Q8TENoYXI+KCcwJyArIG51bWJlciAlIDEwKSk7CiB9CiAKLWludCBtc1Rv
WWVhcihkb3VibGUgbXMpCi17Ci0gICAgaW50IGFwcHJveFllYXIgPSBzdGF0aWNfY2FzdDxpbnQ+
KGZsb29yKG1zIC8gKG1zUGVyRGF5ICogMzY1LjI0MjUpKSArIDE5NzApOwotICAgIGRvdWJsZSBt
c0Zyb21BcHByb3hZZWFyVG8xOTcwID0gbXNQZXJEYXkgKiBkYXlzRnJvbTE5NzBUb1llYXIoYXBw
cm94WWVhcik7Ci0gICAgaWYgKG1zRnJvbUFwcHJveFllYXJUbzE5NzAgPiBtcykKLSAgICAgICAg
cmV0dXJuIGFwcHJveFllYXIgLSAxOwotICAgIGlmIChtc0Zyb21BcHByb3hZZWFyVG8xOTcwICsg
bXNQZXJEYXkgKiBkYXlzSW5ZZWFyKGFwcHJveFllYXIpIDw9IG1zKQotICAgICAgICByZXR1cm4g
YXBwcm94WWVhciArIDE7Ci0gICAgcmV0dXJuIGFwcHJveFllYXI7Ci19Ci0KLWludCBkYXlJblll
YXIoZG91YmxlIG1zLCBpbnQgeWVhcikKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Piht
c1RvRGF5cyhtcykgLSBkYXlzRnJvbTE5NzBUb1llYXIoeWVhcikpOwotfQotCiBzdGF0aWMgaW5s
aW5lIGRvdWJsZSBtc1RvTWlsbGlzZWNvbmRzKGRvdWJsZSBtcykKIHsKICAgICBkb3VibGUgcmVz
dWx0ID0gZm1vZChtcywgbXNQZXJEYXkpOwpAQCAtMjA1LDExMyArMTQ3LDYgQEAgc3RhdGljIGlu
bGluZSBkb3VibGUgbXNUb01pbGxpc2Vjb25kcyhkb3VibGUgbXMpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotaW50IG1zVG9NaW51dGVzKGRvdWJsZSBtcykKLXsKLSAgICBkb3VibGUgcmVzdWx0
ID0gZm1vZChmbG9vcihtcyAvIG1zUGVyTWludXRlKSwgbWludXRlc1BlckhvdXIpOwotICAgIGlm
IChyZXN1bHQgPCAwKQotICAgICAgICByZXN1bHQgKz0gbWludXRlc1BlckhvdXI7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKLX0KLQotaW50IG1zVG9Ib3Vycyhkb3VibGUg
bXMpCi17Ci0gICAgZG91YmxlIHJlc3VsdCA9IGZtb2QoZmxvb3IobXMvbXNQZXJIb3VyKSwgaG91
cnNQZXJEYXkpOwotICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICByZXN1bHQgKz0gaG91cnNQ
ZXJEYXk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKLX0KLQotaW50IG1v
bnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKQotewotICAgIGNv
bnN0IGludCBkID0gZGF5SW5ZZWFyOwotICAgIGludCBzdGVwOwotCi0gICAgaWYgKGQgPCAoc3Rl
cCA9IDMxKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgc3RlcCArPSAobGVhcFllYXIgPyAyOSA6
IDI4KTsKLSAgICBpZiAoZCA8IHN0ZXApCi0gICAgICAgIHJldHVybiAxOwotICAgIGlmIChkIDwg
KHN0ZXAgKz0gMzEpKQotICAgICAgICByZXR1cm4gMjsKLSAgICBpZiAoZCA8IChzdGVwICs9IDMw
KSkKLSAgICAgICAgcmV0dXJuIDM7Ci0gICAgaWYgKGQgPCAoc3RlcCArPSAzMSkpCi0gICAgICAg
IHJldHVybiA0OwotICAgIGlmIChkIDwgKHN0ZXAgKz0gMzApKQotICAgICAgICByZXR1cm4gNTsK
LSAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKLSAgICAgICAgcmV0dXJuIDY7Ci0gICAgaWYgKGQg
PCAoc3RlcCArPSAzMSkpCi0gICAgICAgIHJldHVybiA3OwotICAgIGlmIChkIDwgKHN0ZXAgKz0g
MzApKQotICAgICAgICByZXR1cm4gODsKLSAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKLSAgICAg
ICAgcmV0dXJuIDk7Ci0gICAgaWYgKGQgPCAoc3RlcCArPSAzMCkpCi0gICAgICAgIHJldHVybiAx
MDsKLSAgICByZXR1cm4gMTE7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja01vbnRoKGlu
dCBkYXlJblllYXIsIGludCYgc3RhcnREYXlPZlRoaXNNb250aCwgaW50JiBzdGFydERheU9mTmV4
dE1vbnRoLCBpbnQgZGF5c0luVGhpc01vbnRoKQotewotICAgIHN0YXJ0RGF5T2ZUaGlzTW9udGgg
PSBzdGFydERheU9mTmV4dE1vbnRoOwotICAgIHN0YXJ0RGF5T2ZOZXh0TW9udGggKz0gZGF5c0lu
VGhpc01vbnRoOwotICAgIHJldHVybiAoZGF5SW5ZZWFyIDw9IHN0YXJ0RGF5T2ZOZXh0TW9udGgp
OwotfQotCi1pbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBs
ZWFwWWVhcikKLXsKLSAgICBjb25zdCBpbnQgZCA9IGRheUluWWVhcjsKLSAgICBpbnQgc3RlcDsK
LSAgICBpbnQgbmV4dCA9IDMwOwotCi0gICAgaWYgKGQgPD0gbmV4dCkKLSAgICAgICAgcmV0dXJu
IGQgKyAxOwotICAgIGNvbnN0IGludCBkYXlzSW5GZWIgPSAobGVhcFllYXIgPyAyOSA6IDI4KTsK
LSAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCBkYXlzSW5GZWIpKQotICAgICAgICBy
ZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQot
ICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4
dCwgMzApKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwg
c3RlcCwgbmV4dCwgMzEpKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNr
TW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAg
aWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQotICAgICAgICByZXR1cm4gZCAtIHN0
ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQotICAgICAgICByZXR1
cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQotICAg
ICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwg
MzEpKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3Rl
cCwgbmV4dCwgMzApKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgc3RlcCA9IG5leHQ7
Ci0gICAgcmV0dXJuIGQgLSBzdGVwOwotfQotCi1pbnQgZGF5SW5ZZWFyKGludCB5ZWFyLCBpbnQg
bW9udGgsIGludCBkYXkpCi17Ci0gICAgcmV0dXJuIGZpcnN0RGF5T2ZNb250aFtpc0xlYXBZZWFy
KHllYXIpXVttb250aF0gKyBkYXkgLSAxOwotfQotCi1kb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcw
KGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCi17Ci0gICAgeWVhciArPSBtb250aCAvIDEy
OwotCi0gICAgbW9udGggJT0gMTI7Ci0gICAgaWYgKG1vbnRoIDwgMCkgewotICAgICAgICBtb250
aCArPSAxMjsKLSAgICAgICAgLS15ZWFyOwotICAgIH0KLQotICAgIGRvdWJsZSB5ZWFyZGF5ID0g
Zmxvb3IoZGF5c0Zyb20xOTcwVG9ZZWFyKHllYXIpKTsKLSAgICBBU1NFUlQoKHllYXIgPj0gMTk3
MCAmJiB5ZWFyZGF5ID49IDApIHx8ICh5ZWFyIDwgMTk3MCAmJiB5ZWFyZGF5IDwgMCkpOwotICAg
IHJldHVybiB5ZWFyZGF5ICsgZGF5SW5ZZWFyKHllYXIsIG1vbnRoLCBkYXkpOwotfQotCiAvLyBU
aGVyZSBpcyBhIGhhcmQgbGltaXQgYXQgMjAzOCB0aGF0IHdlIGN1cnJlbnRseSBkbyBub3QgaGF2
ZSBhIHdvcmthcm91bmQKIC8vIGZvciAocmRhcjovL3Byb2JsZW0vNTA1Mjk3NSkuCiBzdGF0aWMg
aW5saW5lIGludCBtYXhpbXVtWWVhckZvckRTVCgpCkBAIC0xMTU5LDEzICs5OTQsNiBAQCBkb3Vi
bGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRl
U3RyaW5nKQogICAgIHJldHVybiBtcyAtIChvZmZzZXQgKiBtc1Blck1pbnV0ZSk7CiB9CiAKLWRv
dWJsZSB0aW1lQ2xpcChkb3VibGUgdCkKLXsKLSAgICBpZiAoc3RkOjphYnModCkgPiBtYXhFQ01B
U2NyaXB0VGltZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCk7Ci0gICAgcmV0dXJuIHN0ZDo6dHJ1bmModCkgKyAwLjA7Ci19Ci0KIC8vIFNl
ZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyODIyI3NlY3Rpb24tMy4zIGZvciBtb3Jl
IGluZm9ybWF0aW9uLgogU3RyaW5nIG1ha2VSRkMyODIyRGF0ZVN0cmluZyh1bnNpZ25lZCBkYXlP
ZldlZWssIHVuc2lnbmVkIGRheSwgdW5zaWduZWQgbW9udGgsIHVuc2lnbmVkIHllYXIsIHVuc2ln
bmVkIGhvdXJzLCB1bnNpZ25lZCBtaW51dGVzLCB1bnNpZ25lZCBzZWNvbmRzLCBpbnQgdXRjT2Zm
c2V0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaCBiL1NvdXJjZS9X
VEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggZjllMjgxMWZiYWM0ZTc3OTg1Zjc2NjU4MDA1MThhNTU2
NDA0NDg1My4uYjBhN2MxM2NmYjQ3NjBiOGU0OTY0MzRmZmVjZDBhY2Q1ZDA2OGNkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRl
TWF0aC5oCkBAIC05Miw3ICs5Miw2IEBAIGludCBlcXVpdmFsZW50WWVhckZvckRTVChpbnQgeWVh
cik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHBhcnNlRVM1RGF0ZUZyb21OdWxsVGVybWlu
YXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hh
ciogZGF0ZVN0cmluZyk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHBhcnNlRGF0ZUZyb21O
dWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaGF2
ZVRaLCBpbnQmIG9mZnNldCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRpbWVDbGlwKGRv
dWJsZSk7CiAvLyBkYXlPZldlZWs6IFswLCA2XSAwIGJlaW5nIE1vbmRheSwgZGF5OiBbMSwgMzFd
LCBtb250aDogWzAsIDExXSwgeWVhcjogZXg6IDIwMTEsIGhvdXJzOiBbMCwgMjNdLCBtaW51dGVz
OiBbMCwgNTldLCBzZWNvbmRzOiBbMCwgNTldLCB1dGNPZmZzZXQ6IFstNzIwLDcyMF0uIAogU3Ry
aW5nIG1ha2VSRkMyODIyRGF0ZVN0cmluZyh1bnNpZ25lZCBkYXlPZldlZWssIHVuc2lnbmVkIGRh
eSwgdW5zaWduZWQgbW9udGgsIHVuc2lnbmVkIHllYXIsIHVuc2lnbmVkIGhvdXJzLCB1bnNpZ25l
ZCBtaW51dGVzLCB1bnNpZ25lZCBzZWNvbmRzLCBpbnQgdXRjT2Zmc2V0KTsKIApAQCAtMTAyLDMz
ICsxMDEsMjc2IEBAIGlubGluZSBkb3VibGUganNDdXJyZW50VGltZSgpCiAgICAgcmV0dXJuIGZs
b29yKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKTsK
IH0KIAotY29uc3QgY2hhciogY29uc3Qgd2Vla2RheU5hbWVbN10gPSB7ICJNb24iLCAiVHVlIiwg
IldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iIH07Ci1jb25zdCBjaGFyKiBjb25zdCBt
b250aE5hbWVbMTJdID0geyAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4i
LCAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiIH07Ci1jb25zdCBjaGFy
KiBjb25zdCBtb250aEZ1bGxOYW1lWzEyXSA9IHsgIkphbnVhcnkiLCAiRmVicnVhcnkiLCAiTWFy
Y2giLCAiQXByaWwiLCAiTWF5IiwgIkp1bmUiLCAiSnVseSIsICJBdWd1c3QiLCAiU2VwdGVtYmVy
IiwgIk9jdG9iZXIiLCAiTm92ZW1iZXIiLCAiRGVjZW1iZXIiIH07CitleHRlcm4gV1RGX0VYUE9S
VF9QUklWQVRFIGNvbnN0IGNoYXIqIGNvbnN0IHdlZWtkYXlOYW1lWzddOworZXh0ZXJuIFdURl9F
WFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBjb25zdCBtb250aE5hbWVbMTJdOworZXh0ZXJuIFdU
Rl9FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBjb25zdCBtb250aEZ1bGxOYW1lWzEyXTsKK2V4
dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgaW50IGZpcnN0RGF5T2ZNb250aFsyXVsxMl07
CiAKLWNvbnN0IGRvdWJsZSBob3Vyc1BlckRheSA9IDI0LjA7Ci1jb25zdCBkb3VibGUgbWludXRl
c1BlckhvdXIgPSA2MC4wOwotY29uc3QgZG91YmxlIHNlY29uZHNQZXJNaW51dGUgPSA2MC4wOwot
Y29uc3QgZG91YmxlIG1zUGVyU2Vjb25kID0gMTAwMC4wOwotY29uc3QgZG91YmxlIG1zUGVyTW9u
dGggPSAyNTkyMDAwMDAwLjA7Ci1jb25zdCBkb3VibGUgc2Vjb25kc1BlckhvdXIgPSBzZWNvbmRz
UGVyTWludXRlICogbWludXRlc1BlckhvdXI7Ci1jb25zdCBkb3VibGUgc2Vjb25kc1BlckRheSA9
IHNlY29uZHNQZXJIb3VyICogaG91cnNQZXJEYXk7Ci1jb25zdCBkb3VibGUgbXNQZXJNaW51dGUg
PSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJNaW51dGU7Ci1jb25zdCBkb3VibGUgbXNQZXJIb3Vy
ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVySG91cjsKLWNvbnN0IGRvdWJsZSBtc1BlckRheSA9
IG1zUGVyU2Vjb25kICogc2Vjb25kc1BlckRheTsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIGhv
dXJzUGVyRGF5ID0gMjQuMDsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1pbnV0ZXNQZXJIb3Vy
ID0gNjAuMDsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIHNlY29uZHNQZXJNaW51dGUgPSA2MC4w
Oworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbXNQZXJTZWNvbmQgPSAxMDAwLjA7CitzdGF0aWMg
Y29uc3RleHByIGRvdWJsZSBtc1Blck1vbnRoID0gMjU5MjAwMDAwMC4wOworc3RhdGljIGNvbnN0
ZXhwciBkb3VibGUgc2Vjb25kc1BlckhvdXIgPSBzZWNvbmRzUGVyTWludXRlICogbWludXRlc1Bl
ckhvdXI7CitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBzZWNvbmRzUGVyRGF5ID0gc2Vjb25kc1Bl
ckhvdXIgKiBob3Vyc1BlckRheTsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1zUGVyTWludXRl
ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVyTWludXRlOworc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUgbXNQZXJIb3VyID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVySG91cjsKK3N0YXRpYyBjb25z
dGV4cHIgZG91YmxlIG1zUGVyRGF5ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVyRGF5OwogCi1X
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0xlYXBZZWFyKGludCB5ZWFyKTsKK3N0YXRpYyBjb25z
dGV4cHIgZG91YmxlIG1heFVuaXhUaW1lID0gMjE0NTg1OTIwMC4wOyAvLyAxMi8zMS8yMDM3Cisv
LyBFQ01BU2NyaXB0IGFza3Mgbm90IHRvIHN1cHBvcnQgZm9yIGEgZGF0ZSBvZiB3aGljaCB0b3Rh
bAorLy8gbWlsbGlzZWNvbmQgdmFsdWUgaXMgbGFyZ2VyIHRoYW4gdGhlIGZvbGxvd2luZyB2YWx1
ZS4KKy8vIFNlZSAxNS45LjEuMTQgb2YgRUNNQS0yNjIgNXRoIGVkaXRpb24uCitzdGF0aWMgY29u
c3RleHByIGRvdWJsZSBtYXhFQ01BU2NyaXB0VGltZSA9IDguNjRFMTU7CisKK2NsYXNzIFRpbWVD
bGlwcGVkTWlsbGlzZWNvbmRzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0
X3QgaG91cnNQZXJEYXkgPSAyNDsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbWludXRl
c1BlckhvdXIgPSA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qgc2Vjb25kc1Blck1p
bnV0ZSA9IDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBtc1BlclNlY29uZCA9IDEw
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IG1zUGVyTW9udGggPSAyNTkyMDAwMDAw
OworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBzZWNvbmRzUGVySG91ciA9IHNlY29uZHNQ
ZXJNaW51dGUgKiBtaW51dGVzUGVySG91cjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qg
c2Vjb25kc1BlckRheSA9IHNlY29uZHNQZXJIb3VyICogaG91cnNQZXJEYXk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQ2NF90IG1zUGVyTWludXRlID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVy
TWludXRlOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBtc1BlckhvdXIgPSBtc1BlclNl
Y29uZCAqIHNlY29uZHNQZXJIb3VyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBtc1Bl
ckRheSA9IG1zUGVyU2Vjb25kICogc2Vjb25kc1BlckRheTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGludDY0X3QgbWF4RUNNQVNjcmlwdFRpbWUgPSA4LjY0RTE1OworCisgICAgZXhwbGljaXQgVGlt
ZUNsaXBwZWRNaWxsaXNlY29uZHMoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZh
bHVlKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQ2NF90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQorICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PGRvdWJsZT4obV92YWx1ZSk7IH0KK3ByaXZhdGU6CisgICAgaW50NjRfdCBtX3ZhbHVlOwor
fTsKKworaW5saW5lIGRvdWJsZSB0aW1lQ2xpcChkb3VibGUgdCkKK3sKKyAgICBpZiAoc3RkOjph
YnModCkgPiBtYXhFQ01BU2NyaXB0VGltZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CisgICAgcmV0dXJuIHN0ZDo6dHJ1bmModCkgKyAw
LjA7Cit9CisKK2lubGluZSBkb3VibGUgZGF5c0Zyb20xOTcwVG9ZZWFyKGludCB5ZWFyKQorewor
ICAgIC8vIFRoZSBHcmVnb3JpYW4gQ2FsZW5kYXIgcnVsZXMgZm9yIGxlYXAgeWVhcnM6CisgICAg
Ly8gRXZlcnkgZm91cnRoIHllYXIgaXMgYSBsZWFwIHllYXIuIDIwMDQsIDIwMDgsIGFuZCAyMDEy
IGFyZSBsZWFwIHllYXJzLgorICAgIC8vIEhvd2V2ZXIsIGV2ZXJ5IGh1bmRyZWR0aCB5ZWFyIGlz
IG5vdCBhIGxlYXAgeWVhci4gMTkwMCBhbmQgMjEwMCBhcmUgbm90IGxlYXAgeWVhcnMuCisgICAg
Ly8gRXZlcnkgZm91ciBodW5kcmVkIHllYXJzLCB0aGVyZSdzIGEgbGVhcCB5ZWFyIGFmdGVyIGFs
bC4gMjAwMCBhbmQgMjQwMCBhcmUgbGVhcCB5ZWFycy4KKworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IGxlYXBEYXlzQmVmb3JlMTk3MUJ5NFJ1bGUgPSAxOTcwIC8gNDsKKyAgICBzdGF0aWMgY29u
c3RleHByIGludCBleGNsdWRlZExlYXBEYXlzQmVmb3JlMTk3MUJ5MTAwUnVsZSA9IDE5NzAgLyAx
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbGVhcERheXNCZWZvcmUxOTcxQnk0MDBSdWxl
ID0gMTk3MCAvIDQwMDsKKworICAgIGNvbnN0IGRvdWJsZSB5ZWFyTWludXNPbmUgPSB5ZWFyIC0g
MTsKKyAgICBjb25zdCBkb3VibGUgeWVhcnNUb0FkZEJ5NFJ1bGUgPSBmbG9vcih5ZWFyTWludXNP
bmUgLyA0LjApIC0gbGVhcERheXNCZWZvcmUxOTcxQnk0UnVsZTsKKyAgICBjb25zdCBkb3VibGUg
eWVhcnNUb0V4Y2x1ZGVCeTEwMFJ1bGUgPSBmbG9vcih5ZWFyTWludXNPbmUgLyAxMDAuMCkgLSBl
eGNsdWRlZExlYXBEYXlzQmVmb3JlMTk3MUJ5MTAwUnVsZTsKKyAgICBjb25zdCBkb3VibGUgeWVh
cnNUb0FkZEJ5NDAwUnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDQwMC4wKSAtIGxlYXBEYXlz
QmVmb3JlMTk3MUJ5NDAwUnVsZTsKKworICAgIHJldHVybiAzNjUuMCAqICh5ZWFyIC0gMTk3MC4w
KSArIHllYXJzVG9BZGRCeTRSdWxlIC0geWVhcnNUb0V4Y2x1ZGVCeTEwMFJ1bGUgKyB5ZWFyc1Rv
QWRkQnk0MDBSdWxlOworfQorCitpbmxpbmUgYm9vbCBpc0xlYXBZZWFyKGludCB5ZWFyKQorewor
ICAgIGlmICh5ZWFyICUgNCAhPSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHll
YXIgJSA0MDAgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHllYXIgJSAxMDAg
PT0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxp
bmUgaW50IGRheXNJblllYXIoaW50IHllYXIpCit7CisgICAgcmV0dXJuIDM2NSArIGlzTGVhcFll
YXIoeWVhcik7Cit9CisKK2lubGluZSBkb3VibGUgbXNUb0RheXMoZG91YmxlIG1zKQoreworICAg
IHJldHVybiBmbG9vcihtcyAvIG1zUGVyRGF5KTsKK30KKworaW5saW5lIGludDY0X3QgbXNUb0Rh
eXMoVGltZUNsaXBwZWRNaWxsaXNlY29uZHMgbXMpCit7CisgICAgcmV0dXJuIG1zLnZhbHVlKCkg
LyBUaW1lQ2xpcHBlZE1pbGxpc2Vjb25kczo6bXNQZXJEYXk7Cit9CisKK2lubGluZSBpbnQgZGF5
SW5ZZWFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCit7CisgICAgcmV0dXJuIGZpcnN0
RGF5T2ZNb250aFtpc0xlYXBZZWFyKHllYXIpXVttb250aF0gKyBkYXkgLSAxOworfQorCitpbmxp
bmUgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KG1zVG9EYXlzKG1zKSAtIGRheXNGcm9tMTk3MFRvWWVhcih5ZWFyKSk7Cit9
CiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGZyb20gMTk3MC0wMS0wMSB0byB0aGUg
c3BlY2lmaWVkIGRhdGUuCi1XVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGRhdGVUb0RheXNGcm9t
MTk3MChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KTsKLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgbXNUb1llYXIoZG91YmxlIG1zKTsKLVdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgbXNUb0Rh
eXMoZG91YmxlIG1zKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgbXNUb01pbnV0ZXMoZG91Ymxl
IG1zKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgbXNUb0hvdXJzKGRvdWJsZSBtcyk7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgaW50IGRheUluWWVhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50IHllYXIp
OwotV1RGX0VYUE9SVF9QUklWQVRFIGludCBtb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVh
ciwgYm9vbCBsZWFwWWVhcik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluTW9udGhGcm9t
RGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOworaW5saW5lIGRvdWJsZSBk
YXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSkKK3sKKyAgICB5
ZWFyICs9IG1vbnRoIC8gMTI7CisKKyAgICBtb250aCAlPSAxMjsKKyAgICBpZiAobW9udGggPCAw
KSB7CisgICAgICAgIG1vbnRoICs9IDEyOworICAgICAgICAtLXllYXI7CisgICAgfQorCisgICAg
ZG91YmxlIHllYXJkYXkgPSBmbG9vcihkYXlzRnJvbTE5NzBUb1llYXIoeWVhcikpOworICAgIEFT
U0VSVCgoeWVhciA+PSAxOTcwICYmIHllYXJkYXkgPj0gMCkgfHwgKHllYXIgPCAxOTcwICYmIHll
YXJkYXkgPCAwKSk7CisgICAgcmV0dXJuIHllYXJkYXkgKyBkYXlJblllYXIoeWVhciwgbW9udGgs
IGRheSk7Cit9CisKK2lubGluZSBpbnQgbXNUb1llYXIoZG91YmxlIG1zKQoreworICAgIGludCBh
cHByb3hZZWFyID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcihtcyAvIChtc1BlckRheSAqIDM2NS4y
NDI1KSkgKyAxOTcwKTsKKyAgICBkb3VibGUgbXNGcm9tQXBwcm94WWVhclRvMTk3MCA9IG1zUGVy
RGF5ICogZGF5c0Zyb20xOTcwVG9ZZWFyKGFwcHJveFllYXIpOworICAgIGlmIChtc0Zyb21BcHBy
b3hZZWFyVG8xOTcwID4gbXMpCisgICAgICAgIHJldHVybiBhcHByb3hZZWFyIC0gMTsKKyAgICBp
ZiAobXNGcm9tQXBwcm94WWVhclRvMTk3MCArIG1zUGVyRGF5ICogZGF5c0luWWVhcihhcHByb3hZ
ZWFyKSA8PSBtcykKKyAgICAgICAgcmV0dXJuIGFwcHJveFllYXIgKyAxOworICAgIHJldHVybiBh
cHByb3hZZWFyOworfQorCitpbmxpbmUgaW50IG1zVG9NaW51dGVzKGRvdWJsZSBtcykKK3sKKyAg
ICBkb3VibGUgcmVzdWx0ID0gZm1vZChmbG9vcihtcyAvIG1zUGVyTWludXRlKSwgbWludXRlc1Bl
ckhvdXIpOworICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXN1bHQgKz0gbWludXRlc1Bl
ckhvdXI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKK30KKworaW5saW5l
IGludCBtc1RvTWludXRlcyhUaW1lQ2xpcHBlZE1pbGxpc2Vjb25kcyBtcykKK3sKKyAgICBpbnQ2
NF90IHJlc3VsdCA9IChtcy52YWx1ZSgpIC8gVGltZUNsaXBwZWRNaWxsaXNlY29uZHM6Om1zUGVy
TWludXRlKSAlIFRpbWVDbGlwcGVkTWlsbGlzZWNvbmRzOjptaW51dGVzUGVySG91cjsKKyAgICBp
ZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmVzdWx0ICs9IFRpbWVDbGlwcGVkTWlsbGlzZWNvbmRz
OjptaW51dGVzUGVySG91cjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOwor
fQorCitpbmxpbmUgaW50IG1zVG9Ib3Vycyhkb3VibGUgbXMpCit7CisgICAgZG91YmxlIHJlc3Vs
dCA9IGZtb2QoZmxvb3IobXMgLyBtc1BlckhvdXIpLCBob3Vyc1BlckRheSk7CisgICAgaWYgKHJl
c3VsdCA8IDApCisgICAgICAgIHJlc3VsdCArPSBob3Vyc1BlckRheTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQpOworfQorCitpbmxpbmUgaW50IG1zVG9Ib3VycyhUaW1lQ2xp
cHBlZE1pbGxpc2Vjb25kcyBtcykKK3sKKyAgICBpbnQ2NF90IHJlc3VsdCA9IChtcy52YWx1ZSgp
IC8gVGltZUNsaXBwZWRNaWxsaXNlY29uZHM6Om1zUGVySG91cikgJSBUaW1lQ2xpcHBlZE1pbGxp
c2Vjb25kczo6aG91cnNQZXJEYXk7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJlc3Vs
dCArPSBob3Vyc1BlckRheTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOwor
fQorCitpbmxpbmUgaW50IG1zVG9TZWNvbmRzKGRvdWJsZSBtcykKK3sKKyAgICBkb3VibGUgcmVz
dWx0ID0gZm1vZChmbG9vcihtcyAvIG1zUGVyU2Vjb25kKSwgc2Vjb25kc1Blck1pbnV0ZSk7Cisg
ICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJlc3VsdCArPSBzZWNvbmRzUGVyTWludXRlOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7Cit9CisKK2lubGluZSBpbnQgbXNU
b1NlY29uZHMoVGltZUNsaXBwZWRNaWxsaXNlY29uZHMgbXMpCit7CisgICAgaW50NjRfdCByZXN1
bHQgPSBtcy52YWx1ZSgpIC8gVGltZUNsaXBwZWRNaWxsaXNlY29uZHM6Om1zUGVyU2Vjb25kICUg
VGltZUNsaXBwZWRNaWxsaXNlY29uZHM6OnNlY29uZHNQZXJNaW51dGU7CisgICAgaWYgKHJlc3Vs
dCA8IDApCisgICAgICAgIHJlc3VsdCArPSBUaW1lQ2xpcHBlZE1pbGxpc2Vjb25kczo6c2Vjb25k
c1Blck1pbnV0ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOworfQorCisv
LyAwOiBTdW5kYXksIDE6IE1vbmRheSwgZXRjLgoraW5saW5lIGludCBtc1RvV2Vla0RheShkb3Vi
bGUgbXMpCit7CisgICAgaW50IHdkID0gKHN0YXRpY19jYXN0PGludD4obXNUb0RheXMobXMpKSAr
IDQpICUgNzsKKyAgICBpZiAod2QgPCAwKQorICAgICAgICB3ZCArPSA3OworICAgIHJldHVybiB3
ZDsKK30KKworaW5saW5lIGludCBtc1RvV2Vla0RheShUaW1lQ2xpcHBlZE1pbGxpc2Vjb25kcyBt
cykKK3sKKyAgICBpbnQgd2QgPSAoc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5cyhtcykpICsgNCkg
JSA3OworICAgIGlmICh3ZCA8IDApCisgICAgICAgIHdkICs9IDc7CisgICAgcmV0dXJuIHdkOwor
fQorCitpbmxpbmUgaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxl
YXBZZWFyKQoreworICAgIGNvbnN0IGludCBkID0gZGF5SW5ZZWFyOworICAgIGludCBzdGVwOwor
CisgICAgaWYgKGQgPCAoc3RlcCA9IDMxKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3RlcCAr
PSAobGVhcFllYXIgPyAyOSA6IDI4KTsKKyAgICBpZiAoZCA8IHN0ZXApCisgICAgICAgIHJldHVy
biAxOworICAgIGlmIChkIDwgKHN0ZXAgKz0gMzEpKQorICAgICAgICByZXR1cm4gMjsKKyAgICBp
ZiAoZCA8IChzdGVwICs9IDMwKSkKKyAgICAgICAgcmV0dXJuIDM7CisgICAgaWYgKGQgPCAoc3Rl
cCArPSAzMSkpCisgICAgICAgIHJldHVybiA0OworICAgIGlmIChkIDwgKHN0ZXAgKz0gMzApKQor
ICAgICAgICByZXR1cm4gNTsKKyAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKKyAgICAgICAgcmV0
dXJuIDY7CisgICAgaWYgKGQgPCAoc3RlcCArPSAzMSkpCisgICAgICAgIHJldHVybiA3OworICAg
IGlmIChkIDwgKHN0ZXAgKz0gMzApKQorICAgICAgICByZXR1cm4gODsKKyAgICBpZiAoZCA8IChz
dGVwICs9IDMxKSkKKyAgICAgICAgcmV0dXJuIDk7CisgICAgaWYgKGQgPCAoc3RlcCArPSAzMCkp
CisgICAgICAgIHJldHVybiAxMDsKKyAgICByZXR1cm4gMTE7Cit9CisKK2lubGluZSBpbnQgZGF5
SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKK3sKKyAg
ICBhdXRvIGNoZWNrTW9udGggPSBbXSAoaW50IGRheUluWWVhciwgaW50JiBzdGFydERheU9mVGhp
c01vbnRoLCBpbnQmIHN0YXJ0RGF5T2ZOZXh0TW9udGgsIGludCBkYXlzSW5UaGlzTW9udGgpIC0+
IGJvb2wgeworICAgICAgICBzdGFydERheU9mVGhpc01vbnRoID0gc3RhcnREYXlPZk5leHRNb250
aDsKKyAgICAgICAgc3RhcnREYXlPZk5leHRNb250aCArPSBkYXlzSW5UaGlzTW9udGg7CisgICAg
ICAgIHJldHVybiAoZGF5SW5ZZWFyIDw9IHN0YXJ0RGF5T2ZOZXh0TW9udGgpOworICAgIH07CisK
KyAgICBjb25zdCBpbnQgZCA9IGRheUluWWVhcjsKKyAgICBpbnQgc3RlcDsKKyAgICBpbnQgbmV4
dCA9IDMwOworCisgICAgaWYgKGQgPD0gbmV4dCkKKyAgICAgICAgcmV0dXJuIGQgKyAxOworICAg
IGNvbnN0IGludCBkYXlzSW5GZWIgPSAobGVhcFllYXIgPyAyOSA6IDI4KTsKKyAgICBpZiAoY2hl
Y2tNb250aChkLCBzdGVwLCBuZXh0LCBkYXlzSW5GZWIpKQorICAgICAgICByZXR1cm4gZCAtIHN0
ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQorICAgICAgICByZXR1
cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQorICAg
ICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwg
MzEpKQorICAgICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3Rl
cCwgbmV4dCwgMzApKQorICAgICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9u
dGgoZCwgc3RlcCwgbmV4dCwgMzEpKQorICAgICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYg
KGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQorICAgICAgICByZXR1cm4gZCAtIHN0ZXA7
CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQorICAgICAgICByZXR1cm4g
ZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQorICAgICAg
ICByZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzAp
KQorICAgICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgc3RlcCA9IG5leHQ7CisgICAgcmV0dXJu
IGQgLSBzdGVwOworfQogCiAvLyBSZXR1cm5zIGNvbWJpbmVkIG9mZnNldCBpbiBtaWxsaXNlY29u
ZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFURSBMb2NhbFRpbWVPZmZzZXQgY2FsY3Vs
YXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1pbGxpc2Vjb25kcywgVGltZVR5cGUgPSBV
VENUaW1lKTsKQEAgLTE1NSwzICszOTcsNSBAQCB1c2luZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxs
VGVybWluYXRlZENoYXJhY3RlcnM7CiB1c2luZyBXVEY6Om1ha2VSRkMyODIyRGF0ZVN0cmluZzsK
IHVzaW5nIFdURjo6TG9jYWxUaW1lT2Zmc2V0OwogdXNpbmcgV1RGOjpjYWxjdWxhdGVMb2NhbFRp
bWVPZmZzZXQ7Cit1c2luZyBXVEY6OnRpbWVDbGlwOwordXNpbmcgV1RGOjpqc0N1cnJlbnRUaW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGIvU291
cmNlL1dURi93dGYvR3JlZ29yaWFuRGF0ZVRpbWUuY3BwCmluZGV4IGEzYzQ0YjkyMWE3MDgzMmMy
NDU3OGVmNGI5MDRkYTIxMjI2ODJmNjQuLjBjZTc3MmU1MWQwZDFjYzAyMWFiM2ZmM2ZkMTlkNWFh
MzUzMTkxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0dyZWdvcmlhbkRhdGVUaW1lLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGltZS5jcHAKQEAgLTM1LDYgKzM1
LDQ5IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitHcmVnb3JpYW5EYXRlVGltZTo6R3JlZ29yaWFu
RGF0ZVRpbWUoZG91YmxlIG1zLCBMb2NhbFRpbWVPZmZzZXQgbG9jYWxUaW1lKQoreworICAgIGlm
IChtcyA+PSAwCisjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4NikKKyAgICAgICAgICAgIC8vIFRo
ZSBWUyBDb21waWxlciBmb3IgMzItYml0IGJ1aWxkcyBnZW5lcmF0ZXMgYSBmbG9hdGluZyBwb2lu
dCBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gY2FzdAorICAgICAgICAgICAgLy8gZnJvbSBhbiBp
bmZpbml0eSB0byBhIDY0LWJpdCBpbnRlZ2VyLiBXZSBsZWF2ZSB0aGlzIHJvdXRpbmUgd2l0aCB0
aGUgZmxvYXRpbmcgcG9pbnQgZXJyb3IKKyAgICAgICAgICAgIC8vIGxlZnQgaW4gYSByZWdpc3Rl
ciwgY2F1c2luZyB1bmRlZmluZWQgYmVoYXZpb3IgaW4gbGF0ZXIgZmxvYXRpbmcgcG9pbnQgb3Bl
cmF0aW9ucy4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIGlz
c3VlLCB3ZSBjaGVjayBmb3IgaW5maW5pdHkgaGVyZSwgYW5kIHJldHVybiBmYWxzZSBpbiB0aGF0
IGNhc2UuCisgICAgICAgICAgICAmJiAhc3RkOjppc2luZihtcykKKyNlbmRpZgorICAgICAgICAp
IHsKKyAgICAgICAgaW50NjRfdCBpbnRlZ2VyID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obXMpOwor
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRlZ2VyKSA9PSBtcyAmJiBpbnRlZ2Vy
IDw9IG1heEVDTUFTY3JpcHRUaW1lKSB7CisgICAgICAgICAgICAvLyBQb3NpdGl2ZSBpbnRlZ2Vy
IGZhc3QgcGF0aC4KKyAgICAgICAgICAgIFdURjo6VGltZUNsaXBwZWRNaWxsaXNlY29uZHMgdGlt
ZUNsaXBwZWQoaW50ZWdlcik7CisgICAgICAgICAgICBjb25zdCBpbnQgeWVhciA9IG1zVG9ZZWFy
KG1zKTsKKyAgICAgICAgICAgIHNldFNlY29uZChtc1RvU2Vjb25kcyh0aW1lQ2xpcHBlZCkpOwor
ICAgICAgICAgICAgc2V0TWludXRlKG1zVG9NaW51dGVzKHRpbWVDbGlwcGVkKSk7CisgICAgICAg
ICAgICBzZXRIb3VyKG1zVG9Ib3Vycyh0aW1lQ2xpcHBlZCkpOworICAgICAgICAgICAgc2V0V2Vl
a0RheShtc1RvV2Vla0RheSh0aW1lQ2xpcHBlZCkpOworICAgICAgICAgICAgc2V0WWVhckRheShk
YXlJblllYXIobXMsIHllYXIpKTsKKyAgICAgICAgICAgIHNldE1vbnRoRGF5KGRheUluTW9udGhG
cm9tRGF5SW5ZZWFyKHllYXJEYXkoKSwgaXNMZWFwWWVhcih5ZWFyKSkpOworICAgICAgICAgICAg
c2V0TW9udGgobW9udGhGcm9tRGF5SW5ZZWFyKHllYXJEYXkoKSwgaXNMZWFwWWVhcih5ZWFyKSkp
OworICAgICAgICAgICAgc2V0WWVhcih5ZWFyKTsKKyAgICAgICAgICAgIHNldElzRFNUKGxvY2Fs
VGltZS5pc0RTVCk7CisgICAgICAgICAgICBzZXRVdGNPZmZzZXQobG9jYWxUaW1lLm9mZnNldCAv
IFdURjo6bXNQZXJTZWNvbmQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorICAgIGNvbnN0IGludCB5ZWFyID0gbXNUb1llYXIobXMpOworICAgIHNldFNlY29uZChtc1Rv
U2Vjb25kcyhtcykpOworICAgIHNldE1pbnV0ZShtc1RvTWludXRlcyhtcykpOworICAgIHNldEhv
dXIobXNUb0hvdXJzKG1zKSk7CisgICAgc2V0V2Vla0RheShtc1RvV2Vla0RheShtcykpOworICAg
IHNldFllYXJEYXkoZGF5SW5ZZWFyKG1zLCB5ZWFyKSk7CisgICAgc2V0TW9udGhEYXkoZGF5SW5N
b250aEZyb21EYXlJblllYXIoeWVhckRheSgpLCBpc0xlYXBZZWFyKHllYXIpKSk7CisgICAgc2V0
TW9udGgobW9udGhGcm9tRGF5SW5ZZWFyKHllYXJEYXkoKSwgaXNMZWFwWWVhcih5ZWFyKSkpOwor
ICAgIHNldFllYXIoeWVhcik7CisgICAgc2V0SXNEU1QobG9jYWxUaW1lLmlzRFNUKTsKKyAgICBz
ZXRVdGNPZmZzZXQobG9jYWxUaW1lLm9mZnNldCAvIFdURjo6bXNQZXJTZWNvbmQpOworfQorCiB2
b2lkIEdyZWdvcmlhbkRhdGVUaW1lOjpzZXRUb0N1cnJlbnRMb2NhbFRpbWUoKQogewogI2lmIE9T
KFdJTkRPV1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGltZS5o
IGIvU291cmNlL1dURi93dGYvR3JlZ29yaWFuRGF0ZVRpbWUuaAppbmRleCAyNWRkMTVjYWUwNGJm
ODI3ZmUxZmZjZTk1Y2U1NzFmODczNjU3NTdmLi5mYjExMzhhNzAwNTQ3M2YyN2FkZjI4MjBmZGI3
M2QzYjk4ZjE0YjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGlt
ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0dyZWdvcmlhbkRhdGVUaW1lLmgKQEAgLTI2LDI3ICsy
NiwxNiBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1
ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIAogY2xhc3MgR3JlZ29yaWFuRGF0ZVRpbWUgZmluYWwgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyZWdvcmlhbkRh
dGVUaW1lKTsKIHB1YmxpYzoKLSAgICBHcmVnb3JpYW5EYXRlVGltZSgpCi0gICAgICAgIDogbV95
ZWFyKDApCi0gICAgICAgICwgbV9tb250aCgwKQotICAgICAgICAsIG1feWVhckRheSgwKQotICAg
ICAgICAsIG1fbW9udGhEYXkoMCkKLSAgICAgICAgLCBtX3dlZWtEYXkoMCkKLSAgICAgICAgLCBt
X2hvdXIoMCkKLSAgICAgICAgLCBtX21pbnV0ZSgwKQotICAgICAgICAsIG1fc2Vjb25kKDApCi0g
ICAgICAgICwgbV91dGNPZmZzZXQoMCkKLSAgICAgICAgLCBtX2lzRFNUKDApCi0gICAgewotICAg
IH0KKyAgICBHcmVnb3JpYW5EYXRlVGltZSgpID0gZGVmYXVsdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgZXhwbGljaXQgR3JlZ29yaWFuRGF0ZVRpbWUoZG91YmxlIG1zLCBMb2NhbFRpbWVPZmZz
ZXQpOwogCiAgICAgaW5saW5lIGludCB5ZWFyKCkgY29uc3QgeyByZXR1cm4gbV95ZWFyOyB9CiAg
ICAgaW5saW5lIGludCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9udGg7IH0KQEAgLTEwOSwx
NiArOTgsMTYgQEAgY2xhc3MgR3JlZ29yaWFuRGF0ZVRpbWUgZmluYWwgewogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBpbnQgbV95ZWFyOwotICAgIGludCBtX21vbnRoOwotICAgIGludCBtX3llYXJE
YXk7Ci0gICAgaW50IG1fbW9udGhEYXk7Ci0gICAgaW50IG1fd2Vla0RheTsKLSAgICBpbnQgbV9o
b3VyOwotICAgIGludCBtX21pbnV0ZTsKLSAgICBpbnQgbV9zZWNvbmQ7Ci0gICAgaW50IG1fdXRj
T2Zmc2V0OwotICAgIGludCBtX2lzRFNUOworICAgIGludCBtX3llYXIgeyAwIH07CisgICAgaW50
IG1fbW9udGggeyAwIH07CisgICAgaW50IG1feWVhckRheSB7IDAgfTsKKyAgICBpbnQgbV9tb250
aERheSB7IDAgfTsKKyAgICBpbnQgbV93ZWVrRGF5IHsgMCB9OworICAgIGludCBtX2hvdXIgeyAw
IH07CisgICAgaW50IG1fbWludXRlIHsgMCB9OworICAgIGludCBtX3NlY29uZCB7IDAgfTsKKyAg
ICBpbnQgbV91dGNPZmZzZXQgeyAwIH07CisgICAgaW50IG1faXNEU1QgeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382268</attachid>
            <date>2019-10-29 20:02:34 -0700</date>
            <delta_ts>2019-10-29 20:09:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203550-20191029200233.patch</filename>
            <type>text/plain</type>
            <size>35830</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YmVkMjQyMGM1ZmI1NWJiYTEzNGYwNjc1NTM1NzFlZjgxNmI1OWRiLi45MDg0NDRiZDc2NjQyMTg1
YTkwYTM0N2U4ODE5NjNmNmMzNWZjZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0xMC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERhdGVNYXRoIHNob3VsZCBoYXZlIFRpbWVDbGlwcGVkIHZlcnNp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzU1
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEwJSBp
bXByb3ZlbWVudCBpbiBkYXRlLWZvcm1hdC14cGFyYi4KKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlZAorCisg
ICAgICAgICAgICBkYXRlLWZvcm1hdC14cGFyYiAgICAgICAgNC45MzExKy0wLjAyNzIgICAgIF4g
ICAgICA0LjQ1NDArLTAuMDI3OSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTA3MXggZmFzdGVyCisK
KyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGlt
ZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdERhdGVUaW1lKToKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5jcHA6CisgICAgICAgICogcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguY3BwOgorICAgICAg
ICAoSlNDOjpsb2NhbFRpbWVPZmZzZXQpOgorICAgICAgICAoSlNDOjp0aW1lVG9NUyk6CisgICAg
ICAgIChKU0M6OmdyZWdvcmlhbkRhdGVUaW1lVG9NUyk6CisgICAgICAgIChKU0M6Om1zVG9HcmVn
b3JpYW5EYXRlVGltZSk6CisgICAgICAgIChKU0M6OnBhcnNlRGF0ZSk6CisgICAgICAgIChKU0M6
Om1zVG9TZWNvbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6bXNUb1dlZWtEYXkpOiBEZWxl
dGVkLgorCiAyMDE5LTEwLTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCB0aGUgUmVtb3RlIFBsYXliYWNrIEFQSS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmEwZThhMzAx
ZjYyMTdkM2NlNjRlOGQxZDMzZjU0OTI3ZDNlYjhhOC4uOWU2NDUxZWEwOGVmNjVkMGM5MzE3ZGIy
NDRjOWQzNTJjZjgwZDAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MyBAQAorMjAxOS0xMC0yOSAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIERhdGVNYXRoIHNo
b3VsZCBoYXZlIFRpbWVDbGlwcGVkIHZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6
aXNMZWFwWWVhcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmRheXNJblllYXIpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpkYXlzRnJvbTE5NzBUb1llYXIpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjptc1RvRGF5cyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om1zVG9ZZWFyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6ZGF5SW5ZZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bXNU
b01pbnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjptc1RvSG91cnMpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjptb250aEZyb21EYXlJblllYXIpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpjaGVja01vbnRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6ZGF5SW5Nb250aEZyb21EYXlJ
blllYXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpkYXRlVG9EYXlzRnJvbTE5NzApOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjp0aW1lQ2xpcCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL0Rh
dGVNYXRoLmg6CisgICAgICAgIChXVEY6OlRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6
OlRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHMpOgorICAgICAgICAoV1RGOjpUaW1lQ2xp
cHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChXVEY6OlRp
bWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6OmFzRG91YmxlIGNvbnN0KToKKyAgICAgICAg
KFdURjo6dGltZUNsaXApOgorICAgICAgICAoV1RGOjpkYXlzRnJvbTE5NzBUb1llYXIpOgorICAg
ICAgICAoV1RGOjppc0xlYXBZZWFyKToKKyAgICAgICAgKFdURjo6ZGF5c0luWWVhcik6CisgICAg
ICAgIChXVEY6Om1zVG9EYXlzKToKKyAgICAgICAgKFdURjo6ZGF5SW5ZZWFyKToKKyAgICAgICAg
KFdURjo6ZGF0ZVRvRGF5c0Zyb20xOTcwKToKKyAgICAgICAgKFdURjo6bXNUb1llYXIpOgorICAg
ICAgICAoV1RGOjptc1RvTWludXRlcyk6CisgICAgICAgIChXVEY6Om1zVG9Ib3Vycyk6CisgICAg
ICAgIChXVEY6Om1zVG9TZWNvbmRzKToKKyAgICAgICAgKFdURjo6bXNUb1dlZWtEYXkpOgorICAg
ICAgICAoV1RGOjptb250aEZyb21EYXlJblllYXIpOgorICAgICAgICAoV1RGOjpkYXlJbk1vbnRo
RnJvbURheUluWWVhcik6CisgICAgICAgICogd3RmL0dyZWdvcmlhbkRhdGVUaW1lLmNwcDoKKyAg
ICAgICAgKFdURjo6R3JlZ29yaWFuRGF0ZVRpbWU6OkdyZWdvcmlhbkRhdGVUaW1lKToKKyAgICAg
ICAgKiB3dGYvR3JlZ29yaWFuRGF0ZVRpbWUuaDoKKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5j
cHA6CisgICAgICAgIChXVEY6OmlzTGVhcFllYXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpk
YXlzSW5ZZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6ZGF5c0Zyb20xOTcwVG9ZZWFyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6bXNUb0RheXMpOiBEZWxldGVkLgorICAgICAgICAoV1RG
Ojptc1RvWWVhcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmRheUluWWVhcik6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6Om1zVG9NaW51dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bXNU
b0hvdXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bW9udGhGcm9tRGF5SW5ZZWFyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6Y2hlY2tNb250aCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OmRheUluTW9udGhGcm9tRGF5SW5ZZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6ZGF0ZVRv
RGF5c0Zyb20xOTcwKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGltZUNsaXApOiBEZWxldGVk
LgorICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorICAgICAgICAoV1RGOjpUaW1lQ2xpcHBlZFBv
c2l0aXZlTWlsbGlzZWNvbmRzOjpUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzKToKKyAg
ICAgICAgKFdURjo6VGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kczo6dmFsdWUgY29uc3Qp
OgorICAgICAgICAoV1RGOjpUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjphc0RvdWJs
ZSBjb25zdCk6CisgICAgICAgIChXVEY6OnRpbWVDbGlwKToKKyAgICAgICAgKFdURjo6ZGF5c0Zy
b20xOTcwVG9ZZWFyKToKKyAgICAgICAgKFdURjo6ZGF5c0Zyb20xOTcwVG9ZZWFyVGltZUNsaXBw
ZWRQb3NpdGl2ZSk6CisgICAgICAgIChXVEY6OmlzTGVhcFllYXIpOgorICAgICAgICAoV1RGOjpk
YXlzSW5ZZWFyKToKKyAgICAgICAgKFdURjo6bXNUb0RheXMpOgorICAgICAgICAoV1RGOjpkYXlJ
blllYXIpOgorICAgICAgICAoV1RGOjpkYXRlVG9EYXlzRnJvbTE5NzApOgorICAgICAgICAoV1RG
Ojptc1RvWWVhcik6CisgICAgICAgIChXVEY6Om1zVG9NaW51dGVzKToKKyAgICAgICAgKFdURjo6
bXNUb0hvdXJzKToKKyAgICAgICAgKFdURjo6bXNUb1NlY29uZHMpOgorICAgICAgICAoV1RGOjpt
c1RvV2Vla0RheSk6CisgICAgICAgIChXVEY6Om1vbnRoRnJvbURheUluWWVhcik6CisgICAgICAg
IChXVEY6OmRheUluTW9udGhGcm9tRGF5SW5ZZWFyKToKKyAgICAgICAgKiB3dGYvR3JlZ29yaWFu
RGF0ZVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpHcmVnb3JpYW5EYXRlVGltZTo6R3JlZ29yaWFu
RGF0ZVRpbWUpOgorICAgICAgICAqIHd0Zi9HcmVnb3JpYW5EYXRlVGltZS5oOgorCiAyMDE5LTEw
LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
QWRkIGZhc3QgcGF0aCBmb3IgU3RyaW5nI2xvY2FsZUNvbXBhcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IDlkN2YxMDRiYmJk
MTU1NDEyYmRkMGEyODMxYmJhZDEyNjRkNjQ4YTIuLjJjZjg3ZTg2OWYwZjNjMjg3ZTJhMDBiZmVk
ZjE0ZmQxMGEzNmIxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtNTUsOCArNTUsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVOb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KIGNvbnN0IENsYXNzSW5mbyBEYXRl
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNf
aW5mbywgJmRhdGVDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KERhdGVDb25zdHJ1Y3RvcikgfTsKIAogLyogU291cmNlIGZvciBEYXRlQ29uc3RydWN0b3IubHV0
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJz
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNw
cAppbmRleCBhZTlmNGUwY2E3Y2NiMDJmYWI0MmJmYzJlMjY0OWIwMmJhOGVkOTRhLi5lNTA3MjY0
NjBiMGM0MzIxZjdiMzk1NDIzYjdlOGFlZDMwMjc5ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0zNiw4ICszNiw2IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi11c2luZyBuYW1lc3BhY2UgV1RGOwotCiB0ZW1wbGF0ZTxpbnQg
d2lkdGg+CiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kTnVtYmVyKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGludCB2YWx1ZSkKIHsKQEAgLTY4LDE2ICs2NiwxNiBAQCBTdHJpbmcgZm9ybWF0RGF0
ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwg
Ym9vbCBhcwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAogICAgIGlmIChhcHBlbmREYXRl
KSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdlZWtkYXlOYW1lWyh0LndlZWtEYXkoKSArIDYp
ICUgN10pOworICAgICAgICBidWlsZGVyLmFwcGVuZChXVEY6OndlZWtkYXlOYW1lWyh0LndlZWtE
YXkoKSArIDYpICUgN10pOwogCiAgICAgICAgIGlmIChhc1VUQ1ZhcmlhbnQpIHsKICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgICAgIGFwcGVuZE51bWJl
cjwyPihidWlsZGVyLCB0Lm1vbnRoRGF5KCkpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1vbnRoTmFtZVt0Lm1vbnRoKCldKTsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURjo6bW9udGhOYW1lW3QubW9udGgoKV0pOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1vbnRoTmFtZVt0Lm1vbnRoKCldKTsKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKFdURjo6bW9udGhOYW1lW3QubW9udGgoKV0pOwogICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVy
LCB0Lm1vbnRoRGF5KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAppbmRleCA3YjRlNDVjZWE0MTk5YTE4NzIzNzkxNDFjZDVl
MjJlMTc2ZDM0ZTQ3Li40ODNkMTNmYzc2ODQ2MGZkNjQ4ZDU4MGY5ZTdhMjkzODhjOWUzMTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAKQEAg
LTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7
Ci0KIGNvbnN0IENsYXNzSW5mbyBEYXRlSW5zdGFuY2U6OnNfaW5mbyA9IHsiRGF0ZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRGF0ZUluc3Rh
bmNlKX07CiAKIERhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwCmluZGV4IDIzOWU5MzJlZWRjNGZhZDUwN2JlYTE4MzRmN2Q0OTc1ZTY5ZjEyY2UuLmNi
YTJjOTgzZTkxOTA5ZWEyMzg5NzVhMDk3YmY2ZDBhZWUyNWRmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC02OSw4ICs2OSw2IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi11c2luZyBuYW1lc3BhY2UgV1RGOwotCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXREYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVN
YXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmlu
ZGV4IDc5OTZhOGY4YWU3MGVmMGM1NGRmYmIyOGQzMDZjMTlmYmM1YWFmMjEuLjY0ODI2YWI5NmI1
ZGIyMzBiZTI3NDRhMDU3YmRjODg4ZTQ3OTQyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBAIC0xMDAsMzAgKzEwMCw2IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi11c2luZyBuYW1lc3BhY2UgV1RGOwotCi1zdGF0aWMgaW5saW5lIGRvdWJsZSB0
aW1lVG9NUyhkb3VibGUgaG91ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1zKQot
ewotICAgIHJldHVybiAoKChob3VyICogbWludXRlc1BlckhvdXIgKyBtaW4pICogc2Vjb25kc1Bl
ck1pbnV0ZSArIHNlYykgKiBtc1BlclNlY29uZCArIG1zKTsKLX0KLQotc3RhdGljIGlubGluZSBp
bnQgbXNUb1NlY29uZHMoZG91YmxlIG1zKQotewotICAgIGRvdWJsZSByZXN1bHQgPSBmbW9kKGZs
b29yKG1zIC8gbXNQZXJTZWNvbmQpLCBzZWNvbmRzUGVyTWludXRlKTsKLSAgICBpZiAocmVzdWx0
IDwgMCkKLSAgICAgICAgcmVzdWx0ICs9IHNlY29uZHNQZXJNaW51dGU7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4ocmVzdWx0KTsKLX0KLQotLy8gMDogU3VuZGF5LCAxOiBNb25kYXksIGV0
Yy4KLXN0YXRpYyBpbmxpbmUgaW50IG1zVG9XZWVrRGF5KGRvdWJsZSBtcykKLXsKLSAgICBpbnQg
d2QgPSAoc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5cyhtcykpICsgNCkgJSA3OwotICAgIGlmICh3
ZCA8IDApCi0gICAgICAgIHdkICs9IDc7Ci0gICAgcmV0dXJuIHdkOwotfQotCiAvLyBHZXQgdGhl
IGNvbWJpbmVkIFVUQyArIERTVCBvZmZzZXQgZm9yIHRoZSB0aW1lIHBhc3NlZCBpbi4KIC8vCiAv
LyBOT1RFOiBUaGUgaW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgbm8gdGlt
ZSB6b25lcyBoYXZlCkBAIC0xNTIsNyArMTI4LDcgQEAgc3RhdGljIExvY2FsVGltZU9mZnNldCBs
b2NhbFRpbWVPZmZzZXQoVk0mIHZtLCBkb3VibGUgbXMsIFdURjo6VGltZVR5cGUgaW5wdXRUaW0K
ICAgICAgICAgICAgICAgICAvLyB0aGUgb2Zmc2V0IGluIHRoZSBjYWNoZSwgd2UgZ3JvdyB0aGUg
Y2FjaGVkIHRpbWUgaW50ZXJ2YWwKICAgICAgICAgICAgICAgICAvLyBhbmQgcmV0dXJuIHRoZSBv
ZmZzZXQuCiAgICAgICAgICAgICAgICAgY2FjaGUuZW5kID0gbmV3RW5kOwotICAgICAgICAgICAg
ICAgIGNhY2hlLmluY3JlbWVudCA9IG1zUGVyTW9udGg7CisgICAgICAgICAgICAgICAgY2FjaGUu
aW5jcmVtZW50ID0gV1RGOjptc1Blck1vbnRoOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmRP
ZmZzZXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBMb2NhbFRpbWVPZmZzZXQgb2Zmc2V0
ID0gY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KG1zLCBpbnB1dFRpbWVUeXBlKTsKQEAgLTE2Myw3
ICsxMzksNyBAQCBzdGF0aWMgTG9jYWxUaW1lT2Zmc2V0IGxvY2FsVGltZU9mZnNldChWTSYgdm0s
IGRvdWJsZSBtcywgV1RGOjpUaW1lVHlwZSBpbnB1dFRpbQogICAgICAgICAgICAgICAgIC8vIHRo
ZSBpbnRlcnZhbCB0byByZWZsZWN0IHRoaXMgYW5kIHJlc2V0IHRoZSBpbmNyZW1lbnQuCiAgICAg
ICAgICAgICAgICAgY2FjaGUuc3RhcnQgPSBtczsKICAgICAgICAgICAgICAgICBjYWNoZS5lbmQg
PSBuZXdFbmQ7Ci0gICAgICAgICAgICAgICAgY2FjaGUuaW5jcmVtZW50ID0gbXNQZXJNb250aDsK
KyAgICAgICAgICAgICAgICBjYWNoZS5pbmNyZW1lbnQgPSBXVEY6Om1zUGVyTW9udGg7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFRoZSBpbnRlcnZhbCBjb250YWlu
cyBhIERTVCBvZmZzZXQgY2hhbmdlIGFuZCB0aGUgZ2l2ZW4gdGltZSBpcwogICAgICAgICAgICAg
ICAgIC8vIGJlZm9yZSBpdC4gQWRqdXN0IHRoZSBpbmNyZW1lbnQgdG8gYXZvaWQgYSBsaW5lYXIg
c2VhcmNoIGZvcgpAQCAtMTg0LDE3ICsxNjAsMjIgQEAgc3RhdGljIExvY2FsVGltZU9mZnNldCBs
b2NhbFRpbWVPZmZzZXQoVk0mIHZtLCBkb3VibGUgbXMsIFdURjo6VGltZVR5cGUgaW5wdXRUaW0K
ICAgICBjYWNoZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgY2FjaGUuc3RhcnQgPSBtczsKICAgICBj
YWNoZS5lbmQgPSBtczsKLSAgICBjYWNoZS5pbmNyZW1lbnQgPSBtc1Blck1vbnRoOworICAgIGNh
Y2hlLmluY3JlbWVudCA9IFdURjo6bXNQZXJNb250aDsKICAgICByZXR1cm4gb2Zmc2V0OwogfQog
CitzdGF0aWMgaW5saW5lIGRvdWJsZSB0aW1lVG9NUyhkb3VibGUgaG91ciwgZG91YmxlIG1pbiwg
ZG91YmxlIHNlYywgZG91YmxlIG1zKQoreworICAgIHJldHVybiAoKChob3VyICogV1RGOjptaW51
dGVzUGVySG91ciArIG1pbikgKiBXVEY6OnNlY29uZHNQZXJNaW51dGUgKyBzZWMpICogV1RGOjpt
c1BlclNlY29uZCArIG1zKTsKK30KKwogZG91YmxlIGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhWTSYg
dm0sIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBkb3VibGUgbWlsbGlTZWNvbmRzLCBXVEY6
OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CiAgICAgZG91YmxlIGRheSA9IGRhdGVUb0RheXNG
cm9tMTk3MCh0LnllYXIoKSwgdC5tb250aCgpLCB0Lm1vbnRoRGF5KCkpOwogICAgIGRvdWJsZSBt
cyA9IHRpbWVUb01TKHQuaG91cigpLCB0Lm1pbnV0ZSgpLCB0LnNlY29uZCgpLCBtaWxsaVNlY29u
ZHMpOwogICAgIGRvdWJsZSBsb2NhbFRpbWVSZXN1bHQgPSAoZGF5ICogV1RGOjptc1BlckRheSkg
KyBtczsKIAotICAgIGRvdWJsZSBsb2NhbFRvVVRDVGltZU9mZnNldCA9IGlucHV0VGltZVR5cGUg
PT0gTG9jYWxUaW1lCisgICAgZG91YmxlIGxvY2FsVG9VVENUaW1lT2Zmc2V0ID0gaW5wdXRUaW1l
VHlwZSA9PSBXVEY6OkxvY2FsVGltZQogICAgICAgICA/IGxvY2FsVGltZU9mZnNldCh2bSwgbG9j
YWxUaW1lUmVzdWx0LCBpbnB1dFRpbWVUeXBlKS5vZmZzZXQgOiAwOwogCiAgICAgcmV0dXJuIGxv
Y2FsVGltZVJlc3VsdCAtIGxvY2FsVG9VVENUaW1lT2Zmc2V0OwpAQCAtMjA4LDE4ICsxODksNyBA
QCB2b2lkIG1zVG9HcmVnb3JpYW5EYXRlVGltZShWTSYgdm0sIGRvdWJsZSBtcywgV1RGOjpUaW1l
VHlwZSBvdXRwdXRUaW1lVHlwZSwgR3JlZwogICAgICAgICBsb2NhbFRpbWUgPSBsb2NhbFRpbWVP
ZmZzZXQodm0sIG1zKTsKICAgICAgICAgbXMgKz0gbG9jYWxUaW1lLm9mZnNldDsKICAgICB9Ci0K
LSAgICBjb25zdCBpbnQgeWVhciA9IG1zVG9ZZWFyKG1zKTsKLSAgICB0bS5zZXRTZWNvbmQobXNU
b1NlY29uZHMobXMpKTsKLSAgICB0bS5zZXRNaW51dGUobXNUb01pbnV0ZXMobXMpKTsKLSAgICB0
bS5zZXRIb3VyKG1zVG9Ib3VycyhtcykpOwotICAgIHRtLnNldFdlZWtEYXkobXNUb1dlZWtEYXko
bXMpKTsKLSAgICB0bS5zZXRZZWFyRGF5KGRheUluWWVhcihtcywgeWVhcikpOwotICAgIHRtLnNl
dE1vbnRoRGF5KGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKHRtLnllYXJEYXkoKSwgaXNMZWFwWWVh
cih5ZWFyKSkpOwotICAgIHRtLnNldE1vbnRoKG1vbnRoRnJvbURheUluWWVhcih0bS55ZWFyRGF5
KCksIGlzTGVhcFllYXIoeWVhcikpKTsKLSAgICB0bS5zZXRZZWFyKHllYXIpOwotICAgIHRtLnNl
dElzRFNUKGxvY2FsVGltZS5pc0RTVCk7Ci0gICAgdG0uc2V0VXRjT2Zmc2V0KGxvY2FsVGltZS5v
ZmZzZXQgLyBXVEY6Om1zUGVyU2Vjb25kKTsKKyAgICB0bSA9IEdyZWdvcmlhbkRhdGVUaW1lKG1z
LCBsb2NhbFRpbWUpOwogfQogCiBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hh
cmFjdGVycyhWTSYgdm0sIGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpCkBAIC0yNTQsNyArMjI0LDcg
QEAgZG91YmxlIHBhcnNlRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0s
IGNvbnN0IFN0cmluZyYgZGF0ZSkKICAgICB9CiAKICAgICBhdXRvIGRhdGVVdGY4ID0gZXhwZWN0
ZWRTdHJpbmcudmFsdWUoKTsKLSAgICBkb3VibGUgdmFsdWUgPSBwYXJzZUVTNURhdGVGcm9tTnVs
bFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGRhdGVVdGY4LmRhdGEoKSk7CisgICAgZG91YmxlIHZhbHVl
ID0gV1RGOjpwYXJzZUVTNURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGRhdGVVdGY4
LmRhdGEoKSk7CiAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICB2YWx1ZSA9IHBh
cnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnModm0sIGRhdGVVdGY4LmRhdGEoKSk7
CiAgICAgdm0uY2FjaGVkRGF0ZVN0cmluZyA9IGRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggYzBh
YjJlMTM5ODUwYjI1NTU2ZTdkMmVhZDVhM2I3MjBjMTg2NWZiMS4uMGJhY2QxZjgwOWIzMGQwZmRk
N2E2NWU3MTU5MGQ3NmYwZmFkZTNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1h
dGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtMTA5LDE1ICsxMDks
MTMgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMKIAogLyogQ29uc3RhbnRzICovCiAKLXN0YXRp
YyBjb25zdGV4cHIgZG91YmxlIG1heFVuaXhUaW1lID0gMjE0NTg1OTIwMC4wOyAvLyAxMi8zMS8y
MDM3Ci0vLyBFQ01BU2NyaXB0IGFza3Mgbm90IHRvIHN1cHBvcnQgZm9yIGEgZGF0ZSBvZiB3aGlj
aCB0b3RhbAotLy8gbWlsbGlzZWNvbmQgdmFsdWUgaXMgbGFyZ2VyIHRoYW4gdGhlIGZvbGxvd2lu
ZyB2YWx1ZS4KLS8vIFNlZSAxNS45LjEuMTQgb2YgRUNNQS0yNjIgNXRoIGVkaXRpb24uCi1zdGF0
aWMgY29uc3RleHByIGRvdWJsZSBtYXhFQ01BU2NyaXB0VGltZSA9IDguNjRFMTU7Citjb25zdCBj
aGFyKiBjb25zdCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIs
ICJGcmkiLCAiU2F0IiwgIlN1biIgfTsKK2NvbnN0IGNoYXIqIGNvbnN0IG1vbnRoTmFtZVsxMl0g
PSB7ICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsICJKdWwiLCAiQXVn
IiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIgfTsKK2NvbnN0IGNoYXIqIGNvbnN0IG1vbnRo
RnVsbE5hbWVbMTJdID0geyAiSmFudWFyeSIsICJGZWJydWFyeSIsICJNYXJjaCIsICJBcHJpbCIs
ICJNYXkiLCAiSnVuZSIsICJKdWx5IiwgIkF1Z3VzdCIsICJTZXB0ZW1iZXIiLCAiT2N0b2JlciIs
ICJOb3ZlbWJlciIsICJEZWNlbWJlciIgfTsKIAogLy8gRGF5IG9mIHllYXIgZm9yIHRoZSBmaXJz
dCBkYXkgb2YgZWFjaCBtb250aCwgd2hlcmUgaW5kZXggMCBpcyBKYW51YXJ5LCBhbmQgZGF5IDAg
aXMgSmFudWFyeSAxLgogLy8gRmlyc3QgZm9yIG5vbi1sZWFwIHllYXJzLCB0aGVuIGZvciBsZWFw
IHllYXJzLgotc3RhdGljIGNvbnN0IGludCBmaXJzdERheU9mTW9udGhbMl1bMTJdID0geworY29u
c3QgaW50IGZpcnN0RGF5T2ZNb250aFsyXVsxMl0gPSB7CiAgICAgezAsIDMxLCA1OSwgOTAsIDEy
MCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMwNCwgMzM0fSwKICAgICB7MCwgMzEsIDYwLCA5
MSwgMTIxLCAxNTIsIDE4MiwgMjEzLCAyNDQsIDI3NCwgMzA1LCAzMzV9CiB9OwpAQCAtMTMzLDQ2
ICsxMzEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCog
bG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxvY2FsVE0pCiB9CiAjZW5kaWYKIAotYm9vbCBpc0xlYXBZ
ZWFyKGludCB5ZWFyKQotewotICAgIGlmICh5ZWFyICUgNCAhPSAwKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKHllYXIgJSA0MDAgPT0gMCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKHllYXIgJSAxMDAgPT0gMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIGludCBkYXlzSW5ZZWFyKGludCB5ZWFyKQotewot
ICAgIHJldHVybiAzNjUgKyBpc0xlYXBZZWFyKHllYXIpOwotfQotCi1zdGF0aWMgaW5saW5lIGRv
dWJsZSBkYXlzRnJvbTE5NzBUb1llYXIoaW50IHllYXIpCi17Ci0gICAgLy8gVGhlIEdyZWdvcmlh
biBDYWxlbmRhciBydWxlcyBmb3IgbGVhcCB5ZWFyczoKLSAgICAvLyBFdmVyeSBmb3VydGggeWVh
ciBpcyBhIGxlYXAgeWVhci4gIDIwMDQsIDIwMDgsIGFuZCAyMDEyIGFyZSBsZWFwIHllYXJzLgot
ICAgIC8vIEhvd2V2ZXIsIGV2ZXJ5IGh1bmRyZWR0aCB5ZWFyIGlzIG5vdCBhIGxlYXAgeWVhci4g
IDE5MDAgYW5kIDIxMDAgYXJlIG5vdCBsZWFwIHllYXJzLgotICAgIC8vIEV2ZXJ5IGZvdXIgaHVu
ZHJlZCB5ZWFycywgdGhlcmUncyBhIGxlYXAgeWVhciBhZnRlciBhbGwuICAyMDAwIGFuZCAyNDAw
IGFyZSBsZWFwIHllYXJzLgotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbGVhcERheXNCZWZv
cmUxOTcxQnk0UnVsZSA9IDE5NzAgLyA0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGV4Y2x1
ZGVkTGVhcERheXNCZWZvcmUxOTcxQnkxMDBSdWxlID0gMTk3MCAvIDEwMDsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGludCBsZWFwRGF5c0JlZm9yZTE5NzFCeTQwMFJ1bGUgPSAxOTcwIC8gNDAwOwot
Ci0gICAgY29uc3QgZG91YmxlIHllYXJNaW51c09uZSA9IHllYXIgLSAxOwotICAgIGNvbnN0IGRv
dWJsZSB5ZWFyc1RvQWRkQnk0UnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDQuMCkgLSBsZWFw
RGF5c0JlZm9yZTE5NzFCeTRSdWxlOwotICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvRXhjbHVkZUJ5
MTAwUnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDEwMC4wKSAtIGV4Y2x1ZGVkTGVhcERheXNC
ZWZvcmUxOTcxQnkxMDBSdWxlOwotICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvQWRkQnk0MDBSdWxl
ID0gZmxvb3IoeWVhck1pbnVzT25lIC8gNDAwLjApIC0gbGVhcERheXNCZWZvcmUxOTcxQnk0MDBS
dWxlOwotCi0gICAgcmV0dXJuIDM2NS4wICogKHllYXIgLSAxOTcwLjApICsgeWVhcnNUb0FkZEJ5
NFJ1bGUgLSB5ZWFyc1RvRXhjbHVkZUJ5MTAwUnVsZSArIHllYXJzVG9BZGRCeTQwMFJ1bGU7Ci19
Ci0KLWRvdWJsZSBtc1RvRGF5cyhkb3VibGUgbXMpCi17Ci0gICAgcmV0dXJuIGZsb29yKG1zIC8g
bXNQZXJEYXkpOwotfQotCiBzdGF0aWMgdm9pZCBhcHBlbmRUd29EaWdpdE51bWJlcihTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyKQogewogICAgIEFTU0VSVChudW1iZXIgPj0gMCk7
CkBAIC0xODEsMjIgKzEzOSw2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFR3b0RpZ2l0TnVtYmVyKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIpCiAgICAgYnVpbGRlci5hcHBlbmQoc3Rh
dGljX2Nhc3Q8TENoYXI+KCcwJyArIG51bWJlciAlIDEwKSk7CiB9CiAKLWludCBtc1RvWWVhcihk
b3VibGUgbXMpCi17Ci0gICAgaW50IGFwcHJveFllYXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29y
KG1zIC8gKG1zUGVyRGF5ICogMzY1LjI0MjUpKSArIDE5NzApOwotICAgIGRvdWJsZSBtc0Zyb21B
cHByb3hZZWFyVG8xOTcwID0gbXNQZXJEYXkgKiBkYXlzRnJvbTE5NzBUb1llYXIoYXBwcm94WWVh
cik7Ci0gICAgaWYgKG1zRnJvbUFwcHJveFllYXJUbzE5NzAgPiBtcykKLSAgICAgICAgcmV0dXJu
IGFwcHJveFllYXIgLSAxOwotICAgIGlmIChtc0Zyb21BcHByb3hZZWFyVG8xOTcwICsgbXNQZXJE
YXkgKiBkYXlzSW5ZZWFyKGFwcHJveFllYXIpIDw9IG1zKQotICAgICAgICByZXR1cm4gYXBwcm94
WWVhciArIDE7Ci0gICAgcmV0dXJuIGFwcHJveFllYXI7Ci19Ci0KLWludCBkYXlJblllYXIoZG91
YmxlIG1zLCBpbnQgeWVhcikKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5
cyhtcykgLSBkYXlzRnJvbTE5NzBUb1llYXIoeWVhcikpOwotfQotCiBzdGF0aWMgaW5saW5lIGRv
dWJsZSBtc1RvTWlsbGlzZWNvbmRzKGRvdWJsZSBtcykKIHsKICAgICBkb3VibGUgcmVzdWx0ID0g
Zm1vZChtcywgbXNQZXJEYXkpOwpAQCAtMjA1LDExMyArMTQ3LDYgQEAgc3RhdGljIGlubGluZSBk
b3VibGUgbXNUb01pbGxpc2Vjb25kcyhkb3VibGUgbXMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotaW50IG1zVG9NaW51dGVzKGRvdWJsZSBtcykKLXsKLSAgICBkb3VibGUgcmVzdWx0ID0gZm1v
ZChmbG9vcihtcyAvIG1zUGVyTWludXRlKSwgbWludXRlc1BlckhvdXIpOwotICAgIGlmIChyZXN1
bHQgPCAwKQotICAgICAgICByZXN1bHQgKz0gbWludXRlc1BlckhvdXI7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4ocmVzdWx0KTsKLX0KLQotaW50IG1zVG9Ib3Vycyhkb3VibGUgbXMpCi17
Ci0gICAgZG91YmxlIHJlc3VsdCA9IGZtb2QoZmxvb3IobXMvbXNQZXJIb3VyKSwgaG91cnNQZXJE
YXkpOwotICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICByZXN1bHQgKz0gaG91cnNQZXJEYXk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKLX0KLQotaW50IG1vbnRoRnJv
bURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKQotewotICAgIGNvbnN0IGlu
dCBkID0gZGF5SW5ZZWFyOwotICAgIGludCBzdGVwOwotCi0gICAgaWYgKGQgPCAoc3RlcCA9IDMx
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgc3RlcCArPSAobGVhcFllYXIgPyAyOSA6IDI4KTsK
LSAgICBpZiAoZCA8IHN0ZXApCi0gICAgICAgIHJldHVybiAxOwotICAgIGlmIChkIDwgKHN0ZXAg
Kz0gMzEpKQotICAgICAgICByZXR1cm4gMjsKLSAgICBpZiAoZCA8IChzdGVwICs9IDMwKSkKLSAg
ICAgICAgcmV0dXJuIDM7Ci0gICAgaWYgKGQgPCAoc3RlcCArPSAzMSkpCi0gICAgICAgIHJldHVy
biA0OwotICAgIGlmIChkIDwgKHN0ZXAgKz0gMzApKQotICAgICAgICByZXR1cm4gNTsKLSAgICBp
ZiAoZCA8IChzdGVwICs9IDMxKSkKLSAgICAgICAgcmV0dXJuIDY7Ci0gICAgaWYgKGQgPCAoc3Rl
cCArPSAzMSkpCi0gICAgICAgIHJldHVybiA3OwotICAgIGlmIChkIDwgKHN0ZXAgKz0gMzApKQot
ICAgICAgICByZXR1cm4gODsKLSAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKLSAgICAgICAgcmV0
dXJuIDk7Ci0gICAgaWYgKGQgPCAoc3RlcCArPSAzMCkpCi0gICAgICAgIHJldHVybiAxMDsKLSAg
ICByZXR1cm4gMTE7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja01vbnRoKGludCBkYXlJ
blllYXIsIGludCYgc3RhcnREYXlPZlRoaXNNb250aCwgaW50JiBzdGFydERheU9mTmV4dE1vbnRo
LCBpbnQgZGF5c0luVGhpc01vbnRoKQotewotICAgIHN0YXJ0RGF5T2ZUaGlzTW9udGggPSBzdGFy
dERheU9mTmV4dE1vbnRoOwotICAgIHN0YXJ0RGF5T2ZOZXh0TW9udGggKz0gZGF5c0luVGhpc01v
bnRoOwotICAgIHJldHVybiAoZGF5SW5ZZWFyIDw9IHN0YXJ0RGF5T2ZOZXh0TW9udGgpOwotfQot
Ci1pbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVh
cikKLXsKLSAgICBjb25zdCBpbnQgZCA9IGRheUluWWVhcjsKLSAgICBpbnQgc3RlcDsKLSAgICBp
bnQgbmV4dCA9IDMwOwotCi0gICAgaWYgKGQgPD0gbmV4dCkKLSAgICAgICAgcmV0dXJuIGQgKyAx
OwotICAgIGNvbnN0IGludCBkYXlzSW5GZWIgPSAobGVhcFllYXIgPyAyOSA6IDI4KTsKLSAgICBp
ZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCBkYXlzSW5GZWIpKQotICAgICAgICByZXR1cm4g
ZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQotICAgICAg
ICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzAp
KQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwg
bmV4dCwgMzEpKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgo
ZCwgc3RlcCwgbmV4dCwgMzApKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNo
ZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0g
ICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQotICAgICAgICByZXR1cm4gZCAt
IHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQotICAgICAgICBy
ZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQot
ICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4
dCwgMzApKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgc3RlcCA9IG5leHQ7Ci0gICAg
cmV0dXJuIGQgLSBzdGVwOwotfQotCi1pbnQgZGF5SW5ZZWFyKGludCB5ZWFyLCBpbnQgbW9udGgs
IGludCBkYXkpCi17Ci0gICAgcmV0dXJuIGZpcnN0RGF5T2ZNb250aFtpc0xlYXBZZWFyKHllYXIp
XVttb250aF0gKyBkYXkgLSAxOwotfQotCi1kb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5
ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCi17Ci0gICAgeWVhciArPSBtb250aCAvIDEyOwotCi0g
ICAgbW9udGggJT0gMTI7Ci0gICAgaWYgKG1vbnRoIDwgMCkgewotICAgICAgICBtb250aCArPSAx
MjsKLSAgICAgICAgLS15ZWFyOwotICAgIH0KLQotICAgIGRvdWJsZSB5ZWFyZGF5ID0gZmxvb3Io
ZGF5c0Zyb20xOTcwVG9ZZWFyKHllYXIpKTsKLSAgICBBU1NFUlQoKHllYXIgPj0gMTk3MCAmJiB5
ZWFyZGF5ID49IDApIHx8ICh5ZWFyIDwgMTk3MCAmJiB5ZWFyZGF5IDwgMCkpOwotICAgIHJldHVy
biB5ZWFyZGF5ICsgZGF5SW5ZZWFyKHllYXIsIG1vbnRoLCBkYXkpOwotfQotCiAvLyBUaGVyZSBp
cyBhIGhhcmQgbGltaXQgYXQgMjAzOCB0aGF0IHdlIGN1cnJlbnRseSBkbyBub3QgaGF2ZSBhIHdv
cmthcm91bmQKIC8vIGZvciAocmRhcjovL3Byb2JsZW0vNTA1Mjk3NSkuCiBzdGF0aWMgaW5saW5l
IGludCBtYXhpbXVtWWVhckZvckRTVCgpCkBAIC0xMTU5LDEzICs5OTQsNiBAQCBkb3VibGUgcGFy
c2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5n
KQogICAgIHJldHVybiBtcyAtIChvZmZzZXQgKiBtc1Blck1pbnV0ZSk7CiB9CiAKLWRvdWJsZSB0
aW1lQ2xpcChkb3VibGUgdCkKLXsKLSAgICBpZiAoc3RkOjphYnModCkgPiBtYXhFQ01BU2NyaXB0
VGltZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRf
TmFOKCk7Ci0gICAgcmV0dXJuIHN0ZDo6dHJ1bmModCkgKyAwLjA7Ci19Ci0KIC8vIFNlZSBodHRw
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyODIyI3NlY3Rpb24tMy4zIGZvciBtb3JlIGluZm9y
bWF0aW9uLgogU3RyaW5nIG1ha2VSRkMyODIyRGF0ZVN0cmluZyh1bnNpZ25lZCBkYXlPZldlZWss
IHVuc2lnbmVkIGRheSwgdW5zaWduZWQgbW9udGgsIHVuc2lnbmVkIHllYXIsIHVuc2lnbmVkIGhv
dXJzLCB1bnNpZ25lZCBtaW51dGVzLCB1bnNpZ25lZCBzZWNvbmRzLCBpbnQgdXRjT2Zmc2V0KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3Rm
L0RhdGVNYXRoLmgKaW5kZXggZjllMjgxMWZiYWM0ZTc3OTg1Zjc2NjU4MDA1MThhNTU2NDA0NDg1
My4uYmU5ZjEyNzMyNDQwMDM5MjFjMGY2ZTM4ODQ4NDVhOGZlMzIwNjAyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5o
CkBAIC05Miw3ICs5Miw2IEBAIGludCBlcXVpdmFsZW50WWVhckZvckRTVChpbnQgeWVhcik7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHBhcnNlRVM1RGF0ZUZyb21OdWxsVGVybWluYXRlZENo
YXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0
ZVN0cmluZyk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVy
bWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVRaLCBp
bnQmIG9mZnNldCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRpbWVDbGlwKGRvdWJsZSk7
CiAvLyBkYXlPZldlZWs6IFswLCA2XSAwIGJlaW5nIE1vbmRheSwgZGF5OiBbMSwgMzFdLCBtb250
aDogWzAsIDExXSwgeWVhcjogZXg6IDIwMTEsIGhvdXJzOiBbMCwgMjNdLCBtaW51dGVzOiBbMCwg
NTldLCBzZWNvbmRzOiBbMCwgNTldLCB1dGNPZmZzZXQ6IFstNzIwLDcyMF0uIAogU3RyaW5nIG1h
a2VSRkMyODIyRGF0ZVN0cmluZyh1bnNpZ25lZCBkYXlPZldlZWssIHVuc2lnbmVkIGRheSwgdW5z
aWduZWQgbW9udGgsIHVuc2lnbmVkIHllYXIsIHVuc2lnbmVkIGhvdXJzLCB1bnNpZ25lZCBtaW51
dGVzLCB1bnNpZ25lZCBzZWNvbmRzLCBpbnQgdXRjT2Zmc2V0KTsKIApAQCAtMTAyLDMzICsxMDEs
Mjk2IEBAIGlubGluZSBkb3VibGUganNDdXJyZW50VGltZSgpCiAgICAgcmV0dXJuIGZsb29yKFdh
bGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKTsKIH0KIAot
Y29uc3QgY2hhciogY29uc3Qgd2Vla2RheU5hbWVbN10gPSB7ICJNb24iLCAiVHVlIiwgIldlZCIs
ICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iIH07Ci1jb25zdCBjaGFyKiBjb25zdCBtb250aE5h
bWVbMTJdID0geyAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLCAiSnVs
IiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiIH07Ci1jb25zdCBjaGFyKiBjb25z
dCBtb250aEZ1bGxOYW1lWzEyXSA9IHsgIkphbnVhcnkiLCAiRmVicnVhcnkiLCAiTWFyY2giLCAi
QXByaWwiLCAiTWF5IiwgIkp1bmUiLCAiSnVseSIsICJBdWd1c3QiLCAiU2VwdGVtYmVyIiwgIk9j
dG9iZXIiLCAiTm92ZW1iZXIiLCAiRGVjZW1iZXIiIH07CitleHRlcm4gV1RGX0VYUE9SVF9QUklW
QVRFIGNvbnN0IGNoYXIqIGNvbnN0IHdlZWtkYXlOYW1lWzddOworZXh0ZXJuIFdURl9FWFBPUlRf
UFJJVkFURSBjb25zdCBjaGFyKiBjb25zdCBtb250aE5hbWVbMTJdOworZXh0ZXJuIFdURl9FWFBP
UlRfUFJJVkFURSBjb25zdCBjaGFyKiBjb25zdCBtb250aEZ1bGxOYW1lWzEyXTsKK2V4dGVybiBX
VEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgaW50IGZpcnN0RGF5T2ZNb250aFsyXVsxMl07CiAKLWNv
bnN0IGRvdWJsZSBob3Vyc1BlckRheSA9IDI0LjA7Ci1jb25zdCBkb3VibGUgbWludXRlc1Blckhv
dXIgPSA2MC4wOwotY29uc3QgZG91YmxlIHNlY29uZHNQZXJNaW51dGUgPSA2MC4wOwotY29uc3Qg
ZG91YmxlIG1zUGVyU2Vjb25kID0gMTAwMC4wOwotY29uc3QgZG91YmxlIG1zUGVyTW9udGggPSAy
NTkyMDAwMDAwLjA7Ci1jb25zdCBkb3VibGUgc2Vjb25kc1BlckhvdXIgPSBzZWNvbmRzUGVyTWlu
dXRlICogbWludXRlc1BlckhvdXI7Ci1jb25zdCBkb3VibGUgc2Vjb25kc1BlckRheSA9IHNlY29u
ZHNQZXJIb3VyICogaG91cnNQZXJEYXk7Ci1jb25zdCBkb3VibGUgbXNQZXJNaW51dGUgPSBtc1Bl
clNlY29uZCAqIHNlY29uZHNQZXJNaW51dGU7Ci1jb25zdCBkb3VibGUgbXNQZXJIb3VyID0gbXNQ
ZXJTZWNvbmQgKiBzZWNvbmRzUGVySG91cjsKLWNvbnN0IGRvdWJsZSBtc1BlckRheSA9IG1zUGVy
U2Vjb25kICogc2Vjb25kc1BlckRheTsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIGhvdXJzUGVy
RGF5ID0gMjQuMDsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1pbnV0ZXNQZXJIb3VyID0gNjAu
MDsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIHNlY29uZHNQZXJNaW51dGUgPSA2MC4wOworc3Rh
dGljIGNvbnN0ZXhwciBkb3VibGUgbXNQZXJTZWNvbmQgPSAxMDAwLjA7CitzdGF0aWMgY29uc3Rl
eHByIGRvdWJsZSBtc1Blck1vbnRoID0gMjU5MjAwMDAwMC4wOworc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUgc2Vjb25kc1BlckhvdXIgPSBzZWNvbmRzUGVyTWludXRlICogbWludXRlc1BlckhvdXI7
CitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBzZWNvbmRzUGVyRGF5ID0gc2Vjb25kc1BlckhvdXIg
KiBob3Vyc1BlckRheTsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1zUGVyTWludXRlID0gbXNQ
ZXJTZWNvbmQgKiBzZWNvbmRzUGVyTWludXRlOworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbXNQ
ZXJIb3VyID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVySG91cjsKK3N0YXRpYyBjb25zdGV4cHIg
ZG91YmxlIG1zUGVyRGF5ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVyRGF5OwogCi1XVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc0xlYXBZZWFyKGludCB5ZWFyKTsKK3N0YXRpYyBjb25zdGV4cHIg
ZG91YmxlIG1heFVuaXhUaW1lID0gMjE0NTg1OTIwMC4wOyAvLyAxMi8zMS8yMDM3CisvLyBFQ01B
U2NyaXB0IGFza3Mgbm90IHRvIHN1cHBvcnQgZm9yIGEgZGF0ZSBvZiB3aGljaCB0b3RhbAorLy8g
bWlsbGlzZWNvbmQgdmFsdWUgaXMgbGFyZ2VyIHRoYW4gdGhlIGZvbGxvd2luZyB2YWx1ZS4KKy8v
IFNlZSAxNS45LjEuMTQgb2YgRUNNQS0yNjIgNXRoIGVkaXRpb24uCitzdGF0aWMgY29uc3RleHBy
IGRvdWJsZSBtYXhFQ01BU2NyaXB0VGltZSA9IDguNjRFMTU7CisKK2NsYXNzIFRpbWVDbGlwcGVk
UG9zaXRpdmVNaWxsaXNlY29uZHMgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
NjRfdCBob3Vyc1BlckRheSA9IDI0OworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBtaW51
dGVzUGVySG91ciA9IDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBzZWNvbmRzUGVy
TWludXRlID0gNjA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IG1zUGVyU2Vjb25kID0g
MTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbXNQZXJNb250aCA9IDI1OTIwMDAw
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IHNlY29uZHNQZXJIb3VyID0gc2Vjb25k
c1Blck1pbnV0ZSAqIG1pbnV0ZXNQZXJIb3VyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRf
dCBzZWNvbmRzUGVyRGF5ID0gc2Vjb25kc1BlckhvdXIgKiBob3Vyc1BlckRheTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGludDY0X3QgbXNQZXJNaW51dGUgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQ
ZXJNaW51dGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IG1zUGVySG91ciA9IG1zUGVy
U2Vjb25kICogc2Vjb25kc1BlckhvdXI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IG1z
UGVyRGF5ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVyRGF5OworICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50NjRfdCBtYXhFQ01BU2NyaXB0VGltZSA9IDguNjRFMTU7CisKKyAgICBleHBsaWNpdCBU
aW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzKGludDY0X3QgdmFsdWUpCisgICAgICAgIDog
bV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgaW50NjRfdCB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdmFsdWUpOyB9Citwcml2YXRlOgorICAgIGludDY0X3Qg
bV92YWx1ZTsKK307CisKK2lubGluZSBkb3VibGUgdGltZUNsaXAoZG91YmxlIHQpCit7CisgICAg
aWYgKHN0ZDo6YWJzKHQpID4gbWF4RUNNQVNjcmlwdFRpbWUpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOworICAgIHJldHVybiBzdGQ6OnRy
dW5jKHQpICsgMC4wOworfQorCitpbmxpbmUgZG91YmxlIGRheXNGcm9tMTk3MFRvWWVhcihpbnQg
eWVhcikKK3sKKyAgICAvLyBUaGUgR3JlZ29yaWFuIENhbGVuZGFyIHJ1bGVzIGZvciBsZWFwIHll
YXJzOgorICAgIC8vIEV2ZXJ5IGZvdXJ0aCB5ZWFyIGlzIGEgbGVhcCB5ZWFyLiAyMDA0LCAyMDA4
LCBhbmQgMjAxMiBhcmUgbGVhcCB5ZWFycy4KKyAgICAvLyBIb3dldmVyLCBldmVyeSBodW5kcmVk
dGggeWVhciBpcyBub3QgYSBsZWFwIHllYXIuIDE5MDAgYW5kIDIxMDAgYXJlIG5vdCBsZWFwIHll
YXJzLgorICAgIC8vIEV2ZXJ5IGZvdXIgaHVuZHJlZCB5ZWFycywgdGhlcmUncyBhIGxlYXAgeWVh
ciBhZnRlciBhbGwuIDIwMDAgYW5kIDI0MDAgYXJlIGxlYXAgeWVhcnMuCisKKyAgICBzdGF0aWMg
Y29uc3RleHByIGludCBsZWFwRGF5c0JlZm9yZTE5NzFCeTRSdWxlID0gMTk3MCAvIDQ7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgZXhjbHVkZWRMZWFwRGF5c0JlZm9yZTE5NzFCeTEwMFJ1bGUg
PSAxOTcwIC8gMTAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGxlYXBEYXlzQmVmb3JlMTk3
MUJ5NDAwUnVsZSA9IDE5NzAgLyA0MDA7CisKKyAgICBjb25zdCBkb3VibGUgeWVhck1pbnVzT25l
ID0geWVhciAtIDE7CisgICAgY29uc3QgZG91YmxlIHllYXJzVG9BZGRCeTRSdWxlID0gZmxvb3Io
eWVhck1pbnVzT25lIC8gNC4wKSAtIGxlYXBEYXlzQmVmb3JlMTk3MUJ5NFJ1bGU7CisgICAgY29u
c3QgZG91YmxlIHllYXJzVG9FeGNsdWRlQnkxMDBSdWxlID0gZmxvb3IoeWVhck1pbnVzT25lIC8g
MTAwLjApIC0gZXhjbHVkZWRMZWFwRGF5c0JlZm9yZTE5NzFCeTEwMFJ1bGU7CisgICAgY29uc3Qg
ZG91YmxlIHllYXJzVG9BZGRCeTQwMFJ1bGUgPSBmbG9vcih5ZWFyTWludXNPbmUgLyA0MDAuMCkg
LSBsZWFwRGF5c0JlZm9yZTE5NzFCeTQwMFJ1bGU7CisKKyAgICByZXR1cm4gMzY1LjAgKiAoeWVh
ciAtIDE5NzAuMCkgKyB5ZWFyc1RvQWRkQnk0UnVsZSAtIHllYXJzVG9FeGNsdWRlQnkxMDBSdWxl
ICsgeWVhcnNUb0FkZEJ5NDAwUnVsZTsKK30KKworaW5saW5lIGludDY0X3QgZGF5c0Zyb20xOTcw
VG9ZZWFyVGltZUNsaXBwZWRQb3NpdGl2ZShpbnQgeWVhcikKK3sKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBsZWFwRGF5c0JlZm9yZTE5NzFCeTRSdWxlID0gMTk3MCAvIDQ7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgZXhjbHVkZWRMZWFwRGF5c0JlZm9yZTE5NzFCeTEwMFJ1bGUgPSAxOTcw
IC8gMTAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGxlYXBEYXlzQmVmb3JlMTk3MUJ5NDAw
UnVsZSA9IDE5NzAgLyA0MDA7CisKKyAgICBBU1NFUlQoeWVhciA+PSAxOTcwKTsKKyAgICBjb25z
dCBpbnQ2NF90IHllYXJNaW51c09uZSA9IHllYXIgLSAxOworICAgIGNvbnN0IGludDY0X3QgeWVh
cnNUb0FkZEJ5NFJ1bGUgPSB5ZWFyTWludXNPbmUgLyA0LjAgLSBsZWFwRGF5c0JlZm9yZTE5NzFC
eTRSdWxlOworICAgIGNvbnN0IGludDY0X3QgeWVhcnNUb0V4Y2x1ZGVCeTEwMFJ1bGUgPSB5ZWFy
TWludXNPbmUgLyAxMDAuMCAtIGV4Y2x1ZGVkTGVhcERheXNCZWZvcmUxOTcxQnkxMDBSdWxlOwor
ICAgIGNvbnN0IGludDY0X3QgeWVhcnNUb0FkZEJ5NDAwUnVsZSA9IHllYXJNaW51c09uZSAvIDQw
MC4wIC0gbGVhcERheXNCZWZvcmUxOTcxQnk0MDBSdWxlOworCisgICAgcmV0dXJuIDM2NSAqICh5
ZWFyIC0gMTk3MCkgKyB5ZWFyc1RvQWRkQnk0UnVsZSAtIHllYXJzVG9FeGNsdWRlQnkxMDBSdWxl
ICsgeWVhcnNUb0FkZEJ5NDAwUnVsZTsKK30KKworaW5saW5lIGJvb2wgaXNMZWFwWWVhcihpbnQg
eWVhcikKK3sKKyAgICBpZiAoeWVhciAlIDQgIT0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICh5ZWFyICUgNDAwID09IDApCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh5
ZWFyICUgMTAwID09IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworaW5saW5lIGludCBkYXlzSW5ZZWFyKGludCB5ZWFyKQoreworICAgIHJldHVybiAzNjUg
KyBpc0xlYXBZZWFyKHllYXIpOworfQorCitpbmxpbmUgZG91YmxlIG1zVG9EYXlzKGRvdWJsZSBt
cykKK3sKKyAgICByZXR1cm4gZmxvb3IobXMgLyBtc1BlckRheSk7Cit9CisKK2lubGluZSBpbnQ2
NF90IG1zVG9EYXlzKFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHMgbXMpCit7CisgICAg
cmV0dXJuIG1zLnZhbHVlKCkgLyBUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjptc1Bl
ckRheTsKK30KKworaW5saW5lIGludCBkYXlJblllYXIoaW50IHllYXIsIGludCBtb250aCwgaW50
IGRheSkKK3sKKyAgICByZXR1cm4gZmlyc3REYXlPZk1vbnRoW2lzTGVhcFllYXIoeWVhcildW21v
bnRoXSArIGRheSAtIDE7Cit9CisKK2lubGluZSBpbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50
IHllYXIpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obXNUb0RheXMobXMpIC0gZGF5
c0Zyb20xOTcwVG9ZZWFyKHllYXIpKTsKK30KKworaW5saW5lIGludCBkYXlJblllYXIoVGltZUNs
aXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kcyBtcywgaW50IHllYXIpCit7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4obXNUb0RheXMobXMpIC0gZGF5c0Zyb20xOTcwVG9ZZWFyVGltZUNsaXBw
ZWRQb3NpdGl2ZSh5ZWFyKSk7Cit9CiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGZy
b20gMTk3MC0wMS0wMSB0byB0aGUgc3BlY2lmaWVkIGRhdGUuCi1XVEZfRVhQT1JUX1BSSVZBVEUg
ZG91YmxlIGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KTsK
LVdURl9FWFBPUlRfUFJJVkFURSBpbnQgbXNUb1llYXIoZG91YmxlIG1zKTsKLVdURl9FWFBPUlRf
UFJJVkFURSBkb3VibGUgbXNUb0RheXMoZG91YmxlIG1zKTsKLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgbXNUb01pbnV0ZXMoZG91YmxlIG1zKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgbXNUb0hv
dXJzKGRvdWJsZSBtcyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluWWVhcihpbnQgeWVh
ciwgaW50IG1vbnRoLCBpbnQgZGF5KTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgZGF5SW5ZZWFy
KGRvdWJsZSBtcywgaW50IHllYXIpOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCBtb250aEZyb21E
YXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7Ci1XVEZfRVhQT1JUX1BSSVZB
VEUgaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFll
YXIpOworaW5saW5lIGRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250
aCwgaW50IGRheSkKK3sKKyAgICB5ZWFyICs9IG1vbnRoIC8gMTI7CisKKyAgICBtb250aCAlPSAx
MjsKKyAgICBpZiAobW9udGggPCAwKSB7CisgICAgICAgIG1vbnRoICs9IDEyOworICAgICAgICAt
LXllYXI7CisgICAgfQorCisgICAgZG91YmxlIHllYXJkYXkgPSBmbG9vcihkYXlzRnJvbTE5NzBU
b1llYXIoeWVhcikpOworICAgIEFTU0VSVCgoeWVhciA+PSAxOTcwICYmIHllYXJkYXkgPj0gMCkg
fHwgKHllYXIgPCAxOTcwICYmIHllYXJkYXkgPCAwKSk7CisgICAgcmV0dXJuIHllYXJkYXkgKyBk
YXlJblllYXIoeWVhciwgbW9udGgsIGRheSk7Cit9CisKK2lubGluZSBpbnQgbXNUb1llYXIoZG91
YmxlIG1zKQoreworICAgIGludCBhcHByb3hZZWFyID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vciht
cyAvIChtc1BlckRheSAqIDM2NS4yNDI1KSkgKyAxOTcwKTsKKyAgICBkb3VibGUgbXNGcm9tQXBw
cm94WWVhclRvMTk3MCA9IG1zUGVyRGF5ICogZGF5c0Zyb20xOTcwVG9ZZWFyKGFwcHJveFllYXIp
OworICAgIGlmIChtc0Zyb21BcHByb3hZZWFyVG8xOTcwID4gbXMpCisgICAgICAgIHJldHVybiBh
cHByb3hZZWFyIC0gMTsKKyAgICBpZiAobXNGcm9tQXBwcm94WWVhclRvMTk3MCArIG1zUGVyRGF5
ICogZGF5c0luWWVhcihhcHByb3hZZWFyKSA8PSBtcykKKyAgICAgICAgcmV0dXJuIGFwcHJveFll
YXIgKyAxOworICAgIHJldHVybiBhcHByb3hZZWFyOworfQorCitpbmxpbmUgaW50IG1zVG9NaW51
dGVzKGRvdWJsZSBtcykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gZm1vZChmbG9vcihtcyAvIG1z
UGVyTWludXRlKSwgbWludXRlc1BlckhvdXIpOworICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAg
ICByZXN1bHQgKz0gbWludXRlc1BlckhvdXI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
cmVzdWx0KTsKK30KKworaW5saW5lIGludCBtc1RvTWludXRlcyhUaW1lQ2xpcHBlZFBvc2l0aXZl
TWlsbGlzZWNvbmRzIG1zKQoreworICAgIGludDY0X3QgcmVzdWx0ID0gKG1zLnZhbHVlKCkgLyBU
aW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjptc1Blck1pbnV0ZSkgJSBUaW1lQ2xpcHBl
ZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjptaW51dGVzUGVySG91cjsKKyAgICBpZiAocmVzdWx0IDwg
MCkKKyAgICAgICAgcmVzdWx0ICs9IFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6Om1p
bnV0ZXNQZXJIb3VyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7Cit9CisK
K2lubGluZSBpbnQgbXNUb0hvdXJzKGRvdWJsZSBtcykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0g
Zm1vZChmbG9vcihtcyAvIG1zUGVySG91ciksIGhvdXJzUGVyRGF5KTsKKyAgICBpZiAocmVzdWx0
IDwgMCkKKyAgICAgICAgcmVzdWx0ICs9IGhvdXJzUGVyRGF5OworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc3VsdCk7Cit9CisKK2lubGluZSBpbnQgbXNUb0hvdXJzKFRpbWVDbGlwcGVk
UG9zaXRpdmVNaWxsaXNlY29uZHMgbXMpCit7CisgICAgaW50NjRfdCByZXN1bHQgPSAobXMudmFs
dWUoKSAvIFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6Om1zUGVySG91cikgJSBUaW1l
Q2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjpob3Vyc1BlckRheTsKKyAgICBpZiAocmVzdWx0
IDwgMCkKKyAgICAgICAgcmVzdWx0ICs9IGhvdXJzUGVyRGF5OworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc3VsdCk7Cit9CisKK2lubGluZSBpbnQgbXNUb1NlY29uZHMoZG91YmxlIG1z
KQoreworICAgIGRvdWJsZSByZXN1bHQgPSBmbW9kKGZsb29yKG1zIC8gbXNQZXJTZWNvbmQpLCBz
ZWNvbmRzUGVyTWludXRlKTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmVzdWx0ICs9
IHNlY29uZHNQZXJNaW51dGU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsK
K30KKworaW5saW5lIGludCBtc1RvU2Vjb25kcyhUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNv
bmRzIG1zKQoreworICAgIGludDY0X3QgcmVzdWx0ID0gbXMudmFsdWUoKSAvIFRpbWVDbGlwcGVk
UG9zaXRpdmVNaWxsaXNlY29uZHM6Om1zUGVyU2Vjb25kICUgVGltZUNsaXBwZWRQb3NpdGl2ZU1p
bGxpc2Vjb25kczo6c2Vjb25kc1Blck1pbnV0ZTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAg
ICAgcmVzdWx0ICs9IFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6OnNlY29uZHNQZXJN
aW51dGU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKK30KKworLy8gMDog
U3VuZGF5LCAxOiBNb25kYXksIGV0Yy4KK2lubGluZSBpbnQgbXNUb1dlZWtEYXkoZG91YmxlIG1z
KQoreworICAgIGludCB3ZCA9IChzdGF0aWNfY2FzdDxpbnQ+KG1zVG9EYXlzKG1zKSkgKyA0KSAl
IDc7CisgICAgaWYgKHdkIDwgMCkKKyAgICAgICAgd2QgKz0gNzsKKyAgICByZXR1cm4gd2Q7Cit9
CisKK2lubGluZSBpbnQgbXNUb1dlZWtEYXkoVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25k
cyBtcykKK3sKKyAgICBpbnQgd2QgPSAoc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5cyhtcykpICsg
NCkgJSA3OworICAgIGlmICh3ZCA8IDApCisgICAgICAgIHdkICs9IDc7CisgICAgcmV0dXJuIHdk
OworfQorCitpbmxpbmUgaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29s
IGxlYXBZZWFyKQoreworICAgIGNvbnN0IGludCBkID0gZGF5SW5ZZWFyOworICAgIGludCBzdGVw
OworCisgICAgaWYgKGQgPCAoc3RlcCA9IDMxKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3Rl
cCArPSAobGVhcFllYXIgPyAyOSA6IDI4KTsKKyAgICBpZiAoZCA8IHN0ZXApCisgICAgICAgIHJl
dHVybiAxOworICAgIGlmIChkIDwgKHN0ZXAgKz0gMzEpKQorICAgICAgICByZXR1cm4gMjsKKyAg
ICBpZiAoZCA8IChzdGVwICs9IDMwKSkKKyAgICAgICAgcmV0dXJuIDM7CisgICAgaWYgKGQgPCAo
c3RlcCArPSAzMSkpCisgICAgICAgIHJldHVybiA0OworICAgIGlmIChkIDwgKHN0ZXAgKz0gMzAp
KQorICAgICAgICByZXR1cm4gNTsKKyAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKKyAgICAgICAg
cmV0dXJuIDY7CisgICAgaWYgKGQgPCAoc3RlcCArPSAzMSkpCisgICAgICAgIHJldHVybiA3Owor
ICAgIGlmIChkIDwgKHN0ZXAgKz0gMzApKQorICAgICAgICByZXR1cm4gODsKKyAgICBpZiAoZCA8
IChzdGVwICs9IDMxKSkKKyAgICAgICAgcmV0dXJuIDk7CisgICAgaWYgKGQgPCAoc3RlcCArPSAz
MCkpCisgICAgICAgIHJldHVybiAxMDsKKyAgICByZXR1cm4gMTE7Cit9CisKK2lubGluZSBpbnQg
ZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKK3sK
KyAgICBhdXRvIGNoZWNrTW9udGggPSBbXSAoaW50IGRheUluWWVhciwgaW50JiBzdGFydERheU9m
VGhpc01vbnRoLCBpbnQmIHN0YXJ0RGF5T2ZOZXh0TW9udGgsIGludCBkYXlzSW5UaGlzTW9udGgp
IC0+IGJvb2wgeworICAgICAgICBzdGFydERheU9mVGhpc01vbnRoID0gc3RhcnREYXlPZk5leHRN
b250aDsKKyAgICAgICAgc3RhcnREYXlPZk5leHRNb250aCArPSBkYXlzSW5UaGlzTW9udGg7Cisg
ICAgICAgIHJldHVybiAoZGF5SW5ZZWFyIDw9IHN0YXJ0RGF5T2ZOZXh0TW9udGgpOworICAgIH07
CisKKyAgICBjb25zdCBpbnQgZCA9IGRheUluWWVhcjsKKyAgICBpbnQgc3RlcDsKKyAgICBpbnQg
bmV4dCA9IDMwOworCisgICAgaWYgKGQgPD0gbmV4dCkKKyAgICAgICAgcmV0dXJuIGQgKyAxOwor
ICAgIGNvbnN0IGludCBkYXlzSW5GZWIgPSAobGVhcFllYXIgPyAyOSA6IDI4KTsKKyAgICBpZiAo
Y2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCBkYXlzSW5GZWIpKQorICAgICAgICByZXR1cm4gZCAt
IHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQorICAgICAgICBy
ZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQor
ICAgICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4
dCwgMzEpKQorICAgICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwg
c3RlcCwgbmV4dCwgMzApKQorICAgICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNr
TW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQorICAgICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAg
aWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQorICAgICAgICByZXR1cm4gZCAtIHN0
ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQorICAgICAgICByZXR1
cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQorICAg
ICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwg
MzApKQorICAgICAgICByZXR1cm4gZCAtIHN0ZXA7CisgICAgc3RlcCA9IG5leHQ7CisgICAgcmV0
dXJuIGQgLSBzdGVwOworfQogCiAvLyBSZXR1cm5zIGNvbWJpbmVkIG9mZnNldCBpbiBtaWxsaXNl
Y29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFURSBMb2NhbFRpbWVPZmZzZXQgY2Fs
Y3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1pbGxpc2Vjb25kcywgVGltZVR5cGUg
PSBVVENUaW1lKTsKQEAgLTE1NSwzICs0MTcsNSBAQCB1c2luZyBXVEY6OnBhcnNlRGF0ZUZyb21O
dWxsVGVybWluYXRlZENoYXJhY3RlcnM7CiB1c2luZyBXVEY6Om1ha2VSRkMyODIyRGF0ZVN0cmlu
ZzsKIHVzaW5nIFdURjo6TG9jYWxUaW1lT2Zmc2V0OwogdXNpbmcgV1RGOjpjYWxjdWxhdGVMb2Nh
bFRpbWVPZmZzZXQ7Cit1c2luZyBXVEY6OnRpbWVDbGlwOwordXNpbmcgV1RGOjpqc0N1cnJlbnRU
aW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGIv
U291cmNlL1dURi93dGYvR3JlZ29yaWFuRGF0ZVRpbWUuY3BwCmluZGV4IGEzYzQ0YjkyMWE3MDgz
MmMyNDU3OGVmNGI5MDRkYTIxMjI2ODJmNjQuLjIxZGRkOTNkOWUwMmI0NjAxNjM3ODc4OTgyNTc5
MjQ0MGNlMGE5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0dyZWdvcmlhbkRhdGVUaW1l
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGltZS5jcHAKQEAgLTM1LDYg
KzM1LDUzIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitHcmVnb3JpYW5EYXRlVGltZTo6R3JlZ29y
aWFuRGF0ZVRpbWUoZG91YmxlIG1zLCBMb2NhbFRpbWVPZmZzZXQgbG9jYWxUaW1lKQoreworICAg
IGlmIChtcyA+PSAwCisjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4NikKKyAgICAgICAgICAgIC8v
IFRoZSBWUyBDb21waWxlciBmb3IgMzItYml0IGJ1aWxkcyBnZW5lcmF0ZXMgYSBmbG9hdGluZyBw
b2ludCBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gY2FzdAorICAgICAgICAgICAgLy8gZnJvbSBh
biBpbmZpbml0eSB0byBhIDY0LWJpdCBpbnRlZ2VyLiBXZSBsZWF2ZSB0aGlzIHJvdXRpbmUgd2l0
aCB0aGUgZmxvYXRpbmcgcG9pbnQgZXJyb3IKKyAgICAgICAgICAgIC8vIGxlZnQgaW4gYSByZWdp
c3RlciwgY2F1c2luZyB1bmRlZmluZWQgYmVoYXZpb3IgaW4gbGF0ZXIgZmxvYXRpbmcgcG9pbnQg
b3BlcmF0aW9ucy4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUbyBhdm9pZCB0aGlz
IGlzc3VlLCB3ZSBjaGVjayBmb3IgaW5maW5pdHkgaGVyZSwgYW5kIHJldHVybiBmYWxzZSBpbiB0
aGF0IGNhc2UuCisgICAgICAgICAgICAmJiAhc3RkOjppc2luZihtcykKKyNlbmRpZgorICAgICAg
ICApIHsKKyAgICAgICAgaW50NjRfdCBpbnRlZ2VyID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obXMp
OworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRlZ2VyKSA9PSBtcyAmJiBpbnRl
Z2VyIDw9IG1heEVDTUFTY3JpcHRUaW1lKSB7CisgICAgICAgICAgICAvLyBQb3NpdGl2ZSBpbnRl
Z2VyIGZhc3QgcGF0aC4KKyAgICAgICAgICAgIFdURjo6VGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxp
c2Vjb25kcyB0aW1lQ2xpcHBlZChpbnRlZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IGludCB5ZWFy
ID0gbXNUb1llYXIobXMpOworICAgICAgICAgICAgc2V0U2Vjb25kKG1zVG9TZWNvbmRzKHRpbWVD
bGlwcGVkKSk7CisgICAgICAgICAgICBzZXRNaW51dGUobXNUb01pbnV0ZXModGltZUNsaXBwZWQp
KTsKKyAgICAgICAgICAgIHNldEhvdXIobXNUb0hvdXJzKHRpbWVDbGlwcGVkKSk7CisgICAgICAg
ICAgICBzZXRXZWVrRGF5KG1zVG9XZWVrRGF5KHRpbWVDbGlwcGVkKSk7CisgICAgICAgICAgICBp
bnQgeWVhckRheSA9IGRheUluWWVhcih0aW1lQ2xpcHBlZCwgeWVhcik7CisgICAgICAgICAgICBi
b29sIGxlYXBZZWFyID0gaXNMZWFwWWVhcih5ZWFyKTsKKyAgICAgICAgICAgIHNldFllYXJEYXko
eWVhckRheSk7CisgICAgICAgICAgICBzZXRNb250aERheShkYXlJbk1vbnRoRnJvbURheUluWWVh
cih5ZWFyRGF5LCBsZWFwWWVhcikpOworICAgICAgICAgICAgc2V0TW9udGgobW9udGhGcm9tRGF5
SW5ZZWFyKHllYXJEYXksIGxlYXBZZWFyKSk7CisgICAgICAgICAgICBzZXRZZWFyKHllYXIpOwor
ICAgICAgICAgICAgc2V0SXNEU1QobG9jYWxUaW1lLmlzRFNUKTsKKyAgICAgICAgICAgIHNldFV0
Y09mZnNldChsb2NhbFRpbWUub2Zmc2V0IC8gV1RGOjptc1BlclNlY29uZCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgY29uc3QgaW50IHllYXIgPSBtc1RvWWVh
cihtcyk7CisgICAgc2V0U2Vjb25kKG1zVG9TZWNvbmRzKG1zKSk7CisgICAgc2V0TWludXRlKG1z
VG9NaW51dGVzKG1zKSk7CisgICAgc2V0SG91cihtc1RvSG91cnMobXMpKTsKKyAgICBzZXRXZWVr
RGF5KG1zVG9XZWVrRGF5KG1zKSk7CisgICAgaW50IHllYXJEYXkgPSBkYXlJblllYXIobXMsIHll
YXIpOworICAgIGJvb2wgbGVhcFllYXIgPSBpc0xlYXBZZWFyKHllYXIpOworICAgIHNldFllYXJE
YXkoeWVhckRheSk7CisgICAgc2V0TW9udGhEYXkoZGF5SW5Nb250aEZyb21EYXlJblllYXIoeWVh
ckRheSwgbGVhcFllYXIpKTsKKyAgICBzZXRNb250aChtb250aEZyb21EYXlJblllYXIoeWVhckRh
eSwgbGVhcFllYXIpKTsKKyAgICBzZXRZZWFyKHllYXIpOworICAgIHNldElzRFNUKGxvY2FsVGlt
ZS5pc0RTVCk7CisgICAgc2V0VXRjT2Zmc2V0KGxvY2FsVGltZS5vZmZzZXQgLyBXVEY6Om1zUGVy
U2Vjb25kKTsKK30KKwogdm9pZCBHcmVnb3JpYW5EYXRlVGltZTo6c2V0VG9DdXJyZW50TG9jYWxU
aW1lKCkKIHsKICNpZiBPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR3Jl
Z29yaWFuRGF0ZVRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL0dyZWdvcmlhbkRhdGVUaW1lLmgKaW5k
ZXggMjVkZDE1Y2FlMDRiZjgyN2ZlMWZmY2U5NWNlNTcxZjg3MzY1NzU3Zi4uZmIxMTM4YTcwMDU0
NzNmMjdhZGYyODIwZmRiNzNkM2I5OGYxNGIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
R3JlZ29yaWFuRGF0ZVRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGlt
ZS5oCkBAIC0yNiwyNyArMjYsMTYgQEAKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUg
PHRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIEdyZWdvcmlhbkRhdGVUaW1lIGZp
bmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShHcmVnb3JpYW5EYXRlVGltZSk7CiBwdWJsaWM6Ci0gICAgR3JlZ29yaWFuRGF0ZVRpbWUo
KQotICAgICAgICA6IG1feWVhcigwKQotICAgICAgICAsIG1fbW9udGgoMCkKLSAgICAgICAgLCBt
X3llYXJEYXkoMCkKLSAgICAgICAgLCBtX21vbnRoRGF5KDApCi0gICAgICAgICwgbV93ZWVrRGF5
KDApCi0gICAgICAgICwgbV9ob3VyKDApCi0gICAgICAgICwgbV9taW51dGUoMCkKLSAgICAgICAg
LCBtX3NlY29uZCgwKQotICAgICAgICAsIG1fdXRjT2Zmc2V0KDApCi0gICAgICAgICwgbV9pc0RT
VCgwKQotICAgIHsKLSAgICB9CisgICAgR3JlZ29yaWFuRGF0ZVRpbWUoKSA9IGRlZmF1bHQ7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IEdyZWdvcmlhbkRhdGVUaW1lKGRvdWJsZSBt
cywgTG9jYWxUaW1lT2Zmc2V0KTsKIAogICAgIGlubGluZSBpbnQgeWVhcigpIGNvbnN0IHsgcmV0
dXJuIG1feWVhcjsgfQogICAgIGlubGluZSBpbnQgbW9udGgoKSBjb25zdCB7IHJldHVybiBtX21v
bnRoOyB9CkBAIC0xMDksMTYgKzk4LDE2IEBAIGNsYXNzIEdyZWdvcmlhbkRhdGVUaW1lIGZpbmFs
IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgaW50IG1feWVhcjsKLSAgICBpbnQgbV9tb250aDsK
LSAgICBpbnQgbV95ZWFyRGF5OwotICAgIGludCBtX21vbnRoRGF5OwotICAgIGludCBtX3dlZWtE
YXk7Ci0gICAgaW50IG1faG91cjsKLSAgICBpbnQgbV9taW51dGU7Ci0gICAgaW50IG1fc2Vjb25k
OwotICAgIGludCBtX3V0Y09mZnNldDsKLSAgICBpbnQgbV9pc0RTVDsKKyAgICBpbnQgbV95ZWFy
IHsgMCB9OworICAgIGludCBtX21vbnRoIHsgMCB9OworICAgIGludCBtX3llYXJEYXkgeyAwIH07
CisgICAgaW50IG1fbW9udGhEYXkgeyAwIH07CisgICAgaW50IG1fd2Vla0RheSB7IDAgfTsKKyAg
ICBpbnQgbV9ob3VyIHsgMCB9OworICAgIGludCBtX21pbnV0ZSB7IDAgfTsKKyAgICBpbnQgbV9z
ZWNvbmQgeyAwIH07CisgICAgaW50IG1fdXRjT2Zmc2V0IHsgMCB9OworICAgIGludCBtX2lzRFNU
IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382270</attachid>
            <date>2019-10-29 20:09:47 -0700</date>
            <delta_ts>2019-10-30 19:32:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203550-20191029200946.patch</filename>
            <type>text/plain</type>
            <size>35157</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YmVkMjQyMGM1ZmI1NWJiYTEzNGYwNjc1NTM1NzFlZjgxNmI1OWRiLi4xOTUwMmEyMmNhYTExNDVi
NDgxNDBmNjcxNTA5YzdiNmI0OWFhNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOS0xMC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERhdGVNYXRoIHNob3VsZCBoYXZlIFRpbWVDbGlwcGVkIHZlcnNp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzU1
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
aW5nIGB1c2luZyBuYW1lc3BhY2UgV1RGO2AgaW4gRGF0ZSByZWxhdGVkIGZpbGVzIGluIEpTQy4K
KworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9ybWF0RGF0ZVRpbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHA6CisgICAg
ICAgIChKU0M6OmxvY2FsVGltZU9mZnNldCk6CisgICAgICAgIChKU0M6OnRpbWVUb01TKToKKyAg
ICAgICAgKEpTQzo6Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKToKKyAgICAgICAgKEpTQzo6bXNUb0dy
ZWdvcmlhbkRhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6cGFyc2VEYXRlKToKKyAgICAgICAgKEpT
Qzo6bXNUb1NlY29uZHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjptc1RvV2Vla0RheSk6IERl
bGV0ZWQuCisKIDIwMTktMTAtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50IHRoZSBSZW1vdGUgUGxheWJhY2sgQVBJLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2YTBlOGEz
MDFmNjIxN2QzY2U2NGU4ZDFkMzNmNTQ5MjdkM2ViOGE4Li5jY2YwMTBjMmU4MmY0YjQyZmFhNmIw
OWFkNTU4OGY1MDcxN2FiZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE5LTEwLTI5ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gRGF0ZU1hdGgg
c2hvdWxkIGhhdmUgVGltZUNsaXBwZWQgdmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZm91bmQgdGhhdCBvdXIgRGF0ZSBjb25zdHJ1Y3Rv
ciBpcyBzbG93IGJlY2F1c2UgR3JlZ29yaWFuRGF0ZVRpbWUgY2FsY3VsYXRpb24gdGFrZXMgc28g
bG9uZy4KKyAgICAgICAgV2UgYXJlIGRvaW5nIG1hbnkgYGZtb2RgLCBmbG9hdGluZyBkaXZpc2lv
biwgYGZsb29yYCBldGMuIFRoZXNlIG9wZXJhdGlvbnMsIGluIHBhcnRpY3VsYXIgYGZtb2RgLCB0
YWtlcworICAgICAgICB2ZXJ5IGxvbmcgdGltZS4gQXMgYSByZXN1bHQsIDMwJSBvZiBKZXRTdHJl
YW0yL2RhdGUtZm9ybWF0LXhwYXJiIGlzIHRha2VuIGJ5IGBmbW9kYCBmdW5jdGlvbi4KKworICAg
ICAgICBCdXQgc2luY2Ugd2UgYXJlIHBlcmZvcm1hbmNlIHRpbWVDbGlwIG9wZXJhdGlvbiwgZG91
YmxlIHZhbHVlIGluIERhdGVJbnN0YW5jZSBpcyBhbHdheXMgSW50NTIuIFdlIHNob3VsZAorICAg
ICAgICBoYXZlIGludGVnZXIgdmVyc2lvbiBvZiBHcmVnb3JpYW5EYXRlVGltZSBjYWxjdWxhdGlv
biB3aGljaCBhdm9pZHMgbWFueSB1bm5lY2Vzc2FyeSBmbW9kIGV0Yy4KKworICAgICAgICBXaGls
ZSBpbnRlZ2VyIGRpdmlzaW9uIGlzIHRydW5jYXRlLXRvLXplcm8sIG1hbnkgRGF0ZSBjYWxjdWxh
dGlvbiByZXF1aXJlcyBgZmxvb3IodmFsdWUgLyB4eHgpYC4gRm9yIG5vdywKKyAgICAgICAgd2Ug
dXNlIGludGVnZXIgZmFzdCBwYXRoIG9ubHkgd2hlbiB0aGUgdmFsdWUgaXMgSW50NTIgYW5kIHBv
c2l0aXZlLgorCisgICAgICAgIFdlIHNlZSAxMH4gJSBpbXByb3ZlbWVudCBpbiBKZXRTdHJlYW0y
L2RhdGUtZm9ybWF0LXhwYXJiLVNQIChmcm9tIDIwMSB0byAyMzkpLgorCisgICAgICAgICogd3Rm
L0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6aXNMZWFwWWVhcik6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OmRheXNJblllYXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpkYXlzRnJvbTE5
NzBUb1llYXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjptc1RvRGF5cyk6IERlbGV0ZWQuCisg
ICAgICAgIChXVEY6Om1zVG9ZZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6ZGF5SW5ZZWFy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bXNUb01pbnV0ZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjptc1RvSG91cnMpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjptb250aEZyb21EYXlJ
blllYXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGVja01vbnRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6ZGF5SW5Nb250aEZyb21EYXlJblllYXIpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpkYXRlVG9EYXlzRnJvbTE5NzApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjp0aW1lQ2xp
cCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6OlRp
bWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6OlRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNl
Y29uZHMpOgorICAgICAgICAoV1RGOjpUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjp2
YWx1ZSBjb25zdCk6CisgICAgICAgIChXVEY6OlRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29u
ZHM6OmFzRG91YmxlIGNvbnN0KToKKyAgICAgICAgKFdURjo6dGltZUNsaXApOgorICAgICAgICAo
V1RGOjpkYXlzRnJvbTE5NzBUb1llYXIpOgorICAgICAgICAoV1RGOjpkYXlzRnJvbTE5NzBUb1ll
YXJUaW1lQ2xpcHBlZFBvc2l0aXZlKToKKyAgICAgICAgKFdURjo6aXNMZWFwWWVhcik6CisgICAg
ICAgIChXVEY6OmRheXNJblllYXIpOgorICAgICAgICAoV1RGOjptc1RvRGF5cyk6CisgICAgICAg
IChXVEY6OmRheUluWWVhcik6CisgICAgICAgIChXVEY6OmRhdGVUb0RheXNGcm9tMTk3MCk6Cisg
ICAgICAgIChXVEY6Om1zVG9ZZWFyKToKKyAgICAgICAgKFdURjo6bXNUb01pbnV0ZXMpOgorICAg
ICAgICAoV1RGOjptc1RvSG91cnMpOgorICAgICAgICAoV1RGOjptc1RvU2Vjb25kcyk6CisgICAg
ICAgIChXVEY6Om1zVG9XZWVrRGF5KToKKyAgICAgICAgKFdURjo6bW9udGhGcm9tRGF5SW5ZZWFy
KToKKyAgICAgICAgKFdURjo6ZGF5SW5Nb250aEZyb21EYXlJblllYXIpOgorICAgICAgICAqIHd0
Zi9HcmVnb3JpYW5EYXRlVGltZS5jcHA6CisgICAgICAgIChXVEY6OkdyZWdvcmlhbkRhdGVUaW1l
OjpHcmVnb3JpYW5EYXRlVGltZSk6CisgICAgICAgICogd3RmL0dyZWdvcmlhbkRhdGVUaW1lLmg6
CisKIDIwMTktMTAtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBBZGQgZmFzdCBwYXRoIGZvciBTdHJpbmcjbG9jYWxlQ29tcGFyZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
OWQ3ZjEwNGJiYmQxNTU0MTJiZGQwYTI4MzFiYmFkMTI2NGQ2NDhhMi4uMmNmODdlODY5ZjBmM2My
ODdlMmEwMGJmZWRmMTRmZDEwYTM2YjE1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC01NSw4ICs1NSw2IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiBuYW1lc3BhY2UgSlNDIHsKIAotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQogY29uc3QgQ2xh
c3NJbmZvIERhdGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxG
dW5jdGlvbjo6c19pbmZvLCAmZGF0ZUNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoRGF0ZUNvbnN0cnVjdG9yKSB9OwogCiAvKiBTb3VyY2UgZm9yIERhdGVDb25z
dHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwCmluZGV4IGFlOWY0ZTBjYTdjY2IwMmZhYjQyYmZjMmUyNjQ5YjAyYmE4ZWQ5
NGEuLmU1MDcyNjQ2MGIwYzQzMjFmN2IzOTU0MjNiN2U4YWVkMzAyNzlmNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKQEAgLTM2LDgg
KzM2LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KIHRl
bXBsYXRlPGludCB3aWR0aD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmROdW1iZXIoU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgaW50IHZhbHVlKQogewpAQCAtNjgsMTYgKzY2LDE2IEBAIFN0cmlu
ZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3Jt
YXQgZm9ybWF0LCBib29sIGFzCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgaWYg
KGFwcGVuZERhdGUpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQod2Vla2RheU5hbWVbKHQud2Vl
a0RheSgpICsgNikgJSA3XSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURjo6d2Vla2RheU5h
bWVbKHQud2Vla0RheSgpICsgNikgJSA3XSk7CiAKICAgICAgICAgaWYgKGFzVVRDVmFyaWFudCkg
ewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICAgICAg
YXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQubW9udGhEYXkoKSk7CiAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobW9udGhOYW1lW3Qu
bW9udGgoKV0pOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGOjptb250aE5hbWVbdC5t
b250aCgpXSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
ICcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobW9udGhOYW1lW3QubW9udGgoKV0pOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGOjptb250aE5hbWVbdC5tb250aCgpXSk7CiAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICAgICAgYXBwZW5kTnVtYmVy
PDI+KGJ1aWxkZXIsIHQubW9udGhEYXkoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCmluZGV4IDdiNGU0NWNlYTQxOTlhMTg3
MjM3OTE0MWNkNWUyMmUxNzZkMzRlNDcuLjQ4M2QxM2ZjNzY4NDYwZmQ2NDhkNTgwZjllN2EyOTM4
OGM5ZTMxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3Rh
bmNlLmNwcApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdXNpbmcgbmFt
ZXNwYWNlIFdURjsKLQogY29uc3QgQ2xhc3NJbmZvIERhdGVJbnN0YW5jZTo6c19pbmZvID0geyJE
YXRlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShEYXRlSW5zdGFuY2UpfTsKIAogRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggMjM5ZTkzMmVlZGM0ZmFkNTA3YmVhMTgzNGY3ZDQ5NzVl
NjlmMTJjZS4uY2JhMmM5ODNlOTE5MDllYTIzODk3NWEwOTdiZjZkMGFlZTI1ZGZmZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTY5
LDggKzY5LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0K
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhdGUoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldERheShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRl
TWF0aC5jcHAKaW5kZXggNzk5NmE4ZjhhZTcwZWYwYzU0ZGZiYjI4ZDMwNmMxOWZiYzVhYWYyMS4u
NjQ4MjZhYjk2YjVkYjIzMGJlMjc0NGEwNTdiZGM4ODhlNDc5NDI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKQEAgLTEwMCwzMCArMTAwLDYgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLXN0YXRpYyBpbmxp
bmUgZG91YmxlIHRpbWVUb01TKGRvdWJsZSBob3VyLCBkb3VibGUgbWluLCBkb3VibGUgc2VjLCBk
b3VibGUgbXMpCi17Ci0gICAgcmV0dXJuICgoKGhvdXIgKiBtaW51dGVzUGVySG91ciArIG1pbikg
KiBzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIG1zUGVyU2Vjb25kICsgbXMpOwotfQotCi1zdGF0
aWMgaW5saW5lIGludCBtc1RvU2Vjb25kcyhkb3VibGUgbXMpCi17Ci0gICAgZG91YmxlIHJlc3Vs
dCA9IGZtb2QoZmxvb3IobXMgLyBtc1BlclNlY29uZCksIHNlY29uZHNQZXJNaW51dGUpOwotICAg
IGlmIChyZXN1bHQgPCAwKQotICAgICAgICByZXN1bHQgKz0gc2Vjb25kc1Blck1pbnV0ZTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOwotfQotCi0vLyAwOiBTdW5kYXksIDE6
IE1vbmRheSwgZXRjLgotc3RhdGljIGlubGluZSBpbnQgbXNUb1dlZWtEYXkoZG91YmxlIG1zKQot
ewotICAgIGludCB3ZCA9IChzdGF0aWNfY2FzdDxpbnQ+KG1zVG9EYXlzKG1zKSkgKyA0KSAlIDc7
Ci0gICAgaWYgKHdkIDwgMCkKLSAgICAgICAgd2QgKz0gNzsKLSAgICByZXR1cm4gd2Q7Ci19Ci0K
IC8vIEdldCB0aGUgY29tYmluZWQgVVRDICsgRFNUIG9mZnNldCBmb3IgdGhlIHRpbWUgcGFzc2Vk
IGluLgogLy8KIC8vIE5PVEU6IFRoZSBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gdGhlIGZhY3Qg
dGhhdCBubyB0aW1lIHpvbmVzIGhhdmUKQEAgLTE1Miw3ICsxMjgsNyBAQCBzdGF0aWMgTG9jYWxU
aW1lT2Zmc2V0IGxvY2FsVGltZU9mZnNldChWTSYgdm0sIGRvdWJsZSBtcywgV1RGOjpUaW1lVHlw
ZSBpbnB1dFRpbQogICAgICAgICAgICAgICAgIC8vIHRoZSBvZmZzZXQgaW4gdGhlIGNhY2hlLCB3
ZSBncm93IHRoZSBjYWNoZWQgdGltZSBpbnRlcnZhbAogICAgICAgICAgICAgICAgIC8vIGFuZCBy
ZXR1cm4gdGhlIG9mZnNldC4KICAgICAgICAgICAgICAgICBjYWNoZS5lbmQgPSBuZXdFbmQ7Ci0g
ICAgICAgICAgICAgICAgY2FjaGUuaW5jcmVtZW50ID0gbXNQZXJNb250aDsKKyAgICAgICAgICAg
ICAgICBjYWNoZS5pbmNyZW1lbnQgPSBXVEY6Om1zUGVyTW9udGg7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGVuZE9mZnNldDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIExvY2FsVGltZU9m
ZnNldCBvZmZzZXQgPSBjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQobXMsIGlucHV0VGltZVR5cGUp
OwpAQCAtMTYzLDcgKzEzOSw3IEBAIHN0YXRpYyBMb2NhbFRpbWVPZmZzZXQgbG9jYWxUaW1lT2Zm
c2V0KFZNJiB2bSwgZG91YmxlIG1zLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltCiAgICAgICAgICAg
ICAgICAgLy8gdGhlIGludGVydmFsIHRvIHJlZmxlY3QgdGhpcyBhbmQgcmVzZXQgdGhlIGluY3Jl
bWVudC4KICAgICAgICAgICAgICAgICBjYWNoZS5zdGFydCA9IG1zOwogICAgICAgICAgICAgICAg
IGNhY2hlLmVuZCA9IG5ld0VuZDsKLSAgICAgICAgICAgICAgICBjYWNoZS5pbmNyZW1lbnQgPSBt
c1Blck1vbnRoOworICAgICAgICAgICAgICAgIGNhY2hlLmluY3JlbWVudCA9IFdURjo6bXNQZXJN
b250aDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGludGVy
dmFsIGNvbnRhaW5zIGEgRFNUIG9mZnNldCBjaGFuZ2UgYW5kIHRoZSBnaXZlbiB0aW1lIGlzCiAg
ICAgICAgICAgICAgICAgLy8gYmVmb3JlIGl0LiBBZGp1c3QgdGhlIGluY3JlbWVudCB0byBhdm9p
ZCBhIGxpbmVhciBzZWFyY2ggZm9yCkBAIC0xODQsMTcgKzE2MCwyMiBAQCBzdGF0aWMgTG9jYWxU
aW1lT2Zmc2V0IGxvY2FsVGltZU9mZnNldChWTSYgdm0sIGRvdWJsZSBtcywgV1RGOjpUaW1lVHlw
ZSBpbnB1dFRpbQogICAgIGNhY2hlLm9mZnNldCA9IG9mZnNldDsKICAgICBjYWNoZS5zdGFydCA9
IG1zOwogICAgIGNhY2hlLmVuZCA9IG1zOwotICAgIGNhY2hlLmluY3JlbWVudCA9IG1zUGVyTW9u
dGg7CisgICAgY2FjaGUuaW5jcmVtZW50ID0gV1RGOjptc1Blck1vbnRoOwogICAgIHJldHVybiBv
ZmZzZXQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgZG91YmxlIHRpbWVUb01TKGRvdWJsZSBob3VyLCBk
b3VibGUgbWluLCBkb3VibGUgc2VjLCBkb3VibGUgbXMpCit7CisgICAgcmV0dXJuICgoKGhvdXIg
KiBXVEY6Om1pbnV0ZXNQZXJIb3VyICsgbWluKSAqIFdURjo6c2Vjb25kc1Blck1pbnV0ZSArIHNl
YykgKiBXVEY6Om1zUGVyU2Vjb25kICsgbXMpOworfQorCiBkb3VibGUgZ3JlZ29yaWFuRGF0ZVRp
bWVUb01TKFZNJiB2bSwgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIGRvdWJsZSBtaWxsaVNl
Y29uZHMsIFdURjo6VGltZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKICAgICBkb3VibGUgZGF5ID0g
ZGF0ZVRvRGF5c0Zyb20xOTcwKHQueWVhcigpLCB0Lm1vbnRoKCksIHQubW9udGhEYXkoKSk7CiAg
ICAgZG91YmxlIG1zID0gdGltZVRvTVModC5ob3VyKCksIHQubWludXRlKCksIHQuc2Vjb25kKCks
IG1pbGxpU2Vjb25kcyk7CiAgICAgZG91YmxlIGxvY2FsVGltZVJlc3VsdCA9IChkYXkgKiBXVEY6
Om1zUGVyRGF5KSArIG1zOwogCi0gICAgZG91YmxlIGxvY2FsVG9VVENUaW1lT2Zmc2V0ID0gaW5w
dXRUaW1lVHlwZSA9PSBMb2NhbFRpbWUKKyAgICBkb3VibGUgbG9jYWxUb1VUQ1RpbWVPZmZzZXQg
PSBpbnB1dFRpbWVUeXBlID09IFdURjo6TG9jYWxUaW1lCiAgICAgICAgID8gbG9jYWxUaW1lT2Zm
c2V0KHZtLCBsb2NhbFRpbWVSZXN1bHQsIGlucHV0VGltZVR5cGUpLm9mZnNldCA6IDA7CiAKICAg
ICByZXR1cm4gbG9jYWxUaW1lUmVzdWx0IC0gbG9jYWxUb1VUQ1RpbWVPZmZzZXQ7CkBAIC0yMDgs
MTggKzE4OSw3IEBAIHZvaWQgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKFZNJiB2bSwgZG91YmxlIG1z
LCBXVEY6OlRpbWVUeXBlIG91dHB1dFRpbWVUeXBlLCBHcmVnCiAgICAgICAgIGxvY2FsVGltZSA9
IGxvY2FsVGltZU9mZnNldCh2bSwgbXMpOwogICAgICAgICBtcyArPSBsb2NhbFRpbWUub2Zmc2V0
OwogICAgIH0KLQotICAgIGNvbnN0IGludCB5ZWFyID0gbXNUb1llYXIobXMpOwotICAgIHRtLnNl
dFNlY29uZChtc1RvU2Vjb25kcyhtcykpOwotICAgIHRtLnNldE1pbnV0ZShtc1RvTWludXRlcyht
cykpOwotICAgIHRtLnNldEhvdXIobXNUb0hvdXJzKG1zKSk7Ci0gICAgdG0uc2V0V2Vla0RheSht
c1RvV2Vla0RheShtcykpOwotICAgIHRtLnNldFllYXJEYXkoZGF5SW5ZZWFyKG1zLCB5ZWFyKSk7
Ci0gICAgdG0uc2V0TW9udGhEYXkoZGF5SW5Nb250aEZyb21EYXlJblllYXIodG0ueWVhckRheSgp
LCBpc0xlYXBZZWFyKHllYXIpKSk7Ci0gICAgdG0uc2V0TW9udGgobW9udGhGcm9tRGF5SW5ZZWFy
KHRtLnllYXJEYXkoKSwgaXNMZWFwWWVhcih5ZWFyKSkpOwotICAgIHRtLnNldFllYXIoeWVhcik7
Ci0gICAgdG0uc2V0SXNEU1QobG9jYWxUaW1lLmlzRFNUKTsKLSAgICB0bS5zZXRVdGNPZmZzZXQo
bG9jYWxUaW1lLm9mZnNldCAvIFdURjo6bXNQZXJTZWNvbmQpOworICAgIHRtID0gR3JlZ29yaWFu
RGF0ZVRpbWUobXMsIGxvY2FsVGltZSk7CiB9CiAKIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRl
cm1pbmF0ZWRDaGFyYWN0ZXJzKFZNJiB2bSwgY29uc3QgY2hhciogZGF0ZVN0cmluZykKQEAgLTI1
NCw3ICsyMjQsNyBAQCBkb3VibGUgcGFyc2VEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBkYXRlKQogICAgIH0KIAogICAgIGF1dG8gZGF0ZVV0
ZjggPSBleHBlY3RlZFN0cmluZy52YWx1ZSgpOwotICAgIGRvdWJsZSB2YWx1ZSA9IHBhcnNlRVM1
RGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoZGF0ZVV0ZjguZGF0YSgpKTsKKyAgICBk
b3VibGUgdmFsdWUgPSBXVEY6OnBhcnNlRVM1RGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3Rl
cnMoZGF0ZVV0ZjguZGF0YSgpKTsKICAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCiAgICAgICAg
IHZhbHVlID0gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyh2bSwgZGF0ZVV0
ZjguZGF0YSgpKTsKICAgICB2bS5jYWNoZWREYXRlU3RyaW5nID0gZGF0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNw
cAppbmRleCBjMGFiMmUxMzk4NTBiMjU1NTZlN2QyZWFkNWEzYjcyMGMxODY1ZmIxLi4wYmFjZDFm
ODA5YjMwZDBmZGQ3YTY1ZTcxNTkwZDc2ZjBmYWRlM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9EYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCkBAIC0x
MDksMTUgKzEwOSwxMyBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgYwogCiAvKiBDb25zdGFudHMg
Ki8KIAotc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbWF4VW5peFRpbWUgPSAyMTQ1ODU5MjAwLjA7
IC8vIDEyLzMxLzIwMzcKLS8vIEVDTUFTY3JpcHQgYXNrcyBub3QgdG8gc3VwcG9ydCBmb3IgYSBk
YXRlIG9mIHdoaWNoIHRvdGFsCi0vLyBtaWxsaXNlY29uZCB2YWx1ZSBpcyBsYXJnZXIgdGhhbiB0
aGUgZm9sbG93aW5nIHZhbHVlLgotLy8gU2VlIDE1LjkuMS4xNCBvZiBFQ01BLTI2MiA1dGggZWRp
dGlvbi4KLXN0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1heEVDTUFTY3JpcHRUaW1lID0gOC42NEUx
NTsKK2NvbnN0IGNoYXIqIGNvbnN0IHdlZWtkYXlOYW1lWzddID0geyAiTW9uIiwgIlR1ZSIsICJX
ZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIiB9OworY29uc3QgY2hhciogY29uc3QgbW9u
dGhOYW1lWzEyXSA9IHsgIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwg
Ikp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIiB9OworY29uc3QgY2hhciog
Y29uc3QgbW9udGhGdWxsTmFtZVsxMl0gPSB7ICJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgIk1hcmNo
IiwgIkFwcmlsIiwgIk1heSIsICJKdW5lIiwgIkp1bHkiLCAiQXVndXN0IiwgIlNlcHRlbWJlciIs
ICJPY3RvYmVyIiwgIk5vdmVtYmVyIiwgIkRlY2VtYmVyIiB9OwogCiAvLyBEYXkgb2YgeWVhciBm
b3IgdGhlIGZpcnN0IGRheSBvZiBlYWNoIG1vbnRoLCB3aGVyZSBpbmRleCAwIGlzIEphbnVhcnks
IGFuZCBkYXkgMCBpcyBKYW51YXJ5IDEuCiAvLyBGaXJzdCBmb3Igbm9uLWxlYXAgeWVhcnMsIHRo
ZW4gZm9yIGxlYXAgeWVhcnMuCi1zdGF0aWMgY29uc3QgaW50IGZpcnN0RGF5T2ZNb250aFsyXVsx
Ml0gPSB7Citjb25zdCBpbnQgZmlyc3REYXlPZk1vbnRoWzJdWzEyXSA9IHsKICAgICB7MCwgMzEs
IDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzR9LAogICAgIHsw
LCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNX0KIH07
CkBAIC0xMzMsNDYgKzEzMSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRMb2NhbFRpbWUoY29u
c3QgdGltZV90KiBsb2NhbFRpbWUsIHN0cnVjdCB0bSogbG9jYWxUTSkKIH0KICNlbmRpZgogCi1i
b29sIGlzTGVhcFllYXIoaW50IHllYXIpCi17Ci0gICAgaWYgKHllYXIgJSA0ICE9IDApCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoeWVhciAlIDQwMCA9PSAwKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBpZiAoeWVhciAlIDEwMCA9PSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50IGRheXNJblllYXIoaW50
IHllYXIpCi17Ci0gICAgcmV0dXJuIDM2NSArIGlzTGVhcFllYXIoeWVhcik7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgZG91YmxlIGRheXNGcm9tMTk3MFRvWWVhcihpbnQgeWVhcikKLXsKLSAgICAvLyBU
aGUgR3JlZ29yaWFuIENhbGVuZGFyIHJ1bGVzIGZvciBsZWFwIHllYXJzOgotICAgIC8vIEV2ZXJ5
IGZvdXJ0aCB5ZWFyIGlzIGEgbGVhcCB5ZWFyLiAgMjAwNCwgMjAwOCwgYW5kIDIwMTIgYXJlIGxl
YXAgeWVhcnMuCi0gICAgLy8gSG93ZXZlciwgZXZlcnkgaHVuZHJlZHRoIHllYXIgaXMgbm90IGEg
bGVhcCB5ZWFyLiAgMTkwMCBhbmQgMjEwMCBhcmUgbm90IGxlYXAgeWVhcnMuCi0gICAgLy8gRXZl
cnkgZm91ciBodW5kcmVkIHllYXJzLCB0aGVyZSdzIGEgbGVhcCB5ZWFyIGFmdGVyIGFsbC4gIDIw
MDAgYW5kIDI0MDAgYXJlIGxlYXAgeWVhcnMuCi0KLSAgICBzdGF0aWMgY29uc3RleHByIGludCBs
ZWFwRGF5c0JlZm9yZTE5NzFCeTRSdWxlID0gMTk3MCAvIDQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgZXhjbHVkZWRMZWFwRGF5c0JlZm9yZTE5NzFCeTEwMFJ1bGUgPSAxOTcwIC8gMTAwOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGxlYXBEYXlzQmVmb3JlMTk3MUJ5NDAwUnVsZSA9IDE5
NzAgLyA0MDA7Ci0KLSAgICBjb25zdCBkb3VibGUgeWVhck1pbnVzT25lID0geWVhciAtIDE7Ci0g
ICAgY29uc3QgZG91YmxlIHllYXJzVG9BZGRCeTRSdWxlID0gZmxvb3IoeWVhck1pbnVzT25lIC8g
NC4wKSAtIGxlYXBEYXlzQmVmb3JlMTk3MUJ5NFJ1bGU7Ci0gICAgY29uc3QgZG91YmxlIHllYXJz
VG9FeGNsdWRlQnkxMDBSdWxlID0gZmxvb3IoeWVhck1pbnVzT25lIC8gMTAwLjApIC0gZXhjbHVk
ZWRMZWFwRGF5c0JlZm9yZTE5NzFCeTEwMFJ1bGU7Ci0gICAgY29uc3QgZG91YmxlIHllYXJzVG9B
ZGRCeTQwMFJ1bGUgPSBmbG9vcih5ZWFyTWludXNPbmUgLyA0MDAuMCkgLSBsZWFwRGF5c0JlZm9y
ZTE5NzFCeTQwMFJ1bGU7Ci0KLSAgICByZXR1cm4gMzY1LjAgKiAoeWVhciAtIDE5NzAuMCkgKyB5
ZWFyc1RvQWRkQnk0UnVsZSAtIHllYXJzVG9FeGNsdWRlQnkxMDBSdWxlICsgeWVhcnNUb0FkZEJ5
NDAwUnVsZTsKLX0KLQotZG91YmxlIG1zVG9EYXlzKGRvdWJsZSBtcykKLXsKLSAgICByZXR1cm4g
Zmxvb3IobXMgLyBtc1BlckRheSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGFwcGVuZFR3b0RpZ2l0TnVt
YmVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIpCiB7CiAgICAgQVNTRVJUKG51
bWJlciA+PSAwKTsKQEAgLTE4MSwyMiArMTM5LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kVHdvRGln
aXROdW1iZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IG51bWJlcikKICAgICBidWlsZGVy
LmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oJzAnICsgbnVtYmVyICUgMTApKTsKIH0KIAotaW50
IG1zVG9ZZWFyKGRvdWJsZSBtcykKLXsKLSAgICBpbnQgYXBwcm94WWVhciA9IHN0YXRpY19jYXN0
PGludD4oZmxvb3IobXMgLyAobXNQZXJEYXkgKiAzNjUuMjQyNSkpICsgMTk3MCk7Ci0gICAgZG91
YmxlIG1zRnJvbUFwcHJveFllYXJUbzE5NzAgPSBtc1BlckRheSAqIGRheXNGcm9tMTk3MFRvWWVh
cihhcHByb3hZZWFyKTsKLSAgICBpZiAobXNGcm9tQXBwcm94WWVhclRvMTk3MCA+IG1zKQotICAg
ICAgICByZXR1cm4gYXBwcm94WWVhciAtIDE7Ci0gICAgaWYgKG1zRnJvbUFwcHJveFllYXJUbzE5
NzAgKyBtc1BlckRheSAqIGRheXNJblllYXIoYXBwcm94WWVhcikgPD0gbXMpCi0gICAgICAgIHJl
dHVybiBhcHByb3hZZWFyICsgMTsKLSAgICByZXR1cm4gYXBwcm94WWVhcjsKLX0KLQotaW50IGRh
eUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KG1zVG9EYXlzKG1zKSAtIGRheXNGcm9tMTk3MFRvWWVhcih5ZWFyKSk7Ci19Ci0KIHN0YXRp
YyBpbmxpbmUgZG91YmxlIG1zVG9NaWxsaXNlY29uZHMoZG91YmxlIG1zKQogewogICAgIGRvdWJs
ZSByZXN1bHQgPSBmbW9kKG1zLCBtc1BlckRheSk7CkBAIC0yMDUsMTEzICsxNDcsNiBAQCBzdGF0
aWMgaW5saW5lIGRvdWJsZSBtc1RvTWlsbGlzZWNvbmRzKGRvdWJsZSBtcykKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1pbnQgbXNUb01pbnV0ZXMoZG91YmxlIG1zKQotewotICAgIGRvdWJsZSBy
ZXN1bHQgPSBmbW9kKGZsb29yKG1zIC8gbXNQZXJNaW51dGUpLCBtaW51dGVzUGVySG91cik7Ci0g
ICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIHJlc3VsdCArPSBtaW51dGVzUGVySG91cjsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOwotfQotCi1pbnQgbXNUb0hvdXJzKGRv
dWJsZSBtcykKLXsKLSAgICBkb3VibGUgcmVzdWx0ID0gZm1vZChmbG9vcihtcy9tc1BlckhvdXIp
LCBob3Vyc1BlckRheSk7Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIHJlc3VsdCArPSBo
b3Vyc1BlckRheTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOwotfQotCi1p
bnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpCi17Ci0g
ICAgY29uc3QgaW50IGQgPSBkYXlJblllYXI7Ci0gICAgaW50IHN0ZXA7Ci0KLSAgICBpZiAoZCA8
IChzdGVwID0gMzEpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBzdGVwICs9IChsZWFwWWVhciA/
IDI5IDogMjgpOwotICAgIGlmIChkIDwgc3RlcCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYg
KGQgPCAoc3RlcCArPSAzMSkpCi0gICAgICAgIHJldHVybiAyOwotICAgIGlmIChkIDwgKHN0ZXAg
Kz0gMzApKQotICAgICAgICByZXR1cm4gMzsKLSAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKLSAg
ICAgICAgcmV0dXJuIDQ7Ci0gICAgaWYgKGQgPCAoc3RlcCArPSAzMCkpCi0gICAgICAgIHJldHVy
biA1OwotICAgIGlmIChkIDwgKHN0ZXAgKz0gMzEpKQotICAgICAgICByZXR1cm4gNjsKLSAgICBp
ZiAoZCA8IChzdGVwICs9IDMxKSkKLSAgICAgICAgcmV0dXJuIDc7Ci0gICAgaWYgKGQgPCAoc3Rl
cCArPSAzMCkpCi0gICAgICAgIHJldHVybiA4OwotICAgIGlmIChkIDwgKHN0ZXAgKz0gMzEpKQot
ICAgICAgICByZXR1cm4gOTsKLSAgICBpZiAoZCA8IChzdGVwICs9IDMwKSkKLSAgICAgICAgcmV0
dXJuIDEwOwotICAgIHJldHVybiAxMTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGNoZWNrTW9u
dGgoaW50IGRheUluWWVhciwgaW50JiBzdGFydERheU9mVGhpc01vbnRoLCBpbnQmIHN0YXJ0RGF5
T2ZOZXh0TW9udGgsIGludCBkYXlzSW5UaGlzTW9udGgpCi17Ci0gICAgc3RhcnREYXlPZlRoaXNN
b250aCA9IHN0YXJ0RGF5T2ZOZXh0TW9udGg7Ci0gICAgc3RhcnREYXlPZk5leHRNb250aCArPSBk
YXlzSW5UaGlzTW9udGg7Ci0gICAgcmV0dXJuIChkYXlJblllYXIgPD0gc3RhcnREYXlPZk5leHRN
b250aCk7Ci19Ci0KLWludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBi
b29sIGxlYXBZZWFyKQotewotICAgIGNvbnN0IGludCBkID0gZGF5SW5ZZWFyOwotICAgIGludCBz
dGVwOwotICAgIGludCBuZXh0ID0gMzA7Ci0KLSAgICBpZiAoZCA8PSBuZXh0KQotICAgICAgICBy
ZXR1cm4gZCArIDE7Ci0gICAgY29uc3QgaW50IGRheXNJbkZlYiA9IChsZWFwWWVhciA/IDI5IDog
MjgpOwotICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIGRheXNJbkZlYikpCi0gICAg
ICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAz
MSkpCi0gICAgICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBpZiAoY2hlY2tNb250aChkLCBzdGVw
LCBuZXh0LCAzMCkpCi0gICAgICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBpZiAoY2hlY2tNb250
aChkLCBzdGVwLCBuZXh0LCAzMSkpCi0gICAgICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBpZiAo
Y2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMCkpCi0gICAgICAgIHJldHVybiBkIC0gc3RlcDsK
LSAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMSkpCi0gICAgICAgIHJldHVybiBk
IC0gc3RlcDsKLSAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMSkpCi0gICAgICAg
IHJldHVybiBkIC0gc3RlcDsKLSAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMCkp
Ci0gICAgICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBu
ZXh0LCAzMSkpCi0gICAgICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBpZiAoY2hlY2tNb250aChk
LCBzdGVwLCBuZXh0LCAzMCkpCi0gICAgICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBzdGVwID0g
bmV4dDsKLSAgICByZXR1cm4gZCAtIHN0ZXA7Ci19Ci0KLWludCBkYXlJblllYXIoaW50IHllYXIs
IGludCBtb250aCwgaW50IGRheSkKLXsKLSAgICByZXR1cm4gZmlyc3REYXlPZk1vbnRoW2lzTGVh
cFllYXIoeWVhcildW21vbnRoXSArIGRheSAtIDE7Ci19Ci0KLWRvdWJsZSBkYXRlVG9EYXlzRnJv
bTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSkKLXsKLSAgICB5ZWFyICs9IG1vbnRo
IC8gMTI7Ci0KLSAgICBtb250aCAlPSAxMjsKLSAgICBpZiAobW9udGggPCAwKSB7Ci0gICAgICAg
IG1vbnRoICs9IDEyOwotICAgICAgICAtLXllYXI7Ci0gICAgfQotCi0gICAgZG91YmxlIHllYXJk
YXkgPSBmbG9vcihkYXlzRnJvbTE5NzBUb1llYXIoeWVhcikpOwotICAgIEFTU0VSVCgoeWVhciA+
PSAxOTcwICYmIHllYXJkYXkgPj0gMCkgfHwgKHllYXIgPCAxOTcwICYmIHllYXJkYXkgPCAwKSk7
Ci0gICAgcmV0dXJuIHllYXJkYXkgKyBkYXlJblllYXIoeWVhciwgbW9udGgsIGRheSk7Ci19Ci0K
IC8vIFRoZXJlIGlzIGEgaGFyZCBsaW1pdCBhdCAyMDM4IHRoYXQgd2UgY3VycmVudGx5IGRvIG5v
dCBoYXZlIGEgd29ya2Fyb3VuZAogLy8gZm9yIChyZGFyOi8vcHJvYmxlbS81MDUyOTc1KS4KIHN0
YXRpYyBpbmxpbmUgaW50IG1heGltdW1ZZWFyRm9yRFNUKCkKQEAgLTExNTksMTMgKzk5NCw2IEBA
IGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIq
IGRhdGVTdHJpbmcpCiAgICAgcmV0dXJuIG1zIC0gKG9mZnNldCAqIG1zUGVyTWludXRlKTsKIH0K
IAotZG91YmxlIHRpbWVDbGlwKGRvdWJsZSB0KQotewotICAgIGlmIChzdGQ6OmFicyh0KSA+IG1h
eEVDTUFTY3JpcHRUaW1lKQotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjpxdWlldF9OYU4oKTsKLSAgICByZXR1cm4gc3RkOjp0cnVuYyh0KSArIDAuMDsKLX0KLQog
Ly8gU2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI4MjIjc2VjdGlvbi0zLjMgZm9y
IG1vcmUgaW5mb3JtYXRpb24uCiBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3RyaW5nKHVuc2lnbmVk
IGRheU9mV2VlaywgdW5zaWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdW5zaWduZWQgeWVhciwg
dW5zaWduZWQgaG91cnMsIHVuc2lnbmVkIG1pbnV0ZXMsIHVuc2lnbmVkIHNlY29uZHMsIGludCB1
dGNPZmZzZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oIGIvU291
cmNlL1dURi93dGYvRGF0ZU1hdGguaAppbmRleCBmOWUyODExZmJhYzRlNzc5ODVmNzY2NTgwMDUx
OGE1NTY0MDQ0ODUzLi5iZTlmMTI3MzI0NDAwMzkyMWMwZjZlMzg4NDg0NWE4ZmUzMjA2MDJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0RhdGVNYXRoLmgKQEAgLTkyLDcgKzkyLDYgQEAgaW50IGVxdWl2YWxlbnRZZWFyRm9yRFNUKGlu
dCB5ZWFyKTsKIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgcGFyc2VFUzVEYXRlRnJvbU51bGxU
ZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25z
dCBjaGFyKiBkYXRlU3RyaW5nKTsKIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgcGFyc2VEYXRl
RnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29s
JiBoYXZlVFosIGludCYgb2Zmc2V0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdGltZUNs
aXAoZG91YmxlKTsKIC8vIGRheU9mV2VlazogWzAsIDZdIDAgYmVpbmcgTW9uZGF5LCBkYXk6IFsx
LCAzMV0sIG1vbnRoOiBbMCwgMTFdLCB5ZWFyOiBleDogMjAxMSwgaG91cnM6IFswLCAyM10sIG1p
bnV0ZXM6IFswLCA1OV0sIHNlY29uZHM6IFswLCA1OV0sIHV0Y09mZnNldDogWy03MjAsNzIwXS4g
CiBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3RyaW5nKHVuc2lnbmVkIGRheU9mV2VlaywgdW5zaWdu
ZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdW5zaWduZWQgeWVhciwgdW5zaWduZWQgaG91cnMsIHVu
c2lnbmVkIG1pbnV0ZXMsIHVuc2lnbmVkIHNlY29uZHMsIGludCB1dGNPZmZzZXQpOwogCkBAIC0x
MDIsMzMgKzEwMSwyOTYgQEAgaW5saW5lIGRvdWJsZSBqc0N1cnJlbnRUaW1lKCkKICAgICByZXR1
cm4gZmxvb3IoV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRz
KCkpOwogfQogCi1jb25zdCBjaGFyKiBjb25zdCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiIsICJU
dWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IiwgIlN1biIgfTsKLWNvbnN0IGNoYXIqIGNv
bnN0IG1vbnRoTmFtZVsxMl0gPSB7ICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5Iiwg
Ikp1biIsICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIgfTsKLWNvbnN0
IGNoYXIqIGNvbnN0IG1vbnRoRnVsbE5hbWVbMTJdID0geyAiSmFudWFyeSIsICJGZWJydWFyeSIs
ICJNYXJjaCIsICJBcHJpbCIsICJNYXkiLCAiSnVuZSIsICJKdWx5IiwgIkF1Z3VzdCIsICJTZXB0
ZW1iZXIiLCAiT2N0b2JlciIsICJOb3ZlbWJlciIsICJEZWNlbWJlciIgfTsKK2V4dGVybiBXVEZf
RVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogY29uc3Qgd2Vla2RheU5hbWVbN107CitleHRlcm4g
V1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIGNvbnN0IG1vbnRoTmFtZVsxMl07CitleHRl
cm4gV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIGNvbnN0IG1vbnRoRnVsbE5hbWVbMTJd
OworZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBpbnQgZmlyc3REYXlPZk1vbnRoWzJd
WzEyXTsKIAotY29uc3QgZG91YmxlIGhvdXJzUGVyRGF5ID0gMjQuMDsKLWNvbnN0IGRvdWJsZSBt
aW51dGVzUGVySG91ciA9IDYwLjA7Ci1jb25zdCBkb3VibGUgc2Vjb25kc1Blck1pbnV0ZSA9IDYw
LjA7Ci1jb25zdCBkb3VibGUgbXNQZXJTZWNvbmQgPSAxMDAwLjA7Ci1jb25zdCBkb3VibGUgbXNQ
ZXJNb250aCA9IDI1OTIwMDAwMDAuMDsKLWNvbnN0IGRvdWJsZSBzZWNvbmRzUGVySG91ciA9IHNl
Y29uZHNQZXJNaW51dGUgKiBtaW51dGVzUGVySG91cjsKLWNvbnN0IGRvdWJsZSBzZWNvbmRzUGVy
RGF5ID0gc2Vjb25kc1BlckhvdXIgKiBob3Vyc1BlckRheTsKLWNvbnN0IGRvdWJsZSBtc1Blck1p
bnV0ZSA9IG1zUGVyU2Vjb25kICogc2Vjb25kc1Blck1pbnV0ZTsKLWNvbnN0IGRvdWJsZSBtc1Bl
ckhvdXIgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJIb3VyOwotY29uc3QgZG91YmxlIG1zUGVy
RGF5ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVyRGF5Oworc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUgaG91cnNQZXJEYXkgPSAyNC4wOworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbWludXRlc1Bl
ckhvdXIgPSA2MC4wOworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgc2Vjb25kc1Blck1pbnV0ZSA9
IDYwLjA7CitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBtc1BlclNlY29uZCA9IDEwMDAuMDsKK3N0
YXRpYyBjb25zdGV4cHIgZG91YmxlIG1zUGVyTW9udGggPSAyNTkyMDAwMDAwLjA7CitzdGF0aWMg
Y29uc3RleHByIGRvdWJsZSBzZWNvbmRzUGVySG91ciA9IHNlY29uZHNQZXJNaW51dGUgKiBtaW51
dGVzUGVySG91cjsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIHNlY29uZHNQZXJEYXkgPSBzZWNv
bmRzUGVySG91ciAqIGhvdXJzUGVyRGF5Oworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbXNQZXJN
aW51dGUgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJNaW51dGU7CitzdGF0aWMgY29uc3RleHBy
IGRvdWJsZSBtc1BlckhvdXIgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJIb3VyOworc3RhdGlj
IGNvbnN0ZXhwciBkb3VibGUgbXNQZXJEYXkgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJEYXk7
CiAKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTGVhcFllYXIoaW50IHllYXIpOworc3RhdGlj
IGNvbnN0ZXhwciBkb3VibGUgbWF4VW5peFRpbWUgPSAyMTQ1ODU5MjAwLjA7IC8vIDEyLzMxLzIw
MzcKKy8vIEVDTUFTY3JpcHQgYXNrcyBub3QgdG8gc3VwcG9ydCBmb3IgYSBkYXRlIG9mIHdoaWNo
IHRvdGFsCisvLyBtaWxsaXNlY29uZCB2YWx1ZSBpcyBsYXJnZXIgdGhhbiB0aGUgZm9sbG93aW5n
IHZhbHVlLgorLy8gU2VlIDE1LjkuMS4xNCBvZiBFQ01BLTI2MiA1dGggZWRpdGlvbi4KK3N0YXRp
YyBjb25zdGV4cHIgZG91YmxlIG1heEVDTUFTY3JpcHRUaW1lID0gOC42NEUxNTsKKworY2xhc3Mg
VGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kcyB7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQ2NF90IGhvdXJzUGVyRGF5ID0gMjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQ2NF90IG1pbnV0ZXNQZXJIb3VyID0gNjA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90
IHNlY29uZHNQZXJNaW51dGUgPSA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbXNQ
ZXJTZWNvbmQgPSAxMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBtc1Blck1vbnRo
ID0gMjU5MjAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qgc2Vjb25kc1Blckhv
dXIgPSBzZWNvbmRzUGVyTWludXRlICogbWludXRlc1BlckhvdXI7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQ2NF90IHNlY29uZHNQZXJEYXkgPSBzZWNvbmRzUGVySG91ciAqIGhvdXJzUGVyRGF5
OworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBtc1Blck1pbnV0ZSA9IG1zUGVyU2Vjb25k
ICogc2Vjb25kc1Blck1pbnV0ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbXNQZXJI
b3VyID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVySG91cjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGludDY0X3QgbXNQZXJEYXkgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJEYXk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQ2NF90IG1heEVDTUFTY3JpcHRUaW1lID0gOC42NEUxNTsKKworICAg
IGV4cGxpY2l0IFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHMoaW50NjRfdCB2YWx1ZSkK
KyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQ2NF90IHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV92YWx1ZSk7IH0KK3ByaXZhdGU6Cisg
ICAgaW50NjRfdCBtX3ZhbHVlOworfTsKKworaW5saW5lIGRvdWJsZSB0aW1lQ2xpcChkb3VibGUg
dCkKK3sKKyAgICBpZiAoc3RkOjphYnModCkgPiBtYXhFQ01BU2NyaXB0VGltZSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CisgICAgcmV0
dXJuIHN0ZDo6dHJ1bmModCkgKyAwLjA7Cit9CisKK2lubGluZSBkb3VibGUgZGF5c0Zyb20xOTcw
VG9ZZWFyKGludCB5ZWFyKQoreworICAgIC8vIFRoZSBHcmVnb3JpYW4gQ2FsZW5kYXIgcnVsZXMg
Zm9yIGxlYXAgeWVhcnM6CisgICAgLy8gRXZlcnkgZm91cnRoIHllYXIgaXMgYSBsZWFwIHllYXIu
IDIwMDQsIDIwMDgsIGFuZCAyMDEyIGFyZSBsZWFwIHllYXJzLgorICAgIC8vIEhvd2V2ZXIsIGV2
ZXJ5IGh1bmRyZWR0aCB5ZWFyIGlzIG5vdCBhIGxlYXAgeWVhci4gMTkwMCBhbmQgMjEwMCBhcmUg
bm90IGxlYXAgeWVhcnMuCisgICAgLy8gRXZlcnkgZm91ciBodW5kcmVkIHllYXJzLCB0aGVyZSdz
IGEgbGVhcCB5ZWFyIGFmdGVyIGFsbC4gMjAwMCBhbmQgMjQwMCBhcmUgbGVhcCB5ZWFycy4KKwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGxlYXBEYXlzQmVmb3JlMTk3MUJ5NFJ1bGUgPSAxOTcw
IC8gNDsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBleGNsdWRlZExlYXBEYXlzQmVmb3JlMTk3
MUJ5MTAwUnVsZSA9IDE5NzAgLyAxMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbGVhcERh
eXNCZWZvcmUxOTcxQnk0MDBSdWxlID0gMTk3MCAvIDQwMDsKKworICAgIGNvbnN0IGRvdWJsZSB5
ZWFyTWludXNPbmUgPSB5ZWFyIC0gMTsKKyAgICBjb25zdCBkb3VibGUgeWVhcnNUb0FkZEJ5NFJ1
bGUgPSBmbG9vcih5ZWFyTWludXNPbmUgLyA0LjApIC0gbGVhcERheXNCZWZvcmUxOTcxQnk0UnVs
ZTsKKyAgICBjb25zdCBkb3VibGUgeWVhcnNUb0V4Y2x1ZGVCeTEwMFJ1bGUgPSBmbG9vcih5ZWFy
TWludXNPbmUgLyAxMDAuMCkgLSBleGNsdWRlZExlYXBEYXlzQmVmb3JlMTk3MUJ5MTAwUnVsZTsK
KyAgICBjb25zdCBkb3VibGUgeWVhcnNUb0FkZEJ5NDAwUnVsZSA9IGZsb29yKHllYXJNaW51c09u
ZSAvIDQwMC4wKSAtIGxlYXBEYXlzQmVmb3JlMTk3MUJ5NDAwUnVsZTsKKworICAgIHJldHVybiAz
NjUuMCAqICh5ZWFyIC0gMTk3MC4wKSArIHllYXJzVG9BZGRCeTRSdWxlIC0geWVhcnNUb0V4Y2x1
ZGVCeTEwMFJ1bGUgKyB5ZWFyc1RvQWRkQnk0MDBSdWxlOworfQorCitpbmxpbmUgaW50NjRfdCBk
YXlzRnJvbTE5NzBUb1llYXJUaW1lQ2xpcHBlZFBvc2l0aXZlKGludCB5ZWFyKQoreworICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IGxlYXBEYXlzQmVmb3JlMTk3MUJ5NFJ1bGUgPSAxOTcwIC8gNDsK
KyAgICBzdGF0aWMgY29uc3RleHByIGludCBleGNsdWRlZExlYXBEYXlzQmVmb3JlMTk3MUJ5MTAw
UnVsZSA9IDE5NzAgLyAxMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbGVhcERheXNCZWZv
cmUxOTcxQnk0MDBSdWxlID0gMTk3MCAvIDQwMDsKKworICAgIEFTU0VSVCh5ZWFyID49IDE5NzAp
OworICAgIGNvbnN0IGludDY0X3QgeWVhck1pbnVzT25lID0geWVhciAtIDE7CisgICAgY29uc3Qg
aW50NjRfdCB5ZWFyc1RvQWRkQnk0UnVsZSA9IHllYXJNaW51c09uZSAvIDQuMCAtIGxlYXBEYXlz
QmVmb3JlMTk3MUJ5NFJ1bGU7CisgICAgY29uc3QgaW50NjRfdCB5ZWFyc1RvRXhjbHVkZUJ5MTAw
UnVsZSA9IHllYXJNaW51c09uZSAvIDEwMC4wIC0gZXhjbHVkZWRMZWFwRGF5c0JlZm9yZTE5NzFC
eTEwMFJ1bGU7CisgICAgY29uc3QgaW50NjRfdCB5ZWFyc1RvQWRkQnk0MDBSdWxlID0geWVhck1p
bnVzT25lIC8gNDAwLjAgLSBsZWFwRGF5c0JlZm9yZTE5NzFCeTQwMFJ1bGU7CisKKyAgICByZXR1
cm4gMzY1ICogKHllYXIgLSAxOTcwKSArIHllYXJzVG9BZGRCeTRSdWxlIC0geWVhcnNUb0V4Y2x1
ZGVCeTEwMFJ1bGUgKyB5ZWFyc1RvQWRkQnk0MDBSdWxlOworfQorCitpbmxpbmUgYm9vbCBpc0xl
YXBZZWFyKGludCB5ZWFyKQoreworICAgIGlmICh5ZWFyICUgNCAhPSAwKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKHllYXIgJSA0MDAgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKHllYXIgJSAxMDAgPT0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB0cnVlOworfQorCitpbmxpbmUgaW50IGRheXNJblllYXIoaW50IHllYXIpCit7CisgICAg
cmV0dXJuIDM2NSArIGlzTGVhcFllYXIoeWVhcik7Cit9CisKK2lubGluZSBkb3VibGUgbXNUb0Rh
eXMoZG91YmxlIG1zKQoreworICAgIHJldHVybiBmbG9vcihtcyAvIG1zUGVyRGF5KTsKK30KKwor
aW5saW5lIGludDY0X3QgbXNUb0RheXMoVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kcyBt
cykKK3sKKyAgICByZXR1cm4gbXMudmFsdWUoKSAvIFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNl
Y29uZHM6Om1zUGVyRGF5OworfQorCitpbmxpbmUgaW50IGRheUluWWVhcihpbnQgeWVhciwgaW50
IG1vbnRoLCBpbnQgZGF5KQoreworICAgIHJldHVybiBmaXJzdERheU9mTW9udGhbaXNMZWFwWWVh
cih5ZWFyKV1bbW9udGhdICsgZGF5IC0gMTsKK30KKworaW5saW5lIGludCBkYXlJblllYXIoZG91
YmxlIG1zLCBpbnQgeWVhcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5
cyhtcykgLSBkYXlzRnJvbTE5NzBUb1llYXIoeWVhcikpOworfQorCitpbmxpbmUgaW50IGRheUlu
WWVhcihUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzIG1zLCBpbnQgeWVhcikKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5cyhtcykgLSBkYXlzRnJvbTE5NzBUb1ll
YXJUaW1lQ2xpcHBlZFBvc2l0aXZlKHllYXIpKTsKK30KIAogLy8gUmV0dXJucyB0aGUgbnVtYmVy
IG9mIGRheXMgZnJvbSAxOTcwLTAxLTAxIHRvIHRoZSBzcGVjaWZpZWQgZGF0ZS4KLVdURl9FWFBP
UlRfUFJJVkFURSBkb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgs
IGludCBkYXkpOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCBtc1RvWWVhcihkb3VibGUgbXMpOwot
V1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBtc1RvRGF5cyhkb3VibGUgbXMpOwotV1RGX0VYUE9S
VF9QUklWQVRFIGludCBtc1RvTWludXRlcyhkb3VibGUgbXMpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGludCBtc1RvSG91cnMoZG91YmxlIG1zKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgZGF5SW5Z
ZWFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpOwotV1RGX0VYUE9SVF9QUklWQVRFIGlu
dCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50
IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKLVdURl9F
WFBPUlRfUFJJVkFURSBpbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwg
Ym9vbCBsZWFwWWVhcik7CitpbmxpbmUgZG91YmxlIGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVh
ciwgaW50IG1vbnRoLCBpbnQgZGF5KQoreworICAgIHllYXIgKz0gbW9udGggLyAxMjsKKworICAg
IG1vbnRoICU9IDEyOworICAgIGlmIChtb250aCA8IDApIHsKKyAgICAgICAgbW9udGggKz0gMTI7
CisgICAgICAgIC0teWVhcjsKKyAgICB9CisKKyAgICBkb3VibGUgeWVhcmRheSA9IGZsb29yKGRh
eXNGcm9tMTk3MFRvWWVhcih5ZWFyKSk7CisgICAgQVNTRVJUKCh5ZWFyID49IDE5NzAgJiYgeWVh
cmRheSA+PSAwKSB8fCAoeWVhciA8IDE5NzAgJiYgeWVhcmRheSA8IDApKTsKKyAgICByZXR1cm4g
eWVhcmRheSArIGRheUluWWVhcih5ZWFyLCBtb250aCwgZGF5KTsKK30KKworaW5saW5lIGludCBt
c1RvWWVhcihkb3VibGUgbXMpCit7CisgICAgaW50IGFwcHJveFllYXIgPSBzdGF0aWNfY2FzdDxp
bnQ+KGZsb29yKG1zIC8gKG1zUGVyRGF5ICogMzY1LjI0MjUpKSArIDE5NzApOworICAgIGRvdWJs
ZSBtc0Zyb21BcHByb3hZZWFyVG8xOTcwID0gbXNQZXJEYXkgKiBkYXlzRnJvbTE5NzBUb1llYXIo
YXBwcm94WWVhcik7CisgICAgaWYgKG1zRnJvbUFwcHJveFllYXJUbzE5NzAgPiBtcykKKyAgICAg
ICAgcmV0dXJuIGFwcHJveFllYXIgLSAxOworICAgIGlmIChtc0Zyb21BcHByb3hZZWFyVG8xOTcw
ICsgbXNQZXJEYXkgKiBkYXlzSW5ZZWFyKGFwcHJveFllYXIpIDw9IG1zKQorICAgICAgICByZXR1
cm4gYXBwcm94WWVhciArIDE7CisgICAgcmV0dXJuIGFwcHJveFllYXI7Cit9CisKK2lubGluZSBp
bnQgbXNUb01pbnV0ZXMoZG91YmxlIG1zKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBmbW9kKGZs
b29yKG1zIC8gbXNQZXJNaW51dGUpLCBtaW51dGVzUGVySG91cik7CisgICAgaWYgKHJlc3VsdCA8
IDApCisgICAgICAgIHJlc3VsdCArPSBtaW51dGVzUGVySG91cjsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihyZXN1bHQpOworfQorCitpbmxpbmUgaW50IG1zVG9NaW51dGVzKFRpbWVDbGlw
cGVkUG9zaXRpdmVNaWxsaXNlY29uZHMgbXMpCit7CisgICAgaW50NjRfdCByZXN1bHQgPSAobXMu
dmFsdWUoKSAvIFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6Om1zUGVyTWludXRlKSAl
IFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6Om1pbnV0ZXNQZXJIb3VyOworICAgIGlm
IChyZXN1bHQgPCAwKQorICAgICAgICByZXN1bHQgKz0gVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxp
c2Vjb25kczo6bWludXRlc1BlckhvdXI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVz
dWx0KTsKK30KKworaW5saW5lIGludCBtc1RvSG91cnMoZG91YmxlIG1zKQoreworICAgIGRvdWJs
ZSByZXN1bHQgPSBmbW9kKGZsb29yKG1zIC8gbXNQZXJIb3VyKSwgaG91cnNQZXJEYXkpOworICAg
IGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXN1bHQgKz0gaG91cnNQZXJEYXk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKK30KKworaW5saW5lIGludCBtc1RvSG91cnMo
VGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kcyBtcykKK3sKKyAgICBpbnQ2NF90IHJlc3Vs
dCA9IChtcy52YWx1ZSgpIC8gVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kczo6bXNQZXJI
b3VyKSAlIFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6OmhvdXJzUGVyRGF5OworICAg
IGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXN1bHQgKz0gaG91cnNQZXJEYXk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKK30KKworaW5saW5lIGludCBtc1RvU2Vjb25k
cyhkb3VibGUgbXMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IGZtb2QoZmxvb3IobXMgLyBtc1Bl
clNlY29uZCksIHNlY29uZHNQZXJNaW51dGUpOworICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAg
ICByZXN1bHQgKz0gc2Vjb25kc1Blck1pbnV0ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihyZXN1bHQpOworfQorCitpbmxpbmUgaW50IG1zVG9TZWNvbmRzKFRpbWVDbGlwcGVkUG9zaXRp
dmVNaWxsaXNlY29uZHMgbXMpCit7CisgICAgaW50NjRfdCByZXN1bHQgPSBtcy52YWx1ZSgpIC8g
VGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kczo6bXNQZXJTZWNvbmQgJSBUaW1lQ2xpcHBl
ZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjpzZWNvbmRzUGVyTWludXRlOworICAgIGlmIChyZXN1bHQg
PCAwKQorICAgICAgICByZXN1bHQgKz0gVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kczo6
c2Vjb25kc1Blck1pbnV0ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOwor
fQorCisvLyAwOiBTdW5kYXksIDE6IE1vbmRheSwgZXRjLgoraW5saW5lIGludCBtc1RvV2Vla0Rh
eShkb3VibGUgbXMpCit7CisgICAgaW50IHdkID0gKHN0YXRpY19jYXN0PGludD4obXNUb0RheXMo
bXMpKSArIDQpICUgNzsKKyAgICBpZiAod2QgPCAwKQorICAgICAgICB3ZCArPSA3OworICAgIHJl
dHVybiB3ZDsKK30KKworaW5saW5lIGludCBtc1RvV2Vla0RheShUaW1lQ2xpcHBlZFBvc2l0aXZl
TWlsbGlzZWNvbmRzIG1zKQoreworICAgIGludCB3ZCA9IChzdGF0aWNfY2FzdDxpbnQ+KG1zVG9E
YXlzKG1zKSkgKyA0KSAlIDc7CisgICAgaWYgKHdkIDwgMCkKKyAgICAgICAgd2QgKz0gNzsKKyAg
ICByZXR1cm4gd2Q7Cit9CisKK2lubGluZSBpbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJ
blllYXIsIGJvb2wgbGVhcFllYXIpCit7CisgICAgY29uc3QgaW50IGQgPSBkYXlJblllYXI7Cisg
ICAgaW50IHN0ZXA7CisKKyAgICBpZiAoZCA8IChzdGVwID0gMzEpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBzdGVwICs9IChsZWFwWWVhciA/IDI5IDogMjgpOworICAgIGlmIChkIDwgc3RlcCkK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGQgPCAoc3RlcCArPSAzMSkpCisgICAgICAgIHJl
dHVybiAyOworICAgIGlmIChkIDwgKHN0ZXAgKz0gMzApKQorICAgICAgICByZXR1cm4gMzsKKyAg
ICBpZiAoZCA8IChzdGVwICs9IDMxKSkKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgaWYgKGQgPCAo
c3RlcCArPSAzMCkpCisgICAgICAgIHJldHVybiA1OworICAgIGlmIChkIDwgKHN0ZXAgKz0gMzEp
KQorICAgICAgICByZXR1cm4gNjsKKyAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKKyAgICAgICAg
cmV0dXJuIDc7CisgICAgaWYgKGQgPCAoc3RlcCArPSAzMCkpCisgICAgICAgIHJldHVybiA4Owor
ICAgIGlmIChkIDwgKHN0ZXAgKz0gMzEpKQorICAgICAgICByZXR1cm4gOTsKKyAgICBpZiAoZCA8
IChzdGVwICs9IDMwKSkKKyAgICAgICAgcmV0dXJuIDEwOworICAgIHJldHVybiAxMTsKK30KKwor
aW5saW5lIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxl
YXBZZWFyKQoreworICAgIGF1dG8gY2hlY2tNb250aCA9IFtdIChpbnQgZGF5SW5ZZWFyLCBpbnQm
IHN0YXJ0RGF5T2ZUaGlzTW9udGgsIGludCYgc3RhcnREYXlPZk5leHRNb250aCwgaW50IGRheXNJ
blRoaXNNb250aCkgLT4gYm9vbCB7CisgICAgICAgIHN0YXJ0RGF5T2ZUaGlzTW9udGggPSBzdGFy
dERheU9mTmV4dE1vbnRoOworICAgICAgICBzdGFydERheU9mTmV4dE1vbnRoICs9IGRheXNJblRo
aXNNb250aDsKKyAgICAgICAgcmV0dXJuIChkYXlJblllYXIgPD0gc3RhcnREYXlPZk5leHRNb250
aCk7CisgICAgfTsKKworICAgIGNvbnN0IGludCBkID0gZGF5SW5ZZWFyOworICAgIGludCBzdGVw
OworICAgIGludCBuZXh0ID0gMzA7CisKKyAgICBpZiAoZCA8PSBuZXh0KQorICAgICAgICByZXR1
cm4gZCArIDE7CisgICAgY29uc3QgaW50IGRheXNJbkZlYiA9IChsZWFwWWVhciA/IDI5IDogMjgp
OworICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIGRheXNJbkZlYikpCisgICAgICAg
IHJldHVybiBkIC0gc3RlcDsKKyAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMSkp
CisgICAgICAgIHJldHVybiBkIC0gc3RlcDsKKyAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBu
ZXh0LCAzMCkpCisgICAgICAgIHJldHVybiBkIC0gc3RlcDsKKyAgICBpZiAoY2hlY2tNb250aChk
LCBzdGVwLCBuZXh0LCAzMSkpCisgICAgICAgIHJldHVybiBkIC0gc3RlcDsKKyAgICBpZiAoY2hl
Y2tNb250aChkLCBzdGVwLCBuZXh0LCAzMCkpCisgICAgICAgIHJldHVybiBkIC0gc3RlcDsKKyAg
ICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMSkpCisgICAgICAgIHJldHVybiBkIC0g
c3RlcDsKKyAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMSkpCisgICAgICAgIHJl
dHVybiBkIC0gc3RlcDsKKyAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMCkpCisg
ICAgICAgIHJldHVybiBkIC0gc3RlcDsKKyAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0
LCAzMSkpCisgICAgICAgIHJldHVybiBkIC0gc3RlcDsKKyAgICBpZiAoY2hlY2tNb250aChkLCBz
dGVwLCBuZXh0LCAzMCkpCisgICAgICAgIHJldHVybiBkIC0gc3RlcDsKKyAgICBzdGVwID0gbmV4
dDsKKyAgICByZXR1cm4gZCAtIHN0ZXA7Cit9CiAKIC8vIFJldHVybnMgY29tYmluZWQgb2Zmc2V0
IGluIG1pbGxpc2Vjb25kIChVVEMgKyBEU1QpLgogV1RGX0VYUE9SVF9QUklWQVRFIExvY2FsVGlt
ZU9mZnNldCBjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQoZG91YmxlIHV0Y0luTWlsbGlzZWNvbmRz
LCBUaW1lVHlwZSA9IFVUQ1RpbWUpOwpAQCAtMTU1LDMgKzQxNyw1IEBAIHVzaW5nIFdURjo6cGFy
c2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVyczsKIHVzaW5nIFdURjo6bWFrZVJGQzI4
MjJEYXRlU3RyaW5nOwogdXNpbmcgV1RGOjpMb2NhbFRpbWVPZmZzZXQ7CiB1c2luZyBXVEY6OmNh
bGN1bGF0ZUxvY2FsVGltZU9mZnNldDsKK3VzaW5nIFdURjo6dGltZUNsaXA7Cit1c2luZyBXVEY6
OmpzQ3VycmVudFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRl
VGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGltZS5jcHAKaW5kZXggYTNj
NDRiOTIxYTcwODMyYzI0NTc4ZWY0YjkwNGRhMjEyMjY4MmY2NC4uMjFkZGQ5M2Q5ZTAyYjQ2MDE2
Mzc4Nzg5ODI1NzkyNDQwY2UwYTk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvR3JlZ29y
aWFuRGF0ZVRpbWUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0dyZWdvcmlhbkRhdGVUaW1lLmNw
cApAQCAtMzUsNiArMzUsNTMgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKK0dyZWdvcmlhbkRhdGVU
aW1lOjpHcmVnb3JpYW5EYXRlVGltZShkb3VibGUgbXMsIExvY2FsVGltZU9mZnNldCBsb2NhbFRp
bWUpCit7CisgICAgaWYgKG1zID49IDAKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2KQorICAg
ICAgICAgICAgLy8gVGhlIFZTIENvbXBpbGVyIGZvciAzMi1iaXQgYnVpbGRzIGdlbmVyYXRlcyBh
IGZsb2F0aW5nIHBvaW50IGVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBjYXN0CisgICAgICAgICAg
ICAvLyBmcm9tIGFuIGluZmluaXR5IHRvIGEgNjQtYml0IGludGVnZXIuIFdlIGxlYXZlIHRoaXMg
cm91dGluZSB3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBlcnJvcgorICAgICAgICAgICAgLy8gbGVm
dCBpbiBhIHJlZ2lzdGVyLCBjYXVzaW5nIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBsYXRlciBmbG9h
dGluZyBwb2ludCBvcGVyYXRpb25zLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFRv
IGF2b2lkIHRoaXMgaXNzdWUsIHdlIGNoZWNrIGZvciBpbmZpbml0eSBoZXJlLCBhbmQgcmV0dXJu
IGZhbHNlIGluIHRoYXQgY2FzZS4KKyAgICAgICAgICAgICYmICFzdGQ6OmlzaW5mKG1zKQorI2Vu
ZGlmCisgICAgICAgICkgeworICAgICAgICBpbnQ2NF90IGludGVnZXIgPSBzdGF0aWNfY2FzdDxp
bnQ2NF90Pihtcyk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGludGVnZXIpID09
IG1zICYmIGludGVnZXIgPD0gbWF4RUNNQVNjcmlwdFRpbWUpIHsKKyAgICAgICAgICAgIC8vIFBv
c2l0aXZlIGludGVnZXIgZmFzdCBwYXRoLgorICAgICAgICAgICAgV1RGOjpUaW1lQ2xpcHBlZFBv
c2l0aXZlTWlsbGlzZWNvbmRzIHRpbWVDbGlwcGVkKGludGVnZXIpOworICAgICAgICAgICAgY29u
c3QgaW50IHllYXIgPSBtc1RvWWVhcihtcyk7CisgICAgICAgICAgICBzZXRTZWNvbmQobXNUb1Nl
Y29uZHModGltZUNsaXBwZWQpKTsKKyAgICAgICAgICAgIHNldE1pbnV0ZShtc1RvTWludXRlcyh0
aW1lQ2xpcHBlZCkpOworICAgICAgICAgICAgc2V0SG91cihtc1RvSG91cnModGltZUNsaXBwZWQp
KTsKKyAgICAgICAgICAgIHNldFdlZWtEYXkobXNUb1dlZWtEYXkodGltZUNsaXBwZWQpKTsKKyAg
ICAgICAgICAgIGludCB5ZWFyRGF5ID0gZGF5SW5ZZWFyKHRpbWVDbGlwcGVkLCB5ZWFyKTsKKyAg
ICAgICAgICAgIGJvb2wgbGVhcFllYXIgPSBpc0xlYXBZZWFyKHllYXIpOworICAgICAgICAgICAg
c2V0WWVhckRheSh5ZWFyRGF5KTsKKyAgICAgICAgICAgIHNldE1vbnRoRGF5KGRheUluTW9udGhG
cm9tRGF5SW5ZZWFyKHllYXJEYXksIGxlYXBZZWFyKSk7CisgICAgICAgICAgICBzZXRNb250aCht
b250aEZyb21EYXlJblllYXIoeWVhckRheSwgbGVhcFllYXIpKTsKKyAgICAgICAgICAgIHNldFll
YXIoeWVhcik7CisgICAgICAgICAgICBzZXRJc0RTVChsb2NhbFRpbWUuaXNEU1QpOworICAgICAg
ICAgICAgc2V0VXRjT2Zmc2V0KGxvY2FsVGltZS5vZmZzZXQgLyBXVEY6Om1zUGVyU2Vjb25kKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb25zdCBpbnQgeWVh
ciA9IG1zVG9ZZWFyKG1zKTsKKyAgICBzZXRTZWNvbmQobXNUb1NlY29uZHMobXMpKTsKKyAgICBz
ZXRNaW51dGUobXNUb01pbnV0ZXMobXMpKTsKKyAgICBzZXRIb3VyKG1zVG9Ib3VycyhtcykpOwor
ICAgIHNldFdlZWtEYXkobXNUb1dlZWtEYXkobXMpKTsKKyAgICBpbnQgeWVhckRheSA9IGRheUlu
WWVhcihtcywgeWVhcik7CisgICAgYm9vbCBsZWFwWWVhciA9IGlzTGVhcFllYXIoeWVhcik7Cisg
ICAgc2V0WWVhckRheSh5ZWFyRGF5KTsKKyAgICBzZXRNb250aERheShkYXlJbk1vbnRoRnJvbURh
eUluWWVhcih5ZWFyRGF5LCBsZWFwWWVhcikpOworICAgIHNldE1vbnRoKG1vbnRoRnJvbURheUlu
WWVhcih5ZWFyRGF5LCBsZWFwWWVhcikpOworICAgIHNldFllYXIoeWVhcik7CisgICAgc2V0SXNE
U1QobG9jYWxUaW1lLmlzRFNUKTsKKyAgICBzZXRVdGNPZmZzZXQobG9jYWxUaW1lLm9mZnNldCAv
IFdURjo6bXNQZXJTZWNvbmQpOworfQorCiB2b2lkIEdyZWdvcmlhbkRhdGVUaW1lOjpzZXRUb0N1
cnJlbnRMb2NhbFRpbWUoKQogewogI2lmIE9TKFdJTkRPV1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGltZS5oIGIvU291cmNlL1dURi93dGYvR3JlZ29yaWFuRGF0
ZVRpbWUuaAppbmRleCAyNWRkMTVjYWUwNGJmODI3ZmUxZmZjZTk1Y2U1NzFmODczNjU3NTdmLi5m
YjExMzhhNzAwNTQ3M2YyN2FkZjI4MjBmZGI3M2QzYjk4ZjE0YjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0dyZWdv
cmlhbkRhdGVUaW1lLmgKQEAgLTI2LDI3ICsyNiwxNiBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgR3JlZ29yaWFu
RGF0ZVRpbWUgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEdyZWdvcmlhbkRhdGVUaW1lKTsKIHB1YmxpYzoKLSAgICBHcmVnb3Jp
YW5EYXRlVGltZSgpCi0gICAgICAgIDogbV95ZWFyKDApCi0gICAgICAgICwgbV9tb250aCgwKQot
ICAgICAgICAsIG1feWVhckRheSgwKQotICAgICAgICAsIG1fbW9udGhEYXkoMCkKLSAgICAgICAg
LCBtX3dlZWtEYXkoMCkKLSAgICAgICAgLCBtX2hvdXIoMCkKLSAgICAgICAgLCBtX21pbnV0ZSgw
KQotICAgICAgICAsIG1fc2Vjb25kKDApCi0gICAgICAgICwgbV91dGNPZmZzZXQoMCkKLSAgICAg
ICAgLCBtX2lzRFNUKDApCi0gICAgewotICAgIH0KKyAgICBHcmVnb3JpYW5EYXRlVGltZSgpID0g
ZGVmYXVsdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgR3JlZ29yaWFuRGF0ZVRp
bWUoZG91YmxlIG1zLCBMb2NhbFRpbWVPZmZzZXQpOwogCiAgICAgaW5saW5lIGludCB5ZWFyKCkg
Y29uc3QgeyByZXR1cm4gbV95ZWFyOyB9CiAgICAgaW5saW5lIGludCBtb250aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9udGg7IH0KQEAgLTEwOSwxNiArOTgsMTYgQEAgY2xhc3MgR3JlZ29yaWFuRGF0
ZVRpbWUgZmluYWwgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBpbnQgbV95ZWFyOwotICAgIGlu
dCBtX21vbnRoOwotICAgIGludCBtX3llYXJEYXk7Ci0gICAgaW50IG1fbW9udGhEYXk7Ci0gICAg
aW50IG1fd2Vla0RheTsKLSAgICBpbnQgbV9ob3VyOwotICAgIGludCBtX21pbnV0ZTsKLSAgICBp
bnQgbV9zZWNvbmQ7Ci0gICAgaW50IG1fdXRjT2Zmc2V0OwotICAgIGludCBtX2lzRFNUOworICAg
IGludCBtX3llYXIgeyAwIH07CisgICAgaW50IG1fbW9udGggeyAwIH07CisgICAgaW50IG1feWVh
ckRheSB7IDAgfTsKKyAgICBpbnQgbV9tb250aERheSB7IDAgfTsKKyAgICBpbnQgbV93ZWVrRGF5
IHsgMCB9OworICAgIGludCBtX2hvdXIgeyAwIH07CisgICAgaW50IG1fbWludXRlIHsgMCB9Owor
ICAgIGludCBtX3NlY29uZCB7IDAgfTsKKyAgICBpbnQgbV91dGNPZmZzZXQgeyAwIH07CisgICAg
aW50IG1faXNEU1QgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382412</attachid>
            <date>2019-10-30 19:32:11 -0700</date>
            <delta_ts>2019-10-30 22:18:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203550-20191030193210.patch</filename>
            <type>text/plain</type>
            <size>33323</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjY0NTAzMDk0MDVkOWVmMmE0NTAyMTkyYmRmZDkxNjVjYTE0MGNjLi5lNDg2ZDFlMDI2NTk3MjY0
N2MyOTcyZmUwODI3MzllMDgwMjA2YWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOS0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERhdGVNYXRoIHNob3VsZCBoYXZlIFRpbWVDbGlwcGVkIHZlcnNp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzU1
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
aW5nIGB1c2luZyBuYW1lc3BhY2UgV1RGO2AgaW4gRGF0ZSByZWxhdGVkIGZpbGVzIGluIEpTQy4K
KworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9ybWF0RGF0ZVRpbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHA6CisgICAg
ICAgIChKU0M6OmxvY2FsVGltZU9mZnNldCk6CisgICAgICAgIChKU0M6OnRpbWVUb01TKToKKyAg
ICAgICAgKEpTQzo6Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKToKKyAgICAgICAgKEpTQzo6bXNUb0dy
ZWdvcmlhbkRhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6cGFyc2VEYXRlKToKKyAgICAgICAgKEpT
Qzo6bXNUb1NlY29uZHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjptc1RvV2Vla0RheSk6IERl
bGV0ZWQuCisKIDIwMTktMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBEYXRlIGZ1bmN0aW9ucyBzaG91bGQgaGF2ZSBpbnRyaW5zaWMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggODMyMWRiZDkxNzA3ZjkzZWIyODgyOTI4ZTZiYzdlMGVkYmM2NDE0Ny4uM2M0OGRmOGRiNzM4
YzIxOTI1MzI5YWQ2OThiNGQzYTgwOTdmMWI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAxOS0x
MC0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0Nd
IERhdGVNYXRoIHNob3VsZCBoYXZlIFRpbWVDbGlwcGVkIHZlcnNpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzU1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGZvdW5kIHRoYXQgb3VyIERhdGUg
Y29uc3RydWN0b3IgaXMgc2xvdyBiZWNhdXNlIEdyZWdvcmlhbkRhdGVUaW1lIGNhbGN1bGF0aW9u
IHRha2VzIHNvIGxvbmcuCisgICAgICAgIFdlIGFyZSBkb2luZyBtYW55IGBmbW9kYCwgZmxvYXRp
bmcgZGl2aXNpb24sIGBmbG9vcmAgZXRjLiBUaGVzZSBvcGVyYXRpb25zLCBpbiBwYXJ0aWN1bGFy
IGBmbW9kYCwgdGFrZXMKKyAgICAgICAgdmVyeSBsb25nIHRpbWUuIEFzIGEgcmVzdWx0LCAzMCUg
b2YgSmV0U3RyZWFtMi9kYXRlLWZvcm1hdC14cGFyYiBpcyB0YWtlbiBieSBgZm1vZGAgZnVuY3Rp
b24uCisKKyAgICAgICAgQnV0IHNpbmNlIHdlIGFyZSBwZXJmb3JtYW5jZSB0aW1lQ2xpcCBvcGVy
YXRpb24sIGRvdWJsZSB2YWx1ZSBpbiBEYXRlSW5zdGFuY2UgaXMgYWx3YXlzIEludDUyLiBXZSBz
aG91bGQKKyAgICAgICAgaGF2ZSBpbnRlZ2VyIHZlcnNpb24gb2YgR3JlZ29yaWFuRGF0ZVRpbWUg
Y2FsY3VsYXRpb24gd2hpY2ggYXZvaWRzIG1hbnkgdW5uZWNlc3NhcnkgZm1vZCBldGMuCisKKyAg
ICAgICAgV2hpbGUgaW50ZWdlciBkaXZpc2lvbiBpcyB0cnVuY2F0ZS10by16ZXJvLCBtYW55IERh
dGUgY2FsY3VsYXRpb24gcmVxdWlyZXMgYGZsb29yKHZhbHVlIC8geHh4KWAuIEZvciBub3csCisg
ICAgICAgIHdlIHVzZSBpbnRlZ2VyIGZhc3QgcGF0aCBvbmx5IHdoZW4gdGhlIHZhbHVlIGlzIElu
dDUyIGFuZCBwb3NpdGl2ZS4KKworICAgICAgICBXZSBzZWUgMTB+ICUgaW1wcm92ZW1lbnQgaW4g
SmV0U3RyZWFtMi9kYXRlLWZvcm1hdC14cGFyYi1TUCAoZnJvbSAyMDEgdG8gMjM5KS4KKworICAg
ICAgICAqIHd0Zi9EYXRlTWF0aC5jcHA6CisgICAgICAgIChXVEY6OmlzTGVhcFllYXIpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpkYXlzSW5ZZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
ZGF5c0Zyb20xOTcwVG9ZZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bXNUb0RheXMpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjptc1RvWWVhcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OmRheUluWWVhcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om1zVG9NaW51dGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6bXNUb0hvdXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bW9u
dGhGcm9tRGF5SW5ZZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hlY2tNb250aCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OmRheUluTW9udGhGcm9tRGF5SW5ZZWFyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6ZGF0ZVRvRGF5c0Zyb20xOTcwKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6dGltZUNsaXApOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorICAgICAg
ICAoV1RGOjpUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjpUaW1lQ2xpcHBlZFBvc2l0
aXZlTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKFdURjo6VGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxp
c2Vjb25kczo6dmFsdWUgY29uc3QpOgorICAgICAgICAoV1RGOjpUaW1lQ2xpcHBlZFBvc2l0aXZl
TWlsbGlzZWNvbmRzOjphc0RvdWJsZSBjb25zdCk6CisgICAgICAgIChXVEY6OnRpbWVDbGlwKToK
KyAgICAgICAgKFdURjo6ZGF5c0Zyb20xOTcwVG9ZZWFyKToKKyAgICAgICAgKFdURjo6ZGF5c0Zy
b20xOTcwVG9ZZWFyVGltZUNsaXBwZWRQb3NpdGl2ZSk6CisgICAgICAgIChXVEY6OmlzTGVhcFll
YXIpOgorICAgICAgICAoV1RGOjpkYXlzSW5ZZWFyKToKKyAgICAgICAgKFdURjo6bXNUb0RheXMp
OgorICAgICAgICAoV1RGOjpkYXlJblllYXIpOgorICAgICAgICAoV1RGOjpkYXRlVG9EYXlzRnJv
bTE5NzApOgorICAgICAgICAoV1RGOjptc1RvWWVhcik6CisgICAgICAgIChXVEY6Om1zVG9NaW51
dGVzKToKKyAgICAgICAgKFdURjo6bXNUb0hvdXJzKToKKyAgICAgICAgKFdURjo6bXNUb1NlY29u
ZHMpOgorICAgICAgICAoV1RGOjptc1RvV2Vla0RheSk6CisgICAgICAgIChXVEY6Om1vbnRoRnJv
bURheUluWWVhcik6CisgICAgICAgIChXVEY6OmRheUluTW9udGhGcm9tRGF5SW5ZZWFyKToKKyAg
ICAgICAgKiB3dGYvR3JlZ29yaWFuRGF0ZVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpHcmVnb3Jp
YW5EYXRlVGltZTo6R3JlZ29yaWFuRGF0ZVRpbWUpOgorICAgICAgICAqIHd0Zi9HcmVnb3JpYW5E
YXRlVGltZS5oOgorCiAyMDE5LTEwLTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gRGF0ZSBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgaW50cmluc2lj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNw
cAppbmRleCA5ZDdmMTA0YmJiZDE1NTQxMmJkZDBhMjgzMWJiYWQxMjY0ZDY0OGEyLi4yY2Y4N2U4
NjlmMGYzYzI4N2UyYTAwYmZlZGYxNGZkMTBhMzZiMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTU1LDggKzU1LDYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIG5hbWVzcGFjZSBKU0MgewogCi11c2luZyBuYW1lc3BhY2UgV1RGOwotCiBj
b25zdCBDbGFzc0luZm8gRGF0ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZkYXRlQ29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShEYXRlQ29uc3RydWN0b3IpIH07CiAKIC8qIFNvdXJjZSBmb3Ig
RGF0ZUNvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29udmVyc2lvbi5jcHAKaW5kZXggNWIyYWExYTcxZmZmNWE1MGRkMzExZWRkMjVlYWRk
MTgyZTdiN2M5Zi4uOTU1NzU2YmE0MDVmNDAwOTcwNjEwZjlhNjhjN2VkNDJhNjdjYjAxNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApA
QCAtMzYsOCArMzYsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdXNpbmcgbmFtZXNwYWNlIFdU
RjsKLQogdGVtcGxhdGU8aW50IHdpZHRoPgogc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZE51bWJl
cihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgdmFsdWUpCiB7CkBAIC02OCwxNiArNjYsMTYg
QEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRl
VGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAK
ICAgICBpZiAoYXBwZW5kRGF0ZSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCh3ZWVrZGF5TmFt
ZVsodC53ZWVrRGF5KCkgKyA2KSAlIDddKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGOjp3
ZWVrZGF5TmFtZVsodC53ZWVrRGF5KCkgKyA2KSAlIDddKTsKIAogICAgICAgICBpZiAoYXNVVENW
YXJpYW50KSB7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CiAgICAg
ICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5tb250aERheSgpKTsKICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtb250
aE5hbWVbdC5tb250aCgpXSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEY6Om1vbnRo
TmFtZVt0Lm1vbnRoKCldKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtb250aE5hbWVbdC5tb250
aCgpXSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEY6Om1vbnRoTmFtZVt0Lm1vbnRo
KCldKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICBhcHBl
bmROdW1iZXI8Mj4oYnVpbGRlciwgdC5tb250aERheSgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAKaW5kZXggOGY1YzJlZDIy
NjMyOTVjYmM0NTdlZTc2ZWFlYjM3NGQzZTdmMmEyMS4uYzgwNzlkNWIxOGYyOGU3NTJhMWE1YWU2
MTVlY2RmMTRmOGU0MWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlSW5zdGFuY2UuY3BwCkBAIC0zMCw4ICszMCw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi11
c2luZyBuYW1lc3BhY2UgV1RGOwotCiBjb25zdCBDbGFzc0luZm8gRGF0ZUluc3RhbmNlOjpzX2lu
Zm8gPSB7IkRhdGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKERhdGVJbnN0YW5jZSl9OwogCiBEYXRlSW5zdGFuY2U6OkRhdGVJbnN0YW5jZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCAyYWZmMGY3M2Q3YzY0NGM2OGRhZDVjMTY3
ZmZlM2YzN2JkNDdjODc1Li45ODRmNjExZDQ0MjRiYWVhOTQ4ZDFkYTA1NWI2YjZkMTMxZjAyODFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNw
cApAQCAtNjksOCArNjksNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdXNpbmcgbmFtZXNwYWNl
IFdURjsKLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF0
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGVNYXRoLmNwcAppbmRleCA2YzhiMzc5NzY3ZjQ2MzEwY2YzNTNkYTQ4ZTQxZTNhNmI1
ZTIyYTMyLi42NDgyNmFiOTZiNWRiMjMwYmUyNzQ0YTA1N2JkYzg4OGU0Nzk0MjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcApAQCAtMTAwLDMwICsx
MDAsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotc3Rh
dGljIGlubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJs
ZSBzZWMsIGRvdWJsZSBtcykKLXsKLSAgICByZXR1cm4gKCgoaG91ciAqIG1pbnV0ZXNQZXJIb3Vy
ICsgbWluKSAqIHNlY29uZHNQZXJNaW51dGUgKyBzZWMpICogbXNQZXJTZWNvbmQgKyBtcyk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgaW50IG1zVG9TZWNvbmRzKGRvdWJsZSBtcykKLXsKLSAgICBkb3Vi
bGUgcmVzdWx0ID0gZm1vZChmbG9vcihtcyAvIG1zUGVyU2Vjb25kKSwgc2Vjb25kc1Blck1pbnV0
ZSk7Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIHJlc3VsdCArPSBzZWNvbmRzUGVyTWlu
dXRlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7Ci19Ci0KLS8vIDA6IFN1
bmRheSwgMTogTW9uZGF5LCBldGMuCi1zdGF0aWMgaW5saW5lIGludCBtc1RvV2Vla0RheShkb3Vi
bGUgbXMpCi17Ci0gICAgaW50IHdkID0gKHN0YXRpY19jYXN0PGludD4obXNUb0RheXMobXMpKSAr
IDQpICUgNzsKLSAgICBpZiAod2QgPCAwKQotICAgICAgICB3ZCArPSA3OwotICAgIHJldHVybiB3
ZDsKLX0KLQogLy8gR2V0IHRoZSBjb21iaW5lZCBVVEMgKyBEU1Qgb2Zmc2V0IGZvciB0aGUgdGlt
ZSBwYXNzZWQgaW4uCiAvLwogLy8gTk9URTogVGhlIGltcGxlbWVudGF0aW9uIHJlbGllcyBvbiB0
aGUgZmFjdCB0aGF0IG5vIHRpbWUgem9uZXMgaGF2ZQpAQCAtMTUyLDcgKzEyOCw3IEBAIHN0YXRp
YyBMb2NhbFRpbWVPZmZzZXQgbG9jYWxUaW1lT2Zmc2V0KFZNJiB2bSwgZG91YmxlIG1zLCBXVEY6
OlRpbWVUeXBlIGlucHV0VGltCiAgICAgICAgICAgICAgICAgLy8gdGhlIG9mZnNldCBpbiB0aGUg
Y2FjaGUsIHdlIGdyb3cgdGhlIGNhY2hlZCB0aW1lIGludGVydmFsCiAgICAgICAgICAgICAgICAg
Ly8gYW5kIHJldHVybiB0aGUgb2Zmc2V0LgogICAgICAgICAgICAgICAgIGNhY2hlLmVuZCA9IG5l
d0VuZDsKLSAgICAgICAgICAgICAgICBjYWNoZS5pbmNyZW1lbnQgPSBtc1Blck1vbnRoOworICAg
ICAgICAgICAgICAgIGNhY2hlLmluY3JlbWVudCA9IFdURjo6bXNQZXJNb250aDsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZW5kT2Zmc2V0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTG9j
YWxUaW1lT2Zmc2V0IG9mZnNldCA9IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChtcywgaW5wdXRU
aW1lVHlwZSk7CkBAIC0xNjMsNyArMTM5LDcgQEAgc3RhdGljIExvY2FsVGltZU9mZnNldCBsb2Nh
bFRpbWVPZmZzZXQoVk0mIHZtLCBkb3VibGUgbXMsIFdURjo6VGltZVR5cGUgaW5wdXRUaW0KICAg
ICAgICAgICAgICAgICAvLyB0aGUgaW50ZXJ2YWwgdG8gcmVmbGVjdCB0aGlzIGFuZCByZXNldCB0
aGUgaW5jcmVtZW50LgogICAgICAgICAgICAgICAgIGNhY2hlLnN0YXJ0ID0gbXM7CiAgICAgICAg
ICAgICAgICAgY2FjaGUuZW5kID0gbmV3RW5kOwotICAgICAgICAgICAgICAgIGNhY2hlLmluY3Jl
bWVudCA9IG1zUGVyTW9udGg7CisgICAgICAgICAgICAgICAgY2FjaGUuaW5jcmVtZW50ID0gV1RG
Ojptc1Blck1vbnRoOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBU
aGUgaW50ZXJ2YWwgY29udGFpbnMgYSBEU1Qgb2Zmc2V0IGNoYW5nZSBhbmQgdGhlIGdpdmVuIHRp
bWUgaXMKICAgICAgICAgICAgICAgICAvLyBiZWZvcmUgaXQuIEFkanVzdCB0aGUgaW5jcmVtZW50
IHRvIGF2b2lkIGEgbGluZWFyIHNlYXJjaCBmb3IKQEAgLTE4NCwxNyArMTYwLDIyIEBAIHN0YXRp
YyBMb2NhbFRpbWVPZmZzZXQgbG9jYWxUaW1lT2Zmc2V0KFZNJiB2bSwgZG91YmxlIG1zLCBXVEY6
OlRpbWVUeXBlIGlucHV0VGltCiAgICAgY2FjaGUub2Zmc2V0ID0gb2Zmc2V0OwogICAgIGNhY2hl
LnN0YXJ0ID0gbXM7CiAgICAgY2FjaGUuZW5kID0gbXM7Ci0gICAgY2FjaGUuaW5jcmVtZW50ID0g
bXNQZXJNb250aDsKKyAgICBjYWNoZS5pbmNyZW1lbnQgPSBXVEY6Om1zUGVyTW9udGg7CiAgICAg
cmV0dXJuIG9mZnNldDsKIH0KIAorc3RhdGljIGlubGluZSBkb3VibGUgdGltZVRvTVMoZG91Ymxl
IGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKK3sKKyAgICByZXR1cm4g
KCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWlu
dXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7Cit9CisKIGRvdWJsZSBncmVnb3Jp
YW5EYXRlVGltZVRvTVMoVk0mIHZtLCBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgZG91Ymxl
IG1pbGxpU2Vjb25kcywgV1RGOjpUaW1lVHlwZSBpbnB1dFRpbWVUeXBlKQogewogICAgIGRvdWJs
ZSBkYXkgPSBkYXRlVG9EYXlzRnJvbTE5NzAodC55ZWFyKCksIHQubW9udGgoKSwgdC5tb250aERh
eSgpKTsKICAgICBkb3VibGUgbXMgPSB0aW1lVG9NUyh0LmhvdXIoKSwgdC5taW51dGUoKSwgdC5z
ZWNvbmQoKSwgbWlsbGlTZWNvbmRzKTsKICAgICBkb3VibGUgbG9jYWxUaW1lUmVzdWx0ID0gKGRh
eSAqIFdURjo6bXNQZXJEYXkpICsgbXM7CiAKLSAgICBkb3VibGUgbG9jYWxUb1VUQ1RpbWVPZmZz
ZXQgPSBpbnB1dFRpbWVUeXBlID09IExvY2FsVGltZQorICAgIGRvdWJsZSBsb2NhbFRvVVRDVGlt
ZU9mZnNldCA9IGlucHV0VGltZVR5cGUgPT0gV1RGOjpMb2NhbFRpbWUKICAgICAgICAgPyBsb2Nh
bFRpbWVPZmZzZXQodm0sIGxvY2FsVGltZVJlc3VsdCwgaW5wdXRUaW1lVHlwZSkub2Zmc2V0IDog
MDsKIAogICAgIHJldHVybiBsb2NhbFRpbWVSZXN1bHQgLSBsb2NhbFRvVVRDVGltZU9mZnNldDsK
QEAgLTIwOCwxOCArMTg5LDcgQEAgdm9pZCBtc1RvR3JlZ29yaWFuRGF0ZVRpbWUoVk0mIHZtLCBk
b3VibGUgbXMsIFdURjo6VGltZVR5cGUgb3V0cHV0VGltZVR5cGUsIEdyZWcKICAgICAgICAgbG9j
YWxUaW1lID0gbG9jYWxUaW1lT2Zmc2V0KHZtLCBtcyk7CiAgICAgICAgIG1zICs9IGxvY2FsVGlt
ZS5vZmZzZXQ7CiAgICAgfQotCi0gICAgY29uc3QgaW50IHllYXIgPSBtc1RvWWVhcihtcyk7Ci0g
ICAgdG0uc2V0U2Vjb25kKG1zVG9TZWNvbmRzKG1zKSk7Ci0gICAgdG0uc2V0TWludXRlKG1zVG9N
aW51dGVzKG1zKSk7Ci0gICAgdG0uc2V0SG91cihtc1RvSG91cnMobXMpKTsKLSAgICB0bS5zZXRX
ZWVrRGF5KG1zVG9XZWVrRGF5KG1zKSk7Ci0gICAgdG0uc2V0WWVhckRheShkYXlJblllYXIobXMs
IHllYXIpKTsKLSAgICB0bS5zZXRNb250aERheShkYXlJbk1vbnRoRnJvbURheUluWWVhcih0bS55
ZWFyRGF5KCksIGlzTGVhcFllYXIoeWVhcikpKTsKLSAgICB0bS5zZXRNb250aChtb250aEZyb21E
YXlJblllYXIodG0ueWVhckRheSgpLCBpc0xlYXBZZWFyKHllYXIpKSk7Ci0gICAgdG0uc2V0WWVh
cih5ZWFyKTsKLSAgICB0bS5zZXRJc0RTVChsb2NhbFRpbWUuaXNEU1QpOwotICAgIHRtLnNldFVU
Q09mZnNldEluTWludXRlKGxvY2FsVGltZS5vZmZzZXQgLyBXVEY6Om1zUGVyTWludXRlKTsKKyAg
ICB0bSA9IEdyZWdvcmlhbkRhdGVUaW1lKG1zLCBsb2NhbFRpbWUpOwogfQogCiBkb3VibGUgcGFy
c2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhWTSYgdm0sIGNvbnN0IGNoYXIqIGRh
dGVTdHJpbmcpCkBAIC0yNTQsNyArMjI0LDcgQEAgZG91YmxlIHBhcnNlRGF0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIGNvbnN0IFN0cmluZyYgZGF0ZSkKICAgICB9CiAK
ICAgICBhdXRvIGRhdGVVdGY4ID0gZXhwZWN0ZWRTdHJpbmcudmFsdWUoKTsKLSAgICBkb3VibGUg
dmFsdWUgPSBwYXJzZUVTNURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGRhdGVVdGY4
LmRhdGEoKSk7CisgICAgZG91YmxlIHZhbHVlID0gV1RGOjpwYXJzZUVTNURhdGVGcm9tTnVsbFRl
cm1pbmF0ZWRDaGFyYWN0ZXJzKGRhdGVVdGY4LmRhdGEoKSk7CiAgICAgaWYgKHN0ZDo6aXNuYW4o
dmFsdWUpKQogICAgICAgICB2YWx1ZSA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJh
Y3RlcnModm0sIGRhdGVVdGY4LmRhdGEoKSk7CiAgICAgdm0uY2FjaGVkRGF0ZVN0cmluZyA9IGRh
dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggYzBhYjJlMTM5ODUwYjI1NTU2ZTdkMmVhZDVhM2I3MjBj
MTg2NWZiMS4uMGJhY2QxZjgwOWIzMGQwZmRkN2E2NWU3MTU5MGQ3NmYwZmFkZTNiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Rh
dGVNYXRoLmNwcApAQCAtMTA5LDE1ICsxMDksMTMgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3Ro
PiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMK
IAogLyogQ29uc3RhbnRzICovCiAKLXN0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1heFVuaXhUaW1l
ID0gMjE0NTg1OTIwMC4wOyAvLyAxMi8zMS8yMDM3Ci0vLyBFQ01BU2NyaXB0IGFza3Mgbm90IHRv
IHN1cHBvcnQgZm9yIGEgZGF0ZSBvZiB3aGljaCB0b3RhbAotLy8gbWlsbGlzZWNvbmQgdmFsdWUg
aXMgbGFyZ2VyIHRoYW4gdGhlIGZvbGxvd2luZyB2YWx1ZS4KLS8vIFNlZSAxNS45LjEuMTQgb2Yg
RUNNQS0yNjIgNXRoIGVkaXRpb24uCi1zdGF0aWMgY29uc3RleHByIGRvdWJsZSBtYXhFQ01BU2Ny
aXB0VGltZSA9IDguNjRFMTU7Citjb25zdCBjaGFyKiBjb25zdCB3ZWVrZGF5TmFtZVs3XSA9IHsg
Ik1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IiwgIlN1biIgfTsKK2NvbnN0
IGNoYXIqIGNvbnN0IG1vbnRoTmFtZVsxMl0gPSB7ICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIi
LCAiTWF5IiwgIkp1biIsICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIg
fTsKK2NvbnN0IGNoYXIqIGNvbnN0IG1vbnRoRnVsbE5hbWVbMTJdID0geyAiSmFudWFyeSIsICJG
ZWJydWFyeSIsICJNYXJjaCIsICJBcHJpbCIsICJNYXkiLCAiSnVuZSIsICJKdWx5IiwgIkF1Z3Vz
dCIsICJTZXB0ZW1iZXIiLCAiT2N0b2JlciIsICJOb3ZlbWJlciIsICJEZWNlbWJlciIgfTsKIAog
Ly8gRGF5IG9mIHllYXIgZm9yIHRoZSBmaXJzdCBkYXkgb2YgZWFjaCBtb250aCwgd2hlcmUgaW5k
ZXggMCBpcyBKYW51YXJ5LCBhbmQgZGF5IDAgaXMgSmFudWFyeSAxLgogLy8gRmlyc3QgZm9yIG5v
bi1sZWFwIHllYXJzLCB0aGVuIGZvciBsZWFwIHllYXJzLgotc3RhdGljIGNvbnN0IGludCBmaXJz
dERheU9mTW9udGhbMl1bMTJdID0geworY29uc3QgaW50IGZpcnN0RGF5T2ZNb250aFsyXVsxMl0g
PSB7CiAgICAgezAsIDMxLCA1OSwgOTAsIDEyMCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMw
NCwgMzM0fSwKICAgICB7MCwgMzEsIDYwLCA5MSwgMTIxLCAxNTIsIDE4MiwgMjEzLCAyNDQsIDI3
NCwgMzA1LCAzMzV9CiB9OwpAQCAtMTMzLDQ2ICsxMzEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
Z2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxvY2FsVE0p
CiB9CiAjZW5kaWYKIAotYm9vbCBpc0xlYXBZZWFyKGludCB5ZWFyKQotewotICAgIGlmICh5ZWFy
ICUgNCAhPSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHllYXIgJSA0MDAgPT0g
MCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHllYXIgJSAxMDAgPT0gMCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIGlu
dCBkYXlzSW5ZZWFyKGludCB5ZWFyKQotewotICAgIHJldHVybiAzNjUgKyBpc0xlYXBZZWFyKHll
YXIpOwotfQotCi1zdGF0aWMgaW5saW5lIGRvdWJsZSBkYXlzRnJvbTE5NzBUb1llYXIoaW50IHll
YXIpCi17Ci0gICAgLy8gVGhlIEdyZWdvcmlhbiBDYWxlbmRhciBydWxlcyBmb3IgbGVhcCB5ZWFy
czoKLSAgICAvLyBFdmVyeSBmb3VydGggeWVhciBpcyBhIGxlYXAgeWVhci4gIDIwMDQsIDIwMDgs
IGFuZCAyMDEyIGFyZSBsZWFwIHllYXJzLgotICAgIC8vIEhvd2V2ZXIsIGV2ZXJ5IGh1bmRyZWR0
aCB5ZWFyIGlzIG5vdCBhIGxlYXAgeWVhci4gIDE5MDAgYW5kIDIxMDAgYXJlIG5vdCBsZWFwIHll
YXJzLgotICAgIC8vIEV2ZXJ5IGZvdXIgaHVuZHJlZCB5ZWFycywgdGhlcmUncyBhIGxlYXAgeWVh
ciBhZnRlciBhbGwuICAyMDAwIGFuZCAyNDAwIGFyZSBsZWFwIHllYXJzLgotCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgbGVhcERheXNCZWZvcmUxOTcxQnk0UnVsZSA9IDE5NzAgLyA0OwotICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IGV4Y2x1ZGVkTGVhcERheXNCZWZvcmUxOTcxQnkxMDBSdWxl
ID0gMTk3MCAvIDEwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBsZWFwRGF5c0JlZm9yZTE5
NzFCeTQwMFJ1bGUgPSAxOTcwIC8gNDAwOwotCi0gICAgY29uc3QgZG91YmxlIHllYXJNaW51c09u
ZSA9IHllYXIgLSAxOwotICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvQWRkQnk0UnVsZSA9IGZsb29y
KHllYXJNaW51c09uZSAvIDQuMCkgLSBsZWFwRGF5c0JlZm9yZTE5NzFCeTRSdWxlOwotICAgIGNv
bnN0IGRvdWJsZSB5ZWFyc1RvRXhjbHVkZUJ5MTAwUnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAv
IDEwMC4wKSAtIGV4Y2x1ZGVkTGVhcERheXNCZWZvcmUxOTcxQnkxMDBSdWxlOwotICAgIGNvbnN0
IGRvdWJsZSB5ZWFyc1RvQWRkQnk0MDBSdWxlID0gZmxvb3IoeWVhck1pbnVzT25lIC8gNDAwLjAp
IC0gbGVhcERheXNCZWZvcmUxOTcxQnk0MDBSdWxlOwotCi0gICAgcmV0dXJuIDM2NS4wICogKHll
YXIgLSAxOTcwLjApICsgeWVhcnNUb0FkZEJ5NFJ1bGUgLSB5ZWFyc1RvRXhjbHVkZUJ5MTAwUnVs
ZSArIHllYXJzVG9BZGRCeTQwMFJ1bGU7Ci19Ci0KLWRvdWJsZSBtc1RvRGF5cyhkb3VibGUgbXMp
Ci17Ci0gICAgcmV0dXJuIGZsb29yKG1zIC8gbXNQZXJEYXkpOwotfQotCiBzdGF0aWMgdm9pZCBh
cHBlbmRUd29EaWdpdE51bWJlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyKQog
ewogICAgIEFTU0VSVChudW1iZXIgPj0gMCk7CkBAIC0xODEsMjIgKzEzOSw2IEBAIHN0YXRpYyB2
b2lkIGFwcGVuZFR3b0RpZ2l0TnVtYmVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1i
ZXIpCiAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KCcwJyArIG51bWJlciAl
IDEwKSk7CiB9CiAKLWludCBtc1RvWWVhcihkb3VibGUgbXMpCi17Ci0gICAgaW50IGFwcHJveFll
YXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yKG1zIC8gKG1zUGVyRGF5ICogMzY1LjI0MjUpKSAr
IDE5NzApOwotICAgIGRvdWJsZSBtc0Zyb21BcHByb3hZZWFyVG8xOTcwID0gbXNQZXJEYXkgKiBk
YXlzRnJvbTE5NzBUb1llYXIoYXBwcm94WWVhcik7Ci0gICAgaWYgKG1zRnJvbUFwcHJveFllYXJU
bzE5NzAgPiBtcykKLSAgICAgICAgcmV0dXJuIGFwcHJveFllYXIgLSAxOwotICAgIGlmIChtc0Zy
b21BcHByb3hZZWFyVG8xOTcwICsgbXNQZXJEYXkgKiBkYXlzSW5ZZWFyKGFwcHJveFllYXIpIDw9
IG1zKQotICAgICAgICByZXR1cm4gYXBwcm94WWVhciArIDE7Ci0gICAgcmV0dXJuIGFwcHJveFll
YXI7Ci19Ci0KLWludCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcikKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5cyhtcykgLSBkYXlzRnJvbTE5NzBUb1llYXIoeWVh
cikpOwotfQotCiBzdGF0aWMgaW5saW5lIGRvdWJsZSBtc1RvTWlsbGlzZWNvbmRzKGRvdWJsZSBt
cykKIHsKICAgICBkb3VibGUgcmVzdWx0ID0gZm1vZChtcywgbXNQZXJEYXkpOwpAQCAtMjA1LDEx
MyArMTQ3LDYgQEAgc3RhdGljIGlubGluZSBkb3VibGUgbXNUb01pbGxpc2Vjb25kcyhkb3VibGUg
bXMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW50IG1zVG9NaW51dGVzKGRvdWJsZSBtcykK
LXsKLSAgICBkb3VibGUgcmVzdWx0ID0gZm1vZChmbG9vcihtcyAvIG1zUGVyTWludXRlKSwgbWlu
dXRlc1BlckhvdXIpOwotICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICByZXN1bHQgKz0gbWlu
dXRlc1BlckhvdXI7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKLX0KLQot
aW50IG1zVG9Ib3Vycyhkb3VibGUgbXMpCi17Ci0gICAgZG91YmxlIHJlc3VsdCA9IGZtb2QoZmxv
b3IobXMvbXNQZXJIb3VyKSwgaG91cnNQZXJEYXkpOwotICAgIGlmIChyZXN1bHQgPCAwKQotICAg
ICAgICByZXN1bHQgKz0gaG91cnNQZXJEYXk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
cmVzdWx0KTsKLX0KLQotaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29s
IGxlYXBZZWFyKQotewotICAgIGNvbnN0IGludCBkID0gZGF5SW5ZZWFyOwotICAgIGludCBzdGVw
OwotCi0gICAgaWYgKGQgPCAoc3RlcCA9IDMxKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgc3Rl
cCArPSAobGVhcFllYXIgPyAyOSA6IDI4KTsKLSAgICBpZiAoZCA8IHN0ZXApCi0gICAgICAgIHJl
dHVybiAxOwotICAgIGlmIChkIDwgKHN0ZXAgKz0gMzEpKQotICAgICAgICByZXR1cm4gMjsKLSAg
ICBpZiAoZCA8IChzdGVwICs9IDMwKSkKLSAgICAgICAgcmV0dXJuIDM7Ci0gICAgaWYgKGQgPCAo
c3RlcCArPSAzMSkpCi0gICAgICAgIHJldHVybiA0OwotICAgIGlmIChkIDwgKHN0ZXAgKz0gMzAp
KQotICAgICAgICByZXR1cm4gNTsKLSAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKLSAgICAgICAg
cmV0dXJuIDY7Ci0gICAgaWYgKGQgPCAoc3RlcCArPSAzMSkpCi0gICAgICAgIHJldHVybiA3Owot
ICAgIGlmIChkIDwgKHN0ZXAgKz0gMzApKQotICAgICAgICByZXR1cm4gODsKLSAgICBpZiAoZCA8
IChzdGVwICs9IDMxKSkKLSAgICAgICAgcmV0dXJuIDk7Ci0gICAgaWYgKGQgPCAoc3RlcCArPSAz
MCkpCi0gICAgICAgIHJldHVybiAxMDsKLSAgICByZXR1cm4gMTE7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBjaGVja01vbnRoKGludCBkYXlJblllYXIsIGludCYgc3RhcnREYXlPZlRoaXNNb250
aCwgaW50JiBzdGFydERheU9mTmV4dE1vbnRoLCBpbnQgZGF5c0luVGhpc01vbnRoKQotewotICAg
IHN0YXJ0RGF5T2ZUaGlzTW9udGggPSBzdGFydERheU9mTmV4dE1vbnRoOwotICAgIHN0YXJ0RGF5
T2ZOZXh0TW9udGggKz0gZGF5c0luVGhpc01vbnRoOwotICAgIHJldHVybiAoZGF5SW5ZZWFyIDw9
IHN0YXJ0RGF5T2ZOZXh0TW9udGgpOwotfQotCi1pbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIo
aW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKLXsKLSAgICBjb25zdCBpbnQgZCA9IGRheUlu
WWVhcjsKLSAgICBpbnQgc3RlcDsKLSAgICBpbnQgbmV4dCA9IDMwOwotCi0gICAgaWYgKGQgPD0g
bmV4dCkKLSAgICAgICAgcmV0dXJuIGQgKyAxOwotICAgIGNvbnN0IGludCBkYXlzSW5GZWIgPSAo
bGVhcFllYXIgPyAyOSA6IDI4KTsKLSAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCBk
YXlzSW5GZWIpKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgo
ZCwgc3RlcCwgbmV4dCwgMzEpKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNo
ZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0g
ICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQotICAgICAgICByZXR1cm4gZCAt
IHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQotICAgICAgICBy
ZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQot
ICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4
dCwgMzEpKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNrTW9udGgoZCwg
c3RlcCwgbmV4dCwgMzApKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgaWYgKGNoZWNr
TW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQotICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAg
aWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQotICAgICAgICByZXR1cm4gZCAtIHN0
ZXA7Ci0gICAgc3RlcCA9IG5leHQ7Ci0gICAgcmV0dXJuIGQgLSBzdGVwOwotfQotCi1pbnQgZGF5
SW5ZZWFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCi17Ci0gICAgcmV0dXJuIGZpcnN0
RGF5T2ZNb250aFtpc0xlYXBZZWFyKHllYXIpXVttb250aF0gKyBkYXkgLSAxOwotfQotCi1kb3Vi
bGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCi17Ci0g
ICAgeWVhciArPSBtb250aCAvIDEyOwotCi0gICAgbW9udGggJT0gMTI7Ci0gICAgaWYgKG1vbnRo
IDwgMCkgewotICAgICAgICBtb250aCArPSAxMjsKLSAgICAgICAgLS15ZWFyOwotICAgIH0KLQot
ICAgIGRvdWJsZSB5ZWFyZGF5ID0gZmxvb3IoZGF5c0Zyb20xOTcwVG9ZZWFyKHllYXIpKTsKLSAg
ICBBU1NFUlQoKHllYXIgPj0gMTk3MCAmJiB5ZWFyZGF5ID49IDApIHx8ICh5ZWFyIDwgMTk3MCAm
JiB5ZWFyZGF5IDwgMCkpOwotICAgIHJldHVybiB5ZWFyZGF5ICsgZGF5SW5ZZWFyKHllYXIsIG1v
bnRoLCBkYXkpOwotfQotCiAvLyBUaGVyZSBpcyBhIGhhcmQgbGltaXQgYXQgMjAzOCB0aGF0IHdl
IGN1cnJlbnRseSBkbyBub3QgaGF2ZSBhIHdvcmthcm91bmQKIC8vIGZvciAocmRhcjovL3Byb2Js
ZW0vNTA1Mjk3NSkuCiBzdGF0aWMgaW5saW5lIGludCBtYXhpbXVtWWVhckZvckRTVCgpCkBAIC0x
MTU5LDEzICs5OTQsNiBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFj
dGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKQogICAgIHJldHVybiBtcyAtIChvZmZzZXQgKiBt
c1Blck1pbnV0ZSk7CiB9CiAKLWRvdWJsZSB0aW1lQ2xpcChkb3VibGUgdCkKLXsKLSAgICBpZiAo
c3RkOjphYnModCkgPiBtYXhFQ01BU2NyaXB0VGltZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0gICAgcmV0dXJuIHN0ZDo6dHJ1bmMo
dCkgKyAwLjA7Ci19Ci0KIC8vIFNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyODIy
I3NlY3Rpb24tMy4zIGZvciBtb3JlIGluZm9ybWF0aW9uLgogU3RyaW5nIG1ha2VSRkMyODIyRGF0
ZVN0cmluZyh1bnNpZ25lZCBkYXlPZldlZWssIHVuc2lnbmVkIGRheSwgdW5zaWduZWQgbW9udGgs
IHVuc2lnbmVkIHllYXIsIHVuc2lnbmVkIGhvdXJzLCB1bnNpZ25lZCBtaW51dGVzLCB1bnNpZ25l
ZCBzZWNvbmRzLCBpbnQgdXRjT2Zmc2V0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RGF0ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggN2UyZDFkZTczOTZh
Nzg0OTYyMDE4NDEyMjVhMzQ2MGUyODEyN2M2NC4uNWFkOGMzMzYxYTIwZjUxYjhjY2JiYjVkNTJl
YjdmNDI5MDkzZDFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCkBAIC05Miw3ICs5Miw2IEBAIGludCBlcXVpdmFs
ZW50WWVhckZvckRTVChpbnQgeWVhcik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHBhcnNl
RVM1RGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmlu
Zyk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRl
ZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
ZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciog
ZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVRaLCBpbnQmIG9mZnNldCk7Ci1XVEZfRVhQT1JUX1BSSVZB
VEUgZG91YmxlIHRpbWVDbGlwKGRvdWJsZSk7CiAvLyBkYXlPZldlZWs6IFswLCA2XSAwIGJlaW5n
IE1vbmRheSwgZGF5OiBbMSwgMzFdLCBtb250aDogWzAsIDExXSwgeWVhcjogZXg6IDIwMTEsIGhv
dXJzOiBbMCwgMjNdLCBtaW51dGVzOiBbMCwgNTldLCBzZWNvbmRzOiBbMCwgNTldLCB1dGNPZmZz
ZXQ6IFstNzIwLDcyMF0uIAogU3RyaW5nIG1ha2VSRkMyODIyRGF0ZVN0cmluZyh1bnNpZ25lZCBk
YXlPZldlZWssIHVuc2lnbmVkIGRheSwgdW5zaWduZWQgbW9udGgsIHVuc2lnbmVkIHllYXIsIHVu
c2lnbmVkIGhvdXJzLCB1bnNpZ25lZCBtaW51dGVzLCB1bnNpZ25lZCBzZWNvbmRzLCBpbnQgdXRj
T2Zmc2V0KTsKIApAQCAtMTAyLDkgKzEwMSwxMCBAQCBpbmxpbmUgZG91YmxlIGpzQ3VycmVudFRp
bWUoKQogICAgIHJldHVybiBmbG9vcihXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2go
KS5taWxsaXNlY29uZHMoKSk7CiB9CiAKLWNvbnN0IGNoYXIqIGNvbnN0IHdlZWtkYXlOYW1lWzdd
ID0geyAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIiB9Owot
Y29uc3QgY2hhciogY29uc3QgbW9udGhOYW1lWzEyXSA9IHsgIkphbiIsICJGZWIiLCAiTWFyIiwg
IkFwciIsICJNYXkiLCAiSnVuIiwgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAi
RGVjIiB9OwotY29uc3QgY2hhciogY29uc3QgbW9udGhGdWxsTmFtZVsxMl0gPSB7ICJKYW51YXJ5
IiwgIkZlYnJ1YXJ5IiwgIk1hcmNoIiwgIkFwcmlsIiwgIk1heSIsICJKdW5lIiwgIkp1bHkiLCAi
QXVndXN0IiwgIlNlcHRlbWJlciIsICJPY3RvYmVyIiwgIk5vdmVtYmVyIiwgIkRlY2VtYmVyIiB9
OworZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBjb25zdCB3ZWVrZGF5TmFt
ZVs3XTsKK2V4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogY29uc3QgbW9udGhO
YW1lWzEyXTsKK2V4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogY29uc3QgbW9u
dGhGdWxsTmFtZVsxMl07CitleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGludCBmaXJz
dERheU9mTW9udGhbMl1bMTJdOwogCiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBob3Vyc1BlckRh
eSA9IDI0LjA7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBtaW51dGVzUGVySG91ciA9IDYwLjA7
CkBAIC0xMTcsMTggKzExNywyNzcgQEAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbXNQZXJNaW51
dGUgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJNaW51dGU7CiBzdGF0aWMgY29uc3RleHByIGRv
dWJsZSBtc1BlckhvdXIgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJIb3VyOwogc3RhdGljIGNv
bnN0ZXhwciBkb3VibGUgbXNQZXJEYXkgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJEYXk7CiAK
LVdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTGVhcFllYXIoaW50IHllYXIpOworc3RhdGljIGNv
bnN0ZXhwciBkb3VibGUgbWF4VW5peFRpbWUgPSAyMTQ1ODU5MjAwLjA7IC8vIDEyLzMxLzIwMzcK
Ky8vIEVDTUFTY3JpcHQgYXNrcyBub3QgdG8gc3VwcG9ydCBmb3IgYSBkYXRlIG9mIHdoaWNoIHRv
dGFsCisvLyBtaWxsaXNlY29uZCB2YWx1ZSBpcyBsYXJnZXIgdGhhbiB0aGUgZm9sbG93aW5nIHZh
bHVlLgorLy8gU2VlIDE1LjkuMS4xNCBvZiBFQ01BLTI2MiA1dGggZWRpdGlvbi4KK3N0YXRpYyBj
b25zdGV4cHIgZG91YmxlIG1heEVDTUFTY3JpcHRUaW1lID0gOC42NEUxNTsKKworY2xhc3MgVGlt
ZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kcyB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQ2NF90IGhvdXJzUGVyRGF5ID0gMjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2
NF90IG1pbnV0ZXNQZXJIb3VyID0gNjA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IHNl
Y29uZHNQZXJNaW51dGUgPSA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbXNQZXJT
ZWNvbmQgPSAxMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBtc1Blck1vbnRoID0g
MjU5MjAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qgc2Vjb25kc1BlckhvdXIg
PSBzZWNvbmRzUGVyTWludXRlICogbWludXRlc1BlckhvdXI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQ2NF90IHNlY29uZHNQZXJEYXkgPSBzZWNvbmRzUGVySG91ciAqIGhvdXJzUGVyRGF5Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBtc1Blck1pbnV0ZSA9IG1zUGVyU2Vjb25kICog
c2Vjb25kc1Blck1pbnV0ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbXNQZXJIb3Vy
ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVySG91cjsKKyAgICBzdGF0aWMgY29uc3RleHByIGlu
dDY0X3QgbXNQZXJEYXkgPSBtc1BlclNlY29uZCAqIHNlY29uZHNQZXJEYXk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQ2NF90IG1heEVDTUFTY3JpcHRUaW1lID0gOC42NEUxNTsKKworICAgIGV4
cGxpY2l0IFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHMoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlID49IDAp
OworICAgIH0KKworICAgIGludDY0X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CisgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihtX3ZhbHVlKTsgfQorcHJpdmF0ZToKKyAgICBpbnQ2NF90IG1fdmFsdWU7Cit9OworCitpbmxp
bmUgZG91YmxlIHRpbWVDbGlwKGRvdWJsZSB0KQoreworICAgIGlmIChzdGQ6OmFicyh0KSA+IG1h
eEVDTUFTY3JpcHRUaW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjpxdWlldF9OYU4oKTsKKyAgICByZXR1cm4gc3RkOjp0cnVuYyh0KSArIDAuMDsKK30KKwor
aW5saW5lIGRvdWJsZSBkYXlzRnJvbTE5NzBUb1llYXIoaW50IHllYXIpCit7CisgICAgLy8gVGhl
IEdyZWdvcmlhbiBDYWxlbmRhciBydWxlcyBmb3IgbGVhcCB5ZWFyczoKKyAgICAvLyBFdmVyeSBm
b3VydGggeWVhciBpcyBhIGxlYXAgeWVhci4gMjAwNCwgMjAwOCwgYW5kIDIwMTIgYXJlIGxlYXAg
eWVhcnMuCisgICAgLy8gSG93ZXZlciwgZXZlcnkgaHVuZHJlZHRoIHllYXIgaXMgbm90IGEgbGVh
cCB5ZWFyLiAxOTAwIGFuZCAyMTAwIGFyZSBub3QgbGVhcCB5ZWFycy4KKyAgICAvLyBFdmVyeSBm
b3VyIGh1bmRyZWQgeWVhcnMsIHRoZXJlJ3MgYSBsZWFwIHllYXIgYWZ0ZXIgYWxsLiAyMDAwIGFu
ZCAyNDAwIGFyZSBsZWFwIHllYXJzLgorCisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbGVhcERh
eXNCZWZvcmUxOTcxQnk0UnVsZSA9IDE5NzAgLyA0OworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IGV4Y2x1ZGVkTGVhcERheXNCZWZvcmUxOTcxQnkxMDBSdWxlID0gMTk3MCAvIDEwMDsKKyAgICBz
dGF0aWMgY29uc3RleHByIGludCBsZWFwRGF5c0JlZm9yZTE5NzFCeTQwMFJ1bGUgPSAxOTcwIC8g
NDAwOworCisgICAgY29uc3QgZG91YmxlIHllYXJNaW51c09uZSA9IHllYXIgLSAxOworICAgIGNv
bnN0IGRvdWJsZSB5ZWFyc1RvQWRkQnk0UnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDQuMCkg
LSBsZWFwRGF5c0JlZm9yZTE5NzFCeTRSdWxlOworICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvRXhj
bHVkZUJ5MTAwUnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDEwMC4wKSAtIGV4Y2x1ZGVkTGVh
cERheXNCZWZvcmUxOTcxQnkxMDBSdWxlOworICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvQWRkQnk0
MDBSdWxlID0gZmxvb3IoeWVhck1pbnVzT25lIC8gNDAwLjApIC0gbGVhcERheXNCZWZvcmUxOTcx
Qnk0MDBSdWxlOworCisgICAgcmV0dXJuIDM2NS4wICogKHllYXIgLSAxOTcwLjApICsgeWVhcnNU
b0FkZEJ5NFJ1bGUgLSB5ZWFyc1RvRXhjbHVkZUJ5MTAwUnVsZSArIHllYXJzVG9BZGRCeTQwMFJ1
bGU7Cit9CisKK2lubGluZSBpbnQ2NF90IGRheXNGcm9tMTk3MFRvWWVhclRpbWVDbGlwcGVkUG9z
aXRpdmUoaW50IHllYXIpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbGVhcERheXNCZWZv
cmUxOTcxQnk0UnVsZSA9IDE5NzAgLyA0OworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGV4Y2x1
ZGVkTGVhcERheXNCZWZvcmUxOTcxQnkxMDBSdWxlID0gMTk3MCAvIDEwMDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGludCBsZWFwRGF5c0JlZm9yZTE5NzFCeTQwMFJ1bGUgPSAxOTcwIC8gNDAwOwor
CisgICAgQVNTRVJUKHllYXIgPj0gMTk3MCk7CisgICAgY29uc3QgaW50NjRfdCB5ZWFyTWludXNP
bmUgPSB5ZWFyIC0gMTsKKyAgICBjb25zdCBpbnQ2NF90IHllYXJzVG9BZGRCeTRSdWxlID0geWVh
ck1pbnVzT25lIC8gNC4wIC0gbGVhcERheXNCZWZvcmUxOTcxQnk0UnVsZTsKKyAgICBjb25zdCBp
bnQ2NF90IHllYXJzVG9FeGNsdWRlQnkxMDBSdWxlID0geWVhck1pbnVzT25lIC8gMTAwLjAgLSBl
eGNsdWRlZExlYXBEYXlzQmVmb3JlMTk3MUJ5MTAwUnVsZTsKKyAgICBjb25zdCBpbnQ2NF90IHll
YXJzVG9BZGRCeTQwMFJ1bGUgPSB5ZWFyTWludXNPbmUgLyA0MDAuMCAtIGxlYXBEYXlzQmVmb3Jl
MTk3MUJ5NDAwUnVsZTsKKworICAgIHJldHVybiAzNjUgKiAoeWVhciAtIDE5NzApICsgeWVhcnNU
b0FkZEJ5NFJ1bGUgLSB5ZWFyc1RvRXhjbHVkZUJ5MTAwUnVsZSArIHllYXJzVG9BZGRCeTQwMFJ1
bGU7Cit9CisKK2lubGluZSBib29sIGlzTGVhcFllYXIoaW50IHllYXIpCit7CisgICAgaWYgKHll
YXIgJSA0ICE9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoeWVhciAlIDQwMCA9
PSAwKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoeWVhciAlIDEwMCA9PSAwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBpbnQgZGF5
c0luWWVhcihpbnQgeWVhcikKK3sKKyAgICByZXR1cm4gMzY1ICsgaXNMZWFwWWVhcih5ZWFyKTsK
K30KKworaW5saW5lIGRvdWJsZSBtc1RvRGF5cyhkb3VibGUgbXMpCit7CisgICAgcmV0dXJuIGZs
b29yKG1zIC8gbXNQZXJEYXkpOworfQorCitpbmxpbmUgaW50NjRfdCBtc1RvRGF5cyhUaW1lQ2xp
cHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzIG1zKQoreworICAgIHJldHVybiBtcy52YWx1ZSgpIC8g
VGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kczo6bXNQZXJEYXk7Cit9CisKK2lubGluZSBp
bnQgZGF5SW5ZZWFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCit7CisgICAgcmV0dXJu
IGZpcnN0RGF5T2ZNb250aFtpc0xlYXBZZWFyKHllYXIpXVttb250aF0gKyBkYXkgLSAxOworfQor
CitpbmxpbmUgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KG1zVG9EYXlzKG1zKSAtIGRheXNGcm9tMTk3MFRvWWVhcih5ZWFy
KSk7Cit9CisKK2lubGluZSBpbnQgZGF5SW5ZZWFyKFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNl
Y29uZHMgbXMsIGludCB5ZWFyKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1zVG9E
YXlzKG1zKSAtIGRheXNGcm9tMTk3MFRvWWVhclRpbWVDbGlwcGVkUG9zaXRpdmUoeWVhcikpOwor
fQogCiAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBmcm9tIDE5NzAtMDEtMDEgdG8gdGhl
IHNwZWNpZmllZCBkYXRlLgotV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBkYXRlVG9EYXlzRnJv
bTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
aW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIG1zVG9E
YXlzKGRvdWJsZSBtcyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IG1zVG9NaW51dGVzKGRvdWJs
ZSBtcyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IG1zVG9Ib3Vycyhkb3VibGUgbXMpOwotV1RG
X0VYUE9SVF9QUklWQVRFIGludCBkYXlJblllYXIoaW50IHllYXIsIGludCBtb250aCwgaW50IGRh
eSk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFy
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblll
YXIsIGJvb2wgbGVhcFllYXIpOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCBkYXlJbk1vbnRoRnJv
bURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKK2lubGluZSBkb3VibGUg
ZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCit7CisgICAg
eWVhciArPSBtb250aCAvIDEyOworCisgICAgbW9udGggJT0gMTI7CisgICAgaWYgKG1vbnRoIDwg
MCkgeworICAgICAgICBtb250aCArPSAxMjsKKyAgICAgICAgLS15ZWFyOworICAgIH0KKworICAg
IGRvdWJsZSB5ZWFyZGF5ID0gZmxvb3IoZGF5c0Zyb20xOTcwVG9ZZWFyKHllYXIpKTsKKyAgICBB
U1NFUlQoKHllYXIgPj0gMTk3MCAmJiB5ZWFyZGF5ID49IDApIHx8ICh5ZWFyIDwgMTk3MCAmJiB5
ZWFyZGF5IDwgMCkpOworICAgIHJldHVybiB5ZWFyZGF5ICsgZGF5SW5ZZWFyKHllYXIsIG1vbnRo
LCBkYXkpOworfQorCitpbmxpbmUgaW50IG1zVG9ZZWFyKGRvdWJsZSBtcykKK3sKKyAgICBpbnQg
YXBwcm94WWVhciA9IHN0YXRpY19jYXN0PGludD4oZmxvb3IobXMgLyAobXNQZXJEYXkgKiAzNjUu
MjQyNSkpICsgMTk3MCk7CisgICAgZG91YmxlIG1zRnJvbUFwcHJveFllYXJUbzE5NzAgPSBtc1Bl
ckRheSAqIGRheXNGcm9tMTk3MFRvWWVhcihhcHByb3hZZWFyKTsKKyAgICBpZiAobXNGcm9tQXBw
cm94WWVhclRvMTk3MCA+IG1zKQorICAgICAgICByZXR1cm4gYXBwcm94WWVhciAtIDE7CisgICAg
aWYgKG1zRnJvbUFwcHJveFllYXJUbzE5NzAgKyBtc1BlckRheSAqIGRheXNJblllYXIoYXBwcm94
WWVhcikgPD0gbXMpCisgICAgICAgIHJldHVybiBhcHByb3hZZWFyICsgMTsKKyAgICByZXR1cm4g
YXBwcm94WWVhcjsKK30KKworaW5saW5lIGludCBtc1RvTWludXRlcyhkb3VibGUgbXMpCit7Cisg
ICAgZG91YmxlIHJlc3VsdCA9IGZtb2QoZmxvb3IobXMgLyBtc1Blck1pbnV0ZSksIG1pbnV0ZXNQ
ZXJIb3VyKTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmVzdWx0ICs9IG1pbnV0ZXNQ
ZXJIb3VyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7Cit9CisKK2lubGlu
ZSBpbnQgbXNUb01pbnV0ZXMoVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kcyBtcykKK3sK
KyAgICBpbnQ2NF90IHJlc3VsdCA9IChtcy52YWx1ZSgpIC8gVGltZUNsaXBwZWRQb3NpdGl2ZU1p
bGxpc2Vjb25kczo6bXNQZXJNaW51dGUpICUgVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25k
czo6bWludXRlc1BlckhvdXI7CisgICAgQVNTRVJUKHJlc3VsdCA+PSAwKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOworfQorCitpbmxpbmUgaW50IG1zVG9Ib3Vycyhkb3Vi
bGUgbXMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IGZtb2QoZmxvb3IobXMgLyBtc1BlckhvdXIp
LCBob3Vyc1BlckRheSk7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJlc3VsdCArPSBo
b3Vyc1BlckRheTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOworfQorCitp
bmxpbmUgaW50IG1zVG9Ib3VycyhUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzIG1zKQor
eworICAgIGludDY0X3QgcmVzdWx0ID0gKG1zLnZhbHVlKCkgLyBUaW1lQ2xpcHBlZFBvc2l0aXZl
TWlsbGlzZWNvbmRzOjptc1BlckhvdXIpICUgVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25k
czo6aG91cnNQZXJEYXk7CisgICAgQVNTRVJUKHJlc3VsdCA+PSAwKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQpOworfQorCitpbmxpbmUgaW50IG1zVG9TZWNvbmRzKGRvdWJs
ZSBtcykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gZm1vZChmbG9vcihtcyAvIG1zUGVyU2Vjb25k
KSwgc2Vjb25kc1Blck1pbnV0ZSk7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJlc3Vs
dCArPSBzZWNvbmRzUGVyTWludXRlOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3Vs
dCk7Cit9CisKK2lubGluZSBpbnQgbXNUb1NlY29uZHMoVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxp
c2Vjb25kcyBtcykKK3sKKyAgICBpbnQ2NF90IHJlc3VsdCA9IG1zLnZhbHVlKCkgLyBUaW1lQ2xp
cHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjptc1BlclNlY29uZCAlIFRpbWVDbGlwcGVkUG9zaXRp
dmVNaWxsaXNlY29uZHM6OnNlY29uZHNQZXJNaW51dGU7CisgICAgQVNTRVJUKHJlc3VsdCA+PSAw
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOworfQorCisvLyAwOiBTdW5k
YXksIDE6IE1vbmRheSwgZXRjLgoraW5saW5lIGludCBtc1RvV2Vla0RheShkb3VibGUgbXMpCit7
CisgICAgaW50IHdkID0gKHN0YXRpY19jYXN0PGludD4obXNUb0RheXMobXMpKSArIDQpICUgNzsK
KyAgICBpZiAod2QgPCAwKQorICAgICAgICB3ZCArPSA3OworICAgIHJldHVybiB3ZDsKK30KKwor
aW5saW5lIGludCBtc1RvV2Vla0RheShUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzIG1z
KQoreworICAgIGludCByZXN1bHQgPSAoc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5cyhtcykpICsg
NCkgJSA3OworICAgIEFTU0VSVChyZXN1bHQgPj0gMCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworaW5saW5lIGludCBtb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFw
WWVhcikKK3sKKyAgICBjb25zdCBpbnQgZCA9IGRheUluWWVhcjsKKyAgICBpbnQgc3RlcDsKKwor
ICAgIGlmIChkIDwgKHN0ZXAgPSAzMSkpCisgICAgICAgIHJldHVybiAwOworICAgIHN0ZXAgKz0g
KGxlYXBZZWFyID8gMjkgOiAyOCk7CisgICAgaWYgKGQgPCBzdGVwKQorICAgICAgICByZXR1cm4g
MTsKKyAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKKyAgICAgICAgcmV0dXJuIDI7CisgICAgaWYg
KGQgPCAoc3RlcCArPSAzMCkpCisgICAgICAgIHJldHVybiAzOworICAgIGlmIChkIDwgKHN0ZXAg
Kz0gMzEpKQorICAgICAgICByZXR1cm4gNDsKKyAgICBpZiAoZCA8IChzdGVwICs9IDMwKSkKKyAg
ICAgICAgcmV0dXJuIDU7CisgICAgaWYgKGQgPCAoc3RlcCArPSAzMSkpCisgICAgICAgIHJldHVy
biA2OworICAgIGlmIChkIDwgKHN0ZXAgKz0gMzEpKQorICAgICAgICByZXR1cm4gNzsKKyAgICBp
ZiAoZCA8IChzdGVwICs9IDMwKSkKKyAgICAgICAgcmV0dXJuIDg7CisgICAgaWYgKGQgPCAoc3Rl
cCArPSAzMSkpCisgICAgICAgIHJldHVybiA5OworICAgIGlmIChkIDwgKHN0ZXAgKz0gMzApKQor
ICAgICAgICByZXR1cm4gMTA7CisgICAgcmV0dXJuIDExOworfQorCitpbmxpbmUgaW50IGRheUlu
TW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpCit7CisgICAg
YXV0byBjaGVja01vbnRoID0gW10gKGludCBkYXlJblllYXIsIGludCYgc3RhcnREYXlPZlRoaXNN
b250aCwgaW50JiBzdGFydERheU9mTmV4dE1vbnRoLCBpbnQgZGF5c0luVGhpc01vbnRoKSAtPiBi
b29sIHsKKyAgICAgICAgc3RhcnREYXlPZlRoaXNNb250aCA9IHN0YXJ0RGF5T2ZOZXh0TW9udGg7
CisgICAgICAgIHN0YXJ0RGF5T2ZOZXh0TW9udGggKz0gZGF5c0luVGhpc01vbnRoOworICAgICAg
ICByZXR1cm4gKGRheUluWWVhciA8PSBzdGFydERheU9mTmV4dE1vbnRoKTsKKyAgICB9OworCisg
ICAgY29uc3QgaW50IGQgPSBkYXlJblllYXI7CisgICAgaW50IHN0ZXA7CisgICAgaW50IG5leHQg
PSAzMDsKKworICAgIGlmIChkIDw9IG5leHQpCisgICAgICAgIHJldHVybiBkICsgMTsKKyAgICBj
b25zdCBpbnQgZGF5c0luRmViID0gKGxlYXBZZWFyID8gMjkgOiAyOCk7CisgICAgaWYgKGNoZWNr
TW9udGgoZCwgc3RlcCwgbmV4dCwgZGF5c0luRmViKSkKKyAgICAgICAgcmV0dXJuIGQgLSBzdGVw
OworICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMxKSkKKyAgICAgICAgcmV0dXJu
IGQgLSBzdGVwOworICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMwKSkKKyAgICAg
ICAgcmV0dXJuIGQgLSBzdGVwOworICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMx
KSkKKyAgICAgICAgcmV0dXJuIGQgLSBzdGVwOworICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAs
IG5leHQsIDMwKSkKKyAgICAgICAgcmV0dXJuIGQgLSBzdGVwOworICAgIGlmIChjaGVja01vbnRo
KGQsIHN0ZXAsIG5leHQsIDMxKSkKKyAgICAgICAgcmV0dXJuIGQgLSBzdGVwOworICAgIGlmIChj
aGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMxKSkKKyAgICAgICAgcmV0dXJuIGQgLSBzdGVwOwor
ICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMwKSkKKyAgICAgICAgcmV0dXJuIGQg
LSBzdGVwOworICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMxKSkKKyAgICAgICAg
cmV0dXJuIGQgLSBzdGVwOworICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMwKSkK
KyAgICAgICAgcmV0dXJuIGQgLSBzdGVwOworICAgIHN0ZXAgPSBuZXh0OworICAgIHJldHVybiBk
IC0gc3RlcDsKK30KIAogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQg
KFVUQyArIERTVCkuCiBXVEZfRVhQT1JUX1BSSVZBVEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0
ZUxvY2FsVGltZU9mZnNldChkb3VibGUgdXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRD
VGltZSk7CkBAIC0xNTUsMyArNDE0LDUgQEAgdXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRl
cm1pbmF0ZWRDaGFyYWN0ZXJzOwogdXNpbmcgV1RGOjptYWtlUkZDMjgyMkRhdGVTdHJpbmc7CiB1
c2luZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6Y2FsY3VsYXRlTG9jYWxUaW1l
T2Zmc2V0OwordXNpbmcgV1RGOjp0aW1lQ2xpcDsKK3VzaW5nIFdURjo6anNDdXJyZW50VGltZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0dyZWdvcmlhbkRhdGVUaW1lLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL0dyZWdvcmlhbkRhdGVUaW1lLmNwcAppbmRleCAzMjE0ODg3ZWYzZmY0YzkyMmNh
YjUxNTkwMTYyMzc1MjYyMzA5NDY3Li42YzFmNzVmMmU1MDJmM2FhMzc4MzEzNzkzYWI3ZTM2YWY0
YzYwOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGltZS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvR3JlZ29yaWFuRGF0ZVRpbWUuY3BwCkBAIC0zNSw2ICszNSw1
MyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorR3JlZ29yaWFuRGF0ZVRpbWU6OkdyZWdvcmlhbkRh
dGVUaW1lKGRvdWJsZSBtcywgTG9jYWxUaW1lT2Zmc2V0IGxvY2FsVGltZSkKK3sKKyAgICBpZiAo
bXMgPj0gMAorI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODYpCisgICAgICAgICAgICAvLyBUaGUg
VlMgQ29tcGlsZXIgZm9yIDMyLWJpdCBidWlsZHMgZ2VuZXJhdGVzIGEgZmxvYXRpbmcgcG9pbnQg
ZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGNhc3QKKyAgICAgICAgICAgIC8vIGZyb20gYW4gaW5m
aW5pdHkgdG8gYSA2NC1iaXQgaW50ZWdlci4gV2UgbGVhdmUgdGhpcyByb3V0aW5lIHdpdGggdGhl
IGZsb2F0aW5nIHBvaW50IGVycm9yCisgICAgICAgICAgICAvLyBsZWZ0IGluIGEgcmVnaXN0ZXIs
IGNhdXNpbmcgdW5kZWZpbmVkIGJlaGF2aW9yIGluIGxhdGVyIGZsb2F0aW5nIHBvaW50IG9wZXJh
dGlvbnMuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVG8gYXZvaWQgdGhpcyBpc3N1
ZSwgd2UgY2hlY2sgZm9yIGluZmluaXR5IGhlcmUsIGFuZCByZXR1cm4gZmFsc2UgaW4gdGhhdCBj
YXNlLgorICAgICAgICAgICAgJiYgIXN0ZDo6aXNpbmYobXMpCisjZW5kaWYKKyAgICAgICAgKSB7
CisgICAgICAgIGludDY0X3QgaW50ZWdlciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG1zKTsKKyAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikgPT0gbXMgJiYgaW50ZWdlciA8
PSBtYXhFQ01BU2NyaXB0VGltZSkgeworICAgICAgICAgICAgLy8gUG9zaXRpdmUgaW50ZWdlciBm
YXN0IHBhdGguCisgICAgICAgICAgICBXVEY6OlRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29u
ZHMgdGltZUNsaXBwZWQoaW50ZWdlcik7CisgICAgICAgICAgICBjb25zdCBpbnQgeWVhciA9IG1z
VG9ZZWFyKG1zKTsKKyAgICAgICAgICAgIHNldFNlY29uZChtc1RvU2Vjb25kcyh0aW1lQ2xpcHBl
ZCkpOworICAgICAgICAgICAgc2V0TWludXRlKG1zVG9NaW51dGVzKHRpbWVDbGlwcGVkKSk7Cisg
ICAgICAgICAgICBzZXRIb3VyKG1zVG9Ib3Vycyh0aW1lQ2xpcHBlZCkpOworICAgICAgICAgICAg
c2V0V2Vla0RheShtc1RvV2Vla0RheSh0aW1lQ2xpcHBlZCkpOworICAgICAgICAgICAgaW50IHll
YXJEYXkgPSBkYXlJblllYXIodGltZUNsaXBwZWQsIHllYXIpOworICAgICAgICAgICAgYm9vbCBs
ZWFwWWVhciA9IGlzTGVhcFllYXIoeWVhcik7CisgICAgICAgICAgICBzZXRZZWFyRGF5KHllYXJE
YXkpOworICAgICAgICAgICAgc2V0TW9udGhEYXkoZGF5SW5Nb250aEZyb21EYXlJblllYXIoeWVh
ckRheSwgbGVhcFllYXIpKTsKKyAgICAgICAgICAgIHNldE1vbnRoKG1vbnRoRnJvbURheUluWWVh
cih5ZWFyRGF5LCBsZWFwWWVhcikpOworICAgICAgICAgICAgc2V0WWVhcih5ZWFyKTsKKyAgICAg
ICAgICAgIHNldElzRFNUKGxvY2FsVGltZS5pc0RTVCk7CisgICAgICAgICAgICBzZXRVVENPZmZz
ZXRJbk1pbnV0ZShsb2NhbFRpbWUub2Zmc2V0IC8gV1RGOjptc1Blck1pbnV0ZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgY29uc3QgaW50IHllYXIgPSBtc1Rv
WWVhcihtcyk7CisgICAgc2V0U2Vjb25kKG1zVG9TZWNvbmRzKG1zKSk7CisgICAgc2V0TWludXRl
KG1zVG9NaW51dGVzKG1zKSk7CisgICAgc2V0SG91cihtc1RvSG91cnMobXMpKTsKKyAgICBzZXRX
ZWVrRGF5KG1zVG9XZWVrRGF5KG1zKSk7CisgICAgaW50IHllYXJEYXkgPSBkYXlJblllYXIobXMs
IHllYXIpOworICAgIGJvb2wgbGVhcFllYXIgPSBpc0xlYXBZZWFyKHllYXIpOworICAgIHNldFll
YXJEYXkoeWVhckRheSk7CisgICAgc2V0TW9udGhEYXkoZGF5SW5Nb250aEZyb21EYXlJblllYXIo
eWVhckRheSwgbGVhcFllYXIpKTsKKyAgICBzZXRNb250aChtb250aEZyb21EYXlJblllYXIoeWVh
ckRheSwgbGVhcFllYXIpKTsKKyAgICBzZXRZZWFyKHllYXIpOworICAgIHNldElzRFNUKGxvY2Fs
VGltZS5pc0RTVCk7CisgICAgc2V0VVRDT2Zmc2V0SW5NaW51dGUobG9jYWxUaW1lLm9mZnNldCAv
IFdURjo6bXNQZXJNaW51dGUpOworfQorCiB2b2lkIEdyZWdvcmlhbkRhdGVUaW1lOjpzZXRUb0N1
cnJlbnRMb2NhbFRpbWUoKQogewogI2lmIE9TKFdJTkRPV1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGltZS5oIGIvU291cmNlL1dURi93dGYvR3JlZ29yaWFuRGF0
ZVRpbWUuaAppbmRleCAwMmMyZWM3Y2YzMjFhYTlkNGI3ZmYwOWFhYjkwYTU3YWY1YWYwNjE2Li45
YzRiZDEzYTVmMmFlMjFlNWM5NjNkMjI3MWNhNjBiNGVlZGYwMjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9HcmVnb3JpYW5EYXRlVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0dyZWdv
cmlhbkRhdGVUaW1lLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgR3JlZ29yaWFuRGF0ZVRpbWUg
ZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdyZWdv
cmlhbkRhdGVUaW1lKCkgPSBkZWZhdWx0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNp
dCBHcmVnb3JpYW5EYXRlVGltZShkb3VibGUgbXMsIExvY2FsVGltZU9mZnNldCk7CiAKICAgICBp
bmxpbmUgaW50IHllYXIoKSBjb25zdCB7IHJldHVybiBtX3llYXI7IH0KICAgICBpbmxpbmUgaW50
IG1vbnRoKCkgY29uc3QgeyByZXR1cm4gbV9tb250aDsgfQo=
</data>
<flag name="review"
          id="398143"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>