Re: [testdrivendevelopment] "Find or Create" functions: a discussion

"BobFBPTest" <[email protected]> Sun, 24 Nov 2019 14:13:54 +0000
Newsgroups gmane.comp.programming.test-driven-development
Message-ID <VI1PR0802MB249671FDE2FD7B7CA11BAC37DE4B0@VI1PR0802MB2496.eurprd08.prod.outlook.com>
--_000_VI1PR0802MB249671FDE2FD7B7CA11BAC37DE4B0VI1PR0802MB2496_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

SW4gdGhlIGNhc2Ugb2YgaWRlbnRpZnlpbmcgZm9yIG1lZGljYWwgcmVhc29ucywgaXQgd291bGQg
YmUgdml0YWwgdG8gZGlzdGluZ3Vpc2ggdGhlIHBlcnNvbjogYSAiZmluZCBvciBjcmVhdGUiIG1l
dGhvZCB3b3VsZCBpbnZpdGUgZHVwbGljYXRlIHJlY29yZHMsIGFuZCBsb3NzIChvciBhdCBsZWFz
dCB1bmF3YXJlbmVzcykgb2Ygb3RoZXIgbWVkaWNhbCBoaXN0b3J5Lg0KDQpPbiAyNCBOb3YgMjAx
OSwgYXQgMTQ6MDEsIFN0ZXZlIEdvcmRvbiA8c2dvcmRvbnBoZEBnbWFpbC5jb208bWFpbHRvOnNn
b3Jkb25waGRAZ21haWwuY29tPj4gd3JvdGU6DQoNClByYWdtYXRpY2FsbHksIGluIHRoZSB2YXN0
IG1ham9yaXR5IG9mIGFwcGxpY2F0aW9ucyBtdWNoIGxlc3MgZGF0YSBpcyByZXF1aXJlZCBmb3Ig
ZmluZGluZyBhbiBlbnRyeSB0aGFuIGNyZWF0aW5nIGl0LiAgQ3JlYXRpbmcgYW4gZW50cnkgd2l0
aCBzbyBtdWNoIG1pc3NpbmcgZGF0YSBjYW4gY3JlYXRlIGRhdGEgaW50ZWdyaXR5IHByb2JsZW1z
Lg0KDQpTbywgZ2l2ZW4gdGhhdCBmaW5kT3JDcmVhdGUoKSBzaG91bGQgbmVlZCBhbGwgdGhlIGRh
dGEgdGhhdCBDcmVhdGUoKSB3b3VsZCBuZWVkIChub3QganVzdCBpZGVudGlmeWluZyBpbmZvcm1h
dGlvbiksIEkgd291bGQgZmluZCBpdCBjbGVhbmVyIHRvIGp1c3QgYWxsb3cgQ3JlYXRlIHRvIHJl
dHVybiB0aGUgb2JqZWN0IHdoZXRoZXIgaXQgd2FzIGNyZWF0ZWQgb3IgYWxyZWFkeSBleGlzdGVk
IChhbmQgc2lnbmFsIHRoYXQgdGhlIGVudHJ5IGFscmVhZHkgZXhpc3RlZCBpZiB0aGUgY2xpZW50
IGNvZGUgY2FyZXMpLg0KDQpPbiBTdW4sIE5vdiAyNCwgMjAxOSBhdCAxOjU1IEFNIEouIEIuIFJh
aW5zYmVyZ2VyIDxqYnJhaW5zNzYyQGdtYWlsLmNvbTxtYWlsdG86amJyYWluczc2MkBnbWFpbC5j
b20+PiB3cm90ZToNCkhpLCBmb2xrcy4gQW4gb2xkIGlzc3VlIGNhbWUgYmFjayB0byB0aGUgc3Vy
ZmFjZSB0aGlzIG1vbnRoIGluIGNvbnN1bHRhdGlvbiB3aXRoIGNsaWVudHMgYW5kIEknZCBsaWtl
IHlvdXIgb3Bpbmlvbi4gSXQgcmVnYXJkcyB0aGUgb2xkICJmaW5kIG9yIGNyZWF0ZSIgcGF0dGVy
bi4gSXQgc2VlbXMgdG8gdmlvbGF0ZSBDb21tYW5kL1F1ZXJ5IFNlcGFyYXRpb24gKGFzIEkgdW5k
ZXJzdGFuZCBpdCksIGJ1dCBpdCBzZWVtcyBoYW5keSBhbmQgaGFybWxlc3MsIHNvIEknZCBsaWtl
IHRvIGZpbmQgb3V0IG1vcmUgYWJvdXQgd2hhdCB5b3UgZm9sa3MgdGhpbmsgYWJvdXQgaXQuIEJl
bmlnbj8gUHJvYmxlbWF0aWM/DQoNCkkgaW1hZ2luZSB1c2luZyB0aGlzIHdpdGggdGhlIFJlcG9z
aXRvcnkgcGF0dGVybi4gTGV0J3Mgc2F5IHdlIHJlZ2lzdGVyIGEgcGF0aWVudCBpbiBhIG1lZGlj
YWwgZW52aXJvbm1lbnQgYW5kIHNvIHdlIG5lZWQgYSBVSSB0aGF0IHJlZHVjZXMgYXMgbXVjaCBh
cyBwb3NzaWJsZSB0aGUgbnVtYmVyIG9mIHN0ZXBzLiBXZSBkb24ndCB3YW50IHRvIGZvcmNlIHRo
ZSB1c2VyIHRvIGxvb2sgdXAgYSBwYXRpZW50IGp1c3QgdG8gZGlzY292ZXIgdGhhdCB0aGUgaG9z
cGl0YWwgaGFzIG5vIHJlY29yZCBvZiB0aGVtLCBzbyB3ZSBhbGxvdyB0aGUgdXNlciB0byBlbnRl
ciBzb21lIGJhc2ljIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uLiBUaGlzIGluZm9ybWF0aW9uIHN1
ZmZpY2VzIHRvIGVpdGhlciBmaW5kIGFuIGV4aXN0aW5nIHBhdGllbnQgb3IgY3JlYXRlIGEgbmV3
IG9uZSBpZiBvdXIgZGF0YWJhc2UgZG9lc24ndCBrbm93IHRoYXQgcGF0aWVudC4gVGhlIHJlc3Vs
dCBpcyBzb21ldGhpbmcgbGlrZQ0KDQpQYXRpZW50IHJlZ2lzdGVyZWRQYXRpZW50ID0gcGF0aWVu
dFJlcG9zaXRvcnkuZmluZE9yQ3JlYXRlKHBhdGllbnRJZGVudGlmeWluZ0luZm9ybWF0aW9uKTsN
Cg0KVGhlIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uIG1pZ2h0IGhhdmUgYmFzaWNzIGxpa2UgbmFt
ZSwgZGF0ZSBvZiBiaXJ0aCwgaXQgZG9lc24ndCBtYXR0ZXIuIFdlIGNhbiBndWFyYW50ZWUgdGhh
dCByZWdpc3RlcmVkUGF0aWVudCBub3cgcmVwcmVzZW50cyBhbiBFbnRpdHkgaW4gb3VyIHN5c3Rl
bSwgZWl0aGVyIGJlY2F1c2Ugd2UgZm91bmQgc29tZW9uZSB0aGF0IG1hdGNoZWQgdGhlIGlkZW50
aWZ5aW5nIGluZm9ybWF0aW9uIG9yIGJlY2F1c2Ugd2UgY3JlYXRlZCBvbmUuDQoNClRoaXMgYXBw
ZWFycyB0byB2aW9sYXRlIENRUywgYnV0IGl0IHNlZW1zIGxpa2UgYSBnb29kIHRoaW5nIHRvIGhh
dmUuIFNvbWUgaW5kaXZpZHVhbHMgc3RydWdnbGUgd2l0aCB0aGlzLCBiZWNhdXNlIHRoZXkgZG9u
J3Qga25vdyB3aGV0aGVyIHRoaXMgaXMgYW4gYXJlYSB3aGVyZSBDUVMgImRvZXNuJ3QgbWF0dGVy
IiBvciBhbiBhcmVhIHdoZXJlIENRUyBpcyB0cnlpbmcgdG8gdGVhY2ggdGhlbSBzb21ldGhpbmcg
YW5kIHRoZXkgY2FuJ3Qgc2VlIHdoYXQgdGhleSdyZSBtZWFudCB0byBsZWFybi4gSSBoYXZlbid0
IHRob3VnaHQgYWJvdXQgdGhpcyBpbiBkZXB0aCBpbiB5ZWFycywgc28gSSBmZWVsIHRoZSBzYW1l
IHdheSByaWdodCBub3cuIERyYXdiYWNrcz8gQWx0ZXJuYXRpdmVzPw0KDQpJIHdhcyBhbHNvIHRo
aW5raW5nIGFib3V0IGhvdyB0byBkZXNpZ24gdGhpcywgYW5kIGl0IHNlZW1zIHRvIG1lIGxpa2Ug
YSBzcGVjaWFsIGNhc2Ugb2YgZ2V0T3JBYnNlbnQoKSwgc28gdGhhdCBJIGNvdWxkIGltcGxlbWVu
dCB0aGUgZ2VuZXJpYyBmaW5kT3JDcmVhdGUoKSBhbGdvcml0aG0gd2l0aCBzb21ldGhpbmcgbGlr
ZQ0KDQpyZXBvc2l0b3J5LmZpbmQoaWRlbnRpZnlpbmdJbmZvcm1hdGlvbikub3JFbHNlKFQ6OmNy
ZWF0ZUZyb21JZGVudGlmeWluZ0luZm9ybWF0aW9uKQ0KDQp3aGVyZSBmaW5kKCkgcmV0dXJucyBN
YXliZSBUSWRlbnRpZnlpbmdJbmZvcm1hdGlvbiBhbmQgVCBoYXMgYSBuYW1lZCBjb25zdHJ1Y3Rv
ciBmb3IgY3JlYXRpbmcgYSBUIGZyb20gYSBUSWRlbnRpZnlpbmdJbmZvcm1hdGlvbi4gSSdtIGFz
c3VtaW5nIGhlcmUgdGhhdCBUSWRlbnRpZnlpbmdJbmZvcm1hdGlvbiBpcyBlbm91Z2ggdG8gcHJv
dmlkZSBhbGwgdGhlIG1hbmRhdG9yeSBwcm9wZXJ0aWVzIG9mIFQuDQoNCldpdGggdGhpcyBkZXNp
Z24sIEkgZG9uJ3QgbmVlZCBhIHNpbmdsZSBmaW5kT3JDcmVhdGUoKSBmdW5jdGlvbiBhbnkgbW9y
ZSwgYmVjYXVzZSB0aGUgcGllY2VzIGZpbmQoKSBhbmQgb3JFbHNlKFQ6OmNyZWF0ZSkgY29tbXVu
aWNhdGUgdGhlIGlkZWEgd2VsbCBlbm91Z2guDQoNClRob3VnaHRzPyBJJ20gaGFwcHkgdG8gc2Vl
IHRoZSBkaXNjdXNzaW9uIG1lYW5kZXIuIElzIHRoaXMgYSB0b3RhbGx5LXNvbHZlZCBpc3N1ZSBh
bmQgdGhlcmUncyBvbmUgY2xlYXIgZ29vZCB3YXkgdG8gcHJvY2VlZD8gb3IgaXMgaXQgbW9yZSBh
IG1hdHRlciBvZiBjb250ZXh0IG9yIHByZWZlcmVuY2U/DQotLQ0KSi4gQi4gKEpvZSkgUmFpbnNi
ZXJnZXIgOjogaHR0cHM6Ly90ZGQudHJhaW5pbmcgOjogaHR0cDovL3d3dy5qYnJhaW5zLmNhIDo6
IGh0dHA6Ly93d3cudGhlY29kZXdoaXNwZXJlci5jb20NCg0KDQoNCg0KLT0tPS09LT0tPS09LT0t
PS09LT0tPS0KR3JvdXBzLmlvIExpbmtzOiBZb3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0
byB0aGlzIGdyb3VwLgoKVmlldy9SZXBseSBPbmxpbmUgKCMzNTc1NSk6IGh0dHBzOi8vZ3JvdXBz
LmlvL2cvdGVzdGRyaXZlbmRldmVsb3BtZW50L21lc3NhZ2UvMzU3NTUKTXV0ZSBUaGlzIFRvcGlj
OiBodHRwczovL2dyb3Vwcy5pby9tdC82MTg3MjUwNi8zMjY4NzU1Ckdyb3VwIE93bmVyOiB0ZXN0
ZHJpdmVuZGV2ZWxvcG1lbnQrb3duZXJAZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBodHRwczovL2dy
b3Vwcy5pby9nL3Rlc3Rkcml2ZW5kZXZlbG9wbWVudC9sZWF2ZS82MTU2MzIyLzc0NDU1NjM4Ni94
eXp6eSAgW2djcHQtdGVzdGRyaXZlbmRldmVsb3BtZW50QG0uZ21hbmUub3JnXQotPS09LT0tPS09
LT0tPS09LT0tPS09LQoNCg==

--_000_VI1PR0802MB249671FDE2FD7B7CA11BAC37DE4B0VI1PR0802MB2496_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjwvaGVhZD4NCjxib2R5IGRpcj0iYXV0byI+DQo8
ZGl2PjwvZGl2Pg0KPGRpdj5JbiB0aGUgY2FzZSBvZiBpZGVudGlmeWluZyBmb3IgbWVkaWNhbCBy
ZWFzb25zLCBpdCB3b3VsZCBiZSB2aXRhbCB0byBkaXN0aW5ndWlzaCB0aGUgcGVyc29uOiBhICZx
dW90O2ZpbmQgb3IgY3JlYXRlJnF1b3Q7IG1ldGhvZCB3b3VsZCBpbnZpdGUgZHVwbGljYXRlIHJl
Y29yZHMsIGFuZCBsb3NzIChvciBhdCBsZWFzdCB1bmF3YXJlbmVzcykgb2Ygb3RoZXIgbWVkaWNh
bCBoaXN0b3J5LjwvZGl2Pg0KPGRpdj48YnI+DQpPbiAyNCBOb3YgMjAxOSwgYXQgMTQ6MDEsIFN0
ZXZlIEdvcmRvbiAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNnb3Jkb25waGRAZ21haWwuY29tIj5zZ29y
ZG9ucGhkQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj4NCjxicj4NCjwvZGl2Pg0KPGJsb2Nr
cXVvdGUgdHlwZT0iY2l0ZSI+DQo8ZGl2Pg0KPGRpdiBkaXI9Imx0ciI+UHJhZ21hdGljYWxseSwg
aW4gdGhlIHZhc3QgbWFqb3JpdHkmbmJzcDtvZiBhcHBsaWNhdGlvbnMgbXVjaCBsZXNzIGRhdGEg
aXMgcmVxdWlyZWQgZm9yIGZpbmRpbmcgYW4gZW50cnkgdGhhbiBjcmVhdGluZyBpdC4mbmJzcDsg
Q3JlYXRpbmcgYW4gZW50cnkgd2l0aCBzbyBtdWNoIG1pc3NpbmcgZGF0YSBjYW4gY3JlYXRlIGRh
dGEgaW50ZWdyaXR5IHByb2JsZW1zLg0KPGRpdj48YnI+DQo8L2Rpdj4NCjxkaXY+U28sIGdpdmVu
IHRoYXQgZmluZE9yQ3JlYXRlKCkgc2hvdWxkIG5lZWQgYWxsIHRoZSBkYXRhIHRoYXQgQ3JlYXRl
KCkgd291bGQgbmVlZCAobm90IGp1c3QgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24pLCBJIHdvdWxk
IGZpbmQgaXQgY2xlYW5lciB0byBqdXN0IGFsbG93IENyZWF0ZSB0byByZXR1cm4gdGhlIG9iamVj
dCB3aGV0aGVyIGl0IHdhcyBjcmVhdGVkIG9yIGFscmVhZHkgZXhpc3RlZCAoYW5kIHNpZ25hbCB0
aGF0IHRoZSBlbnRyeSBhbHJlYWR5DQogZXhpc3RlZCBpZiB0aGUgY2xpZW50IGNvZGUgY2FyZXMp
LiZuYnNwOyZuYnNwOzwvZGl2Pg0KPC9kaXY+DQo8YnI+DQo8ZGl2IGNsYXNzPSJnbWFpbF9xdW90
ZSI+DQo8ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+T24gU3VuLCBOb3YgMjQsIDIw
MTkgYXQgMTo1NSBBTSBKLiBCLiBSYWluc2JlcmdlciAmbHQ7PGEgaHJlZj0ibWFpbHRvOmpicmFp
bnM3NjJAZ21haWwuY29tIj5qYnJhaW5zNzYyQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj4N
CjwvZGl2Pg0KPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBw
eCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3Bh
ZGRpbmctbGVmdDoxZXgiPg0KPGRpdiBkaXI9Imx0ciI+DQo8ZGl2PkhpLCBmb2xrcy4gQW4gb2xk
IGlzc3VlIGNhbWUgYmFjayB0byB0aGUgc3VyZmFjZSB0aGlzIG1vbnRoIGluIGNvbnN1bHRhdGlv
biB3aXRoIGNsaWVudHMgYW5kIEknZCBsaWtlIHlvdXIgb3Bpbmlvbi4gSXQgcmVnYXJkcyB0aGUg
b2xkICZxdW90O2ZpbmQgb3IgY3JlYXRlJnF1b3Q7IHBhdHRlcm4uIEl0IHNlZW1zIHRvIHZpb2xh
dGUgQ29tbWFuZC9RdWVyeSBTZXBhcmF0aW9uIChhcyBJIHVuZGVyc3RhbmQgaXQpLCBidXQgaXQg
c2VlbXMgaGFuZHkgYW5kIGhhcm1sZXNzLA0KIHNvIEknZCBsaWtlIHRvIGZpbmQgb3V0IG1vcmUg
YWJvdXQgd2hhdCB5b3UgZm9sa3MgdGhpbmsgYWJvdXQgaXQuIEJlbmlnbj8gUHJvYmxlbWF0aWM/
PC9kaXY+DQo8ZGl2Pjxicj4NCjwvZGl2Pg0KPGRpdj5JIGltYWdpbmUgdXNpbmcgdGhpcyB3aXRo
IHRoZSBSZXBvc2l0b3J5IHBhdHRlcm4uIExldCdzIHNheSB3ZSByZWdpc3RlciBhIHBhdGllbnQg
aW4gYSBtZWRpY2FsIGVudmlyb25tZW50IGFuZCBzbyB3ZSBuZWVkIGEgVUkgdGhhdCByZWR1Y2Vz
IGFzIG11Y2ggYXMgcG9zc2libGUgdGhlIG51bWJlciBvZiBzdGVwcy4gV2UgZG9uJ3Qgd2FudCB0
byBmb3JjZSB0aGUgdXNlciB0byBsb29rIHVwIGEgcGF0aWVudCBqdXN0IHRvIGRpc2NvdmVyIHRo
YXQNCiB0aGUgaG9zcGl0YWwgaGFzIG5vIHJlY29yZCBvZiB0aGVtLCBzbyB3ZSBhbGxvdyB0aGUg
dXNlciB0byBlbnRlciBzb21lIGJhc2ljIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uLiBUaGlzIGlu
Zm9ybWF0aW9uIHN1ZmZpY2VzIHRvIGVpdGhlciBmaW5kIGFuIGV4aXN0aW5nIHBhdGllbnQgb3Ig
Y3JlYXRlIGEgbmV3IG9uZSBpZiBvdXIgZGF0YWJhc2UgZG9lc24ndCBrbm93IHRoYXQgcGF0aWVu
dC4gVGhlIHJlc3VsdCBpcyBzb21ldGhpbmcgbGlrZTwvZGl2Pg0KPGRpdj48YnI+DQo8L2Rpdj4N
CjxkaXY+UGF0aWVudCByZWdpc3RlcmVkUGF0aWVudCA9IHBhdGllbnRSZXBvc2l0b3J5LmZpbmRP
ckNyZWF0ZShwYXRpZW50SWRlbnRpZnlpbmdJbmZvcm1hdGlvbik7PC9kaXY+DQo8ZGl2Pjxicj4N
CjwvZGl2Pg0KPGRpdj5UaGUgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24gbWlnaHQgaGF2ZSBiYXNp
Y3MgbGlrZSBuYW1lLCBkYXRlIG9mIGJpcnRoLCBpdCBkb2Vzbid0IG1hdHRlci4gV2UgY2FuIGd1
YXJhbnRlZSB0aGF0IHJlZ2lzdGVyZWRQYXRpZW50IG5vdyByZXByZXNlbnRzIGFuIEVudGl0eSBp
biBvdXIgc3lzdGVtLCBlaXRoZXIgYmVjYXVzZSB3ZSBmb3VuZCBzb21lb25lIHRoYXQgbWF0Y2hl
ZCB0aGUgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24gb3IgYmVjYXVzZQ0KIHdlIGNyZWF0ZWQgb25l
LjwvZGl2Pg0KPGRpdj48YnI+DQo8L2Rpdj4NCjxkaXY+VGhpcyBhcHBlYXJzIHRvIHZpb2xhdGUg
Q1FTLCBidXQgaXQgc2VlbXMgbGlrZSBhIGdvb2QgdGhpbmcgdG8gaGF2ZS4gU29tZSBpbmRpdmlk
dWFscyBzdHJ1Z2dsZSB3aXRoIHRoaXMsIGJlY2F1c2UgdGhleSBkb24ndCBrbm93IHdoZXRoZXIg
dGhpcyBpcyBhbiBhcmVhIHdoZXJlIENRUyAmcXVvdDtkb2Vzbid0IG1hdHRlciZxdW90OyBvciBh
biBhcmVhIHdoZXJlIENRUyBpcyB0cnlpbmcgdG8gdGVhY2ggdGhlbSBzb21ldGhpbmcgYW5kIHRo
ZXkgY2FuJ3Qgc2VlDQogd2hhdCB0aGV5J3JlIG1lYW50IHRvIGxlYXJuLiBJIGhhdmVuJ3QgdGhv
dWdodCBhYm91dCB0aGlzIGluIGRlcHRoIGluIHllYXJzLCBzbyBJIGZlZWwgdGhlIHNhbWUgd2F5
IHJpZ2h0IG5vdy4gRHJhd2JhY2tzPyBBbHRlcm5hdGl2ZXM/PC9kaXY+DQo8ZGl2Pjxicj4NCjwv
ZGl2Pg0KPGRpdj5JIHdhcyBhbHNvIHRoaW5raW5nIGFib3V0IGhvdyB0byBkZXNpZ24gdGhpcywg
YW5kIGl0IHNlZW1zIHRvIG1lIGxpa2UgYSBzcGVjaWFsIGNhc2Ugb2YgZ2V0T3JBYnNlbnQoKSwg
c28gdGhhdCBJIGNvdWxkIGltcGxlbWVudCB0aGUgZ2VuZXJpYyBmaW5kT3JDcmVhdGUoKSBhbGdv
cml0aG0gd2l0aCBzb21ldGhpbmcgbGlrZTwvZGl2Pg0KPGRpdj48YnI+DQo8L2Rpdj4NCjxkaXY+
cmVwb3NpdG9yeS5maW5kKGlkZW50aWZ5aW5nSW5mb3JtYXRpb24pLm9yRWxzZShUOjpjcmVhdGVG
cm9tSWRlbnRpZnlpbmdJbmZvcm1hdGlvbik8L2Rpdj4NCjxkaXY+PGJyPg0KPC9kaXY+DQo8ZGl2
PndoZXJlIGZpbmQoKSByZXR1cm5zIE1heWJlIFRJZGVudGlmeWluZ0luZm9ybWF0aW9uIGFuZCBU
IGhhcyBhIG5hbWVkIGNvbnN0cnVjdG9yIGZvciBjcmVhdGluZyBhIFQgZnJvbSBhIFRJZGVudGlm
eWluZ0luZm9ybWF0aW9uLiBJJ20gYXNzdW1pbmcgaGVyZSB0aGF0IFRJZGVudGlmeWluZ0luZm9y
bWF0aW9uIGlzIGVub3VnaCB0byBwcm92aWRlIGFsbCB0aGUgbWFuZGF0b3J5IHByb3BlcnRpZXMg
b2YgVC48L2Rpdj4NCjxkaXY+PGJyPg0KPC9kaXY+DQo8ZGl2PldpdGggdGhpcyBkZXNpZ24sIEkg
ZG9uJ3QgbmVlZCBhIHNpbmdsZSBmaW5kT3JDcmVhdGUoKSBmdW5jdGlvbiBhbnkgbW9yZSwgYmVj
YXVzZSB0aGUgcGllY2VzIGZpbmQoKSBhbmQgb3JFbHNlKFQ6OmNyZWF0ZSkgY29tbXVuaWNhdGUg
dGhlIGlkZWEgd2VsbCBlbm91Z2guPC9kaXY+DQo8ZGl2Pjxicj4NCjwvZGl2Pg0KPGRpdj5UaG91
Z2h0cz8gSSdtIGhhcHB5IHRvIHNlZSB0aGUgZGlzY3Vzc2lvbiBtZWFuZGVyLiBJcyB0aGlzIGEg
dG90YWxseS1zb2x2ZWQgaXNzdWUgYW5kIHRoZXJlJ3Mgb25lIGNsZWFyIGdvb2Qgd2F5IHRvIHBy
b2NlZWQ/IG9yIGlzIGl0IG1vcmUgYSBtYXR0ZXIgb2YgY29udGV4dCBvciBwcmVmZXJlbmNlPzxi
cj4NCi0tIDxicj4NCjxkaXYgZGlyPSJsdHIiPg0KPGRpdiBkaXI9Imx0ciI+DQo8ZGl2PkouIEIu
IChKb2UpIFJhaW5zYmVyZ2VyIDo6IDxhIGhyZWY9Imh0dHBzOi8vdGRkLnRyYWluaW5nIiB0YXJn
ZXQ9Il9ibGFuayI+aHR0cHM6Ly90ZGQudHJhaW5pbmc8L2E+IDo6DQo8c3Bhbj48YSBocmVmPSJo
dHRwOi8vd3d3LmpicmFpbnMuY2EiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmpicmFpbnMu
Y2E8L2E+IDo6DQo8YSBocmVmPSJodHRwOi8vd3d3LnRoZWNvZGV3aGlzcGVyZXIuY29tIiB0YXJn
ZXQ9Il9ibGFuayI+aHR0cDovL3d3dy50aGVjb2Rld2hpc3BlcmVyLmNvbTwvYT48L3NwYW4+PC9k
aXY+DQo8ZGl2Pjxicj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8
cD48L3A+DQo8cD48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8L2Rpdj4NCg0KPC9kaXY+DQo8L2Jsb2Nr
cXVvdGU+DQo8L2JvZHk+DQo8L2h0bWw+DQoNCjxkaXYgd2lkdGg9IjEiIHN0eWxlPSJjb2xvcjp3
aGl0ZTtjbGVhcjpib3RoIj5fLl8sXy5fLF88L2Rpdj4KPGhyPgpHcm91cHMuaW8gTGlua3M6PHA+
CgpZb3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3VwLgoKCjxwPgoKPGEg
dGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZ3JvdXBzLmlvL2cvdGVzdGRyaXZlbmRldmVs
b3BtZW50L21lc3NhZ2UvMzU3NTUiPlZpZXcvUmVwbHkgT25saW5lICgjMzU3NTUpPC9hPiB8CgoK
ICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0ibWFpbHRvOnRlc3Rkcml2ZW5kZXZlbG9wbWVudEBn
cm91cHMuaW8/c3ViamVjdD1SZTolMjBSZSUzQSUyMCU1QnRlc3Rkcml2ZW5kZXZlbG9wbWVudCU1
RCUyMCUyMkZpbmQlMjBvciUyMENyZWF0ZSUyMiUyMGZ1bmN0aW9ucyUzQSUyMGElMjBkaXNjdXNz
aW9uIj5SZXBseSBUbyBHcm91cDwvYT4KICAKICAgIHwgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9
Im1haWx0bzpib2Jjb3JyaWNrQG91dGxvb2suY29tP3N1YmplY3Q9UHJpdmF0ZTolMjBSZTolMjBS
ZSUzQSUyMCU1QnRlc3Rkcml2ZW5kZXZlbG9wbWVudCU1RCUyMCUyMkZpbmQlMjBvciUyMENyZWF0
ZSUyMiUyMGZ1bmN0aW9ucyUzQSUyMGElMjBkaXNjdXNzaW9uIj5SZXBseSBUbyBTZW5kZXI8L2E+
CiAgCgoKfAoKCiAgCiAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9ncm91cHMu
aW8vbXQvNjE4NzI1MDYvMzI2ODc1NSI+TXV0ZSBUaGlzIFRvcGljPC9hPgogIAoKfCA8YSBocmVm
PSJodHRwczovL2dyb3Vwcy5pby9nL3Rlc3Rkcml2ZW5kZXZlbG9wbWVudC9wb3N0Ij5OZXcgVG9w
aWM8L2E+PGJyPgoKCgo8YnI+Cgo8YSBocmVmPSJodHRwczovL2dyb3Vwcy5pby9nL3Rlc3Rkcml2
ZW5kZXZlbG9wbWVudC9lZGl0c3ViLzMyNjg3NTUiPllvdXIgU3Vic2NyaXB0aW9uPC9hPiB8Cjxh
IGhyZWY9Im1haWx0bzp0ZXN0ZHJpdmVuZGV2ZWxvcG1lbnQrb3duZXJAZ3JvdXBzLmlvIj5Db250
YWN0IEdyb3VwIE93bmVyPC9hPiB8Cgo8YSBocmVmPSJodHRwczovL2dyb3Vwcy5pby9nL3Rlc3Rk
cml2ZW5kZXZlbG9wbWVudC9sZWF2ZS82MTU2MzIyLzc0NDU1NjM4Ni94eXp6eSI+VW5zdWJzY3Jp
YmU8L2E+CgogW2djcHQtdGVzdGRyaXZlbmRldmVsb3BtZW50QG0uZ21hbmUub3JnXTxicj4KPGRp
diB3aWR0aD0iMSIgc3R5bGU9ImNvbG9yOndoaXRlO2NsZWFyOmJvdGgiPl8uXyxfLl8sXzwvZGl2
PgoNCg==

--_000_VI1PR0802MB249671FDE2FD7B7CA11BAC37DE4B0VI1PR0802MB2496_--