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_--