[ZDP] Changing contexts in Zope - part 1 -draft 1

Patrick Phalen zope@teleo.net
Wed, 10 Nov 1999 09:47:56 -0800


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

[Rik Hoekstra, on Wed, 10 Nov 1999]:
:: Hello,
:: 
:: This is the first part of my proposed changing context proposal, of which I
:: do not yet know what it will all contain. It is meant to get progressively,
:: but systematically more complicated.
:: I'd like feedback from the list on the following questions:
:: - is this leading somewhere?
:: - did I forget some important things?

This is superb, Rik.

I've proofread it and fixed a few typos.

The corrected file is attached, along with a diff file.

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

PT09PT09PT09PT09PQpDaGFuZ2luZyBjb250ZXh0cyBpbiBab3BlLgoKVGhlIHNlbnNpdGl2aXR5
IG9mIFpvcGUgZm9yIGNoYW5naW5nIGNvbnRleHRzIGlzIHByb2JhYmx5IGl0cwptb3N0IGRpZmZp
Y3VsdCBwYXJ0IHRvIGdyYXNwLiBJZiB5b3UgcmVhZCBhYm91dCBab3BlIHlvdSBzZWUgdGhlClpl
biBvZiBab3BlIG1lbnRpb25lZCBxdWl0ZSBhIGZldyB0aW1lcy4gQ2hhbmNlcyBhcmUgdGhhdCB0
aGlzCnJlbGF0ZXMgdG8gWm9wZSdzIGNoYW5naW5nIGNvbnRleHRzLiBUaGVyZSBhcmUgbWFueSBw
YXJ0cyB0aGF0CnBsYXkgdG9nZXRoZXIgdG8gbWFrZSBpdCBjb21wbGljYXRlZC4gQWN0dWFsbHks
IGl0IGlzIGNvbXBsaWNhdGVkCmJlY2F1c2UgdGhleSBwbGF5IHRvZ2V0aGVyLiBab3BlIGlkZWFz
IGFuZC9vciBjb21wb25lbnRzIGludm9sdmVkCmluY2x1ZGUgb2JqZWN0IHB1Ymxpc2hpbmcsIGZh
Y3RvcmluZyBvdXQsIGFjcXVpc2l0aW9uLCBhbmQgWm9wZSdzCnNlY3VyaXR5IG1vZGVsLiBUaGV5
IGFsbCBtYXkgYmUgc2NyaXB0ZWQgYnkgRFRNTCAob3IgaW5kZWVkIFB5dGhvbiwgYnV0CndlIHdp
bGwgbm90IGdvIGludG8gdGhhdCBoZXJlKS4gRG9uJ3QgYmUgY29uZnVzZWQgaWYgYW55IG9yIGFs
bCBvZiB0aGVzZQp0ZXJtcyBtZWFuIG5vdGhpbmcgdG8geW91LiBUaGV5IGRvIG5vdCBtYXR0ZXIg
Zm9yIHRoZSBtb21lbnQuCkluIHRoaXMgY2hhcHRlciB3ZSdsbCBnaXZlIHRoZSBzdWJqZWN0IG9m
IGNvbnRleHRzIGluIFpvcGUgYSBzeXN0ZW1hdGljCnRyZWF0bWVudC4KCjEuIEJhY2sgdG8gYmFz
aWNzOiBvYmplY3QgcHVibGlzaGluZyBpcyByZXByZXNlbnRhdGlvbgoKV2hlbiB5b3UgcmVhZCB0
aGlzLCB5b3UgYXJlIHByb2JhYmx5IGF3YXJlIHRoYXQgWm9wZSBpcyBhYm91dCBwdWJsaXNoaW5n
CihQeXRob24pIG9iamVjdHMgdG8gdGhlIHdlYi4gSW4gWm9wZSB3aGF0IGxvb2tzIGxpa2UgYSBu
b3JtYWwgd2Vic2l0ZSBpbgpyZWFsaXR5IGlzIGEgd2ViYmVkIChIVFRQLUhUTUwpIHJlcHJlc2Vu
dGF0aW9uIG9mIGEgbnVtYmVyIG9mCm9iamVjdHMgaW4gdGhlIFpvcGUgT2JqZWN0IERhdGFiYXNl
IChaT0RCKS5bKiBBY3R1YWxseSBpdCBjb3VsZApiZSBtb3JlIGNvbXBsaWNhdGVkLCBiZWNhdXNl
IHRoZXJlIHNvbWV0aW1lcyBhcmUgZ29vZCByZWFzb25zIHRvCm1peCBvYmplY3RzIHdpdGggcmVh
bCBmaWxlc10uIFRoZSByZXByZXNlbnRhdGlvbiBpcyBtYWRlIGJ5IHRoZQpab3BlIGNvbXBvbmVu
dCBaUHVibGlzaGVyIChmb3IgcmVwcmVzZW50aW5nIG9iamVjdHMgaW4gSFRNTCkgYW5kClpTZXJ2
ZXIgKGZvciBzZXJ2aW5nIHRoZW0gb3ZlciB0aGUgV2ViKSBbdGhpcyBkaXZpc2lvbiBpcyBub3QK
ZW50aXJlbHkgY29ycmVjdDsgd2hlcmU/XS4gVGhlIFpQdWJsaXNoZXItWlNlcnZlciBkdW8gaXMg
bm90CnNwZWNpZmljIGZvciB0aGUgV2ViLCBob3dldmVyLiBBdCB0aGUgdGltZSBvZiB3cml0aW5n
IHRoZXkgYWxzbwpyZXByZXNlbnQgWm9wZSBvYmplY3RzIHRocm91Z2ggRlRQLCBXZWJEQVYgYW5k
IHRoZSBNZWR1c2EgTW9uaXRvcgpTZXJ2ZXIgLSBidXQgWm9wZSdzIG1vZHVsYXJpdHkgYWxzbyBt
YWtlcyBpdCBwb3NzaWJsZSB0byBzdXBwb3J0IG90aGVyCnB1YmxpY2F0aW9uIG1lY2hhbmlzbXMu
IEZvciBpbnN0YW5jZSwgdGhlcmUgaGF2ZSBiZWVuIGRpc2N1c3Npb25zIG9mCnB1Ymxpc2hpbmcg
Wm9wZSB2aWEgYSBmaWxlc3lzdGVtLiBGb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSwgd2UnbGwg
Y29uZmluZQpvdXJzZWx2ZXMgdG8gd2ViIHB1Ymxpc2hpbmcgYmVsb3cuCgpUaGUgcmVwcmVzZW50
YXRpb24gd29ya3MgdmlhIGEgbWFwcGluZyBvZiBhIFB5dGhvbiBvYmplY3QgaGllcmFyY2h5IHRv
CmEgVVJMLiBGb3IgZXhhbXBsZSwgYW4gb2JqZWN0IGhpZXJhcmNoeSBvZgoKcm9vdG9iamVjdC5v
YmplY3QxLnN1Ym9iamVjdF9hLnN1Ym9iamVjdF9iCgppcyByZXByZXNlbnRlZCBhczoKCmh0dHA6
Ly93d3cuZXhhbXBsZXNpdGUuY29tL29iamVjdDEvc3Vib2JqZWN0X2Evc3Vib2JqZWN0X2IKCklu
IERUTUwsIGhvd2V2ZXIsIHRoZXJlIGlzIG5vIG1hcHBpbmcgdG8gYSBVUkwsIGJlY2F1c2UgRFRN
TCBpcwppbnRlcm5hbCB0byB0aGUgWm9wZSBzeXN0ZW0sIGFuZCA/Pz9jb250cmFyeSB0byB0aGUg
d2ViIG5lZWRzIG5vIG1hcHBpbmc/Pz8uCkJlY2F1c2Ugb2YgdGhhdCB0aGVyZSBfaXMgbm8gcmVw
cmVzZW50YXRpb25fIGludm9sdmVkOiB3aXRoIERUTUwgeW91CnNjcmlwdCBab3BlIG9iamVjdHMg
ZGlyZWN0bHkuIFRodXMsIGluIERUTUwgb2JqZWN0MS5zdWJvYmplY3RfYSBpcwpjYWxsZWQgbGlr
ZToKCjxkdG1sLXZhciAib2JqZWN0MS5zdWJvYmplY3RfYSI+Cgoqbm90KiBsaWtlOgoKPGR0bWwt
dmFyICJvYmplY3QxL3N1Ym9iamVjdF9hIj4qLgoKVGhlIC8gc2VwYXJhdG9yIGRvZXMgbm90IHNl
cGFyYXRlCm9iamVjdHMgaW4gRFRNTCAob3IgdGhlIHVuZGVybHlpbmcgUHl0aG9uIGxhbmd1YWdl
KQoKSWYgeW91IGFyZSBjb25mdXNlZCBieSB0aGlzLCBsZXQncyBtYWtlIGl0IHdvcnNlLiBZb3Ug
c29tZXRpbWVzIF9kb18gdXNlClVSTCdzIGluIERUTUwuIFRoaXMgaXMgb25seSBpbiB0aGUgY2Fz
ZSB5b3UgdXNlIHRoZSB3ZWIgcHVibGlzaGluZwpjb21wb25lbnQgb2YgWm9wZSBhbmQgZG8gbm90
IHNjcmlwdCB0aGUgb2JqZWN0cyBkaXJlY3RseS4KRm9yIGV4YW1wbGU6Cgo8ZHRtbC1jYWxsICJS
RVNQT05TRS5yZWRpcmVjdCgnaHR0cDovL3d3dy5leGFtcGxlc2l0ZS5jb20vb2JqZWN0MScpIj4K
CndoZXJlIHlvdSBjYWxsIHRoZSBSRVNQT05TRSBvYmplY3QgdG8gbWFrZSB0aGUgd2ViYnJvd3Nl
ciBbPz9dIGRvCnNvbWV0aGluZyB0aHJvdWdodCB0aGUgd2ViLiBJbiBvdGhlciB3b3JkcywgdGhl
IFVSTCBpbiB0aGUgUkVTUE9OU0UKb2JqZWN0IGRvZXMgX25vdF8gaW52b2x2ZSBab3BlIGFjdGlv
bnMgZGlyZWN0bHkgW3Nob3VsZCBJIHdyaXRlCnNvbWV0aGluZyBoZXJlIGFib3V0IG1peGluZyBv
YmplY3QgcmVmZXJlbmNlcyBhbmQgVVJMcz8/IE9yIGxlYXZlIHRoYXQKdG8gdGhlIHByb3BlciBk
dG1sIHNlY3Rpb24/XQoKVGhlcmUgYXJlIG1hbnkgZmxhdm9ycyBvZiBab3BlIG9iamVjdHMuIElu
IHRoZSB0ZXJtaW5vbG9neSBvZiBvYmplY3QKb3JpZW50ZWQgcHJvZ3JhbW1pbmcgYWxsIG9iamVj
dHMgYXJlIGluc3RhbmNlcyBvZiBjbGFzc2VzLiBUaGVzZSBjbGFzc2VzCmFyZSBwcm9ncmFtbWVk
IHdpdGhpbiB0aGUgWm9wZSBmcmFtZXdvcmsuIFRoZSBvYmplY3RzIGxpdmUgaW4gdGhlIFpvcGUK
ZnJhbWV3b3JrLiBUaGV5IGNhbiBlaXRoZXIgYmUgcGFydCBvZiB0aGUgWm9wZSBpbnRlcm5hbHMg
b3IgYmUgWm9wZQpwcm9kdWN0cyBhbmQgaGF2ZSBhbGwgc29ydHMgb2YgZGlmZmVyZW50IGJlaGF2
aW9yLiBZb3UgY2FuIGV2ZW4gZGVmaW5lCnlvdXIgb3duIHRocm91Z2ggdGhlIHdlYi4gQ2xhc3Nl
cyBhcmUgbWFkZSBab3Bpc2ggYnkgc3ViY2xhc3NpbmcgYSBmZXcKYmFzaWMgWm9wZSBjbGFzc2Vz
IChmb3IgZXhhbXBsZTogU2ltcGxlSXRlbSBhbmQgQWNxdWlzaXRpb24pLiBCeQpzdWJjbGFzc2lu
ZyBvYmplY3RzIGluaGVyaXQgdGhlIHByb3BlcnRpZXMgb2YgdGhlIG9iamVjdHMgaXQgc3ViY2xh
c3Nlcwooc2VlIGEgc3RhbmRhcmQgdGV4dCBvbiBvYmplY3Qgb3JpZW50ZWQgcHJvZ3JhbW1pbmcs
IHByZWZlcmFibHkgUHl0aG9uCnByb2dyYW1taW5nIGlmIHlvdSB3YW50IHRvIGxlYXJuIG1vcmUp
LgoKWm9wZSBvYmplY3RzIGNhbiBlaXRoZXIgYmUgc2ltcGxlIG9yIGZvbGRlcmlzaC4gSWYgdGhl
eSBhcmUgZm9sZGVyaXNoCnRoZXkgc3ViY2xhc3MgdGhlIE9iamVjdE1hbmFnZXIgY2xhc3MgW2lz
IHRoaXMgdHJ1ZT8gbG9jYXRpb24gaW4gdGhlClpvcGUgaGllcmFyY2h5XS4gSWYgdGhleSBhcmUg
c2ltcGxlIHRoZXkgc3ViY2xhc3MgU2ltcGxlSXRlbS4gVGhlCmRpZmZlcmVuY2UgYmV0d2VlbiBm
b2xkZXJpc2ggYW5kIHNpbXBsZSBpdGVtcyBpcyB0aGF0IGZvbGRlcmlzaCBpdGVtcwptYXkgY29u
dGFpbiBvdGhlciBpdGVtcyBhbmQgc2ltcGxlIGNsYXNzZXMgbWF5IG5vdC4KClRoZSBvYmplY3Qg
c3R1ZmYgaXMgZXNzZW50aWFsIHRvIFpvcGUuIE1ha2Ugc3VyZSB5b3UgdW5kZXJzdGFuZCBpdApi
ZWZvcmUgeW91IGdvIHByb2dyYW1taW5nIGFueXRoaW5nIGV4dGVuc2l2ZSBpbiB0aGUgZnJhbWV3
b3JrLgpbbGluayB0byBhIG1vcmUgZXh0ZW5zaXZlIHNlY3Rpb25dCgoKMi4gRmFjdG9yaW5nIGFu
ZCBjb21wb3NpdGluZyBvYmplY3RzIHdpdGggSFRNTAoKWm9wZSBvYmplY3RzIGFyZSBhcmUgbm90
IGZpbGVzLiBUaGV5IGFyZSBqdXN0IHRoYXQsIG9iamVjdHMuClRoZXJlZm9yZSwgaXQgaXMgYWxz
byBwb3NzaWJsZSB0byBjdXQgdGhlbSB1cCBpbiBtZWFuaW5nZnVsIHBhcnRzLiBUaGlzCmlzIG5v
dCB1bmlxdWUgdG8gWm9wZSwgYmVjYXVzZSBtb3N0IHdlYiBwcm9ncmFtbWluZyBlbnZpcm9ubWVu
dHMgZW5hYmxlCnRoaXMuIFdoYXQgbWFrZXMgWm9wZSBzcGVjaWFsIGlzIHRoZSBhYmlsaXR5IHRv
IHNlcGFyYXRlIGNvbnRlbnQgKEhUTUwpCmFuZCBjb2RlIChEVE1MIHNjcmlwdHMsIFB5dGhvbiBl
eHRlcm5hbCBtZXRob2RzIGFuZCBab3BlIHByb2R1Y3RzKS4KTW9yZW92ZXIsIFpvcGUgZmVhdHVy
ZXMgbWFrZSBpdCBwb3NzaWJsZSB0byBkbyB0aGlzIGluIGEgdmVyeSBwb3dlcmZ1bAp3YXkuCgpB
IHZlcnkgc2ltcGxlIGV4YW1wbGUgY2FuIG1ha2UgdGhpcyBjbGVhci4gWW91IGhhdmUgYSBwYWdl
IHNpdGUgd2l0aCBhCnJlY3VycmluZyBoZWFkZXIgYW5kIGEgcmVjdXJyaW5nIGZvb3Rlci4gTW9y
ZW92ZXIsIHlvdSBoYXZlIGEgcGFnZQpoaWVyYXJjaHksIGFuZCB0aGUgaXRlbXMgdGhhdCBhcmUg
aGlnaGVyIGluIHRoZSBoaWVyYXJjaHkgc2hvdWxkIGJlY29tZQphY2Nlc3NpYmx5IHRocm91Z2gg
aHlwZXJsaW5rcy4gQSBwYWdlIHNjaGVtYXRpY2FsbHkgbG9va3MgbGlrZSB0aGlzOgoKPT09PT09
PT09PT09PT09PT09PT09CiAgICAgIGhlYWRlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KbGlua3M6
CnJvb3QgfCBsZXZlbDEgfCBsZXZlbDIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBUSVRMRQoK
TG90cyBvZiBpbnRlcmVzdGluZwpjb250ZW50CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KbGlua3M6
CnJvb3QgfCBsZXZlbDEgfCBsZXZlbDIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgIGZvb3Rl
cgo9PT09PT09PT09PT09PT09PT09PT0KCgpNYW55IHdlYiBwdWJsaXNoaW5nIG1lY2hhbmlzbXMg
aGF2ZSBhIHByb3Zpc2lvbiB0byBrZWVwIGEgc2l0ZQpzeW5jaHJvbml6ZWQ6IHRoZXkgdXNlIHRl
bXBsYXRlcy4gRm9yIGV4YW1wbGUsIHRoZXJlIGlzIGEgdGVtcGxhdGUgaW4Kd2hpY2ggeW91IG1h
eSBvbmx5IGVkaXQgdGhlIHRpdGxlLCB0aGUgbGlua3MgYW5kIHRoZSBjb250ZW50LiBZb3UgY291
bGQKZG8gc29tZXRoaW5nIGxpa2UgdGhhdCBpbiBab3BlIGFzIHdlbGwuIElmIHlvdSB3ZXJlIHRv
IG1ha2UgYSBEVE1MCkRvY3VtZW50IGNhbGxlZCB0ZW1wbGF0ZS5kd3QsIHdpdGggc2VjdGlvbnMg
YXMgYWJvdmUsIHlvdSBjb3VsZCBlZGl0Cml0IGluIGEgd2ViIG1hbmFnZW1lbnQgdG9vbCBsaWtl
IERyZWFtd2VhdmVyLCB1c2luZyBmdHAgYWNjZXNzIHRvIFpvcGUuCkluIHRoaXMgY2FzZSB0aGVy
ZSB3b3VsZCBiZSBubyBkaWZmZXJlbmNlIGJldHdlZW4gbWFuYWdpbmcgYSBub3JtYWwKd2Vic2l0
ZSBvciBab3BlLi4uIGFuZCB5b3Ugd291bGQgYWxzbyBtaXNzIG1hbnkgb2YgdGhlIGFkZGl0aW9u
YWwgZmVhdHVyZXMKb2YgWm9wZS4KClRoZSBab3BlIHdheSBvZiBkb2luZyB0aGluZ3MgaXMgdG8g
dGFrZSBvdXQgdGhlIGhlYWRlciwgdGhlIGZvb3RlciwgYW5kCnRoZSBsaW5rcyBzZWN0aW9uIGFu
ZCB0byBtYWtlIHRoZXNlIGludG8gc2VwYXJhdGUgRFRNTCBNZXRob2RzLiBUaGlzIGlzCmNhbGxl
ZCBmYWN0b3Jpbmcgb3V0IGNvbW1vbiBlbGVtZW50cyBvZiBhIHNpdGUuIFRodXMsIHlvdSBlbmQg
dXAgd2l0aCBhClpvcGUgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG9iamVjdHM6CgpzdGFuZGFy
ZF9oZWFkZXIgPT4gRFRNTCBNZXRob2QKc3RhbmRhcmRfZm9vdGVyID0+IERUTUwgTWV0aG9kCmhp
ZXJhcmNoeV9saW5rcyA9PiBEVE1MIE1ldGhvZApjb250ZW50IGRvY3VtZW50ID0+IERUTUwgRG9j
dW1lbnQgKGFzIG1hbnkgYXMgeW91IG5lZWQpCgp0aGUgY29udGVudCBkb2N1bWVudCBsb29rcyAo
c2NoZW1hdGljYWxseSkgbGlrZSB0aGlzOgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQo8
ZHRtbC12YXIgc3RhbmRhcmRfaGVhZGVyPgo8ZHRtbC12YXIgaGllcmFyY2h5X2xpbmtzPgpUSVRM
RQoKQ29udGVudAoKPGR0bWwtdmFyIGhpZXJhcmNoeV9saW5rcz4KPGR0bWwtdmFyIHN0YW5kYXJk
X2Zvb3Rlcj4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKWyogSW4gZmFjdCB3ZSBjb3Vs
ZCBnbyBmdXJ0aGVyIGJ5IGZhY3RvcmluZyBvdXQgdGhlIHRpdGxlIGFuZApjb21wb3NpdGluZyB0
aGUgc3RhbmRhcmRfaGVhZGVyIG1ldGhvZCBvZiBhIGRlZmF1bHRfaGVhZGVyLCBhCnN0eWxlX3No
ZWV0IG1ldGhvZCwgYW5kIHRoZSBoaWVyYXJjaHlfbGlua3MuIEZvciBkZW1vbnN0cmF0aW9uIHB1
cnBvc2VzCnRoaXMgc2ltcGxlIGV4YW1wbGUgd2lsbCBtYWtlcyB0aGluZ3MgY2xlYXIuXQoKW2V4
YW1wbGVzIGZvbGxvd10KClN0aWxsIChleGNlcHQgZm9yIHRoZSBoaWVyYXJjaHkgbGlua3MgW21h
eWJlIGludHJvZHVjZSB0aGVzZSBsYXRlcj9dLAp0aGlzIGlzIHNvbWV0aGluZyB0aGF0J3MgY29t
bW9uIGluIHdlYiBhcHBsaWNhdGlvbiBzZXJ2ZXJzIGFuZCBvbmUgb2YKdGhlIG1haW4gcmVhc29u
cyB0byB1c2Ugc29tZXRoaW5nIGxpa2UgYSBzdHJ1Y3R1cmVkIGZyYW1ld29yayBhdCBhbGwuIEJ1
dApab3BlIEFjcXVpc2l0aW9uIG1ha2VzIHRoaXMgbXVjaCBtb3JlIGludGVyZXN0aW5nLiBBY3F1
aXNpdGlvbiBbbGlua3NdCmlzIHRoZSBab3BlIHdheSBvZiBjaGFuZ2luZyBjb250ZXh0IGluIGEg
bWFueSB3YXlzLiBJdCBkb2VzIHNvIGJ5CmVuYWJsaW5nIG9iamVjdHMgdG8gZHluYW1pY2FsbHkg
Z2V0IChhY3F1aXJlKSBwcm9wZXJ0aWVzLiBQcm9wZXJ0aWVzIG1heQpiZSBvdGhlciBvYmplY3Rz
IG9yIHRoZWlyIHByb3BlcnRpZXMuIEl0IGlzIGxpa2Ugb2JqZWN0IGluaGVyaXRhbmNlLCBidXQK
bXVjaCBtb3JlIGR5bmFtaWMuIFVuZm9ydHVuYXRlbHksIGl0cyB2ZXJ5IHBvd2VyIGFsc28gbWFr
ZXMgaXQgaGFyZCB0bwpncmFzcCBhdCBmaXJzdCwgYnV0IHRoZSBvbmx5IHdheSB0byBpdCBpcyB0
byB1c2UgaXQuIFNvIG9uIHRvIGFuCmV4YW1wbGUuCgpMZXQgdXMgYXNzdW1lIHlvdXIgc2l0ZSdz
IHBhZ2VzIHNob3VsZCBsb29rIG1vc3RseSB0aGUgc2FtZSwgYnV0IGl0cwpiYWNrZ3JvdW5kIHNo
b3VsZCBiZSBibHVlIGF0IHRoZSB0b3AgcGFnZXMsIHB1cnBsZSBpbiB0aGUgZmlyc3Qgc2VjdGlv
bgphbmQgZ3JlZW4gaW4gdGhlIHNlY29uZCBzZWN0aW9uLiBMaWtlIHNvICgtLS0gaXMgZG9jdW1l
bnRzLCBjb2xvciBpbgpicmFja2V0cyk6Cgpyb290IChibHVlKQogIC0tLQogIC0tLQogIC0tLQog
IHNlY3Rpb24xKHB1cnBsZSkKICAgICAtLS0KICAgICAtLS0KICAgICAtLS0KICAgICBzdWJzZWN0
aW9uMTEKICAgICAgIC0tLQogICAgICAgLS0tCiAgc2VjdGlvbjIoZ3JlZW4pCiAgICAtLS0KICAg
IC0tLQogICAgLS0tCgpUaGUgbWV0aG9kcyB3ZSBtZW50aW9uZWQgYWJvdmUgYXJlIGluIHRoZSBy
b290LgoKMS4gV2UgY2hhbmdlZCB0aGUgaGVhZGVyIG1ldGhvZCB0byBpbmNsdWRlIGEgbGluZSA8
Ym9keSBiZ2NvbG9yPSI8ZHRtbC12YXIKY29sb3I+Ij4uCjIuIEluIHRoZSAncHJvcGVydGllcycg
dGFiIG9mIHRoZSBmb2xkZXJzIChyb290LCBzZWN0aW9uMSwgc2VjdGlvbjIpIHdlCmFkZCBhIHBy
b3BlcnR5ICdjb2xvcicgd2l0aCB0aGUgdmFsdWVzIGJsdWUsIHB1cnBsZSBhbmQgZ3JlZW4KcmVz
cGVjdGl2ZWx5LgozLiBUaGF0J3MgaXQuCgpUaGlzIGlzIGlzIGFsbCB0aGVyZSBpcyB0byBjaGFu
Z2luZyB0aGUgYmFja2dyb3VuZCBjb2xvciBpbiB0aGUgc2VjdGlvbnMKbGlrZSB3ZSBwcm9wb3Nl
ZC4gVGhlIGNvbG9yIHJlbWFpbnMgdGhlIHNhbWUgaW4gdGhlIHN1YnNlY3Rpb24sIGhvd2V2ZXIs
CmJlY2F1c2UgaXQgZG9lcyBub3QgaGF2ZSBhIGNvbG9yIHByb3BlcnR5IG9mIGl0cyBvd24gYW5k
IGFjcXVpcmVzIGl0CmZyb20gdGhlIGZvbGRlciBhYm92ZSBpdC4KCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWkRQIG1haWxsaXN0ICAtICBaRFBAem9w
ZS5vcmcKaHR0cDovL2xpc3RzLnpvcGUub3JnL21haWxtYW4vbGlzdGluZm8vemRwCgoKCg==

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

MWQwCjwgCjhjNwo8IHJlbGF0ZXMgdG8gWm9wZXMgY2hhbmdpbmcgY29udGV4dHMuIFRoZXJlIGFy
ZSBtYW55IHBhcnRzIHRoYXQKLS0tCj4gcmVsYXRlcyB0byBab3BlJ3MgY2hhbmdpbmcgY29udGV4
dHMuIFRoZXJlIGFyZSBtYW55IHBhcnRzIHRoYXQKMTJjMTEKPCBzZWN1cml0eSBtb2RlbC4gVGhl
eSBhbGwgbWF5IGJlIHNjcmlwdGVkIGJ5IERUTUwgKG9yIGluZGVlZCBweXRob24sIGJ1dAotLS0K
PiBzZWN1cml0eSBtb2RlbC4gVGhleSBhbGwgbWF5IGJlIHNjcmlwdGVkIGJ5IERUTUwgKG9yIGlu
ZGVlZCBQeXRob24sIGJ1dAoyMWMyMAo8IChweXRob24pIG9iamVjdHMgdG8gdGhlIHdlYi4gSW4g
Wm9wZSB3aGF0IGxvb2tzIGxpa2UgYSBub3JtYWwgd2Vic2l0ZSBpbgotLS0KPiAoUHl0aG9uKSBv
YmplY3RzIHRvIHRoZSB3ZWIuIEluIFpvcGUgd2hhdCBsb29rcyBsaWtlIGEgbm9ybWFsIHdlYnNp
dGUgaW4KMzBjMjkKPCByZXByZXNlbnRzIFpvcGUgb2JqZWN0IHRocm91Z2ggRlRQLCBXZWJEQVYg
YW5kIHRoZSBNZWR1c2EgTW9uaXRvcgotLS0KPiByZXByZXNlbnQgWm9wZSBvYmplY3RzIHRocm91
Z2ggRlRQLCBXZWJEQVYgYW5kIHRoZSBNZWR1c2EgTW9uaXRvcgozM2MzMgo8IHB1Ymxpc2hpbmcg
Wm9wZSB2aWEgYSBmaWxlc3lzdGVtLiBGb3Igc2FrZSBvZiBzaW1wbGljaXR5LCB3ZSdsbCBjb25m
aW5lCi0tLQo+IHB1Ymxpc2hpbmcgWm9wZSB2aWEgYSBmaWxlc3lzdGVtLiBGb3IgdGhlIHNha2Ug
b2Ygc2ltcGxpY2l0eSwgd2UnbGwgY29uZmluZQozNiwzN2MzNSwzNgo8IFRoZSByZXByZXNlbnRh
dGlvbiB3b3JrcyB2aWEgYSBtYXBwaW5nIG9mIGFuIHB5dGhvbiBvYmplY3QgaGllcmFyY2h5IHRv
CjwgYSBVUkwuIEZvciBleGFtcGxlIGFuIG9iamVjdCBoaWVyYXJjaHkgb2YKLS0tCj4gVGhlIHJl
cHJlc2VudGF0aW9uIHdvcmtzIHZpYSBhIG1hcHBpbmcgb2YgYSBQeXRob24gb2JqZWN0IGhpZXJh
cmNoeSB0bwo+IGEgVVJMLiBGb3IgZXhhbXBsZSwgYW4gb2JqZWN0IGhpZXJhcmNoeSBvZgo0NSw0
NmM0NCw0NQo8IEluIERUTUwsIGhvd2V2ZXIsIHRoZXJlIGlzIG5vdCBtYXBwaW5nIHRvIGEgVVJM
LCBiZWNhdXNlIERUTUwgaXMKPCBpbnRlcm5hbCB0byB0aGUgWm9wZSBzeXN0ZW0sIGFuZCBjb250
cmFyeSB0byB0aGUgd2ViIG5lZWRzIG5vIG1hcHBpbmcuCi0tLQo+IEluIERUTUwsIGhvd2V2ZXIs
IHRoZXJlIGlzIG5vIG1hcHBpbmcgdG8gYSBVUkwsIGJlY2F1c2UgRFRNTCBpcwo+IGludGVybmFs
IHRvIHRoZSBab3BlIHN5c3RlbSwgYW5kID8/P2NvbnRyYXJ5IHRvIHRoZSB3ZWIgbmVlZHMgbm8g
bWFwcGluZz8/Py4KNDljNDgKPCBjYWxsZWQgbGlrZTo6Ci0tLQo+IGNhbGxlZCBsaWtlOgo1OGM1
Nwo8IG9iamVjdHMgaW4gRFRNTCAob3IgdGhlIHVuZGVybHlpbmcgcHl0aG9uIGxhbmd1YWdlKQot
LS0KPiBvYmplY3RzIGluIERUTUwgKG9yIHRoZSB1bmRlcmx5aW5nIFB5dGhvbiBsYW5ndWFnZSkK
ODFjODAKPCAoc2VlIGEgc3RhbmRhcmQgdGV4dCBvbiBvYmplY3Qgb3JpZW50ZWQgcHJvZ3JhbW1p
bmcsIHByZWZlcmFibHkgcHl0aG9uCi0tLQo+IChzZWUgYSBzdGFuZGFyZCB0ZXh0IG9uIG9iamVj
dCBvcmllbnRlZCBwcm9ncmFtbWluZywgcHJlZmVyYWJseSBQeXRob24KOTVjOTQKPCAyLiBmYWN0
b3JpbmcgYW5kIGNvbXBvc2l0aW5nIG9iamVjdHMgd2l0aCBodG1sCi0tLQo+IDIuIEZhY3Rvcmlu
ZyBhbmQgY29tcG9zaXRpbmcgb2JqZWN0cyB3aXRoIEhUTUwKOTdjOTYKPCBCZWNhdXNlIFpvcGUg
b2JqZWN0cyBhcmUgYXJlIG5vdCBmaWxlcy4gVGhleSBhcmUganVzdCB0aGF0LCBvYmplY3RzLgot
LS0KPiBab3BlIG9iamVjdHMgYXJlIGFyZSBub3QgZmlsZXMuIFRoZXkgYXJlIGp1c3QgdGhhdCwg
b2JqZWN0cy4KMTAxLDEwMmMxMDAsMTAxCjwgYW5kIGNvZGUgKERUTUwgc2NyaXB0cywgcHl0aG9u
IGV4dGVybmFsIG1ldGhvZHMgYW5kIFpvcGUgcHJvZHVjdHMpLgo8IE1vcmVvdmVyLCBab3BlIGZl
YXR1cmVzIG1ha2UgaXQgcG9zc2libHkgdG8gZG8gdGhpcyBpbiBhIHZlcnkgcG93ZXJmdWwKLS0t
Cj4gYW5kIGNvZGUgKERUTUwgc2NyaXB0cywgUHl0aG9uIGV4dGVybmFsIG1ldGhvZHMgYW5kIFpv
cGUgcHJvZHVjdHMpLgo+IE1vcmVvdmVyLCBab3BlIGZlYXR1cmVzIG1ha2UgaXQgcG9zc2libGUg
dG8gZG8gdGhpcyBpbiBhIHZlcnkgcG93ZXJmdWwKMTI5YzEyOAo8IE1hbnkgd2ViIHB1Ymxpc2hp
bmcgbWVjaGFuaXNtIGhhdmUgYSBwcm92aXNpb24gdG8ga2VlcCBhIHNpdGUKLS0tCj4gTWFueSB3
ZWIgcHVibGlzaGluZyBtZWNoYW5pc21zIGhhdmUgYSBwcm92aXNpb24gdG8ga2VlcCBhIHNpdGUK
MTM2YzEzNQo8IHdlYnNpdGUgb3IgWm9wZS4uLiBhbmQgeW91IHdvdWxkIGFsc28gbWlzcyBtYW55
IG9mIHRoZSBhZGRpdGlvbiBmZWF0dXJlcwotLS0KPiB3ZWJzaXRlIG9yIFpvcGUuLi4gYW5kIHlv
dSB3b3VsZCBhbHNvIG1pc3MgbWFueSBvZiB0aGUgYWRkaXRpb25hbCBmZWF0dXJlcwoxNzZjMTc1
CjwgbXVjaCBtb3JlIGR5bmFtaWMuIFVuZm9ydHVuYXRlbHksIGl0J3MgdmVyeSBwb3dlciBhbHNv
IG1ha2VzIGl0IGhhcmQgdG8KLS0tCj4gbXVjaCBtb3JlIGR5bmFtaWMuIFVuZm9ydHVuYXRlbHks
IGl0cyB2ZXJ5IHBvd2VyIGFsc28gbWFrZXMgaXQgaGFyZCB0bwoyMDhjMjA3CjwgMy4gVGhhdCcg
aXQuCi0tLQo+IDMuIFRoYXQncyBpdC4K

--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD--