[Zope-CMF] Re: Zope-CMF digest, Vol 1 #803 - 7 msgs

»Æ¶¬ huangdong@hichina.com
Sun, 30 Sep 2001 09:11:32 +0800


DQotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tIA0KRnJvbTogPHpvcGUtY21mLXJlcXVlc3RA
em9wZS5vcmc+DQpUbzogPHpvcGUtY21mQHpvcGUub3JnPg0KU2VudDogU3VuZGF5LCBTZXB0ZW1i
ZXIgMzAsIDIwMDEgMTI6MDEgQU0NClN1YmplY3Q6IFpvcGUtQ01GIGRpZ2VzdCwgVm9sIDEgIzgw
MyAtIDcgbXNncw0KDQoNCj4gU2VuZCBab3BlLUNNRiBtYWlsaW5nIGxpc3Qgc3VibWlzc2lvbnMg
dG8NCj4gem9wZS1jbWZAem9wZS5vcmcNCj4gDQo+IFRvIHN1YnNjcmliZSBvciB1bnN1YnNjcmli
ZSB2aWEgdGhlIFdvcmxkIFdpZGUgV2ViLCB2aXNpdA0KPiBodHRwOi8vbGlzdHMuem9wZS5vcmcv
bWFpbG1hbi9saXN0aW5mby96b3BlLWNtZg0KPiBvciwgdmlhIGVtYWlsLCBzZW5kIGEgbWVzc2Fn
ZSB3aXRoIHN1YmplY3Qgb3IgYm9keSAnaGVscCcgdG8NCj4gem9wZS1jbWYtcmVxdWVzdEB6b3Bl
Lm9yZw0KPiANCj4gWW91IGNhbiByZWFjaCB0aGUgcGVyc29uIG1hbmFnaW5nIHRoZSBsaXN0IGF0
DQo+IHpvcGUtY21mLWFkbWluQHpvcGUub3JnDQo+IA0KPiBXaGVuIHJlcGx5aW5nLCBwbGVhc2Ug
ZWRpdCB5b3VyIFN1YmplY3QgbGluZSBzbyBpdCBpcyBtb3JlIHNwZWNpZmljDQo+IHRoYW4gIlJl
OiBDb250ZW50cyBvZiBab3BlLUNNRiBkaWdlc3QuLi4iDQo+IA0KPiANCj4gVG9kYXkncyBUb3Bp
Y3M6DQo+IA0KPiAgICAxLiBSZTogcHJpdmF0ZSBwb3J0YWw/IChCaWxsIFNlaXR6KQ0KPiAgICAy
LiBSZTogSTE4biAoSm9hY2hpbSBXZXJuZXIpDQo+ICAgIDMuIG5lZWQgYWR2aWNlLCB6ZGlzY3Vz
c2lvbnMsIGJsYXJrLCBzcXVpc2gsIHN3aXNoLCBjbWYgKEJyYWQgQ2xlbWVudHMpDQo+ICAgIDQu
IFJlOiBJMThuIChHaXR0ZSBXYW5nZSkNCj4gICAgNS4gV29ya2Zsb3cgYXdhcmUgb2JqZWN0cyAo
RmxvcmVudCBHdWlsbGF1bWUpDQo+ICAgIDYuIENNRlBvcnRhbCBhbmQgWkNhdGFsb2dzLi4uIChK
b3NlZiBBbGJlcnQgTWVpbGUpDQo+ICAgIDcuIFJlOiBuZWVkIGFkdmljZSwgemRpc2N1c3Npb25z
LCBibGFyaywgc3F1aXNoLCBzd2lzaCwgY21mIChUb20gSG9mZm1hbikNCj4gDQo+IC0tX18tLV9f
LS0NCj4gDQo+IE1lc3NhZ2U6IDENCj4gRGF0ZTogRnJpLCAyOCBTZXAgMjAwMSAwOTowNTo0MCAt
MDcwMCAoUERUKQ0KPiBGcm9tOiBCaWxsIFNlaXR6IDxmbHV4ZW50QHlhaG9vLmNvbT4NCj4gU3Vi
amVjdDogUmU6IFtab3BlLUNNRl0gcHJpdmF0ZSBwb3J0YWw/DQo+IFRvOiBab3BlLUNNRkB6b3Bl
Lm9yZw0KPiANCj4gZnJvbSBiZWtlbGxlciAoZG9lcyB0aGlzIHNvdW5kIGxpa2UgdGhlIGNvcnJl
Y3QNCj4gYXBwcm9hY2g/KS4uLi4NCj4gDQo+IDEuIERlbnkgcGVybWlzc2lvbiAiYWRkIHBvcnRh
bCBtZW1iZXJzIiB0byBBbm9ueW11cy4NCj4gKG5vIG1vcmUgam9pbikNCj4gMi4gR2l2ZSBwZXJt
aXNzaW9ucyAiQWNjZXNzIGNvbnRlbnRzIGluZm9ybWF0aW9uIiBhbmQNCj4gInZpZXciIHRvIEFu
b255bXVzIG9uIHRoZSBzaXRlIGxldmVsLiAoPSBsb2dpbiBzY3JlZW4pDQo+IDMuIERlbnkgdGhl
IHR3byBwZXJtaXNzaW9ucyB0byBBbm9ueW11cyBpbiBhbGwNCj4gdG9wbGV2ZWwgZm9sZGVycyBv
ZiB0aGUgc2l0ZS4gKEFub255bXVzIG9ubHkgc2Vlcw0KPiB0aXRlbCBhbmQgbGVhZCBvZiB0aGUg
bmV3cykNCj4gDQo+IEJVVDogTmV3IGNvbnRlbnRzIGlzIGFkZGVkIGluIHRoZXNlIGZvbGRlcnMg
d2l0aCB0aGUNCj4gdmlldy1wZXJtaXNzaW9uIGZvciBBbm9ueW11cyBzZXQgYXV0b21hdGljYWxs
eSEgWW91DQo+IGhhdmUgdG8gcmVtb3ZlIGl0IGZvciBldmVyeSBkb2N1bWVudCwgbmV3cyBpdGVt
IGV0Yy4uLg0KPiANCj4gRG9lcyBhbnlib2R5IGtub3cgaG93IHRvIGNoYW5nZSB0aGUgZGVmYXVs
dCBwZXJtaXNzaW9uDQo+IHNldHRpbmcgb2YgdGhlIENNRiBwcm90YWwtdHlwZXM/Pz8NCj4gDQo+
IA0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fDQo+IERvIFlvdSBZYWhvbyE/DQo+IExpc3RlbiB0byB5b3VyIFlhaG9vISBNYWlsIG1l
c3NhZ2VzIGZyb20gYW55IHBob25lLg0KPiBodHRwOi8vcGhvbmUueWFob28uY29tDQo+IA0KPiAN
Cj4gLS1fXy0tX18tLQ0KPiANCj4gTWVzc2FnZTogMg0KPiBGcm9tOiAiSm9hY2hpbSBXZXJuZXIi
IDxqb2VAaXV2ZW5vLW5ldC5kZT4NCj4gVG86ICJHaXR0ZSBXYW5nZSIgPGdpdHRlQGJhYnl0dXgu
ZGs+DQo+IENjOiA8em9wZS1jbWZAem9wZS5vcmc+DQo+IFN1YmplY3Q6IFJlOiBbWm9wZS1DTUZd
IEkxOG4NCj4gRGF0ZTogRnJpLCAyOCBTZXAgMjAwMSAxODoyMzo0MiArMDIwMA0KPiBPcmdhbml6
YXRpb246IGl1dmVubyBBRw0KPiANCj4gPiBCdXQgdGhlIGFjdGlvbiBib3ggZS5nLiBpc24ndCBh
bnkgaGFyZGNvZGVkIGR0bWwgZG9jIC0gaXQncyBjb21taW5nIGZyb20NCj4gPiB0aGUgZnMuDQo+
ID4gU28gaG93IHdvdWxkIG9uZSB0cmFuc2xhdGUgdGhlc2UgYD8/Pw0KPiANCj4gTm90IHJlYWxs
eS4gVGhlcmUgaXMgYSBza2luIGZpbGUgY2FsbGVkICJhY3Rpb25zX2JveCIgdGhhdCB5b3UgY2Fu
IGN1c3RvbWl6ZQ0KPiB3aXRob3V0IGEgcHJvYmxlbS4gSnVzdCBkbyB0aGUgdXN1YWwgdGhpbmdz
IChjbGljayBvbiB0aGUgZmlsZXN5c3RlbSB2aWV3IG9mDQo+IHRoZSBmaWxlIGFuZCBjaG9vc2Ug
ImN1c3RvbWl6ZSIpIGFuZCB0aGFuIGRvIHRoZSBmb2xsb3dpbmc6IFdoZW5ldmVyIHRoZXJlDQo+
IGlzIGEgPGR0bWwtdmFyIG5hbWU+IChvciBzaW1pbGFyIHZhcmlhYmxlIGNhbGxzKSwgeW91IHJl
cGxhY2UgaXQgYnkNCj4gDQo+ICA8ZHRtbC1maXNoIGRzdD1kYSBsYWJlbD0ibmFtZSI+DQo+IA0K
PiBvciBzaW1pbGFyLiBGb3IgZHN0ICh0aGUgImRlc3RpbmF0aW9uIGxhbmd1YWdlIikgeW91IGNh
biBlaXRoZXIgaGFyZC1jb2RlDQo+IERhbmlzaCAoZHN0PWRhKSBvciB1c2UgYSB2YXJpYWJsZSBs
aWtlIGRzdD0iSFRUUF9BQ0NFUFRfTEFOR1VBR0UiLg0KPiANCj4gTm9ybWFsbHkgdGhlIGxhbmd1
YWdlIGNob2ljZSBzaG91bGQgd29yayBhdXRvbWF0aWNhbGx5LCB1c2luZw0KPiBIVFRQX0FDQ0VQ
VF9MQU5HVUFHRS4gQnV0IEkgZGlkbid0IGdldCBpdCB0byB3b3JrIHdpdGggQ01GIG9uIG15IHRl
c3QNCj4gc2VydmVyLiBJZiBpdCB3b3JrcyBmb3IgeW91LCB5b3UgY2FuIHNraXAgdGhlICJkc3Q9
Li4uIiBwYXJ0Lg0KPiANCj4gV2hhdCBoYXBwZW5zIGlzIHRoYXQgaWYgdGhlICJuYW1lIiBvZiB0
aGUgYWN0aW9uIGlzICJQcmVmZXJlbmNlcyIsIFpCYWJlbA0KPiBsb29rcyB1cCB0aGUgbGFiZWwg
IlByZWZlcmVuY2VzIiBpbiB0aGUgQmFiZWxUb3dlciAod2hlcmUgeW91IHNob3VsZCBwcm92aWRl
DQo+IGEgRGFuaXNoIHRyYW5zbGF0aW9uIG9mIGNvdXJzZSkgYW5kIHJlcGxhY2VzIGl0IGJ5IHRo
ZSB0cmFuc2xhdGlvbi4NCj4gDQo+IFRoZSBjb29sIHRoaW5nIGlzIHRoYXQgeW91IHdpbGwgTk9U
IGhhdmUgdG8gdHJhbnNsYXRlIHRoZSBsYWJlbHMgaW4gdGhlDQo+IEFjdGlvbnMgc2V0dGluZ3Mg
b2YgdGhlIENNRi4gVGhlIHdob2xlIHN5c3RlbSBjYW4gdXNlIEVuZ2xpc2ggaW50ZXJuYWxseS4N
Cj4gSnVzdCBmb3IgdGhlIGRpc3BsYXksIHRoZSBwaHJhc2VzIGFuZCBsYWJlbHMgYXJlIHRyYW5z
bGF0ZWQgLi4uDQo+IA0KPiBDaGVlcnMNCj4gDQo+IEpvYWNoaW0uDQo+IA0KPiANCj4gDQo+IA0K
PiAtLV9fLS1fXy0tDQo+IA0KPiBNZXNzYWdlOiAzDQo+IEZyb206ICJCcmFkIENsZW1lbnRzIiA8
YmtjQG11cmt3b3Jrcy5jb20+DQo+IE9yZ2FuaXphdGlvbjogTXVya1dvcmtzLCBJbmNvcnBvcmF0
ZWQuDQo+IFRvOiB6b3BlLWNtZkB6b3BlLm9yZw0KPiBEYXRlOiBGcmksIDI4IFNlcCAyMDAxIDEz
OjIxOjU2IC0wNDAwDQo+IFJlcGx5LXRvOiBia2NAbXVya3dvcmtzLmNvbQ0KPiBTdWJqZWN0OiBb
Wm9wZS1DTUZdIG5lZWQgYWR2aWNlLCB6ZGlzY3Vzc2lvbnMsIGJsYXJrLCBzcXVpc2gsIHN3aXNo
LCBjbWYNCj4gDQo+IFNvbWV0aW1lIGJlZm9yZSBPY3QgMSAodGhhdCdzIE1vbmRheSkgSSBuZWVk
IGEgc29sdXRpb24gYmVjYXVzZSBvdXIgQWQgY29tZXMgb3V0IGluIA0KPiB0aGUgcGFwZXIuLg0K
PiANCj4gSSdkIGxpa2UgdG8gYWRkIGEgQ01GIHNlY3Rpb24gdG8gb3VyIHdlYiBzaXRlLi4gRnVy
dGhlciwgSSdkIGxpa2UgZGlzY3Vzc2lvbiBmb3J1bXMgdGhhdCBhcmUgDQo+IHVzYWJsZSB3aXRo
aW4gdGhlIENNRiBieSBub24tYW5vbnltb3VzIGFuZCBhbm9ueW1vdXMgdXNlcnMuDQo+IA0KPiBi
bGFyayBzZWVtcyB0byBmaXQgdGhpcywgYnV0IHRoZSBwcm9taXNlIG9mIHN3aXNoZG90IGlzIHRv
byBlbnRpY2luZyB0byBpZ25vcmUuIFRoZSANCj4gc3dpc2hkb3QgY3ZzIGNvbnRlbnRzIGFyZSBw
cmV0dHkgb2xkLg0KPiANCj4gSSBoYWQgdGhvdWdodCB0aGF0IHRoZXJlIHdhcyBhIHpkaXNjdXNz
aW9ucyB0aGF0IHdvcmtzIHVuZGVyIENNRiwgYnV0IEkgY2FuJ3QgZmluZCBpdC4NCj4gDQo+IEkn
ZCBsaWtlIHJlY29tbWVuZGF0aW9ucyBvbiB3aGljaCB3YXkgdG8gZ28sIGFuZCB3aHkuIEkgcmVh
bGx5IGRvbid0IHdhbnQgYSB3ZWJsb2csIA0KPiBleGFjdGx5LiBNb3JlIGxpa2UgbmV3c2dyb3Vw
IGZvcnVtcy4gQmVpbmcgYWJsZSB0byBnZXQgZW1haWwgbm90aWZpY2F0aW9uIG9mIHVwZGF0ZXMg
dG8gDQo+IHRoZSBmb3J1bSwgZXZlbiBjcm9zcyBsaW5raW5nIHRvIG5ld3Nncm91cHMgd291bGQg
YmUgZ3JlYXQuDQo+IA0KPiBXaHkgZG9uJ3QgSSBqdXN0IHJ1biBuZXdzZ3JvdXBzPyBXZWxsLCB0
aGVzZSB1c2VycyBhcmVuJ3QgcmVhZHkgZm9yIHRoYXQgeWV0LiA6LSgNCj4gDQo+IERvIEkganVz
dCB3YWl0IGZvciBzd2lzaGRvdCwgb3Igd2hhdD8NCj4gDQo+IA0KPiBCcmFkIENsZW1lbnRzLCAg
ICAgICAgICAgICAgICBia2NAbXVya3dvcmtzLmNvbSAgICgzMTUpMjY4LTEwMDANCj4gaHR0cDov
L3d3dy5tdXJrd29ya3MuY29tICAgICAgICAgICAgICAgICAgICAgICAgICAoMzE1KTI2OC05ODEy
IEZheA0KPiBuZXRtZWV0aW5nOiBpbHM6Ly9pbHMubXVya3dvcmtzLmNvbSAgICAgICAgICAgICAg
IEFPTC1JTTogQktDbGVtZW50cw0KPiANCj4gDQo+IA0KPiAtLV9fLS1fXy0tDQo+IA0KPiBNZXNz
YWdlOiA0DQo+IERhdGU6IEZyaSwgMjggU2VwIDIwMDEgMTk6NDM6MDUgKzAyMDANCj4gVG86ICJK
b2FjaGltIFdlcm5lciIgPGpvZUBpdXZlbm8tbmV0LmRlPg0KPiBGcm9tOiBHaXR0ZSBXYW5nZSA8
Z2l0dGVAYmFieXR1eC5kaz4NCj4gU3ViamVjdDogUmU6IFtab3BlLUNNRl0gSTE4bg0KPiBDYzog
em9wZS1jbWZAem9wZS5vcmcNCj4gDQo+IEF0IDE4OjIzIDI4LTA5LTIwMDEgKzAyMDAsIHlvdSB3
cm90ZToNCj4gPj4gQnV0IHRoZSBhY3Rpb24gYm94IGUuZy4gaXNuJ3QgYW55IGhhcmRjb2RlZCBk
dG1sIGRvYyAtIGl0J3MgY29tbWluZyBmcm9tDQo+ID4+IHRoZSBmcy4NCj4gPj4gU28gaG93IHdv
dWxkIG9uZSB0cmFuc2xhdGUgdGhlc2UgYD8/Pw0KPiA+DQo+ID5Ob3QgcmVhbGx5LiBUaGVyZSBp
cyBhIHNraW4gZmlsZSBjYWxsZWQgImFjdGlvbnNfYm94IiB0aGF0IHlvdSBjYW4gY3VzdG9taXpl
DQo+ID53aXRob3V0IGEgcHJvYmxlbS4gSnVzdCBkbyB0aGUgdXN1YWwgdGhpbmdzIChjbGljayBv
biB0aGUgZmlsZXN5c3RlbSB2aWV3IG9mDQo+ID50aGUgZmlsZSBhbmQgY2hvb3NlICJjdXN0b21p
emUiKSBhbmQgdGhhbiBkbyB0aGUgZm9sbG93aW5nOiBXaGVuZXZlciB0aGVyZQ0KPiA+aXMgYSA8
ZHRtbC12YXIgbmFtZT4gKG9yIHNpbWlsYXIgdmFyaWFibGUgY2FsbHMpLCB5b3UgcmVwbGFjZSBp
dCBieQ0KPiA+DQo+ID4gPGR0bWwtZmlzaCBkc3Q9ZGEgbGFiZWw9Im5hbWUiPg0KPiA+DQo+ID5v
ciBzaW1pbGFyLiBGb3IgZHN0ICh0aGUgImRlc3RpbmF0aW9uIGxhbmd1YWdlIikgeW91IGNhbiBl
aXRoZXIgaGFyZC1jb2RlDQo+ID5EYW5pc2ggKGRzdD1kYSkgb3IgdXNlIGEgdmFyaWFibGUgbGlr
ZSBkc3Q9IkhUVFBfQUNDRVBUX0xBTkdVQUdFIi4NCj4gDQo+IFRoYW5rIHlvdSBKb2FjaGltIGZv
ciB0aGF0IGxpdHRsZSB3YWxrdGhyb3VnaCAuLi4NCj4gSSBkb24ndCByZWFsbHkga25vdyBob3cg
SSBoYWQgaW1hZ2VkIGl0IHdvdWxkIHdvcmsgLi4uIGJ1dCBub3cgSSBrbm93IHRoYXQNCj4gSSBp
cyBubyBsb25nZXIgYSBwcm9ibGVtIHRvIG1ha2UgYSBtdWx0aSBsaW5ndWFsIHNpdGUgLi4uIGFu
ZCB0aGUgdXNlcnMgY2FuDQo+IGp1c3Qgc2VsZWN0IHRoZSBwcmVmZXJyZWQgbGFuZ3VhZ2UgaW4g
dGhlcmUgc2V0dGluZ3MgLi4uIGdyZWF0ICEhDQo+IA0KPiBHaXR0ZQ0KPiANCj4gDQo+IA0KPiAt
LV9fLS1fXy0tDQo+IA0KPiBNZXNzYWdlOiA1DQo+IFRvOiB6b3BlLWNtZkB6b3BlLm9yZw0KPiBG
cm9tOiBGbG9yZW50IEd1aWxsYXVtZSA8ZmdAbnV4ZW8uY29tPg0KPiBEYXRlOiAyOCBTZXAgMjAw
MSAxNzo0ODowMCBHTVQNCj4gT3JnYW5pemF0aW9uOiBOdXhlbw0KPiBTdWJqZWN0OiBbWm9wZS1D
TUZdIFdvcmtmbG93IGF3YXJlIG9iamVjdHMNCj4gDQo+IEknZCBsaWtlIHRvIHByb3Bvc2UgdGhl
IGZvbGxvd2luZyBhZGRpdGlvbiB0byB0aGUgV29ya2Zsb3cgVG9vbC4NCj4gV2l0aCB0aGlzLCBJ
IGNhbiBoYXZlIG9iamVjdHMgdGhhdCByZWFjdCB0byB0aGVpciBzdGF0ZSBjaGFuZ2UuDQo+IA0K
PiBDdXJyZW50bHkgaWYgSSB3YW50IHRvIGRvIHRoaXMsIEkgaGF2ZSB0byB1c2UsIGluIERDV29y
a2Zsb3csIGENCj4gdHJhbnNpdGlvbiBzY3JpcHQsIHdpdGggdGhlIHVuZm9ydHVuYXRlIGdvdGNo
YSB0aGF0IHRoaXMgc2NyaXB0IGlzDQo+IGNhbGxlZCBqdXN0IGJlZm9yZSB0aGUgdHJhbnNpdGlv
biBoYXMgaXRzIG5ldyAic3RhdHVzIiAodGh1cyBpZiBJIHdhbnQNCj4gdG8gdXNlIHRoZSBmdXR1
cmUgc3RhdHVzLCBJIGhhdmUgdG8gcmVnZW5lcmF0ZSBpdCBieSBoYW5kKSwgYW5kIGFsbCBpbg0K
PiBhbGwgaXQncyBub3QgdmVyeSBjbGVhbi4NCj4gDQo+IFRoZSBraW5kIG9mIG9iamVjdHMgSSB3
b3VsZCB1c2UgdGhpcyBmb3IgaXMgYSAiRG9zc2llciIgKHdoaWNoIEknbGwNCj4gcmVsZWFzZSBz
b29uKSwgd2hpY2ggaXMgbGlrZSBhIGZvbGRlciB3aG9zZSBjaGlsZHJlbiBvYmplY3RzIGhhdmUg
YQ0KPiB3b3JrZmxvdyBzdGF0ZSBzbGF2ZWQgdG8gdGhlIERvc3NpZXIncyB3b3JrZmxvdyBzdGF0
ZS4gSXQgbWFrZXMgaXQgdmVyeQ0KPiBlYXN5IHRvIGhhdmUgImNvbGxlY3Rpb24iIG9iamVjdHMg
KHRoZSBEb3NzaWVyIGluaGVyaXRzIGZyb20gbXkNCj4gUG9ydGFsQ29udGVudEZvbGRlciwgd2hp
Y2ggaXMgYmFzaWNhbGx5IGEgUG9ydGFsRm9sZGVyIHdpdGggY29udGVudGlzaA0KPiBwcm9wZXJ0
aWVzICh3b3JrZmxvdywgY2F0YWxvZykpLg0KPiANCj4gVGhhbmtzLA0KPiANCj4gRmxvcmVudCBH
dWlsbGF1bWUNCj4gTnV4ZW8NCj4gDQo+IA0KPiANCj4gLS0tIFdvcmtmbG93VG9vbC5weS5vcmln
IEZyaSBTZXAgMjggMTE6NDA6MTcgMjAwMQ0KPiArKysgV29ya2Zsb3dUb29sLnB5IEZyaSBTZXAg
MjggMTI6MTk6MjcgMjAwMQ0KPiBAQCAtNTg4LDM0ICs1ODgsNDMgQEANCj4gICAgICBkZWYgbm90
aWZ5QmVmb3JlKHNlbGYsIG9iLCBhY3Rpb24pOg0KPiAgICAgICAgICAnJycNCj4gICAgICAgICAg
Tm90aWZpZXMgYWxsIGFwcGxpY2FibGUgd29ya2Zsb3dzIG9mIGFuIGFjdGlvbiBiZWZvcmUgaXQg
aGFwcGVucywNCj4gICAgICAgICAgYWxsb3dpbmcgdmV0byBieSBleGNlcHRpb24uICBVbmxlc3Mg
YW4gZXhjZXB0aW9uIGlzIHRocm93biwgZWl0aGVyDQo+ICAgICAgICAgIGEgbm90aWZ5U3VjY2Vz
cygpIG9yIG5vdGlmeUV4Y2VwdGlvbigpIGNhbiBiZSBleHBlY3RlZCBsYXRlciBvbi4NCj4gICAg
ICAgICAgVGhlIGFjdGlvbiB1c3VhbGx5IGNvcnJlc3BvbmRzIHRvIGEgbWV0aG9kIG5hbWUuDQo+
ICsgICAgICAgIEFsc28gbm90aWZpZXMgd29ya2Zsb3ctYXdhcmUgb2JqZWN0cy4NCj4gICAgICAg
ICAgJycnDQo+ICAgICAgICAgIHdmcyA9IHNlbGYuZ2V0V29ya2Zsb3dzRm9yKG9iKQ0KPiAgICAg
ICAgICBmb3Igd2YgaW4gd2ZzOg0KPiAgICAgICAgICAgICAgd2Yubm90aWZ5QmVmb3JlKG9iLCBh
Y3Rpb24pDQo+ICsgICAgICAgIGlmIGdldGF0dHIob2IsICdfaXNXb3JrZmxvd0F3YXJlJywgMCk6
DQo+ICsgICAgICAgICAgICBvYi53b3JrZmxvd05vdGlmeUJlZm9yZShhY3Rpb24pDQo+ICANCj4g
ICAgICBzZWN1cml0eS5kZWNsYXJlUHJpdmF0ZSgnbm90aWZ5U3VjY2VzcycpDQo+ICAgICAgZGVm
IG5vdGlmeVN1Y2Nlc3Moc2VsZiwgb2IsIGFjdGlvbiwgcmVzdWx0PU5vbmUpOg0KPiAgICAgICAg
ICAnJycNCj4gICAgICAgICAgTm90aWZpZXMgYWxsIGFwcGxpY2FibGUgd29ya2Zsb3dzIHRoYXQg
YW4gYWN0aW9uIGhhcyB0YWtlbiBwbGFjZS4NCj4gKyAgICAgICAgQWxzbyBub3RpZmllcyB3b3Jr
Zmxvdy1hd2FyZSBvYmplY3RzLg0KPiAgICAgICAgICAnJycNCj4gICAgICAgICAgd2ZzID0gc2Vs
Zi5nZXRXb3JrZmxvd3NGb3Iob2IpDQo+ICAgICAgICAgIGZvciB3ZiBpbiB3ZnM6DQo+ICAgICAg
ICAgICAgICB3Zi5ub3RpZnlTdWNjZXNzKG9iLCBhY3Rpb24sIHJlc3VsdCkNCj4gKyAgICAgICAg
aWYgZ2V0YXR0cihvYiwgJ19pc1dvcmtmbG93QXdhcmUnLCAwKToNCj4gKyAgICAgICAgICAgIG9i
LndvcmtmbG93Tm90aWZ5U3VjY2VzcyhhY3Rpb24sIHJlc3VsdCkNCj4gIA0KPiAgICAgIHNlY3Vy
aXR5LmRlY2xhcmVQcml2YXRlKCdub3RpZnlFeGNlcHRpb24nKQ0KPiAgICAgIGRlZiBub3RpZnlF
eGNlcHRpb24oc2VsZiwgb2IsIGFjdGlvbiwgZXhjKToNCj4gICAgICAgICAgJycnDQo+ICAgICAg
ICAgIE5vdGlmaWVzIGFsbCBhcHBsaWNhYmxlIHdvcmtmbG93cyB0aGF0IGFuIGFjdGlvbiBmYWls
ZWQuDQo+ICsgICAgICAgIEFsc28gbm90aWZpZXMgd29ya2Zsb3ctYXdhcmUgb2JqZWN0cy4NCj4g
ICAgICAgICAgJycnDQo+ICAgICAgICAgIHdmcyA9IHNlbGYuZ2V0V29ya2Zsb3dzRm9yKG9iKQ0K
PiAgICAgICAgICBmb3Igd2YgaW4gd2ZzOg0KPiAgICAgICAgICAgICAgd2Yubm90aWZ5RXhjZXB0
aW9uKG9iLCBhY3Rpb24sIGV4YykNCj4gKyAgICAgICAgaWYgZ2V0YXR0cihvYiwgJ19pc1dvcmtm
bG93QXdhcmUnLCAwKToNCj4gKyAgICAgICAgICAgIG9iLndvcmtmbG93Tm90aWZ5RXhjZXB0aW9u
KGFjdGlvbiwgZXhjKQ0KPiAgDQo+ICAgICAgc2VjdXJpdHkuZGVjbGFyZVByaXZhdGUoJ2dldEhp
c3RvcnlPZicpDQo+ICAgICAgZGVmIGdldEhpc3RvcnlPZihzZWxmLCB3Zl9pZCwgb2IpOg0KPiAg
ICAgICAgICAnJycNCj4gICAgICAgICAgSW52b2tlZCBieSB3b3JrZmxvdyBkZWZpbml0aW9ucy4g
IFJldHVybnMgdGhlIGhpc3RvcnkNCj4gICAgICAgICAgb2YgYW4gb2JqZWN0Lg0KPiAtLSANCj4g
RmxvcmVudCBHdWlsbGF1bWUsIE51eGVvIFNBUkwgKFBhcmlzLCBGcmFuY2UpDQo+ICszMyAxIDQw
IDMzIDc5IDg3ICBodHRwOi8vbnV4ZW8uY29tICBtYWlsdG86ZmdAbnV4ZW8uY29tDQo+IA0KPiAN
Cj4gLS1fXy0tX18tLQ0KPiANCj4gTWVzc2FnZTogNg0KPiBEYXRlOiBGcmksIDI4IFNlcCAyMDAx
IDE4OjA2OjA2IC0wMDAwDQo+IEZyb206ICJKb3NlZiBBbGJlcnQgTWVpbGUiIDxqbWVpbGVAaG90
bWFpbC5jb20+DQo+IFRvOiBab3BlLUNNRkB6b3BlLm9yZw0KPiBTdWJqZWN0OiBbWm9wZS1DTUZd
IENNRlBvcnRhbCBhbmQgWkNhdGFsb2dzLi4uDQo+IA0KPiBJcyBpdCBwb3NzaWJsZSB0byB3b3Jr
IHdpdGggb3RoZXIgY2F0YWxvZ3MgcmF0aGVyIHRoYW4gb25seSB0aGUgbWFpbg0KPiBwb3J0YWxf
Y2F0YWxvZz8gSSB0cmllZCB0byBkbyBpdCBieSBmb2xsb3dpbmcgdGhlIHN0ZXBzIG9uIHRoZSBa
b3BlDQo+IGJvb2sgZm9yIHRoZSBjcmVhdGlvbiBvZiBhbiBhdXRvbWF0aWMgY2F0YWxvZyBidXQg
dGhlIGluc3RhbmNlcyBvZiBteQ0KPiBwcm9kdWN0IGFyZW4ndCBzdG9yZWQgdGhlcmUuDQo+IA0K
PiBJIG1hZGUgdGhlIGZvbGxvd2luZzoNCj4gMS0gQ3JlYXRlIG15IHByb2R1Y3QgYW5kIGFkZCB0
aGUgWkNhdGFsb2c6Q2F0YWxvZ0F3YXJlIGNsYXNzLg0KPiAyLSBBZGQgdGhlIHByb2R1Y3QgdHlw
ZSB0byB0aGUgQ01GUG9ydGFsDQo+IDMtIENyZWF0ZSB0aGUgY2F0YWxvZy4NCj4gMy0gQ3JlYXRl
IHRoZSBmaWVsZCBpbmRleGVzIGFuZCB0aGUgbWV0YWRhdGUgb24gdGhlIGNhdGFsb2cuDQo+IA0K
PiBEaWQgSSBza2lwIHNvbWV0aGluZz8NCj4gDQo+IFRoYW5rcywgDQo+IEpvc2VmLg0KPiANCj4g
DQo+IA0KPiAtLV9fLS1fXy0tDQo+IA0KPiBNZXNzYWdlOiA3DQo+IEZyb206IFRvbSBIb2ZmbWFu
IDxob2ZmbWFuQGFzMjIwLm9yZz4NCj4gUmVwbHktVG86IGhvZmZtYW5AYXMyMjAub3JnDQo+IFRv
OiBia2NAbXVya3dvcmtzLmNvbSwgem9wZS1jbWZAem9wZS5vcmcNCj4gU3ViamVjdDogUmU6IFta
b3BlLUNNRl0gbmVlZCBhZHZpY2UsIHpkaXNjdXNzaW9ucywgYmxhcmssIHNxdWlzaCwgc3dpc2gs
IGNtZg0KPiBEYXRlOiBTYXQsIDI5IFNlcCAyMDAxIDAyOjA4OjAyIC0wNDAwDQo+IA0KPiBPbiBG
cmlkYXkgMjggU2VwdGVtYmVyIDIwMDEgMDE6MjEgcG0sIHlvdSB3cm90ZToNCj4gDQo+ID4gSSdk
IGxpa2UgcmVjb21tZW5kYXRpb25zIG9uIHdoaWNoIHdheSB0byBnbywgYW5kIHdoeS4gSSByZWFs
bHkgZG9uJ3Qgd2FudCBhDQo+ID4gd2VibG9nLCBleGFjdGx5LiBNb3JlIGxpa2UgbmV3c2dyb3Vw
IGZvcnVtcy4gQmVpbmcgYWJsZSB0byBnZXQgZW1haWwNCj4gPiBub3RpZmljYXRpb24gb2YgdXBk
YXRlcyB0byB0aGUgZm9ydW0sIGV2ZW4gY3Jvc3MgbGlua2luZyB0byBuZXdzZ3JvdXBzDQo+ID4g
d291bGQgYmUgZ3JlYXQuDQo+IA0KPiBJIGNhbiByZXBseSBhcyBzb21lb25lIHdobyBpcyBpbiBh
bG1vc3QgZXhhY3RseSB0aGUgc2FtZSBzaXR1YXRpb24sIHdobyBmZWVscyANCj4gbGlrZSBoZSBo
YXMgZm91bmQgdGhlIGFuc3dlciwgYnV0LCBzdHJpY3RseSBzcGVha2luZywgaGFzbid0IGltcGxl
bWVudGVkIGl0IA0KPiB5ZXQuICANCj4gDQo+IEdvIHRvIHd3dy56b3BlemVuLm9yZyBhbmQgc2Vl
IGlmIHRoYXQgaXMgd2hhdCB5b3UgaGFkIGluIG1pbmQuICBab3Bpc3RhIGp1c3QgDQo+IHVzZWQg
dGhlIENNRiBuZXdzIG9iamVjdHMsIHRvdWNoZWQgdXAgdGhlIHByZXNlbnRhdGlvbiBhbmQgbW92
ZWQgdGhlIGl0ZW1zIA0KPiBmcm9tIGEgbGl0dGxlIGJveCBpbnRvIHRoZSBtYWluIHBhcnQgb2Yg
dGhlIHNjcmVlbi4gIEl0IGlzIGJ5IGZhciB0aGUgYmVzdCBVSSANCj4gSSd2ZSBzZWVuIGluIGEg
Q01GIHNpdGUgKGFsdGhvdWdoIEkndmUgc2VlbiBwYWluZnVsbHkgZmV3Li4uKSAgLlNlZW1zIHRv
IGRvIA0KPiBldmVyeXRoaW5nIEknZCB3YW50IGluIGEgY2xlYW4gYW5kIGVsZWdhbnQgd2F5LiAg
T25jZSBoZSdzIGRvbmUgbW92aW5nIEknZCANCj4gbG92ZSB0byBnZXQgbW9yZSBkZXRhaWxzIG91
dCBvZiBoaW0gb24gaW5zZXJ0aW5nIHRoZSBpY29ucywgZXRjIGFzIGhlIGRpZC4NCj4gDQo+IC0t
VG9tDQo+IA0KPiANCj4gDQo+IC0tX18tLV9fLS0NCj4gDQo+IF9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IFpvcGUtQ01GIG1haWxsaXN0ICAtICBab3Bl
LUNNRkB6b3BlLm9yZw0KPiBodHRwOi8vbGlzdHMuem9wZS5vcmcvbWFpbG1hbi9saXN0aW5mby96
b3BlLWNtZg0KPiANCj4gaHR0cDovL3d3dy56b3BlLm9yZy9Qcm9kdWN0cy9QVEsvVHJhY2tlciBm
b3IgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMNCj4gDQo+IEVuZCBvZiBab3BlLUNN
RiBEaWdlc3QNCg==