<?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>77492</bug_id>
          
          <creation_ts>2012-01-31 16:30:47 -0800</creation_ts>
          <short_desc>[chromium] Remove unnecessary gesture recognizer</short_desc>
          <delta_ts>2012-02-07 21:06:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77315</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Kroeger">rjkroege</reporter>
          <assigned_to name="Robert Kroeger">rjkroege</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546620</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-01-31 16:30:47 -0800</bug_when>
    <thetext>Design changes in Chromium make the PlatformGestureRecognizer unnecessary to any platform. It would be desirable to remove the no longer necessary code and update layout tests appropriately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551601</commentid>
    <comment_count>1</comment_count>
      <attachid>125963</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-02-07 17:35:05 -0800</bug_when>
    <thetext>Created attachment 125963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551602</commentid>
    <comment_count>2</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-02-07 17:36:04 -0800</bug_when>
    <thetext>abarth: per email thread a while ago. Do you have time to review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551759</commentid>
    <comment_count>3</comment_count>
      <attachid>125963</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 21:06:48 -0800</bug_when>
    <thetext>Comment on attachment 125963
Patch

Clearing flags on attachment: 125963

Committed r107036: &lt;http://trac.webkit.org/changeset/107036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551760</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 21:06:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125963</attachid>
            <date>2012-02-07 17:35:05 -0800</date>
            <delta_ts>2012-02-07 21:06:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77492-20120207203503.patch</filename>
            <type>text/plain</type>
            <size>93803</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MDgzNDVjZDE3MTVjYzZlZDkyMTJiNmFkODY5MWVhNGZiMjRmMjRmLi4xOTI2NTk2OTEzNWFiYmIx
YjllYTU2NTZjNjNhOGY0OTJkYWVkZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0wMi0wNyAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgdGhlIGVuYWJsZSBtYXJjcm8gZm9y
IHRoZSBubyBsb25nZXIgbmVjZXNzYXJ5IENocm9taXVtCisgICAgICAgIGdlc3R1cmUgcmVjb2du
aXplci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wMi0wNyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNs
b3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggb24gaHR0cDovL3d3dy5yaWNrc2hhd2Jh
Z3MuY29tLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ0ODc4M2ZjNDUwMDJjOGZhMzI0M2NhZGUxNTUyNmI3N2E4
NWFiNzcuLjc4NGNkY2JjZDljYjhhMGY3MTc3NzRjZTc3NjQxNTcxZjI4NzgzZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMi0wNyAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2Vn
ZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgdGhlIG5vIGxvbmdl
ciBuZWNlc3NhcnkgQ2hyb21pdW0gZ2VzdHVyZSByZWNvZ25pemVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChGcmFtZWxlc3NTY3JvbGxWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWlu
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94
Lmg6CisgICAgICAgIChQb3B1cExpc3RCb3gpOgorCiAyMDEyLTAyLTA3ICBEYXZpZCBSZXZlbWFu
ICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSRUdSRVNTSU9O
KHIxMDE4NTQpOiBDYXVzaW5nIGxhcmdlIGFtb3VudHMgb2YgdW5uZWNlc3NhcnkgcmVwYWludGlu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMjgyNWI1NjFmZmUzZjBkNjQyY2FlYTRlMDg0ZjdiMjM0NjdmNmVhMi4u
NjBkMzEyNTg3Y2UyYjJlNGEwM2E4MDA3YjMwNzc0ODlmY2IyYzE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wMi0wNyAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBD
aHJvbWl1bSBnZXN0dXJlIHJlY29nbml6ZXIgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0
RGF0YUVuYWJsZUZlYXR1cmVzLmluOgorCiAyMDEyLTAyLTA3ICBSb2IgQnVpcyAgPHJidWlzQHJp
bS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVwc3RyZWFtIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4Y2I4Yzc2YThjMTI4OWE5NWJmZmVl
YjRmNGVkNWRmNTA3NDQ3YThlLi5iOTFkNTgyYTA2NmU2NzBhY2RjM2YzMzg3MjgyMjk1MjU4MzVl
YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAy
LTA3ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIFJlbW92ZSBubyBsb25nZXIgbmVjZXNzYXJ5IENocm9taXVtIGdlc3R1cmUgcmVj
b2duaXplciBjb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzc0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICog
c3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y3Jl
YXRlRnJhbWVWaWV3KToKKyAgICAgICAgKiBzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUltcGw6OldlYlBvcHVwTWVudUltcGwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAg
KiBzcmMvV2ViUG9wdXBNZW51SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAg
ICAqIHRlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcDogUmVtb3ZlZC4KKwogMjAx
Mi0wMi0wNyAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gUkVHUkVTU0lPTihyMTAxODU0KTogQ2F1c2luZyBsYXJnZSBhbW91bnRzIG9m
IHVubmVjZXNzYXJ5IHJlcGFpbnRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
aW5kZXggYjlkMWFmMWM0OTVjY2U1ZjQ2NGIwNTNjMjM0OWEzNjA2MTk3NTM3OC4uZTZkNDNkYWMz
NTNlYmY1ZGQ1ZTU3ZDFjOGIyNmE3NDM0ZTE1Mzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaApAQCAtODU5LDEwICs4NTksNiBAQAogI2RlZmluZSBFTkFCTEVfR0VPTE9DQVRJ
T04gMAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfR0VTVFVSRV9SRUNPR05JWkVSKQot
I2RlZmluZSBFTkFCTEVfR0VTVFVSRV9SRUNPR05JWkVSIDAKLSNlbmRpZgotCiAjaWYgIWRlZmlu
ZWQoRU5BQkxFX1ZJRVdQT1JUKQogI2RlZmluZSBFTkFCTEVfVklFV1BPUlQgMAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggMDdhMzQwZjhiNjJmZjE0MWVhN2JmZDU0NzM5NzUxNzY5NWNlNjMz
NC4uYTZhODc3ZWMzODMxMzAxMzZhNWVlOGY2ZjcwMTcyMmU1NmI3YWJiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMjc2LDcgKzI3Niw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1F
dmVudC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxh
dGZvcm1NZW51RGVzY3JpcHRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1N
b3VzZUV2ZW50LmgnLApAQCAtMjkwOCw4ICsyOTA3LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXdDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vR2FtZXBhZHNDaHJvbWl1bS5jcHAnLAotICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwJywKLSAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0hpc3RvZ3JhbVN1cHBvcnRDaHJvbWl1bS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0tleUNvZGVDb252ZXJzaW9uLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0tleUNvZGVDb252ZXJzaW9uQW5kcm9pZC5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjg2YTkyNzZmYjZiZGVmOWI3
YzM3ODgzYzUwOTNmNzdlMDRjYjNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyX2gKLSNkZWZpbmUgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCi0K
LSNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEV2ZW50SGFuZGxlcjsKLWNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKLQotY2xhc3Mg
UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplciB7Ci1wcm90ZWN0ZWQ6Ci0gICAgUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcigpOwotCi1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplcj4gY3JlYXRlKCk7Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcigpOwotCi0gICAgdHlwZWRlZiBQYXNzT3duUHRyPFZlY3RvcjxQbGF0Zm9y
bUdlc3R1cmVFdmVudD4gPiBQYXNzR2VzdHVyZXM7Ci0KLSAgICAvLyBJbnZva2VkIGZvciBlYWNo
IHRvdWNoIGV2ZW50IGFuZCByZXR1cm5zIDAgb3IgbW9yZSByZXN1bHRpbmcgZ2VzdHVyZXMuCi0g
ICAgdmlydHVhbCBQYXNzR2VzdHVyZXMgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25z
dCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpID0gMDsKLQotICAg
IC8vIENsZWFycyB0aGUgR2VzdHVyZVJlY29nbml6ZXIgdG8gaXRzIGluaXRpYWwgc3RhdGUuCi0g
ICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKaW5k
ZXggYjBlMzM5YjY0YjZjMjYyYTQ2M2MwZjc5ODEyOTA2ZmZhODMzOThkNy4uMzQ5ODQ3NWRjZGU1
OTA5ODZkMmQzZWIzYmRlNWU0MDUwYjI1OWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaApAQCAtMzYsNyArMzYs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWVsZXNzU2Nyb2xsVmll
d0NsaWVudDsKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEVOQUJMRShHRVNU
VVJFX0VWRU5UUykKICAgICBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKICNlbmRpZgogICAg
IGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpID0gMDsKICNlbmRp
ZgotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZF
TlRTKQogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50JikgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NTQ1NWQ5NjMzZGFiMmY1MzY3M2Q2
MTE0M2U4YzdiYjM4ZGI0YzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6
ZXJDaHJvbWl1bS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEZJWE1FOiBNYWtlIHRoZXNlIGNvbmZpZ3VyYWJsZSBwcm9n
cmFtbWF0aWNhbGx5Lgotc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhpbXVtVG91Y2hEb3duRHVyYXRp
b25JblNlY29uZHNGb3JDbGljayA9IDAuODsKLXN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bVRv
dWNoRG93bkR1cmF0aW9uSW5TZWNvbmRzRm9yQ2xpY2sgPSAwLjAxOwotc3RhdGljIGNvbnN0IGRv
dWJsZSBtYXhpbXVtU2Vjb25kc0JldHdlZW5Eb3VibGVDbGljayA9IDAuNzsKLXN0YXRpYyBjb25z
dCBpbnQgbWF4aW11bVRvdWNoTW92ZUluUGl4ZWxzRm9yQ2xpY2sgPSAyMDsKLXN0YXRpYyBjb25z
dCBmbG9hdCBtaW5GbGlja1NwZWVkU3F1YXJlZCA9IDU1MC5mICogNTUwLmY7Ci0KLUdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW06Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKQotICAgIDogbV9m
aXJzdFRvdWNoVGltZSgwLjApCi0gICAgLCBtX3N0YXRlKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21p
dW06Ok5vR2VzdHVyZSkKLSAgICAsIG1fbGFzdFRvdWNoVGltZSgwLjApCi0gICAgLCBtX2xhc3RD
bGlja1RpbWUoMC4wKQotICAgICwgbV9sYXN0Q2xpY2tQb3NpdGlvbigpCi0gICAgLCBtX2xhc3RU
b3VjaFBvc2l0aW9uKCkKLSAgICAsIG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb24oKQotICAgICwg
bV94VmVsb2NpdHkoMC4wKQotICAgICwgbV95VmVsb2NpdHkoMC4wKQotICAgICwgbV9jdHJsS2V5
KGZhbHNlKQotICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQot
ICAgICwgbV9tZXRhS2V5KGZhbHNlKQotewotICAgIGNvbnN0IHVuc2lnbmVkIEZpcnN0RmluZ2Vy
ID0gMDsKLSAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIFJlbGVhc2VkID0gUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOwotICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludDo6U3RhdGUgUHJlc3NlZCA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOwot
ICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgTW92ZWQgPSBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoTW92ZWQ7Ci0gICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSBT
dGF0aW9uYXJ5ID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7Ci0gICAgY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSBDYW5jZWxsZWQgPSBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoQ2FuY2VsbGVkOwotCi0gICAgYWRkRWRnZUZ1bmN0aW9uKE5vR2VzdHVyZSwgRmly
c3RGaW5nZXIsIFByZXNzZWQsIGZhbHNlLCAmR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6dG91
Y2hEb3duKTsKLSAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBGaXJz
dEZpbmdlciwgQ2FuY2VsbGVkLCBmYWxzZSwgJkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Om5v
R2VzdHVyZSk7Ci0gICAgYWRkRWRnZUZ1bmN0aW9uKFBlbmRpbmdTeW50aGV0aWNDbGljaywgRmly
c3RGaW5nZXIsIFJlbGVhc2VkLCBmYWxzZSwgJkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmNs
aWNrKTsKLSAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBGaXJzdEZp
bmdlciwgTW92ZWQsIGZhbHNlLCAmR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6aXNDbGlja09y
U2Nyb2xsKTsKLSAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBGaXJz
dEZpbmdlciwgU3RhdGlvbmFyeSwgZmFsc2UsICZHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpp
c0NsaWNrT3JTY3JvbGwpOwotICAgIGFkZEVkZ2VGdW5jdGlvbihTY3JvbGwsIEZpcnN0RmluZ2Vy
LCBNb3ZlZCwgZmFsc2UsICZHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjppblNjcm9sbCk7Ci0g
ICAgYWRkRWRnZUZ1bmN0aW9uKFNjcm9sbCwgRmlyc3RGaW5nZXIsIFJlbGVhc2VkLCBmYWxzZSwg
Jkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnNjcm9sbEVuZCk7Ci0gICAgYWRkRWRnZUZ1bmN0
aW9uKFNjcm9sbCwgRmlyc3RGaW5nZXIsIENhbmNlbGxlZCwgZmFsc2UsICZHZXN0dXJlUmVjb2du
aXplckNocm9taXVtOjpzY3JvbGxFbmQpOwotfQotCi12b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW06OnJlc2V0KCkKLXsKLSAgICBtX2ZpcnN0VG91Y2hUaW1lID0gMC4wOwotICAgIG1fc3Rh
dGUgPSBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmU7Ci0gICAgbV9sYXN0VG91
Y2hUaW1lID0gMC4wOwotICAgIG1fbGFzdFRvdWNoUG9zaXRpb24uc2V0WCgwKTsKLSAgICBtX2xh
c3RUb3VjaFBvc2l0aW9uLnNldFkoMCk7Ci0gICAgbV9sYXN0VG91Y2hTY3JlZW5Qb3NpdGlvbi5z
ZXRYKDApOwotICAgIG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb24uc2V0WSgwKTsKLSAgICBtX3hW
ZWxvY2l0eSA9IDAuMDsKLSAgICBtX3lWZWxvY2l0eSA9IDAuMDsKLX0KLQotR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bTo6fkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKQotewotfQotCi12b2lk
IEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFkZEVkZ2VGdW5jdGlvbihTdGF0ZSBzdGF0ZSwg
dW5zaWduZWQgZmluZ2VySWQsIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgdG91Y2hUeXBlLCBi
b29sIHRvdWNoSGFuZGxlZEJ5SmF2YVNjcmlwdCwgR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbiB0
cmFuc2l0aW9uRnVuY3Rpb24pCi17Ci0gICAgbV9lZGdlRnVuY3Rpb25zLmFkZChzaWduYXR1cmUo
c3RhdGUsIGZpbmdlcklkLCB0b3VjaFR5cGUsIHRvdWNoSGFuZGxlZEJ5SmF2YVNjcmlwdCksIHRy
YW5zaXRpb25GdW5jdGlvbik7Ci19Ci0KLWJvb2wgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6
aXNJbkNsaWNrVGltZVdpbmRvdygpCi17Ci0gICAgZG91YmxlIGR1cmF0aW9uKG1fbGFzdFRvdWNo
VGltZSAtIG1fZmlyc3RUb3VjaFRpbWUpOwotICAgIHJldHVybiBkdXJhdGlvbiA+PSBtaW5pbXVt
VG91Y2hEb3duRHVyYXRpb25JblNlY29uZHNGb3JDbGljayAmJiBkdXJhdGlvbiA8IG1heGltdW1U
b3VjaERvd25EdXJhdGlvbkluU2Vjb25kc0ZvckNsaWNrOwotfQotCi1ib29sIEdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OmlzSW5TZWNvbmRDbGlja1RpbWVXaW5kb3coKQotewotICAgIGRvdWJs
ZSBkdXJhdGlvbihtX2xhc3RUb3VjaFRpbWUgLSBtX2xhc3RDbGlja1RpbWUpOwotICAgIHJldHVy
biBkdXJhdGlvbiA8IG1heGltdW1TZWNvbmRzQmV0d2VlbkRvdWJsZUNsaWNrOwotfQotCi1ib29s
IEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0
IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQpCi17Ci0gICAgaW50IG1hbmhhdHRhbkRpc3RhbmNl
ID0gYWJzKHBvaW50LnBvcygpLngoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLngoKSkgKyBhYnMo
cG9pbnQucG9zKCkueSgpIC0gbV9maXJzdFRvdWNoUG9zaXRpb24ueSgpKTsKLSAgICByZXR1cm4g
bWFuaGF0dGFuRGlzdGFuY2UgPCBtYXhpbXVtVG91Y2hNb3ZlSW5QaXhlbHNGb3JDbGljazsKLX0K
LQotYm9vbCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjppc1NlY29uZENsaWNrSW5zaWRlTWFu
aGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQpCi17Ci0gICAgaW50
IG1hbmhhdHRhbkRpc3RhbmNlID0gYWJzKHBvaW50LnBvcygpLngoKSAtIG1fbGFzdENsaWNrUG9z
aXRpb24ueCgpKSArIGFicyhwb2ludC5wb3MoKS55KCkgLSBtX2xhc3RDbGlja1Bvc2l0aW9uLnko
KSk7Ci0gICAgcmV0dXJuIG1hbmhhdHRhbkRpc3RhbmNlIDwgbWF4aW11bVRvdWNoTW92ZUluUGl4
ZWxzRm9yQ2xpY2s7Ci19Ci0KLWJvb2wgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6aXNPdmVy
TWluRmxpY2tTcGVlZCgpCi17Ci0gICAgcmV0dXJuIChtX3hWZWxvY2l0eSAqIG1feFZlbG9jaXR5
ICsgbV95VmVsb2NpdHkgKiBtX3lWZWxvY2l0eSkgPiBtaW5GbGlja1NwZWVkU3F1YXJlZDsKLX0K
LQotdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2
ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVy
ZXMpCi17Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlVGFwRG93biwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3Vj
aFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBt
X2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKLX0KLQotdm9pZCBHZXN0dXJlUmVjb2du
aXplckNocm9taXVtOjphcHBlbmRDbGlja0dlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNo
UG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQotewotICAgIGdlc3R1cmVzLT5h
cHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcCwgbV9m
aXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3Vj
aFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFL
ZXkpKTsKLX0KLQotdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmREb3VibGVD
bGlja0dlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdl
c3R1cmVzIGdlc3R1cmVzKQotewotICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJl
RXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCwgbV9maXJzdFRvdWNoUG9zaXRp
b24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5m
LCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKLX0KLQotUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVzIEdlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW06OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JiBldmVudCwgYm9vbCBkZWZhdWx0UHJldmVudGVkKQotewotICAgIG1fY3RybEtleSA9IGV2
ZW50LmN0cmxLZXkoKTsKLSAgICBtX2FsdEtleSA9IGV2ZW50LmFsdEtleSgpOwotICAgIG1fc2hp
ZnRLZXkgPSBldmVudC5zaGlmdEtleSgpOwotICAgIG1fbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXko
KTsKLQotICAgIE93blB0cjxWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZXMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFBsYXRmb3JtR2VzdHVyZUV2ZW50PigpKTsKLSAgICBjb25z
dCBWZWN0b3I8UGxhdGZvcm1Ub3VjaFBvaW50PiYgcG9pbnRzID0gZXZlbnQudG91Y2hQb2ludHMo
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCA9IHBvaW50c1tpXTsKLSAgICAgICAg
dXBkYXRlVmFsdWVzKGV2ZW50LnRpbWVzdGFtcCgpLCBwKTsKLQotICAgICAgICBpZiAoR2VzdHVy
ZVRyYW5zaXRpb25GdW5jdGlvbiBlZiA9IG1fZWRnZUZ1bmN0aW9ucy5nZXQoc2lnbmF0dXJlKG1f
c3RhdGUsIHAuaWQoKSwgcC5zdGF0ZSgpLCBkZWZhdWx0UHJldmVudGVkKSkpCi0gICAgICAgICAg
ICAoKCp0aGlzKS4qZWYpKHAsIGdlc3R1cmVzLmdldCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGdl
c3R1cmVzLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjph
cHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4oY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBv
aW50LCBHZXN0dXJlcyBnZXN0dXJlcykKLXsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3Jt
R2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbiwgdG91Y2hQb2lu
dC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAu
ZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7Ci19Ci0KLXZv
aWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZUVuZChjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzLCBmbG9h
dCB4VmVsb2NpdHksIGZsb2F0IHlWZWxvY2l0eSkKLXsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBs
YXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQsIHRvdWNo
UG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgeFZl
bG9jaXR5LCB5VmVsb2NpdHksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0
YUtleSkpOwotfQotCi12b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVVcGRhdGUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0
dXJlcyBnZXN0dXJlcykKLXsKLSAgICBmbG9hdCBkZWx0YVgodG91Y2hQb2ludC5wb3MoKS54KCkg
LSBtX2ZpcnN0VG91Y2hQb3NpdGlvbi54KCkpOwotICAgIGZsb2F0IGRlbHRhWSh0b3VjaFBvaW50
LnBvcygpLnkoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLnkoKSk7Ci0KLSAgICBnZXN0dXJlcy0+
YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxV
cGRhdGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRv
dWNoVGltZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXks
IG1fbWV0YUtleSkpOwotICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3Mo
KTsKLX0KLQotdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjp1cGRhdGVWYWx1ZXMoY29u
c3QgZG91YmxlIHRvdWNoVGltZSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50
KQotewotICAgIGlmIChtX3N0YXRlICE9IE5vR2VzdHVyZSAmJiB0b3VjaFBvaW50LnN0YXRlKCkg
PT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkKSB7Ci0gICAgICAgIGRvdWJsZSBpbnRl
cnZhbCh0b3VjaFRpbWUgLSBtX2xhc3RUb3VjaFRpbWUpOwotICAgICAgICBtX3hWZWxvY2l0eSA9
ICh0b3VjaFBvaW50LnBvcygpLngoKSAtIG1fbGFzdFRvdWNoUG9zaXRpb24ueCgpKSAvIGludGVy
dmFsOwotICAgICAgICBtX3lWZWxvY2l0eSA9ICh0b3VjaFBvaW50LnBvcygpLnkoKSAtIG1fbGFz
dFRvdWNoUG9zaXRpb24ueSgpKSAvIGludGVydmFsOwotICAgIH0KLSAgICBtX2xhc3RUb3VjaFRp
bWUgPSB0b3VjaFRpbWU7Ci0gICAgbV9sYXN0VG91Y2hQb3NpdGlvbiA9IHRvdWNoUG9pbnQucG9z
KCk7Ci0gICAgbV9sYXN0VG91Y2hTY3JlZW5Qb3NpdGlvbiA9IHRvdWNoUG9pbnQuc2NyZWVuUG9z
KCk7Ci0gICAgaWYgKHN0YXRlKCkgPT0gTm9HZXN0dXJlKSB7Ci0gICAgICAgIG1fZmlyc3RUb3Vj
aFRpbWUgPSB0b3VjaFRpbWU7Ci0gICAgICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQ
b2ludC5wb3MoKTsKLSAgICAgICAgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24gPSB0b3VjaFBv
aW50LnNjcmVlblBvcygpOwotICAgICAgICBtX3hWZWxvY2l0eSA9IDAuMDsKLSAgICAgICAgbV95
VmVsb2NpdHkgPSAwLjA7Ci0gICAgfQotfQotCi0vLyBCdWlsZHMgYSBzaWduYXR1cmUuIFNpZ25h
dHVyZXMgYXJlIGFzc2VtYmxlZCBieSBqb2luaW5nIHRvZ2V0aGVyIG11bHRpcGxlIGJpdHMuCi0v
LyAxIExTQiBiaXQgc28gdGhhdCB0aGUgY29tcHV0ZWQgc2lnbmF0dXJlIGlzIGFsd2F5cyBncmVh
dGVyIHRoYW4gMAotLy8gMyBiaXRzIGZvciB0aGUgfHRvdWNoVHlwZXwuCi0vLyAxIGJpdCBmb3Ig
fGhhbmRsZWR8Ci0vLyAxMiBiaXRzIGZvciB8aWR8Ci0vLyAxNSBiaXRzIGZvciB0aGUgfGdlc3R1
cmVTdGF0ZXwuCi11bnNpZ25lZCBpbnQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6c2lnbmF0
dXJlKFN0YXRlIGdlc3R1cmVTdGF0ZSwgdW5zaWduZWQgaWQsIFBsYXRmb3JtVG91Y2hQb2ludDo6
U3RhdGUgdG91Y2hUeXBlLCBib29sIGhhbmRsZWQpCi17Ci0gICAgQVNTRVJUKChpZCAmIDB4ZmZm
KSA9PSBpZCk7Ci0gICAgcmV0dXJuIDEgKyAoKHRvdWNoVHlwZSAmIDB4NykgPDwgMSB8IChoYW5k
bGVkID8gMSA8PCA0IDogMCkgfCAoKGlkICYgMHhmZmYpIDw8IDUgKSB8IChnZXN0dXJlU3RhdGUg
PDwgMTcpKTsKLX0KLQotYm9vbCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjp0b3VjaERvd24o
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykK
LXsKLSAgICBhcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KHRvdWNoUG9pbnQsIGdlc3R1cmVzKTsK
LSAgICBzZXRTdGF0ZShQZW5kaW5nU3ludGhldGljQ2xpY2spOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpzY3JvbGxFbmQoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiBwb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCi17Ci0gICAgaWYgKGlz
T3Zlck1pbkZsaWNrU3BlZWQoKSAmJiBwb2ludC5zdGF0ZSgpICE9IFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hDYW5jZWxsZWQpCi0gICAgICAgIGFwcGVuZFNjcm9sbEdlc3R1cmVFbmQocG9pbnQs
IGdlc3R1cmVzLCBtX3hWZWxvY2l0eSwgbV95VmVsb2NpdHkpOwotICAgIGVsc2UKLSAgICAgICAg
YXBwZW5kU2Nyb2xsR2VzdHVyZUVuZChwb2ludCwgZ2VzdHVyZXMsIDAuZiwgMC5mKTsKLSAgICBz
ZXRTdGF0ZShOb0dlc3R1cmUpOwotICAgIHJlc2V0KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1ib29sIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Om5vR2VzdHVyZShjb25zdCBQbGF0Zm9y
bVRvdWNoUG9pbnQmLCBHZXN0dXJlcykKLXsKLSAgICByZXNldCgpOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpjbGljayhjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKLXsKLSAgICBib29sIGdl
c3R1cmVBZGRlZCA9IGZhbHNlOwotICAgIGlmIChpc0luQ2xpY2tUaW1lV2luZG93KCkgJiYgaXNJ
bnNpZGVNYW5oYXR0YW5TcXVhcmUocG9pbnQpKSB7Ci0gICAgICAgIGdlc3R1cmVBZGRlZCA9IHRy
dWU7Ci0gICAgICAgIGFwcGVuZENsaWNrR2VzdHVyZUV2ZW50KHBvaW50LCBnZXN0dXJlcyk7Ci0g
ICAgICAgIGlmIChpc0luU2Vjb25kQ2xpY2tUaW1lV2luZG93KCkgJiYgaXNTZWNvbmRDbGlja0lu
c2lkZU1hbmhhdHRhblNxdWFyZShwb2ludCkpCi0gICAgICAgICAgICBhcHBlbmREb3VibGVDbGlj
a0dlc3R1cmVFdmVudChwb2ludCwgZ2VzdHVyZXMpOwotICAgICAgICBtX2xhc3RDbGlja1RpbWUg
PSBtX2xhc3RUb3VjaFRpbWU7Ci0gICAgICAgIG1fbGFzdENsaWNrUG9zaXRpb24gPSBtX2xhc3RU
b3VjaFBvc2l0aW9uOwotICAgIH0KLSAgICByZXNldCgpOwotICAgIHJldHVybiBnZXN0dXJlQWRk
ZWQ7Ci19Ci0KLWJvb2wgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6aXNDbGlja09yU2Nyb2xs
KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQotewot
ICAgIGlmIChpc0luQ2xpY2tUaW1lV2luZG93KCkgJiYgaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUo
cG9pbnQpKSB7Ci0gICAgICAgIHNldFN0YXRlKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBl
bmRpbmdTeW50aGV0aWNDbGljayk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBpZiAocG9pbnQuc3RhdGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQgJiYg
IWlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHBvaW50KSkgewotICAgICAgICBhcHBlbmRTY3JvbGxH
ZXN0dXJlQmVnaW4ocG9pbnQsIGdlc3R1cmVzKTsKLSAgICAgICAgYXBwZW5kU2Nyb2xsR2VzdHVy
ZVVwZGF0ZShwb2ludCwgZ2VzdHVyZXMpOwotICAgICAgICBzZXRTdGF0ZShTY3JvbGwpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmluU2Nyb2xsKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYgcG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQotewotICAgIGFwcGVuZFNjcm9sbEdlc3R1cmVV
cGRhdGUocG9pbnQsIGdlc3R1cmVzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotUGFzc093blB0
cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpj
cmVhdGUoKQotewotICAgIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0qIGdlc3R1cmVSZWNvZ25p
emVyID0gbmV3IEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKTsKLSAgICByZXR1cm4gYWRvcHRQ
dHIoZ2VzdHVyZVJlY29nbml6ZXIpOwotfQotCi1QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCkKLXsKLX0KLQotUGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplcjo6flBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKQotewotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9H
ZXN0dXJlUmVjb2duaXplckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ4ODk4NjZmNjYzNGI1NjAzOWE0ZWI1MTM0YTJlNzBhOTZkY2Y0YjkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZXN0dXJlUmVjb2duaXplckNocm9taXVtX2gKLSNk
ZWZpbmUgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bV9oCi0KLSNpbmNsdWRlICJQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyLmgiCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybVRvdWNoUG9pbnQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
Ci1jbGFzcyBJbnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW07Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7Ci0KLWNsYXNzIEdlc3R1
cmVSZWNvZ25pemVyQ2hyb21pdW0gOiBwdWJsaWMgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplciAg
ewotcHVibGljOgotICAgIGVudW0gU3RhdGUgewotICAgICAgICBOb0dlc3R1cmUsCi0gICAgICAg
IFBlbmRpbmdTeW50aGV0aWNDbGljaywKLSAgICAgICAgU2Nyb2xsLAotICAgIH07Ci0KLSAgICB0
eXBlZGVmIFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVFdmVudD4qIEdlc3R1cmVzOwotICAgIHR5cGVk
ZWYgYm9vbCAoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Kkdlc3R1cmVUcmFuc2l0aW9uRnVu
Y3Rpb24pKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKLQotICAgIEdlc3R1
cmVSZWNvZ25pemVyQ2hyb21pdW0oKTsKLSAgICB+R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSgp
OwotCi0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMo
Y29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKTsKLSAgICBT
dGF0ZSBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQg
Y2xhc3MgOjpJbnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW07Ci0KLSAgICBzdGF0
aWMgdW5zaWduZWQgaW50IHNpZ25hdHVyZShTdGF0ZSwgdW5zaWduZWQsIFBsYXRmb3JtVG91Y2hQ
b2ludDo6U3RhdGUsIGJvb2wpOwotICAgIHZvaWQgYWRkRWRnZUZ1bmN0aW9uKFN0YXRlLCB1bnNp
Z25lZCBmaW5nZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUsIGJvb2wgdG91Y2hIYW5kbGVk
QnlKYXZhU2NyaXB0LCBHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKTsKLSAgICB2b2lkIGFwcGVu
ZFRhcERvd25HZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMp
OwotICAgIHZvaWQgYXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBv
aW50JiwgR2VzdHVyZXMpOwotICAgIHZvaWQgYXBwZW5kRG91YmxlQ2xpY2tHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwotICAgIHZvaWQgYXBwZW5kU2Ny
b2xsR2VzdHVyZUJlZ2luKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKLSAg
ICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jiwg
R2VzdHVyZXMsIGZsb2F0LCBmbG9hdCk7Ci0gICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlVXBk
YXRlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKLSAgICBib29sIGlzSW5D
bGlja1RpbWVXaW5kb3coKTsKLSAgICBib29sIGlzSW5TZWNvbmRDbGlja1RpbWVXaW5kb3coKTsK
LSAgICBib29sIGlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYpOwotICAgIGJvb2wgaXNTZWNvbmRDbGlja0luc2lkZU1hbmhhdHRhblNxdWFyZShjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmKTsKLSAgICBib29sIGlzT3Zlck1pbkZsaWNrU3BlZWQoKTsKLSAg
ICB2b2lkIHNldFN0YXRlKFN0YXRlIHZhbHVlKSB7IG1fc3RhdGUgPSB2YWx1ZTsgfQotICAgIHZv
aWQgdXBkYXRlVmFsdWVzKGRvdWJsZSB0b3VjaFRpbWUsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYpOwotCi0gICAgYm9vbCBjbGljayhjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJl
cyk7Ci0gICAgYm9vbCBpc0NsaWNrT3JTY3JvbGwoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jiwg
R2VzdHVyZXMpOwotICAgIGJvb2wgaW5TY3JvbGwoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jiwg
R2VzdHVyZXMpOwotICAgIGJvb2wgbm9HZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYs
IEdlc3R1cmVzKTsKLSAgICBib29sIHRvdWNoRG93bihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
LCBHZXN0dXJlcyk7Ci0gICAgYm9vbCBzY3JvbGxFbmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50
JiwgR2VzdHVyZXMpOwotCi0gICAgV1RGOjpIYXNoTWFwPGludCwgR2VzdHVyZVRyYW5zaXRpb25G
dW5jdGlvbj4gbV9lZGdlRnVuY3Rpb25zOwotICAgIEludFBvaW50IG1fZmlyc3RUb3VjaFBvc2l0
aW9uOwotICAgIEludFBvaW50IG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uOwotICAgIGRvdWJs
ZSBtX2ZpcnN0VG91Y2hUaW1lOwotICAgIFN0YXRlIG1fc3RhdGU7Ci0gICAgZG91YmxlIG1fbGFz
dFRvdWNoVGltZTsKLSAgICBkb3VibGUgbV9sYXN0Q2xpY2tUaW1lOwotICAgIEludFBvaW50IG1f
bGFzdENsaWNrUG9zaXRpb247Ci0gICAgSW50UG9pbnQgbV9sYXN0VG91Y2hQb3NpdGlvbjsKLSAg
ICBJbnRQb2ludCBtX2xhc3RUb3VjaFNjcmVlblBvc2l0aW9uOwotICAgIGZsb2F0IG1feFZlbG9j
aXR5OwotICAgIGZsb2F0IG1feVZlbG9jaXR5OwotCi0gICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAg
Ym9vbCBtX2FsdEtleTsKLSAgICBib29sIG1fc2hpZnRLZXk7Ci0gICAgYm9vbCBtX21ldGFLZXk7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBHZXN0dXJlUmVjb2du
aXplckNocm9taXVtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BvcHVwQ29udGFpbmVyLmNwcAppbmRleCA1OWEwZjYwYWU3OTRlMDA5YTkwMTdmMWVlNjUzMDhh
MTk3OWE4NDAwLi5lMjMxYjg1MDYyNjFlMGY3ZmMyNGMwOWU1ZTA3OTBlMTAyNzllMGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIu
Y3BwCkBAIC0yOTIsNyArMjkyLDcgQEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlVG91Y2hF
dmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
R0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIC8vIEZJWE1F
OiBSZWZhY3RvciB0aGlzIGNvZGUgdG8gc2hhcmUgZnVuY3Rpb25hbGl0eSB3aXRoIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50LgogYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaApp
bmRleCA0NTJlMWI0MjU0MjZjOWQzMTlhZDMzNWYyNGQ3YmYwOWRlM2IzYjBmLi5kNzc2NjYzZjRh
OGE3ZTRkNDI4Yzc0Y2I3ZTBmNzVjY2I1NGU4ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVRv
dWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYKLSNpZiBFTkFCTEUo
R0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVw
TGlzdEJveC5jcHAKaW5kZXggYmMwMGM3MGVkOTMyMWJlMjY1Mjc2YzNhMmI2YWY4MDFmNGIyZGMz
ZS4uMTExNjRjY2MzMWQwZTkxYTYyN2Q1NGFjODYxYWJjYjM3YmYyM2EwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwCkBAIC0xODYs
NyArMTg2LDcgQEAgYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxh
dGZvcm1Ub3VjaEV2ZW50JikKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dO
SVpFUikKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiBib29sIFBvcHVwTGlzdEJveDo6aGFu
ZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JikKIHsKICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlz
dEJveC5oCmluZGV4IDRjZWMzYTQxYWU3MDUxYTYwMTkwOWYxYTAxNTlmNjk2MmExYjFlNDYuLmRk
MmU1OGRlZGRkOGYzOGQyNDYzZTYyM2FmNzkwMzhjYzUyM2Y4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5oCkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCBib29sIGhh
bmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50Jik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L0Fib3V0RGF0YUVuYWJsZUZlYXR1cmVzLmluIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YUVuYWJsZUZlYXR1cmVzLmluCmluZGV4
IGRlODZjYTJlZTg1OWQ4NDNkMmRlOTIyNzczMjhkNzc0YWExNzY3ZGQuLjQ0NTY1ZGIyMjQ5ZWE2
MWNjMGNiNDI1MGQzMjZkZjJjNDMwMTYyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFFbmFibGVGZWF0dXJlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhRW5hYmxlRmVh
dHVyZXMuaW4KQEAgLTQ0LDcgKzQ0LDYgQEAgR0NfTE9HR0lORwogR0NfVkFMSURBVElPTgogR0VP
TE9DQVRJT04KIEdFU1RVUkVfRVZFTlRTCi1HRVNUVVJFX1JFQ09HTklaRVIKIEdHQwogR0xJQl9T
VVBQT1JUCiBHTE9CQUxfRkFTVE1BTExPQ19ORVcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CmluZGV4IGUxNWZiZmNhYTg2ZDc1NTYzOWVlYzgxYTdiN2VmNjdkZDY2YzUwYmYuLmM4NTAyZjU3
M2M0NTE3MDE3MzU0ODVhZjQ3NTIzZTc1MTI5NGM4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwaQpAQCAtOTYsNyArOTYsNiBAQAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdV
dGlsaXRpZXNUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCS2V5UGF0aFRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAnLAotICAgICAg
ICAgICAgJ3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvS2V5Ym9hcmRUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvS1VSTFRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IGU3ZWYxOGY4ZGZhYTJlMDlhMjAwN2MxYTNh
MjI3MDg4NjM5MGUxOWEuLjRjY2EyNjc5NTBjYThiOTg2NDUzMTA2ZWRjYTQzNWYyNDQ0NjIzODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTUwLDcgKzUwLDYgQEAKICAg
ICAgICdFTkFCTEVfR0FNRVBBRD0xJywKICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScsCiAg
ICAgICAnRU5BQkxFX0dFU1RVUkVfRVZFTlRTPTEnLAotICAgICAgJ0VOQUJMRV9HRVNUVVJFX1JF
Q09HTklaRVI9MScsCiAgICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICdFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRT0xJywKICAgICAgICdFTkFCTEVfSU5QVVRfQ09MT1I9MCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAyNTI0Y2Y0
NWJhNGNlZDg2MTM0NDA0MTJhOGNmNDFlMjc3MDQ4ZDU2Li5mOGQyMDM0ZmQ4MzI3NTc5NGI2MTM0
ZWU1ZDBlZjY3NzY1OTA1YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAKQEAgLTIxMDUsMTAgKzIxMDUsNiBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6Y3Jl
YXRlRnJhbWVWaWV3KCkKICAgICBtX2ZyYW1lLT5jcmVhdGVWaWV3KHdlYlZpZXctPnNpemUoKSwg
Q29sb3I6OndoaXRlLCB3ZWJWaWV3LT5pc1RyYW5zcGFyZW50KCksICB3ZWJWaWV3LT5maXhlZExh
eW91dFNpemUoKSwgaXNNYWluRnJhbWUgPyB3ZWJWaWV3LT5pc0ZpeGVkTGF5b3V0TW9kZUVuYWJs
ZWQoKSA6IDApOwogICAgIGlmICh3ZWJWaWV3LT5zaG91bGRBdXRvUmVzaXplKCkgJiYgaXNNYWlu
RnJhbWUpCiAgICAgICAgIG1fZnJhbWUtPnZpZXcoKS0+ZW5hYmxlQXV0b1NpemVNb2RlKHRydWUs
IHdlYlZpZXctPm1pbkF1dG9TaXplKCksIHdlYlZpZXctPm1heEF1dG9TaXplKCkpOwotCi0jaWYg
RU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICB3ZWJWaWV3LT5yZXNldEdlc3R1cmVSZWNv
Z25pemVyKCk7Ci0jZW5kaWYKIH0KIAogV2ViRnJhbWVJbXBsKiBXZWJGcmFtZUltcGw6OmZyb21G
cmFtZShGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQb3B1cE1lbnVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBv
cHVwTWVudUltcGwuY3BwCmluZGV4IDY4N2IwMzM2MDkwOGRlYzBlMWExZDQ2MmE0NjZhNDdhY2Nj
ZWYyY2IuLjAzZjMxZDhiMGJmMjMyNWEwOGFiNjFiNjAyNzU4OWU1Mjk4ZDRkYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCkBAIC01MSw5
ICs1MSw4IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgPHNraWEv
ZXh0L3BsYXRmb3JtX2NhbnZhcy5oPgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikK
KyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZl
bnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCiAjZW5kaWYKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC03Myw5ICs3Miw2IEBAIFdlYlBvcHVwTWVudSog
V2ViUG9wdXBNZW51OjpjcmVhdGUoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCiBXZWJQb3B1cE1l
bnVJbXBsOjpXZWJQb3B1cE1lbnVJbXBsKFdlYldpZGdldENsaWVudCogY2xpZW50KQogICAgIDog
bV9jbGllbnQoY2xpZW50KQogICAgICwgbV93aWRnZXQoMCkKLSNpZiBFTkFCTEUoR0VTVFVSRV9S
RUNPR05JWkVSKQotICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyOjpjcmVhdGUoKSkKLSNlbmRpZgogewogICAgIC8vIFNldCB0byBpbXBv
c3NpYmxlIHBvaW50IHNvIHdlIGFsd2F5cyBnZXQgdGhlIGZpcnN0IG1vdXNlIHBvc2l0aW9uLgog
ICAgIG1fbGFzdE1vdXNlUG9zaXRpb24gPSBXZWJQb2ludCgtMSwgLTEpOwpAQCAtMTQzLDExICsx
MzksNiBAQCBib29sIFdlYlBvcHVwTWVudUltcGw6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgV2Vi
VG91Y2hFdmVudCYgZXZlbnQpCiAKICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIHRvdWNo
RXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCk7CiAgICAgYm9vbCBkZWZhdWx0UHJldmVudGVk
KG1fd2lkZ2V0LT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnRCdWlsZGVyKSk7Ci0jaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFdmVudHMobV9nZXN0dXJlUmVjb2duaXplci0+cHJv
Y2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyh0b3VjaEV2ZW50QnVpbGRlciwgZGVmYXVsdFByZXZl
bnRlZCkpOwotICAgIGZvciAodW5zaWduZWQgaW50ICBpID0gMDsgaSA8IGdlc3R1cmVFdmVudHMt
PnNpemUoKTsgaSsrKQotICAgICAgICBtX3dpZGdldC0+aGFuZGxlR2VzdHVyZUV2ZW50KCgqZ2Vz
dHVyZUV2ZW50cylbaV0pOwotI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVw
TWVudUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwu
aAppbmRleCAwYWQwMzk2M2E3NjY1NTVlMDU4YjE3YjBjZDdiMjczNTA3NDUwYjE1Li5hM2ZkZGI2
ZDA3ZmNiZjVjOGJkYmM5MTZiZTM3YTViNjY2ZjhmNDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCkBAIC0xMzksMTAgKzEzOSw2IEBAIHB1Ymxp
YzoKICAgICAvLyBUaGlzIGlzIGEgbm9uLW93bmluZyByZWYuIFRoZSBwb3B1cCB3aWxsIG5vdGlm
eSB1cyB2aWEgcG9wdXBDbG9zZWQoKQogICAgIC8vIGJlZm9yZSBpdCBpcyBkZXN0cm95ZWQuCiAg
ICAgV2ViQ29yZTo6RnJhbWVsZXNzU2Nyb2xsVmlldyogbV93aWRnZXQ7Ci0KLSNpZiBFTkFCTEUo
R0VTVFVSRV9SRUNPR05JWkVSKQotICAgIE93blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApp
bmRleCA0NjI5Y2JiMzJhYmU1YjQzMjRlNTZhMDk3ZmUzN2Q2ODU3NTVlYTA0Li44MjY5YTFkY2Zl
YWY2MDFhOGVkZTAyZTE2YjUyOGI5MDdkY2EzOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNDgsMTAgKzE0OCw2IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1HZXN0dXJlRXZlbnQuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dO
SVpFUikKLSNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCi0jZW5kaWYKLQog
I2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dCaXRtYXBDb250ZXh0Lmg+CiAj
aW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAtMzc1LDkgKzM3MSw2IEBAIFdl
YlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjZW5kaWYKICAg
ICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShhZG9wdFB0cihuZXcgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xp
ZW50KCkgOiAwKSkpCiAgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHkoYWRvcHRQdHIobmV3
IEdlb2xvY2F0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5nZW9sb2NhdGlvbkNsaWVu
dCgpIDogMCkpKQotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgLCBtX2dlc3R1
cmVSZWNvZ25pemVyKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgp
KQotI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAsIG1fdXNlck1lZGlhQ2xp
ZW50SW1wbCh0aGlzKQogI2VuZGlmCkBAIC04MDAsMTMgKzc5Myw2IEBAIGJvb2wgV2ViVmlld0lt
cGw6OnRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAKICAgICBQbGF0Zm9y
bVRvdWNoRXZlbnRCdWlsZGVyIHRvdWNoRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJh
bWVWaWV3KCksIGV2ZW50KTsKICAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBtYWluRnJhbWVJ
bXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZl
bnRCdWlsZGVyKTsKLQotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgT3duUHRy
PFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlRXZlbnRzKG1f
Z2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXModG91Y2hFdmVu
dEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCAgaSA9
IDA7IGkgPCBnZXN0dXJlRXZlbnRzLT5zaXplKCk7IGkrKykKLSAgICAgICAgbWFpbkZyYW1lSW1w
bCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KGdlc3R1cmVF
dmVudHMtPmF0KGkpKTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9
CiAjZW5kaWYKQEAgLTMxODAsMTMgKzMxNjYsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRWaXNp
YmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsCiAjZW5k
aWYKIH0KIAotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi12b2lkIFdlYlZpZXdJbXBs
OjpyZXNldEdlc3R1cmVSZWNvZ25pemVyKCkKLXsKLSAgICBtX2dlc3R1cmVSZWNvZ25pemVyLT5y
ZXNldCgpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogYm9vbCBXZWJW
aWV3SW1wbDo6cmVxdWVzdFBvaW50ZXJMb2NrKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCmluZGV4IGEwMzlhMDljZWI4N2MyMGUzZGE4NDMzMzFmMWJlYWFlZDNm
NGYxMzEuLjgwMGQxODI1NDM2ZjEzMDQ5ZDZlZjk2ZTkzZDZhMzVmOTFiMjg0NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNjgsOSArNjgsNiBAQCBjbGFz
cyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlclRoZW1lOwogY2xh
c3MgV2lkZ2V0OwotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi1jbGFzcyBQbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDU4LDEwICs0NTUsNiBAQCBwdWJsaWM6CiAgICAgLy8gYSBwbHVnaW4gY2FuIHVwZGF0ZSBpdHMg
b3duIHpvb20sIHNheSBiZWNhdXNlIG9mIGl0cyBvd24gVUkuCiAgICAgdm9pZCBmdWxsRnJhbWVQ
bHVnaW5ab29tTGV2ZWxDaGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwpOwogCi0jaWYgRU5BQkxFKEdF
U1RVUkVfUkVDT0dOSVpFUikKLSAgICB2b2lkIHJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKTsKLSNl
bmRpZgotCiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsKIAog
ICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7CkBA
IC02OTAsMTAgKzY4Myw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPERldmljZU9yaWVudGF0aW9u
Q2xpZW50UHJveHk+IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKICAgICBPd25QdHI8
R2VvbG9jYXRpb25DbGllbnRQcm94eT4gbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5OwogCi0jaWYg
RU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBPd25QdHI8V2ViQ29yZTo6UGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFDbGllbnRJbXBsIG1fdXNlck1lZGlhQ2xp
ZW50SW1wbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9Jbm5lckdlc3R1cmVSZWNvZ25pemVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTkxMDU0ZTRiMzJlMzg5MTU2MDMzMGUxMTJmZmExNWZhOGRhYTZiNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDc1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oIgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNp
bmNsdWRlIDxzdGRhcmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLWNsYXNzIElu
c3BlY3RhYmxlR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSA6IHB1YmxpYyBXZWJDb3JlOjpHZXN0
dXJlUmVjb2duaXplckNocm9taXVtIHsKLXB1YmxpYzoKLSAgICBJbnNwZWN0YWJsZUdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW0oKQotICAgICAgICA6IFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVy
Q2hyb21pdW0oKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQgc2lnbmF0dXJlKFN0YXRlIGdlc3R1
cmVTdGF0ZSwgdW5zaWduZWQgaWQsIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgdG91Y2hUeXBl
LCBib29sIGhhbmRsZWQpCi0gICAgewotICAgICAgICByZXR1cm4gR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bTo6c2lnbmF0dXJlKGdlc3R1cmVTdGF0ZSwgaWQsIHRvdWNoVHlwZSwgaGFuZGxlZCk7
Ci0gICAgfTsKLQotICAgIEludFBvaW50IGZpcnN0VG91Y2hQb3NpdGlvbigpIHsgcmV0dXJuIG1f
Zmlyc3RUb3VjaFBvc2l0aW9uOyB9OwotCi0gICAgdm9pZCBzZXRGaXJzdFRvdWNoVGltZShkb3Vi
bGUgdCkgeyBtX2ZpcnN0VG91Y2hUaW1lID0gdDsgfTsKLSAgICBkb3VibGUgZmlyc3RUb3VjaFRp
bWUoKSB7IHJldHVybiBtX2ZpcnN0VG91Y2hUaW1lOyB9OwotCi0gICAgdm9pZCBzZXRMYXN0VG91
Y2hUaW1lKGRvdWJsZSB0KSB7IG1fbGFzdFRvdWNoVGltZSA9IHQ7IH07Ci0gICAgZG91YmxlIGxh
c3RUb3VjaFRpbWUoKSB7IHJldHVybiBtX2xhc3RUb3VjaFRpbWU7IH07Ci0KLSAgICBHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uIGVkZ2VGdW5jdGlv
bihpbnQgaGFzaCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VkZ2VGdW5jdGlvbnMuZ2V0KGhh
c2gpOwotICAgIH07Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmFsdWVzKGRvdWJsZSBkLCBj
b25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQgJnApCi0gICAgewotICAgICAgICBHZXN0dXJlUmVjb2du
aXplckNocm9taXVtOjp1cGRhdGVWYWx1ZXMoZCwgcCk7Ci0gICAgfTsKLQotICAgIHZvaWQgYWRk
RWRnZUZ1bmN0aW9uKFN0YXRlIHN0YXRlLCB1bnNpZ25lZCBmaW5nZXIsIFBsYXRmb3JtVG91Y2hQ
b2ludDo6U3RhdGUgdG91Y2hTdGF0ZSwgYm9vbCB0b3VjaEhhbmRsZWRCeUphdmFTY3JpcHQsIEdl
c3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24gZnVuY3Rpb24pCi0gICAgewotICAgICAgICBHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjphZGRFZGdlRnVuY3Rpb24oc3RhdGUsIGZpbmdlciwgdG91Y2hT
dGF0ZSwgdG91Y2hIYW5kbGVkQnlKYXZhU2NyaXB0LCBmdW5jdGlvbik7Ci0gICAgfTsKLQotICAg
IGJvb2wgc3R1YkVkZ2VGdW5jdGlvbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjpHZXN0dXJlcyopOwotCi0gICAgdm9pZCBzZXRTdGF0ZVRlc3Qo
U3RhdGUgdmFsdWUpCi0gICAgewotICAgICAgICBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpz
ZXRTdGF0ZSh2YWx1ZSk7Ci0gICAgfTsKLQotICAgIGJvb2wgaXNJbnNpZGVNYW5oYXR0YW5TcXVh
cmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJl
KHRvdWNoUG9pbnQpOwotICAgIH07Ci0KLSAgICBib29sIGlzSW5DbGlja1RpbWVXaW5kb3coKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmlzSW5DbGlj
a1RpbWVXaW5kb3coKTsKLSAgICB9OwotCi19OwotCi1ib29sIEluc3BlY3RhYmxlR2VzdHVyZVJl
Y29nbml6ZXJDaHJvbWl1bTo6c3R1YkVkZ2VGdW5jdGlvbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9p
bnQmLCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpHZXN0dXJlcyopCi17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1jbGFzcyBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgOiBwdWJsaWMg
V2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50IHsKLXB1YmxpYzoKLSAgICBCdWlsZGFibGVQbGF0
Zm9ybVRvdWNoUG9pbnQoKTsKLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQoaW50IHgs
IGludCB5KTsKLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQoaW50IHgsIGludCB5LCBQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlKTsKLQotICAgIHZvaWQgc2V0WChpbnQgeCkKLSAgICB7
Ci0gICAgICAgIG1fcG9zLnNldFgoeCk7Ci0gICAgICAgIG1fc2NyZWVuUG9zLnNldFgoeCk7Ci0g
ICAgfTsKLQotICAgIHZvaWQgc2V0WShpbnQgeSkKLSAgICB7Ci0gICAgICAgIG1fcG9zLnNldFko
eSk7Ci0gICAgICAgIG1fc2NyZWVuUG9zLnNldFkoeSk7Ci0gICAgfTsKLX07Ci0KLUJ1aWxkYWJs
ZVBsYXRmb3JtVG91Y2hQb2ludDo6QnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50KCkKLXsKLSAg
ICBtX2lkID0gMDsKLSAgICBtX3N0YXRlID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRp
b25hcnk7Ci0gICAgbV9wb3MgPSBJbnRQb2ludDo6emVybygpOwotICAgIG1fc2NyZWVuUG9zID0g
SW50UG9pbnQ6Onplcm8oKTsKLX0KLQotQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50OjpCdWls
ZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQoaW50IHgsIGludCB5KQotewotICAgIG1faWQgPSAwOwot
ICAgIG1fc3RhdGUgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKLSAgICBt
X3BvcyA9IEludFBvaW50KHgsIHkpOwotICAgIG1fc2NyZWVuUG9zID0gSW50UG9pbnQoeCwgeSk7
Ci19Ci0KLUJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludDo6QnVpbGRhYmxlUGxhdGZvcm1Ub3Vj
aFBvaW50KGludCB4LCBpbnQgeSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSBzdGF0ZSkKLXsK
LSAgICBtX2lkID0gMDsKLSAgICBtX3N0YXRlID0gc3RhdGU7Ci0gICAgbV9wb3MgPSBJbnRQb2lu
dCh4LCB5KTsKLSAgICBtX3NjcmVlblBvcyA9IEludFBvaW50KHgsIHkpOwotfQotCi1jbGFzcyBC
dWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3Vj
aEV2ZW50IHsKLXB1YmxpYzoKLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQoV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlLCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBk
b3VibGUgdGltZSkKLSAgICB7Ci0gICAgICAgIG1fdHlwZSA9IHR5cGU7Ci0gICAgICAgIG1fdG91
Y2hQb2ludHMuYXBwZW5kKHBvaW50KTsKLSAgICAgICAgbV90aW1lc3RhbXAgPSB0aW1lOwotICAg
IH0KLQotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudChXZWJDb3JlOjpQbGF0Zm9ybUV2
ZW50OjpUeXBlIHR5cGUsIFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQpCi0gICAgewotICAgICAg
ICBtX3R5cGUgPSB0eXBlOwotICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChwb2ludCk7Ci0g
ICAgICAgIG1fdGltZXN0YW1wID0gMTAwLjsKLSAgICB9Ci19OwotCi1jbGFzcyBHZXN0dXJlUmVj
b2duaXplclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci1wdWJsaWM6Ci0gICAgR2VzdHVy
ZVJlY29nbml6ZXJUZXN0KCkgeyB9Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IH0KLX07Ci0KLXZvaWQgU2lt
dWxhdGVBbmRUZXN0Rmlyc3RDbGljayhJbnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21p
dW0mIGdtKQotewotICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dl
c3R1cmUsIGdtLnN0YXRlKCkpOwotCi0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHBy
ZXNzKDEwLCAxNSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQpOwotICAgIEJ1aWxk
YWJsZVBsYXRmb3JtVG91Y2hFdmVudCBwcmVzc0V2ZW50KFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OlRvdWNoU3RhcnQsIHByZXNzLCAxMDAwLik7Ci0gICAgT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlU3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRG
b3JHZXN0dXJlcyhwcmVzc0V2ZW50LCBmYWxzZSkpOwotICAgIEFTU0VSVF9FUSgodW5zaWduZWQg
aW50KTEsIGdlc3R1cmVTdGFydC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZVRhcERvd24sICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOwotICAgIEFTU0VS
VF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIGdt
LnN0YXRlKCkpOwotCi0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHJlbGVhc2UoMTAs
IDE2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQpOwotICAgIEJ1aWxkYWJsZVBs
YXRmb3JtVG91Y2hFdmVudCByZWxlYXNlRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91
Y2hFbmQsIHJlbGVhc2UsIDEwMDAuICsgMC43KTsKLSAgICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6
OlBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRG
b3JHZXN0dXJlcyhyZWxlYXNlRXZlbnQsIGZhbHNlKSk7Ci0gICAgQVNTRVJUX0VRKCh1bnNpZ25l
ZCBpbnQpMSwgZ2VzdHVyZUVuZC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZVRhcCwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOwotfQotCi10eXBlZGVmIE93
blB0cjxWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gR2VzdHVyZXM7Ci0K
LVRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIGhhc2gpCi17Ci0gICAgSW5zcGVjdGFibGVH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtIHRlc3RHbTsKLSAgICBjb25zdCB1bnNpZ25lZCBGaXJz
dEZpbmdlciA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgU2Vjb25kRmluZ2VyID0gMTsKLQotICAg
IEFTU0VSVF9FUSgxICsgMCwgdGVzdEdtLnNpZ25hdHVyZShHZXN0dXJlUmVjb2duaXplckNocm9t
aXVtOjpOb0dlc3R1cmUsIEZpcnN0RmluZ2VyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVs
ZWFzZWQsIGZhbHNlKSk7Ci0KLSAgICBBU1NFUlRfRVEoMSArICgoOCB8IDEpIDw8IDEpLCB0ZXN0
R20uc2lnbmF0dXJlKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgRmlyc3RG
aW5nZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCB0cnVlKSk7Ci0KLSAgICBB
U1NFUlRfRVEoMSArICgoMHgxMDAwMCB8IDIpIDw8IDEpLCB0ZXN0R20uc2lnbmF0dXJlKEdlc3R1
cmVSZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGljaywgRmlyc3RGaW5nZXIs
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgZmFsc2UpKTsKLQotICAgIEFTU0VSVF9F
USgxICsgKDB4MjAwMDAgPDwgMSksIHRlc3RHbS5zaWduYXR1cmUoR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bTo6U2Nyb2xsLCBGaXJzdEZpbmdlciwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJl
bGVhc2VkLCBmYWxzZSkpOwotCi0gICAgQVNTRVJUX0VRKDEgKyAoKDB4MjAwMDAgfCAxKSA8PCAx
KSwgdGVzdEdtLnNpZ25hdHVyZShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpTY3JvbGwsIEZp
cnN0RmluZ2VyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwgZmFsc2UpKTsKLQot
ICAgIEFTU0VSVF9FUSgxICsgKCgweDIwMDAwIHwgMHgxMCB8IDggfCAxKSA8PCAxKSwgdGVzdEdt
LnNpZ25hdHVyZShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpTY3JvbGwsIFNlY29uZEZpbmdl
ciwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIHRydWUpKTsKLX0KLQotVEVTVF9G
KEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgc3RhdGUpCi17Ci0gICAgSW5zcGVjdGFibGVHZXN0dXJl
UmVjb2duaXplckNocm9taXVtIHRlc3RHbTsKLQotICAgIEFTU0VSVF9FUSgwLCB0ZXN0R20uc3Rh
dGUoKSk7Ci0gICAgdGVzdEdtLnNldFN0YXRlVGVzdChHZXN0dXJlUmVjb2duaXplckNocm9taXVt
OjpQZW5kaW5nU3ludGhldGljQ2xpY2spOwotICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIHRlc3RHbS5zdGF0ZSgpKTsKLX0KLQot
VEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUpCi17
Ci0gICAgSW5zcGVjdGFibGVHZXN0dXJlUmVjb2duaXplckNocm9taXVtIGdtOwotICAgIEJ1aWxk
YWJsZVBsYXRmb3JtVG91Y2hQb2ludCBwOwotCi0gICAgQVNTRVJUX0VRKDAuMCwgZ20uZmlyc3RU
b3VjaFBvc2l0aW9uKCkueCgpKTsKLSAgICBBU1NFUlRfRVEoMC4wLCBnbS5maXJzdFRvdWNoUG9z
aXRpb24oKS55KCkpOwotCi0gICAgcC5zZXRYKDAuMCk7Ci0gICAgcC5zZXRZKDE5Ljk5OSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZ20uaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpOwotCi0gICAgcC5z
ZXRYKDE5Ljk5OSk7Ci0gICAgcC5zZXRZKDAuMCk7Ci0gICAgQVNTRVJUX1RSVUUoZ20uaXNJbnNp
ZGVNYW5oYXR0YW5TcXVhcmUocCkpOwotCi0gICAgcC5zZXRYKDIwLjApOwotICAgIHAuc2V0WSgw
LjApOwotICAgIEFTU0VSVF9GQUxTRShnbS5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwKSk7Ci0K
LSAgICBwLnNldFgoMC4wKTsKLSAgICBwLnNldFkoMjAuMCk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdt
LmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKTsKLQotICAgIHAuc2V0WCgtMjAuMCk7Ci0gICAg
cC5zZXRZKDAuMCk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdtLmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJl
KHApKTsKLQotICAgIHAuc2V0WCgwLjApOwotICAgIHAuc2V0WSgtMjAuMCk7Ci0gICAgQVNTRVJU
X0ZBTFNFKGdtLmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKTsKLX0KLQotVEVTVF9GKEdlc3R1
cmVSZWNvZ25pemVyVGVzdCwgaXNJbkNsaWNrVGltZVdpbmRvdykKLXsKLSAgICBJbnNwZWN0YWJs
ZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0gZ207Ci0KLSAgICBnbS5zZXRGaXJzdFRvdWNoVGlt
ZSgwLjApOwotICAgIGdtLnNldExhc3RUb3VjaFRpbWUoMC4wKTsKLSAgICBBU1NFUlRfRkFMU0Uo
Z20uaXNJbkNsaWNrVGltZVdpbmRvdygpKTsKLQotICAgIGdtLnNldEZpcnN0VG91Y2hUaW1lKDAu
MCk7Ci0gICAgZ20uc2V0TGFzdFRvdWNoVGltZSgwLjAxMDAwMSk7Ci0gICAgQVNTRVJUX1RSVUUo
Z20uaXNJbkNsaWNrVGltZVdpbmRvdygpKTsKLQotICAgIGdtLnNldEZpcnN0VG91Y2hUaW1lKDAu
MCk7Ci0gICAgZ20uc2V0TGFzdFRvdWNoVGltZSgwLjggLSAuMDAwMDAwMDEpOwotICAgIEFTU0VS
VF9UUlVFKGdtLmlzSW5DbGlja1RpbWVXaW5kb3coKSk7Ci0KLSAgICBnbS5zZXRGaXJzdFRvdWNo
VGltZSgwLjApOwotICAgIGdtLnNldExhc3RUb3VjaFRpbWUoMC44MDAwMSk7Ci0gICAgQVNTRVJU
X0ZBTFNFKGdtLmlzSW5DbGlja1RpbWVXaW5kb3coKSk7Ci19Ci0KLVRFU1RfRihHZXN0dXJlUmVj
b2duaXplclRlc3QsIGFkZEVkZ2VGdW5jdGlvbikKLXsKLSAgICBJbnNwZWN0YWJsZUdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW0gZ207Ci0gICAgZ20uYWRkRWRnZUZ1bmN0aW9uKEdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OlNjcm9sbCwgMCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVh
c2VkLCB0cnVlLCByZWludGVycHJldF9jYXN0PEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Okdl
c3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24+KCZJbnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW06OnN0dWJFZGdlRnVuY3Rpb24pKTsKLQotICAgIEFTU0VSVF9FUShyZWludGVycHJldF9j
YXN0PEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Okdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24+
KCZJbnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnN0dWJFZGdlRnVuY3Rpb24p
LCBnbS5lZGdlRnVuY3Rpb24oZ20uc2lnbmF0dXJlKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06
OlNjcm9sbCwgMCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCB0cnVlKSkpOwot
fQotCi1URVNUX0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCB1cGRhdGVWYWx1ZXMpCi17Ci0gICAg
SW5zcGVjdGFibGVHZXN0dXJlUmVjb2duaXplckNocm9taXVtIGdtOwotCi0gICAgQVNTRVJUX0VR
KDAuMCwgZ20uZmlyc3RUb3VjaFRpbWUoKSk7Ci0gICAgQVNTRVJUX0VRKDAuMCwgZ20ubGFzdFRv
dWNoVGltZSgpKTsKLSAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9H
ZXN0dXJlLCBnbS5zdGF0ZSgpKTsKLQotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBw
MSgxMCwgMTEpOwotICAgIGdtLnVwZGF0ZVZhbHVlcygxLjEsIHAxKTsKLQotICAgIEFTU0VSVF9F
USgxMCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueCgpKTsKLSAgICBBU1NFUlRfRVEoMTEsIGdt
LmZpcnN0VG91Y2hQb3NpdGlvbigpLnkoKSk7Ci0gICAgQVNTRVJUX0VRKDEuMSwgZ20uZmlyc3RU
b3VjaFRpbWUoKSk7Ci0gICAgQVNTRVJUX0VRKDAuMCwgZ20ubGFzdFRvdWNoVGltZSgpIC0gZ20u
Zmlyc3RUb3VjaFRpbWUoKSk7Ci0KLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcDIo
MTMsIDE0KTsKLSAgICBnbS5zZXRTdGF0ZVRlc3QoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6
UGVuZGluZ1N5bnRoZXRpY0NsaWNrKTsKLSAgICBnbS51cGRhdGVWYWx1ZXMoMi4wLCBwMik7Ci0K
LSAgICBBU1NFUlRfRVEoMTAsIGdtLmZpcnN0VG91Y2hQb3NpdGlvbigpLngoKSk7Ci0gICAgQVNT
RVJUX0VRKDExLCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS55KCkpOwotICAgIEFTU0VSVF9FUSgx
LjEsIGdtLmZpcnN0VG91Y2hUaW1lKCkpOwotICAgIEFTU0VSVF9FUSgyLjAgLSAxLjEsIGdtLmxh
c3RUb3VjaFRpbWUoKSAtIGdtLmZpcnN0VG91Y2hUaW1lKCkpOwotCi0gICAgQnVpbGRhYmxlUGxh
dGZvcm1Ub3VjaFBvaW50IHAzKDIzLCAzNCk7Ci0gICAgZ20uc2V0U3RhdGVUZXN0KEdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSk7Ci0gICAgZ20udXBkYXRlVmFsdWVzKDMuMCwg
cDMpOwotCi0gICAgQVNTRVJUX0VRKDIzLCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS54KCkpOwot
ICAgIEFTU0VSVF9FUSgzNCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueSgpKTsKLSAgICBBU1NF
UlRfRVEoMy4wLCBnbS5maXJzdFRvdWNoVGltZSgpKTsKLSAgICBBU1NFUlRfRVEoMC4wLCBnbS5s
YXN0VG91Y2hUaW1lKCkgLSBnbS5maXJzdFRvdWNoVGltZSgpKTsKLX0KLQotI2lmIE9TKFdJTkRP
V1MpCi0jZGVmaW5lIE1BWUJFX2RvdWJsZVRhcEdlc3R1cmVUZXN0IERJU0FCTEVEX2RvdWJsZVRh
cEdlc3R1cmVUZXN0Ci0jZWxzZQotI2RlZmluZSBNQVlCRV9kb3VibGVUYXBHZXN0dXJlVGVzdCBk
b3VibGVUYXBHZXN0dXJlVGVzdAotI2VuZGlmCi0KLVRFU1RfRihHZXN0dXJlUmVjb2duaXplclRl
c3QsIERJU0FCTEVEX2RvdWJsZVRhcEdlc3R1cmVUZXN0KQotewotICAgIEluc3BlY3RhYmxlR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bSBnbTsKLSAgICBTaW11bGF0ZUFuZFRlc3RGaXJzdENsaWNr
KGdtKTsKLSAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJl
LCBnbS5zdGF0ZSgpKTsKLQotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBwcmVzcygx
MCwgMTUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkKTsKLSAgICBCdWlsZGFibGVQ
bGF0Zm9ybVRvdWNoRXZlbnQgcHJlc3NFdmVudChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3Vj
aFN0YXJ0LCBwcmVzcywgMTAwMCArIC41KTsKLSAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20u
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhwcmVzc0V2ZW50LCBmYWxzZSkpOwotICAgIEFT
U0VSVF9FUSgxdSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlVGFwRG93biwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7Ci0gICAg
QVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGlj
aywgZ20uc3RhdGUoKSk7Ci0KLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgbW92ZSgx
MCwgMTYsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCk7Ci0gICAgQnVpbGRhYmxlUGxh
dGZvcm1Ub3VjaEV2ZW50IG1vdmVFdmVudChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1v
dmUsIG1vdmUsIDEwMDAgKyAuNSArIC4wMSk7Ci0gICAgR2VzdHVyZXMgZ2VzdHVyZU1vdmUoZ20u
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhtb3ZlRXZlbnQsIGZhbHNlKSk7Ci0gICAgQVNT
RVJUX0VRKDB1LCBnZXN0dXJlTW92ZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoR2VzdHVyZVJl
Y29nbml6ZXJDaHJvbWl1bTo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBnbS5zdGF0ZSgpKTsKLQot
ICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCByZWxlYXNlKDEwLCAxNiwgUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZl
bnQgcmVsZWFzZUV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoRW5kLCByZWxlYXNl
LCAxMDAwICsgLjUgKyAuMDIpOwotICAgIEdlc3R1cmVzIGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1Rv
dWNoRXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNlRXZlbnQsIGZhbHNlKSk7Ci0gICAgQVNTRVJUX0VR
KDJ1LCBnZXN0dXJlRW5kLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlVGFwLCAoKmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXAsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsKLSAg
ICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0
ZSgpKTsKLX0KLQotVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZG91YmxlVGFwR2VzdHVy
ZUluY29tcGxldGVUZXN0KQotewotICAgIEluc3BlY3RhYmxlR2VzdHVyZVJlY29nbml6ZXJDaHJv
bWl1bSBnbTsKLSAgICBTaW11bGF0ZUFuZFRlc3RGaXJzdENsaWNrKGdtKTsKLSAgICBBU1NFUlRf
RVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKLQot
ICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBwcmVzcygxMCwgMTUsIFBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hQcmVzc2VkKTsKLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQg
cHJlc3NFdmVudChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0LCBwcmVzcywgMTAw
MC4gKyAwLjcgKyAwLjAxKTsKLSAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20ucHJvY2Vzc1Rv
dWNoRXZlbnRGb3JHZXN0dXJlcyhwcmVzc0V2ZW50LCBmYWxzZSkpOwotICAgIEFTU0VSVF9FUSgx
dSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlVGFwRG93biwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7Ci0gICAgQVNTRVJUX0VR
KEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3Rh
dGUoKSk7Ci0KLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgbW92ZSgxMCwgNTAsIFBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCk7Ci0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3Vj
aEV2ZW50IG1vdmVFdmVudChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUsIG1vdmUs
IDEwMDAuICsgMC43ICsgMC4wMik7Ci0gICAgR2VzdHVyZXMgZ2VzdHVyZU1vdmUoZ20ucHJvY2Vz
c1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhtb3ZlRXZlbnQsIGZhbHNlKSk7Ci0gICAgQVNTRVJUX0VR
KDJ1LCBnZXN0dXJlTW92ZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6
R2VzdHVyZVNjcm9sbEJlZ2luLCAoKmdlc3R1cmVNb3ZlKVswXS50eXBlKCkpOwotICAgIEFTU0VS
VF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlLCAoKmdlc3R1cmVNb3ZlKVsx
XS50eXBlKCkpOwotICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpTY3Jv
bGwsIGdtLnN0YXRlKCkpOwotCi0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHJlbGVh
c2UoMTAsIDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQpOwotICAgIEJ1aWxk
YWJsZVBsYXRmb3JtVG91Y2hFdmVudCByZWxlYXNlRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1FdmVu
dDo6VG91Y2hFbmQsIHJlbGVhc2UsIDEwMDAuICsgMC43ICsgMC4wMyk7Ci0gICAgR2VzdHVyZXMg
Z2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHJlbGVhc2VFdmVudCwg
ZmFsc2UpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGdlc3R1cmVFbmQtPnNpemUoKSk7Ci0gICAgQVNT
RVJUX0VRKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQsICgqZ2VzdHVyZUVuZClbMF0u
dHlwZSgpKTsKLSAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0
dXJlLCBnbS5zdGF0ZSgpKTsKLX0KLQotVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZG91
YmxlVGFwR2VzdHVyZUluY29tcGxldGVEdWVUb1NlY29uZENsaWNrUG9zaXRpb25UZXN0KQotewot
ICAgIEluc3BlY3RhYmxlR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSBnbTsKLSAgICBTaW11bGF0
ZUFuZFRlc3RGaXJzdENsaWNrKGdtKTsKLSAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKLQotICAgIEludFBvaW50IGF3YXlGcm9t
Rmlyc3RDbGljaygyNCwgMjYpOwotCi0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHBy
ZXNzKGF3YXlGcm9tRmlyc3RDbGljay54KCksIGF3YXlGcm9tRmlyc3RDbGljay55KCksIFBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkKTsKLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNo
RXZlbnQgcHJlc3NFdmVudChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0LCBwcmVz
cywgMTAwMC4gKyAwLjcgKyAwLjAxKTsKLSAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20ucHJv
Y2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhwcmVzc0V2ZW50LCBmYWxzZSkpOwotICAgIEFTU0VS
VF9FUSgxdSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlVGFwRG93biwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7Ci0gICAgQVNT
RVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGljaywg
Z20uc3RhdGUoKSk7Ci0KLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZShh
d2F5RnJvbUZpcnN0Q2xpY2sueCgpLCBhd2F5RnJvbUZpcnN0Q2xpY2sueSgpLCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQpOwotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVu
dCByZWxlYXNlRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hFbmQsIHJlbGVhc2Us
IDEwMDAuICsgMC43ICsgMC4wMjUpOwotICAgIEdlc3R1cmVzIGdlc3R1cmVFbmQoZ20ucHJvY2Vz
c1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNlRXZlbnQsIGZhbHNlKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBnZXN0dXJlRW5kLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlVGFwLCAoKmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7Ci0gICAgQVNTRVJUX0VRKEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSk7Ci19Ci0KLVRF
U1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIHRhcERvd25XaXRob3V0VGFwR2VzdHVyZVRlc3Qp
Ci17Ci0gICAgSW5zcGVjdGFibGVHZXN0dXJlUmVjb2duaXplckNocm9taXVtIGdtOwotICAgIEFT
U0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkp
OwotCi0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHByZXNzKDEwLCAxNSwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQpOwotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hF
dmVudCBwcmVzc0V2ZW50KFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoU3RhcnQsIHByZXNz
KTsKLSAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0
dXJlcyhwcmVzc0V2ZW50LCBmYWxzZSkpOwotICAgIEFTU0VSVF9FUSgxdSwgZ2VzdHVyZVN0YXJ0
LT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwRG93biwg
KCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7Ci0gICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25p
emVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3RhdGUoKSk7Ci0KLSAgICBC
dWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgbW92ZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hNb3ZlZCk7Ci0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IG1vdmVFdmVu
dChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUsIG1vdmUpOwotICAgIEdlc3R1cmVz
IGdlc3R1cmVNb3ZlKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMobW92ZUV2ZW50LCBm
YWxzZSkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2VzdHVyZU1vdmUtPnNp
emUoKTsgaSsrKQotICAgICAgICBBU1NFUlRfTkUoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcCwg
KCpnZXN0dXJlTW92ZSlbaV0udHlwZSgpKTsKLSAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6
ZXJDaHJvbWl1bTo6U2Nyb2xsLCBnbS5zdGF0ZSgpKTsKLQotICAgIEJ1aWxkYWJsZVBsYXRmb3Jt
VG91Y2hQb2ludCByZWxlYXNlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVh
c2VkKTsKLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcmVsZWFzZUV2ZW50KFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoRW5kLCByZWxlYXNlKTsKLSAgICBHZXN0dXJlcyBnZXN0
dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxz
ZSkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2VzdHVyZUVuZC0+c2l6ZSgp
OyBpKyspCi0gICAgICAgIEFTU0VSVF9ORShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwLCAoKmdl
c3R1cmVFbmQpW2ldLnR5cGUoKSk7Ci0gICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSk7Ci19Ci0KLVRFU1RfRihHZXN0dXJlUmVjb2du
aXplclRlc3QsIHRhcERvd25XaXRoVGFwR2VzdHVyZVRlc3QpCi17Ci0gICAgSW5zcGVjdGFibGVH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtIGdtOwotICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2du
aXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOwotCi0gICAgQnVpbGRhYmxlUGxh
dGZvcm1Ub3VjaFBvaW50IHByZXNzKDEwLCAxNSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBy
ZXNzZWQpOwotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBwcmVzc0V2ZW50KFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoU3RhcnQsIHByZXNzLCAxMDAwLik7Ci0gICAgR2VzdHVy
ZXMgZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocHJlc3NFdmVu
dCwgZmFsc2UpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGdlc3R1cmVTdGFydC0+c2l6ZSgpKTsKLSAg
ICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd24sICgqZ2VzdHVyZVN0YXJ0
KVswXS50eXBlKCkpOwotICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpQ
ZW5kaW5nU3ludGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpOwotCi0gICAgQnVpbGRhYmxlUGxhdGZv
cm1Ub3VjaFBvaW50IG1vdmUoMTAsIDE2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQp
OwotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQoV2ViQ29yZTo6UGxh
dGZvcm1FdmVudDo6VG91Y2hNb3ZlLCBtb3ZlLCAxMDAwLik7Ci0gICAgR2VzdHVyZXMgZ2VzdHVy
ZU1vdmUoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhtb3ZlRXZlbnQsIGZhbHNlKSk7
Ci0gICAgQVNTRVJUX0VRKDB1LCBnZXN0dXJlTW92ZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEo
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBnbS5zdGF0
ZSgpKTsKLQotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCByZWxlYXNlKDEwLCAxNiwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKLSAgICBCdWlsZGFibGVQbGF0Zm9y
bVRvdWNoRXZlbnQgcmVsZWFzZUV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoRW5k
LCByZWxlYXNlLCAxMDAwLiArIDAuMDExKTsKLSAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnBy
b2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwotICAgIEFT
U0VSVF9FUSgxdSwgZ2VzdHVyZUVuZC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVRhcCwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOwotICAgIEFTU0VSVF9F
UShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOwotfQot
Ci0KLVRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIG5vRG91YmxlVGFwR2VzdHVyZUJlY2F1
c2VPZkludGVyVG91Y2hJbnRlcnZhbFRlc3QpCi17Ci0gICAgSW5zcGVjdGFibGVHZXN0dXJlUmVj
b2duaXplckNocm9taXVtIGdtOwotICAgIFNpbXVsYXRlQW5kVGVzdEZpcnN0Q2xpY2soZ20pOwot
ICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0
YXRlKCkpOwotCi0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHByZXNzKDEwLCAxNSwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQpOwotICAgIC8vIFZhbHVlcyBhcmUgZnJv
bSBHZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcAotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91
Y2hFdmVudCBwcmVzc0V2ZW50KFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoU3RhcnQsIHBy
ZXNzLCAxMDAwICsgLjggKyAxMCArIC4xKTsKLSAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20u
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhwcmVzc0V2ZW50LCBmYWxzZSkpOwotICAgIEFT
U0VSVF9FUSgxdSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlVGFwRG93biwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7Ci0gICAg
QVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGlj
aywgZ20uc3RhdGUoKSk7Ci0KLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgbW92ZSgx
MCwgMTYsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCk7Ci0gICAgQnVpbGRhYmxlUGxh
dGZvcm1Ub3VjaEV2ZW50IG1vdmVFdmVudChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1v
dmUsIG1vdmUsIDEwMDAgKyAuOCArIDEwICsgLjEgKyAuMDUpOwotICAgIEdlc3R1cmVzIGdlc3R1
cmVNb3ZlKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMobW92ZUV2ZW50LCBmYWxzZSkp
OwotICAgIEFTU0VSVF9FUSgwdSwgZ2VzdHVyZU1vdmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VR
KEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3Rh
dGUoKSk7Ci0KLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZSgxMSwgMTcs
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCk7Ci0gICAgQnVpbGRhYmxlUGxhdGZv
cm1Ub3VjaEV2ZW50IHJlbGVhc2VFdmVudChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaEVu
ZCwgcmVsZWFzZSwgMTAwMCArIC44ICsgMTAgKyAuMSArIC4wMik7Ci0gICAgR2VzdHVyZXMgZ2Vz
dHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHJlbGVhc2VFdmVudCwgZmFs
c2UpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGdlc3R1cmVFbmQtPnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXAsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsK
LSAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5z
dGF0ZSgpKTsKLX0KLQotCi0KLVRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIGdlc3R1cmVT
Y3JvbGxFdmVudHMpCi17Ci0gICAgSW5zcGVjdGFibGVHZXN0dXJlUmVjb2duaXplckNocm9taXVt
IGdtOwotCi0gICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVy
ZSwgZ20uc3RhdGUoKSk7Ci0KLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcHJlc3Mo
MTAsIDE1LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCk7Ci0gICAgQnVpbGRhYmxl
UGxhdGZvcm1Ub3VjaEV2ZW50IHByZXNzRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91
Y2hTdGFydCwgcHJlc3MsIDEwMDAuKTsKLSAgICBnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1
cmVzKHByZXNzRXZlbnQsIGZhbHNlKTsKLQotICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpOwotCi0gICAgQnVp
bGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAsIDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQpOwotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQo
V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlLCBtb3ZlLCAxMDAwLiArIDAuMik7Ci0g
ICAgR2VzdHVyZXMgZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMo
bW92ZUV2ZW50LCBmYWxzZSkpOwotICAgIGJvb2wgc2Nyb2xsU3RhcnRlZCA9IGZhbHNlLCBzY3Jv
bGxVcGRhdGVkID0gZmFsc2U7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnZXN0
dXJlU3RhcnQtPnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHN3aXRjaCAoKCpnZXN0dXJlU3RhcnQp
W2ldLnR5cGUoKSkgewotICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxC
ZWdpbjoKLSAgICAgICAgICAgIHNjcm9sbFN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKLSAg
ICAgICAgICAgIHNjcm9sbFVwZGF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfVFJVRShmYWxzZSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBBU1NFUlRfVFJVRShzY3JvbGxTdGFydGVkKTsKLSAgICBBU1NFUlRfVFJV
RShzY3JvbGxVcGRhdGVkKTsKLSAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1
bTo6U2Nyb2xsLCBnbS5zdGF0ZSgpKTsKLQotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2lu
dCByZWxlYXNlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKLSAg
ICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcmVsZWFzZUV2ZW50KFdlYkNvcmU6OlBsYXRm
b3JtRXZlbnQ6OlRvdWNoRW5kLCByZWxlYXNlLCAxMDAwLiArIDAuMiArIDAuMik7Ci0gICAgYm9v
bCBzY3JvbGxFbmQgPSBmYWxzZTsKLSAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NU
b3VjaEV2ZW50Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwotICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgZ2VzdHVyZUVuZC0+c2l6ZSgpOyBpKyspIHsKLSAgICAgICAg
c3dpdGNoICgoKmdlc3R1cmVFbmQpW2ldLnR5cGUoKSkgewotICAgICAgICBjYXNlIFBsYXRmb3Jt
RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAgICAgICAgICBzY3JvbGxFbmQgPSB0cnVlOwot
ICAgICAgICAgICAgQVNTRVJUX0VRKCgqZ2VzdHVyZUVuZClbaV0uZGVsdGFYKCksIDApOwotICAg
ICAgICAgICAgQVNTRVJUX0VRKCgqZ2VzdHVyZUVuZClbaV0uZGVsdGFZKCksIDApOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfVFJVRShm
YWxzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUX1RSVUUoc2Nyb2xsRW5kKTsKLSAg
ICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0
ZSgpKTsKLX0KLQotVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZmxpY2tHZXN0dXJlVGVz
dCkKLXsKLSAgICBJbnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0gZ207Ci0gICAg
QVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUo
KSk7Ci0KLSAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcHJlc3MoMTAsIDE1LCBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCk7Ci0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3Vj
aEV2ZW50IHByZXNzRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hTdGFydCwgcHJl
c3MsIDEwMDAuKTsKLSAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZl
bnRGb3JHZXN0dXJlcyhwcmVzc0V2ZW50LCBmYWxzZSkpOwotICAgIEFTU0VSVF9FUSgodW5zaWdu
ZWQgaW50KTEsIGdlc3R1cmVTdGFydC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVRhcERvd24sICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOwotICAgIEFT
U0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ss
IGdtLnN0YXRlKCkpOwotCi0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAs
IDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQpOwotICAgIEJ1aWxkYWJsZVBsYXRm
b3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3Zl
LCBtb3ZlLCAxMDAwLiArIDAuMDIpOwotICAgIEdlc3R1cmVzIGdlc3R1cmVNb3ZlKGdtLnByb2Nl
c3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMobW92ZUV2ZW50LCBmYWxzZSkpOwotICAgIGJvb2wgc2Ny
b2xsU3RhcnRlZCA9IGZhbHNlLCBzY3JvbGxVcGRhdGVkID0gZmFsc2U7Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBnZXN0dXJlTW92ZS0+c2l6ZSgpOyBpKyspIHsKLSAgICAgICAg
c3dpdGNoICgoKmdlc3R1cmVNb3ZlKVtpXS50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46Ci0gICAgICAgICAgICBzY3JvbGxTdGFydGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVTY3JvbGxVcGRhdGU6Ci0gICAgICAgICAgICBzY3JvbGxVcGRhdGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX1RS
VUUoZmFsc2UpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX1RSVUUoc2Nyb2xsU3Rh
cnRlZCk7Ci0gICAgQVNTRVJUX1RSVUUoc2Nyb2xsVXBkYXRlZCk7Ci0gICAgQVNTRVJUX0VRKEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlNjcm9sbCwgZ20uc3RhdGUoKSk7Ci0KLSAgICBCdWls
ZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hSZWxlYXNlZCk7Ci0gICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IHJlbGVh
c2VFdmVudChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaEVuZCwgcmVsZWFzZSwgMTAwMC4g
KyAwLjA2KTsKLSAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9y
R2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwotICAgIEFTU0VSVF9FUSgodW5zaWduZWQg
aW50KSAxLCBnZXN0dXJlRW5kLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlU2Nyb2xsRW5kLCAoKmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7Ci0gICAgQVNTRVJU
X0VRKCgqZ2VzdHVyZUVuZClbMF0uZGVsdGFYKCksIDApOwotICAgIEFTU0VSVF9FUSgoKmdlc3R1
cmVFbmQpWzBdLmRlbHRhWSgpLCAxNzUwLik7Ci0gICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25p
emVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSk7Ci19Ci0KLXN0cnVjdCBUb3VjaFBv
aW50QW5kRXZlbnQgewotcHVibGljOgotICAgIFRvdWNoUG9pbnRBbmRFdmVudChpbnQgeCwgaW50
IHksIGRvdWJsZSB0aW1lc3RhbXAsIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgc3RhdGUsIFdl
YkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSkKLSAgICAgICAgOiBtX3BvaW50KHgsIHks
IHN0YXRlKQotICAgICAgICAsIG1fZXZlbnQodHlwZSwgbV9wb2ludCwgdGltZXN0YW1wKQotICAg
IHsgfQotICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBtX3BvaW50OwotICAgIEJ1aWxk
YWJsZVBsYXRmb3JtVG91Y2hFdmVudCBtX2V2ZW50OwotfTsKLQotY2xhc3MgVG91Y2hTZXF1ZW5j
ZSB7Ci1wdWJsaWM6Ci0gICAgVG91Y2hTZXF1ZW5jZShpbnQgbiwgLi4uKSA6IG1fbihuKQotICAg
IHsKLSAgICAgICAgdmFfbGlzdCBhcmdzOwotICAgICAgICB2YV9zdGFydChhcmdzLCBuKTsKLSAg
ICAgICAgQVNTRVJUKG4gPiAwKTsKLSAgICAgICAgbV9kYXRhID0gbmV3IFRvdWNoUG9pbnRBbmRF
dmVudCpbbl07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQotICAgICAgICAg
ICAgbV9kYXRhW2ldID0gdmFfYXJnKGFyZ3MsIFRvdWNoUG9pbnRBbmRFdmVudCopOwotICAgICAg
ICB2YV9lbmQoYXJncyk7Ci0gICAgfQotICAgIH5Ub3VjaFNlcXVlbmNlKCkKLSAgICB7Ci0gICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9uOyArK2kpCi0gICAgICAgICAgICBkZWxldGUgbV9k
YXRhW2ldOwotICAgICAgICBkZWxldGVbXSBtX2RhdGE7Ci0gICAgfQotICAgIGludCBtX247Ci0g
ICAgVG91Y2hQb2ludEFuZEV2ZW50KiogbV9kYXRhOwotfTsKLQotVEVTVF9GKEdlc3R1cmVSZWNv
Z25pemVyVGVzdCwgc2FtcGxlRmxpY2tTZXF1ZW5jZUdlc3R1cmVUZXN0KQotewotICAgIGNvbnN0
IGludCBudW1iZXJPZkZsaWNrU2FtcGxlcyA9IDExOwotICAgIFRvdWNoU2VxdWVuY2Ugc2FtcGxl
RmxpY2tTZXF1ZW5jZVtudW1iZXJPZkZsaWNrU2FtcGxlc10gPQotICAgIHsKLSAgICAgICAgVG91
Y2hTZXF1ZW5jZSg4LAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTYsIDM0
OCwgMTMwODMzNjI0NS40MDcsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0KSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBv
aW50QW5kRXZlbnQoMjU0LCAzNDUsIDEzMDgzMzYyNDUuNDcwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAg
ICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI1MiwgMzM2LCAxMzA4MzM2MjQ1LjQ4OCwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3Vj
aE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDIsIDI2MSwgMTMw
ODMzNjI0NS41MDUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxh
dGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZl
bnQoMjQyLCAxNzksIDEzMDgzMzYyNDUuNTIxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92
ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAgICBuZXcg
VG91Y2hQb2ludEFuZEV2ZW50KDI1NSwgMTAwLCAxMzA4MzM2MjQ1LjUzMywgUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAot
ICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNjIsIDc0LCAxMzA4MzM2MjQ1LjU0
OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNjIsIDc0
LCAxMzA4MzM2MjQ1LjU2NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaEVuZCkKLSAgICAgICAgKSwKLSAgICAgICAgVG91Y2hT
ZXF1ZW5jZSg4LAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNzgsIDMzOSwg
MTMwODMzNjI2Ni4xODAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCBXZWJDb3Jl
OjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0KSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50
QW5kRXZlbnQoMTc3LCAzMzUsIDEzMDgzMzYyNjYuMjEyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAg
ICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE3MiwgMzE0LCAxMzA4MzM2MjY2LjIyNiwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1v
dmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNjAsIDI0OCwgMTMwODMz
NjI2Ni4yNDAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZv
cm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQo
MTU2LCAxOTgsIDEzMDgzMzYyNjYuMjUxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQs
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAgICBuZXcgVG91
Y2hQb2ludEFuZEV2ZW50KDE2NiwgOTksIDEzMDgzMzYyNjYuMjY2LCBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAg
ICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE3OSwgNDEsIDEzMDgzMzYyNjYuMjgwLCBQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRv
dWNoTW92ZSksCi0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE3OSwgNDEsIDEz
MDgzMzYyNjYuMjkxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNvcmU6
OlBsYXRmb3JtRXZlbnQ6OlRvdWNoRW5kKQotICAgICAgICApLAotICAgICAgICBUb3VjaFNlcXVl
bmNlKDcsCi0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDIzOCwgMzg2LCAxMzA4
MzM2MjcyLjA2OCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OlRvdWNoU3RhcnQpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRF
dmVudCgyMzcsIDM4MywgMTMwODMzNjI3Mi4xMjEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hN
b3ZlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5l
dyBUb3VjaFBvaW50QW5kRXZlbnQoMjM2LCAzNzQsIDEzMDgzMzYyNzIuMTM4LCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSks
Ci0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDIyMywgMjY0LCAxMzA4MzM2Mjcy
LjE1NSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2
ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyMzEs
IDE2NiwgMTMwODMzNjI3Mi4xNzMsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2Vi
Q29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBv
aW50QW5kRXZlbnQoMjQzLCAxMDcsIDEzMDgzMzYyNzIuMTkwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAg
ICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI0MywgMTA3LCAxMzA4MzM2MjcyLjIwMiwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpU
b3VjaEVuZCkKLSAgICAgICAgKSwKLSAgICAgICAgVG91Y2hTZXF1ZW5jZSgxMCwKLSAgICAgICAg
ICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMzM0LCAzNTEsIDEzMDgzMzYzMTMuNTgxLCBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91
Y2hTdGFydCksCi0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzNCwgMzQ4LCAx
MzA4MzM2MzEzLjY5NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQ
bGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRF
dmVudCgzMzUsIDM0NiwgMTMwODMzNjMxMy43MTQsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hN
b3ZlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5l
dyBUb3VjaFBvaW50QW5kRXZlbnQoMzM0LCAzNDMsIDEzMDgzMzYzMTMuNzI3LCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSks
Ci0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzMiwgMzM2LCAxMzA4MzM2MzEz
LjczOCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2
ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMjgs
IDMxNiwgMTMwODMzNjMxMy43NTMsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2Vi
Q29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBv
aW50QW5kRXZlbnQoMzE3LCAyNzcsIDEzMDgzMzYzMTMuNzcwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAg
ICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMwNiwgMjQzLCAxMzA4MzM2MzEzLjc4NCwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3Vj
aE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyOTIsIDE5MiwgMTMw
ODMzNjMxMy43OTksIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxh
dGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZl
bnQoMjkyLCAxOTIsIDEzMDgzMzYzMTMuODE1LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVs
ZWFzZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoRW5kKQotICAgICAgICApLAotICAg
ICAgICBUb3VjaFNlcXVlbmNlKDE0LAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVu
dCg5MiwgMTEyLCAxMzA4MzM2MzIzLjk1NSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNz
ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoU3RhcnQpLAotICAgICAgICAgICAgbmV3
IFRvdWNoUG9pbnRBbmRFdmVudCg5MiwgMTE1LCAxMzA4MzM2MzI0LjA1NiwgUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAot
ICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg5MSwgMTE2LCAxMzA4MzM2MzI0LjA2
NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg5MSwgMTE3
LCAxMzA4MzM2MzI0LjA3NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3Jl
OjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRB
bmRFdmVudCg5MCwgMTIyLCAxMzA4MzM2MzI0LjA4OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAg
bmV3IFRvdWNoUG9pbnRBbmRFdmVudCg5MCwgMTI5LCAxMzA4MzM2MzI0LjEwMiwgUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUp
LAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg4OSwgMTQ3LCAxMzA4MzM2MzI0
LjEyMCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2
ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg4OSwg
MTYzLCAxMzA4MzM2MzI0LjEzNSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9p
bnRBbmRFdmVudCg4OSwgMTg4LCAxMzA4MzM2MzI0LjE1MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAg
ICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg4OSwgMjEzLCAxMzA4MzM2MzI0LjE2OSwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1v
dmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg4OSwgMjUyLCAxMzA4MzM2
MzI0LjE4OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9y
bUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg5
MCwgMjgzLCAxMzA4MzM2MzI0LjIwNCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNo
UG9pbnRBbmRFdmVudCg5MSwgMzA4LCAxMzA4MzM2MzI0LjIxOCwgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAg
ICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg5MSwgMzA4LCAxMzA4MzM2MzI0LjIzMCwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpU
b3VjaEVuZCkKLSAgICAgICAgKSwKLSAgICAgICAgVG91Y2hTZXF1ZW5jZSg1LAotICAgICAgICAg
ICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg1NSwgMjQ5LCAxMzA4MzM2MzQ5LjA5MywgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNo
U3RhcnQpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg1OSwgMjQ5LCAxMzA4
MzM2MzQ5LjE3OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVu
dCg2NiwgMjQ4LCAxMzA4MzM2MzQ5LjE5MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVk
LCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRv
dWNoUG9pbnRBbmRFdmVudCgxMjgsIDI1MywgMTMwODMzNjM0OS4yMDgsIFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAg
ICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTI4LCAyNTMsIDEzMDgzMzYzNDkuMjU4
LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZl
bnQ6OlRvdWNoRW5kKQotICAgICAgICApLAotICAgICAgICBUb3VjaFNlcXVlbmNlKDksCi0gICAg
ICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDM3NiwgMjkwLCAxMzA4MzM2MzUzLjA3MSwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OlRvdWNoU3RhcnQpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzNzMsIDI4
OCwgMTMwODMzNjM1My4xMjcsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50
QW5kRXZlbnQoMzcyLCAyODcsIDEzMDgzMzYzNTMuMTQwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAg
ICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDM1MywgMjgwLCAxMzA4MzM2MzUzLjE1NiwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1v
dmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMTksIDI3MSwgMTMwODMz
NjM1My4xNzEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZv
cm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQo
MjY0LCAyNTgsIDEzMDgzMzYzNTMuMTg4LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQs
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAgICBuZXcgVG91
Y2hQb2ludEFuZEV2ZW50KDIxNSwgMjUxLCAxMzA4MzM2MzUzLjIwMCwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAg
ICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNTEsIDI0NiwgMTMwODMzNjM1My4yMTcs
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6
VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTUxLCAyNDYs
IDEzMDgzMzYzNTMuMjMxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoRW5kKQotICAgICAgICApLAotICAgICAgICBUb3VjaFNl
cXVlbmNlKDUsCi0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDYwLCAxNjYsIDEz
MDgzMzYzNTguODk4LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6VG91Y2hTdGFydCksCi0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFu
ZEV2ZW50KDYzLCAxNjYsIDEzMDgzMzYzNTguOTQ0LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
TW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAgICBu
ZXcgVG91Y2hQb2ludEFuZEV2ZW50KDY4LCAxNjcsIDEzMDgzMzYzNTguOTU4LCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSks
Ci0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDExOCwgMTc5LCAxMzA4MzM2MzU4
Ljk3MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2
ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxMTgs
IDE3OSwgMTMwODMzNjM1OC45ODQsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwg
V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hFbmQpCi0gICAgICAgICksCi0gICAgICAgIFRv
dWNoU2VxdWVuY2UoNSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoNjYsIDMx
OCwgMTMwODMzNjM2Mi45OTYsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0KSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBv
aW50QW5kRXZlbnQoNzAsIDMxNiwgMTMwODMzNjM2My4wNDYsIFBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAg
ICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoNzcsIDMxNCwgMTMwODMzNjM2My4wNTgsIFBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hN
b3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTc5LCAyOTUsIDEzMDgz
MzYzNjMuMDgyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRm
b3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50
KDE3OSwgMjk1LCAxMzA4MzM2MzYzLjA5NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVh
c2VkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaEVuZCkKLSAgICAgICAgKSwKLSAgICAg
ICAgVG91Y2hTZXF1ZW5jZSgxMSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQo
MzQ1LCAzMzMsIDEzMDgzMzYzNjYuNjE4LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3Nl
ZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hTdGFydCksCi0gICAgICAgICAgICBuZXcg
VG91Y2hQb2ludEFuZEV2ZW50KDM0NCwgMzMwLCAxMzA4MzM2MzY2LjY2NCwgUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAot
ICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzNDMsIDMyOSwgMTMwODMzNjM2Ni42
ODEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVu
dDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMzM5LCAz
MjQsIDEzMDgzMzYzNjYuNjk0LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAgICBuZXcgVG91Y2hQb2lu
dEFuZEV2ZW50KDMzMiwgMzE3LCAxMzA4MzM2MzY2LjcwOSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAg
ICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMTIsIDMwMCwgMTMwODMzNjM2Ni43MjgsIFBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hN
b3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMjc5LCAyNzUsIDEzMDgz
MzYzNjYuNzQxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRm
b3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50
KDI0NiwgMjUxLCAxMzA4MzM2MzY2Ljc1MiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVk
LCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAgICAgICAgICAgbmV3IFRv
dWNoUG9pbnRBbmRFdmVudCgxOTgsIDIxOSwgMTMwODMzNjM2Ni43NjksIFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAg
ICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTU1LCAxOTYsIDEzMDgzMzYzNjYuNzgz
LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OlRvdWNoTW92ZSksCi0gICAgICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE1NSwgMTk2
LCAxMzA4MzM2MzY2Ljc5NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaEVuZCkKLSAgICAgICAgKSwKLSAgICAgICAgVG91Y2hT
ZXF1ZW5jZSg3LAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMzMsIDM2MCwg
MTMwODMzNjM2OS41NDcsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCBXZWJDb3Jl
OjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0KSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50
QW5kRXZlbnQoMzMyLCAzNTcsIDEzMDgzMzYzNjkuNTk2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQsIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAg
ICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzMSwgMzUzLCAxMzA4MzM2MzY5LjY2MSwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1v
dmUpLAotICAgICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMjYsIDM0NSwgMTMwODMz
NjM2OS43MTMsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6UGxhdGZv
cm1FdmVudDo6VG91Y2hNb3ZlKSwKLSAgICAgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQo
MzEwLCAzMjMsIDEzMDgzMzYzNjkuNzQ4LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQs
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoTW92ZSksCi0gICAgICAgICAgICBuZXcgVG91
Y2hQb2ludEFuZEV2ZW50KDI1MCwgMjcyLCAxMzA4MzM2MzY5LjgwMSwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmUpLAotICAg
ICAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTAsIDI3MiwgMTMwODMzNjM2OS44NDAs
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29yZTo6UGxhdGZvcm1FdmVu
dDo6VG91Y2hFbmQpCi0gICAgICAgICkKLSAgICB9OwotCi0gICAgSW5zcGVjdGFibGVHZXN0dXJl
UmVjb2duaXplckNocm9taXVtIGdtOwotICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNo
cm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1iZXJPZkZsaWNrU2FtcGxlczsgKytpKSB7Ci0gICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVh
bSBmYWlsdXJlTWVzc2FnZUJ1aWxkZXI7Ci0gICAgICAgIGZhaWx1cmVNZXNzYWdlQnVpbGRlciA8
PCAiRmFpbGVkIG9uIHNhbXBsZSBzZXF1ZW5jZSAiIDw8IGk7Ci0gICAgICAgIHN0ZDo6c3RyaW5n
IGZhaWx1cmVNZXNzYWdlID0gZmFpbHVyZU1lc3NhZ2VCdWlsZGVyLnN0cigpOwotCi0gICAgICAg
IC8vIFRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCAzIGV2ZW50cyAoVG91Y2hTdGFydCwgVG91Y2hN
b3ZlLCBUb3VjaEVuZCkgaW4gZXZlcnkgc2VxdWVuY2UKLSAgICAgICAgQVNTRVJUX0dUKHNhbXBs
ZUZsaWNrU2VxdWVuY2VbaV0ubV9uLCAzKSA8PCBmYWlsdXJlTWVzc2FnZTsKLQotICAgICAgICAv
LyBGaXJzdCBldmVudCAoVG91Y2hTdGFydCkgc2hvdWxkIHByb2R1Y2UgYSBUb3VjaERvd24gZ2Vz
dHVyZQotICAgICAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRG
b3JHZXN0dXJlcyhzYW1wbGVGbGlja1NlcXVlbmNlW2ldLm1fZGF0YVswXS0+bV9ldmVudCwgZmFs
c2UpKTsKLSAgICAgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpMSwgZ2VzdHVyZVN0YXJ0LT5z
aXplKCkpIDw8IGZhaWx1cmVNZXNzYWdlOwotICAgICAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZVRhcERvd24sICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpIDw8IGZhaWx1cmVN
ZXNzYWdlOwotICAgICAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6UGVu
ZGluZ1N5bnRoZXRpY0NsaWNrLCBnbS5zdGF0ZSgpKSA8PCBmYWlsdXJlTWVzc2FnZTsKLQotICAg
ICAgICAvLyBUaGVuIHdlIGhhdmUgYSBidW5jaCBvZiBUb3VjaE1vdmUgZXZlbnRzCi0gICAgICAg
IGZvciAoaW50IGogPSAxOyBqIDwgc2FtcGxlRmxpY2tTZXF1ZW5jZVtpXS5tX24gLSAxOyArK2op
Ci0gICAgICAgICAgICBnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHNhbXBsZUZsaWNr
U2VxdWVuY2VbaV0ubV9kYXRhW2pdLT5tX2V2ZW50LCBmYWxzZSk7Ci0KLSAgICAgICAgLy8gTGFz
dCBldmVudCAoVG91Y2hFbmQpIHNob3VsZCBnZW5lcmF0ZSBhIEZsaWNrIGdlc3R1cmUKLSAgICAg
ICAgR2VzdHVyZXMgZ2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHNh
bXBsZUZsaWNrU2VxdWVuY2VbaV0ubV9kYXRhW3NhbXBsZUZsaWNrU2VxdWVuY2VbaV0ubV9uIC0g
MV0tPm1fZXZlbnQsIGZhbHNlKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgodW5zaWduZWQgaW50KSAx
LCBnZXN0dXJlRW5kLT5zaXplKCkpIDw8IGZhaWx1cmVNZXNzYWdlOwotICAgICAgICBBU1NFUlRf
RVEoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZCwgKCpnZXN0dXJlRW5kKVswXS50eXBl
KCkpIDw8IGZhaWx1cmVNZXNzYWdlOwotICAgICAgICBkb3VibGUgeFZlbG9jaXR5ID0gKCpnZXN0
dXJlRW5kKVswXS5kZWx0YVgoKTsKLSAgICAgICAgZG91YmxlIHlWZWxvY2l0eSA9ICgqZ2VzdHVy
ZUVuZClbMF0uZGVsdGFZKCk7Ci0gICAgICAgIGRvdWJsZSB2ZWxvY2l0eSA9IHNxcnQoeFZlbG9j
aXR5ICogeFZlbG9jaXR5ICsgeVZlbG9jaXR5ICogeVZlbG9jaXR5KTsKLSAgICAgICAgQVNTRVJU
X0dUKHZlbG9jaXR5LCA1NTApIDw8IGZhaWx1cmVNZXNzYWdlOwotICAgICAgICBBU1NFUlRfRVEo
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKSA8PCBmYWls
dXJlTWVzc2FnZTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjFjNDVmZjkwNWQ3MjYyZTllYzFkNmUwMmJl
OWViYjgwMTM3YmZhOS4uMTZmMWNhMzk3NjFiNTM1OWJhYTg0MGI2MzdlYTk1ODA5OTllOGYzNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTA3ICBSb2JlcnQgS3JvZWdlciAgPHJqa3Jv
ZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSB1bm5lY2Vzc2Fy
eSBDaHJvbWl1bSBnZXN0dXJlIHJlY29nbml6ZXIgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvcGFnZS1zY2Fs
ZWQtdG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvcGFnZS1zY2FsZWQtdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sOgorICAgICAgICAq
IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2suaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNj
cm9sbC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3Vj
aC90b3VjaC1nZXN0dXJlLXNjcm9sbC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMTItMDIt
MDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTA0NzU0NTA+IFN5bnRoZXRpYyBib2xkIGlzIGlsbGVnaWJsZSB1bmRlciBzb21lIHNj
YWxpbmcgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvcGFnZS1zY2FsZWQtdG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9wYWdlLXNjYWxlZC10b3VjaC1nZXN0dXJlLWNsaWNrLWV4
cGVjdGVkLnR4dAppbmRleCBhMmJiNjU4NjMwNzRkOWNjYjcyNDliNDE1ZDFiYWJlYzM5NzBjZjIz
Li5lOGQ1OWE1ZjRmMDAwY2MxMTQxMTk2MDgxZTU3ZGFjMDBlODY2NTdmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9wYWdlLXNjYWxlZC10b3VjaC1nZXN0dXJlLWNs
aWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9wYWdl
LXNjYWxlZC10b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApAQCAtMywzNCArMywzMiBA
QCBUaGlzIHRlc3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBnZXN0dXJlIGdlbmVyYXRpb24uCiBPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotaGF2ZSByZWNlaXZlZDogMSB0b3VjaCBldmVudHMK
LWhhdmUgcmVjZWl2ZWQ6IDIgdG91Y2ggZXZlbnRzCiBQQVNTIGV2ZW50LnR5cGUgaXMgIm1vdXNl
bW92ZSIKIFBBU1MgZXZlbnQuY2xpZW50WCBpcyAyMAogUEFTUyBldmVudC5jbGllbnRZIGlzIDI0
Ci1QQVNTIGV2ZW50LnNoaWZ0S2V5IGlzIHRydWUKLVBBU1MgZXZlbnQuYWx0S2V5IGlzIHRydWUK
K1BBU1MgZXZlbnQuc2hpZnRLZXkgaXMgZmFsc2UKK1BBU1MgZXZlbnQuYWx0S2V5IGlzIGZhbHNl
CiBQQVNTIGV2ZW50LmN0cmxLZXkgaXMgZmFsc2UKIFBBU1MgZXZlbnQubWV0YUtleSBpcyBmYWxz
ZQogUEFTUyBldmVudC50eXBlIGlzICJtb3VzZWRvd24iCiBQQVNTIGV2ZW50LmNsaWVudFggaXMg
MjAKIFBBU1MgZXZlbnQuY2xpZW50WSBpcyAyNAotUEFTUyBldmVudC5zaGlmdEtleSBpcyB0cnVl
Ci1QQVNTIGV2ZW50LmFsdEtleSBpcyB0cnVlCitQQVNTIGV2ZW50LnNoaWZ0S2V5IGlzIGZhbHNl
CitQQVNTIGV2ZW50LmFsdEtleSBpcyBmYWxzZQogUEFTUyBldmVudC5jdHJsS2V5IGlzIGZhbHNl
CiBQQVNTIGV2ZW50Lm1ldGFLZXkgaXMgZmFsc2UKIFBBU1MgZXZlbnQudHlwZSBpcyAibW91c2V1
cCIKIFBBU1MgZXZlbnQuY2xpZW50WCBpcyAyMAogUEFTUyBldmVudC5jbGllbnRZIGlzIDI0Ci1Q
QVNTIGV2ZW50LnNoaWZ0S2V5IGlzIHRydWUKLVBBU1MgZXZlbnQuYWx0S2V5IGlzIHRydWUKK1BB
U1MgZXZlbnQuc2hpZnRLZXkgaXMgZmFsc2UKK1BBU1MgZXZlbnQuYWx0S2V5IGlzIGZhbHNlCiBQ
QVNTIGV2ZW50LmN0cmxLZXkgaXMgZmFsc2UKIFBBU1MgZXZlbnQubWV0YUtleSBpcyBmYWxzZQog
UEFTUyBldmVudC50eXBlIGlzICJjbGljayIKIFBBU1MgZXZlbnQuY2xpZW50WCBpcyAyMAogUEFT
UyBldmVudC5jbGllbnRZIGlzIDI0Ci1QQVNTIGV2ZW50LnNoaWZ0S2V5IGlzIHRydWUKLVBBU1Mg
ZXZlbnQuYWx0S2V5IGlzIHRydWUKK1BBU1MgZXZlbnQuc2hpZnRLZXkgaXMgZmFsc2UKK1BBU1Mg
ZXZlbnQuYWx0S2V5IGlzIGZhbHNlCiBQQVNTIGV2ZW50LmN0cmxLZXkgaXMgZmFsc2UKIFBBU1Mg
ZXZlbnQubWV0YUtleSBpcyBmYWxzZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvcGFnZS1zY2FsZWQtdG91
Y2gtZ2VzdHVyZS1jbGljay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvcGFn
ZS1zY2FsZWQtdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sCmluZGV4IDJlNmRiZGRiODUwMzI0NDMx
MTlhNzBhMWNkZjg1YTM2YTE3YmFjODMuLjM3OGFhMmE2OGZkNzg2ZWRmYWM1Mjg4NTNmNWY3NTg2
ODZjM2JkNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3BhZ2Ut
c2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9wYWdlLXNjYWxlZC10b3VjaC1nZXN0dXJlLWNsaWNrLmh0bWwKQEAgLTE5LDcg
KzE5LDYgQEAKIDxzY3JpcHQ+CiB2YXIgY2xpY2tFdmVudHNSZWNlaXZlZCA9IDA7CiB2YXIgZXhw
ZWN0ZWRNb3VzZUV2ZW50cyA9IDQ7Ci12YXIgdG91Y2hFdmVudHNSZWNlaXZlZCA9IDA7CiB2YXIg
bW91c2VFdmVudHNSZWNlaXZlZCA9IDA7CiB2YXIgZXZlbnRUeXBlcyA9IFsgJ21vdXNlbW92ZScs
ICdtb3VzZWRvd24nLCAnbW91c2V1cCcsICdjbGljaycgXTsKIApAQCAtMjksOCArMjgsOCBAQCBm
dW5jdGlvbiBnZXN0dXJlRXZlbnRDYWxsYmFjayhldmVudCkKICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdldmVudC50eXBlJywgZXZlbnRUeXBlc1ttb3VzZUV2ZW50c1JlY2VpdmVkXSk7
CiAgICAgICAgIHNob3VsZEJlKCdldmVudC5jbGllbnRYJywgJzIwJyk7CiAgICAgICAgIHNob3Vs
ZEJlKCdldmVudC5jbGllbnRZJywgJzI0Jyk7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC5zaGlm
dEtleSIsICJ0cnVlIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC5hbHRLZXkiLCAidHJ1ZSIp
OworICAgICAgICBzaG91bGRCZSgiZXZlbnQuc2hpZnRLZXkiLCAiZmFsc2UiKTsKKyAgICAgICAg
c2hvdWxkQmUoImV2ZW50LmFsdEtleSIsICJmYWxzZSIpOwogICAgICAgICBzaG91bGRCZSgiZXZl
bnQuY3RybEtleSIsICJmYWxzZSIpOwogICAgICAgICBzaG91bGRCZSgiZXZlbnQubWV0YUtleSIs
ICJmYWxzZSIpOwogICAgICAgICBtb3VzZUV2ZW50c1JlY2VpdmVkKys7CkBAIC01NCwyNCArNTMs
NiBAQCBmdW5jdGlvbiB0b3VjaEV2ZW50Q2FsbGJhY2soZXZlbnQpIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotZnVuY3Rpb24gc2luZ2xlVG91Y2hTZXF1ZW5jZSgpCi17Ci0gICAgZXZlbnRTZW5k
ZXIuY2xlYXJUb3VjaFBvaW50cygpOwotICAgIC8vIENvb3JkaW5hdGVzIHBhc3NlZCB0byBldmVu
dFNlbmRlci5hZGRUb3VjaFBvaW50IGFyZSBpbiBzY3JlZW4gcGl4ZWxzLAotICAgIC8vIHJlbGF0
aXZlIHRvIHRoZSB0b3AgbGVmdCBvZiB0aGUgd2luZG93LgotICAgIGV2ZW50U2VuZGVyLmFkZFRv
dWNoUG9pbnQoMTAsIDEyKTsKLSAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7Ci0KLSAgICAv
LyBJbnNlcnQgc29tZSBkZWxheS4gTkI6IHRoaXMgdmFsdWUgZGVwZW5kcyBvbiBtaW5DbGlja0Rv
d25UaW1lLAotICAgIC8vIG1heENsaWNrRG93blRpbWUgZnJvbSBHZXN0dXJlUmVjb2duaXplckNo
cm9taXVtLmNwcAotICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDIwKTsKLSAgICBldmVudFNl
bmRlci5zZXRUb3VjaE1vZGlmaWVyKCJzaGlmdCIsIHRydWUpOwotICAgIGV2ZW50U2VuZGVyLnNl
dFRvdWNoTW9kaWZpZXIoImFsdCIsIHRydWUpOwotCi0gICAgZXZlbnRTZW5kZXIucmVsZWFzZVRv
dWNoUG9pbnQoMCk7Ci0gICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKLX0KLQogZnVuY3Rpb24g
ZW5kVGVzdCgpCiB7CiAgICAgaWYgKG1vdXNlRXZlbnRzUmVjZWl2ZWQgPCBleHBlY3RlZE1vdXNl
RXZlbnRzKSB7CkBAIC05Myw5ICs3NCw2IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgZGl2
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBnZXN0dXJlRXZlbnRDYWxsYmFjaywgZmFsc2Up
OwogICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBnZXN0dXJlRXZlbnRDYWxs
YmFjaywgZmFsc2UpOwogICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBx
dWl0S2V5VG9FbmRUZXN0LCBmYWxzZSk7Ci0gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNo
c3RhcnQiLCB0b3VjaEV2ZW50Q2FsbGJhY2ssIGZhbHNlKTsKLSAgICBkaXYuYWRkRXZlbnRMaXN0
ZW5lcigidG91Y2htb3ZlIiwgdG91Y2hFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0gICAgZGl2LmFk
ZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdG91Y2hFdmVudENhbGxiYWNrLCBmYWxzZSk7CiAK
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CkBAIC0xMDMsNyArODEsNyBAQCBmdW5jdGlvbiBy
dW5UZXN0KCkgewogICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgYmFzaWMgc2luZ2xlIHRvdWNoIGdlc3R1cmUgZ2VuZXJhdGlvbi4i
KTsKICAgICAgICAgaWYgKGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMpIHsKLSAgICAgICAg
ICAgIHNpbmdsZVRvdWNoU2VxdWVuY2UoKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmdlc3R1
cmVUYXAoMTAsIDEyKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwKTsK
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJyAnKTsKICAgICAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUt
Y2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gt
Z2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNmOGRlYmFiOTRmMTg5MGM4ZDdiYTlmNzA1NGUzNjIxZmI1OGY0MGEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxMCArMCwwIEBACi1UaGlzIHRlc3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBnZXN0dXJlIGdlbmVy
YXRpb24uCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1HZXN0dXJlIG1hbmFnZXIg
bm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0uCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNmE4ZWI1YTM5NjYwNzY4ODA1MzVlNjE5YmU2MjI2MjYyMTYzZjY0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2suaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDExMiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotI3Rv
dWNodGFyZ2V0IHsKLSAgd2lkdGg6IDEwMHB4OwotICBoZWlnaHQ6IDEwMHB4OwotICBiYWNrZ3Jv
dW5kOiBibHVlOwotfQotPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgp
OyI+Ci08ZGl2IGlkPSJ0b3VjaHRhcmdldCI+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgot
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci12YXIgY2xpY2tFdmVudHNSZWNl
aXZlZCA9IDA7Ci12YXIgZXhwZWN0ZWRNb3VzZUV2ZW50cyA9IDQ7Ci12YXIgdG91Y2hFdmVudHNS
ZWNlaXZlZCA9IDA7Ci12YXIgbW91c2VFdmVudHNSZWNlaXZlZCA9IDA7Ci12YXIgZXZlbnRUeXBl
cyA9IFsgJ21vdXNlbW92ZScsICdtb3VzZWRvd24nLCAnbW91c2V1cCcsICdjbGljaycgXTsKLQot
ZnVuY3Rpb24gZ2VzdHVyZUV2ZW50Q2FsbGJhY2soZXZlbnQpCi17Ci0gICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnR5cGUn
LCBldmVudFR5cGVzW21vdXNlRXZlbnRzUmVjZWl2ZWRdKTsKLSAgICAgICAgc2hvdWxkQmUoJ2V2
ZW50LmNsaWVudFgnLCAnMTAnKTsKLSAgICAgICAgc2hvdWxkQmUoJ2V2ZW50LmNsaWVudFknLCAn
MTInKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnNoaWZ0S2V5IiwgInRydWUiKTsKLSAgICAg
ICAgc2hvdWxkQmUoImV2ZW50LmFsdEtleSIsICJ0cnVlIik7Ci0gICAgICAgIHNob3VsZEJlKCJl
dmVudC5jdHJsS2V5IiwgImZhbHNlIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC5tZXRhS2V5
IiwgImZhbHNlIik7Ci0gICAgICAgIG1vdXNlRXZlbnRzUmVjZWl2ZWQrKzsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBkZWJ1ZyhldmVudC50eXBlKTsKLSAgICAgICAgZGVidWcoZXZlbnQuY2xpZW50
WCk7Ci0gICAgICAgIGRlYnVnKGV2ZW50LmNsaWVudFkpOwotICAgIH0KLX0KLQotLy8gQmVjYXVz
ZSB3ZSBtYXkgbm90IGhhdmUgYSBnZXN0dXJlIHJlY29nbml6ZXIsIHdlIHNlbmQgYSBrZXkgcHJl
c3MKLS8vIGV2ZW50IHRvIGVuZCB0aGUgdGVzdCB3aXRob3V0IHRlbXBvcmFsIGZsYWtpbmVzcy4K
LWZ1bmN0aW9uIHF1aXRLZXlUb0VuZFRlc3QoZXZlbnQpIHsKLSAgICBlbmRUZXN0KCk7Ci19Ci0K
LS8vIExvZyB0aGF0IHdlIHN0aWxsIGdvdCB0aGUgdG91Y2ggZXZlbnRzLgotZnVuY3Rpb24gdG91
Y2hFdmVudENhbGxiYWNrKGV2ZW50KSB7Ci0gICAgdG91Y2hFdmVudHNSZWNlaXZlZCsrOwotICAg
IGRlYnVnKCdoYXZlIHJlY2VpdmVkOiAnICsgdG91Y2hFdmVudHNSZWNlaXZlZCArICcgdG91Y2gg
ZXZlbnRzJyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHNpbmdsZVRvdWNoU2Vx
dWVuY2UoKQotewotICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKLSAgICBldmVu
dFNlbmRlci5hZGRUb3VjaFBvaW50KDEwLCAxMik7Ci0gICAgZXZlbnRTZW5kZXIudG91Y2hTdGFy
dCgpOwotCi0gICAgLy8gSW5zZXJ0IHNvbWUgZGVsYXkuIE5COiB0aGlzIHZhbHVlIGRlcGVuZHMg
b24gbWluQ2xpY2tEb3duVGltZSwKLSAgICAvLyBtYXhDbGlja0Rvd25UaW1lIGZyb20gR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKLSAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgyMCk7
Ci0gICAgZXZlbnRTZW5kZXIuc2V0VG91Y2hNb2RpZmllcigic2hpZnQiLCB0cnVlKTsKLSAgICBl
dmVudFNlbmRlci5zZXRUb3VjaE1vZGlmaWVyKCJhbHQiLCB0cnVlKTsKLQotICAgIGV2ZW50U2Vu
ZGVyLnJlbGVhc2VUb3VjaFBvaW50KDApOwotICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7Ci19
Ci0KLWZ1bmN0aW9uIGVuZFRlc3QoKQotewotICAgIGlmIChtb3VzZUV2ZW50c1JlY2VpdmVkIDwg
ZXhwZWN0ZWRNb3VzZUV2ZW50cykgewotICAgICAgICBkZWJ1ZygnR2VzdHVyZSBtYW5hZ2VyIG5v
dCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtLicpOwotICAgIH0KLSAgICAvLyBCYWlsLgot
ICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgIHZhciBkaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndG91Y2h0YXJnZXQnKTsKLSAgICBkaXYuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgZ2VzdHVyZUV2ZW50Q2FsbGJhY2ssIGZhbHNlKTsKLSAgICBkaXYu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBnZXN0dXJlRXZlbnRDYWxsYmFjaywgZmFsc2UpOwot
ICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgZ2VzdHVyZUV2ZW50Q2FsbGJhY2ss
IGZhbHNlKTsKLSAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgZ2VzdHVyZUV2
ZW50Q2FsbGJhY2ssIGZhbHNlKTsKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlk
b3duIiwgcXVpdEtleVRvRW5kVGVzdCwgZmFsc2UpOwotICAgIGRpdi5hZGRFdmVudExpc3RlbmVy
KCJ0b3VjaHN0YXJ0IiwgdG91Y2hFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0gICAgZGl2LmFkZEV2
ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIHRvdWNoRXZlbnRDYWxsYmFjaywgZmFsc2UpOwotICAg
IGRpdi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRvdWNoRXZlbnRDYWxsYmFjaywgZmFs
c2UpOwotCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi0gICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgewotICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBiYXNpYyBzaW5nbGUg
dG91Y2ggZ2VzdHVyZSBnZW5lcmF0aW9uLiIpOwotICAgICAgICBpZiAoZXZlbnRTZW5kZXIuY2xl
YXJUb3VjaFBvaW50cykgewotICAgICAgICAgICAgc2luZ2xlVG91Y2hTZXF1ZW5jZSgpOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTApOwotICAgICAgICAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bignICcpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZW5kVGVz
dCgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGVidWcoIlRoaXMgdGVzdCBy
ZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRhcCBvbiB0aGUgYmx1ZSByZWN0IHRvIGxvZy4iKQot
ICAgIH0KLX0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmJiNjZhNWUxMDgwYTli
MGNhYmNmMTNiOWFmNDM0YWQyZDg4YjE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRo
aXMgdGVzdHMgc2Nyb2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBmcm9tIHRvdWNoIGV2ZW50cy4gU3F1
YXJlIGlzIChtb3N0bHkpIGdyZWVuIG9uIHBhc3MKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCi0KLUdlc3R1cmUgbWFuYWdlciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybSBv
ciBicm9rZW4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVU
RQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0
dXJlLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2Vz
dHVyZS1zY3JvbGwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI2NTBjZWI5
NjVmN2FmZTcxNmFmZDkyNjQ0NjRjNTcwYjM0OTgxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3Vj
aC1nZXN0dXJlLXNjcm9sbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLTwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci0jdG91Y2h0YXJnZXQgewotICB3aWR0aDog
MTAwcHg7Ci0gIGhlaWdodDogMTAwcHg7Ci0gIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgYmFja2dy
b3VuZDogd2hpdGU7Ci19Ci0KLSNtb3Zpbmdib3ggewotICB3aWR0aDogMTAwJTsKLSAgaGVpZ2h0
OiAxMDAlOwotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIHdvcmQtd3JhcDogYnJlYWstd29yZDsK
LSAgb3ZlcmZsb3cteTogc2Nyb2xsOwotICBvdmVyZmxvdy14OiBzY3JvbGw7Ci0gIGRpc3BsYXk6
IGJsb2NrOwotfQotCi0jZ3JlZW5ib3ggewotICB3aWR0aDogMTAwcHg7Ci0gIGhlaWdodDogMTAw
cHg7Ci0gIGJhY2tncm91bmQ6IGdyZWVuOwotICBwYWRkaW5nOiAwcHg7Ci0gIG1hcmdpbjogMHB4
OwotfQotCi0jcmVkYm94IHsKLSAgd2lkdGg6IDEwMHB4OwotICBoZWlnaHQ6IDEwMHB4OwotICBi
YWNrZ3JvdW5kOiByZWQ7Ci0gIHBhZGRpbmc6IDBweDsKLSAgbWFyZ2luOiAwcHg7Ci19Ci0KLXRk
IHsKLSAgcGFkZGluZzogMHB4OwotfQotPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5IHN0eWxlPSJt
YXJnaW46MCIgb25sb2FkPSJydW5UZXN0KCk7Ij4KLTxkaXYgaWQ9InRvdWNodGFyZ2V0Ij4KLSAg
PGRpdiBpZD0ibW92aW5nYm94Ij4KLSAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0i
MHB4Ij4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90
ZD4KLSAgICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPgotICAgICAgPC90
cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3Rk
PgotICAgICAgICA8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+Ci0gICAgICA8L3Ry
PgotICAgIDwvdGFibGU+Ci0gIDwvZGl2PgotPC9kaXY+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+Ci0KLXZhciBtb3ZpbmdkaXY7Ci12YXIgZXhwZWN0ZWRTY3JvbGxzVG90YWwgPSAyOwot
dmFyIHNjcm9sbHNPY2N1cnJlZCA9IDA7Ci12YXIgc2Nyb2xsQW1vdW50WCA9IFsnOTAnLCAnOTAn
XTsKLXZhciBzY3JvbGxBbW91bnRZID0gWycwJywgJzk1J107Ci0KLWZ1bmN0aW9uIGNoZWNrU2Ny
b2xsT2Zmc2V0KCkKLXsKLSAgICBtb3ZpbmdkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bW92aW5nYm94Jyk7Ci0gICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAgICBzaG91
bGRCZSgnbW92aW5nZGl2LnNjcm9sbFRvcCcsIHNjcm9sbEFtb3VudFlbc2Nyb2xsc09jY3VycmVk
XSk7Ci0gICAgICAgIHNob3VsZEJlKCdtb3ZpbmdkaXYuc2Nyb2xsTGVmdCcsIHNjcm9sbEFtb3Vu
dFhbc2Nyb2xsc09jY3VycmVkXSk7Ci0gICAgICAgIHNjcm9sbHNPY2N1cnJlZCsrOwotICAgIH0K
LQotICAgIGlmIChzY3JvbGxzT2NjdXJyZWQgPT0gZXhwZWN0ZWRTY3JvbGxzVG90YWwpIHsKLSAg
ICAgICAgLy8gSWYgd2UndmUgZ290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLSAgICAgICAgaXNTdWNj
ZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBzZWNvbmRUb3VjaERyYWdTZXF1ZW5jZSgpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gZmluZ2VyVXAoZXZlbnQpCi17Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGRlYnVnKCdtb3ZlZDogJyArIGV2ZW50LmN1cnJlbnRUYXJnZXQu
c2Nyb2xsVG9wICsgJywgJyArIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2Nyb2xsTGVmdCk7Ci0gICAg
cmV0dXJuIHRydWU7ICAvLyBXYW50IHRoZSBkZWZhdWx0IGJlaGF2aW91ci4KLX0KLQotZnVuY3Rp
b24gZmlyc3RUb3VjaERyYWdTZXF1ZW5jZSgpCi17Ci0gICAgZGVidWcoImZpcnN0IGdlc3R1cmUi
KTsKLSAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7Ci0gICAgZXZlbnRTZW5kZXIu
YWRkVG91Y2hQb2ludCg5NSwgMTIpOwotICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKLQot
ICAgIC8vIFNjcm9sbCB0aGUgZGl2IHRvIHRoZSBsZWZ0LgotICAgIGV2ZW50U2VuZGVyLnVwZGF0
ZVRvdWNoUG9pbnQoMCwgNSwgMTIpOwotICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOwotCi0g
ICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7Ci0gICAgZXZlbnRTZW5kZXIudG91
Y2hFbmQoKTsKLQotICAgIC8vIFdhaXQgZm9yIGxheW91dC4KLSAgICBjaGVja1Njcm9sbE9mZnNl
dCgpOwotfQotCi1mdW5jdGlvbiBzZWNvbmRUb3VjaERyYWdTZXF1ZW5jZSgpCi17Ci0gICAgZGVi
dWcoInNlY29uZCBnZXN0dXJlIik7Ci0gICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygp
OwotICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoMTIsIDk3KTsKLSAgICBldmVudFNlbmRl
ci50b3VjaFN0YXJ0KCk7Ci0KLSAgICAvLyBTY3JvbGwgdGhlIHJlY3RhbmdsZSBkb3duLgotICAg
IGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgMTIsIDIpOwotICAgIGV2ZW50U2VuZGVy
LnRvdWNoTW92ZSgpOwotCi0gICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7Ci0g
ICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKLQotICAgIC8vIFdhaXQgZm9yIGxheW91dC4KLSAg
ICBjaGVja1Njcm9sbE9mZnNldCgpOwotfQotCi1mdW5jdGlvbiBleGl0SWZOZWNlc3NhcnkoKQot
ewotICAgIGRlYnVnKCdHZXN0dXJlIG1hbmFnZXIgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxh
dGZvcm0gb3IgYnJva2VuJyk7Ci0gICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi1mdW5jdGlvbiBydW5U
ZXN0KCkKLXsKLSAgICB2YXIgbW92aW5nZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21v
dmluZ2JveCcpOwotCi0gICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAgICBkZXNj
cmlwdGlvbignVGhpcyB0ZXN0cyBzY3JvbGwgZ2VzdHVyZSBnZW5lcmF0aW9uIGZyb20gdG91Y2gg
ZXZlbnRzLiAnICsKLSAgICAgICAgICAgICdTcXVhcmUgaXMgKG1vc3RseSkgZ3JlZW4gb24gcGFz
cycpOwotCi0gICAgICAgIGlmIChldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKQotICAgICAg
ICAgICAgZmlyc3RUb3VjaERyYWdTZXF1ZW5jZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBleGl0SWZOZWNlc3NhcnkoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkZWJ1ZygiVGhpcyB0
ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVG91Y2ggc2Nyb2xsIHRoZSByZWQgcmVjdCB0
byBsb2cuIik7Ci0gICAgICAgIG1vdmluZ2Rpdi5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcs
IGZpbmdlclVwLCBmYWxzZSk7Ci0gICAgfQotfQotPC9zY3JpcHQ+Ci0KLQotCi08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2
ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2st
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjA4NDc4MzVlYjg1
YjI2MDFmZmVlNGI0Y2ZhODAzOGUxNTIzMmYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZl
bnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMzkgKzAsMCBAQAotVGhpcyB0ZXN0cyBiYXNpYyBzaW5nbGUgdG91Y2ggZ2VzdHVyZSBn
ZW5lcmF0aW9uLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotaGF2ZSByZWNlaXZl
ZDogMSB0b3VjaCBldmVudHMKLWhhdmUgcmVjZWl2ZWQ6IDIgdG91Y2ggZXZlbnRzCi1QQVNTIGV2
ZW50LnR5cGUgaXMgIm1vdXNlbW92ZSIKLVBBU1MgZXZlbnQuY2xpZW50WCBpcyAxMAotUEFTUyBl
dmVudC5jbGllbnRZIGlzIDEyCi1QQVNTIGV2ZW50LnNoaWZ0S2V5IGlzIHRydWUKLVBBU1MgZXZl
bnQuYWx0S2V5IGlzIHRydWUKLVBBU1MgZXZlbnQuY3RybEtleSBpcyBmYWxzZQotUEFTUyBldmVu
dC5tZXRhS2V5IGlzIGZhbHNlCi1QQVNTIGV2ZW50LnR5cGUgaXMgIm1vdXNlZG93biIKLVBBU1Mg
ZXZlbnQuY2xpZW50WCBpcyAxMAotUEFTUyBldmVudC5jbGllbnRZIGlzIDEyCi1QQVNTIGV2ZW50
LnNoaWZ0S2V5IGlzIHRydWUKLVBBU1MgZXZlbnQuYWx0S2V5IGlzIHRydWUKLVBBU1MgZXZlbnQu
Y3RybEtleSBpcyBmYWxzZQotUEFTUyBldmVudC5tZXRhS2V5IGlzIGZhbHNlCi1QQVNTIGV2ZW50
LnR5cGUgaXMgIm1vdXNldXAiCi1QQVNTIGV2ZW50LmNsaWVudFggaXMgMTAKLVBBU1MgZXZlbnQu
Y2xpZW50WSBpcyAxMgotUEFTUyBldmVudC5zaGlmdEtleSBpcyB0cnVlCi1QQVNTIGV2ZW50LmFs
dEtleSBpcyB0cnVlCi1QQVNTIGV2ZW50LmN0cmxLZXkgaXMgZmFsc2UKLVBBU1MgZXZlbnQubWV0
YUtleSBpcyBmYWxzZQotUEFTUyBldmVudC50eXBlIGlzICJjbGljayIKLVBBU1MgZXZlbnQuY2xp
ZW50WCBpcyAxMAotUEFTUyBldmVudC5jbGllbnRZIGlzIDEyCi1QQVNTIGV2ZW50LnNoaWZ0S2V5
IGlzIHRydWUKLVBBU1MgZXZlbnQuYWx0S2V5IGlzIHRydWUKLVBBU1MgZXZlbnQuY3RybEtleSBp
cyBmYWxzZQotUEFTUyBldmVudC5tZXRhS2V5IGlzIGZhbHNlCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5MWY5OGJkYjBiNWRlN2EyMjI5MTg2ZGZkZWM4NjA2YWYwZjU3ODQzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xs
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVRoaXMgdGVzdHMg
c2Nyb2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBmcm9tIHRvdWNoIGV2ZW50cy4gU3F1YXJlIGlzICht
b3N0bHkpIGdyZWVuIG9uIHBhc3MKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLWZp
cnN0IGdlc3R1cmUKLVBBU1MgbW92aW5nZGl2LnNjcm9sbFRvcCBpcyAwCi1QQVNTIG1vdmluZ2Rp
di5zY3JvbGxMZWZ0IGlzIDkwCi1zZWNvbmQgZ2VzdHVyZQotUEFTUyBtb3ZpbmdkaXYuc2Nyb2xs
VG9wIGlzIDk1Ci1QQVNTIG1vdmluZ2Rpdi5zY3JvbGxMZWZ0IGlzIDkwCi1QQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>