From: "Peña, Botp" Date: 2005-02-17T12:02:57+09:00 Subject: Re: DesignByContract (was RE: utilizing ++ and -- for comments) ------_=_NextPart_000_01C5149D.24D9C640 Content-Type: text/plain; charset="iso-8859-1" Florian Gross [mailto:flgr@ccan.de] wrote: //I think I'll use an interface like this: // //class MyArray // def pop() ... end // // check :pop, :pre do // size > 0 // end // // check :pop, :post do # couldn't think of a better sample here // size >= 0 // end // // check :invariant do // size >= 0 // end //end Yes. Sorry Florian I did not see your project. But now I am very happy that you are involved in it. Regarding the interface, I was hoping you include the conditions inside the method. This is important to me since it is the methods that I am after as of now. eg. like #-- sample code only def Method_sample pre { #-- a code block that must evaluate to true... #-- ... } post do #-- a code block that must evaluate to true... #-- .... end #-- normal method code here... end #-- Method_sample I am following pattern suggested by Andy Hunt (attached pdf) Your idea of putting variants at class levels (not methods) is great but I fear it might be too big a task to implement (only me sizing). But if you can do it too, why not? thanks and kind regards -botp ------_=_NextPart_000_01C5149D.24D9C640 Content-Type: application/octet-stream; name="dbc_ruby.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dbc_ruby.pdf" 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 ZAZI8hRo9HwkkxxN/3+hTBII+7lQGrdjs3syfAZQOA0NrX3T25LhNKiZ4jEn2m6wmi0u5Aqe3FkI bW4Dc3/sR8h398Gnq09X/wI4KndzZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjE4MzQKZW5kb2Jq CjMgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCAy IDAgUgovUmVzb3VyY2VzIDw8IC9Qcm9jU2V0IFsvUERGIC9JbWFnZUIgL1RleHRdCi9Gb250IDw8 Ci9SMTQgMTQgMCBSCi9BIDEyIDAgUgovUjkgOSAwIFIKL1I4IDggMCBSCi9SNyA3IDAgUgovUjYg NiAwIFIKPj4KPj4KL0NvbnRlbnRzIDQgMCBSCj4+CmVuZG9iagoxNyAwIG9iago8PC9MZW5ndGgg MTggMCBSL0ZpbHRlciAvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeJydWNtu3DYQLfK4X6G3OIWXFinq liIPuRX1Q9HEMBAU8Iu8y/Wq0UprSRvbf1+SMxRHl0XQIjCcMBQ5lzNnzjBkPAjNH/y9OaweV48B t2vu1+YQfLhdXd3kQc7yRCQyuN2teLC2WwIepyzJgkT/Evp/DheMsTe3/6zWXATm53Z7oeqtWbm6 SekJa85ZlgVrEZlfett1bXZlLIzyPNVn66UfZkWyNM/zDFaKtizqvjPrImOJ/h9chzt4YoyxK8em 6zdNvS37sqntB0nIZOoO6o5qU75S9qsoJSeV1gweshB3NrWaHL2pig5M4Czl7sOnsqrsxpSlsVu8 h285Wdrs1ea7/TpiAk8EO/S2mM/t8E7iBYJFw2nd6d6ao6xBMrLBwu12aR1FMdMhddl4UlV1aa8X 5Ohjq8bBihNjcjaxReDJNpws11YkYzNsOGOWRLOouGhCSnM+TTJZUW1bbm3gRMzi2OfYLOXWeVx6 MSspk/o6iY4Urar71/bjlGWDHYAAxvUt8dxl5gCqnUqjLDYAjU16eKAjKsLQho4vwVhkuYHKWqfd rGwvbvdqBgN91xqiwES0gFmfB4pazEM0oF+H+ISZjjjJ3qGwgeA6NgN+uiPES4QEVJ3yNZbPwh+7 8BcOyHzwoCprhZjHRLaICZ8gb4aMZgXgIXGsig0AXpcwHwwBfzW4SYQgaamHRlfWD5UCXOt7tNUB EgnaiIZ7/1Sx2WN6s0BvzeNYAP/grnUUssSmlwnYpw8lG0XCsiHSTbVdOEtIwyzuwudji/WVD4FX XecqawqgVDKR6jpa60wBgr4sUVc+VONSmFu1Uy1SEh9u7RuoGFOoWB8K0h35dGtziXVSktgBg4xy 3CO6BbkGq5B7ml64pex6THpi4efgsWtahdXqudTdIgl2D6rfN8DXggBz41iRltFT2e8R/P4uPFQT IjcOOULsXuq+eH4LqRk3uUmH0sm/u0CISLpRyHHqJ+doeHjCvnuzBAKdYA17vMy4YYmk7NAJ7y5Y i8Xj0wI7c8pvTV29zD5f6KhVuZ0VjYkfkL5OSx5P6jEjdEuh+pslrNzkLJvmkXChZei9ci0rI9Au Wrc/IdB+PJWt2i4WsUiFiZctYplBFUeIMl+1N6o7Vf0ie+M2U3ypZYG/dr2qsfd4cvqJ57OO6WuU gBLKxNB24jpAP3MXalbXHF+i6KFDlrsXLHcxBfgkev2prTEiIp0cOWDgpNBc31SaHRriRADILlMU 6bgml2pnLaStUlI+n+4/vn17c6r78qBYezYl06r73QbXgtMhu0VDPK4d4aBAeS4Ox0pZmRNJkgIX oZiw166pqgabM1Vz9QOyeJIuUpBHtJFfLYrSnFRRvy/6mRRYMsEHQ1OFLzfIwJyUvNtFddwXC0EE 81wR6nh3eLhvU/0TMAaBdAMANTjDOOrSKyqUkaBdHGsuYa1py4eyBvEQReSuooWTTSTRqIfTQbOA zdDVez1HaKPdFLI2fxHa2CSIEm568+Hi1YKTwwwidPGH0m6O7W62BMjMsnBCkLVVOwgLCebdxTMw NBlgTKmjsPXQP4NmnVQWY/R+hU4J/xCueDAA795RWfwMV+apqVEiaZ6vxMSYYZqaqBmoGkKDckaD 107Gp2NqAbccJ9kJa6kw9XARx7ZHOaHy3km2iRYYjQZ0WooWtKKXrFv1CgScttrlBI6THjikBrmB qpPGWgao7VLzjYkMK+sfZ/2L8cpLoBIpwxCl7tO+3OzRLtojh3kvmctdOTVrZAfwQm65W07J27O0 7i+b6rTG+rOz3aBasOuMAoiUPWIIMjTJkVxLfM6Pp/uq3MxUWFl3fVFvFGLfuz7iQTrrDaohI1YN jEfwwDAkHonvEZu+AdmNr5GE/XLnh4LY2QkeyZ+/HOC13rjDCWpbX+EbLnYT7lvOrF8WPYpJkJgD Lc67d99ic83mGUlGGSFy2bAKijcPhwURQhMnl/uU/x60AIyPIdENdxf3L9iTfPLPm0mm7YMq6u7u Db745Fau61BELLfR+LZXTkRGCw2QIu2/ZZCOEKUbUnxSR08sfjDbXuLFpDOdKY/MDh4L+Dqvo/3L VBRO+n9Gx8OJUik7pxE8UeN7y8Ai3emoWvLMEwv6zNPO43kuAABZLYlkRLtMceqbQ9GXhq2s+7Gd QtAzyK5bWmuGCkcPHdn/yyFVOt2+OcFkrQVUOGfTbKbgpJHrdkWHBSKY0LJergDbYUjzmL61zQR/ 7t+aPG99vg2+rh5XPEpj+yKmJYuhBh5FqQkoz8LcdOHNYfXhenV1/WdgKODqW8Cv/tA/H758DPjq +lPwy+rz9err2ffWNNAdI03jbPzeKo0u4ilomIN/k9K6LQ25FVKRuX1tByOYJP+GPDhV15wA9MY5 PgYRfagsnC6mz5JP+FRJiwhIL7NdR7ptxXdMih9SFRYboe7Zu6OMTS2mNC9wcELyEluDhCsOeHq8 RF7zGbu3K5QvT/3M0g1QgOYsMvrg6Kyt94joej23PvRIabof8kFhj9+ah8dEKp5yM5tnMlhnHF6b xICkr6t/AT1F18dlbmRzdHJlYW0KZW5kb2JqCjE4IDAgb2JqCjE5MTMKZW5kb2JqCjE2IDAgb2Jq Cjw8Ci9UeXBlIC9QYWdlCi9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMiAwIFIKL1Jl c291cmNlcyA8PCAvUHJvY1NldCBbL1BERiAvSW1hZ2VCIC9UZXh0XQovRm9udCA8PAovUjE5IDE5 IDAgUgovUjE0IDE0IDAgUgovQSAxMiAwIFIKL1I5IDkgMCBSCi9SOCA4IDAgUgovUjcgNyAwIFIK Pj4KPj4KL0NvbnRlbnRzIDE3IDAgUgo+PgplbmRvYmoKMjIgMCBvYmoKPDwvTGVuZ3RoIDIzIDAg Ui9GaWx0ZXIgL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnicrVnbbuPIEU2yefJXKHmJBzB72Gxe/Zax HWSwyczuRMiTXyiKsriRSC1JeaLv2AX2d1PdVc0uirRsDIIBxnarL9VVp06davlCLnz9j34W+6uf r35eSDNmfxT7xYfl1fsv6UJKkUVRsFhuruTCM1MWUimRLuIoEUG4WO6vpYjeLX+6CmKRJlkGU5br 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 Om74TmL0nv8DkzwGmIplyyBsZxVs4Jt+wtp9Zs/nfy2/zaCpetdoT99kkWb5kaIbG/Xx07+/ySYs vSPunpOVpIPZlyUXrZWZ5JVubOrd3x/uvv8mY38xjPArcVf0VmNSc715Yz59/vQauu6pQo2kcY9U 57s3hktfWI3LFHIi05rn9o8LDsxDugLCzMwV1KTi/KPaV31+AT2u1GCLvV4Vol3N3BzKm6Nv9u0F +6LDakbbVBPpjZ5S8Pk94w+8f6BuIuFpOHQYiku/zrKcqzqO0pya7ppjW5QTmOivZ24mqr+zXwjQ 3eyT06i05TWJRJAKrqs8VAf7VubPyDSnxUH2PLX5ntReRl2wzVhmLt+9que/2CE72+PqNBOngD8m jJ7WayocEaP5gnoM7ue5b1a6Q1lUGysA5Qt0GUp8sSHzya9WvuFR57fhrV35nO8uXAmbuQQ6vcg8 tWfkPwP7h+Xix6sfr/4HF3ygzGVuZHN0cmVhbQplbmRvYmoKMjMgMCBvYmoKMjMyNQplbmRvYmoK MjEgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCAy IDAgUgovUmVzb3VyY2VzIDw8IC9Qcm9jU2V0IFsvUERGIC9JbWFnZUIgL1RleHRdCi9Gb250IDw8 Ci9SMTkgMTkgMCBSCi9SMTQgMTQgMCBSCi9BIDEyIDAgUgovUjkgOSAwIFIKL1I4IDggMCBSCi9S NyA3IDAgUgovUjYgNiAwIFIKPj4KPj4KL0NvbnRlbnRzIDIyIDAgUgo+PgplbmRvYmoKMjcgMCBv YmoKPDwvTGVuZ3RoIDI4IDAgUi9GaWx0ZXIgL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnicdVdNb9s4 EAV69K/QMQFqRhL1eXQTpxHg2q6tbDdALrJMJ+pakivJbbO/oz94yeFQpCIvcjA8GpEz771549jE sWzxh595Ofkx+WE5EFMfeWl9Sic3m9CKSRy4gWelh4ljTSHFciglkRX4IXH5g/Jq1ras6Yq6aq/T 7xPP50np/iprmPjq+MRx4ljG6ur4JoKuTQKqgg3L65eq+Jft4fWABKF69KvoXosK3ogI7Y/pXsdH 53XVQdR1iB+r6O8OEm3i+30NBwg5xO2vKVn3Wu+hehqQsD9TXs3fDiIZOPNGIRQbB+7Zh0rWTl3j 0PyYcVxaIh5MqUPFG9bUccWzVAR9SA6wqtP0yBAa2pf/ExAhMa8IUWVHEYoJ5dd7l6p3e1yfr4ry dCzyopOge54APRqgYJMwHhQsojeb2OSdAxr1h65231neyayBOig28nwtexP8eorFI1Tt4N1V3SF9 utgdQ1YiTGKydUF6iFxmZaGABpYw81BLTjzi9JxkvSQl/m7sE49GHH9KYqDgScQDEBCeX5/lOaYA T0390mQl3BkSWysmu6Djc6Xex8oy8T0EiJG+XdFhrXb/XnussXdN/C/UWWRAJIYBBa6DGUJLL45H 8L9Ydk2GF2hu81eW/1NULwTVostJKqxQd3vKOL75+ZhBoTQSDWHbH6UCIt43xUE6SNX6Ggksckqp Y06GHLmQk9XXikMgUFS4NkVWAZAuH46e9KKVtxic5nV5OneZUAJHCjgLQgHEWGVY1+8Tq9oCzvZh 8EaTiEezj/o2fPetPgNOvPyBTLhdaEm1bGxemRRjrId6z1XHy85RebrifaEmVxd3YA2rcoZSD3yR bkh9c95Jtaqzd/lI6Bewu61PmOajjt6a4uVV4h4Yw/Z8lcup5zd6vUBc27Yh1TWkmaI0Q1CHjK2b 7KXv1XONyV7L6StZ00pNRaJifLhY3ELQpYYqd5KmiN/tomWrDeD0atY0abdW28ojvoa1YeNquxpl CwLnKINlyd0w4lVO+0DNaFa2AUpZc1KBIWobu0v5GjV2TVaN7F+KGsYYI6dzc6plNXxTU1+bWTGS zoXhkmt0wGVftAaRTxbnpcgz8B8vEuKNtFHVEvfBRjwwKVGOp2bskg+j2YQou1x2zZHVq7lh+6Lt mmKHXWrMz51pLFFvLJ1EztOulFX7G9mZG5u/BjQdXIz+kMvBAedqL32aj4M/st/A2Bcda8oWM7Xz 4xJ2DT83XkY0P68XOEaRGjdlIbFB5KVbPxxVTG2kKitxg9rQCE76av2ULD8jkc77zcqhdEXVCso9 67Li2D5fA5u24TTpQ7JF69Sa3a7u028Ip0Zptpnj9BprZjvCY715J4aV1Euo9fJXcje/g/M9Q7J/ Zlvc0PrOZPvnHR6z5R3Wq1H7lqQPq0f4ieYBwn3u02jlzP9eb+ZbuMkzkV9tJHBcWEOXSL6sF4ks l1udHnYAiGMf2LajANrMlmky34LLBbbhi8nydvF4xxlTjzRlZvGRMS+L5EuSogC1mc308OEKS5PV Utqq+YM7fZjjLw9dsdHJlNpUcKYEoprRyX0zYOMwbVjw6v6d3r/MN7cPPBkyTaxnn5JFkgIHHjWc SHFo5t4n6VLx4how3Eti+DAFQxAG/yKspSmKQKDqR090FUy3j4sZkmzbwmRV8+vHzXq1nUunC7hV u9bU4+NG4aknwvPU+jr5OvkPPKtXE2VuZHN0cmVhbQplbmRvYmoKMjggMCBvYmoKMTI4NAplbmRv YmoKMjYgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVu dCAyIDAgUgovUmVzb3VyY2VzIDw8IC9Qcm9jU2V0IFsvUERGIC9UZXh0XQovRm9udCA8PAovUjkg OSAwIFIKL1I3IDcgMCBSCj4+Cj4+Ci9Db250ZW50cyAyNyAwIFIKPj4KZW5kb2JqCjE5IDAgb2Jq Cjw8L1R5cGUvRm9udC9OYW1lL1IxOS9TdWJ0eXBlL1R5cGUxL0Jhc2VGb250L0NvdXJpZXItQm9s ZD4+CmVuZG9iagoxNCAwIG9iago8PC9UeXBlL0ZvbnQvTmFtZS9SMTQvU3VidHlwZS9UeXBlMS9C YXNlRm9udC9Db3VyaWVyLU9ibGlxdWU+PgplbmRvYmoKMTIgMCBvYmoKPDwvVHlwZS9Gb250L05h bWUvQS9TdWJ0eXBlL1R5cGUzL0VuY29kaW5nIDExIDAgUi9GaXJzdENoYXIgMC9MYXN0Q2hhciA0 L0NoYXJQcm9jczw8L2E0CjI1IDAgUi9hMwoyNCAwIFIvYTIKMjAgMCBSL2ExCjE1IDAgUi9hMAox MyAwIFI+Pi9Gb250QkJveFswIDAgNTAgMTQyXS9Gb250TWF0cml4WzEgMCAwIDEgMCAwXS9XaWR0 aHNbCjAgMCAwIDAgMF0+PgplbmRvYmoKOSAwIG9iago8PC9UeXBlL0ZvbnQvTmFtZS9SOS9TdWJ0 eXBlL1R5cGUxL0Jhc2VGb250L0NvdXJpZXI+PgplbmRvYmoKOCAwIG9iago8PC9UeXBlL0ZvbnQv TmFtZS9SOC9TdWJ0eXBlL1R5cGUxL0Jhc2VGb250L1RpbWVzLUJvbGQ+PgplbmRvYmoKNyAwIG9i ago8PC9UeXBlL0ZvbnQvTmFtZS9SNy9TdWJ0eXBlL1R5cGUxL0Jhc2VGb250L1RpbWVzLVJvbWFu L0VuY29kaW5nIDEwIDAgUj4+CmVuZG9iagoxMCAwIG9iago8PC9UeXBlL0VuY29kaW5nL0RpZmZl cmVuY2VzWwoyL2ZpL2ZsCjE0Ny9xdW90ZWRibGxlZnQvcXVvdGVkYmxyaWdodAoxNTEvZW1kYXNo XT4+CmVuZG9iago2IDAgb2JqCjw8L1R5cGUvRm9udC9OYW1lL1I2L1N1YnR5cGUvVHlwZTEvQmFz ZUZvbnQvVGltZXMtSXRhbGljPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRz IFsKMyAwIFIKMTYgMCBSCjIxIDAgUgoyNiAwIFIKXSAvQ291bnQgNAo+PgplbmRvYmoKMSAwIG9i ago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIKPj4KZW5kb2JqCjI5IDAgb2JqCjw8IC9D cmVhdGlvbkRhdGUgKEQ6MjAwMTAyMjAxNjQ4NTgpCi9Qcm9kdWNlciAoR05VIEdob3N0c2NyaXB0 IDUuNTApCj4+CmVuZG9iagoxMSAwIG9iago8PC9UeXBlL0VuY29kaW5nL0RpZmZlcmVuY2VzWzAK L2EwL2ExL2EyL2EzL2E0L2E1L2E2L2E3L2E4L2E5L2ExMC9hMTEvYTEyL2ExMy9hMTQvYTE1Ci9h MTYvYTE3L2ExOC9hMTkvYTIwL2EyMS9hMjIvYTIzL2EyNC9hMjUvYTI2L2EyNy9hMjgvYTI5L2Ez MC9hMzEKL2EzMi9hMzMvYTM0L2EzNS9hMzYvYTM3L2EzOC9hMzkvYTQwL2E0MS9hNDIvYTQzL2E0 NC9hNDUvYTQ2L2E0NwovYTQ4L2E0OS9hNTAvYTUxL2E1Mi9hNTMvYTU0L2E1NS9hNTYvYTU3L2E1 OC9hNTkvYTYwL2E2MS9hNjIvYTYzCi9hNjQvYTY1L2E2Ni9hNjcvYTY4L2E2OS9hNzAvYTcxL2E3 Mi9hNzMvYTc0L2E3NS9hNzYvYTc3L2E3OC9hNzkKL2E4MC9hODEvYTgyL2E4My9hODQvYTg1L2E4 Ni9hODcvYTg4L2E4OS9hOTAvYTkxL2E5Mi9hOTMvYTk0L2E5NQovYTk2L2E5Ny9hOTgvYTk5L2Ex MDAvYTEwMS9hMTAyL2ExMDMvYTEwNC9hMTA1L2ExMDYvYTEwNy9hMTA4L2ExMDkvYTExMC9hMTEx Ci9hMTEyL2ExMTMvYTExNC9hMTE1L2ExMTYvYTExNy9hMTE4L2ExMTkvYTEyMC9hMTIxL2ExMjIv YTEyMy9hMTI0L2ExMjUvYTEyNi9hMTI3Ci9hMTI4L2ExMjkvYTEzMC9hMTMxL2ExMzIvYTEzMy9h MTM0L2ExMzUvYTEzNi9hMTM3L2ExMzgvYTEzOS9hMTQwL2ExNDEvYTE0Mi9hMTQzCi9hMTQ0L2Ex NDUvYTE0Ni9hMTQ3L2ExNDgvYTE0OS9hMTUwL2ExNTEvYTE1Mi9hMTUzL2ExNTQvYTE1NS9hMTU2 L2ExNTcvYTE1OC9hMTU5Ci9hMTYwL2ExNjEvYTE2Mi9hMTYzL2ExNjQvYTE2NS9hMTY2L2ExNjcv YTE2OC9hMTY5L2ExNzAvYTE3MS9hMTcyL2ExNzMvYTE3NC9hMTc1Ci9hMTc2L2ExNzcvYTE3OC9h MTc5L2ExODAvYTE4MS9hMTgyL2ExODMvYTE4NC9hMTg1L2ExODYvYTE4Ny9hMTg4L2ExODkvYTE5 MC9hMTkxCi9hMTkyL2ExOTMvYTE5NC9hMTk1L2ExOTYvYTE5Ny9hMTk4L2ExOTkvYTIwMC9hMjAx L2EyMDIvYTIwMy9hMjA0L2EyMDUvYTIwNi9hMjA3Ci9hMjA4L2EyMDkvYTIxMC9hMjExL2EyMTIv YTIxMy9hMjE0L2EyMTUvYTIxNi9hMjE3L2EyMTgvYTIxOS9hMjIwL2EyMjEvYTIyMi9hMjIzCi9h MjI0L2EyMjUvYTIyNi9hMjI3L2EyMjgvYTIyOS9hMjMwL2EyMzEvYTIzMi9hMjMzL2EyMzQvYTIz NS9hMjM2L2EyMzcvYTIzOC9hMjM5Ci9hMjQwL2EyNDEvYTI0Mi9hMjQzL2EyNDQvYTI0NS9hMjQ2 L2EyNDcvYTI0OC9hMjQ5L2EyNTAvYTI1MS9hMjUyL2EyNTMvYTI1NC9hMjU1Cl0gPj4KZW5kb2Jq CjEzIDAgb2JqCjw8L0xlbmd0aCAyMDcgPj4Kc3RyZWFtCjAgMCAwIDAgMzUgMTAxIGQxCjM1IDAg MCAxMDEgMCAwIGNtCkJJCi9JTSB0cnVlL1cgMzUvSCAxMDEvQlBDIDEvRi9DQ0YvRFA8PC9LIC0x Ci9Db2x1bW5zIDM1Ci9CbGFja0lzMSB0cnVlCj4+CklEICahmfIF0QjRwXRoLS60F+F/r/////// ///////////9f610tcEsrXhRNAME1RDDZh5GRg3vt79/v///////////////////f4f9h97eyQ4P hlAbyGZ/ABABCkVJCmVuZHN0cmVhbQplbmRvYmoKMTUgMCBvYmoKPDwvTGVuZ3RoIDIwMSA+Pgpz dHJlYW0KMCAwIDAgMCAzNSAxMDEgZDEKMzUgMCAwIDEwMSAwIDAgY20KQkkKL0lNIHRydWUvVyAz NS9IIDEwMS9CUEMgMS9GL0NDRi9EUDw8L0sgLTEKL0NvbHVtbnMgMzUKL0JsYWNrSXMxIHRydWUK Pj4KSUQgMwy8hg3JqQfDww8G9+9+/3///////////////////v8Pw9vvbwzooPhuEsFwicdLrS4W F/r//////////////////9f6161wSwguFEKZhl4AIAIKRUkKZW5kc3RyZWFtCmVuZG9iagoyMCAw IG9iago8PC9MZW5ndGggMjA5ID4+CnN0cmVhbQowIDAgMCAtNDUgNTAgMiBkMQo1MCAwIDAgNDcg MCAtNDUgY20KQkkKL0lNIHRydWUvVyA1MC9IIDQ3L0JQQyAxL0YvQ0NGL0RQPDwvSyAtMQovQ29s dW1ucyA1MAovQmxhY2tJczEgdHJ1ZQo+PgpJRCAmpHwc+C/8IMEDwR42EeIPuGtxbdBh2GNvaDw3 eTVe/793wwrfa/Hvd/+/x/D/w//f+/y4/f/v3siZ+g+3T7u7/f8O32g+G59N7DUNtbwnfDEJiCwY QYX8AEAECkVJCmVuZHN0cmVhbQplbmRvYmoKMjQgMCBvYmoKPDwvTGVuZ3RoIDE5OSA+PgpzdHJl YW0KMCAwIDAgLTQ1IDQ3IDIgZDEKNDcgMCAwIDQ3IDAgLTQ1IGNtCkJJCi9JTSB0cnVlL1cgNDcv SCA0Ny9CUEMgMS9GL0NDRi9EUDw8L0sgLTEKL0NvbHVtbnMgNDcKL0JsYWNrSXMxIHRydWUKPj4K SUQgJqEMwweF/hBgg8EfMGj+9bW9IGGk3wmN/Dvq/0HuP/feH/Ye/9/sH9/h/cmv/f/v+9/sPv/7 cP/bf/D+w09v7C7a4MGji70GsMUOQ2T+ACACCkVJCmVuZHN0cmVhbQplbmRvYmoKMjUgMCBvYmoK PDwvTGVuZ3RoIDIwMSA+PgpzdHJlYW0KMCAwIDAgLTcwIDM3IDIgZDEKMzcgMCAwIDcyIDAgLTcw IGNtCkJJCi9JTSB0cnVlL1cgMzcvSCA3Mi9CUEMgMS9GL0NDRi9EUDw8L0sgLTEKL0NvbHVtbnMg MzcKL0JsYWNrSXMxIHRydWUKPj4KSUQgJqIaBn+EHhHjB6w9JvQQYfv7fTet/+34f4f/32/3/7/8 O/3+/9/7/f++//f/1t/DXv4aXaWGf8L2IXgwuH+O//3+//3v/9/v/95dX//5BPgAgAgKRUkKZW5k c3RyZWFtCmVuZG9iagp4cmVmCjAgMzAKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDA5Mzk5IDAw MDAwIG4gCjAwMDAwMDkzMTkgMDAwMDAgbiAKMDAwMDAwMTkzOSAwMDAwMCBuIAowMDAwMDAwMDE1 IDAwMDAwIG4gCjAwMDAwMDE5MTkgMDAwMDAgbiAKMDAwMDAwOTI0NSAwMDAwMCBuIAowMDAwMDA5 MDU3IDAwMDAwIG4gCjAwMDAwMDg5ODUgMDAwMDAgbiAKMDAwMDAwODkxNiAwMDAwMCBuIAowMDAw MDA5MTQ2IDAwMDAwIG4gCjAwMDAwMDk1MzYgMDAwMDAgbiAKMDAwMDAwODY5NyAwMDAwMCBuIAow MDAwMDEwNzc0IDAwMDAwIG4gCjAwMDAwMDg2MTggMDAwMDAgbiAKMDAwMDAxMTAzMSAwMDAwMCBu IAowMDAwMDA0MTUzIDAwMDAwIG4gCjAwMDAwMDIxNDcgMDAwMDAgbiAKMDAwMDAwNDEzMiAwMDAw MCBuIAowMDAwMDA4NTQyIDAwMDAwIG4gCjAwMDAwMTEyODIgMDAwMDAgbiAKMDAwMDAwNjc4MyAw MDAwMCBuIAowMDAwMDA0MzY1IDAwMDAwIG4gCjAwMDAwMDY3NjIgMDAwMDAgbiAKMDAwMDAxMTU0 MSAwMDAwMCBuIAowMDAwMDExNzkwIDAwMDAwIG4gCjAwMDAwMDgzODIgMDAwMDAgbiAKMDAwMDAw NzAwNSAwMDAwMCBuIAowMDAwMDA4MzYxIDAwMDAwIG4gCjAwMDAwMDk0NDggMDAwMDAgbiAKdHJh aWxlcgo8PCAvU2l6ZSAzMCAvUm9vdCAxIDAgUiAvSW5mbyAyOSAwIFIKPj4Kc3RhcnR4cmVmCjEy MDQxCiUlRU9GCg== ------_=_NextPart_000_01C5149D.24D9C640--