[ZDP] ZBook: changing contexts in Zope - part 3 - Draft 1

Patrick Phalen zope@teleo.net
Sat, 11 Dec 1999 21:28:29 -0800


--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/plain
Content-Transfer-Encoding: 8bit

[Rik Hoekstra, on Wed, 01 Dec 1999]
:: Dear all,
:: 
:: This is the third part of my changing contexts chapter for ZBook. As
:: promised, it is more complex than the previous parts - that is, a _lot_ more
:: complex. Once again I stole most of it from the mail lists.
:: 
:: I will be very glad with _any_ feedback. Please at least mail me whether
:: this is understandable _at_ _all_

Rik,

Nice work. :)

Attached are:

* a proofread copy with minor typos corrected
* a diff file
--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/english;
  name="changing_contexts"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="changing_contexts"

PT09PT09PT09PT09PT0KcGFydCAzIFdoZW4gYWNxdWlzaXRpb24gZ2V0cyBjb21wbGljYXRlZAo9
PT09PT09PT09PT09PT0KCjMuNCBDb21wbGljYXRpb25zIGluIGFjcXVpc2l0aW9uCgpJdCBzaG91
bGQgYmUgY2xlYXIgdGhhdCBhY3F1aXNpdGlvbiBhZGRzIHNvbWUgaW5jcmVkaWJsZSBmbGV4aWJp
bGl0eSB0bwp5b3VyIHNpdGUuIFRoZXJlIGFyZSBhbHJlYWR5IG1hbnkgZXhjZWxsZW50IGV4YW1w
bGVzIG9mIGl0IGluIHRoZSBab3BlCmNvbW11bml0eS4gTWFueSBvZiB0aGVtIGFyZSB0b28gY29t
cGxpY2F0ZWQgdG8gZXhwbGFpbiBoZXJlIChpZiBvbmx5IGJlY2F1c2UKSSBkbyBub3QgY29tcGxl
dGVseSB1bmRlcnN0YW5kIHRoZW0gbXlzZWxmKSwgYnV0IHRoZXkgYXJlIHdvcnRod2lsZSB0bwpz
dHVkeS4gUmVtZW1iZXIgdGhhdCBab3BlIGlzIE9wZW4gU291cmNlIGFuZCBtb3N0IG9mIHRoZSBa
b3BlIFByb2R1Y3RzCmFyZSBhbHNvLCBhbmQgcmVhZGluZyB0aGUgc291cmNlcyBpcyBvZnRlbiBh
IGdyZWF0IHdheSBvZiBsZWFybmluZyBtb3JlIC0KaXQgZG9lcyByZXF1aXJlIGtub3dsZWRnZSBv
ZiB0aGUgUHl0aG9uIGxhbmd1YWdlIFtsaW5rcyB0byBDaGFtZWxlb24KRm9sZGVyIGFuZCBTaXRl
QWNjZXNzIGFuZCB3aG8ga25vd3Mgd2hhdF0KCkV4YW1wbGU6IG11bHRpbGluZ3VhbCBzaXRlCgpU
aGVyZSBoYXMgYmVlbiBleHByZXNzZWQgaW50ZXJlc3QgaW4gaW50ZXJuYXRpb25hbGl6aW5nIFpv
cGUuIE5vdyB0aGlzCmlzIGFuIGlzc3VlIHdpdGggbWFueSBzaWRlcywgYW5kIGFsc28gY29uY2Vy
bmVkIHdpdGggWm9wZSBpbnRlcm5hbHMgYW5kCmJyb3dzZXIgaXNzdWVzLCBidXQgcGFydCBvZiBp
dCBjYW4gYmUgaGFuZGxlZCBieSBzaXRlIGRlc2lnbi4gT25seSB0aGUKWm9wZSBzaXRlIGRlc2ln
biBwYXJ0IHdpbGwgY29uY2VybiB1cyBoZXJlLCBhcyBpdCBpcyBhbiBleGFtcGxlIHBhcgpleGNl
bGxlbmNlIG9mIGEgY2hhbmdpbmcgY29udGV4dC4gSW4gbWFueSBub24tVVMgc2l0ZXMgaXQgaXMg
dmVyeSBjb21tb24KdG8gaGF2ZSBhIG11bHRpbGluZ3VhbCBzaXRlLCBhbmQgdGhhdCBpcyB3aGF0
IHRoZSBleGFtcGxlIGlzIGFib3V0LgoKTXVsdGlsaW5ndWFsIHNpdGVzCgpUaGUgcHJvYmxlbToK
ClRoZSBnb2FsIGlzOiB0aGUgc2FtZSBEVE1MIGRvY3VtZW50IHNob3VsZCBiZSBhYmxlIHRvIGNy
ZWF0ZSBwYWdlcyBpbgptdWx0aXBsZSBsYW5ndWFnZXMgYW5kIHdpdGggdGhlIHNhbWUgYXBwbGlj
YXRpb24gbG9naWMgZm9yIGVhY2gKbGFuZ3VhZ2UgLS0gdGhhdCBpcywgd2l0aG91dCBjb3B5aW5n
LiBUaGlzIG1lYW5zIHdlIGFpbSBhdCBhIHNpdGUgd2l0aCBhCnNpbmdsZSB0cmVlLCBub3QgdHdv
IHRyZWVzIGZvciB0d28gbGFuZ3VhZ2VzLgoKU29tZSB0aGluZ3MgdG8gdGFrZSBpbnRvIGFjY291
bnQ6IGEgc2l0ZSBtYXkgaGF2ZSBjb250ZW50IGluIHNldmVyYWwKbGFuZ3VhZ2VzLCBidXQgbm90
IGFsbCBwYWdlcyBtYXkgYmUgb3Igc2hvdWxkIGJlIGF2YWlsYWJsZSBpbiBhbGwKbGFuZ3VhZ2Vz
LiBUaGVyZWZvcmUsIGl0IHNob3VsZCBhbHNvIGhhdmUgY29udGVudCBpbiBhIGRlZmF1bHQgbGFu
Z3VhZ2UuCgpUaGlzIHNlZW1zIGxpa2UgYW4gaWRlYWwgcHJvYmxlbSBmb3IgWm9wZSdzIGFjcXVp
c2l0aW9uLiBUaGUgZGlmZmVyZW50CnNvbHV0aW9ucyB3ZXJlIChvbmNlIGFnYWluKSB0YWtlbiBm
cm9tIGFuIGFjdHVhbCBkaXNjdXNzaW9uIG9uIG9uZSBvZgp0aGUgWm9wZSByZWxhdGVkIGxpc3Rz
LiBUaGVyZSB3ZXJlIHNldmVyYWwgc29sdXRpb25zIHByb3Bvc2VkIHRvIHRoZQpwcm9ibGVtLiBU
byBiZSBzdXJlLCBub25lIG9mIHRoZW0gd2FzIGNvbXBsZXRlbHkgJ3JpZ2h0JyBpbiB0aGUgc2Vu
c2Ugb2YKc29sdmluZyB0aGUgd2hvbGUgcHJvYmxlbS4gQnV0IG9uZSBhcHByb2FjaCB3YXMgZGVm
aW5pdGVseSBiZXR0ZXIgdGhhbgp0aGUgb3RoZXIgKHNhZGx5IHRoZSBzb2x1dGlvbiB0aGF0IGRp
ZCBub3Qgd29yayB3YXMgbWluZSkuIFRoZSBzb2x1dGlvbnMKcHJvcG9zZWQgc2hvdyBkaWZmZXJl
bnQgYXBwcm9hY2hlcywgYm90aCBvZiB0aGVtIHRyeWluZyB0byB1c2UKYWNxdWlzaXRpb24gYXMg
YW4gaW1wb3J0YW50IHRvb2wuIFRoZSBiYXNpYyBhbmFseXNpcyBib3RoIHNvbHV0aW9ucwphZ3Jl
ZWQgdXBvbiB3YXMgdGhhdCB0aGUgbWluaW11bSBkaWZmZXJlbmNlIGJldHdlZW4gYSBzaXRlIGlu
IER1dGNoIGFuZAp0aGUgc2FtZSBzaXRlIGluIEVuZ2xpc2ggaXMgdGhlIHRleHR1YWwgY29udGVu
dHMuIEknbSBob3BpbmcgbGF5b3V0Cmlzc3VlcyB3aWxsIGF0IGxlYXN0IHdpdGggRXVyb3BlYW4g
bGFuZ3VhZ2VzIGJlIHJlbGF0aXZlbHkgbWlub3IsIHNvIHRoZQpsYXlvdXQgY2FuIHN0YXkgdGhl
IHNhbWUuCgpGaXJzdCBJIHByZXNlbnQgdGhlIHNvbHV0aW9ucywgdGhlbiB3ZSBnbyBvbiB0byBh
biBhbmFseXNpcy4KClNvbHV0aW9uIDEKClJPT1QKICAgIGNvbnRlbnRzX2VuCiAgICBjb250ZW50
c19ubAogICAgaW5kZXhfaHRtbAogIEVuZ2xpc2gKICBEdXRjaAogIEZvbwogIEJhcgogIC4uLi4K
CgpFbmdsaXNoIGFuZCBEdXRjaCBhcmUgZm9sZGVycyBhbmQgZWFjaCBjb250YWlucyBhIHByb3Bl
cnR5IGNhbGxlZAonbGFuZ3VhZ2UnLCBzZXQgdG8gIkVuZ2xpc2giIGFuZCAiRHV0Y2giIHJlc3Bl
Y3RpdmVseS4gVGhleSBhcmUgZW1wdHkKZm9sZGVycy4KCkZvbyBpcyBhIGZvbGRlciB3aXRoIGFu
IGluZGV4X2h0bWwgY29udGFpbmluZyBsYXlvdXQgaW5mbywgYW5kIHdoZW5ldmVyCml0IHRyaWVz
IHRvIGdldCBzb21lIHRleHR1YWwgY29udGVudHMsIGl0J2xsIGR0bWwtdmFyIGl0IGluIGZyb20g
dGhlIGZvbGRlcgpkZXBlbmRlbnQgb24gbGFuZ3VhZ2UuCgo8ZHRtbC1pZiAibGFuZ3VhZ2U9PSdE
dXRjaCciPgogIDxkdG1sLXZhciBjb250ZW50c19ubD4KPGR0bWwtZWxzZT4KICA8ZHRtbC12YXIg
Y29udGVudHNfZW4+CjwvZHRtbC1pZj4KCllvdSBjYWxsIHRoZSBEdXRjaCBwYWdlIHdpdGg6CgpE
dXRjaC9mb28KCllvdSBjYWxsIHRoZSBFbmdsaXNoIHBhZ2Ugd2l0aDoKCkVuZ2xpc2gvZm9vCgpZ
b3UnZCBjYWxsIHRoZSAnZGVmYXVsdCcgbGFuZ3VhZ2Ugd2l0aDoKCmZvbyAocHJlY2lzZSBpbXBs
ZW1lbnRhdGlvbiBmb3IgZGVmYXVsdCBpcyBsZWZ0IGFzIGFuIGV4ZXJjaXNlIGZvciB0aGUKcmVh
ZGVyKQoKVGhlIHNhbWUgZm9yIGJhciBhbmQgYW55IG90aGVyIHN1YmZvbGRlcnMuCgoKU29sdXRp
b24gMgoKUk9PVAogIGVuCiAgIC0tLQogICAtLS0KICAgLS0tCiAgZGUKICAgLS0tCiAgIC0tLQog
ICAtLS0KICBzaXRlaG9tZQogICAtLS0KICAgLS0tCiAgIC0tLQogIGNoCiAgIC0tLQogICAtLS0K
ICAgLS0tCiAgbmwKICAgLS0tCiAgIC0tLQogICAtLS0KCklmIHlvdXIgZW4sIGRlLCBjaCwgbmwg
YWxsIGNvbnRhaW4gYSBzdGFuZGFyZF9odG1sX2hlYWRlciBtZXRob2QgYW5kIG90aGVyCnVzYWJs
ZSBtZXRob2RzIGFuZCBpZiB5b3UgbWFrZSBvbmUgbGFuZ3VhZ2UgdGhlIG1haW4gbGFuZ3VhZ2Ug
b2YgdGhlIHNpdGUKYW5kIHBsYWNlIHRoaXMgaW4gdGhlIGZvbGRlciBJIGNhbGxlZCAnUk9PVCcs
IHRoZW4gYWNxdWlzaXRpb24gbWFrZXMgaXQKcG9zc2libGUgdG8gY2FsbCB1cmxzIGxpa2U6Cgpo
dHRwOi8vcm9vdC9lbi9zaXRlaG9tZS9wYWdlLmh0bWwgb3IKaHR0cDovL3Jvb3Qvbmwvc2l0ZWhv
bWUvcGFnZS5odG1sIG9yCmh0dHA6Ly93aGF0ZXZlci9kdXRjaHxlbmdsaXNofGFudGFyY3RpYy9z
aXRlL2NvbnRlbnQKClRoZSBEVE1MLXNvdXJjZSBvZiB0aGUgcGFnZS5odG1sIGxvb2tzIGxpa2Ug
dGhpczoKCjxkdG1sLXZhciBzdGFuZGFyZF9odG1sX2hlYWRlcj4KYWxsIHNvcnRzIG9mIGZhbmN5
IGh0bWwgbGF5b3V0CjxkdG1sLXZhciB0ZWtzdDE+Cm1vcmUgbGF5b3V0CjxkdG1sLXZhciB0ZWtz
dDI+CmV2ZW4gbW9yZSBsYXlvdXQKPGR0bWwtdmFyIHN0YW5kYXJkX2h0bWxfZm9vdGVyPgoKSXQg
d2lsbCBnaXZlIHlvdSB5b3VyIGxhbmd1YWdlLXNwZWNpZmljIHBhZ2VzLCB1bmxlc3MgdGhlcmUg
YXJlbid0IGFueSwgaW4Kd2hpY2ggY2FzZSB5b3UgZ2V0IHRoZSB0ZXh0IGluIHRoZSBzdGFuZGFy
ZCBsYW5ndWFnZS4KCkV4ZXJjaXNlOiBkb2VzIHRoaXMgc29sdXRpb24gd29yaz8gV2h5IG5vdD8K
CgpBbmFseXNpcyBhbmQgc29tZSByZW1hcmtzOgoKKHNlZSB0aGUgdHJlZSBhYm92ZSkKQ2FsbGlu
ZyB0aGUgcGFnZSBpbiBzaWJsaW5nIGZvbGRlcnMgd29ya3MgYXMgcHJvcG9zZWQgaW4gdGhlIHNv
bHV0aW9uOgpJdCBfaXNfIHBvc3NpYmxlIHRvIHBsYWNlIGEgY29udGVudHMgaW4gdGhlIGRpcmVj
dG9yaWVzIGF0IHRoZSBzYW1lIGxldmVsIGFzCmZvbyBhbmQgdGhlbiBjYWxsIHRoZW0gYXMKaHR0
cDovL3doYXRldmVyL2R1dGNofGVuZ2xpc2h8YW50YXJjdGljL3NpdGUvY29udGVudAoKW2Fsc28g
cmVmZXIgdG8gaHR0cDovL3d3dy56b3BlLm9yZy9waXBlcm1haWwvem9wZS8xOTk5LUp1bmUvMDA1
MTQxLmh0bWxdCgpUaGUgZGVmYXVsdCBwYXJ0IGRvZXMgX25vdF8gd29yayBhcyBkZXNjcmliZWQu
CgpJZiBzaXRlaG9tZSBpcyBvbiB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgbGFuZ3VhZ2Utc3BlY2lm
aWMgZm9sZGVycywgaW4KYSBVUkwgbGlrZSBodHRwOi8vUk9PVC9lbi9zaXRlaG9tZS9wYWdlIChp
biB3aGljaCBwYWdlIHJlZmVycyB0byB0ZXh0Cm1ldGhvZHMgaW4gZW4pLCBhY3F1aXNpdGlvbiBv
bmx5IHJldHVybnMgdGhlIHBhZ2Ugd2l0aCB0aGUgbWV0aG9kIGZyb20gZW4sIGlmCnRoZXJlIGlz
IG5vIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgYW55d2hlcmUgZWxzZSBpbiB0aGUgaGllcmFy
Y2h5OiBub3QKYWJvdmUgYW5kIG5vdCBiZWxvdy4gSWYgdGhlcmUgaXMsIF90aGF0XyBtZXRob2Qg
d2lsbCBiZSByZXR1cm5lZC4KQW55d2F5LCBpZiB5b3Ugd2FudCB0byByZXR1cm4gbGFuZ3VhZ2Ug
c3BlY2lmaWMgY29udGVudCwgdW5sZXNzIHRoZXJlIGlzCm5vbmUgYXZhaWxhYmxlLCBpbiB3aGlj
aCBjYXNlIHlvdSB3b3VsZCByZXR1cm4gZGVmYXVsdCBjb250ZW50LCB5b3UKc2hvdWxkIGNvbnN0
cnVjdCBzb21ldGhpbmcgbGlrZToKCjxkdG1sLXZhciBzdGFuZGFyZF9odG1sX2hlYWRlcj4KPGFs
bCBzb3J0cyBvZiBmYW5jeSBodG1sIGxheW91dD4KPGR0bWwtaWYgdGVrc3QxPgogIDxkdG1sLXZh
ciB0ZWtzdDE+CjxkdG1sLWVsc2U+CiAgPGR0bWwtdmFyIGRlZmF1bHQtdGV4dDE+CjwvZHRtbC1p
Zj4KCjxtb3JlIGxheW91dD4KCjxkdG1sLWlmIHRla3N0Mj4KICA8ZHRtbC12YXIgdGVrc3QyPgo8
ZHRtbC1lbHNlPgogIDxkdG1sLXZhciBkZWZhdWx0LXRleHQyPgo8L2R0bWwtaWY+CmJsYSBibGEK
PGR0bWwtdmFyIHN0YW5kYXJkX2h0bWxfZm9vdGVyPgoKTm90ZSAxOiBUaGlzIG1lYW5zIHRoYXQg
dGhlIHNpdGVob21lIGZvbGRlciB3b3VsZCBoYXZlIHRvIGhhdmUgYSBkaWZmZXJlbnQKbmFtaW5n
IGNvbnZlbnRpb24gdGhhbiB0aGUgb3RoZXIgZGlyZWN0b3JpZXMuIFRoaXMgaXMgZHVlIHRvIGEg
ZmVhdHVyZQppbiBhY3F1aXNpdGlvbi4KCk5vdGUgMjoKTm93IGluIGVpdGhlciBzb2x1dGlvbiB5
b3Ugd291bGQgaGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggaHlwZXJsaW5rcy4gVGhleQpzaG91bGQg
bm90IGJlIGFic29sdXRlIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHlvdSBydW4gdGhlIHJpc2sgb2Yg
J2p1bXBpbmcKb3V0IG9mIHRoZSBlbnZpcm9ubWVudCcuIFtUaGlzIGxhc3QgcG9pbnQgY291bGQg
b2YgY291cnNlIGJlIHNvbHZlZCBieQp0YWtpbmcgdGhlIHZhcmlhYmxlIGZyb20gY29va2llcyBv
ciBldmVuIGh0dHAgaGVhZGVyIHZhcmlhYmxlcywgYnV0CnRoZXNlIGFyZSBtdWNoIG1vcmUgaW5m
bGV4aWJsZSBpbiBjaGFuZ2luZyBjb250ZXh0Ll0KCltBcyBhIHNvbHV0aW9uIEkgcHJvcG9zZSB0
byBlaXRoZXIgdXNlIHJlbGF0aXZlIHVybCdzLCB0aGUgWm9wZSBCQVNFL1VSTAp0YWcgaW4gc29t
ZSB3YXkgaWYgeW91IGhhdmUgdG8gcmVmZXIgdG8gb3RoZXIgcGFydHMuIEkgZG8gbm90IGhhdmUg
dGltZQp0byBzb3J0IHRoYXQgb3V0IHJpZ2h0IG5vd10KClRoaXMgaXMgY29tcGxpY2F0ZWQgbWF0
dGVyLCBzbyB3ZSdsbCBwcmVzZW50IGFub3RoZXIgZXhhbXBsZSwgb25jZSBhZ2Fpbgp0YWtlbiBm
cm9tICdyZWFsIGxpZmUnLCB0aGF0IGlzLCB0aGUgWm9wZSBsaXN0cy4gVGhpcyB0aW1lIGl0IHdp
bGwKcHJvdmlkZSBhIHF1aXRlIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIGhvdyBpdCB3b3Jrcywg
c28gaXQgaW5ldml0YWJseQppbnZvbHZlcyBzb21lIFB5dGhvbiwgYXMgdGhhdCdzIHdoYXQgWm9w
ZSBpcyAobW9zdGx5KSB3cml0dGVuIGluLgoKCgpFeGFtcGxlOiBBIGZsZXhpYmxlIGhvbWVwYWdl
CgpUaGUgcHJvYmxlbToKSW4gbWFueSBjYXNlcyBpdCBpcyBkZXNpcmFibGUgdG8gbWFrZSBhIGZs
ZXhpYmxlIGhvbWVwYWdlLCB3aXRoIGEKZnJhbWVzL25vLWZyYW1lcy9mbGFzaCB2ZXJzaW9uIGV0
IGNldGVyYS4KCk9uY2UgYWdhaW4gWm9wZSdzIGZsZXhpYmlsaXR5IHdpbGwgbWFrZSB0aGlzIG11
Y2ggZWFzaWVyIHRoYW4gd2l0aCBhCmZpbGVzeXRlbS1iYXNlZCBzaXRlLiBPbmNlIGFnYWluLCBh
IGZsZXhpYmxlIGhvbWVwYWdlIHdpbGwgbWVhbiB0aGF0IHlvdQpoYXZlIGNvbnRlbnQgc3RvcmVk
IG9uY2UsIGFuZCB0aGUgZW52aXJvbm1lbnQgaW4gc2libGluZyBmb2xkZXJzLgoKVGFrZSB0aGUg
Zm9sbG93aW5nIHByb3Bvc2FsIFsvIG1lYW5zIFJPT1RdOgoKLwogICBpbmRleF9odG1sICAgIChj
aGVja3MgYSBjb29raWUsIGdpdmVzCiAgICAgICAgICAgICAgICAgIGEgZnJhbWVzZXQgb3IgYSBy
ZWRpcmVjdAogICAgICAgICAgICAgICAgICB0byAvbm9mcmFtZXMvaG9tZSAoZnJhbWVzZXQKICAg
ICAgICAgICAgICAgICAgbG9hZHMgL2hvbWUpKQogICBob21lICAgICAgICAgIChjb250ZW50KQog
ICBzdGFuZGFyZF9odG1sX2hlYWRlciAodG9nZXRoZXIgZGVmaW5lIG15IHBhZ2UKICAgc3RhbmRh
cmRfaHRtbF9mb290ZXIgIGxheW91dCkKCiAgIGZyYW1lcy8gICAgIDwtIEZyYW1lc2V0cwogICAg
IHN0YW5kYXJkX2h0bWxfaGVhZGVyIChkZWZpbmUgYSBmcmFtZXNldCB0aGF0CiAgICAgc3RhbmRh
cmRfaHRtbF9mb290ZXIgIGxvYWRzIHRoZSBzYW1lIFVSTCBtaW51cwogICAgIGluZGV4X2h0bWwg
ICAgICAgICAgICB0aGUgL2ZyYW1lcyBwcmVmaXgpCiAgICAgbmF2ICAgICAgICAgICAgICAgICAg
IChuYXZpZ2F0aW9uYWwgZnJhbWUpCgogICBub2ZyYW1lcy8gICA8LSBObyBmcmFtZXNldHMKICAg
ICBzdGFuZGFyZF9odG1sX2hlYWRlciAoZGVmaW5lIGEgbGF5b3V0IHdpdGgKICAgICBzdGFuZGFy
ZF9odG1sX2Zvb3RlciAgbmF2aWdhdGlvbiBpbiBhIHRhYmxlKQogICAgIGluZGV4X2h0bWwKCgpB
bGwgb2JqZWN0cyBhcmUgZWl0aGVyIEZvbGRlcnMgb3IgRFRNTCBNZXRob2RzLiBTbyBmYXIgc28g
Z29vZCwgdGhpcyB3b3JrcwpsaWtlIGEgY2hhcm0uIFdpdGggYWNxdWlzaXRpb24sIHRoZSBob21l
IGRvY3VtZW50IGNhbiBiZSB2aWV3ZWQgd2l0aCBhbmQKd2l0aG91dCBhIGZyYW1lc2V0LgoKQnV0
IHRoZW4gSSBtYWtlIGFub3RoZXIgRm9sZGVyLCBsZXQncyBzYXkgUGVyc29uYWwsIGFuZCBkZWZp
bmUgYW4gaW5kZXhfaHRtbAppbiB0aGF0IEZvbGRlcjoKCiAgIFBlcnNvbmFsLwogICAgIGluZGV4
X2h0bWwKCkNhbGxpbmcgaHR0cDovL2V4YW1wbGVzaXRlLmNvbS9QZXJzb25hbC8gd29ya3MgZmlu
ZSwgYnV0IHdoZW4gSSBjYWxsCmh0dHA6Ly9leGFtcGxlc2l0ZS9mcmFtZXMvUGVyc29uYWwvIHRo
ZSBzYW1lIGxheW91dCBhcHBlYXJzIGFzIHRoZQpwcmV2aW91cyBVUkwuIERlIHN0YW5kYXJkX2h0
bWxfaGVhZGVyIGFuZCAtX2Zvb3RlciBmcm9tIHRoZSByb290IGFyZSBiZWluZwp1c2VkLCBub3Qg
dGhlIG9uZXMgaW4gdGhlIGZyYW1lcy8gRm9sZGVyISBUaGUgc2FtZSBnb2VzIGZvciBub2ZyYW1l
cy8uCgpbRm9yIGRyYWZ0IHJlYWRlcnM6IEkgZG8gbm90IGhhdmUgdGltZSBmb3IgaXQgbm93LCBi
dXQgYWxsIHRoaXMgaXMgZ29pbmcKdG8gYmUgaW4gYW4gZXhhbXBsZSBab3BlIHNpdGUsIHRvIGJl
IHByb3ZpZGVkIHdpdGggdGhpcyBjaGFwdGVyXQoKCkFuYWx5c2lzOgoKSmltIEZ1bHRvbiwgY3Jl
YXRvciBvZiBtdWNoIG9mIHRoZSBab3BlJyBjb3JlLCBhbmQgY2VydGFpbmx5IG9mIGFjcXVpc2l0
aW9uLApleHBsYWluZWQgb24gdGhlIG1haWwgbGlzdCB3aHkgaXQgd29ya3MgYXMgaXQgd29ya3Mg
KHRoaXMgaW52b2x2ZXMgc29tZQpQeXRob24pOgoKV2hlbiB5b3UgYWNxdWlyZSBhbiBvYmplY3Qs
IHRoZSBhY3F1aXJlZCBvYmplY3QgZ2V0cyB0aGUgY29udGV4dCBvZgp0aGUgYXF1aXJlciAqYW5k
KiB0aGUgY29udGV4dCBpdCB3YXMgYWNxdWlyZWQgZnJvbSwgd2l0aCB0aGUgc291cmNlCmNvbnRl
eHQgdGFraW5nIHByZWNlZGVuY2Ugb3ZlciB0aGUgZGVzdGluYXRpb24gY29udGV4dC4gIEluIHRo
ZQpleGFtcGxlIGFib3ZlLCAnUGVyc29uYWwnIGFjcXVpcmVzIGZyb20gdGhlIHRvcC1sZXZlbCBm
b2xkZXIgZmlyc3QsCmFuZCB0aGVuIGZyb20gdGhlICdmcmFtZXMnIGZvbGRlci4KCkxldHMgd2Fs
ayB0aHJvdWdoIHdoeSB0aGlzIGlzIHNvLiAgU3VwcG9zZSBpbiBQeXRob24sIHdlIGhhdmUKYSB2
YXJpYWJsZSAnYXBwJyB0aGF0IGlzIHRoZSB0b3AtbGV2ZWwgZm9sZGVyLgoKVGhlIGV4cHJlc3Np
b246CgogIGFwcC5QZXJzb25hbAoKR2V0cyAnUGVyc29uYWwnIGluIHRoZSBjb250ZXh0IG9mICdh
cHAnLgoKICBhcHAuZnJhbWVzCgpHZXRzICdmcmFtZXMnIGluIHRoZSBjb250ZXh0IGlmICdhcHAn
LiAgU28gZmFyIHNvIGdvb2QuCgpOb3cgY29uc2lkZXI6CgogIGFwcC5mcmFtZXMuUGVyc29uYWwK
CidQZXJzb25hbCcgaXMgYWNxdWlyZWQgZnJvbSAnYXBwJy4gIFdlIGhhdmUgdG8gZ2V0ICdhcHAu
UGVyc29uYWwnLAphbmQgdGhlbiB1c2UgaXQgaW4gdGhlIGNvbnRleHQgb2YgJ2FwcC5mcmFtZXMn
LiAgVGhpcyByZXN1bHRzIGluOgoKICAoUGVyc29uYWwgb2YgYXBwKSBvZiAoZnJhbWVzIG9mIGFw
cCkKCldoZW4gc2VhcmNoaW5nIGZvciBhbiBhdHRyaWJ1dGUsIHdlIGFsd2F5cyBzZWFyY2ggdGhl
CmlubmVybW9zdCBjb250ZXh0cyBmaXJzdC4gIEluIHRoaXMgZXhhbXBsZSwgd2Ugc2VhcmNoCidQ
ZXJzb25hbCBvZiBhcHAnIGJlZm9yZSB3ZSBzZWFyY2ggJ2ZyYW1lcyBvZiBhcHAnLgoKClRoZSBz
b2x1dGlvbjoKClRoZXJlIG1heSBiZSBzZXZlcmFsIHdvcmthcm91bmRzIGFuZCBzb2x1dGlvbnMg
dG8gdGhlIHByb2JsZW0uIExldCdzCmxvb2sgYXQgb25lCgpbTm90ZTogT2Z0ZW4gYSBzb2x1dGlv
biB0byBzb21lIG9mIHRoZXNlIHByb2JsZW1zIGlzIHNpbXBseQpjaGFuZ2luZyB0aGUgb3JkZXIg
b2Ygb2JqZWN0cyB3aGljaCBhbHNvIGNoYW5nZXMgdGhlIG9yZGVyIG9mIGFjcXVpc2l0aW9uLgpJ
biB0aGlzIHBhcnRpY3VsYXIgY2FzZSB0aGF0IGRpZCBub3Qgd29yaywgYXMgdGhlcmUgd2FzIGFu
IGluZGV4X2h0bWwKbWV0aG9kIGluIC9mcmFtZXMuIEFuZCB0aGUgcmlnaHQgaW5kZXhfaHRtbCBo
YWQgdG8gYmUgYWNxdWlyZWQuXQoKCi9mcmFtZXMKL2ZyYW1lZGNvbnRlbnQKL25vZnJhbWVzCgpX
ZXJlIHRoZSB0aHJlZSBVUkwgbW9kaWZpZXJzIHRvIGJlIGltcGxlbWVudGVkLgoKQS4gRnJhbWVk
CgovZnJhbWVzIGluIGZyb250IG9mIHRoZSBVUkwgcmVzdWx0cyBpbiBhIGZyYW1lc2V0IHdpdGgg
bmF2aWdhdGlvbiBpbiBvbmUKZnJhbWUgYW5kIHRoZSBzYW1lIFVSTCBpbiB0aGUgb3RoZXIsIGJ1
dCB3aXRoIC9mcmFtZWRjb250ZW50IGluIGZyb250IG9mCml0IGluc3RlYWQgb2YgL2ZyYW1lcy4g
SW4gZnJhbWVkY29udGVudCB3ZSBwcmVzZW50IHRoZSBjb250ZW50IHdpdGhvdXQKZnVydGhlciBu
YXZpZ2F0aW5nLiBXaXRoIEphdmFzY3JpcHQgd2UgY2hlY2sgd2hldGhlciB3ZSBhcmUgaW5zaWRl
IGEgZnJhbWUuCgpGb3IgZXhhbXBsZToKCmh0dHA6Ly9leGFtcGxlc2l0ZS5jb20vZnJhbWVkL2Nv
bnRlbnQKCnJlc3VsdHMgaW46Cgo8ZnJhbWVzZXQgY29scz0iMTUwLCAxKiIgYm9yZGVyPTAgZnJh
bWVib3JkZXI9MCBmcmFtZXNwYWNpbmc9MD4KICA8ZnJhbWUgbmFtZT1uYXYgc3JjPSIvZnJhbWVz
L25hdiIgc2Nyb2xsaW5nPW5vIG5vcmVzaXplIGZyYW1lYm9yZGVyPTA+CiAgPGZyYW1lIG5hbWU9
Y29uIHNyYz0iL2ZyYW1lZGNvbnRlbnQvY29udGVudCIgZnJhbWVib3JkZXI9MD4KCmV0IGNldGVy
YQoKYW5kIHRoZSBqYXZhc2NyaXB0IGluIC9mcmFtZWRjb250ZW50L2NvbnRlbnQgbG9va3MgbGlr
ZToKCjxzY3JpcHQgbGFuZ3VhZ2U9amF2YXNjcmlwdD48IS0tCiAgaWYgKHdpbmRvdy5uYW1lICE9
ICdjb24nKQoKCiAgICB0b3AuZG9jdW1lbnQubG9jYXRpb24gPSAnaHR0cDovL21qLmFudHJhY2ll
dC5ubC9mcmFtZXMvaG9tZSc7CgovLy0tPjwvc2NyaXB0PgoKQi5Ob3QgZnJhbWVkCgovbm9mcmFt
ZXMgcHJlc2VudHMgdGhlIHNhbWUgYXMgL2ZyYW1lZGNvbnRlbnQsIGJ1dCBub3cgd2UgcHV0IG5h
dmlnYXRpb24Kd2l0aGluIHRoZSBzYW1lIGRvY3VtZW50ICh1c2luZyBhIHRhYmxlKQoKRm9yIGV4
YW1wbGU6IGh0dHA6Ly9leGFtcGxlc2l0ZS5jb20vbm9mcmFtZXMvY29udGVudAoKcmVzdWx0cyBp
bjoKCjx0YWJsZSB3aWR0aD0xMDAlIGJvcmRlcj0wPgo8dHIgdmFsaWduPXRvcD4KICA8dGQgd2lk
dGg9MTUwPgogICAgbmF2aWdhdGlvbgogICAgPGEgaHJlZj0iL2hvbWUiPkhvbWU8L2E+PEJSPgog
ICAgPGEgaHJlZj0iL2Rlc3RpbmF0aW9uMS8iPmRlc3RpbmF0aW9uMTwvYT48QlI+CiAgICA8YSBo
cmVmPSIvZGVzdGluYXRpb24yLyI+ZGVzdGluYXRpb24yPC9hPjxCUj4KICA8L3RkPgogIDx0ZD5B
bGwgc29ydHMgb2YgaW50ZXJlc3RpbmcgY29udGVudAogIDwvdGQ+CjwvdHI+CjwvdGFibGU+CgoK
VGhlIHRyaWNrcyBmb3IgdGhpcyBhcmUgaW4gc3RhbmRhcmRfaHRtbF9oZWFkZXIgYW5kIHN0YW5k
YXJkX2h0bWxfZm9vdGVyOgoKc19oX2hlYWRlcjoKPGR0bWwtaWYgc3RfaHRtbF9oZWFkZXI+CiAg
IDxkdG1sLXZhciBzdF9odG1sX2hlYWRlcj4KPGR0bWwtZWxzZT4KIDxkdG1sLWlmICJSRVFVRVNU
LmNvb2tpZXMuaGFzX2tleSgnc3RfZnJhbWVzJykgYW5kIHN0X2ZyYW1lcyA9PSAnbm8nIj4KICAg
PGR0bWwtY2FsbCAiUkVTUE9OU0UucmVkaXJlY3QoXy5zdHJpbmcucmVwbGFjZShVUkwsIEJBU0Uw
LAogICAgICAgICAgICAgICBCQVNFMCArICcvbm9mcmFtZXMnKSkiPgogPGR0bWwtZWxzZT4KICAg
PGR0bWwtY2FsbCAiUkVTUE9OU0UucmVkaXJlY3QoXy5zdHJpbmcucmVwbGFjZShVUkwsIEJBU0Uw
LCBCQVNFMCArCiAgICAgICAgICAgICAgICcvZnJhbWVkY29udGVudCcpKSI+CiA8L2R0bWwtaWY+
CjwvZHRtbC1pZj4KCkluIChvdGhlcikgd29yZHM6CklmIHdlIGZpbmQgc3RfaHRtbF9oZWFkZXIg
aW4gdGhlIGFjcXVpc2l0aW9uIHBhdGgsIHVzZSBpdC4gT3RoZXJ3aXNlCnJlZGlyZWN0IHRvIHRo
ZSBmcmFtZXMgb3Igbm9mcmFtZXMgdmVyc2lvbiwgZGVwZW5kaW5nIG9uIGEgY29va2llLgoKc19o
X2Zvb3RlcjoKPGR0bWwtaWYgc3RfaHRtbF9mb290ZXI+PGR0bWwtdmFyIHN0X2h0bWxfZm9vdGVy
PjwvZHRtbC1pZj4KCk9ubHkgc2hvdyBhIHN0X2h0bWxfZm9vdGVyIGlmIGl0IGlzIGluIHRoZSBh
Y3F1aXNpdGlvbiBwYXRoLgoKCnN0X2h0bWxfaGVhZGVyIGVuIHN0X2Zvb3RlciBhcmUgb25seSBk
ZWZpbmVkIGluIC9mcmFtZXMsIC9mcmFtZWRjb250ZW50CmFuZCBpbiAvbm9mcmFtZXMuIFNvIHNv
bWVvbmUgd2hvIHVzZXMgdGhlIHVybApodHRwOi8vZXhhbXBsZXNpdGUuY29tL2NvbnRlbnQKd2ls
bCBiZSByZWRpcmVjdGVkIHRvIHRoZSBmcmFtZXMgb3Igbm9mcmFtZXMgdmVyc2lvbiwgaW4gdGhp
cyBjYXNlCmZyYW1lcy9jb250ZW50IG9yIG5vZnJhbWVzL2NvbXRlbnQuIEFuZCBmcmFtZXMvY29u
dGVudCBpcyBhIGZyYW1lc2V0IG9mCndoaWNoIG9uZSBmcmFtZSBzaG93cyB0aGUgVVJMIC9mcmFt
ZWRjb250ZW50L2hvbWUKClJlc3VtaW5nOgpUcnlpbmcgdG8gb3ZlcnJpZGUgc3RhbmRhcmRfaHRt
bF9oZWFkZXIgYW5kIHN0YW5kYXJkX2h0bWxfZm9vdGVyIGlzIG5vdCBhCmdvb2QgaWRlYS4KSWYg
eW91IHVzZSBhY3F1aXNpdGlvbiBvbiBzaWJsaW5nIGZvbGRlcnMgYXMgZGVzY3JpYmVkIGluIHRo
ZSBleGFtcGxlcwphYm92ZSwgeW91IHdpbGwKaGF2ZSB0byBkZWZpbmUgeW91ciBvd24gY29uZGl0
aW9uYWwgb3B0aW9ucy4gSW4gdGhlIGNhc2Ugb2YgdGhlIGxhc3QgZXhhbXBsZQpzdGFuZGFyZF9o
dG1sX2hlYWRlciBhbmQgc3RhbmRhcmRfaHRtbF9mb290ZXIgbWFkZSB1c2Ugb2YgdGhlc2Ugb3B0
aW9uYWwKcmVwbGFjZW1lbnRzLgoKCgo=

--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/english;
  name="diffs.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="diffs.txt"

OWM5CjwgY29tbXVuaXR5LiBNYW55IG9mIHRoZW0gYXJlIHRvbyBjb21wbGljYXRlZCB0byBleHBs
YWluIGhlcmUgKGlmIG9ubHkgaWYKLS0tCj4gY29tbXVuaXR5LiBNYW55IG9mIHRoZW0gYXJlIHRv
byBjb21wbGljYXRlZCB0byBleHBsYWluIGhlcmUgKGlmIG9ubHkgYmVjYXVzZQoyMWMyMQo8IFpv
cGUgc2l0ZSBkZXNpZ24gcGFydCB3aWxsIGNvbmNlcm4gdXMgaGVyZSwgYXMgaXQgaXMgYW4gZXhh
bXBsZSBwZXIKLS0tCj4gWm9wZSBzaXRlIGRlc2lnbiBwYXJ0IHdpbGwgY29uY2VybiB1cyBoZXJl
LCBhcyBpdCBpcyBhbiBleGFtcGxlIHBhcgoyM2MyMwo8IHRvIGhhdmUgYSBtdWx0aWxpbmdhbCBz
aXRlLCBhbmQgdGhhdCBpcyB3aGF0IHRoZSBleGFtcGxlIGlzIGFib3V0LgotLS0KPiB0byBoYXZl
IGEgbXVsdGlsaW5ndWFsIHNpdGUsIGFuZCB0aGF0IGlzIHdoYXQgdGhlIGV4YW1wbGUgaXMgYWJv
dXQuCjMxYzMxCjwgbGFuZ3VhZ2UuIFRoYXQgaXMsIHdpdGhvdXQgY29weWluZy4gVGhpcyBtZWFu
cyB3ZSBhaW0gYXQgYSBzaXRlIHdpdGggYQotLS0KPiBsYW5ndWFnZSAtLSB0aGF0IGlzLCB3aXRo
b3V0IGNvcHlpbmcuIFRoaXMgbWVhbnMgd2UgYWltIGF0IGEgc2l0ZSB3aXRoIGEKMzJhMzMKPiAK
NDVjNDYKPCBhZ3JlZWQgdXBvbiB3YXMgdGhhdCBUaGUgbWluaW11bSBkaWZmZXJlbmNlIGJldHdl
ZW4gYSBzaXRlIGluIER1dGNoIGFuZAotLS0KPiBhZ3JlZWQgdXBvbiB3YXMgdGhhdCB0aGUgbWlu
aW11bSBkaWZmZXJlbmNlIGJldHdlZW4gYSBzaXRlIGluIER1dGNoIGFuZAoxMjAsMTI1YzEyMSwx
MjgKPCB1c2FibGUgbWV0aG9kcy4gQW5kIGlmIHlvdSBtYWtlIG9uZSBsYW5ndWFnZSB0aGUgbWFp
biBsYW5ndWFnZSBvZiB0aGUgc2l0ZQo8IGFuZCBwbGFjZSB0aGlzIGluIHRoZSBmb2xkZXIgSSBj
YWxsZWQgJ1JPT1QnLiBBY3F1aXNpdGlvbiBtYWtlcyBpdCBwb3NzaWJsZQo8IHRvCjwgY2FsbCB1
cmxzIGxpa2UgaHR0cDovL3Jvb3QvZW4vc2l0ZWhvbWUvcGFnZS5odG1sIG9yCjwgaHR0cDovL3Jv
b3Qvbmwvc2l0ZWhvbWUvcGFnZS5odG1sCjwgb3IgaHR0cDovL3doYXRldmVyL2R1dGNofGVuZ2xp
c2h8YW50YXJjdGljL3NpdGUvY29udGVudAotLS0KPiB1c2FibGUgbWV0aG9kcyBhbmQgaWYgeW91
IG1ha2Ugb25lIGxhbmd1YWdlIHRoZSBtYWluIGxhbmd1YWdlIG9mIHRoZSBzaXRlCj4gYW5kIHBs
YWNlIHRoaXMgaW4gdGhlIGZvbGRlciBJIGNhbGxlZCAnUk9PVCcsIHRoZW4gYWNxdWlzaXRpb24g
bWFrZXMgaXQKPiBwb3NzaWJsZSB0byBjYWxsIHVybHMgbGlrZToKPiAKPiBodHRwOi8vcm9vdC9l
bi9zaXRlaG9tZS9wYWdlLmh0bWwgb3IKPiBodHRwOi8vcm9vdC9ubC9zaXRlaG9tZS9wYWdlLmh0
bWwgb3IKPiBodHRwOi8vd2hhdGV2ZXIvZHV0Y2h8ZW5nbGlzaHxhbnRhcmN0aWMvc2l0ZS9jb250
ZW50Cj4gCjEzNmMxMzkKPCBJdCB3aWxsIGdpdmUgeW91IHlvdXIgbGFuZ3VhZ2Ugc3BlY2lmaWMg
cGFnZXMsIHVubGVzcyB0aGVyZSBhcmVuJ3QgYW55LCBpbgotLS0KPiBJdCB3aWxsIGdpdmUgeW91
IHlvdXIgbGFuZ3VhZ2Utc3BlY2lmaWMgcGFnZXMsIHVubGVzcyB0aGVyZSBhcmVuJ3QgYW55LCBp
bgoxNTRjMTU3CjwgSWYgc2l0ZWhvbWUgaXMgb24gdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIGxhbmd1
YWdlIHNwZWNpZmljIGZvbGRlcnMsIGluCi0tLQo+IElmIHNpdGVob21lIGlzIG9uIHRoZSBzYW1l
IGxldmVsIGFzIHRoZSBsYW5ndWFnZS1zcGVjaWZpYyBmb2xkZXJzLCBpbgoxNTZjMTU5CjwgbWV0
aG9kcyBpbiBlbikgYWNxdWlzaXRpb24gb25seSByZXR1cm5zIHRoZSBwYWdlIHdpdGggdGhlIG1l
dGhvZCBmcm9tIGVuLCBpZgotLS0KPiBtZXRob2RzIGluIGVuKSwgYWNxdWlzaXRpb24gb25seSBy
ZXR1cm5zIHRoZSBwYWdlIHdpdGggdGhlIG1ldGhvZCBmcm9tIGVuLCBpZgoxOThjMjAxCjwgcHJv
dmlkZSBhIHF1aXRlIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIGhvdyBpdCB3b3Jrcywgc28gaXQg
aW5ldml0YWJsZQotLS0KPiBwcm92aWRlIGEgcXVpdGUgZGV0YWlsZWQgZXhwbGFuYXRpb24gb2Yg
aG93IGl0IHdvcmtzLCBzbyBpdCBpbmV2aXRhYmx5CjIwN2MyMTAKPCBmcmFtZXMvbm8tZnJhbWVz
L2ZsYXNoIHZlcnNpb24gZXRjZXRlcmEuCi0tLQo+IGZyYW1lcy9uby1mcmFtZXMvZmxhc2ggdmVy
c2lvbiBldCBjZXRlcmEuCjIzN2MyNDAKPCBsaWtlIGNoYXJtLiBXaXRoIGFjcXVpc2l0aW9uLCB0
aGUgaG9tZSBkb2N1bWVudCBjYW4gYmUgdmlld2VkIHdpdGggYW5kCi0tLQo+IGxpa2UgYSBjaGFy
bS4gV2l0aCBhY3F1aXNpdGlvbiwgdGhlIGhvbWUgZG9jdW1lbnQgY2FuIGJlIHZpZXdlZCB3aXRo
IGFuZAoyNDBjMjQzCjwgQnV0IHRoZW4gSSBtYWtlIGFub3RoZXIgRm9sZGVyLCBsZXRzIHNheSBQ
ZXJzb25hbCwgYW5kIGRlZmluZSBhIGluZGV4X2h0bWwKLS0tCj4gQnV0IHRoZW4gSSBtYWtlIGFu
b3RoZXIgRm9sZGVyLCBsZXQncyBzYXkgUGVyc29uYWwsIGFuZCBkZWZpbmUgYW4gaW5kZXhfaHRt
bAoyNTcsMjU5YzI2MCwyNjIKPCBKaW0gRnVsdG9uLCBjcmVhdG9yIG9mIG11Y2ggb2YgWm9wZScg
Y29yZSwgYW5kIGNlcnRhaW5seSBvZiBhY3F1aXNpdGlvbgo8IGV4cGxhaW5lZCBhdCB0aGUgbWFp
bCBsaXN0IHdoeSBpdCB3b3JrcyBhcyBpdCB3b3JrcyAodGhpcyBpbnZvbHZlcyBzb21lCjwgcHl0
aG9uKToKLS0tCj4gSmltIEZ1bHRvbiwgY3JlYXRvciBvZiBtdWNoIG9mIHRoZSBab3BlJyBjb3Jl
LCBhbmQgY2VydGFpbmx5IG9mIGFjcXVpc2l0aW9uLAo+IGV4cGxhaW5lZCBvbiB0aGUgbWFpbCBs
aXN0IHdoeSBpdCB3b3JrcyBhcyBpdCB3b3JrcyAodGhpcyBpbnZvbHZlcyBzb21lCj4gUHl0aG9u
KToKMjk5LDMwMGMzMDIsMzAzCjwgW05vdGU6IE9mdGVuIGEgc29sdXRpb24gdG8gc29tZSBvZiB0
aGVzZSBwcm9ibGVtcyBtYXkgYmUgaXMgc2ltcGx5CjwgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIG9i
amVjdHMgYWxzbyBjaGFuZ2VzIHRoZSBvcmRlciBvZiBhY3F1aXNpdGlvbi4KLS0tCj4gW05vdGU6
IE9mdGVuIGEgc29sdXRpb24gdG8gc29tZSBvZiB0aGVzZSBwcm9ibGVtcyBpcyBzaW1wbHkKPiBj
aGFuZ2luZyB0aGUgb3JkZXIgb2Ygb2JqZWN0cyB3aGljaCBhbHNvIGNoYW5nZXMgdGhlIG9yZGVy
IG9mIGFjcXVpc2l0aW9uLgozMTZjMzE5CjwgZnVydGhlciBuYXZpZ2F0aW5nLiBXaXRoIGphdmFz
Y3JpcHQgd2UgY2hlY2sgd2hldGhlciB3ZSBhcmUgaW5zaWRlIGEgZnJhbWUuCi0tLQo+IGZ1cnRo
ZXIgbmF2aWdhdGluZy4gV2l0aCBKYXZhc2NyaXB0IHdlIGNoZWNrIHdoZXRoZXIgd2UgYXJlIGlu
c2lkZSBhIGZyYW1lLgozMjVjMzI4CjwgICA8ZnJhbWUgbmFtZT1uYXYgc3JjPSIvZnJhbWVzL25h
diIgc2Nyb2xsaW5nPW5vIG5vcmVzaXplIGZyYW1lc2JvcmRlcj0wPgotLS0KPiAgIDxmcmFtZSBu
YW1lPW5hdiBzcmM9Ii9mcmFtZXMvbmF2IiBzY3JvbGxpbmc9bm8gbm9yZXNpemUgZnJhbWVib3Jk
ZXI9MD4KMzI4YzMzMQo8IGV0Y2V0ZXJhCi0tLQo+IGV0IGNldGVyYQozNTdjMzYwCjwgICA8dGQ+
QWwgc29ydHMgb2YgaW50ZXJlc3RpbmcgY29udGVudAotLS0KPiAgIDx0ZD5BbGwgc29ydHMgb2Yg
aW50ZXJlc3RpbmcgY29udGVudAo0MDBjNDAzCjwgaGF2ZSB0byBkZWZpbmUgeW91IG93biBjb25k
aXRpb25hbCBvcHRpb25zLiBJbiB0aGUgY2FzZSBvZiB0aGUgbGFzdCBleGFtcGxlCi0tLQo+IGhh
dmUgdG8gZGVmaW5lIHlvdXIgb3duIGNvbmRpdGlvbmFsIG9wdGlvbnMuIEluIHRoZSBjYXNlIG9m
IHRoZSBsYXN0IGV4YW1wbGUK

--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD--