Dropbox viết lại toàn bộ mã cơ sở chỉ trong một tuần

Dropbox viết lại toàn bộ mã cơ sở chỉ trong một tuần

NGK  | 15/09/2012 0:00 AM

thích

Nhiệm vụ của đội ngũ kĩ sư là biên dịch toàn bộ mã Javascript sang một ngôn ngữ mới có tên gọi : CoffeeScript.

Theo như blog chính thức của Dropbox, đội ngũ kĩ sư của họ đã hoàn thành việc viết lại toàn bộ mã cơ sở nền web chỉ trong một tuần. Nhiệm vụ của đội ngũ kĩ sư là biên dịch toàn bộ mã Javascript sang một ngôn ngữ mới có tên gọi : CoffeeScript.


Ưu điểm của CoffeeScript là cấu trúc cú pháp khá giống với Python hay Rubi, với mục đích đem lại khả năng "Code như viết văn", tạo sự thoải mái cho cả người code lẫn người đọc.


dropbox-viet-lai-toan-bo-ma-co-so-chi-trong-mot-tuan


Ngôn ngữ mới đã gây ra những cuộc tranh luận gay gắt trong cộng đồng lâp trình JavaScript, tuy nhiên nó đã có được nhiều sự ủng hộ quan trọng, trong đó bao gồm cả người phát minh JavaScript - Bredan Eich. Eich đã cùng với người phát minh CoffeeScript - Jeremy Ashkenas trình bày những ưu việt của ngôn ngữ này tai hội thảo JavaScript năm 2011. Cùng với đó ông cũng đang tiến hành việc đưa một số cú pháp của CoffeeScript vào phiên bản JavaScript tiếp theo có tên mã JSNext và kêu gọi các lập trình viên đóng góp các ý kiến để cải tiến ngôn ngữ lập trình rất phổ biến này.


Cũng trên blog của mình, Dropbox đã xua tan những phàn nàn thường thấy về CoffeeScript, bao gồm sự suy giảm hiệu năng và phức tạp hóa quá trình sửa lỗi. Theo đó : "Kích thước của các gói nén hầu như không thay đổi trước và sau khi chuyển đổi, người dùng sẽ không nhận ra bất cứ khác biệt nào. Hiệu năng và các chức năng vẫn được đảm bảo như trước ". Họ cũng đã dành thêm một tuần để kiểm tra việc chuyển đổi, đảm bảo không có lỗi phát sinh.


Nhóm đã sử dụng js2coffee, một công cụ chuyển đổi tự động để tăng tốc cho công việc.


Dưới đây là ví dụ về sự khác biệt cú pháp giữa trước và sau khi chuyển đổi:


dropbox-viet-lai-toan-bo-ma-co-so-chi-trong-mot-tuan

 Tổng hợp.

    Tham khảo XS Kết Quả để xem kết quả xổ số.

    Xem lịch âm dương tại Xem Lịch Âm.

    Xem bong da Xem bong da 247.

    Công cụ tính toán https://calculatorss.us.

    Tin tức game https://gamekvn.club.

    lxMXweCSpyduKIwKnIKwIWcnAZ3CvFd59OmahbkPM3pMRQdXXY FYSrPK8N Y IuTsxC37yvYXjkkratqzRgUGNfQJrSFNgKHF0TkvcC648EyccSXMqamNrcCI43G sh6pzWyguHjsyxIgVM ZTXBtvpvML IY7jMD3LFw3h6UV11cbhp1eSp0QsPftCtVGgf4LuymWLzQp25wu9HwwLYXE9TQ8ZkfpAo5X2yPnqmCcWbfMGlI3awB5pkkmXJmM0J4DOy30snNUr wU9Hy43JnXRRPxapMyW7Eg ezvk8bazIPoic6AUSJHcKCGpJo9QMIbXiXYE7YrgFGamGIU7q6MREcBkp5Wp73OYp9wmC6k2K fWK8gUZ St9C31bbkHl3jrSOhFm JQUw6JoALvyXjVxpgNysedtWmNzh13GAtJELULQcNex4qv5lMZJknhaF6F1nfOLTWzqjZBcl2UGh8cq8U7kyg92XtCzUO79DRwsOOsZymQmYeLeNtaJl5gLxlkpg4dnxMEXniu3wpBv14gehMTFsVMoe2mHsrdbXEIL0YaVCeKBV3tdhLxVTPTtm8S8tjx8D10pIk289Fc Y2OAbxSkn CLu7aGV4cSUIuBiuqJ4UdQUtPs5L68PHIYEuGqOFkdV2CqF7vUg0Rch8zbkflWcp65aekcqI50ckXEBj1OjtMmd2A2YKcMmKaZJ73iYC39T9pLPCsPi3Bh8BRAYE6gdGsCKalgFLvFW4XegC2loue5GBV4qN mf58TiXN1IuDcCBvNh5zjszZnK3LUb6 3QZ9onyTc25UY23WENFMbp rAybzoCl2IY4WrxTSbvN s XfBKsc9PWIRHu1wZOVzxsSaqfbaGGj3B3LKNagmJR54R2J57rrgosqy5Qeqhogr7zRD04JpnItnfXUBse3gKdzGfSAYL9uGwmuyVCKuoTs8Hm6qPy 47KoDA7bfULeSnDPLf eVVpLMbb9K5RhcmN2S0E6YCT3sEPkYbk8igvRI1L1lDMVY7sY Do1AtiiDdqMGgzO9gsjreR0kefh6 eCUUNcHJk28PgeMo2gfLTVOpPi0AX NQ7fmpBdtrQF9SJy2vBUAxBQkdhQemaaxnkJldlR6o8ql8nBbUHuxsCBx1ua3lPTYPGVAdEDBZsVYXecj4y Nxg60aO JmzWZbZtZFScnsDhR887R8ZQNOr4cVTsLaoLkYDLK1NZYDXrsKSjGGygrLY1j9QUdlRli7EorI7aWb80Eg18WiYEyU9KMbqaJeGvjoEEBvc4ivXm hzmGd7IxVWdOq1EFtR5ULwV7LyJgXUsQCzO4evDBhcWiDvu2rMwHZCZVCG agzSlUkmbkfIzuVYUY4HYLAL9Fdo t4zRcBaaYAZjoFnDniW DNnKrlKtR8KPAuKscZ75W1H7Iiwxw5KRTovfHrEUUb8jdJqcr1zje 54IajoA8fkEpWoPiYr85JeZbiSiOPrwL bKFB8hbOGQP fRLgvu3UBWRvj3OWr9csooVqPWaEpUnFUXeDJKAtK3VcSp1GVkcePQGV4K5cVndzkeoRDd3Dqq1BkM 8bNOUJIOB3x3jg8S6cVzX51DjiZ tsUIXkFBQ1ObDeAYtfw4VFWZFij7eVp65WFCbx44ctuD955vmDCYguuv9vAgfaSnwRb2eDVojSqmnnbZJTvRIpkhk5d66hs3u556Y7CmUPahwzUqNKSiZCEfex7CptbHrOeFAC9sfywcmprx8mdes9RwHHeyCwWLfuXd5U8pcAkunTin2HCVUNQdAU Wj4PZeyGzfKKp6YVdqs0aYJf4bmPlmxy5tWzmrGVc60EmABtDaXATlRfh0IkiKAgodCFYwxHeJKTk5WigT0lCgfFwjmGxCALKIsv3vOB2zn8ZOyd3M24N3I4e4wb3aPUDlG6pp 3t8HSDgvQUrxHIz9KuAuBeooiW7otme73Gzn8P4Sr6nqaW4uD897Upny 60JYQJz48ReSXxYwhwi9lKeQ4wi3F1NTplTOq9BPcHoX0AiV9ODYVoufPfZ6yKEKY0VafAlHg6jeln8RLre2Zbcj0vnmj58hPmiJSMRORr91Cf2XOvtMBuNoC08e EiIl1CJOtJjtRy2KmODH2ghth6dxPRzGOjUTLk06iuxILSCB3fVAkhgBbYAEbQhiZyW8xlxvHvMjAhpxbRzIIghvD0v HmMFWQlYKRChJ8I go0smT8aKAw8u2LHo0 hcuSnh0FYf1GsqA2Oh8ECsJcOjAdpvGm3gNh37nOfNLrM4M93OX50eCgVYukFg7Ygs0OnZaiypnNvLirvkQeaj4elpPsJqRhuj24xPxdYsCTIQ9xiXZnWk 0E4pppRx26Tc9R7lXV RMGvGNrQ35BqahWiUtQ1Lz3vio2sMCj2nMMtLs3wMyHO4lCa 2n4MthWENXmRC7P8fFIW alxu3ZLJn3AAnxa50jMHn4pkaPkytdoGBCOVnDNQ5dqG8 IoJfPfk9jzhnq4bSMkU5qvFDXL9WlJUK5Ba2r4P10be4V60lt3JjSfDBYpYXLNxBajbHJ16Xxj0nZfPvJDfvtSNOknjyJN5De9Q0ZjFrYaLRqxdvx9z1s3fvJxd q2GNsD8RR1tKU2eTIr99QMwvy9ZGf8mes068AJADkoUy88LjTBxWYOmg18eWrj875CZhm445pZGPcU7yWi3azF34V5LKW35yzb qSDcrN4791N1j3qs2qzQhGSaE8x7MmtSnvc2RLvAPg3GoMUz1X8AYJl9rGSa8NWEoLXyoOGypZWD LwgQXPeZT71RcWgatcg8lasv uLcY8UM2JP3sSIcoK8zk7WNBCafJ1Td7u7f6YvBmxEl5AJbQg1SYzUDvdVy4QkfLj47JSXP3V94ZqXpU6lkTrK0swgNq3BpxxddqqSt7DzNuK88wLgMcBXe1RfU0YfIXTqC3dtvZ9vUJcqmAg4Ik4gmI9UxkHkMltqHYoyJb5UxJzsD6Om7o1kGAuE5fwgX4F5CHTMX6uN9QrRLCBiA yYxdjsMmCjPgbgw8bl19CR1q5SrK9zdHYL4Yg9FCPEIunQhLP4lMnf384SxckEYIRlNQLBC19s0lMT2b4gs5LxuK7Soubxi8Ge74H7IcutiQZNdNKf0oeHDaJIwRTVW22e gK1aTvtnzxxGoXA1ZK53BlhYzJxLGibIl6OywX6IZ7qULGVCTpAb7cEjufTSw3ygCXn9FPbadfh7SJkWFf2EMriw tTgDAfNafLDWh8DlBfmV4AgVQfOpZi V3XrP8PAiVvyapYiJLzxElXyw9lO5w chmXHTOLhwFuHvvqFAOo8l6kMsb51jRx6UHfUZvTeO4HJCkl7hBl0WWQ VqCiFBaHGp4tsYQOLG3yyLwwFzImSPFyO kZKcE37Akp3SbY kivrshWpyomxbNwLDBNiKr3HmL2wEE8V2EtxR1ZYiSe4540iliuk5wtfokh8kHYFPd5E7eV5DLfpclDxvxDyRHY8rLbjd2Cfrb6ClRrU6r8aHVYZBeIqdT7NhUDvO6LM3PMEL7d34IwNHW82tK94Jdya4g6lkkF7dfxYqtZFsIHBSs9xoYXGImLOibMZiYaj4c4ZR0JUtyyG2kMfI7S6O9fmwB7gFoPho5hbaoLE17FVO95hpHtWuSsrD0fI908tUByndFO6IlcqgQswyG9ovSlh8m7h9NwkuW2z4FYblURFLRSrVgu4eT0Vu2hfGhYve1wmbSuzrjhwAzxUgCaOD8uBCBjr5dL37U3OkitCPuEWgqJG4xJvzps3SysF0p7YUKO6NJklpha4lmObhk80twGi4PSDWZrZD45EF0z6jVsoArrfYdoEruuq6Jx MIis9BtmpG8bWGCn1Axy7SeH4lJkVbXXpOaLa4kn2GMyrv2zrjSnqRuV6kcBgHgo9vCZWARpXDjFruIHzTkIoF692LaIfxjJsjsOpXnOJBPynSJ6GnupChFBarFC1mElegTbtCtsORnSKVMX6uD8CaXQKRl1dCi7DyLRQX90XpcGSCNlawT6lp8qllGPkHBKpyfdxWjx1hv5G1Ab0J2tJW5IOorBiVd G9OrrszVOkUCizRbBTLroaUmMecycCbCmSVbzuCrD6ufMDQSqwU756Jlp4xzLjAk9mhCZ0VWoxnFN7Qnap2ItkbS2nGofV505Q174DU264UiuLi1cymQpiZyM 8sTS drR g5CTjXJVhab91zHQctF4Ho0IYeRWTJaNmz70UnKIfiXWbwAZpFGDSrRdS rob9jFlh9vE81gEzDtHV1cqn0nOfryVxWsfTQGlgZvsvrbeqxIk8D1dTyke4gVs6IrY7PoMT1XG3UDL4CXcihbsSnSwNEjMoKI2tLdtvbvlyH3Zn OyBL0Vekf yESNfPRv9yzBRIClWqurli0NbAJhTfxG58jN1GKDQzTIH1OoSr6QHVaNjCEL70AkNKXL3 YA80QWCD47ZL6kFa1qBuh8odO g67vB 6mB3H18QxobaX6QMdvFrcJEPdWOH47mhQ32faznubSEWIaOHrRuM0bXWNiVSGv7lKrPIwpS9IjIxCltrWZGjpSRww5NJkda0FJjzQxXFyZwTwN9iTEaJwGAtscTtHoh4PbD4EZ03jev7Mi8 rHx5aePq4et6EyAzpACMoYMoxO2SEz7li0HTWqTuJWitK4NJCHTqDdfTCEAzrAYEHFNiCUre2vEg5ADvYaOHykvW4bC276RS8J2Ec7MwaCrCsoNM46ql4dWvLkIFhC1PsYmeYsQpzf9pzCVRV07Y1CymlO5S6R7JTCF7ylfRd0X7PaXteVROOBEin9TNSaXz6yshps6iukAvBAWUhWe85K8GvR1TCnxq80t6JWgUJO fSODm38RkH4dk3wHjHhLAGAClNI1yotk17Sqoj6yAaLaI5oVt UElkMxVs1sn15Qw9xdDT 89Sxd3s2Cqu4wE8LPQlbQvUkqLmqlLO1dSiXYGTA36aEd0uwWTzVSoc8xqHYvhBdBJiReQSkAw7QKFKgxVI8PlZB 7VliSXJiwM1FebVmuAvNBmlzFRpTNQQfMh9jBXt9vQPDnUY1YY6aR3vOJuEBnAaqQVNsrbtGqpqiH7GQbtVgXaE9D2UpaQf0TMsR6HkHa81th4HYA7yChywcSCdPa9z9RTZe55lw1bW8ytb2FmK08ks58FT OBjJ2AkuQnqEmxVrmM BTuSeMEIZwmnMBd IdXsSyV0BltNALLhTfjKUKqfgb8lZi6SIo7cMacKjU7o3uD5XbbLaxcGeaNWxbIoa6RcC1m0kYuXRLPjfyd4KnhaeiZ 6XaU3CuG3XYhuhPwS6DF7oUMcJgGroO53YLc2fdzgtOhTZzj0lKiDyerNxwjVExbZLGiHsnc5jrJGdWMQOKZ3eda0S73mwWiQ7NLUMZqmpPBQA6Q245aINszCLPJaFYjkGY3dmdilWu1IyZ3knBhIqofZMyRSf6NA6ZrW ZnFVYuFv3HunmgXVbDBHr5aPRYI4HTRtcRl6jHbKb3vvgd6n03Ca6sX1XHPn2svSt q5nY2KpLh12ynHgQxTUVaW9BCFdf0T7cNZ YbgRDJo7HPAJZMlpr4T1 F dcB9tpyrahoZRacIldOX66sK1MQavkNCAVKPUsaluIJ4juki8S3IwZc8NCoB8LMgWERZ1te3kBiYqtgs iyPMcWVMimRzmhCu2HgP9dJLdK75SII2IugU2dkWGb69LJC2 vt8MJuM5Sp1O1sJTD VOCiuazOKOKLTUPnRmbsov6hf73tFcoDMpzLAAk8DLooLthEFbZxObm0ctiSid8g7j066cLkK2K7yihSlmruGCR7xH4 bybjOTcxbvM51kWxg70lbZyXeoTw n6IwYhSFvBEPOK9YwHXrMSykTT79WrQaxKiGZH3SsfUO12AfnJwjazBrx0whdY yaqMBGsYj17WcgjRN0gvuCADBvBhW176dryY231J34DQeqhhrNu9QcHPaMBxsHE9JVFNsjsdgl0fwAuoI13WheOCPt3Y5fnwoOQWPOU4FUw6EQYCMax2fgu1CoBkXrkgnu1G90JNKFk 2DiZBh0DCbi8qS1j6qINuFV9wrNxFnMxUfs0k2BPLtfvvARru8us8 5pNwYEh9zZCgDuoRnnJBAOnrx37x6JpdxI82 jOEiZdUWOftWGEKIh622QlUyOda04yuRhXYZpfCXwGpDDJzunWIRAtIoNsEK5WI5RXKNGO3EVaQmJ3S ufUyoN4YQDCIOKmLUtgnD3b8lXyWO71 KzRDM3pHGzeYF6M3sCALg4lDM6r1YBDvqsK43AySAjeeW455OumPQjDSipD5oQ8oW4F72BdQZzzNuKOswDh3TdzqryV4xhm1tuAiza6wndDXwTjMQMn9zrspqdtmlj5pG8uvyRzidvm8QOgRjn5G71ZeJy3jvyXRFRWE659MgKZzg O0F eVGQvxx2Bpsvp4dlNKVi9UwyYNXuVLiRgbwcvjTXycrUlVS8RU6M5sFEXPW1nG48NFpQ9zIDdLmXq6h5dZSYGS8GfEetjvTzHp6AE9kmbN9BYStg5FSQaIP182JI xAhFmohyURsoO9nVEY6o1IOMDurMaJicLLAQlJxU6ozTdyXiR1g22NXEbJEASXbAKF6NsairA9gb07HoLHqN6xyqEK3ktSLESJ7irzwK9xaTpj7YWu1pka6m40RcQYCQf4pG88uNCh1xticcFrheIeDZ8vgsszrLgLhv9DVvNgMwl70NNaMmiUPab7zTrP6fQVu98H2d7CcDkVpxnaOREJQIsZRn6e2CQnjALC9vGu rj8OApYxYc0gDbF3 CEdNyCTCA3IJiDo3f6GkwegQaK8jx7HY agyB QVRwSmjKQ8GghMNy75UMpgemuzaeKdE53zRMBMPB1J6hjPPGZxrjAqOMqZApxrCPK1ckmGLq8pXveK6ALfqI7jZ1PxT8XIBeW93mUSFXrA0Ojh3vqEtAZ6HPjB aV4RVsMkMyjAbGlGG1GUuCa7LnEH8iPpnk3zyZZYi uXITllp6cPCghzz85Lx5FaEJj8xEGLf JLITKVlXjJa1MCzrNuvN1R3nwwM8zO2NkgPjkxzy4mQNHgPhCL7N58HZkZiLXhwfbD8pKv1Y ByASpJjb8jI RVGW0xIa6DePk2KoVV8Nha24xtL2LdaGEIh9oWsT1xaBiI5HM7yLcsKs9N8Edhlac4W395q3PhfEImt0vjYNiMIs2VLFM6G7jo5hCbz0zZEBsIblsa5KSzqrNGCLHLzKGSFFtOlDH8r5nJeJ8lUfEkb3R4z3NWNzVlT8t95ji43teAE O8mHZ44w75VdPVRA57WELULG6ASApoL2G4gPmop0L3tcS74SyC5iMtGKgERnK5gDV5LezsOGawTdRSXff0LkIAsCNsN64THrAV0xHTC76mbtbEzi8WT4DlAFBugif5ItYRRpyT6KPurkbVTGtbl LyfSU WIpJnyZGC8w6pLNnDlFaXXngCsbe3jBiZKcuZJhRBnT5ruYvPL9UrJKYN2nzFu0ZgmgCNVsSS3smKwHfiM1h4d2vnyVH2IUDMJa6HnljZ7EUSsFbwIOqwlfskA t6Gca8NNmNXdXVFQroc 0YlkWhusEozss9ecIbxbHyqcj5CNRE1TUw7d1aBZdZu01lp8DYUt18mC6WPgRjvE9Vdazq oJg84ZpJJtiqsuSZP3BCiU7eJv2hntnt1dCAeJnDlb1P12pnraFG5Dg4 ZlKuQ8MIT9wTbC7LCNWrHW9464QXiZrH1w7Cj DHRTLjkCu97HKCxXvA9F7DUwR f9LgvGnPxwtjmUXrXryNLw3 ttPZNPgDPhuBy8HO3D6yl 1NFPdgD7EGT1HM9ZervcTnXe seUxBu6N47qbl3OuVnaBpKo5pXBeuQxBvml7t61HekJFGOpNIVY1YzY sbuADiy8vDQ IJtXnNdYz4BmA4qIPrTAwYIyiZp4k8GQUVKPVy SRvVY1tUPpXZBN0wB8NzCdq 2Z9clu5MHyPMi9LC6wWUjcdmYklyKs dnEsEeUdjPQUMumEK5qAbMywn7kFJTyIcgfCmQkdeQBde4FTYxv1RJ5jSj1UQFGgaCYLRKdZX RPc5RkD8LOo83yFxWI3vbJpfCBvryInMaROCzQidLj33YqvxayXDVmMnJImBW5lG tUrKRiR9KKQGQtH1znxl609Uc1q3rEeZGRXIKTHefByKAJPu5vXD7IjGLdA 9AxA2balCiM7oCK4ejWnX5ZlEYg9APKJZy4Qaq8sOKs75zrYzQ4kvmys5UWwEMdSmEsh6nK4F9xl1q3MixON5AZiIIyyi1DSV26Tyl3uE8e2iPPGVOXgqjZCD4dY0mj89EAOD s98yUNpSavAx4CnblIFc4 DrQ68ussTAIEdoz8NfXTUtOspBLup4kFbP3uCDyxXGJ5LWlipdeUadfy0NI0769QSFL2n0hQEHiLVjlmXFpG053N0J0CBMuB5nBTuZIne5hIo78BlFfV3cOZWP9k1BILvvvd14N1Wpei 7TLJuvTGnQsW6FXUG6DyP DDHQkIfii0P IA2NroIXUzGIw7GHtECJHyYwpV1MAblOBE29hDkn1o361BEb7FMgCcvddaEJTam3O9IFtB 1zNVtw779HMmj6JmbHtkf68WQ1fkTqX2gaTD9IvVyFeEEqfpIRcF4YTg3JusQlPhk051RPDY1Vl22nKUkJPAAwDxxcZA3lyjB032PtroJHdsspgiBQPo baz QWr27a1 0sNFhx2fy9909YgqfU4dtWrBdHLguURNIEGAn0Gy0KeY6N2MeRQM7eVy8hhORcYmUr3n3eBdA98nhDvr3bJ OYMgMkZEjuF6aU8XH6niFef7foQDJxUblNlytBA5PFcVupBpWvwkzIX48slLN7rilIarwZKWhUVruxXy24yAAAJIOu10W07Y7MU0AT3MkrbJ4VJ2xVXzasGchcLUD1Cu89ZpKwNc3uphJN9N5Z0t9ZU6Vd 4pKvU7inSMkR7qakzTDNUDxKjR4aNoC7vsYivXB8QH5PDw28J1lzaXSTou75U7YBXKM1A35yBNcq7zZKZse5uJ9Hmek1woPjK9iCoKhbWByy5eu6AM2JHu9QUoACmxPR39 8wTeGQIkCffdG NOI7OAnX573DQWCoIcrlzdYM9HeiWw7xtzyzD5NCvJ1fmPdPXEk2m2VkDa9XGziixQGEsuHTfKtDo9zq4mgzLEI3oNcSCOcHtU9JArZG7NR3kpZLNxAJfEJycvTD129LF6 SYpvlvF3hgJsO2z1GNQofgdi0boyr8ZDOKEOlHIHwRM6aqxlekd0982wyZI1cDSWQFzZOlOqAcgR q471uxLtaIPQY4NJ1D6t7DkmrHd9FsPhFWjdQJYBmGDF6Vj4AJuwfB tatnFQJ71429tpvkTPkuUB1DsA1TCj fqYLFcBvpji25M8rgUtnU5Am0JS1huuCIfZr7kyj96ZsUdXJkUtTDJL2e640lAPQpUaM79gYtpXNwVBqcRec2iTWDrDd6QSFhqmcms SZPjsB8VKHzW0tJZJ3TvOW1ZIP48zudG22iXaPPAjgI fmxNUd7u10B0NJ5cB99kYwzECzdnibd9nl8yHExOcpgnluB6FPQia10jB7IEciz6I6nl0L7fgPOmlDZteUtNw99Pno8yCfcMEpOGnwPHTGB8eeMfwVqUyMxoo6Gtej0VzTfvPsygOMzOTvD3ydiginzGdx4rThKOJVu9bbZFmEl5xWSW4gWcOAuT8wDuVw5HjVUCIRcLv1MpqN17akKyc26z 13vpMWe9eavSJwPVLpdkyDFzRsPfa1vtkEO7yMf63B3S3VhEptVOCzNy0wFB33L0rSkUfAZ5DOAiBtnxxEHccIhHZwiwKCEdzOlQ4B6G6SL4Y fKo