Ngày đăng: 2023-05-06 21:05:01
Mục lục
1.Memento Design Pattern trong C# là gì?
Memento Design Pattern được sử dụng để khôi phục một đối tượng về trạng thái trước đó của nó.
Điều đó có nghĩa là nếu bạn muốn thực hiện một số loại hoạt động hoàn tác, khôi phục trong ứng dụng thì có thể sử dụng Memento Design Pattern.
Một Memento Design Pattern có các phần sau đây:
- Originator: Là đối tượng chịu trách nhiệm khôi phục trạng thái trước đó.
- Memento: Nó giữ trạng thái bên trong của một Originator.
- Caretaker: Có trách nhiệm giữ các mementos.
Để hiểu rõ hơn, mình có một ví dụ cụ thể dưới đây.
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAisAAAF1CAIAAACmoD1lAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAHpjSURBVHhe7Z0FfBVH18bXr8WJEMHd3aEUKIVCKS2l7u7uTv2tvpW33lL76tCWCqUCpUJxd4cQAoR4cm31e+buJoQgDS1wSXL+v206Ozs7u3uZmeec2ZlZ3rIsjiAIgiCOOoLzf4IgCII4upACEQRBENGBFIggCIKIDqRABEEQRHQgBSIIgiCiAykQQRAEER1IgQiCIIjoQApEEARBRAdSIIIgCCI6kAIRBEEQ0YEUiCAIgogOpEAEQRBEdCAFIgiCIKIDKRBBEAQRHUiBCIIgiOhACkQQBEFEB1IggiAIIjqQAhEEQRDRgRSIIAiCiA6kQARBEER0IAUiCIIgogMpEEEQBBEdSIEIgiCI6EAKRBAEQUQHUiCCIAgiOpACEQRBENGBtyzLCRIEQRyrmLvytFmz7TAfHyd36cQnJ9u7RO2FFIgg6jtm7g590RKzvNzZ3wexaRO5b29nJ0poM38vveAyOyy2a+ObcL/cv6+9S9ReSIEIor6j/jLD/9BjZvY2Z38fXONOjXnxGWcnSpAC1UnoPRBBEAQRHUiBCILYA5+QIA873nPNFVU3ZdjxzmGCOKyQAhEEsQchuYHrlJO9995ZdVNOGe0cJojDCr0HIoj6TtX3QGLLFp4brnGNG2sfqoaxeo36/TQ7LGRkSH16WsGQvmy5lZfHmRYfHyu2byd17cJLkrE9V1+63Ny2jQuFea9XbN1S6tyRT021zzVzctQff7GKihHm4+Ol7l35lGR9yTJ2D6EQ73IJTRqJHTuIzZvZ6cHB3wNZpaUaTs/ZbhUVccEQJ/Cc1ytkZuJxpHZt7DTmjp3hL79mR4HLJXVsLw8ZHDnCMAuLtJ9/MbdtR5iPiZH69pa6dkYYD2isWWts2GDm7uA0nZMkPjlZbNlc6tSB9/kip1ZgGGZ+gb58pbl5i1VSwvE853GLjbKkDh2E5k2dNMTekAIRRH2n5goU/uqb8htvs8NSxw7K8KH6ytVQIHN3PmdZfGyM1KkjzkWzi5TanHlmbq4FBfJ4xBbNkdh17tlCQyZCOOS/6z5j0xaEhaxM1/BhlqZqs+eZ25E+okCZGVLP7shKHtAvcrUDKpCl68aWreqU77Tf/jB37rKKi6EZaP0he0J6Q6FVC9eoEfLwYYLPZ6xbX37XA/qChTgLl1BOGBrz+kuR/Bj6qtVlV15vbs1GWGzRLObpx6XevZBb+Nup6rSfcKvInNN1ThThJorNmsqDBuD2cPP26VZYNVasDH/9jb5wMTIxS8vYPbjdQmY6pFc5eZQyfJidkqiKOGHCBCdIEES9xNi0Ge27VVKKsJCUJPfpJbVrax+qBrwB9Yef7LClaebmrcaSZVZZGeSHbeGwtWOnuWkzZEn79XcTjpFusKS6bubtxq6QkS61ZznDWdF+mWH7QJxhmrvy2HDwXUivR2IMHDI3wZMoldq0FhoksVO2bIWqsaO4yZRk5fjjoHMs57XrQm9ODE/+Ggms8nInB6BpVmERIs0Nm3iXAq+F97gtf0D78y921DA4SZR79kBW2LMCAX3WbPXLKZxpQpyknj3cF57PlfvDn08Ovv2esXylBUUxTXYibHa/H0oJPcOe1KUTryi4FtIEX3xF/fFnc/sOqBFLCXSd3cOGTWZOrtCkiVghV0QlpEBHA3Xm76hgxuq12GAYCXFxsKScYwQRbaoqEPTAyi/QFy/VZsy0N33OPEvXYPWzg1UUiFNVITHRNf40ZehgtM4QFRaJQGGhVVoq9+7pOv1UoXGWuWMnFwyyQ8EQHxdruwJ7KZCmcboGR8F9xmny4IG8JLL+LjT3aL7Ly/kGSXKPbuyU/SmQuXt3+NPJ4UlfMRUUBCEtVRl9kvvcM9kpkLG83UyiSkqsXXli48Zi61aofPr8+VZxCTLh4c00TJW6d0XY2p2vfvGlvnwly7xBA9y51LGdOvO34P9eZ8+F09LScHtweqRWLXHbVlERfDWrIF9s0RK/DFzA4GtvQn44VYPfI/fs7j7/bHnIYMHrhWcJqbaKCq1g0HXSCHb3RBVqvQLpf/ylzp2HoqOvWLXfTWzahBkpUaX8xttC734IXx4bn5Istm/HezzOMYKINnspUDiMRlNfurxyw1EhPU3u14elrKJAQkoKWmT3FZfIvXvzsqwvW8FcEHZAkDt19N50nTLyRLFpU8iAsXYdi9d1IT5e6tcbFlhVBcK58EW8d90KcZJ6dufTUs2du+wuQTgTEC3XqJEI71eBjPUbgy+9Ch1ikUmJrlNP8Vx1qXzcIKljB6iLsTPP3JYDMbPK/dAbZcQJ0BL4KLbSsG7DxEQWyRQxN/jO+1ZhIW5ebNHce+O1+B1C73+kz1/Ack5u4L7wXPclF8oD+okd2uOWtOkzmc+nG3x8LH4ZCDa0CkKLZ5G6dfHec4dy4nCpRzf4fMaGjUxQ4XKFwnLfPrbLRVRS68fCBd/7wH/PA/477j3QZhYUOkkJgjh8wOGQe/UUkpN5n1ds1VJs0siO570esX0bsWsXFt+imRSRLhvL77d25jk7FfAJCVL/vlL3bnxsLCwzOE/KySc5xzQNWoVG3NndG+RmrF7LNCaC0LChctopQuPGCOPSLJ8Th9qHrEAA2mluzYZHJR1/nD2CAE6MsWGTuSUb3gk7GtE8HJK6dRYaZUKP7TdGLGUwpM2ZH3jqufJb7wo8/pT2y68V8UFj3XrImz53Pht6gBi4gDt2hj782G6UQhPfN3ftiiS1IM8QaRYmqkCjsQmC2IPQMM198fkxr76wZ3v6cdeoCkmoikvhYioGg0kSV+nWSzIfE8PjKBp0t1tIiLejGXBHKt/TVOJxQxicMBMwL+7B2Ym0/myYw/6wAkEjN9eCexEBronYuqUdBtCSPUPpLMss9xu5O9g7ntYt7Z431mGYl6ctXGSVlmmLl1rhMOKExARlYH92hqqaO3eyZAj7/dqsv8KTv7Y3dcZMO571ExYVcaqK23BiDMPI3rYn5ffTzGxHIPHgZmGBHSYqqVMKJLZuDU+52mQ69tKFIIiawQYid+vqGjO6clNGDBfbtHIOH1NE+sGcMBAECIwTBqK4125FYiE1pXJYGhwXffESq7hEX7gIu7wiiy2bi316RY5ZnBEZenAQWJ6m8/dvsdg7NidMVFCnFEjq0tF76w3VJtPxiQnOYYIgjnmsQMDcEem5isD7vEJGhrNzKLD3//abLRtFtpuCSD9bF7Fta4TZELjlK/Vly4x1G9ih2DipZw8hoXqLAdHy3H5T7Ptv7bt5H33ASRSBVxS5f59qaewN3qQyZpSTjqig1o9EUL/5ztiy1TYupA7tlMGD4Pjbh6oRevs9NrDnrznY2NgEy9Jmz1F/nq7//qc+f4GZkyMkJfJeLzxufcEiFv/r7/qs2eaWrWzMTHx85eg1deo0bPqffyEfs7BIiIvVl6/Sfpmu/fobS79uvRUMCQ2SeFm204PwJ5+zyQQR5H59pK6dq45E0Fev0WbP1ZDhb38gB33eAmPjJrO4hN1PhREX/uZ7beqP7Ohfc3BUaJjGV3aAcBweRPt2qobT/5pjFRShwvAe9iOY23K0+Qu06b9qv+FZ5hjLVxo7d7GOEZ8PBqN9rg3rKF+9Fjlo02fqf8zS58031m9kcwPj4vYyJIm6yD8bjS1kpMvHDRQz0hE283ZrkcqCMAqY1LmjHOnLAsb6Dep3P9hhlFt58CAxK3OvkQiSJDZvVjm91Nyeq345xVi9hh2SZblLJ/eZp6P27WckQvNmnN+v/TyDvedHYq9HbNmCDdGOYBUUqj/8qM+PvMuRJLlDe/eF57JayfOIQH3UlyyNODqGFVLtywmNG3luuFqIfPTBKixkc2YDAYT5mFjXkMGuU8eIzZpW3zIzrHDYWLVKX7QEKZG52DDdfdVl+AGrp2zSeK8OSSJCPVKg8ptuV3/8WZs7HxsKGSqMOnlK+IefENDQ6K9YZRWVCA0botSG/+8zaAxrjufM01esNDZsFLIyWbMeEaHg/14Pf/w5BAP5cJZpZW9DxUAdU+30S5fpa9ZxobDYrEmlzBxIgczycpTy8Acf4XQImPb7LCZF8xcaS5cztdi1S0hL5ePjeEFQp3wf/vAjdebvuKixbKVy3AAhc49hGHzljdD7H2l/zMJRqU1k8rnXCyULffixinub9jPLGfe2aDEe09y0mffFoA7ziqORuDf126nhT75Qv/seCqT9NYf9ILiHNWutkhLUMT4u1k5J1Emiq0CWprLh0bIM8YBsoDqEv52KGsTSQ2lOOlHuwz4MsR8FatrECoXYDNDIWDguGDRRZVKSxcaNzN354c8msVHapWUsfXID5ZST7eF8gHe5eUmEPQrxsMKqtYPN4EGVkQf1t9UOaXBIX7fB3LiJhSPvhKBeQmwsHx/PPKf5C5mttnQ5q8uKwisu9bupTAjZiAM/boONwmjUiNN1A0+KavvLr8jW/q2IqtTTkQjq9BnhyV/D+WAzFVg3rm5sywl/Pjnwwsuht9+H32AVFrEZCXbr/MuvOGTPIaiGvmJV6NNJaPfhDDnpC4vQ9AffnKj++jvcKTvZfrEgP5O/Dr38mvrzDLg1LH/7naquswl6i5eo7/1f6LW3zPUbEKMMG8KnOa9nUd/YOiilTg+DsXkLc7wixpqQ3lDq1o2PT9Bnzwu+/lb4qylQUGfCILuinzUHX38bfONtY+UqNg8DkQUF4U+/CL2FG/7NyMm1IpG4E1wFohWa+EH4yyloX1gkUQ9ARQg8/1LJKeOrbmXX3oTi4aQ47OiGuX5j8LmXSs65qPSSK0OfTXLqmiKL7dsqw9lo6QMhNm6snD3etpCsYAjF3n/Pg7jh0gsuDU58nw2DBi6X2K2L64xxLGwjS0LTJpL9vgfVLaJSbEhe3z4QQhaJqpSW5r7gHNidbEfT9NVr/c+8UHrZNSzzM87z331/6M13jBWRUd3w4Vq1UE4bw8JQoJIS9Zvvy+96gP10p51Vdtk1gSeegSG43waEqFMKBEfY/9hT/vsmVG7wVypb6qqYm7bAW/I9cLf7gnP5WMfAN8vK4JFwXrfnyku8d9wsdmhfWRzhoOw/n+xtnMflPnu876H7PBedD5fF8fF37Ah/893BB4Lrc+eHP52kr1uP8s16G/r29t55q+/xCa4zTxdSUzlBYB7S1B9hD0LVUBVleDYV61BBG8x8Z1yNvmARm0we0RipW1ehUZaRnR388CNt1hzLH0DOeFLvXbd5771DGXIcHxtjGYY+b776y3Q7B3X6TJiWxtZtUB0Yoe4Lz/VNuM9zxSVis6bsHnbvhlQfaDgsUQcJh82t2fripVU3Y9UaZpMdGXiPB44+nAzm969e67TUogg/zH3xBUJTNrr6QEB7lBOGui88T0hJYa1/MGhs2cpueOVqC8XbNOHZuIYM9t18A9wg55wISC+fWEXbBEFslKmMHO7sImdFlrt3895xC6vUQNct3OGatewHWbbC2LzVLCioHNfHJgxdfqnr1AoRghsUuQ19yTI2zjt3B9qWSEKiOnVKgeBJwPUOffBR5Ybm23YOqiF27eK68lKUb/f1V0vdunAVU1Z5UXSfexYKk/uyS9znn81e/0SAUw+X3B6vWRUhJsZ7zZWe669xX3y++7qrYGfBkrIPQRjsHoADEf7+R2PTZtvvgXJ4rrrMfdlFqEveG69Vxo3lExMRDy9K/e4Hc8dO3uOWBvSzlycBOusfcxQR9cGsmNmnDBkspKdps+eh6NsPLh830H3V5SznSy7y3H6L2IoNV7XCqjZ3IVsoZXe+Ov1XI2c7qo2Qkuy66DzPtVe7L7rAfc2VyqgR9uXsKm0VR6avE8ThBkXddcrJ7isuFVs2Z7uKIrZsgbrpe/JRuX8/XpLsZPuH58X0hp6rLo999QX3OWeIbVs7o8BZn16mPHyY97GHsIkVi5NWwns9cqcOcpdOzm58nNSrh7B3bzMf43OdMjr2jf+5zzubzSJ3R1oJQeAT4qQunZVTTnaddXokYUQvWzb3wIJ88mF58KA9o8llWWjWVB7YD+2D3DfichF7U+tXJi277Gp15u+cGuk72geUm7j33xQaNkS4eNAJ7I1RBM+N13quvAzFDuHAk8+GPvyYdVUxpz4r9p032KwCmP/5BaXjz4WqRc7gfA/c4zr7DNhc7H3SDz/B2kKk3K+P75knxCaOmWZuzy296ApnBjjHxTzzhDJmNO/zwh9HI25Hem690X3R+VxpWdm1N+nw4iO/P1wopl6R+wH6qtXlt9xlrFqNMETR99RjyphRMKzKb7lT+2sOzDHe5fI9NoFFFhSU334PeyNlmlKHdr6nHpe6dCq/4171m++sALtDsXUr1Gd7YALA6WyVFGSbmBj7v//CHwo8+Yzz1jcmRureFToUSciEBw+CiyLsGjfWc+N1Yos9CxUTdQkUZrg4+5mpUwla0rg4tMgwiSqdbxRCPjHBHqhiqexdjl0pUHfY+5KKt+6whCon9LBXJomJvNsFJ37PyqSNG0FCXGNPRkrkA1GB6sDdR4HkxD0mMpsYlOfMZq3Mx95lRJbwQRpO01ibhkxEkcMdxvgO9GIYphtaD/sFrdi8me+JR+QB+/voqmGgcbBCYZZzpKed5SzLbHAdbrLqeiu4cCjEqgx+DfvHjDwLJ0vMz8PjEPtQp3wgqW9v6EHVyXS+e++sdEqqwlcZ2waFQJ2xwxyKVMUuc9ur2F+WDpGrrtZ8SkrVIihkZtgmmI2xKw9l0dnZGzaTzu+35QeIbVrxsXsKKOoDu40IEAm21mEwJKSmyH17C5ERpfDGtAULrcJCbcUq1gUXqRhyn952t7W5ezerihGMdevVqdMqp8jZ8gOs0hJLDaNKV/qIqMDa739WptQXLrblB5glpVbYyZCoe6B9RNGFIXXALSPdHnvJpnlWRLIBmRXjJFELUPacQ42yKuUH8F7vnlPSG+4lG5VIIswvHGXJGjcScDlYY1XkB8CKOlg+EK2EBLYYduNGTiaZGajCB5If6Kj60y/OC06XC86T3LtH5Mg+iCLLuWGa0CjLuXpWppCWKkACqy33Bb3BL5mSvOfHjDyLgFaC5OcA1CkFQtF3jRxedTKdPHjggYpglIGJVMX7ZDdZZXg0du1xdzaWgcQRjRk2pNLBN5YuN4uKjcVLzUL2tklISpT693HmlhuRWXIHx05Tk5QACleTZARRG7CKitQvp4S/+NI23cTUFNfokZUvfYmjSZ1SoKhj5uTuWZg9oojcfi2+v4P5HPaYtAgwwXiZWVvsu1g9utkjf4wtW/Tly/WlS60ythyk2Kmj2LRpdaOM45RRI2JefKba5Dh7Yy/AqgBt895ze7U09ua97SYYdE46gqidWIVFwf+9XtihR9GAYf6nn7cX3eFjY+Whg2VatTpKkAL9K8xtOVWHJ2iz/rIXKARCXCxblvsAHpjYuSN741Lh96h/zqo6cM6IrBRih1FDpDatnD4QRZH69RUasFE9ViiszfjdHsOGXfn444R0xz1i82ErlI+XZKlrV2Xo8ftuQnKy0CCx8g6tQFDIzJQH9q+WDBv7CAp1IxC1HMsyUWus0lL20hfV1rQ4t1vq38dz3VU8OUBRghToX2GsXRt87S19zVpO19VpP4U++MgscN7Tit26sD6xyODsfRESEtgy7xXrGoQ//yr86Rf2udofs4Jvv+dMZeA4NkQnM6PyrZUysL/YorldYbTZc6zIO16xWTM2VrtCJMTOnfgkZ9Sc+vufofc/ZGv3RiYn6Rs3qd98H3zpNWMDG2Eh9+3NnJtI5lZ5eei9D8MffcpeLGG3tFSbOz/4xjvhr7818/e/NCRB1FLY4NLuXb133hr75itCOk0UjRp1aiwcn5jIvkIo7XmDAuBiey69iI+LqzoWzvvAPe5zz7IFIPjSq8E3J9q+i9iuTdw7rwsVC3sUnzC6cmCb957b3eefg3yqjoUDbNhPehrv9Zr5BWwldo2NgeHj43wPP6CMPNEeULDvWDghKVFfudr/4CNsMQ9dZ8OHkpL4tFRekc2iIqYBoTBsNj4lmQ2EO25Q1QEOobffhTBULrIAlDPGeW++XmzsLI8Pd8r/wCPaz9OtEBs+wFbWaZAkxMZAadhwo/JyXAu3B23D0fCXXwdfeMXYzEYlQdjY6KbkZFzOigwu4sr8rvGnuS8+n6kgQRDEYaVO+UBWUZG+fAWbCFZlM7dus6ouoHtYEdLSrHDIWLdBX7LMzNnuyI/bDY2RB/bnvQf7DJ3YppXnykvl7l3ZgCLThJ9hrFzFbnhLNhcMQX6gKL7bb1Z696oqP0A+YYiQzsaX2+B014nDqsYIDZK8N1wtD+pv97DBmzE3b9GXsV/GWLuejazzByotD+XEE9yXX2y/5mHfXc7bbaxazVIuX2lu3oq7srT9D+cjCIL4l1Av3L9C6tLJc+N18pDB8IGwKyQmyIMG+J59ks3lTkk+UBecDS9J8uBBMS8/773jZnnwQCE5yRkFnhAvdmzvvubKmFdeUE4ds++abGKjRnKfXpUr+LJXSo0bVevIFlu3innyEfhtcAGF1GR7YCuUTGjamM1RveQCsVkTOyUfE+MaN9b31KNQzaofb+WTG+A2XGeMc51ysjMtnCAI4rBS63vhzN35rEPswE/B+3xCUiIad2N7LuvvisDG8sfEcEJkBZ2SUrbijj3XTFGYclRMAzJzd1SOSUOLz6bsCELVXjjllJO9t93ElroJhZADDwlxudhKCoqzBK+NuXNn5Rg5HGWiUmXsteX3s9mj4bD9rS2WiSxD0tgaPHtPiaik/OY71O+n2Z1skEDWS7a/r/+yPrdAgAurLGfL4nFLbH4cMvcwpal6D5oGx4gLhdjzVk67kySIFvuh6D0tQRBHgFqvQEefagrku/+uqj1gRwHtj1n+R55kL6ggKmmpsS89J/ftXVVOCIIgagXUbNUy2DcX3nrX3Jptu32u4UPZKxySH4IgaiHUctUO9DnzSsaeUdihR8kFl6l/zLJCzAOT2rdVzhh3lD0wgiCIwwUpUO3A0g2r3M/eVwUCkRV9OD69ofuGa9mXxMgBIgiidkKNV+1DyEx3nTom7qN3XaNHVg5dIwiCqHXQSASCIAgiOpAPRBAEQUQHUiCCIAgiOpACEQRBENGBFIggCIKIDqRABEEQRHQgBSIIgiCiAykQQRAEER1IgQiCIIjoQApEEARBRAdSIIIgCCI6kAIRBEEQ0YEUiCAIgogOpEAEQRBEdCAFIgiCIKIDKRBBEAQRHUiBCIIgiOhACkQQBEFEB1IggiAIIjqQAhEEQRDRgRSIIAiCiA6kQARBEER04C3LcoLHAGlT/HmhY+h+iDrAc12VW9sozk4d5ZX12vWLws4OQRwOEmS+aJzP2TlikA9EEARBRAdSIIIgCCI6kAIRBEEQ0YEUiCAIgogOpEAEQRBEdCAFIgiCIKIDKRBBEAQRHUiBCIIgiOhACkQQBEFEB1IgotaTIPNOqHZilZWZW7Ya6zcam7daJaVO7OGjtv8+RB2GFIgg9mCFw2ZurrF2HTYzdwenqs6BCJAHc+Mm52h+gRP7r1F/nlFy9oXFQ0eWjj8n/OXXTixB1ANIgQhiD8aGTf77Hyk+YTQ2/2P/MbZsdQ5EUL+byqQicjT04cdOLEEQ/xRSIIIgCCI6kAIRBEEQ0YEUiCD+FWZ+gb58pb5oCf4ibJWWGus36kuWaYuXGGvXWcUlTroKrEDAzN5mLFvBTlmxyszdYYVCzrF9CQSN7G1IxhKzS6wwNm8xC4ssw3ASEERthhSIIP4V6s/Tyy67umTsGWWXXhX+bJL67dTyW+4oPeu8stPPKbvmpvCkr6yiYicp5KqoWP1lpv+hx0rPvZidcuHlgWdeMJav4EzTSVGJYZi78sJTpwUmPFZ6wWVIjA1n+e9+IPzRJ+b6DUjgpCSIWgspEEEcJnRd++XX4Bvv6EuXW4GQpenG+g2h9z5Uf/oFh3DcCgbV738I/OcZ9ZcZZgnzjczdu8PfTYWGWf5AJIs9mDt2hN6a6J/wuPrzDCs/346ER6X9NSf46pvsKhs22pEEUXshBSKIwwPkQV+7jhMEqUc3oXEjTpIQaWzN1hYuNouKENZXr1V//MXcloMwHxsjtW8n9e4pZmVYZeVW6V7TgJhW/fJrePIUC0IlSUJ6Q+Qp9+whNm7MKy6r3K9O+yn8+WRz77MIotZBCkQQhwfLMKROHXz33x371quea64QszLteHN3vrVrNwLG6jX68hUI8B6PPHiQ75nH4z58xzfhfql3L04UI2kdzM1btdlzzYjrIzbK8lx+Sdzbr8W+96b3thvFdm0QCRHSFy0xlrLcCKL2QgpEEIcH3uuRhwyWTxgipCRLXbsIrVs5B0JBK+C3/AEzZ7tVUIgIIStTGTlc6tyJ93ohRa6TThTiYu20NmZenpmTa4elHt1d48byyQ34+Dh52BB50AA73sovMHOdNARRSyEFIogDoKqcqjnhagg8L1Rf6oaPjeVjY5ywLPGKbIfN0nKrtNzcvt3Yus2O4d1uaI8dZrjdXNVdnFJcYhUyrQJCYjzkxw5DhCrDZrnffplEELUXUiCC2IPgcUMe7LC5M8/c7QwBYGiaFQjiL4K8LwabHV1TJEmo0CTL0Hm9YiSbrnOBABfea/kfTlEsl2IHzVC4cri2BVGsCPMuhXc5t0oQtRRSIILYg9CwodA4i3O5EDa3bdMXLGRdZ9CeUMhYtVpfvATeCUuWmY4tckZNEZISudQU+32PVVCorV/PpvWEw8b6DdqSZVbxnhHbQEhJFjMy7LC5abO+aLEVDMInM1au1lestOOFtFShaWM7TBC1FFIggqiC1yN1aC82YS07FCI06avgq2+q33yvTp4SePl19dffOMPgFUXq1EFs1dI+o4bwCQlSq5ZiWirC5q48dcr34Q8+Ur+cEnxzovbr71ZkuHYlYnqa2KoF72Eujr5kaejNieFJX4eR+O13td/+ZCncbqlNa6nyVRNB1E5IgQhiL8RuneUhg4XI6xYzd0fow4/Lb76j/O771R9/tsr9vCRBe5ThJ4gtW9jpa47YtrXYrQsEDGFj3frAcy+W33mfOvVHTtdssalEyMpSRp4o9+zOuuP8AXX6TP+9D5bfcS+00Cor4xUZEigPHyqkN3ROIIjaCSkQQeyFmJXlPnu86+wz5I7thcRETnLGSUMkhMwMqV8f1/nnSD262ZGHBHwg19iT5QH9+JQUNltI4IWkRHnwIPmEoXxSkpOoAqlbF/cVl7mGDRGyMnmvx4l1uYSsDOm4gZ6LLlAG9HciCaLWwluW5QSPAdKm+PNCx9D9ELWCBJkv1g5YbJ7rqtzaxnmrX3PY9NKFi/Uly4xdu7hwGDFCQrzQvLnUtbPYuiXvqZAEjtNmz9Wm/WQWl/Dxccxx6d8XkeaOneFpPxlLliEsNMpyjTxR7NgeYSsU0lev1efMY9990HShUaYybAjyV7//wSwq5uPilOFD5eMGsnwjmJu3aH/ONjZtMgvZnFY+NlZq3Urq20vcu//tlfXa9YvYTe6Xg/8+BLFfUGyKxvmcnSMGKRBR6zkSClS7IAUiDjtHR4GoF44gCIKIDqRABEEQRHQgBSIIgiCiAykQQRAEER1IgQjiX6GZ3I6g+eduY+Jm/cvtxo4gvfMniJpCCkQQ/4Qy3VpQZLy6Qb1pcfjaherdy8JPrFK/ztHyVVIggqgppEAEUVPCJre61Hxro3bJ3NCY30OXzws/tUb7cKv+Ta4+K9/cWG4GdapRBHEIUH0hiOpYFqdbXMjkgoZVpnNrSs33N2uXzgsNmh4Y9Xvw/hXq59v0P3YbS4vNbL9VrllmhdsjCWwjCKKGUHUhCAeoTqnO5YasdeXmn7vNV9dr58wOd/jB3+3HwFULwh9tNRYVmVvKzbyQFTA40zlpLySebQRB1BBSIKJeY1hcsWqtLzPnF5q/7DImblJvWhQePjM4fGbgtiXhKdv1bQELzlDY5FTTQmKOP5jCkAIRxCFBq/IQtZ5DXZWH+TqatTPExrDtDlnQmKUl5oJCY2vADFV8N+6f0T1ROCFNSlY4j8S7Rc4tVAmICPB7xUi8IhweG5BW5SEOO0dnVR5SIKLWUxMF0kyuULW2+K1N5eaOkJUXRthYV2Zt9ZslGvOEooLIc65KWRL2ViwWiBzCbiSAeJdgRZQMCXgnIDJt+zZXf26tiurs5Ls3pEDEP4AUiCBqxMFb2Ktayr2TxDWl5s6QBacHHg8C5TpUp76UNFIg4h9ACkQQNaJ6C2vxKNcVDoGV5eVdApcX5vz6nkFr9QpSIOIfcHQUiEYiEHUGR3I4vnKcGmt2cwLWxnKrrMqYaYIgjhFIgYg6g60w0KEKKSII4tiGFIioi9Rn9dn/cASCOBYhBSLqIlVa4daxAjal/pR0iySIqDWQAhF1nJPSxWe7Kg90UE7JlBp7hXowY5S6H4laAykQUcdp7OXHZEjXtZTva6c82FG5qoV8SobYp4GYrPBC3VQj8oGIWgONxiZqPQcfbVxtTQQUsF0hNhF1bqGxpIgtaL09xD61UIdnB9FobOIfQKOxCeLwk+rmOyUIJ2dKj3ZyvdrT/WBH11mNpZ5JQrMYIdnFu8Ta70CQC0TUHkiBiPpLIy9/dmPpzZ6uT/p6nu+i3NZGGZQspLkFr1SbO+jI2yFqD9QLR9R6DqkX7uCYFreyxPxquzEpR19ZYhzSJNYYievTQGoTy4eMyLeFdCtksnW1gzoXMuwA+4tw0LA0ky3bcERAjd57AW/qhSP+AUenF44UiKj1HEYFqkQzuYWFxpfQoVJzdam52f/3xbKJT3iwvXxpc9nZPyh6RIqYINnKVFW0DPZlvD0xhhW2hL3i9wSYmCGZ/XLLyRr/39uBIwUi/gGkQARRI46EAgHTspBr2OCKVGteofltrj5jl7E9eMALNffxD3VULmxaIwU6vNDXGYjDztFRIHoPRBD7R+B5l8DHyXxjr3ByhvRkZ9fkAe6XurtOzRSb+thqp9WQBF466PfrCIKoBikQQfwNkBWPyGV6+J6J4vlNpMc7u97u5Xqrl/uOtvKgFDFRcVSHfSCV6hNBHApUYwiipogCB71pHycMS5PObize2Fp+uKMyoYNycTO5a4KQ5OLlOjrHlSCOEKRABPFPgNhkeYQhqeJVLeV72yn3tVcuaSa3iiEFIohDgBSIIP4VLoFrFcuPbyRd2kzqGE8ViiAOAaowjESFT3ezLcXl2LA+ibNjqm4NIwniZb7mE+cFnkt2sROTKt4WVIJDCTKfViVnXHS/SDyHo0hT+cqBIAiiDkAKxEFOPujjyh3r2z7WN32IBzFo8a9pKSOm6oajG0Z7Zw3zvNLD1SVBcIv22QdDETgYxb8O8WSP8X3R3+3ERsBF28YKb/ZyLR/pRebbTvH9PtRzYysldu+lm7EDE7tPAxFHN5/se7uXyzlAEARR+yEF+htMi9sWsLDtDLKZUy1ihHObSD8O9pzTWPYcWITg38C5ObGh9PNgz749MzjaPk74YoD7jEZSnMzvDFkB3WobJ9zRVr6znVzpYCGQ7uHHZUlfD3TjqBNLEARRV6B27W8o163G3/qbfucfOCP4v/Xa2jITkQ1c/NNdlPGN9t9rBoFpFSO819sNvyfFvZ9+sxQX/2AHBSKkmtzvecbgGcGn1miaycXL/KmZUvMY9o8CXwie1gd93O/2ceNy9onE/qGf55iBOrSJQ4IUqEbAE9pUbt63XD19Vig/zD5CiRJ8TUsZBRqlP8PDQzYaeXlvxCtKlPmXuruGpYlh0ypWq89Fx7nwewansqQ4+tFWbV2Z+Wm2vr7ctLM6tzGrPVle/rmurkEpYsiwSmlCO/FvOFqNLXVoE4cKKdAhAB3a4jc/3qojbJd7CA+MrykDPetHef8c5j01i4kHvKScoPnbbgM+04JC5jNVRRa4ljGOhZivWu9vYbmphpUTYDLjEfk2kQ433eS2Bqzpu4zXN2hLiqpnQhC1DurQJvaF/jEODc3kvs1lmgGgJYNTRFhaHeIF1IQGCtevAatJRap12bzw8JnBF9dpdsqqQGP6J7NkhsV8IDsybHIbypnMIJ+4SAdCTtC6eG5o1O/BtzY5lyOIWg11aBP7Qgp0aOgWV80jCZnclzn66lJzdoH51fZDUAsoUFlFcoRLqKuNqAdQhzZRFVKgQwOFPrbK2scQJJTp8+eE2v8QgNMzY5fhHKgByKrSHkOgsseAIOo81KFN2JACHRqKwI2L1A0Ax39r4JALNCpHOKJTPM+GCdlIAutPsMNkpRH1AerQJgAp0CEAiYBOnJoZsc4sLjtgHZLTYxM2rOUlJk5HfUt18faIncjKLuzfAke3RSw4gqjbUIc2AUiBagpEoqlPuLS53CuJmV3luvV9xIITea5ljNAlQWgfJ8TLf9+VBhsNCgTjDuE4mT8tS3SLbLRPI4+AqBKNm5V/yKpGELUOVBXq0CZIgf4GlObuiUKPRGFUhvRsV+Xe9opLhMHFupXvX64iAVTn8/7uxSO8Pw72jM2MvD/9O8o064edhmayd7BXtpDHZEhXt5Sb+Pigwc0tMD7Lpr4Cou5DHdoEIAX6G3wSv/BE74ITvV8OcJ+SKammtbnchEhcs9D5KLLEs6WRUeTjFa5bYo0UCA7Q82vVeYUG7L6+DUQI2MVN5RLNmp1vPL92P/3dBFHHQH2hDm0CkAIx1pVZ0IN5BcaKEmaIodjuDEZiqmzwTuD3fLxVv22JesX88K6QU7jhuCDSPvpVzl7uC7yctWUmzp1faKyJzH6wgfAsLzavWRCevE3/LY9l/leB8dFW/YHl6uyC6vUwZFg4F2kWFBnrq2RCELUU6tAmKuEtNj35WCFtij+vomUniBqSoPD7Thap5Lmuyq1tFGfn36Ab5u7dlqbxgsDHxfJxcZymGTt2skOiKCQl8rJiFRebgQAScB6P0CApctphJRQyC4ssXeckSYiP531eO/qV9dr1ixynfF8O/vscRiAhXw90n5wh4WIw5jpPC8AtubmN/EwXtgSOX7eOmxGEsDT2Cec3kUZnSIrA5OeXnca4WSEkSFL4X473dE0Utges+5aHP4iMrraBw/RRX/fwhiKsuj92G8NmBivjn+/mOqsRuyLsvBfXaSPTxUubyQGDm5qrn/EXy7aSFjHCO71cg1PFEI7u0E+PXJQ4EAkyXzTO5+wcMcgHIuo4vGma23KMzVuMnO1O1D/C3Lmz9KIrigcMLRl1aujDTxCjr9+IXWxlZ5ynzZ1v7tpV/uAjLOaEUYGnnrPPOrxo8xaUnHk+u+J5F6s//uzE1hKoQ5vYF1Igoi4DH9+bn1c85vTi40eUX3OjE0scMahDmzgkqBeOqPUcpJdJMbSfFrzW8Yt3eZfLc+uNnmuvdA4cOmbO9tJLrzZWrxESE9xXXe657ip91ZqSEWNwSGyU5X3iYalVS//jT6nfTuV9XuWUk2Oeftw+8TCi/f5n+b0PmVuzxZbNPTdc6xo31o4/RnrhiLoE9cIRxL8lJhTImvcHx/N8UqLrjNOcWIIgjg1IgYg6i2gagzbMS9i6gZck5aQThZQUzjD0lauxGWvWWsUlcGv01WvMvDyW2rKscr+Rvc1Yt56lWbXG2LjJ2r2b0//R9Cxdx7nG+g0sqzVrze25VtB5eW5pmrkrj72XWruOHcUNZG+zysvtow5Ik5dnbtpsrF5r3y3LQWXzz/bCNM3CIuSfsGFN210bk8uLnHiCqCWQAhF1Fq8WumT2FxYcoPg416mnIMYqKy8ZeQrbTj0z9MWX/rvuLz31jND7H1toygsK1K+/9d9yZ8n4c1mC0aeWXX5N4NkXtUVLDlmETMvYlhN45oXSsy9CVqWnneV/4BHt19+5MOsog94E/vNs2ZXXl447hx095Yzym24Pf/2tWVRsn20Fgtq8Bez0y64uPnkcu5mx4/2PP21m59gJKrGKikP/9zHyH3H1+Hc+uHPYmj+dAwRRSyAFIuomgmV2yF3XI3sFJwhS755Sty7OgQhWWFV/+FH9PdJkWxZXVhb6+DP/w49rCxfzHo/UpbPYvLm5a3fos0n++yboS5dHTqopVjhsrFiJzIW0VKFxIy6sajNmBv73uraM5QMHSP15BhcKCY2zxA7t+LhYbcGi4P9eV7/5zj5XmzXb/9Bj4c8mmbm5YmaG1LmTkJHB+f1m0V4uDnwpqKP6/TS4buG4pG86n/BDxyHOMYKoJZACEXUTyTTOm/e1Rw3qisd18klObCWGYaxaLbVrK3bpIiQm6EuWhV5+Ha2/kNzAd88d8VM+j33jf8qoEUhmbtwUePEVNPfOiTVDSEvz3Xdn3OSPfQ/dK7ZqYSGfbdnaL7+yQ6kprvPO8v3n0dgP34n93wuuM8Zxkmjl7Yb44ai5NTv86RfG2nW8zysPGuR75om4Lz+Jeek5ZezJfMxer4XhS6lTpxmr1nAez85e/T/rOabUHeMcI4haAikQUQfhLathye4Rq343eaG4WUtlzGjnQCWiKPXvF/P6S/GffqCMOEH74y8rFOIlSercUTl1DI6KzZq4zzsbCaE9xvoN5rbqPWAHgXe5ROQzZjRzpzp3knr3YrHBsJmTi/8LWZnuM8fzXq++aEl4yrdm3m7e42UKV1Rs+QPwkPSFi5BMbNrUfckFcp9eyE3q1NE1biz0kuUTAT6cvniJOv1XXpblHt02jR6/pUGWc4wgag+kQEQdRDTNC+Z+meQv1gVxy+CRTmwVeLfLNXqk2LwZJwh8YoJVHHkHI4tCi+aR40yi+KREO4jm3ty0xQ7XCIHn3W47CIXg4+MQsFTVLCzkQiFtzjz/fQ+VnndJ+VXXh95+N/z9VC4ySMEsLobUWcGgWVCIXXhjYts2LIv9YRUW6qvWWEXFfFys1LN7QdtOzgGCqFWQAhF1kPhg6cnLf7F4Pi8uZdOwfRwgwPPwQirDnMK+E2DhhMreNsviKsae8aLAVax/UyMskzOc6ZCWaXBhlg8cLD42Rt+aHXrtLW3WbM60pD69XeNOVYYczyfEs6SGAT+M3YzAaiUUyyorY/H7g/f5xMxMPjbWKinRFyxKXLfSOUAQtQpSIIJzi1y7OGF0hoitQ3ytLxKCaQxd+1ervK0GL07pfEIo4e/WZxNFsXlz/IXkaPMXmTnb2cjssjJnAIIoCmlp0oHdkf2gGWbebnPnLjbwOjvHWL2GRcb4xJYtrJJSfeVq7Iktm/keecB7/13KyBOZ2lXAezx8SjICxrYcbfpMNkDOMPDXyN5mlpbaaQBcH7l/X2VQf8u09EWLmv30TWpZvnOMIGoPpEBsofj+yeLpWRK2cVlSn8jngSuReG5EQ3b0tCypd2Qp36OMS2DyMCxNPCWT3SFuY1S6iJusyeLBNcQr8t0ThZtaKW/3ct/TTumaIAyI/CD4NY5LERsoh+1CRwefFrpozmT4M4Xe+C+776cLrhrsRcvggWKrlmjr9fUbAi+9qv76W/irb0ITP+AFQUhJVk4ZzScmOKlrAHt1tGx58LU3tWk/hz78WJ09l5dEsUljedAAtqqpwpZJhRTBE1K/nRr+fJJZskdaxEZZytDjcUtm7o7QR5+GP/pUnTETf0NvvWusXe8kiiA2byqPPFHMzLACoYbz/zhz4fdxob0nFRHEMQ8pEPue/D3t5EkD3Ni+6O9+rqtStc11i/wrPVw49Fk/902tq3zT8agQI/GjMqSHO0IbXJ/0c+7ww77u57sqFzaVWke+g/LvKVStL7bpD6xQP8/WRZ67u53ybFfl8c7KnW3lF7q5Tm8k1SIREiyza/bKrjmrTV74q2WPpZntnAMHQRDExo08N1wtde3Mez3hzyeXXXRF4MFHjU1bhOZNlTGj2HC1Q4EXRUvTw998X3bDrVAy3qUIbdu4TjlZ7tcH/o0y5Dg+Pt7YstX/8BOBp5+3ysqFihdOgE9v6Bo3Vh4yWEhNYTOHnnqu7LJrgi++YmzNRj5OIhuXS+7bWx4zivd5fbt2nL542nHr58nmP5o/SxBRQpwwYYITPAZ4dq3mP+o1CAp0dmOnNed5Lt0t7AxbcwuchQsVgb+6pZyk8KbFrSo1v9x7wcQjik/iTsmQnuisDEwRXSK/vsz8c7exK2ThZtrHC/2SxQSFX1dmFRyOJb8Mi9setKbtZAtKtojhS3Xu/S36lzlGspu3LG6j//Bc5QgBKyFUsQqlaJp3//R65+2r/S7fcydcsT61GVxY/FbOYd0w1q0TWzQTW7aQB/YXM9LtaDYKrkULqVsXPjZGTEqEv8IS9O/jGjvGddZ4wXaAVM3cniukNIC3JPfsIbZuaYVCEAnkJrVtA3UREhPN/ALe7RJbt1IG9JX69BYT4sXmzeQ+vdzjT1NOOhGeDdRCaNyYaRIOtWmtDB/mOnkUJwpCWqrYvp3Uq4eIQFam3LM7+/gC7iQzXWzZUu7WRRk8UOrUkTMtq6hYbJgmtW8r9egmtWsrJCRwppntS14lJeTHJK1NbaFK1e2kqr8PcURxi+z7eH0aCGhP0HTsDtfi5fhQbGCMOjtHDFqZdM9HTexdXD7bb535V2heIau18EKWjPC0iBE0k4OjcN6co/RNEYnneiaJE3u72sUJZbr14w4DkjBth948RrigqXRZMzndwxdr1rub9HuXh+t5+1K58iZKc4v87B9eviA+6J/XtMvJ101E5GH7PtAxzDGyMik8ZYh9upt5zLgebJq5VRaoRpEeliaiQsG42x5gC2Y7B44WLoFD9cnw8D6Jl3kOtxE2YFpxa0rNksP0QW9Yhyelixc1lTslCNN3Gc+uUXGthjDjOC4/bK0sMY9lS64aR2dlUlKgvRQoYLBiigr08y7j9FlBOGT7KhDSt4kVGvt4r8h7RFbTIAA7gpa9GjyqGTSjcwLzqMImt6TIbMs++Mg+RVyoWqtL8X+ua4IYF4mBhCwtNnOD7JHh8QxMFlGCURkWF5moEXe0le9sq8A7WVRkXDYvvDyy3D1ADb+nvXJDKxmnLS82r1oQRrYwu1JcvG5x2wLWX5FPQya7+EEpoldktwfPCbed5WVNAy73a55T+ZEV0sgCB2MNbh8unajwHeOFNDeP3wG5oeXaUG5tLGeXTnXxPZIE3CF+inzVChscVBDJVJPbVG7CecLzRoXKFlawzKFrZp03f4rJCz+3HfhpL7YSDynQUVOgqlUJxRs1Yuwfoco2N1rGnA2uPryheE5jqVeSkOoWUC9Qs1DgIT+fZus/7jTWHabvNSgC+7jRuY2lVDf71lETH486hd8fLtHrG7XJ2/TaIkKkQEeJymqDC2/1m2hP4UHD7bhmQfijrfq+1QZS8UI319BUMcnF4x8JZ6EcLys2H1upQreQ/tY28sMdWZOHTFC4R6dLMLtQ3Lf4zW+2s6b/7MYS2m7EbAuYb2/Sn1+rBg32feJpg93NfAKSPb5Km5VvfH+cG9f169bn2/RL5+1pXyByx6eKuGeYV1COl9drk7bpb/VyDUgWkc+XOfr5kbrdt4E4aYA708PSfJerl2ncda1kPCz06YK5YWgG5POMRtLrPd1QoB936FAySA5iYMG1jePxIPgpcIc/7DDe3KhB/45LEZ/v5uqRKECnN5SZfsPqHC/gHnCHM/KMZ9Zof+w+2latzcFbWFKgqCgQQJW5fWn4pXXOAPcoKpDdof1IJwVXRx1ZX2ZigzC0jxPsvgTcz3NrtLWH9aNBsFMvay7hx5+ZZ8DnO6+phL+fZOuHS+qONPR1hiiA0okGHcqB2vJQB8V2Zaoh8zwad6T8K9/8cIv+6y4DzhBa/6e6uOB2OIkieEQerTba5ewAc0GaxwjXtJTPaizNjXxoCzFNfMLFzSRUAyTGbhyy5ln3K/KBJZXuYfG4ELyQSH4O0Al49IWRySpukcvy7HXR/QIfCOpof1G/kVcYlc7eiyD/wakidKhEZa4YPJjzmkj3tVe6JQqwAybn6PMKjQyPcGFT6aoWctWhd26BuVNQUFQtOH8QoRPSoFtStccn6jmSwN3aWonKCNKqwGLrFC8+0EGBkVeuW1Nz9fuXq+fMDl27MPzOZg0FGE0tDC8UctSmwwj07M6l6pXzwx9v1X/bbSDw8Eq1tsjPUYMUaC/QuMPe/zrHQFPaLEa4vY0C66kaYdNCkXp0lXrz4jD+vrdFgx5AP5r6ePgHTqIIcA7e2KhdMT/8+gZmBiJPKADKIryr/6zWUBkQkyjzkAEchW8Oa3HiJu2dTdrUHbrAc95IfQgZrI+LhfYHNKsmw7LhzWz2mwuLWD7xMrPOEEhW+K4J7Brbg9Yf+QaEEJWwoZvPDVqvb9Sumh9+chWrMNDF3g2E7lUeDbksKTLvWqreuFj9arsOkxYy1iZOsLMlCABH2bRg7vDwPPatRDaoNSh1I9PFcVkSrJ9zm7AJAP0qpkNElENAPLbxjSToB7wrhM9pLI1oKDb28sh8TEXMSeliRoUphsshASJhaaW7eXghp2WJ7eIE2ExrSs1HVqrf5eqo6Sjbr67XJkXGFqESDUsTUR0QOLGhiDxhKfavGMAC0+q0yB2eniUNTBYHp7AE2IZEaq4NLnRmIxaJ0+0qCR9rUIqIO7dzwy3BA7MTp7rY6yLE45ShaSLsVzsZhBBtiKs+VSNqMqqD9vSZNeq2iNeCElzZpVAJEvyyS8cPNzRVvL2NPDbTSSALXDWfqUzj3tus231xdkxAt+AS7QxZi4qMgkiviUvk7HIJGXtslXr5/PCDK9QVJex1ESoMgCEJG42F9oduWVAyZ+eg5ASsb7br0DO4LPDGUKnS3AiwrrY1Zeas3WaszDX2sjsJGpZL4E/NknokiXbeDd3Omy2bsGEtKzH/yjcgjXCD/JEbxT1ChwgCoEDkhcyN5SYMqf7JwqkVdaQa8DluaSO/0t31Tm/X//V1Y0PgP12U4WmsJLlF1u7b8RN7u+5sJ7/RkyX7sK/7lR6um1srt7RWKmNe7eG6pJlsl8B0t4AEiH+5u+ukdDaXAMqB+JBhoWZVvk8Fu8OsUsBSRAVL97AXRZCxBzsoOPfd3u5rWzqjCiF+yAqRr/V0XdqcyeT7fdhdPdZJQVVCAlwX577Xx43txlZyjMShckFRnu/qejfyaB/0se9ZhqYifds44dFOLP7dPu7/dnU901V5L5IMiR/qqPTee0pi3WZPs0LYoPKsLjX/u06FWsCKgcagOXaORay2boms9Lza04XiiEKG2gIjC4cknrXsdjIblHS746sS7CBbZ+eg6KZzLjwhmG92ZCW4I7vHIKBzm/w1yrBEg+yZ2QETjwD7cWRDsUuCAG0rCLOBD5BJ3L+dZ+tYPCCbgfRIR8X26nA56GsleC5bHQGeJhydtz/EMQ11aFOHdk3YT7EgUC7hnqOcoeVtEyckVnmNDQf5ihYyHOpYiUfDjTr2xkYt2+9YVShPhws4FhAMBFD3OsYLVesGahfqLcQDjhLcqd/zDPgx9swDJEL1s8H/q91ObtCcvovJBQy00xux9Q6Qw2a/OSMSibCtK6gJn2/T8VyV20dbtaWRmyGIGoJKRB3a1KH9t9SX5zxUNIt7bo2GAoQiCcPEiWV9YnyvyJtVlBWYLQ8sV+3hbf8eSBq8exTcMxtJjbxwTbhPsjU4KHA+OiUIV7eUUaxROVGsx2WJ17WSEV8aGYT2Z76B+mm/4ZQElgAWIrw3lPXYvecm7gixOacw32CWdo4X2sYJQcNaXmLaMzPQHNiWHbyln3YaE1aoVy8I37tMRRvxebYOPY7kQRA1hTq0qUP7b9nrn5moBMUW7fLbmzSUs6pYFgdVQACluVeScH0r+Y62csMaOO9/Cwrxc12VV3uwfvCT0qXIoB1j4mYmQijiV7eQH+igQHjuaKtggxqhrK4tNT/cwkzCcp1bU2oFDfbytkO8cE87+dY2MsQM/pOduQ0q/OZyE64VPLlML5s/BM8Jnpx9NDtg/bjTwPOiGuN0XAVPd1sb+aEOymmRbnSCOCRQT6hDmzq0Dw4p0AFBew3Hv9ocFzgKaPS3RkrqwBTxsU5KU58AK88++m+I1ATWeS3zfEykwc8LW8+u0V7doC0oZP2BZzSSXuzmuqm13MzH/tWgkUhs11jI1W+7ja9ydNQN6MolzeTLmskBg01IYhlVYXvQ+mEHGwgEEUJNWF9m/VLh3GwsN19Zr03ZruO6zX1MhF7q7rqljZLl5cuO+lJJRN0AJY06tO2ubHujDu1q0LpwrB33ifxGP1sU4K98c1ZkQQEbNOI5QatI5eYUmDj6Z76BqrKm1ITPsbbMnF9o/ppnTMrRV5aYG8otpEEChNGy50dOmZ1vQBiQD6qfS+RZTAHrNMsNWgLPI9nSYpbmrwJzVWStBAjJ6lLWsfbdDiM/Ug38BoerbPKbm/3WkiJzXiFyMHEJKESMzCe7hJYxTP9wtEyzVpaaxSoXcerNH3bqU7az17ZLis05BQaua7+DhZ8kC/zodClW5kt11in3WUW3Bu5gV5hlgttbXsJ6uufkm7h/OEa/5bHuDkngddNaVWrNyTdm5Zv29D1FYHkuLjb/KjAWFEZn0REodzVXtSpo4/asC1dHQSGZuuOAP8HBf5/DCMp55RKLsGNei7yzQYHICVgj0yU09wpSREoaCvwPO4372isN3azz6ott+r3LVNT9UzLZS3jo1ooSNhUa/3D2iOcSjXshMrMVvpS9QDDq5k87DdQgGGEXN5PxF/lgF78DJO3kDKYK8OZRyAtVuBrWoGQRVQYb6jsKc6FqQTzGZIo3t2H3UKJbX2033tqkQRdx/wNQYHi2iMkf+ayQj8oQT0oXcfO4KAr5zDwDAWQE78cr8T4ROiSgOsOYg8YgfVMfPypdwiEYfB9u1d/aqH2araNW7gqxWvxnvtnEJ4yITFTHPaOi4UFwFvwz3HZM5Cw0AjV0yI4cKDa0LhyxH1Bh4KBc3VJGTQub3NwC49GVaqUr87cMShE/7uuGZ4NKfufSMOq5c6DWgtaH1kQ4ptZEwMVQujpPC9jxMFMgNne2Vey+KS0iOVcvCH810D0sjb0ggR32ZY4OsTkulXkk0MtPs7UbFqmVy4vAlmryrR+BZj5h08nsa4Ew0W5fEn5/i47mfuYQbxMfDwPugy36dQvDMMt+Pt7d2CtsDZj/Wa29uVFLdfG3t5UvbSYnufjCMBvMBpusiZdNRbI7tBcUGtcuDMNVggCc0Uh6pYfLIzJnaMp2HXJ1ehaTVTwdYiCrD61gg+c6xQv/7ebCPWsW65zfGWLXshWobZxwf3sFZ+GU9eXmtB0G3KN0N/O3cN37l6tQR3t5kTLdenOjjgfBWadlSa/1cEEXUaORpuY1+giBfwhaE4HYD6gSsAefXq09u0Z7eR3rJ6zJGB4bVEXUmRQ3D8cFBuMfu6lDgDjiUIc2dWgfCPKB6gswFc9sJMPxh6mFv8uLzcdWqUfzYxNHDvKBjhEfCI072uv2kUmXO4LW02ucz5wDeAODU8UxFYuWLik2Ptyio+2+uJncIoaXBbYgL9ymZIVvEyfoJluNF4Xz+FRxZDo7Bff/8EqWW5LCP9CB/Wv6deagzC80EXN9KzlR4cOGtaDInLRNR8yFTSX4QLDVvsnV15Q6Zhb8m0EpQrdEMVHmJYG9qvGK3JmNpAYupy/hkZXq9F2GxLMvLMCDQTzuJCfI+sC7Jwqw83DRWflGZbcBXJlP+7ntleXe2eS4MjbQJLhNQ1PFhm7eK6GZZa+jcgJssfAlxWaLGOHUTDHLK+CeZxeYeBCc0jlBGJ/FusezA+b3uUbU1+85Oj4QKVB94cSG4o+DPfhxA7q1qtR8a6P+SbYOi885XJshBTpGFKjWQR3aB4F64YjDyaZy64lVKrbHV2nY6oz8EMQ/hjq0ow75QESth3wg8oGOJnW4Q7sq5AMRBEEcc7SOFZ7qotzYWm6gcIuLjNc2aPZwauIfQApEEARxCFCH9mGEFIggCOIQ2FBu3rdcvX+5+uRqdcp2kp9/BSkQcfhJdbGvdV3ZQq62uhdBEERVqIE4DPgk7va28uOdlIc7sonQTmw9JsXNXtJe1FRq6qvpyCKCIOohNBbOoYHCPo6Q7OLjKr5oUKKxlT/e3sSW2Tg4OGvecE8znxAy2CcVLp13wFFJR4JYie+XzD61kKTwrsg8u7ywtaCQLfnupGCLDbOPeg1JFdM9LE3Y5DaUmbPyzc0VC0ECnI58OsaLCTLLpEhlmdjr2tkoApupd1wKm2SHMB52TRm7StV57Bke9mXifg3EExuKcTI/M89YVcoWsvtzt3HkloyjsXA0Fo447NCM1KMErPSuicJlzeQxmVKSwiZOIxI3UaZZu0JW66nO2lYHIYoKBPfrhDTprnZyC58QX6FABWFrXqHx+kbt+1ymH3igTgnCja1kpEyNiIca+crWVzn6mxt1W4QgKudEvrffJlaAciCTEo0t1frSenVaZJ4dzuqZJF7XUj4+VcTz2gq0odz8Ypv+7mbNFqHGXv7CpjLyaeoT7G+CmRb7RMpPO40nVqvQMxZ1BCAFIgWqq6S6eNQ4/Av+sot9Q8iJPSrQaOyjhMBz97RTrmopowENG6wy37E0/FSkxZSP+Z8Hetm3gdAlQYQ78p/V6tNr1I3lJmQGYnN5czndzdS0kVe4ln3SWIZyzC0wXlin7YSyxgrnNJbHZjKhgFrAs7m+pdwjUYSn8t5mbdoO3SexCXdXNJfhXSFNyxiWCdzEeJn7LY+NQEXK9nHCeU2kEQ1ZxyM0aUCyeEULublP2BE0IU5b/OYPO3T4QJLAHDWkIYiDQx3a1ajzHdr0dQb2rbn3ervRgMLw/2yb/shKFTY75AdN5+Iic1nJ39sdXolHy5uoOKvKTzlMX02tCT6RfctrQ5n1+gZtUo4+p8DEU0AJcEsIzC80cwIWJOq+9go8m/Xl5oSV2mfZOuRgUAr7Lgtu9Nc8I80jXNtKHpgilhvW1B3G46u03JDVI1Fo6OE9Ilvga2mxOTRNvLmNDMFbVmzhJ4L/FCPzfRqIbLEsg/szMpn8zMbscy/bgibstaDBfs93Nunf7zAWFpkQyNK/7878h9DXGY6RrzPYNFD485ugJEijM8QT0tjWK0mEHWN/pOfgoBS92ct1SqaEohU2raNZlQBqBByO0RnSSemwq9iHITomCCLPV+1nRt1pGSuMbySNyWRpUI+yPGy90WJtT5okhUd9GZcln5zBMumWKCgCv7VKJmht8IOwTDJYJgOTRdS1Us2qWkcyPPyoDGlspoTqnOZmXz22e9rzw+xblEeBo/N1BlIgtmaivQI8CsicfBMihHDIZAvC2/ID2wO+8OmR4oIihWJxYkMJ5j9uNS/yFZ99FcglcCh5p2axoozqhNqIRhCZrIwskohm/cSG4rWtlJHpEipnTtC6oZU8LE2EywUn44xG8vCGbF1Fu8YiK6S5ra2Ci7aIEbL9Fty18Y3kjvFCgcqWi88Lc3/kG7hVzWSf6jE5/rRMtr5hiWbNyjfzVQt3jhtQTe6vfOP5tWqxxokCh5INOdFNblWpJfPc9a0UePqQq4+zjem7DPwmyL9dnAB5xu1BgXBXqJzhyGeV39ioFaqsuo5MF+EqhUxrZYmJ/E/KkDqxu7JWlFgovmhNvt1hQI02lO9VtQ47pEDHiAKhpqC1vbWNguqAEj40TYJZMyBF7J0kdE0QXl7/94UgmsacxA1Lk+7voIzNkE5oKKG0o+nvmSg2j2Ff0lpfxmq63aF9exv54mYyKu/gVLF/stg5QcC5m8otW4Qauvnzm0rXt5JRDZEhMundQGzqY/XC/kaX3aF9Wxvlwqb4lVgmfRuIqG5QqU1+x1Br7GUfPUImyAFSBPMRCfo1EFDpVkS+4MUSHWGOjgJRLxzDHxnRL/AcrDa4C2iz7HgbNMfHpbL429vKt7RRbm4tY7urnfJQRwUNrpNob9C439RavrOtcmsblhjew21t5HvaK1e1YOMcXAKPgmvng2Q3tZKRMypelwShe6ITf2lz9kUvJIYwnNtEQsxVLZhhiOKIbLEL0UIlh+SsKzMrbTRct10cHxsZTAERhT7BaEItwi4syl0hKxCp0UGdDbJAAJm3ieW9EvvUI3ZRSaAlCOSFrGXFtljyyAGVyv64fUBnmdgmmN+wCiOZJCs8pHFniJ0LiUp386hUrSKfKSPqFdShTR3ahwo1E+xt+f9t1WHC4x+2iU+AVMAlerIzHBRHh1Cvmvl4/IWZefOi8G1LwiijaJRHp0uwYuw01UBByfAIaMRf3aDdvDj8ziZN4HnI1TUt5SZ79+faAmOXKjgWn2/T0b5D8zLcQv9k9q8DHerXgN0JPB6UQsiCbc/C46nmL6IKQZOubMH6yqA00INVkQ+2xkfsGNVggwsiCTnNcpwSXBYaU/lZ+8Iw+/YrAkXMXmMB3AlygGTacgiBKaswZNHE2B87kQV2eqFqzdhl/LnbcEW+hYwale5hH5G0P49P1AdQR8ZkSChUhsVNydWfWK0+t0Z7ajX7pNsDy/d8qeHYxLI4WFdvbNAeXK4+s0bFbcPXL9fhzXOtYthYUzwXzDsoh0dkA3meXqM9uUqduEnDw8IuHJrGxog29gmnN5Kaxwiwz2bmGY+t0t7ZrG8uN5FJ90T2sQaoS9dEAZYuYlaXsg9YPLFK/TSb1Wv4STDdUlx8qov1b0PFd4TYt8BRi+H0fLRVv3+5CrmyK2adgVoHpkDPr9VeWqfB0EArm6iwf/4bWysTOij294DhIP2007h9ifr4KvWLbeyb3DB/EA+Z6ZW0/x+wVGMvSx5coSLbuQXmkiITPgdac+ZMxDvCZoNyDw/mnmXqfcvUZcXsq8OwdBCfoHDDUplBhOLeKpa91MkOsOKY7bcggdcuDOOUn3fukaDI17QkyGfvJPbRyZUlBuwv2FbOYTxmRD+cMPuO/Z5DlYRMC9qDAHLYb78NbkPFyRHwP+xWZWWp+eRq9d3NzDCEbmV6hHObyPAUxzeSfPRSuX5gmzIAfjbaTRSQYs36M9+AkYdI1C80rxc2le5vrzzdRflvN9dzXV1w6A/UlwBcAndCmnhrG/mRjiz9811dEzoqZzZyyhNqx6h0EfHYkCea/gc7KEgJU+yOtjIin+3qggdjJ0ZWfRuwxLgobEHcCbJFGH/hx5Tp7CXof9epv+02YNvBopqVb9r2FmQDzUIDF98vWUyKfA58dak5Yxf7AN0f+QYqO0o7/JWeSWIaxCOJ/QR5IXY6vKh1ZU6NhtsEGUtz86ihCTL7GMSyEmNWvpETtGbnG5A6XKV1LN8lgQ1Ghe+FU1C/cCd2v8WuMBtT+sOOvSY/1AFIgVhLur7MRMm7bYkKKVoeeaUBb7p3A9Yh1i1RsI0jGPXXtJBf7O5CEYeLjRPx29kFZb+gUI7LEh/upDzeSbmomWRPM0L97BTpzqoEIoFW+6V16ntbNGhbQdj6ZCsr9XBNYHDFyzzsJvxFAV1QyGQM9XlyDnsTg78ou3Ym6W7+xkjfXeT9LQehgsn5+96fpMSNVi48D1tVwn/7oAi87Y2hMtgfl6wGbr3yRPwfz1gVVEVcFMYjTMiFhQbSodaNaCihhp8Y6V4g6jzUoU0d2odEXX62moN/fNhrX+Xoz61V71oahvdgd8pleIQzGkkukXugg3JLG/mqlvJpWWw4ABpWnIVqBm2wc6gKTK2T0iUI1XWtlIubynC6m3idZhvNu92hXAla7e9zdZRmuBb4C0MMzjuKJhr3Jj5hQLJgdw2jAhxo+XeUeNzYFc3lZjECPJhJ2/QJK9Qfd7LRaADuvd3hhqdAJWGhSL1NiFStoGGh/uiWZXs8DRSuXaSruoGC6scC+B3QpuBveaQHDwoa7xiUnFvg4iJyhQQwGO1IzWSfKP41z9jstzb7zVm7DVRXtAUD6vpYAAJQhzZ1aB8qpEB7sHVo2g72ghHCgBhUFegN2uILmrLlEnaHrLuXhm9YFIaNb58SKe3V8Uk80qOS4Mf9Lle/dmH4vuVqdoVtVc1vsIWnEuzCtZ8XcSBSXPzJGVL7eAGFdU2pCa/CSVQFlNe+DcTLm8vQIdzexM3a02vUOZFOQhtIGiQBARR9WzgBzrLDkDokRv525xsiO0RM0RS3E4C6IE2RxuQEu16J2XEIOGEXC8Bs3O9AW2jbshJzZ9CCJNsTVIm6DUovdWjbUId2Ddn/v3q9AqX5ic7K2EwJhr/d7g9NZfNpcAjFAm1r61g2CBK7cJbhiMzON5r5Dva7IW3LyIqcKJqwg76JrJ5b2XD/LahgH2xhXlGszFa4QU0r06BJpi1UcKHgXb3di3UGMuPIzdQx08MstT/y2bga2/evBLn9lmegMqAcd4gT8JiwHE/PYkOxcQqqKIzQvBAkhOUOBeqXLOB5O8cLML4QszVg/bbbyA2af+WbsPsUgb1QHdGQTe8YkyH5RB4Kh9qyIWLu9UwS7mqnIN7+fWASprp4XAg2ZmWNJeowaEWpQ9uGOrRryN7PXS/BP/91LVl3wRu9XO/1cb/e03VbWxnVBgbKujLzs2xWmuEKoBBADJ7v5nq5h2t0xsFMeujW1ojHACcaTszbvdx3tFVgf9WQoMHB0EOb7haYkqFowjP7PNux0Rp6+BtayZc0ky9rzjqvExWuf6RjAaUdFXtCR/YI9va/7i4oDXKDiE7baegm8+fwmIiHJYWng+r831YdBtoWvwWDFNYW6sxJDaUXu7lubqPA7IIyfZ8LxcXjc3MLjRm7DDxah3jxsU6uF7q5RqczCxHKNGmbbgtM21gBVReXuLsdKrDQLIb1YsOdgslZTReJugoacurQBtShXUNIgZjzjkIJdUF7fWFTCRUDtWKL33x/i3bb4jBa5w3l5sTNOppjmPOnZbK5qK9uqOjB3R8o+i+vZwYgagJ8BXgMKFWbIpPRaghK/ze5OqoaiikKNDwVu08ZRKoBc/tR4mH0wdSy6zBMLRT0i5qyBTzs7azGEmosDuUEzdc3MEMPTgxuflS6hMQo2bCw7NVLYRX+sMN4eo0KxU1QuJHpYqd4AYV+4mbtvc3sLKRBZXh9owZ/DpUE2Q5PE3F703boz61RF1R0DxZpFn7Jpj7W9wI3CB4SWpU/dxv/XctmRdhpiPoASgx1aFOHdk2glUmZgQZnAv5KbMS7xeVta2VDubU+0u6j8jT1sV4pJECxRrs/v9AcFXm5CnlAy45iMTJdgq8NFwGKhYKImAEpbBEEnBuIDEuNlZkLBadhc7m1pNhAVbS7uUo0VrXYhauA2tg/WfxhsAelDec+sFxFfbAPxcl8/2QhUeZRlOEq4Yq4eftQNXBv0M6lkXE4qCeo/9iQIW4Jh7YFTGikba/ZwFjrlijAuMPN4z5RkSB7W/17/jl8EssE0gJ/Dj9ayMTDsje0lT1seF5UNuTQIoZNm8BNfrBFn5Fn4GestOyOBLgirUx6LKxMKvLco52UuQVsKXT8i6Pdh9/zdFcXSh0KyUMrVBSYT/u5cStoyof9GkRtuqMt+9w1zkXFR/VHw111kd+7l6rTh3hQU1AfYfYhh7GZ0rNdXZkeHjHw4JHg9rbyfe3Zvy+kpd0Pe60jjII6OkN6v48b4U3lrDsdcvjSeu3RlUz24EJd0YJNnoWkwd2Bo/NMV7YYHWTshx367UuY9RnJxgG5jcmQXu/pwu+JYg8tREW+q61yZQsZT/dZtgaBbBkj/KezgovCbvt8m/7sGq13koDfBA3IkmLznmXhP3Yb5zaWcSFUZJhuqNpbA9Y97ZTzm0h+w3pnE54ojNx6JgnD0iRcBXdwXhO2XvDqUnNIZFHgVzZotyw+Gmsf09rY9RdowIh0aVJ/N89zcwuM8bNCO2vVzwIdur+9grr9wAp1xq792JuHF1KgY0SB4JTkn+rbHOk28OscLDa4y5ATtKMrS81T/gjGSPycEzzwbOB2/7iTLf4E/wZmDc7drwLdsUR9v48LDTpMItgxi4vMtnECnGx4DzVRIABJmDzADQ2DWekSueXF5pl/heweBdhbPw32IKucoPXftexlz3eDPOkeNt0HAjmvylLu5Zr1a54BWxO5PdJJGZ8lwfJDJjDj4O6jpZ5baEAdUdTxgKdnif/p4oI1BttxRYkJH6hzPOvTe2uT9swaDcrUOUGY0EEZk8kWyoLGwKLtmSjEyjwuAWmcFemWgCA909W1I2gFDCvDwyey52WdhFv95n9WazX5ZMy/h9bGrqfAAYKxdmkzCfUZJhvKZe2SH5ATsF5apz24Ql0R8cCIegJ1aFOH9qFCPtAxRKzEn5Ipot42UHi44bLAvvB23cKw3ftMHAjygY4RH4g6tG1qb4d2VagXrt6Bgnt7W/nudgoqJ8oZ/PHHVh3BD7vVGUiBjhEFOgahDu1/DPXC1TvKIl3b42aFTp8VOn9O6MEVJD8E8c+hDu1jH1KgYwjVZOt/fJWjf71d/3GnYS8nRRDEoRIr8ec1kT7t736pu2tYGptbOr/QfG9z7XuDUqJZswvYJ7vsT5HVPUiBCIKoaygC+8Ti6VnScSliyGDv+e9fTu9Tj0VIgQiCqGtQh3ZtgRSIIIi6BnVo1xZIgQiCIIjoQApEEARBRAdSIIIgCCI6kAIRBEEQ0YEUiCAIgogOpEAEQRBEdCAFIgiCIKIDKRBBEAQRHUiBCIIgiOhACkQQ+yMYNLdm6wsWqT/PcGJqhpmXp69Zq/35l75ilRNFEMQBIAUiiP1grN8QfOlV/0OPld9ypxNVM8KTvg4+/V//3Q+EP5/sRBEEcQBIgQhiP+ibtoQ+n6wvW26VlDhRNUOd9pP683Rja7azTxDEgaFvpBK1nn/8jVSr3G+sXmPk7rBlhvd6hYR4+YShoQ8+MpYuhwLZyXyPT8BfedAAsVlTY8Uqc+dOs7jECgQQycfHS+3aiK1bIazPX6ivXhN87S0zZztL36+PcvJJQnKyMmoEdp1rbc22TxQz0oUWzZEhwv8e+kYqcdihr3QTRI34xwoUeuf98NRp5uYt5u587PKxsUJKcsJvPxU0YopSjZiXn3edOqbs0quMjZuR3iorQyTSS717ei6/ROrZ3f/go6F3P7ATVyJ16xL/zSSrrDz8+WRcy1i91j5RbN4MhzxXXSa2a2un/DeQAhGHHfpKN0EcQYwNG4P/e02ft8AMBFzjxnquuUI+boBVXo5DCCsnDLGTAexiE1u2QFhfulzIzFDGjrbTQIrU76cFX30Th+SB/RAppKZETuLEjh2wi5wRDk/60r4WFMuONLflhCd/HXzjHTsxQdRPSIGIeoq+YpWZX4AA73IpJwz13HCN767bvLfeiBjvvXcqY8dEUjGwi03q2J6Fb73Re+etvnvucJ1+KtLwMcxI1P6ai7/KiScgGfSJnQNB6tUDu+6LLzB37mJdc/kFSOy59QaW2923ix3aIY067Rdjy1Y7PUHUQ0iBiHqKkJnOKZHeubLy0EefBp55QVuwSO7fN3LwgPANG2pz5obenBh49kV4P3ak5S83N2+xw/uir15j7thph831G4PPvhD+6FNOVbGLE43Va+1DBFEPIQUi6ilSu7be664S27S2eF6bNTv07geB518K/PdlY3uuk2If1J9+CTz7QuCF/wVefMVYvgIbzzs1SF+zzg7si1VS6gTK/TjR3vRVa5zI8AHf3xBEnYcUiKin8DEx7isu9d59u++he5XRI+EPmTnb1e9+0Kb/6qTYh9Bb7xorVnL+gOeKS7z33YmNS0ywDx1ESHiP2wnExnofuq/aJnXqaB8liHoIKRBRT1F/nq7O/F1q29p94XnuSy4Ukhsg0tI0cxsbS10pG8BYt94JrHUcHXnYEGXMaM7t5ir8m0p4l8sOmLt32wGpYwc+Lo6FDE3welwjh3suv9g9/jSpdUuxSSOxRbNIKoKoj4gTJrC5DscIz67V/LoTJoga4hb5kOGE92VEQ7FfsujsVCH00WfhT7/QFi/R/5ytz1/EZEZVhdRUz5WXik0a8z6f+vmXtmdjbNmqz5knpCTrS5aaO3chxszbjRh16o9WUbGdRhk1QmrbBgF95Wp98VIErJJSc/1GY81aZfhQy+83li63QmFomLZ8Ba6oTvsZp3OWpQwehMT/kvmF5tQdB/wJDv77EMR+QbG5u93+pzEcRsgHIuopYlYmJEf7fVbo0y/C337PedzyoAHeO2+RevbAUSG9ofuSC+ypptrvfyKNsTXbffUVUudOdkx4xkx5QD8kY3lVwX3eWciHj483d+XhrPKfppdplnzBuZ4br8W5ZmmZ9vMMxKu//wn5EVuxEd4EUW+hGalEreefzUg1t+cam7dY5eWWxvxuITaGT06WWjTjPB4nQV6escmZrArk7l2FpES4OEZkYBvSi+3bGus2mEXFztGKcdhsnPeOnX9s8/+8yxCTElOH9O+cIGSqpQ22bfaWFQvhENLwbreQmCA0zoLXZZ/1b6AZqcRhh9ZEIIga8Y/XRDiifLZNf2iFurbURDjZxXdPFPs2EFrHCokKn6TwmR4uzS0oh6kPghSIOOzQmggEUYtB1aqsXflh66ed+iMr1UvmhS6fF7pjafjxVerrG7Spufr6MjOokzwQ9RRSIII4Iog826qhmdyOkPXnbuONjfr9K9R7l6sPLFf/s0Z7c6M2OUdbUmyWkxoR9QlSIII4Igg8L+yjQFUp06ylxeZn2/Rn1+iPrtQmrNBuXxK+dYn60nptdoFZopEUEXUfeg9E1HqOznsgXEAzOM2yIA26ycFXUQ0Lf7ELzyaysUOVYajIx9n6pnL2HqjmuAQ+2cU3dPONvFyHeLFtrNAiRmgdyzdwHUzN6D0QcdihkQgEUSP2aWERjrTX+GPxA1OETvECUwUmDxYCTDaqCQZ0xQ5UhJ00BtJg482jXiol3oqV+RiJtzWpe6IwvKHUr4GQ5t6PFJECEYcdUiCCqBF1voUVmG/EeWU+SeF6JIqDUsQ2sQK2LC9vP/arpEDE4YYUiCBqRP1pYXk+MsSO5+CT+SS+Z6IwNlMakir+uMu4Y4kacf72AykQ8Q8gBSKIGlHPW1ifxEk874xcwB/WS+f8z4YUiPgH0Hwggvhn7OdNSR3Gr3N7Bs45j27/L/KXpIc4hiEFIuoe1OhWoX7JMVHLIAUiiDoEXyE4rHcdG+kPcUxDCkQQtRuZ55z15SA3THj4iBNoaw+5g8QxDSkQUfeo+4a/xHOxMp/p4TvF8cMbij2ShAr5ARYL1/3fgKgLkAIRdY+6afiLPOcR+RQX3ypWGJAiXtBUeqqL64sBnkkDPOc1lqv4PQRRa6DR2EStp26PNoa74xK4OPZBB75zPJuO2reB2NjLeyUnAaA1EYjDDo3GJoh/RO33BHiekwUuRuIyPMLAFPGe9q4pAz2/DfW+09t1cTOpbdxe8kMQtRfygYhazz42Pnsl4gT3QeCZV4FNFni08mzjKwN7Ip0EESWIbFXCFekr8nEiJd5yjoosq9wgN3m7PjvfcC5cIyyR590ic3cGpQhjMqR+yWLqQdcktSEfiDjs0JoIBFEjDtDCWpzFQ4we76Tc2Fq2JeTgn0s4vKwoMR5ZqX6xrUYKJPJcqpvvkSiemCYOThVbxPA+iFuNIQUiDjvUC0cQ/wYmP8AtcpEVpo+q/AB4M9icnf0B1Ulz8yPSxee7uRYM964f5ft2kPuG1nLnBOGQ5Icgai+kQARxREDV2m/tcol8+zjh5tbyz8d71o32TTvOc0truWsiVMdJQBD1B1IggjgiiALbnDDPpXv407LEib1dK0Z6F5zofbaba0iqGEeqQ9RvSIEI4ogg81yaix+cIj7YQZl6nGf2MO/7vd3nN5Fb+HiPyIlOKoKo15ACEcQRIdMr3NNe+XyA+4628pBUobGXj5XZILqDvhsiiPoFKRBBHBEknktS+FQX+9K2LPAkPASxL6RABEEQRHQgBSIIgiCiAykQQRAEER1IgQiCIIjoQApEEARBRAdSIIIgCCI6kAIRBEEQ0YEUiCAIgogOpEAEQRBEdCAFIgiCIKIDKRBBEAQRHUiBCIIgiOhACkQQBEFEB1IggiAIIjqQAhHEwbD8ASN7m705UQRBHCZIgQjiYKg/Ty8eMNTenCiCIA4TpEAEQRBEdCAFIgiCIKIDKRBBEAQRHXjLspzgMUDaFH9e6Bi6H6JWkKDwxeoBi81zXZVb2yjOzkEx83Zzfr8ZCNq7fIxPbNI4/PW35TfcasckrV5sFhRa5X6EBa+HT0nmY2LsQ1ZJiVVWboXCVjiMXV6W+Lg4oWFa5VEjJ9cOi00aVWbCu1xCw9TKTIC5c5dVWmppOsJCfBzH82ZxCQt7PUKzppEknKVpFnKoSIb7nFjovXKd2z66Lwf/fQhivyTIfNE4n7NzxCAFImo9h0GBNM3YvCX05kRtyTJj7To7TuraOf7byVUVyPfYQ+FJX+lLliEstmntvuAc97lncbKM3dDb76m/zDC2Zps527ErJDeQ+vX13nGzGJGNA2UiZGV6rr68MhMze5v/P8/ps+eY+QXYlQf0470e9ecZCEvdusR/MwkB3Ko2Z37ok88rk+E+F3cfMr7x2IKYRJZgH0iBiH/A0VEg6oUjCE5bvLTs4itDn00ytmyF34M2XWzV0ti81TlcQfCVN/BXaN6ME0UIVeDxp/U1jlypP/wIDeM9Hvtcq6RU/fb78htvs/wBO0ElVTOBXLFMVq1GjFVUXH7HvTjLLCq27wFHbfmpijZ3vv+u+5AMDpB9LX35yk4TX7zyz4+dFARReyAFIuo7lqoGn33B2JaDsDKov++Jh+H6xL7+ElwcO0ElrjGj2KHnn+ITE7BrBYPajJn2Ial3T++dt+KsuI/eRQ5CZgYi4ejoy1fYCSqpzERITcEuMlGn/ohAeMq32l9zEBDSG9r3gL98Qhw7pwLomf+hx3CrvCzj9uz7RHocunjO5PhgmZ2MIGoLpEBEfcfYtFmbPZeF3G7vvXfKxw1EUGzdynvXbSyyCu6rL8dfqUc3sVGWHWMWFNoB9yUXSG1amSUloU8+12bN5uMc5TA3b7EDlVRmIvXqacdYwRD+ar/9Ye8qw4fZ94C/8nHH2ZE20DNj3XoE+LhYeehgbf4CXFFq3QoxDcqL+m5aHElFELUGUiCivmNU9KSJWRliq5Z2eL8IKcxr2RczvyD4+tull19bOu6c4HMvhd55z1i/wT5kbKnelVeZidAgyQ7YVIqZ1La1HQDV0+zc5QQKCnEte1Mr/LAYlY1uIIhaBCkQUe8RRScQDFnl5U74UFCnfBd6611ze67YpLFy8kmucaeKbZhfAmz/5pCwVNUJgaphUHmriiIP6Fe57erW94+WvXfH7CVXBHHsQwpE1HfExo342FgEjO256vfTzMIihK2yMmPFysjxv0ebNdsOuM48Peb5pzw3XSskHbIY8Ans3RLQfv3d3L0bAfhPxjrHl7LBrUJ7EBBifN4H741965W4Tz+Ie/+teXc8euv4+39v1cdORhC1BVIgor4jdekkDzuel5h7EXj+pfBHn6i//RH+4qvyO+61E/wtvNuZi6OvXY9zQ2+/py1ZasfUHNeYUbyX5aP+NYeN7f7tj8AzL+iL93q1w261b2/cKmTSf98E3CS71e9+6PDhaxfMnewkIojaAykQQXCeKy6RjxskpDe0CgoDT/+37PxLA088be5ijkhNkEeNEBtlQRjUb74rv+wa9cefpRYtnGM1xnXGOOWkkUJKCq9rwVffRD7G4iWVs1CFiqEN3rtulfr2QTJj+Qr/Q4/iVv133Z8x54+A64hP3SCIw444YcIEJ3gM8Oxazc9meRPEIRAynMB+GdFQ7Jdc8frkAAhpafKgAUJMjNAgSchIF1s0k7t2kYcOlnv3tIpLrOJixGBzjR1jpzc2bBKSEhEj9eohde7IRqO53bzLJTZphBPdF5wrNGvC83xlgv1mYubuqJoGMVLPHrwsCwnxdj7K2JORp75sOQ7JQ49XhgxGgN1q9658TIyYllp5q8u6DXo1o++uuP0PlDj470MQ+8Ut8ne3q9FiIv8GWhOBqOPUfFWeYw0rGCy7+gZtxm8Ie++8xXPDtXb8vryyXrt+EVsNiCAOF7QmAkHUL7S/5pgV38Ezd+9Wp/2sL2LvgfiEOGXI8XY8QdQlSIEI4ljBf/cDwf+9Hv52KrbQxA8CTzxtFZfyMT73+HFix/ZOIoKoQ5ACEcQxQzgc+uqb8mtvwgYpssJhsX1b97lnH6T/jSBqNfQeiKjj1KL3QKF33je2Zlsl7HMMgK1P2rmTfMIQe/cg0Hsg4rBDX2cgiMNA7R2JUHNIgYjDDo1EIAiCIOoypEAEQRBEdCAFIgiCIKLDsfUeiCAIgqg/kA9EEARBRAdSIIIgCCI6kAIRBEEQ0YEUiCAIgogOpEAEQRBEdCAFIgiCIKIDKRBBEAQRHUiBCIIgiOhACkQQBEFEB1IggiAIIjqQAhEEQRDRgRSIIAiCiA6kQARBEER0IAUiCIIgogMpEEEQBBEdSIEIgiCI6EAKRBAEQUQHUiCCIAgiOpACEQRBENGBFIggCIKIDqRABEEQRHQgBSIIgiCiAykQQRAEER1IgQiCIIjoQApEEARBRAdSIIIgCCI6kAIRBEEQ0YEUiCAIgogOpEAEQRBEdCAFIgiCIKIDKRBBEAQRHUiBCIIgiOhACkQQBEFEB1IggiAIIjqQAhEEQRDRgbcsywkSBEEcZSzL3LEz/M332u9/Gus3mDt3sUie5+PjpPZtxTatldEnyX16RZIe2xiGvmFT8IWX1e+n8UlJ7vGneu+/2zlEHBhSIIIgooMVDKrTZwafft7YvMWJqgrPC00aea65yn3umWw3olXq1GnanPnY81xxifTPlAlNXjBorF2nzfxDW7hISEuLee4/zqF/hmmaO3aFJ38Zmvy1uWkLk09SoBpT/3rhTFP98Zfym+8oHj66sHn7gkat2NakTfGIMaWXXxv6+DOrvNxJeWxjlpUH33i7qPcgPEXpmecbq9c6BwiiVmBZ+oKFgYcf37/8VMMw1J+mF/U5zv/wE+rP082dO534Q8U0je25gedeLDnljMDzL2l/zbWKip1D/wDklr0t8PTzJedeGHjmBSY/xCFSvxTIzN1Rdvm15dfdHJ78tbFmnaVpFQdMY9Ua7Zfp+oJFVjDkRBomCr3/voeKx5weeu//rLIyJ/5QgYm0PTf8xVflN91ecsp4ffUaJ/6fYoVCGkT0+puDL/wPVqETSxC1CghPeNLXld1uYkqy+4Jz43/4ukH2usRl82M/fMdz641yr56Cxx1JfuxhGGhDAg89GnzlDdKef0x9UiDD8N9xrz7zdyscdmIOjBUKw0kqu+zq0AcfQ5y4Sq06RCBy6rSfSs44t/zWO8NfTjG3ZnO67hz7BwSD4a++gYiW3Xy7NuM3q9zvxBNE7cKyrPwCvcJx591u6YQhviceljp2YJ1viQnK8cd5b74+5vmnlNNOsdMc0/A87/UIDRs6u0SNqTcKZFmhjz/Xlq8wI1rCC4LSu1fsK/9NWrs0aeva+Gnf+J55Qjn1FDE1hROO0d/EKisPvvVu4LGntN/+IO0hajuWYXChiv4GSeLdHidcFcsyt+cGHnmyoGnbssuvcSJNU1+6vGT8uQVN2pScPI69FkKy3btDn08uu/G24qEnFbbqWNC4VUHrTsUnnux/5Al9+Qp2lsH6Ocouvbq43/GhNydGMuJgWao/T2f98M3b45ATCXUsKg5/813pRVcUdepV0Lh1YetOJSeOCTzxjLlps5PGBsITEyP36uG58dqY556SOrZ34okaU48USF+4iAsx7wfFhktN8f73KeWUk3mvF2okdWjnPvuM2Bee8dx9u9AgyT7jmEYUhYZpnPtY7aAgiL+DF8XKAmyVl6vTfgq+9pa9e2hAfnJ3hF5723/b3epX3xjrN1io5hbHBUPG6rWhd94vv/VOdeo0J/HfAqHatCXwxNP+2+/RZsw0i4uZIAVD+uo1wTffKb3yenXqj05KURTbtYl5+fm4Lz/13nyD0LypE08cCvWoF84KBGA9sQBKP4SH39+zm6Y67eeiXgNhRqEoO5GqCkuqsH33ghYdgm+8Y5aWwnzTZs/1P/kMDLGiLr1hi2Er7Dmg9JKrwt98D2eFnRUKB198pbjXwLKrbjC3bY9kxJmFRSWjToPNVdilt75suR3J6TrC/gmPFw8eUdS8PRsWgbOuuFabPtPyB5w0EVBpxWZNXONPjX3xOde4U4W4WOcAQdQuYAYmN5DatXF2I+Pcgv99ufSM88JfTbEKCp34f49pGpuzQ598bmze233ZL0i8LSf0znuhT7/Y8z64EsMwNm6CDunLIk4VcTioRwoE1XF62FDct2wtv+8hc1de5MghohvaT9PLb74j9Oqb+tz5EBUmbKZp7crTfpnhv+3O4MuvmLvzncR/hxUMhj/9ovyGW0PvfWBs2sQ6CVENdu6CEJZddzM0rPIm+dgY93VXxU36OOa/z8hDjuN8XjueIGojYrOmrrPPwF9nP1IXtDnz/LfeXXr2haF3P2A6BDsxM8P74D0NtqyJffs1J50gSF06xU/6uMHWtfHffSn37cX0LDFBGXmi78lH4qeysQxJS+f5nnpcbN6Mpdc0MycXsiG2bxs78fWE2TPdV14ayYjjZFkZPqzBtvUNNq2Kfec1GHz6/AXhSV+yQ4IotmgR8+KzuHT8L98ro09ikaZp5mxXf/qFhYnDQb1RIJ6XenTn3C5n1zS1mb+Xjh4XePo5fe06S/sXowP2xgpr4Ulf63PmmnC5/pZwOPztD4H/vQHHH+6/E1mB5feHPv5M/fFnq7TUiSKIOgOqZNfOvgfvkbp1dWIiWLqur1kbePTJsquu0+ayqT9/A1QqI91zwzWxb73iPv8cqRMby8AEafBAZdgQlgAWZ0nJ3/tApmXm7dZmz2XejyCITbI8V17iGjeWE0WpRXP3JeezfjYYmkXFxsrVzinEv6YeKZD73DPlfn14V4UIWZaxa1fw5dfLTj0rcO8DKFVMhwRBGTk8cf6fSetXiK1aOikVxffgvUmrFjXYuNJz1WVCfBwroB3ae266NnbiG0mrlzTYAltssnLiCbzHw3qNS8v0eQs5XfPcdF3C/D9j33hZaJRp5yQkJcZP/Qo2F2w0qWMHuPzhjz4xd+7AIZzrvviChLm/J61Z4r3/LiEtlZ0QDKo/TUfFYGGCqFugzMvDhsS+/pL3tpuqOkMAlVGbtxA6VCMRAmwwQn74yyn+R54ou+r64hGnFI8cG3yrYsSBaVjBvxsBa0FdioyVq1iY9d1tLb/rfme+YLN2pePPs4dcW3CDCouoI+5wUY964WDLxEy433X6qfze/VdmeXno00mlZ5wb+vD/ajQdVRSVESfETXzde/styvChfIyPEwWpQ3vX6WPtUQzMiNuwwQoE7eQHwlJVGFxsQo9h8m6Xa+zJkDcxI533+dxnjZcG9sd9Io2xeg0kzTmHIOoYtgdz8/VxU76IeeEZqXsVfwg24qYt6ndTnd0DAZvP7w9PnVY6/tzym24PvfWuOvVHVmuKD32qqWGYkcFKf4Ohc8Ea9HAQNaA+KRBKe3pD35OPxLz4nHzcQK7SGYrAlhh49KnQJ5/XcE0ENhhhzrzgS6+U335P6ennFg8cVnbdLUaOPeKADZ6BGRUJHxhVM1astIctWKFw6NMvivodb9tchZ16qZO/tochmGFVW76COuKIuo2QmOAaNzb2rVc8t93IV46R8/v1NeuMamOgq2Ga+uKlgYefYMki740811wR89pLLKsrKt73EMcq9UuBGILAPJj/mxj/9eeus8ZX9YcgKuGPP7MKi5z9AwEPPXtb+TU3lV14eeCZF8KfTdLmzTe25x7qVFM+IjyWaTj7B4C3LC4QtPS/SUYQtR7oR0qKa8xoZdQIJwaFPxi0DjKux7LMnO3h76exvgScnpXpufIy7713ukaPlDp1dNL8AwRBbNYk5qnH2CCFatvm1fHffSn16e2kJP4d9U+BbHhe6tg+5unHYye+LrZohgLHIlGat27Tl62wKifK7Q/IRuChx9Tpv1rBICdJykkjfP95LG7iG7HP/UfMct73EARxMCzLWL4i+ML//mZROJ7nPB4+JdnZ3RfUWb/fspeJQ2JR5O3RRmz0QenfOE/V4HnYo2JGOgvj9NIyNj6IOMLUVwWyEQS5bx/PZRcLiQlODEoejKmDDI3TdbY67/IVnKpCflyjRvom3Oc+7yw2PDrG56Q5dFBt3GefkTh7ZnWDa9v6pJULPddcISQlOkkJok5glvvDX04pPeP88nseVH/4ySoohEmnL1gUfPXNylmfqBdS0yb2oGpeEp2xrKikuTvUX2ZUnzYEh6mwSJs9z9y4CcIWemsizETnUCXwk2RZ8FVUVcMwNmwIffQZCwsCn5Ii9erBwpZlFRaxcQ33PmQsX8muWFyMKwYefyrw2L9bSJvYm3qjQKYZ/M+z2h+z/mZROBTQ9IacLDm7+8BGwuRsZ/LD0vK8x237TxaK8vqNNRqBXYkoCBnpQqTL29IN2Gt/O3iBIOoY5q5d4f/7pOzK6wq79ils3blk3Nnhzyc7nRCojE2bKqNH2mEuLk6y5/dAD3bnB19/u7B7v5IxpxsbNokdOzjxpaXhr78pOn5E8fEjwpO+YpHVQJ1NShS7dHZeNUXGvPnvvp+tynPZNUJyA9fwofLA/uwQu8ru0IcfF486taBx66JOvcouuSo48X1946H4VcTfUY98IH3T5rJLr0Y5C745EWoBRwfuTuiDj4KvvWnaK7SjdKYkix3bo3SiwHMV6sL8np9+sU9huxVAdfRFS4wlSzmU+88mI6t93yExlfL5eNGRNCvgD73/ESw4tuNyyX168QkR90vXjcVL/fdPCH/1DRt0oOv6ilWht94tv+l2fe06loAg6hWSJHXu5L35evn449guz4tNGiknjXA62SqBSiU3UI4bJLVv68RE4BVZbNvaUa9qiKLYpLFy8ihntypsoZ123rtuk3p0c2KII0w964WzLO23PwKPPlk8dGRB83ZFvQf5H3jE2LbdGbcmCO5zz+QjPXIWz0ttWzvF3TS1OfNKxp5R0LZL6J33hZYteF+MHa+v31B6xXUFHXr473to/7N2UJG6dhZSk9kqWMg2pIY/m1TU5zi2Ks+q1VLP7sqoETDKcMjUNG323PIbbyvs0KOgWbuSk8b6H3lChdO298I8BFEXQP1q18Z7353uC86VunXhE+KdeFES0tLk4UN9j0+Ie/8t5aQTnXgoTUqK+9yzvPfeWU1sOEGUenT1/fcZVpWQD0uZ7DrzdDbHKCPDSVMVQRCbN/Xecj2b27fvataSKHXuGPvqC77775L79xVsAxF2ZEI8dt3nnYOzIumIwwNv1ZNvpJpm2dU3sC8aHKAXjo+JcV10nueqy513QlCdv+b4H3iYvY2sHFetKN47b1VOPSX0zPPh76bu0QYU+rg4+cRh2szf2Xo8oiB17RLz/FN2/7UVCoc/nxx8+VXnUygRoDpxH74DK88qKw8892J40ldWSYlzrArwyWLffk2uOkkiglVaFnzvw/D7/wfZ42UZSuZ7+AGxcpUtgiCI2oA4YcIEJ1jXkVo0F9JSeLfH0rTIKqVMenmPF966a+yYmEfuh2MuVA7OhteflSm1aY2UxvbtTv+bKMoD+kndOisjhsMqYiu2lZXxAi/37uG57iopK1Ofv5DNHhV42FZIIyQy54aHG9SujZiWahYUsHenBhtXzXs8rnFjYe7xLkXu10eGeCgyFwjy/oAFwcMpbVrLfXq6zj1L7tmdLbVQjbCqL1lmLF0GFYR3JWSkK0MGw/RzjhIEQdQG6o0PRBAEQRxj1LP3QARBEMQxAykQQRAEER1IgQiCIIjoQApEEARBRAdSIIIgCCI6kAIRBEEQ0YDj/h8oULuuQ2RwpgAAAABJRU5ErkJggg==)
Như các bạn thấy ở hình trên đây, mình có một nhân viên tên là Quyền, có ID 101 và mức lương là 2000$. Bây giờ mình sẽ thay đổi lương thành 3000$.
Sau một thời gian cảm thấy không hợp lệ, mình muốn cho nó quay lại trạng thái ban đầu. Khi đó sẽ sử dụng Memento Design Pattern để làm chuyện này.
2.Cách triển khai và ví dụ về Memento Design Pattern trong C#
Trong phần này mình sẽ thực hiện triển khai Memento Design Pattern trong C# thông qua một ví dụ cụ thể. Các bạn cùng mình thực hiện theo trình tự các bước nhé.
Bước 1: Tạo class LEDTV.
Trong class này có ba thuộc tính: Size, Price, USBSupport. Sau đó khởi tạo constructor LEDTV với ba thuộc tính trên. Trong class này có thêm phương thức GetDetails()
để trả về chi tiết các thông tin của TV LED.
LEDTV.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace MementoDesignPattern
{
public class LEDTV
{
public string Size { get ; set ; }
public string Price { get ; set ; }
public bool USBSupport { get ; set ; }
public LEDTV( string Size, string Price, bool USBSupport)
{
this .Size = Size;
this .Price = Price;
this .USBSupport = USBSupport;
}
public string GetDetails()
{
return "LEDTV [Size=" + Size + ", Price=" + Price + ", USBSupport=" + USBSupport + "]" ;
}
}
}
|
Bước 2: Tạo class Memento.
Class này được sử dụng để lưu giữ trạng thái bên trong của trình khởi tạo.
Memento.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace MementoDesignPattern
{
public class Memento
{
public LEDTV ledTV { get ; set ; }
public Memento(LEDTV ledTV)
{
this .ledTV = ledTV;
}
public string GetDetails()
{
return "Memento [ledTV=" + ledTV.GetDetails() + "]" ;
}
}
}
|
Bước 3: Tạo class CareTaker.
Được sử dụng để duy trì các mementos object.
Caretaker.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace MementoDesignPattern
{
public class Caretaker
{
private List<Memento> ledTvList = new List<Memento>();
public void AddMemento(Memento m)
{
ledTvList.Add(m);
Console.WriteLine( "LED TV's snapshots Maintained by CareTaker :" + m.GetDetails());
}
public Memento GetMemento( int index)
{
return ledTvList[index];
}
}
}
|
Bước 4: Tạo class Originator.
Trong class có phương thức CreateMemento()
được sử dụng để thiết lập trạng thái bên trong đối tượng Memento. Phương thức SetMementor()
được sử dụng để khôi phục trạng thái.
Originator.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace MementoDesignPattern
{
public class Originator
{
public LEDTV ledTV;
public Memento CreateMemento()
{
return new Memento(ledTV);
}
public void SetMemento(Memento memento)
{
ledTV = memento.ledTV;
}
public string GetDetails()
{
return "Originator [ledTV=" + ledTV.GetDetails() + "]" ;
}
}
}
|
Bước 5: Tạo client.
Trong class này chúng ta sẽ truyền các thông tin chi tiết, sau đó hiển thị và kiểm tra kết quả.
Program.cs
using System;
namespace MementoDesignPattern
{
class Program
{
static void Main( string [] args)
{
Originator originator = new Originator();
originator.ledTV = new LEDTV( "42 inch" , "60000Rs" , false );
Caretaker caretaker = new Caretaker();
caretaker.AddMemento(originator.CreateMemento());
originator.ledTV = new LEDTV( "46 inch" , "80000Rs" , true );
caretaker.AddMemento(originator.CreateMemento());
originator.ledTV = new LEDTV( "50 inch" , "100000Rs" , true );
Console.WriteLine( "\nOrignator current state : " + originator.GetDetails());
Console.WriteLine( "\nOriginator restoring to 42 inch LED TV" );
originator.ledTV = caretaker.GetMemento(0).ledTV;
Console.WriteLine( "\nOrignator current state : " + originator.GetDetails());
Console.WriteLine( "\n----------------------------------------" );
Console.WriteLine( "Chuong trinh nay duoc dang tai thuanhoaonline.com" );
Console.ReadKey();
}
}
}
|
Kết quả:
![](data:image/png;base64,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)