Re: [Luv] Results and a few questions

Loucaides, John <[email protected]> Thu, 29 Oct 2015 05:54:28 +0000
Newsgroups dev.linux.lists.oe-chipsec
Message-ID <F2C8915217E2664AB33302D7A9ED9C0A258D51CD@hasmsx108.ger.corp.intel.com>
--===============4879582241081234213==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

Interesting=E2=80=A6 I=E2=80=99m looking into this. We=E2=80=99re trying to=
 finish up a 1.2.2 release, and I plan to go through the pull requests over=
 the next day or two.



Btw, have you seen bugs related to setup.py outside LUV as well?



Thanks,

-          John



From: chipsec [mailto:chipsec-bounces(a)lists.01.org] On Behalf Of Darren B=
ilby
Sent: Wednesday, October 28, 2015 5:55 PM
To: Ricardo Neri <[email protected]>; kusuriya(a)corr=
upted.io
Cc: chipsec(a)lists.01.org; luv(a)lists.01.org
Subject: Re: [chipsec] [Luv] Results and a few questions



I'm actually not convinced Chipsec on LUV has ever worked.

The configuration in setup.py for Chipsec doesn't include the XML files in =
the deployment, thus no XML files in LUV, and therefore the errors.

There is a fix for it in a pull request here https://github.com/chipsec/chi=
psec/pull/7 but there are a bunch of other very old pull requests that don'=
t seem to be being looked at.



On Thu, Oct 29, 2015 at 9:26 AM Ricardo Neri <ricardo.neri-calderon(a)linux=
.intel.com<mailto:[email protected]>> wrote:

   Actually including the CHIPSEC mailing list this time.
   On Mon, 2015-10-26 at 19:51 +0000, Neri, Ricardo wrote:
   > +CHIPSEC mailing list
   >
   > Hi Jason,
   >
   > Thanks for your report.
   >
   > On Mon, 2015-10-26 at 12:04 -0700, Jason Barbier wrote:
   > > Hey all,
   > > I ran LUV-Live and my results are attached as a zip, I sort of was
   > > wondering about the errors in the chipsec log though,
   > > These were similar errors that I got last week that caused some issu=
es
   > > with my clock being reset using version 1.2, the latest RC seems to =
not
   > > do that but It still can not seem to run all the tests.
   > >
   > > --
   > > WARNING: 'SPIBAR' MMIO BAR definition not found/correct in XML config
   > > [pci] reading B/D/F: 0/31/0, offset: 0xF0, value: 0xFED1C001
   > > [spi] SPI MMIO base: 0x00000000FED1F800 (assuming below 4GB)
   > > [spi] SPI MMIO base: 0x00000000FED1F800 (assuming below 4GB)
   > > [-] Traceback (most recent call last):
   > >   File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291,=
 in
   > >   run_module
   > >     result =3D modx.run( module_argv )
   > >   File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 69=
, in
   > >   run
   > >     result =3D self.get_module_object()
   > >   File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 10=
1,
   > >   in get_module_object
   > >     self.mod_obj =3D iref()
   > >   File
   > >   "/usr/lib/python2.7/site-packages/chipsec/modules/common/bios_wp.p=
y",
   > >   line 51, in __init__
   > >     self.spi    =3D SPI( self.cs )
   > >   File "/usr/lib/python2.7/site-packages/chipsec/hal/spi.py", line 1=
76,
   > >   in __init__
   > >     self.hsfs_off   =3D int(chipsec.chipset.get_register_def( self.c=
s,
   > >     "HSFS" )['offset'],16)
   > >   File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 4=
67,
   > >   in get_register_def
   > >     return _cs.Cfg.REGISTERS[ reg_name ]
   > > KeyError: 'HSFS'
   > > --
   > > [-] Traceback (most recent call last):
   > >   File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291,=
 in
   > >   run_module
   > >     result =3D modx.run( module_argv )
   > >   File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 80=
, in
   > >   run
   > >     result =3D self.mod_obj.run(module_argv)
   > >   File
   > >   "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_desc.=
py",
   > >   line 68, in run
   > >     return self.check_flash_access_permissions()
   > >   File
   > >   "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_desc.=
py",
   > >   line 48, in check_flash_access_permissions
   > >     frap =3D chipsec.chipset.read_register( self.cs, 'FRAP' )
   > >   File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 4=
70,
   > >   in read_register
   > >     reg =3D _cs.Cfg.REGISTERS[ reg_name ]
   > > KeyError: 'FRAP'
   > >
   > > ERROR: Exception occurred during chipsec.modules.common.spi_desc.run=
():
   > > ''FRAP''
   > > --
   > > [-] Traceback (most recent call last):
   > >   File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291,=
 in
   > >   run_module
   > >     result =3D modx.run( module_argv )
   > >   File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 80=
, in
   > >   run
   > >     result =3D self.mod_obj.run(module_argv)
   > >   File
   > >   "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_lock.=
py",
   > >   line 59, in run
   > >     return self.check_spi_lock()
   > >   File
   > >   "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_lock.=
py",
   > >   line 46, in check_spi_lock
   > >     hsfs_reg =3D chipsec.chipset.read_register( self.cs, 'HSFS' )
   > >   File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 4=
70,
   > >   in read_register
   > >     reg =3D _cs.Cfg.REGISTERS[ reg_name ]
   > > KeyError: 'HSFS'
   > >
   > > ERROR: Exception occurred during chipsec.modules.common.spi_lock.run=
():
   > > ''HSFS''
   > > --
   > >
   > I added the CHIPSEC mailing list. Perhaps they can give further insight
   > on what the problem might be.
   >
   > As per LUV, it seems that this exception somehow caused a crash in the
   > LUV test manager and it prevented it from running the tests of the
   > tests. It seems we need to add some safeguards so that LUV can handle
   > these errors more gracefully.
   >
   > Thanks and BR,
   > Ricardo
   >
   > >
   > > _______________________________________________
   > > Luv mailing list
   > > Luv(a)lists.01.org<mailto:[email protected]>
   > > https://lists.01.org/mailman/listinfo/luv
   >
   > _______________________________________________
   > Luv mailing list
   > Luv(a)lists.01.org<mailto:[email protected]>
   > https://lists.01.org/mailman/listinfo/luv


   _______________________________________________
   chipsec mailing list
   chipsec(a)lists.01.org<mailto:[email protected]>
   https://lists.01.org/mailman/listinfo/chipsec


--===============4879582241081234213==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"

PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy
bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt
YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6ZHQ9InV1aWQ6QzJGNDEwMTAtNjVC
My0xMWQxLUEyOUYtMDBBQTAwQzE0ODgyIiB4bWxuczptPSJodHRwOi8vc2NoZW1hcy5taWNyb3Nv
ZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9S
RUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1ldGEgbmFtZT0iR2VuZXJhdG9yIiBj
b250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSAoZmlsdGVyZWQgbWVkaXVtKSI+DQo8c3R5bGU+PCEt
LQ0KLyogRm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpXaW5n
ZGluZ3M7DQoJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAgMDt9DQpAZm9udC1mYWNlDQoJe2Zv
bnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOw0KCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7
fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIgMTUgNSAy
IDIgMiA0IDMgMiA0O30NCi8qIFN0eWxlIERlZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwgbGku
TXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsDQoJe21hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRvbTou
MDAwMXB0Ow0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21h
biIsc2VyaWY7fQ0KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGluaw0KCXttc28tc3R5bGUtcHJpb3Jp
dHk6OTk7DQoJY29sb3I6Ymx1ZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCmE6dmlz
aXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZA0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7
DQoJY29sb3I6cHVycGxlOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0KcC5Nc29MaXN0
UGFyYWdyYXBoLCBsaS5Nc29MaXN0UGFyYWdyYXBoLCBkaXYuTXNvTGlzdFBhcmFncmFwaA0KCXtt
c28tc3R5bGUtcHJpb3JpdHk6MzQ7DQoJbWFyZ2luLXRvcDowaW47DQoJbWFyZ2luLXJpZ2h0OjBp
bjsNCgltYXJnaW4tYm90dG9tOjBpbjsNCgltYXJnaW4tbGVmdDouNWluOw0KCW1hcmdpbi1ib3R0
b206LjAwMDFwdDsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcg
Um9tYW4iLHNlcmlmO30NCnNwYW4uRW1haWxTdHlsZTE3DQoJe21zby1zdHlsZS10eXBlOnBlcnNv
bmFsLXJlcGx5Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOw0KCWNvbG9yOiMx
RjQ5N0Q7fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJ
Zm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0KQHBhZ2UgV29yZFNlY3Rpb24xDQoJ
e3NpemU6OC41aW4gMTEuMGluOw0KCW1hcmdpbjoxLjBpbiAxLjBpbiAxLjBpbiAxLjBpbjt9DQpk
aXYuV29yZFNlY3Rpb24xDQoJe3BhZ2U6V29yZFNlY3Rpb24xO30NCi8qIExpc3QgRGVmaW5pdGlv
bnMgKi8NCkBsaXN0IGwwDQoJe21zby1saXN0LWlkOjEzNjU5ODcwNzc7DQoJbXNvLWxpc3QtdHlw
ZTpoeWJyaWQ7DQoJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjM3MTA3MzMyIC0xNzk4MTI1Njc2IDY3
Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5IDY3Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5IDY3Njk4
NjkxIDY3Njk4NjkzO30NCkBsaXN0IGwwOmxldmVsMQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1h
dDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6LTsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsN
Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6MjAuMjVwdDsN
Cgl0ZXh0LWluZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7
DQoJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6Q2FsaWJyaTsNCgltc28tYmlkaS1mb250LWZhbWls
eToiVGltZXMgTmV3IFJvbWFuIjt9DQpAbGlzdCBsMDpsZXZlbDINCgl7bXNvLWxldmVsLW51bWJl
ci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9w
Om5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjU2
LjI1cHQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7
fQ0KQGxpc3QgbDA6bGV2ZWwzDQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCglt
c28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVs
LW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjkyLjI1cHQ7DQoJdGV4dC1pbmRl
bnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9DQpAbGlzdCBsMDpsZXZlbDQNCgl7
bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Ou+CtzsNCglt
c28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7
DQoJbWFyZ2luLWxlZnQ6MTI4LjI1cHQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFt
aWx5OlN5bWJvbDt9DQpAbGlzdCBsMDpsZXZlbDUNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6
YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJ
bXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjE2NC4yNXB0Ow0K
CXRleHQtaW5kZW50Oi0uMjVpbjsNCglmb250LWZhbWlseToiQ291cmllciBOZXciO30NCkBsaXN0
IGwwOmxldmVsNg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVs
LXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXIt
cG9zaXRpb246bGVmdDsNCgltYXJnaW4tbGVmdDoyMDAuMjVwdDsNCgl0ZXh0LWluZGVudDotLjI1
aW47DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwwOmxldmVsNw0KCXttc28tbGV2
ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674K3Ow0KCW1zby1sZXZl
bC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgltYXJn
aW4tbGVmdDoyMzYuMjVwdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6U3lt
Ym9sO30NCkBsaXN0IGwwOmxldmVsOA0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7
DQoJbXNvLWxldmVsLXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2
ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6MjcyLjI1cHQ7DQoJdGV4dC1p
bmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7fQ0KQGxpc3QgbDA6bGV2
ZWw5DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrv
gqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlv
bjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjMwOC4yNXB0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjsNCglm
b250LWZhbWlseTpXaW5nZGluZ3M7fQ0Kb2wNCgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KdWwNCgl7
bWFyZ2luLWJvdHRvbTowaW47fQ0KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4N
CjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjEwMjYiIC8+DQo8L3htbD48
IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlbGF5b3V0IHY6ZXh0
PSJlZGl0Ij4NCjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAvPg0KPC9vOnNoYXBlbGF5
b3V0PjwveG1sPjwhW2VuZGlmXS0tPg0KPC9oZWFkPg0KPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9
ImJsdWUiIHZsaW5rPSJwdXJwbGUiPg0KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5
OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj5JbnRlcmVzdGlu
Z+KApiBJ4oCZbSBsb29raW5nIGludG8gdGhpcy4gV2XigJlyZSB0cnlpbmcgdG8gZmluaXNoIHVw
IGEgMS4yLjIgcmVsZWFzZSwgYW5kIEkgcGxhbiB0byBnbyB0aHJvdWdoIHRoZSBwdWxsIHJlcXVl
c3RzIG92ZXIgdGhlIG5leHQgZGF5IG9yIHR3by4NCjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFt
aWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj48bzpwPiZu
YnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i
Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy
aWY7Y29sb3I6IzFGNDk3RCI+QnR3LCBoYXZlIHlvdSBzZWVuIGJ1Z3MgcmVsYXRlZCB0byBzZXR1
cC5weSBvdXRzaWRlIExVViBhcyB3ZWxsPzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx
dW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwv
bzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1z
aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s
b3I6IzFGNDk3RCI+VGhhbmtzLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29M
aXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjAuMjVwdDt0ZXh0LWluZGVudDotLjI1
aW47bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPg0KPCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4g
c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz
YW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPi08
c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KPC9zcGFu
Pjwvc3Bhbj48L3NwYW4+PCFbZW5kaWZdPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv
bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj5K
b2huPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5
bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5z
LXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXYg
c3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFkZGluZzow
aW4gMGluIDBpbiA0LjBwdCI+DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVy
LXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m
YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj5Gcm9tOjwvc3Bhbj48L2I+PHNw
YW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90
OyxzYW5zLXNlcmlmIj4gY2hpcHNlYyBbbWFpbHRvOmNoaXBzZWMtYm91bmNlc0BsaXN0cy4wMS5v
cmddDQo8Yj5PbiBCZWhhbGYgT2YgPC9iPkRhcnJlbiBCaWxieTxicj4NCjxiPlNlbnQ6PC9iPiBX
ZWRuZXNkYXksIE9jdG9iZXIgMjgsIDIwMTUgNTo1NSBQTTxicj4NCjxiPlRvOjwvYj4gUmljYXJk
byBOZXJpICZsdDtyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tJmd0Ozsga3Vz
dXJpeWFAY29ycnVwdGVkLmlvPGJyPg0KPGI+Q2M6PC9iPiBjaGlwc2VjQGxpc3RzLjAxLm9yZzsg
bHV2QGxpc3RzLjAxLm9yZzxicj4NCjxiPlN1YmplY3Q6PC9iPiBSZTogW2NoaXBzZWNdIFtMdXZd
IFJlc3VsdHMgYW5kIGEgZmV3IHF1ZXN0aW9uczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2
Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JJ20gYWN0dWFsbHkgbm90IGNvbnZpbmNlZCBDaGlw
c2VjIG9uIExVViBoYXMgZXZlciB3b3JrZWQuJm5ic3A7PG86cD48L286cD48L3A+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhlIGNvbmZpZ3VyYXRpb24gaW4gc2V0dXAucHkgZm9yIENo
aXBzZWMgZG9lc24ndCBpbmNsdWRlIHRoZSBYTUwgZmlsZXMgaW4gdGhlIGRlcGxveW1lbnQsIHRo
dXMgbm8gWE1MIGZpbGVzIGluIExVViwgYW5kIHRoZXJlZm9yZSB0aGUgZXJyb3JzLiZuYnNwOzxv
OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhlcmUg
aXMgYSBmaXggZm9yIGl0IGluIGEgcHVsbCByZXF1ZXN0IGhlcmUgPGEgaHJlZj0iaHR0cHM6Ly9n
aXRodWIuY29tL2NoaXBzZWMvY2hpcHNlYy9wdWxsLzciPg0KaHR0cHM6Ly9naXRodWIuY29tL2No
aXBzZWMvY2hpcHNlYy9wdWxsLzc8L2E+Jm5ic3A7YnV0IHRoZXJlIGFyZSBhIGJ1bmNoIG9mIG90
aGVyIHZlcnkgb2xkIHB1bGwgcmVxdWVzdHMgdGhhdCBkb24ndCBzZWVtIHRvIGJlIGJlaW5nIGxv
b2tlZCBhdC4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCI+T24gVGh1LCBPY3QgMjksIDIwMTUgYXQgOToyNiBBTSBSaWNhcmRvIE5lcmkg
Jmx0OzxhIGhyZWY9Im1haWx0bzpyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29t
Ij5yaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPC9hPiZndDsgd3JvdGU6PG86
cD48L286cD48L3A+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3Jk
ZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFy
Z2luLWxlZnQ6NC44cHQ7bWFyZ2luLXJpZ2h0OjBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5B
Y3R1YWxseSBpbmNsdWRpbmcgdGhlIENISVBTRUMgbWFpbGluZyBsaXN0IHRoaXMgdGltZS48YnI+
DQpPbiBNb24sIDIwMTUtMTAtMjYgYXQgMTk6NTEgJiM0MzswMDAwLCBOZXJpLCBSaWNhcmRvIHdy
b3RlOjxicj4NCiZndDsgJiM0MztDSElQU0VDIG1haWxpbmcgbGlzdDxicj4NCiZndDs8YnI+DQom
Z3Q7IEhpIEphc29uLDxicj4NCiZndDs8YnI+DQomZ3Q7IFRoYW5rcyBmb3IgeW91ciByZXBvcnQu
PGJyPg0KJmd0Ozxicj4NCiZndDsgT24gTW9uLCAyMDE1LTEwLTI2IGF0IDEyOjA0IC0wNzAwLCBK
YXNvbiBCYXJiaWVyIHdyb3RlOjxicj4NCiZndDsgJmd0OyBIZXkgYWxsLDxicj4NCiZndDsgJmd0
OyBJIHJhbiBMVVYtTGl2ZSBhbmQgbXkgcmVzdWx0cyBhcmUgYXR0YWNoZWQgYXMgYSB6aXAsIEkg
c29ydCBvZiB3YXM8YnI+DQomZ3Q7ICZndDsgd29uZGVyaW5nIGFib3V0IHRoZSBlcnJvcnMgaW4g
dGhlIGNoaXBzZWMgbG9nIHRob3VnaCw8YnI+DQomZ3Q7ICZndDsgVGhlc2Ugd2VyZSBzaW1pbGFy
IGVycm9ycyB0aGF0IEkgZ290IGxhc3Qgd2VlayB0aGF0IGNhdXNlZCBzb21lIGlzc3Vlczxicj4N
CiZndDsgJmd0OyB3aXRoIG15IGNsb2NrIGJlaW5nIHJlc2V0IHVzaW5nIHZlcnNpb24gMS4yLCB0
aGUgbGF0ZXN0IFJDIHNlZW1zIHRvIG5vdDxicj4NCiZndDsgJmd0OyBkbyB0aGF0IGJ1dCBJdCBz
dGlsbCBjYW4gbm90IHNlZW0gdG8gcnVuIGFsbCB0aGUgdGVzdHMuPGJyPg0KJmd0OyAmZ3Q7PGJy
Pg0KJmd0OyAmZ3Q7IC0tPGJyPg0KJmd0OyAmZ3Q7IFdBUk5JTkc6ICdTUElCQVInIE1NSU8gQkFS
IGRlZmluaXRpb24gbm90IGZvdW5kL2NvcnJlY3QgaW4gWE1MIGNvbmZpZzxicj4NCiZndDsgJmd0
OyBbcGNpXSByZWFkaW5nIEIvRC9GOiAwLzMxLzAsIG9mZnNldDogMHhGMCwgdmFsdWU6IDB4RkVE
MUMwMDE8YnI+DQomZ3Q7ICZndDsgW3NwaV0gU1BJIE1NSU8gYmFzZTogMHgwMDAwMDAwMEZFRDFG
ODAwIChhc3N1bWluZyBiZWxvdyA0R0IpPGJyPg0KJmd0OyAmZ3Q7IFtzcGldIFNQSSBNTUlPIGJh
c2U6IDB4MDAwMDAwMDBGRUQxRjgwMCAoYXNzdW1pbmcgYmVsb3cgNEdCKTxicj4NCiZndDsgJmd0
OyBbLV0gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOjxicj4NCiZndDsgJmd0OyZu
YnNwOyAmbmJzcDtGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2No
aXBzZWNfbWFpbi5weSZxdW90OywgbGluZSAyOTEsIGluPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZu
YnNwO3J1bl9tb2R1bGU8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3Jlc3VsdCA9
IG1vZHgucnVuKCBtb2R1bGVfYXJndiApPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGUg
JnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGUucHkm
cXVvdDssIGxpbmUgNjksIGluPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO3J1bjxicj4NCiZn
dDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7cmVzdWx0ID0gc2VsZi5nZXRfbW9kdWxlX29iamVj
dCgpPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9u
Mi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGUucHkmcXVvdDssIGxpbmUgMTAxLDxicj4N
CiZndDsgJmd0OyZuYnNwOyAmbmJzcDtpbiBnZXRfbW9kdWxlX29iamVjdDxicj4NCiZndDsgJmd0
OyZuYnNwOyAmbmJzcDsgJm5ic3A7c2VsZi5tb2Rfb2JqID0gaXJlZigpPGJyPg0KJmd0OyAmZ3Q7
Jm5ic3A7ICZuYnNwO0ZpbGU8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7JnF1b3Q7L3Vzci9s
aWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9iaW9zX3dw
LnB5JnF1b3Q7LDxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtsaW5lIDUxLCBpbiBfX2luaXRf
Xzxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7c2VsZi5zcGkmbmJzcDsgJm5ic3A7
ID0gU1BJKCBzZWxmLmNzICk8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsv
dXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL2hhbC9zcGkucHkmcXVvdDss
IGxpbmUgMTc2LDxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtpbiBfX2luaXRfXzxicj4NCiZn
dDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7c2VsZi5oc2ZzX29mZiZuYnNwOyAmbmJzcDs9IGlu
dChjaGlwc2VjLmNoaXBzZXQuZ2V0X3JlZ2lzdGVyX2RlZiggc2VsZi5jcyw8YnI+DQomZ3Q7ICZn
dDsmbmJzcDsgJm5ic3A7ICZuYnNwOyZxdW90O0hTRlMmcXVvdDsgKVsnb2Zmc2V0J10sMTYpPGJy
Pg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3Np
dGUtcGFja2FnZXMvY2hpcHNlYy9jaGlwc2V0LnB5JnF1b3Q7LCBsaW5lIDQ2Nyw8YnI+DQomZ3Q7
ICZndDsmbmJzcDsgJm5ic3A7aW4gZ2V0X3JlZ2lzdGVyX2RlZjxicj4NCiZndDsgJmd0OyZuYnNw
OyAmbmJzcDsgJm5ic3A7cmV0dXJuIF9jcy5DZmcuUkVHSVNURVJTWyByZWdfbmFtZSBdPGJyPg0K
Jmd0OyAmZ3Q7IEtleUVycm9yOiAnSFNGUyc8YnI+DQomZ3Q7ICZndDsgLS08YnI+DQomZ3Q7ICZn
dDsgWy1dIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTo8YnI+DQomZ3Q7ICZndDsm
bmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9j
aGlwc2VjX21haW4ucHkmcXVvdDssIGxpbmUgMjkxLCBpbjxicj4NCiZndDsgJmd0OyZuYnNwOyAm
bmJzcDtydW5fbW9kdWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDtyZXN1bHQg
PSBtb2R4LnJ1biggbW9kdWxlX2FyZ3YgKTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxl
ICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxlLnB5
JnF1b3Q7LCBsaW5lIDgwLCBpbjxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtydW48YnI+DQom
Z3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3Jlc3VsdCA9IHNlbGYubW9kX29iai5ydW4obW9k
dWxlX2FyZ3YpPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGU8YnI+DQomZ3Q7ICZndDsm
bmJzcDsgJm5ic3A7JnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNl
Yy9tb2R1bGVzL2NvbW1vbi9zcGlfZGVzYy5weSZxdW90Oyw8YnI+DQomZ3Q7ICZndDsmbmJzcDsg
Jm5ic3A7bGluZSA2OCwgaW4gcnVuPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDty
ZXR1cm4gc2VsZi5jaGVja19mbGFzaF9hY2Nlc3NfcGVybWlzc2lvbnMoKTxicj4NCiZndDsgJmd0
OyZuYnNwOyAmbmJzcDtGaWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyZxdW90Oy91c3Iv
bGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxlcy9jb21tb24vc3BpX2Rl
c2MucHkmcXVvdDssPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO2xpbmUgNDgsIGluIGNoZWNr
X2ZsYXNoX2FjY2Vzc19wZXJtaXNzaW9uczxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5i
c3A7ZnJhcCA9IGNoaXBzZWMuY2hpcHNldC5yZWFkX3JlZ2lzdGVyKCBzZWxmLmNzLCAnRlJBUCcg
KTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIu
Ny9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvY2hpcHNldC5weSZxdW90OywgbGluZSA0NzAsPGJyPg0K
Jmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO2luIHJlYWRfcmVnaXN0ZXI8YnI+DQomZ3Q7ICZndDsmbmJz
cDsgJm5ic3A7ICZuYnNwO3JlZyA9IF9jcy5DZmcuUkVHSVNURVJTWyByZWdfbmFtZSBdPGJyPg0K
Jmd0OyAmZ3Q7IEtleUVycm9yOiAnRlJBUCc8YnI+DQomZ3Q7ICZndDs8YnI+DQomZ3Q7ICZndDsg
RVJST1I6IEV4Y2VwdGlvbiBvY2N1cnJlZCBkdXJpbmcgY2hpcHNlYy5tb2R1bGVzLmNvbW1vbi5z
cGlfZGVzYy5ydW4oKTo8YnI+DQomZ3Q7ICZndDsgJydGUkFQJyc8YnI+DQomZ3Q7ICZndDsgLS08
YnI+DQomZ3Q7ICZndDsgWy1dIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTo8YnI+
DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0
ZS1wYWNrYWdlcy9jaGlwc2VjX21haW4ucHkmcXVvdDssIGxpbmUgMjkxLCBpbjxicj4NCiZndDsg
Jmd0OyZuYnNwOyAmbmJzcDtydW5fbW9kdWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAm
bmJzcDtyZXN1bHQgPSBtb2R4LnJ1biggbW9kdWxlX2FyZ3YgKTxicj4NCiZndDsgJmd0OyZuYnNw
OyAmbmJzcDtGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBz
ZWMvbW9kdWxlLnB5JnF1b3Q7LCBsaW5lIDgwLCBpbjxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJz
cDtydW48YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3Jlc3VsdCA9IHNlbGYubW9k
X29iai5ydW4obW9kdWxlX2FyZ3YpPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGU8YnI+
DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7JnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFj
a2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9zcGlfbG9jay5weSZxdW90Oyw8YnI+DQomZ3Q7
ICZndDsmbmJzcDsgJm5ic3A7bGluZSA1OSwgaW4gcnVuPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZu
YnNwOyAmbmJzcDtyZXR1cm4gc2VsZi5jaGVja19zcGlfbG9jaygpPGJyPg0KJmd0OyAmZ3Q7Jm5i
c3A7ICZuYnNwO0ZpbGU8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7JnF1b3Q7L3Vzci9saWIv
cHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9zcGlfbG9jay5w
eSZxdW90Oyw8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7bGluZSA0NiwgaW4gY2hlY2tfc3Bp
X2xvY2s8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO2hzZnNfcmVnID0gY2hpcHNl
Yy5jaGlwc2V0LnJlYWRfcmVnaXN0ZXIoIHNlbGYuY3MsICdIU0ZTJyApPGJyPg0KJmd0OyAmZ3Q7
Jm5ic3A7ICZuYnNwO0ZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMv
Y2hpcHNlYy9jaGlwc2V0LnB5JnF1b3Q7LCBsaW5lIDQ3MCw8YnI+DQomZ3Q7ICZndDsmbmJzcDsg
Jm5ic3A7aW4gcmVhZF9yZWdpc3Rlcjxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7
cmVnID0gX2NzLkNmZy5SRUdJU1RFUlNbIHJlZ19uYW1lIF08YnI+DQomZ3Q7ICZndDsgS2V5RXJy
b3I6ICdIU0ZTJzxicj4NCiZndDsgJmd0Ozxicj4NCiZndDsgJmd0OyBFUlJPUjogRXhjZXB0aW9u
IG9jY3VycmVkIGR1cmluZyBjaGlwc2VjLm1vZHVsZXMuY29tbW9uLnNwaV9sb2NrLnJ1bigpOjxi
cj4NCiZndDsgJmd0OyAnJ0hTRlMnJzxicj4NCiZndDsgJmd0OyAtLTxicj4NCiZndDsgJmd0Ozxi
cj4NCiZndDsgSSBhZGRlZCB0aGUgQ0hJUFNFQyBtYWlsaW5nIGxpc3QuIFBlcmhhcHMgdGhleSBj
YW4gZ2l2ZSBmdXJ0aGVyIGluc2lnaHQ8YnI+DQomZ3Q7IG9uIHdoYXQgdGhlIHByb2JsZW0gbWln
aHQgYmUuPGJyPg0KJmd0Ozxicj4NCiZndDsgQXMgcGVyIExVViwgaXQgc2VlbXMgdGhhdCB0aGlz
IGV4Y2VwdGlvbiBzb21laG93IGNhdXNlZCBhIGNyYXNoIGluIHRoZTxicj4NCiZndDsgTFVWIHRl
c3QgbWFuYWdlciBhbmQgaXQgcHJldmVudGVkIGl0IGZyb20gcnVubmluZyB0aGUgdGVzdHMgb2Yg
dGhlPGJyPg0KJmd0OyB0ZXN0cy4gSXQgc2VlbXMgd2UgbmVlZCB0byBhZGQgc29tZSBzYWZlZ3Vh
cmRzIHNvIHRoYXQgTFVWIGNhbiBoYW5kbGU8YnI+DQomZ3Q7IHRoZXNlIGVycm9ycyBtb3JlIGdy
YWNlZnVsbHkuPGJyPg0KJmd0Ozxicj4NCiZndDsgVGhhbmtzIGFuZCBCUiw8YnI+DQomZ3Q7IFJp
Y2FyZG88YnI+DQomZ3Q7PGJyPg0KJmd0OyAmZ3Q7PGJyPg0KJmd0OyAmZ3Q7IF9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPg0KJmd0OyAmZ3Q7IEx1diBt
YWlsaW5nIGxpc3Q8YnI+DQomZ3Q7ICZndDsgPGEgaHJlZj0ibWFpbHRvOkx1dkBsaXN0cy4wMS5v
cmciIHRhcmdldD0iX2JsYW5rIj5MdXZAbGlzdHMuMDEub3JnPC9hPjxicj4NCiZndDsgJmd0OyA8
YSBocmVmPSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2x1diIgdGFyZ2V0
PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vbHV2PC9hPjxi
cj4NCiZndDs8YnI+DQomZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fPGJyPg0KJmd0OyBMdXYgbWFpbGluZyBsaXN0PGJyPg0KJmd0OyA8YSBocmVmPSJt
YWlsdG86THV2QGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkx1dkBsaXN0cy4wMS5vcmc8
L2E+PGJyPg0KJmd0OyA8YSBocmVmPSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL2x1diIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlz
dGluZm8vbHV2PC9hPjxicj4NCjxicj4NCjxicj4NCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fPGJyPg0KY2hpcHNlYyBtYWlsaW5nIGxpc3Q8YnI+DQo8YSBo
cmVmPSJtYWlsdG86Y2hpcHNlY0BsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5jaGlwc2Vj
QGxpc3RzLjAxLm9yZzwvYT48YnI+DQo8YSBocmVmPSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWls
bWFuL2xpc3RpbmZvL2NoaXBzZWMiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLjAxLm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL2NoaXBzZWM8L2E+PG86cD48L286cD48L3A+DQo8L2Jsb2NrcXVv
dGU+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo=

--===============4879582241081234213==--