From 5b451f7e118e78a34b6b0de6c68467410858a9cf Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 18 Jan 2023 18:22:41 +0300 Subject: [PATCH] Allow redundant 0xFE0F after emoji. --- tdutils/td/utils/emoji.cpp | 447 ++++++++++++++++++++++--------------- tdutils/test/emoji.cpp | 10 + 2 files changed, 274 insertions(+), 183 deletions(-) diff --git a/tdutils/td/utils/emoji.cpp b/tdutils/td/utils/emoji.cpp index aaefb4c59..56b8e1dad 100644 --- a/tdutils/td/utils/emoji.cpp +++ b/tdutils/td/utils/emoji.cpp @@ -13,193 +13,274 @@ namespace td { bool is_emoji(Slice str) { - constexpr size_t MAX_EMOJI_LENGTH = 35; + constexpr size_t MAX_EMOJI_LENGTH = 38; static const FlatHashSet emojis = [max_emoji_length = MAX_EMOJI_LENGTH] { #if TD_HAVE_ZLIB Slice packed_emojis( - "eJyNnety27i2rV8lVfvf-XXul7frVmfZ6cS6kJJskrLj7tUUaYmOI1uObcUEWLUfJecBdledFzgaJIfJiUkyqyqAJ4wxJzE_QABF2fGPs-" - "jdj7PVux_TzbFsjyU7lttj2R3L_t2PC3Ms9t2PYHEsy3c_wg_H8vuxfDyWT8dydizjY5kcy_RYZsfiHYt_LPNjKd79iI5foz-P5Rg_" - "OsaPjjGjY8zV-2P5x7EcfVfH-Ktj_-rhWI7XXX07lu_HctReHjWXx-tdHq93efPux9XxmldHn6tj3Kuj39VxXFcX7358Pn79fH4ssI_j_" - "3y89u0xt9vLdz--HMf1Zfnu7-tf3h-r36bH6mSCykPlo5qjWqCC7uQc1QWqAFWIKjpWH35FVVpfUT2g2qN6RPUN1ROqF1QHVN-P1e8zVLja2S-" - "oEOVshOo3VBjV2T9QnaA6RfUB1e-oPqL6hOoM1RgVRn-GPM4Q-ayMjDzOkMcZ8jhDHmfI4wx5nCGPM-RxhtEfZ_" - "1YXaK6QvUZ1TWqP1B9QXWHClme7VDdo0K-Z8j3DPmeId-zZ1TI9wz5niHfs1dUOSqDyqIqjtUY6Y-R_hjpj5H-GOmPkf4Y6Y-R_hjpj5H-" - "GOmPkf4Y6Y-R_hjpj5H-GOmPkf4Y6Y-R_hjpj5H-GOmPkf4Y6Y-R_hjpj5H-GOmPkf4Y6Y-R_hjpj_" - "9E9U9Uf6GKUa1RJahSVDeoNqi2qDJUt6iAbgx0Y6AbA90Y6MZANwa6MdCNgW6MpTIGvzH4jcFvDH5j8BuD3xjoxkA3AboJ0E2AbgJ0E6CbAN0E" - "6CZANwG6CdBNgG4CdBOgmwDdBOgmQDcBugnQTYBuAnQTpD9B-hOkP0H6E6Q_QfoTpD9B-hOkP0H6E6Q_QfoTpD9B-hOkP0H6E6Q_QfoTpD9B-" - "hOkP0H6E6Q_QfoTpD9B-hOkP0H6E6Q_wfKZgMEEDKZgMAWDKRhMwWAKBlMwmILBFAymYDAFgykYTJHvFPlOke8U-U6R7xT5TpHvFPlOke8U-" - "U6R7xT5TpHvFPlOke8U-U6R7xT5TpHvFPlOke8U-" - "U6R4BQZTZHRFBlNkdEUGU2R0RQZTZHRDBnNkNEMGc2Q0QwZzZDRDBnNkNEMGc2Q0QwZzTCrM8zqDLM6w6zOkOUMWc6Q5QxZzpDlDC-" - "IGV4QM7wgZnhBzPCCmOEFMcMLYoYXxAwviBleEDO8IGZ4QcxAaAZCMxCagdAMhGYgNAOhGQjNQGgGQjMQmoHQDIRmIDQDoRkIzUBohhUxw4qYY" - "UXMAGyGFTHDiphhRczAbwZ-M_Cbgd8M_GbgNwM_D-" - "g8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8" - "UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9Q8UPNAzQM1D9S8khpWnQ90PladD34--Png54OfD34--" - "Png54OfD34--Png54OfD34--Png54OfD34--Png54OfD34--Png54OfD34--Png54OfD34--Png54OfD34--Png54OfD34--Png54OfD34--" - "Png54OfD34--Png54OfD34--Png54OfD34--Png54OfD34--Png54OfD34--M3Bbw5-c_Cbg98c_ObgNwe_" - "OfjNwW8OfnPwm4PfHPzm4DcHvzn4zcFvDn5z8JuD3xz85uA3B785-M3Bbw5-c_Cbg98c_ObgNwe_" - "OfjNwW8OfnPwm4PfHPzm4DcHvzn4zcFvDn5z8JuD3xz85uA3B785-M3Bbw5-c_Cbg98c_ObgNwe_" - "OfjNwW8OfnPwm4PfHPzmoLYAtQWoLUBtAWoLUFuA2gLUFqC2ALUFqC1AbQFqC1BbgNoC1BagtgC1BagtQG0BagtQW4DaAtQWoLYAtQWoLUBtAW" - "oLUFuA2gLUFqC2ALUFqC1AbQFqC1BbgNoC1BagtgC1BagtQG0BagtQW4DaAtQWoLYAtQWoLUBtAWoLUFuA2gLUFqC2ALUFqC1AbQFqC1BbYNUt" - "kf4S6S-R_hLpL5H5EpkvkfkSmS-R-RKZL5H5EpkvkfkSmS-R-RKZL5H5EpkvkfkSmS-R-RKZL5H5EpkvkfkSmS-R-RKZLzG-c1zjHNc4h-" - "QCw73AcC8w3Au8SC4w3QGmO8B0B5juANMdYLoDTHeA6Q4w3QGmO8B0B5juAPkGyDdAvgHyDTDdAZIOkHSApAMkHSDpAAMKMKAASQdIOkDSAZIO" - "kHSApAMkHSDpAEkHSDpA0gGSDpB0gIwCJB0g6QBJB5juANMdYLoDTHeA6Q4w3QGmO8B0B5juANMdYLoDTHeA6Q4w3QGmO8B0B5juANMdAGcAfg" - "H4BeAXgF8AfiH4heAXgl8IfiH4heAXgl8IfiH4heAXgl8IfiH4heAXgl8IfhHiRYgXIV6EeBHiRYgXIV6EeBHiRYgXIV6EeBHiRYgXIV5UxsN8" - "RJiPCPMRYT4izEeE-YgwHxHmI8J8RJiPCPMRYT4izEeE-YgwHxHmI8J8RJiPCPMRYT4izEeE-YgwHxHmI8J8RJiPCPMRYT4izEeE-" - "YgwHxHmI8J8RJiPCPMRYT4izEeE-YgwHxHmI8J8RJiPCPMRYT4izEeE-YgwHxHmYwV-K_Bbgd8K_FbgtwK_" - "FQitgGQFJCsgWQHECiBWALFC0iskvULSKyS9wuhXGP0KQ1thaCsMbYWhrTC0FYa2wtBWGNoKQ7sGq2uwugara7C6BqtrsLoGq2uwugara7C6Bq" - "trXO0aXGIMN8aExpjQGBMaY_" - "QxRh9j9DEmNMaExsgjRh4x8ogxoTEmNMaExpjQGLnFyC1GbjFyizHIGIOMMcgYg4wxyBiDjDHIGIOMMcgYg4wxyBiDjIEkxoTGmNAYExqXA8eE" - "xpjQGBMag1oMajGoxaAWg1oMajGoxQAWYy5jzGWMuVxjLteYyzXmco25XGMu15jLNV4Ga7wM1ngZrPEyWONlsAa1NaitQW0NamtQW4PaGtTWoL" - "YGtTWorUFtDWprUFuD2hrU1qC2BrU1qK1BbQ1qa1Bbg9oa1Nagtga1NaitQW0NamtQW4PaGtTWoLYGtTWorUFtDWprUFuD2hrU1qC2BrU1qK1B" - "bQ1qa1Bbg9oa1NZYa2ugWwPdGujWQJcAXQJ0CdAlQJcAXQJ0CbaRBPwS8EvALwG_BPwS8EvALwG_BPwS8EvALwG_BPwS8EvALwG_" - "BPwS8EvALwG_BPwS8EvALwG_BPwS8EvALwG_BPwS8EvALwG_BPwS8EvALwG_BPwS8EvALwG_BPwS8EvALwG_BPwS8EvALwG_BPwS8EvALwG_" - "BPwS8EvALwG_BPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_" - "FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_FPxS8EvBLwW_" - "FPw2iLdBvA3ibRBvg3gbxNsg3gbxNoi3QbwN4m0Qb4N4W0zAFhOwxQRsMQFbTMAWE7DFBGwxAVtMwBZ0t6C7Bd0t6G5Bdwu6W9Ddgu4WdLeguw" - "XdLehuQXcLulvQ3YLuFnS3oLsF3S3obkF3C7pb0N2C7hZ0t6C7Bd0t6G5Bdwu6W9Ddgu4WNLagsQWNLWhsQWMLGlvQ2ILGFjS2oLEFjS1obEsa" - "oLsF2AxcMnDJwCUDlwxcMnDJsOAyLLgMSDIgyYAkA5IMSDIgyYAkA5IMSDIgyYAkA5IM6WdIP0P6GdLPkH6G9DOknyH9DOlnyC1Dbhlyy5Bbht" - "wy5JYhtwy5ZS_v_n1z_PcfL9N3_353_Afjxy85Smn--jtKab7_" - "J0plHlBK82SBUplLlMo8R6nMC5TKDFAqM0SpzA1KZW5RSvPsBqU0p2WpzC8olXmHUplfUSrzHqUyH1Aq8wWlMg8olfkdpTSP70WPpTTPtyiVma" - "FU5hNKaV78glKZryiVmaOU5vHu_Vgq81eUyhyhVOZvKJX5HqUyJyiV6aFUZoBSmVcolfkHSmX-E6Uy_" - "0KpzASlMrcolXmHUplfUSrzBaUyDyiV-R2lNI-308dSmSOUyrxGqcw_" - "UCrzL5TKXKNUZoJSmTcolfmKUpkWpTSPt8THUpkLlMpcolTmOUplXqBUZohSmSuUyrxEqcw_" - "UCozRanMHUpl3qOU5uoDSmWWpTI9lMqco1TmBqUydyiVeY9SmY8olfmMUpkvKJV5QCnNyxFKZX5AqczfUSrzDKUyxyiVWZbK9FEqc4FSmecolX" - "mFUpl_olTmHqUyH1FK8-o9SmWeolTmXyiVGaOU5uc_UUrzeGt5LJX5DaU0b_-BUpknKJV5igLz__" - "6yQ6lMg1KaHy9QKjNEgfn39T92ZVU37suqbtiyqhtFWVWND6OyqhvPZVU1zv4sq7oRl1XdWJdV3UjKqm6kZVU3bsqqbmzKqm5sy6puZGVVN27L" - "qm48lVXVGJuyqhqT87KqGxdlVTfCsqobUVnVjVVZ1Y3PZVU3rsuqakw_" - "lVXdOCurujEuq7oxKau6sSirurEsq7pxXlZ146Ks6kZQVnUjLKu6EZVV3ViVVd24LKu6cVVWdeNzWdWN67KqG_uyqhvfyqpuPJdV1ZiVnx_" - "Ui8L7tayqxtyUVdVY_" - "l5WdeNjWdWNr2VVN3ZlVTf2ZVU3Hsuqbnwrq7rxVFZ147ms6sZLWdWNQ1lVjfPTsqobH8uqbnwqq7pxVlZ1Y1xWdWNWVnVjXVZ146as6sZ9WdW" - "Nh7KqG3lZVY2LUVnVjd_Kqm68L6u64ZVV3fDLqm7My6puXJZV3bgqq7rxuazqxp9lVTf-" - "Kqu6cVNWdeNrWdWNfVnVje9lVTVWn8qqbozLqm5MyqpuVFXd-KOs6safZVU3_llWdeOvsqobcVnVjXVZ1Y1NWdWNXVnVjX1ZofFvP377692_" - "HS18_U9lVTf-c1nVjf9SVnXjv5ZV3fhvZVU3_ntZ1Y3_UVZ143-WVd34X2VVN_53WdWN_" - "1NWdePv69PkWG5obGhsaWQ0bmnc0bin8UDjkcYTjWcaLzQONL7TyGkYGniBn6Zo0EhpbGhsaWQ0bml8oXFH4yuNexoPNPY0Hmk80Xim8ULjQOO" - "VRk7D0igHf8PB3xDvDQd_wzHfcMw3HPMNxwxjR-OexgONPY1HGt9oPNP4TuOVRk7D0LA0yjFvSHXDgW2IbsPxbDiMDa--ofuWKW-" - "Z8pYBtwy4ZaZbDnVLvFvi3XLwGWlkHEbGYWQcRsZhZAx4y2Hcctnckvwtx3PLKbjlwG45sFte9Jbkb3mtW5K_" - "JfBbrpbb9tVfaBxofKeR0yjJf2E6X3iJL7zEFwb8wjhfGOeOeO-Y1x3zuuOY7xjwjgHvCOqOY77jJe445jte6ysDfmWcr3T_" - "ytx31OzIcEeGOzLc0X3HYeza7s80chqWRrmi7jmV95zKe-Z-z0vck-E9A94znXumc090MF5plNd64CUeGPmBVB-Y4ANXywMzfWCmD7z6A8k_" - "MOUHpvxAdA_M_YFT8MAxP3DMDxzzA8f8wDE_EBQMQ-Mti5LYnunsmc6eWeyZxZ5Z7Mlwz8HvOdQ9h7rnCPccz57XemSm33jRb7zWN17rG6_" - "1jcS-kdg3XvRbO86exjONFxoHGjmNMvcnXv2ZV39mFs90f-bgn-n-" - "Qi8YKY0bGhsaWxq3NL7QuKPxlcaOxj2NBxp7Go80nmm80DjQeKVhaFgaJfkDB3_gmA8c84HkDxzzgWM-" - "cKgHDvXAoR441AOHeuBQDxzqgSM8cIQHwjxwYN85sO-8-ndG_s7I35nyd-b1ne6vdH9lXq-" - "cglcGfCX5VwZ85eTmzD3nJQwztYxjmUXBaxUcYVGnM338f3_8mh7LP49lfSx3dbtwO_fH8texPHZ1Ph_LbS0q8Oin_GGo6mtefzX1V1t_" - "LfAkodKVX_P6q6m_2vprgR8NrXTl17z-auqvtv4K3ada96nWfap1n2rdp1p3VuvOat1ZrTurdWe1blzrxrVuXOvGtW5c_4DX5B_1T3-" - "VRk7D0LA0SnIj_qjYiD8uNuKPjI34Y2Mjin-j-DeKf6P4N4p_o_g9xe8pfk_xe4rfU3xK8SnFpxSfUnxK8UeKP1L8keKPFH-k-BPFnyj-" - "RPEnij9RfEbxGcVnFJ9RfFaLPaLziM4jOo_oPKLziM4jOo_oPKLziM47ofiE4hOKTyg-oZjoPKLziM4jOo_ovA8Uf6D4A8UfKP5A8e8U_" - "07x7xT_TvHvFHNSPE6Kx0nxOCkeJ8XjpHicFI-" - "T4nFSPE6Kx0nxOCkeJ8XjpHhvkzKmeEzxmOIxxXyleBOKJxRPKJ5QPKF4SvGU4inFU4qnFM8onlE8o3hG8YzihOKE4oTihOKE4pTilOKU4pTil" - "OIbim8ovqH4huIbijcUbyjeULyheENxRnFGcUZxRnFG8S3FtxTfUnxL8S3FXyj-QvEXir9Q_IXiO4rvKL6j-" - "I7iO4p3FO8o3lG8o3hH8T3F9xTfU3xP8T3FDxQ_UPxA8QPFDxTvKd5TvKd4T_Ge4keKHyl-pPiR4keKv1H8jeJvFH-j-BvFTxQ_" - "UfxE8RPFTxQ_U_xM8TPFzxQ_U_xC8QvFLxS_UPxCcU5xTnFOcU5xXov9X2txaeQ0DA1LoxRzf_a5P_vcn33uzz73Z5_7s8_92ef-7HN_9rk_-" - "zxhfZ6wPk9YnyeszxPW52buczP3uZn73Mx9buY-N3Ofm7nPzdznZu5zM_e5I_" - "nckXzuSD53JJ87ku9R7FHsUexR7FG8pXhL8ZbiLcXbWrzkEl1yiS65RJdcoksu0SWX6JJLdMkluuQSXXKJLr9T_J3i7xR_p_" - "h7LT6f1eLSyGkYGpZGKV5SvKR4SfGS4iXF5xSfU3xO8TnF57U45NoIuTZCro2QayPk2gi5NkKujZBrI-" - "TaCLk2Qq6NkGsj5NoIuTZCro2QJ2zIEzbkCRvyhA15woY8YUOesCFP2JAnbMgTNuQJG_KEDXnChjxhQ56wIU_" - "YkCdsyBM25Akb8oQNuZ5DrueQ6znkeg65nqO_" - "anFp5DQMDUujFHOJRlyiEZdoxCUacYlGXKIRl2jEJRpxiUZcohF30Yi7aMRdNOIuGnEXXf1Si0sjp2FoWBqlmJOy4qSsOCkrTsqKkxJTHFMcUx" - "xTHL-" - "JyTkm55icY3KOyTkOKA4oDigOKA4oDikOKQ4pDikOKY4ojiiOKI4ojiheUbyieEXxiuIVxZcUX1J8SfElxZcUX1F8RfEVxVcUX1H8meLPFH-m-" - "DPFnym-pvia4muKrym-ppg3gTFvAmPeBMa8CYx5ExjvKN5RvKN4R_GOYt7JxLyTiXknE_" - "NOJuadTMw7mZh3MjHvZGLeycS8k4l5JxPzTibmnUzMO5mYdzIxX4MxX4MxX4MxX4MxX4MxX4MxX4MxX4MxX4MxX4MxX4MxX4MxX4MxX4MxX4Mx" - "72Ri3snEvJOJeScT804m5p1MzDuZmHcyMe9kYt7JxAeKDxQfKD5QfKDYUGwoNhQbig3FlmJLsaXYUmxr8ZoJrpngmgmumeCaCSbknJBzQs4JOS" - "fknJBzQs4JOSfknJBzQnQJ0SVElxBdQnQJ0SVElxBdQnQJ0SWvFL9S_" - "ErxK8WvtTjlaZXytEp5WqU8rVKeVilPq5SnVcrTKuVplfK0SrmLptxFU-6iKXfRlLtoyruvlHdfKe--" - "Ut59pbz7Sn2KfYp9in2KfYrnFM8pnlM8p3hO8YLiBcULihcULyjmPVLKe6SU90gp75FS3iOlvEdKeY-U8h4p5T1Synuk9ILiC4ovKL6g-" - "IJiHkApD6CUB1DKAyjlAZTyAEp5AKU8gFIeQCkPoJQHUMoDKOUBlPIASnkApTyAUh5AKQ-" - "glAdQygMo5QGU8gBKeQClPIBSHkApD6CUB1DKAyjlAZTyAMr4PiXj-5SM71Myvk_J-D4l4yO4jI_gMj6Cy_" - "gILuMjuIw3rhlvXDPeuGa8cc1445rtKN5RvKN4R_GOYh5AGQ-" - "gjAdQxgMo4wGU8QDKeABlPIAyHkAZD6CMB1DGAyjjAZTxAMp4AGU8gDIeQBkPoIwHUMYDKOPGmHFjzLgxZtwYM26MGTfGjBtjxo0x48aYcWPMu" - "D9n3J8z7s8Z9-eM-3PGXTTjLppxF824i2Zvb6Vvfvwy_nEVH-u_61_0rL-DHzpQ3yy_43_qV6u-v-tfJKWtv5W27Y5ureqI2x--4yr9F-u_" - "5kaLN73X3PT6d1xz03FNzKCYmL9bz-" - "Re3Qnq6Gx68iE3t7PpMUNubmfTY4fc3M6mpxhyczvlQhsgM6RRgj5OQxol6KM2pFGCPoZDGiXoI9qrwTuWnkxll-nvsv1db9fKe9d1PrSulVs-" - "5OZ2doy-y83t7Misy83t7M-6e1233TrXrOM9pOlfswNBOnF1rtmBIJ3wOtfsQJBOlJ1rdiCI0Mhl-NrfZfq7bH_X27VM77o2Q-taueVDbm5nx-" - "i73NzOjsy63NzO_qy713XbrXPNOt5Dmv41OxCkE1fnmh0I0gmvc80OBOlE2blmB4IITc-61l15f5ft73q7lu1d13ZoXSu3fMjN7eyg3-" - "XmdnZk1uXmdvZn3b2u226da9bxHtL0r9mBIJ24OtfsQJBOeJ1rdiBIJ8rONTsQRGh61rXuyvu7TH_" - "X27WK3nVdDK1r5ZYPubmdHUPscnM7O3h3ubmd_Vl3r-u2W-eadbyHNP1rdiBIJ67ONTsQpBNe55odCNKJsnPNDgQRmp51rbvy_" - "i7T31X9pIWY99Z35Jt5Idt0yTauTLyv3_Sk3OfUdQnV93f9rrjjXXX77XTH--iON9D1tzri9ofvuEr_xbqu-Xffm_" - "ZWj95UOt3yITe301kffW5up7t2etzcTmd597m5nTW2ISRdnU1PL5KuzqanF0lXZ9PTi6Srs-npRdLV2b2HdngPabr30J8E6cSl9tCfBOmEp_" - "bQnwTpRKn20J8EGQQ7tOSGNErwM7C967At-BnY3lXZFvwMbO8abQt-BlZpOk6p7i7T32X7u3qupajKrp5rKQKy6-1a3Q-jWj3d-3X3w6g-" - "N7ezg1Tvw6hONzvk5nZ2EO59GKXcNkNIujo7Jq3LrRvJZghJV2fHZHe5dSPpWgjd-_Xg87kO7yFN_178s-dzQ0H6qA1p-" - "vfinz2fGwrSR3RI078X9wTpXXmde_FAkEGwQ8txSNO_Fw8EGQQ7tFR7NR1vOLq7TH-X7e_" - "quZaamp79Wnf1XEvk1f2QtdXTvV93P2Ttc3M7O0j1PmTtdLNDbm5nB-Heh6zKbTOEpKuz46XQ5daNZDOEpKuzY7K73LqRdC2E7v168Llzh_" - "eQpn8v_tlz56EgfdSGNP178c-eOw8F6SM6pOnfi3uC9K68zr14IMgg2KHlOKTp34sHggyCHVqqvZqe_brngX53l-3v6rmWmpqeW2_" - "d1XMtkVf3hwetnu79uvvDgz43t7PjJdT74UGnmx1yczs7CPd-eKDcNkNIujo7ZqbLrRvJZghJV2fHZHe5dSPpWgjd-_Xg5ykd3kOa_r34Z5-" - "nDAXpozak6d-Lf_Z5ylCQPqJDmv69uCdI78rr3IsHggyCHVqOQ5r-vXggyCDYoaXaq-nZr3s-qOruMv1dPddSU9OzX-uunmuJvLo_FGv1dO_" - "X3R-K9bm5nR04ej8U63SzQ25uZwfh3g_FlNtmCElXZ8fMdLl1I9kMIenq7FjuXW7dSLoWQvd-3feZWB-ZIU3_" - "XjwQpBNX5148EKQTXudePBCkE2XnXjwQZBDs0JIb0vTvxQNBBsEOLcchTf9ePBBkEOzQUu3V9OzXuivv7zL9Xba7S01Nz36tu3quRTip1_" - "529V9rl78xonnJXyDpft7fqVEC8y8EcTVKYP-FIK5GCYp_IYir-TmMfgqD6ffnPZhwf6aDKerO-m-stdpvy6Jefj1deX-X6e-y_V1vw-" - "p4jOn8QlP_vLma_iU2EMTV9C-xgSCupn-JDQTpZDIIo5_CYPr9eQ8m3J_pYIq6s70MxUNcnU_PMtRdpr_L9ne9Davj6YwcTPfTmU5N_" - "3Y5EMTV9C-xgSCupn-JDQTpZDIIo5_CYPr9eQ8m3J_pYIq6s70MxbMpnU_PMtRdpr_L9ne9DavjTaccTPebzk5N_xIbCOJq-rfLgSCupn-" - "JDQTpZDIIo5_CYPr9eQ8m3J_pYIq6s70MxVtunU_PMtRdpr_L9ne9DavjXloOpvteulPTv8QGgria_iU2EMTV9G-XA0Fczc9h9FMYTL8_78GE-" - "zMdTFF3tpeheCeh8-lZhrrL9HfZ_q7m93rL7zW_rOt8z3R8z3Z87y1e3nzvteN7puN7tuN7b_FMRzzTMWbTEc90xLMd8WxHPNsxZtsRr-" - "iIV3TEKzriFXLM1e_vln8Lj-Z_VP9Vf9U6b5ntjssPLbPVUf8Z7dou_5I07byxyz_jTDtu2a1fGy7_" - "fDHtL43tv7bsVsxF67dty79zWdvlHxSk7Td2-" - "WezaLfiJPL3M2s0TZPJvn3n3Gm6ghpV03QEb8je2jW2pu38NmaNr2nHTvtGtmuUTfuLbPuvTtu53iJ12reyXSNu2r5s16ibthO_" - "QZ5L5LlCnkvkuUKeS-" - "S5Qp47yHMHee4gzx3kuYM8d5DnDvLcQZ47yHMHee4gzx3kuYM8d5DnDvLcQZ47yI1EbhRyI5EbhdxI5EYhNw5y4yA3DnLjIDcOcuMgNw5y4yA3" - "DnLjIDcOcuMgNw5y4yA3DnLjIDcOciuRW4XcSuRWIbcSuVXIrYPcOsitg9w6yK2D3DrIrYPcOsitg9w6yK2D3DrIrYPcOsitg9w6yK2DvJDIC4" - "W8kMgLhbyQyAuFvHCQFw7ywkFeOMgLB3nhIC8c5IWDvHCQFw7ywkFeOMgLB3nhIC8c5IWDvGgh3zS4NwL1psG8EYg3Dd6NQLtpYd20kG5aODct" - "lJsWxk0L4aaFb9NCt2lh27SQbVq4Ni1UmxamTQvRpoVn00KzaWORdxWtJpOVdxWtpiuoUam7Cn7nDZlzV9FqOz9WX-" - "Nz7ipa7RvZrlE6dxVN23912s71FqnTvpXtGrFzV9G0a9TOXUWrLX8ut0GeK-" - "S5RJ4r5LlEnivkuYM8d5DnDvLcQZ47yHMHee4gzx3kuYM8d5DnDvLcQZ47yHMHee4gzx3kuYPcSORGITcSuVHIjURuFHLjIDcOcuMgNw5y4yA3" - "DnLjIDcOcuMgNw5y4yA3DnLjIDcOcuMgNw5y4yC3ErlVyK1EbhVyK5Fbhdw6yK2D3DrIrYPcOsitg9w6yK2D3DrIrYPcOsitg9w6yK2D3DrIrY" - "PcOsgLibxQyAuJvFDIC4m8UMgLB3nhIC8c5IWDvHCQFw7ywkFeOMgLB3nhIC8c5IWDvHCQFw7ywkFeOMhbdxXlJ94VbpoVqLp13jLbHSVemq2O" - "Gmttl0hp541doqQdt-" - "ybxi7x0f7S2P5ry27FLHHRvm3sEhNtv7FLPLRbcRL5mXONxr2raH3n3Gm6ghqVe1fx9p03ZPKuot12PlKu8cm7inb7RrZrlPKuotX2nU-" - "zfed6NVp5V9Fq14jlXUWrXaOWdxXttvx8tUGeK-" - "S5RJ4r5LlEnivkuYM8d5DnDvLcQZ47yHMHee4gzx3kuYM8d5DnDvLcQZ47yHMHee4gzx3kuYPcSORGITcSuVHIjURuFHLjIDcOcuMgNw5y4yA3" - "DnLjIDcOcuMgNw5y4yA3DnLjIDcOcuMgNw5y4yC3ErlVyK1EbhVyK5Fbhdw6yK2D3DrIrYPcOsitg9w6yK2D3DrIrYPcOsitg9w6yK2D3DrIrY" - "PcOsgLibxQyAuJvFDIC4m8UMgLB3nhIC8c5IWDvHCQFw7ywkFeOMgLB3nhIC8c5IWDvHCQFw7ywkFeOMjf7irqP-EFQPjT6-0WcLW_" - "MZKtpjsX3rnrnQvv3PU2wtu43kZ4G9fbCm_relvhbV3vQngXrnchvAvh3XhWHz02jo0Te-o_" - "XDz9rXZqTNExapnsaE2ObCrByGm2BLmMkKsIuYyQqwhGRjAqgpERjIpgZQSrIlgZwaoIhYxQqAiFjFCICO8b7_" - "fC833j9V56SPatphKMnGZLkMsIuYqQywi5imBkBKMiGBnBqAhWRrAqgpURrIpQyAiFilDICJL9x8b7o_" - "D82Hh9lB6SfaupBCOn2RLkMkKuIuQyQq4iGBnBqAhGRjAqgpURrIpgZQSrIhQyQqEiFDKCZP9Jkmw1lWDkNFuCXEbIVYRcRshVBCMjGBXByAhG" - "RbAyglURrIxgVYRCRihUhEJGcEi2vMWe_9Y3En30O5Mz0GoqwchptgS5jJCrCLmMkKsIRkYwKoKREYyKYGUEqyJYGcGqCIWMUKgIhYwgZ-" - "Cs5e3OwFnL0ZkB7-7Nj6boGLVMdog5azeVYOQ0W4JcRshVhFxGyFUEIyMYFcHICEZFsDKCVRGsjGBVhEJGKFSEQkYQc-Z9bby_Cs-" - "vjddX4bFrPHbCY9d47KSHnK2dmq2dnK2dmq2dnK2dmq2dnK2dmq2dnK2dmq2dnK2dmq2dnK2dmq2dnK2dmq2dnK2dmq2dnK2dmq37xvteeN43X" - "vfSQ7K_V-zvJft7xf5esr9X7O8l-3vF_l6yv1fs7yX7e8X-XrK_V-zvJft7xf5esr9X7O8l-3vFft9474XnvvHaSw_Jfq_Y7yX7vWK_l-" - "z3iv1est8r9nvJfq_Y7yX7vWK_l-z3iv1est8r9nvJfq_Y7yX7vWL_3Hg_C8_nxutZekj2z4r9s2T_rNg_S_bPiv2zZP-s2D9L9s-K_bNk_" - "6zYP0v2z4r9s2T_rNg_S_bPiv2zZP_ssvd_" - "ffOmKTpGLZMdgn27qQQjp9kS5DJCriLkMkKuIhgZwagIRkYwKoKVEayKYGUEqyIUMkKhIhQygmQ_arxHwnPUeI2kh2Q_" - "UuxHkv1IsR9J9iPFfiTZjxT7kWQ_UuxHkv1IsR9J9iPFfiTZjxT7kWQ_UuxHkv1IsT9pvE-E50njdSI9JPsTxf5Esj9R7E8k-xPF_" - "kSyP1HsTyT7E8X-RLI_UexPJPsTxf5Esj9R7E8k-xPF_kSyP1HsTxvvU-F52nidSg_J_lSxP5XsTxX7U8n-VLE_lexPFftTyf5UsT-V7E8V-" - "1PJ_lSxP5XsTxX7U8n-VLE_lexPXfbVXzN-i9BuKsHIabYEuYyQqwi5jJCrCEZGMCqCkRGMimBlBKsiWBnBqgiFjFCoCIWM4JBseTvvh-u-" - "keir_cJ_" - "vPnRFB2jlskOMWftphKMnGZLkMsIuYqQywi5imBkBKMiGBnBqAhWRrAqgpURrIpQyAiFilDICGLOwmbXD8WuHza7fngiPSR7teuHctcP1a4fyl" - "0_VLt-KHf9UO36odz1Q7Xrh3LXD9WuH8pdP1S7fih3_VDt-qHc9UO164dy1w_Vrh82u34odv2w2fXDU-kh2atdP5S7fqh2_VDu-" - "qHa9UO564dq1w_lrh-qXT-Uu36odv1Q7vqh2vVDueuHatcP5a4fql0_lLt-qHb9sHl6SlN0jFomOyR79eQ6lE-uQ_" - "XkOpRPrkP15DqUT65D9eQ6lE-uQ_XkOpRPrkP15DqUT65D9eQ6lE-uQ_XkOpRPrkP15DqUT65D9eQ6HDfeY-E5brzG0kOyHyv2Y8l-" - "rNiPJfuxYj-W7MeK_ViyHyv2Y8l-rNiPJfuxYj-W7MeK_ViyHyv2Y8l-rNhPGu-J8Jw0XhPpIdlPFPuJZD9R7CeS_USxn0j2E8V-" - "ItlPFPuJZD9R7CeS_USxn0j2E8V-ItlPFPuJZD9x2Ud_" - "vXnTFB2jlskOwb7dVIKR02wJchkhVxFyGSFXEYyMYFQEIyMYFcHKCFZFsDKCVREKGaFQEQoZQbJ_bLwfhedj4_UoPST7R8X-UbJ_" - "VOwfJftHxf5Rsn9U7B8l-0fF_lGyf1TsHyX7R8X-UbJ_VOwfJftHxf5Rsn9U7Jv3BTRFx6hlskOyV-_" - "JWt8ZOc2WIJcRchUhlxFyFcHICEZFMDKCURGsjGBVBCsjWBWhkBEKFaGQEST7p8b7SXg-NV5P0kOyf1LsnyT7J8X-SbJ_" - "UuyfJPsnxf5Jsn9S7J8k-yfF_kmyf1LsnyT7J8X-SbJ_" - "UuyfJPsnl32cvHnTFB2jlskOwb7dVIKR02wJchkhVxFyGSFXEYyMYFQEIyMYFcHKCFZFsDKCVREKGaFQEQoZQbJv9pxY7Dlxs-fE36SHZK_" - "2nFjuObHac2K558Rqz4nlnhOrPSeWe06s9pxY7jmx2nNiuefEas-J5Z4Tqz0nlntOrPacWO45sdpz4ubTq1h8ehU3n17Fz9JDslefXrW-" - "M3KaLUEuI-QqQi4j5CqCkRGMimBkBKMiWBnBqghWRrAqQiEjFCpCISNI9i-N94vwfGm8XqSHZP-i2L9I9i-K_Ytk_6LYv0j2L4r9i2T_oti_" - "SPYviv2LZP-i2L9I9i-K_Ytk_6LYv0j2L4r9ofE-CM9D43WQHpL9QbE_SPYHxf4g2R8U-4Nkf1DsD5L9QbE_SPYHxf4g2R8U-" - "4Nkf1DsD5L9QbE_" - "SPYHxb7FQObfyl3m3cpZ5tvKVeZp5GwZNVtGzpZRs2XkbBk1W0bOllGzZeRsGTVbRs6WUbNl5GwZNVtGzpZRs2XkbBk1W0bOllGz1bq-" - "vHbruvKaVrK3ir2V7K1ibyV7q9hbyd4q9layt4q9leytYm8le6vYW8neKvZWsreKvZXsrcs-aU6IRJwQSXNCJC_SQ7BP1AmRyBMiUSdEIk-" - "IRJ0QiTwhEnVCJPKESNQJkcgTIlEnRCJPiESdEIk8IRJ1QiTyhEjUCZHIEyJRJ0TSnBCJOCGS5oRIDtJDslcnRCJPiESdEIk8IRJ1QiTyhEjUC" - "ZHIEyJRJ0QiT4hEnRCJPCESdUIk8oRI1AmRyBMiUSdEIk-" - "IRJ0QafPUmaboGLVMdgj27aYSjJxmS5DLCLmKkMsIuYpgZASjIhgZwagIVkawKoKVEayKUMgIhYpQyAiSffPUmaboGLVMdkj26qlz6zsjp9kS5" - "DJCriLkMkKuIhgZwagIRkYwKoKVEayKYGUEqyIUMkKhIhQygmQ_bbzFR_J1a9Qy2SHZTxX7qWQ_Veynkv1UsZ9K9lPFfirZTxX7qWQ_" - "Veynkv1UsZ9K9lPFfirZTxX7qWQ_VewXjfdCeC4ar4X0kOwXiv1Csl8o9gvJfqHYLyT7hWK_kOwXiv1Csl8o9gvJfqHYLyT7hWK_" - "kOwXiv1Csl8o9ueN97nwPG-8zqWHZH-u2J9L9ueK_blkf67Yn0v254r9uWR_rtifS_bniv25ZH-u2J9L9ueK_" - "blkf67Yn0v254r9ReN9ITwvGq8L6SHZXyj2F5L9hWJ_IdlfKPYXkv2FYn8h2V8o9heS_YVifyHZXyj2F5L9hWJ_" - "IdlfKPYXkv2FYh803oHwDBqvQHpI9oFiH0j2gWIfSPaBYh9I9oFiH0j2gWIfSPaBYh9I9oFiH0j2gWIfSPaBYh9I9oFiHzbeofAMG69Qekj2oW" - "IfSvahYh9K9qFiH0r2oWIfSvahYh9K9qFiH0r2oWIfSvahYh9K9qFiH0r2oWIfNd6R8Iwar0h6SPaRYh9J9pFiH0n2kWIfSfaRYh9J9pFiH0n2" - "kWIfSfaRYh9J9pFiH0n2kWIfSfaRYr9qvFfCc9V4raSHZL9S7FeS_UqxX0n2K8V-JdmvFPuVZL9S7FeS_UqxX0n2K8V-JdmvFPuVZL9S7FeS_" - "Uqxv2y8L4XnZeN1KT0k-0vF_lKyv1TsLyX7S8X-UrK_VOwvJftLxf5Ssr9U7C8l-0vF_lKyv1TsLyX7S8X-UrK_VOyvGu8r4XnVeF1JD8n-" - "SrG_kuyvFPsryf5Ksb-S7K8U-yvJ_kqxv5LsrxT7K8n-SrG_kuyvFPsryf5Ksb-S7K8U-8-N92fh-bnx-iw8rhuPa-" - "Fx3Xhctz34X9DvWvZ9y35o2c7_EV_7NO17p_3gtJ3_8Lzxzx3_3PHPHX_j-BvH3zj-xvG3jr91_K3jbx3_wvEvHP_C8S9a_" - "puW76blt2n5bNp6h_fG4b1xeG8c3huH98bhvXF4bxzeG4f3xuG9cXhvHN4bh_fG4b1xeG8c3huH98bhvXF4byRv_reFu5Z937IfWrbz_" - "wrWPpJ3u_3gtJ3_JK_xzx3_3PHPHX_j-BvH3zj-xvG3jr91_K3jbx3_wvEvHP_C8X_jzT8Ys1i_a_2FmKpVmptDu-" - "PYOnqXv2EdpaVZ9Rxb1e5U9v19ffah1clm-aOMwR8ts_KZfUDrdgVzWQ3sO-yk-XZ52ly9b5n1Zvhrqb8o_6vSX3m5i5uqN7grmz56g2-" - "Vjf9uLHiqRiXsetut_-PO9-_-P_-VKLY"); + "eJyVvWly20qztTuVL-L7d36dvpmdTcuSbXUm1YKSLDcwIQmSTImSqAZNxB3KewdwdsSdwN1YWAlkVpIQFHGwnE9VViaYVQBYoM5-_7Ex_j__" + "2Bj_7-P23_" + "8cVQfM7fPqqM2L6qjNtDpq87I6anNaHbU5qw6YB3l11GZRHTAPd6ujNveqA2b0qTpq83N11OaX6qjN9eqozY3qqM3N6qjNreqoTRy1-" + "bU6anNYHbU5qo7a3KmO2iyrA-" + "Z4pzpq80d11OZFddRmWh21mVdHbRbVAfNopTpq82N11OZWddTmbnXU5kV11OZtddTmrDpq8746avO5Omozrw6Yxx-roza_" + "VEdtrldHbZ5VB8yTjeqoza3qqM2d6qjN3eqozb3qqM2D6oD5ba86anO_OmrzoDpqc1odtVlWB8zLo-qozePqgHn1tTpqc686KvOv03crkBo-" + "1FLD6haEMIQQRhDCDoSwCyHsQQj7EMIBhHAIIUQQwhhSw6f3EMIYQvgDIdxCCDMI4Q5CuIcQHiCERwjhCUJ4htTw-" + "SuEMITUsPEOQngPIQwghA8QwgqE8BFCWIUQ1iCETxDCZwjhC4SwDiFsQAibEMIWhFAL4SuEMIQQRhDCDoSwCyHsQQj7EMIBhHAIIUQQwhhCOII" + "QjiGEEwjhG4RwCiF8hxCuIIRrCOEPhDCFEG4ghFsIYQYh3EEI9xDCHEJ4hBCeIIRnCOEFQsgghBxCKCCEElLD5jsI4T2EMIAQPkAIKxDCRwhhF" + "UJYgxA-" + "QQifIYQvEMI6hLABIWxCCFsQQi2ErxDCEEIYQQg7EMIuhLAHIexDCAcQwiGEEEEIYwjhCEI4hhBOIIRvEMIphPAdQvgBIfyEEH5BCDGE8BtCmE" + "AICYRwBiGcQwgXEEIKIVxCCFcQwjWE8AdCmEIINxDCLYQwgxDuIIR7COEBQphDCI8QwhOE8AwhvEAIGYRQQAglpIatdxDCewhhACF8gBBWIISP" + "EMIqhLAGIXyCED5DCF8ghHUIYQNC2IQQtiCEWghfIYQhhDCCEHYghO8Qwg8I4SeE8AtCiCGE3xDCBEJIIIQzCOEcQriAEFII4RJCuIIQriGEPx" + "DCFEK4gRBuIYQZhHAHIdxDCA8QwhxCeIQQniCEZwjhBULIIIQcQigghBJSw_" + "Y7COE9hDCAED5ACCsQwkcIYRVCWIMQPkEInyGELxBCLYSvEMIQQhhBCDsQwncI4QeE8BNC-" + "AUhxBDCbwhhAiEkEMIZhHAOIVxACCmEcAkhXEEI1xDCHwhhCiHcQQiPEMIThPAMIbxACBmEkEMIBYRQQmr4-" + "g5CeA8hDCCEDxDCCoTwEUJYhRDWIIRPEMJnCOELhLAOIWxACJsQwhaEUAvhK4QwhBBGEMIOhLALIexBCPsQwgGEcAghRBDCGEI4ghCOIYQTCOE" + "bhHAKIXyHEH5ACD8hhF8QQgwh_IYQJhBCAiGcQQjnEMIFhJBCCJcQwhWEcA0h_" + "IEQphDCDYRwCyHMIIQ7COEeQniAEOYQwiOE8AQhPEMILxBCBiHkEEIBqWH4DkIYQAgfIIQVCOEjhLAKIaxBCJ8ghM8QwhcIYR1C2IAQNiGELQi" + "hFsJXCGEIIYwghB0IYRdC2IMQ9iGEAwjhEEKIIIQxhHAEIRxDCCcQwjcI4RRC-A4h_" + "IAQfkIIvyCEGEL4DSFMIIQEQjiDEM4hhAsIIYUQLiGEKwjhGkL4AyFMIYQbCOEWQphBCHcQwj2E8AAhzCGERwjhCUJ4hhBeIIQMQsghhAJCKCE" + "1jN5BCO8hhAGE8AFCWIEQPkIIqxDCGoTwCUL4DCF8gRDWIYQNCGETQtiCEGohfIUQhhDCCELYgRB2IYQ9CGEfQjiAEA4hhAhCGEMIRxDCMYRwA" + "iF8gxBOIYTvEMIPCOEnhPALQoghhN8QwgRCSCCEMwjhHEK4gBBSCOESQriCEK4hhD8QwhRCuIEQbiGEGYRwByHcQwgPEMIcQniEEJ4ghGcI4QV" + "CyCCEHEIoIIQSUsPOOwjhPYQwgBA-" + "QAgrEMJHCGEVQliDED5BCJ8hhC8QwjqEsAEhbEIIWxBCLYSvEMIQQhhBCDsQwi6EsAch7EMIBxDCIYQQQQhjCOEIQjiGEE4ghG8QwimE8B1C-" + "AEh_" + "IQQfkEIMYTwG0KYQAgJhHAGIZxDCBcQQgohXEIIVxDCNYTwB0KYQgg3EMIthDCDEO4ghHsI4QFCmEMIjxDCE4TwDCG8QAgZhFBCath9ByG8hxA" + "GEMIHCGEFQvgIIaxCCGsQwicI4TOE8AVCWIcQNiCETQhhC0KohfAVQhhCCCMIYQdC2IUQ9iCEfQjhAEI4hBAiCGEMIRxBCMcQwgmE8A1COIUQv" + "kMIPyCEnxDCLwghhhB-QwgTCCGBEM4ghHMI4QJCSCGESwjhCkK4hhD-" + "QAhTCOEGQriFEGYQwh2EcA8hPEAIcwjhEUJ4ghCeIYQXCCGDEHJIDXvrEMIGhLAJIWxBCF8hhCGEMIIQdiCEXQhhD0LYhxAOIIRDCCGCEMYQwh" + "GEcAwhnEAI3yCEUwjhO4TwA0L4CSH8ghBiCOE3hDCBEBII4RlSw_" + "4ehLAPIcSQGg5eIIQMQsghhAJCKCE1HL6DEN5DCAMI4QOEsAIhfIQQViGENQjhE4TwGUL4AiGsQwgbEMImhLAFIdRC-" + "AohDCGEEYSwAyHsQgh7EMI-" + "hHAAIRxCCBGEMIYQjiCEYwjhBEL4BiGcQgjfIYQfEMJPCOEXhBBDCL8hhAmEkEAIZxDCOYRwASGkEMIlhHAFIVxDCH8ghCmEcAMh3EIIMwjhDk" + "K4hxAeIIQ5hPAIITxBCM8QwguEkEEIOYRQQAglpIboHYTwHkIYQAgfIIQVCOEjhLAKIaxBCJ8ghM8QwhcIYR1C2IAQNiGELQihlhrG7yCE9xDC" + "AEL4ACGsQAgfIYRVCGENQvgEIXyGEL5ACOsQwgaEsAkhbEEItRC-" + "QghDCGEEIexACLsQwh6EsA8hHEAIhxBCBCGMIYQjCOEYQjiBEL5BCKcQwncI4QeE8BNC-" + "AUhxBDCbwhhAiEkEMIZhHAOIVxACCmEcAkhXEEI1xDCHwhhCiHcQAi3EMIMQriDEO4hhAcIYQ4hPEIITxDCM4TwAiFkEEIOIRQQQgmp4egdhPA" + "eQhhACB8ghBUI4SOEsAEhfIUQhhDCCELYgxD2IYQDCOEYQjiBEL5BCKcQQgohXEIIdxDCPYTwACHMIYRHCOEJQniGEF4ghAxSw-" + "l3COEHhPATQvgFIcQQwm8IYQIhJBDCGYRwDiFcQAgphDCF1BBvQAibEMIWhFAL4SuEMIQQRhDCDoSwCyHsQQj7EMIBhHAIIUQQwhhCOIIQjiGE" + "EwjhG4RwCiF8hxB-QAg_" + "IYRfEEIMIfyGECYQQgIhnEEI5xDCBYSQQgiXEMIVhHANIfyBEKYQwg2EcAshzCCEOwjhHkJ4gBDmEMIjhPAEITxDCBmEkEMIBYRQQmr4_" + "Q5CeA8hDCCEDxDCCoTwEUJYgxA-" + "QQifIYQvEMI6hLABIWxCCFsQQi2ErxDCEEIYQQg7EMIuhLAHIexDCAcQwiGEEEEIYwjhCEI4hhBOIIRvEMIphPAdQvgBIfyEEH5BCDGE8BtCmE" + "AICYRwBiGcQwgXEEIKIVxCCFcQwjWE8AdCmEIINxDCLYQwgxDuIIR7COEBQphDCI8QwhOE8AwhvEAIGYSQQwgFhFBCapi8gxDeQwgDCOEDhLAC" + "IXyEEFYhhDUI4ROE8BlC-AIhrEMIGxDCJoSwBSHUQvgKIQwhhBGEsAMh7EIIexDCPoRwACEcQggRhDCGEI4ghGMI4QRC-" + "AYhnEII3yGEHxDCTwjhF4QQQwi_IYQJhJBACGcQwjmEcAEhpBDCJYRwBSFcQwh_" + "IIQphHADIdxCCDMI4Q5CuIcQHiCEOYTwCCE8QQjPEMILhJBBCDmEUEAIJaSG5B2E8B5CGEAIHyCEFQjhI4SwCiGsQQifIITPEMIXCGEdQtiAED" + "YhhC0IoRbCVwhhCCGMIIQdCGEXQtiDEPYhhAMI4RBCiCCEMYRwBCEcQwgnEMI3COEUQvgOIfyAEH5CCL8ghBhC-" + "A0hTCCEBEI4gxDOIYQLCCGFEC4hhCsI4RpC-" + "AMhTCGEGwjhFkKYQQh3EMI9hPAAIcwhhEcI4QlCeIYQXiCEDELIIYQCQighNZxPIYQbCOEWQphBCHcQwj2E8AAhzCGERwjhCUJ4hhBeIIQMUsP" + "FOwjhPYQwgBA-" + "QAgrEMJHCGEVQliDED5BCF8hhCGEMIIQdiCEXQhhD0LYhxAOIIRDCCGCEMYQwhGEcAwhnEAI3yCEUwjhO4TwA0L4CSH8ghBiCOE3hDCBEBII4Q" + "xCOIcQLiCEFEK4hBCuIIRrCOEPhDCFEG4ghFsIYQYh3EEI9xDCA4QwhxAeIYQnCOEZQniBEDIIIYcQSkgN6TsI4T2EMIAQPkAIKxDCRwhhC0Ko" + "hfAVQhhCCCMIYQdC2IUQ9iCEfQjhAEI4hBAiCGEMIRxBCN8hhB8Qwk8I4ReEEEMIvyGECYSQQAhnEMIUQriBEG4hhBmEcAch3EMIDxDCHEJ4hF" + "Tw_5z__X8wrv_-v8r4x7usOmC-_1wdMFd-VkdtPlUHzNXd6qjNveqozf3qqM2D6qjNw-" + "qozag6avO8OmrzojpgbpxVB8xtHLV5VR21eV0dtfmnOmrzpjpq87Y6avOxOmrzqTpq87k6YO4MqgPm_kV11GZaHbX5UB0wD95VR22-" + "VEdtZtUB8_BdddTm--qozUF11OaH6qjNleqoza3qqM1hddTmYXXU5kl11Ob36qjNn9VRm7-qozYn1VGbF9VRm9fVUZt_qqM2H6ujNp-" + "qozafqwNm9K46anNQHbV5Wh21-b06avNXddTm7-qozUl11OZZddTmS3XUZlEdMMej6qjN3eqozb3qqM396qjNg-" + "qozag6avOoOmrzuDpq83t11GZSHbU5rY7avKkOmEefqqM2cdTmsDpqc6c6avO8OmpzWh21eVMdtXlXHbU5r47afKyO2nyqDpjHg-qozU_" + "VUZufq6M2N6qjNjerozZx1OaoOmpztzpqc786avOkOmrzR3XU5qw6avOuOmCerFRHba5VR23-" + "qo7ajKsD5rcf1QEzvquO2ryvDpiXH6ujNlerozbXqqMy_9930-qozbw6YH45qI7ajKqjvoV9nEIINxBCASGUkBo-DSCEOaSGjR8QQgwh_" + "IYQJhBCAiGcQQjnEMIFhJBCCJcQwgOkhs0cUsPWPoRwACFEEMIYQjiCEL5BCKeQGrbXIYQNCGETQtiCEHYhhD0IYR9COIAQDiGECEIYQwhHEMI" + "xhHACIXyDEE4hhBmEcA8hzCE1fC0hNQzfQ2rYySE17H2GEL5ACH8ghCmEMIMQ7iCEewjhAUKYQwiPEMITpIb9NQjhC4SwDiFsQAibEMJXCOE3h" + "HAGIdxACLcQQgap4WAAIXyAEFYghCGEMIIQdiCEYwjhBEL4BiH8gBB-QQhnEMIfCGEGITxDajhahxA2IYQtCKEWwncI4QeE8BNC-" + "AUhxBDCbwjhHEKYQggzSAX_9x8ffv2f__u3pf6t2v-p4n9i-z-17f9c8T-z_Z_b9n-p-F_Y_i9t-79W_K9s_9e2_d8q_je2_1vb_u8V_zvb_" + "71t_4-K_4Pt_9G2_2fF_8n2_2zb_6vi_2L7f7Xt_13xf7P9v9v2_6n4f9j-P237X6drk7-" + "Ps8ZQjeeNoRovGkM1po2hGi8bQzVeN4ZqvGkM1XjbGKrxrjFU40NjqMZ5Y6jGx8ZQjU-" + "NoRqfG0M1Zo2hGvPGUI1lY7AxqbgxVGPSGKrxvDFU40VjqMa0MVTjZWOoxqvGUI3XjaEa_" + "zSGarxpDNV42xiqcdYYqvGuMVTjQ2OoxnljqMbHxlCNT42hGl8aQzVmjaEai8ZQjWVjsPFMJu5MTVxlnzWGajxvDNWYNoZqvGwM1XjVGKrxujF" + "U47QxVONNY6jG28ZQjbPGUI13jaEa7xtDNc4bQzU-" + "N4ZqfGkM1Zg1hmrMG0M1Fo2hGsvGYOP5X7w6YKjGy8ZQjX8aQzVOG0M13jaGarxrDNVYNgYbL2TZXKhlcyHL5kItmws5-" + "Qt18hdy8hfq5C9khVyoFXIh03GhpqOyHxtDNT41hmp8bgw2prLqUrXqUildqkqXSulSVbpUSpeq0qVSulSVLpWTT9XJX0rpLlXpKjtpDNV43hi" + "q8aIxVGPaGKrxsjFU41VjqMbrxlCNN42hGm8bQzXOGkM13jeGanxoDNU4bwzV-NgYqvGpMVTjc2OoxqwxVGPRGGy8kim-UlN8JR_zSn3MK_" + "mYV-pjXsnJX6mTv5LzvFLneSXneaXO8_ovXjIwVON5Y6jGi8ZQjTeNoRpvG0M1zhpDNd41hmp8aAzVOG8M1fjYGKrxqTHY-EdO_o86-T9ynn_" + "Uef6RU_qjTumPrKU_ai1NJeZUxazsy8ZQjVeNoRqvG0M13jaGapw1hmq8bwzVOG8M1Zg1hmosGkM1lo3Bxpu_" + "eLuAoRqTxlCNZ42hGq8bQzVOG0M1zhtDNT42hmp8agzV-NwYqvGlMVRj0RhsvJWPeas-" + "5q18olv1iSr7vDFU40VjqMa0MVTjZWOoxqvGUI3TxlCNN42hGm8bQzXOGkM13jWGarxvDNX40Biqcd4YqvGxMVTjU2OoxufGUI0vjaEas8ZQjX" + "ljqMaiMVRj2RhsnMkUz9QUz2SKZ2qKZzKbMzWbM5nNmZrNmczmTM1mZV83hmq8aQzVeNcYqvG-" + "MVTjvDFU43NjqMayMdh4JyvkTq2QeynIvSrIvXz2e_XZ7-Wz36vPfi-f_V599sq-" + "agzVOG0M1XjTGKrxtjFU46wxVOO8MVTjY2OoxqfGUI1ZY6jGojHY-" + "CBVelBVmkuV5qpKc5nNuZrNuZzSXJ3SXCZuriZuLqc0V6f0KNkfVfbKThpDNZ41hmo8bwzVeNEYqvGyMVTjVWOoxuvGUI1_" + "GkM1ThtDNd40hmq8bQzVOGsM1XjXGKpx3hiq8bExVONTY6jGl8ZQjXljqMaiMVRj2RhsfJKJe1IT9yRz9KTm6Enm6EnNUWWnjaEaLxtDNV41hm" + "r80xiqcdoYqvGmMVTjbWOoxlljqMa7xlCN88ZQjU-NoRpfGkM1Zo2hGsvGYOOzFPlZFflZqvSsqvQsn-hZfaJn-" + "UTP6hM9y7J5VsvmWeb9Wc37s5zSszqlFzmlF3VKLzLvL2reK_" + "uiMVTjZWOoxuvGUI2zxlCNz43BxkzWUqbWUiYfM1MfM5cVkqsVUsh5Fuo8C5nNQs1mKZ-9VJ-9lMqXqvKlTHHZTvH23f_3_X3y9_Hz7-" + "P338c1uezsXDB49vfx6-_jbtFg07lg8Pzv45J-brDprAb_4_AE_2E3_ts2ZfJv25TLv21TIf-2TaX8i6ajpzp8_W_blMm_bVMu_" + "7ZNhfzbNpXyL5qOv9Th63_bpkz-bZty-bdtKuTftqmUf-umdYZfb8OvM_x6G36d4dfb8OsMv96GX2f49Tb8BsNvtOE3GH6jDb_B8Btt-" + "A2G32jDbzD8Rht-k-E32_CbDL_Zht9k-M02_CbDb7bhNxl-s_3P-W195H8TsDZUY9YYqjFvDNVYNIZqLBuD63sg__" + "HBgfoPEA7kP0I4UP8hwgET1YZqLBpDNZaNwcYPkuiDSvRBEn1QiT5Iog8q0QdJ9EEl-" + "iCJPqhEK5JoRSVakUQrKtGKJFpRiVYk0YpKtCKJVlSiNUm0phKtSaI1lWhNEq2pRGuSaE0lWpNEayrRF0n0RSX6Iom-" + "qERfJNEXleiLJPqiEn2RRF9UonVJtK4SrUuidZVoXRKtq0TrkmhdJVqXROsq0YYk2lCJNiTRhkq0IYk2VKINSbShEm1Ioo020VCW91At76Es76" + "Fa3kNZ3kO1vIeyvIdqeQ9leQ_V8h7K8h6q5T2U5T1Uy3soy3uolvdQlvdQLe-hLO-hWt7DVUm0qhKtSqJVlWhVEq2qRKuSaFUlWpVEqyqRLO-" + "hWt5DWd5DtbyHsryHankPZXkP1fIeyvIequU9_CSJPqlEnyTRJ5XokyT6pBJ9kkSfVKJPkuiTSvRZEn1WiT5Los8q0WdJ9Fkl-" + "iyJPqtEnyXRZ5VILtihumCHcsEO1QU7lAt2qC7YoVywQ3XBDuWCHaoLdigX7FBdsEO5YIfqgh3KBTtUF-" + "xQLtihumCHcsEO1QU7lAt2qC7YoVywQ3XBDuWCHaoLdigX7FBdsEO5YIf6gt2URJsq0aYk2lSJNiXRpkq0KYk2VaJNSaSesMMtSbSlEm1Joi2V" + "aEsSbalEW5JoSyXakkRbKtG2JNpWibYl0bZKtC2JtlWibUm0rRJtS6JtleirJPqqEn2VRF9Voq-" + "S6KtK9FUSfVWJvkqiryrRRBJNVKKJJJqoRBNJNFGJJpJoohJNJNFEJUokUaISJZIoUYkSSZSoRIkkSlSiRBIlKtGZJDpTic4k0ZlKdCaJzlSiM" + "0l0phKdSaIzlehcEp2rROeS6FwlOpdE5yrRuSQ6V4nOJdG5SpRKolQlSiVRqhKlkihViVJJlKpEqSRKVaJLSXSpEl1KokuV6FISXapEl5LoUiW" + "6lESXKtGVJLpSia4k0ZVKdCWJrlSiK0l0pRJdSaIrlehaEl2rRNeS6FolupZE1yrRtSS6VomuJdG1SjSVRFOVaCqJpirRVBJNVaKpJJqqRFNJN" + "FWJbiTRjUp0I4luVKIbSXSjEt1IohuV6EYS3ahEt5LoViW6lUS3KtGtJLpViW4l0a1KdCuJblWimSSaqUQzSTRTiWaSaKYSzSTRTCWaSaKZSnQ" + "nie5UojtJdKcS3UmiO5XoThLdqUR3kuhOJbqXRPcq0b0kuleJ7iXRvUp0L4nuVaJ7SXSvEj1IogeV6EESPahED5LoQSV6kEQPKtGDJHpQieaSa" + "K4SzSXRXCWaS6K5SjSXRHOVaC6J5irRoyR6VIkeJdGjSvQoiR5VokdJ9KgSPUqiR5Uok0SZSpRJokwlyiRRphJlkihTiTJJlLWJRu-" + "ZqDZUY9YYqjFvDNVYNIZqLBuDjbI_Gqn90Uj2RyO1PxrJ_mik9kcj2R-N1P5oJPujkdofjWR_NFL7o5Hsj0ZqfzSS_" + "dFI7Y9Gsj8aqf3RSPZHI7U_" + "Gsmbk5F6czKSNycj9eZkJG9ORurNyUjenIzUm5ORvDkZqTcnI9mIjdRGbCQbsZHaiI1kIzZSG7GRbMRGaiM2ko3YSG3ERrIRG6mN2Eg2YiO1ER" + "vJRmykNmIj2YiN1EZsJBuxkdqIjeSb6kh9Ux3JN9WR-qY6km-qI_VNdSTfVEfqm-" + "pIvqmO1DfV0VASDVWioSQaqkRDSTRUiYaSaKgSDSXRUCW6kEQXKtGFJLpQiS4k0YVKdCGJLlSiC0l00Sbak8fEnnpM7MljYk89JvbkMbGnHhN7" + "8pjYU4-JPXlM7KnHxJ48JvbUY2JPHhN76jGxJ4-" + "JPfWY2JPHxJ56TOzJY2JPPSb2niXRs0r0LImeVaJnSfSsEj1LomeV6FkSPbeJ9r8yUW2oxqwxVGPeGKqxaAzVWDYGG_" + "ck0Z5KtCeJ9lSiPUm0pxLtSaI9lWhPEu2pRPuSaF8l2pdE-yrRviTaV4n2JdG-" + "SrQvifbbRJHc6yJ1r4vkXhepe10k97pI3esiuddF6l4Xyb0uUve6SO51kbrXRXKvi9S9LpJ7XaTudZHc6yJ1r4vkXhepe10k97pI3esiuddF6l" + "4Xyb0uUve6SO51kbrXRXKvi9S9LpI3J5F6cxLJm5NIvTmJ5M1JpN6cRPLmJFJvTiJ5cxKpNyeRvDmJ1JuTSN6cROrNSSRvTiL15iSSNyeRenMS" + "yZuTSL05ieTNSaTenETy5iRSb04ieXMSqTcnkbw5idSbk0jenETqzUkkb04i9eYkkjcnkXpzEsmbk0i9OYnkzUmk3pxE8uYkUm9OInkeRep5FM" + "nzKFLPo0ieR5F6HkXyPIrU8yiS51GknkfjX0xUG6oxawzVmDeGaiwaQzWWjcFGeUyM1WNiLI-" + "JsXpMjOUxMVaPibE8JsbqMTGWx8RYPSbG8pgYq8fEWB4TY_" + "WYGMtjYqweE2N5TIzVY2Isj4mxekyMZTcxVruJsewmxmo3MZbdxFjtJsaymxir3cRYdhNjtZs4esdEtaEas8ZQjXljqMaiMVRj2RhslAv2SF2w" + "R3LBHqkL9kgu2CN1wR7JBXukLtgjuWCP1AUbS6JYJYolUawSxZIoVoliSRSrRLEkinUiuY5idR3Fch3F6jqK5TqK1XUUy3UUq-" + "solusoVtdRfCiJDlWiQ0l0qBIdSqJDlehQEh2qRIeS6FAliiRRpBJFkihSiSJJFKlEkSSKVKJIEkUq0VgSjVWisSQaq0RjSTRWicaSaKwSjSXR" + "WCU6kkRHKtGRJDpSiY4k0ZFKdCSJjlSiI0l0pBIdS6JjlehYEh2rRMeS6FglOpZExyrRsSQ6VolOJNGJSnQiiU5UohNJdKISnUiiE5XoRBKdqE" + "TfJNE3leibJPqmEn2TRN9Uom-S6JtK9E0SfVOJTiXRqUp0KolOVaJTSXSqEp1KolOV6FQSnapE8oI9Vi_YY3nBHqsX7LG8YI_VC_" + "ZYXrDH6gV7LC_YY_WCPZ5KoqlKNJVEU5VoKommKtFUEk1VoqkkmqpE8gYyVm8gY3kDGas3kLG8gYzVG8hY3kDG6g1kLG8gY_" + "UGMpY3kLF6AxnLG8hYvYGM5Q1krN5AxvIGMlZvIGN5AxmrN5CxvIGM1RvIWN5AxuoNZCxvIGP1BjKWN5CxegMZyxvIWL2BjOU7Q6y-" + "M8TynSFW3xli-c4Qq-8MsXxniNV3hli-" + "M8TqO0Ms3xli9Z0hlu8MsfrOEMt3hlh9Z4jlO0OsvjPE8p0hVt8ZYvnOEKvvDLF8Z4jVd4ZYvjPE6jtDLN8ZYvWdIZbvDLH6zhDLG8hYvYGM5Q" + "1krN5AxvIGMlZvIGN5AxmrN5CxvIGM1RvIWN5AxuoNZCxvIGP1BjKWN5CxegMZyxvIWL2BjOUNZKzeQMZPkuhJJXqSRE8q0ZMkelKJniTRk0r0" + "JImeVKJcEuUqUS6JcpUol0S5SpRLolwlyiVRrhIVkqhQiQpJVKhEhSQqVKJCEhUqUSGJijbRb1kMv9Vi-C2L4bdaDL9lMfxWi-" + "G3LIbfajH8lsXwWy2GiVxHE3UdTeQ6mqjraCLX0URdRxO5jibqOprIdTRR19FErqOJuo4mch1N1HU0ketooq6jiVxHE3UdTeQ6mqjraCLLe6KW" + "90SW90Qt74ks74la3hNZ3hO1vCeyvCdqeU9keU_U8p7I8p6o5T2R5T1Ry3siy3uilvdElvdELe_" + "JiyR6UYleJNGLSvQiiV5UohdJ9KISvUiilzZRIrvyRO3KE9mVJ2pXnsiuPFG78kR25YnalSeyK0_" + "UrjyRXXmiduWJ7MoTtStPZFeeqF15IrvyRO3KE9mVJ2pXnshuIlG7iUR2E4naTSSym0jUbiKR3USidhOJ7CYStZtI5C1xot4SJ_" + "KWOFFviRN5S5yot8SJvCVO1FviRN4SJ-" + "otcTKSRCOVaCSJRirRSBKNVKKRJBqpRCNJNFKJdiTRjkq0I4l2VKIdSbSjEu1Ioh2VaEcS7ahEu5JoVyXalUS7KtGuJNpViXYl0a5KtCuJdlUi" + "eaeaqHeqibxTTdQ71UTeqSbqnWoi71QT9U41kXeqiXqnmsg71US9U03knWqi3qkm8k41Ue9UE3mnmqh3qom8U03UO9XkQBIdqEQHkuhAJTqQRA" + "cq0YEkOlCJDiTRgUokm-VEbZYT2SwnarOcyGY5UZvlRDbLidosJ7JZTtRmOZHNcqI2y4lslhO1WU5ks5yozXIim-" + "VEbZYT2SwnarOcyGY5UZvlRDbLidosJ7JZTtRmOZHNcqI2y4lslhO1WU5ks5yozXIim-" + "VEbZYT2SwnarOcyGY5UZvlRDbLidosJ7JZTtRmOZHNcqI2y4lslhO1WU5ks5yozXIim-" + "VEbZYT2SwnarOcyGY5UZvlRDbLidosJ7JZTtRmOZHNcqI2y6n8Dpuq32FT-R02Vb_DpvI7bKp-h03ld9hU_Q6byu-wqfodNpU_" + "w07Vn2Gn8mfYqfoz7FT-DDtVf4adyp9hp-rPsFP5M-xU_Rl2Kj-CpOpHkFR-BEnVjyCp_AiSqh9BUvkRJFU_" + "gqTyI0iqfgRJp5JoqhJNJdFUJZpKoqlKNJVEU5VoKommKpFsllO1WU5ls5yqzXIqm-" + "VUbZZT2SynarOcymY5VZvlVDbLqdosp7JZTtVmOZXNcqo2y6lsllO1WU5ls5yqzXIqm-" + "VUbZZT2SynarOcymY5VZvlVDbLqdosp7JZTtVmOZXNcqo2y6lsllO1WU5ls5yqzXIqm-VUbZZT2SynarOcypf8VH3JT-VLfqq-5KfyJT9VX_" + "JT-ZKfqi_5qXzJT9WX_FS-5KfqS34qX_JT9SU_lS_5qfqSn8qX_FR9yU_lS36qvuSnsj9K1f4olf1RqvZHqeyPUrU_SmV_" + "lKr9USr7o1Ttj1LZTaRqN5HKbiJVu4lUdhOp2k2ksptI1W4ild1Eqv9c5-wf7zb_cRL_rX_J_-R73fJ3f1fjguGj9eUDevWpmH_" + "xf5le7KBrgcdCx0TbQZePkSyOsSDUwogLznvx6S__FJ0fZsFnWvzRln_Czg-6_PN2fuxzn-Z8YfzzpR_7vOtjn_vzOe86kQUf-7zrY58v_" + "djniz92dUWaq4bXqu5pL5RXO7vCZl0juzu7wuZdI7s7u8IWXSO7O7vCll0juzuXhG3uOB2T82afHrmWzdibfXrkWjaNb_" + "bpkWvZ3L7Zp0euZRP-Zp8g11-" + "n8cmSWQi6OgfmHV2dA4uOrs6BZUeXGpgtvWVlXbeshZ1dYbOukd2dXWHzrpHdnV1hi66R3Z1dYcuukd2dS8IuvB0FAd7s0yPXshl7s0-" + "PXMum8c0-PXItm9s3-_TItWzC3-wT5LIX-0tHV-" + "fAvKOrc2DR0dU5sOzoUgPzpbesvOuWtbCzK2zWNbK7syts3jWyu7MrbNE1sruzK2zZNbK7c0nYhbejIMCbfXrkWjZjb_" + "bpkWvZNL7Zp0euZXP7Zp8euZZN-" + "Jt9glxLblkLujoHZh1dnQOLjq7OgWVHlxpYLL1lFV23rIWdXWGzrpHdnV1h866R3Z1dYYuukd2dXWHLrpHdnUvCLrwdBQHe7NMj17IZe7NPj1z" + "LpvHNPj1yLZvbN_v0yLVswt_sE-Racsta0NU5MOvo6hyYd3R1Diw7utTAcuktq-" + "y6ZS3s7AqbdY3s7uwKm3eN7O7sClt0jezu7Apbdo3s7lwSduHtKAjwZp8euZbN2Jt9euRaNo1v9umRa9ncvtmnR65lE_" + "5mnyDXklvWgq7OgVlHV-fAvKOrc2DR0cWB5-aSUi3t1bKwcdHw80WeixsXDDe_aQUDevV1xFx0Er36VMy_-CNI8GvMgp9hFv_-" + "on94CX5xWfBTy-LfWBb8uLL4VxW2Ljjvxae__FN0fpgFn2nxR1v-CTs_6PLPu-Rj_7XsxyTV4x_" + "ASzu7wmZdI7s7u8LmXSO7O7vCFl0juzu7wpZdI7s7l4U975qV1zu7wi6dldc7u8IunZXXO7vCLp2V1zu7wi6dldc7l4R134cWBHizT49cy2bsz" + "T49ci2bxjf79Mi1bG7f7NMj17IJf7PPK7m6Ltw3-_TI9dq89_bpkeu1ee_t0yPXa_Pe26dHrtfmvbdPkGvB1-IlXZ0D846uzoFFR1fnwLKja-" + "lAt9KCrs6BSz7jotVie5d8xkVTb3uXfMZwHhf__q16Fn_L6vr9e2HYrGtkd2dX2LxrZHdnV9iia2R3Z1fYsmtkd-eysOdds_" + "J6Z1fYpbPyemdX2KWz8npnV9ils_J6Z1fYpbPyeueSsAu_Qb32Jwuv-fTItWzG3uzTI9eyaXyzT49cy-b2zT49ci2b8Df7vJKr68J9s0-PXK_" + "Ne2-fHrlem_fePj1yvTbvvX165Hpt3nv7BLkWvLVc0tU5MO_" + "o6hxYdHR1Diw7upYOdKs66OocuOQzLlotS75lLejqHLjkM4bzuPhPdlTP4m9ZXX-" + "yszBs1jWyu7MrbN41sruzK2zRNbK7syts2TWyu3NZ2POuWXm9syvs0ll5vbMr7NJZeb2zK-" + "zSWXm9syvs0ll5vXNJ2IXfoF77K6vXfHrkWjZjb_bpkWvZNL7Zp0euZXP7Zp8euZZN-Jt9XsnVdeG-" + "2adHrtfmvbdPj1yvzXtvnx65Xpv33j49cr027719glxLvmUt_wu8xb1ZR1fnwKKjq3Ng2dG1dKBb1cu_" + "ZfneJZ9x0cpc8i1rQVfnwCWfMZzHxX9lqHoWf8vq-" + "ivDhWGzrpHdnV1h866R3Z1dYYuukd2dXWHLrpHdncvCnnfNyuudXWGXzsrrnV1hl87K651dYZfOyuudXWGXzsrrnUvCLvwG9dofhr7m0yPXshl" + "7s0-PXMum8c0-PXItm9s3-_TItWzC3-zzSq6uC_fNPj1yvTbvvX165Hpt3nv79Mj12rz39umR67V57-" + "0T5FryLWv5Hw0v7s06ujoH5h1dnQPLjq6lA92qXv4ty_cu-YyLVuaSl2ALujoHLvmM4TyW-" + "rFiprEMnhyvd3aFzbpGdnd2hc27RnZ3doUtukZ2d3aFLbtGdncuC3veNSuvd3aFXTorr3d2hV06K693doVdOiuvd3aFXTorr3cuCbvwG1QQ4M0" + "-PXItm7E3-_TItWwa3-zTI9eyuX2zT49cyyb8zT6v5Oq6cN_s0yPXa_Pe26dHrtfmvbdPj1yvzXtvnx65Xpv33j5BriXfshZ0dQ7MOro6B-" + "YdXZ0Di46upQPdql7-Lcv3LvmMi1bmkm9ZC7o6By75jGrNJEPdkwwXNInjXwv_6M_-l25fFi6c_j49cuU94vTy6ZGr6BGnl0-" + "PXGWPOL18luTqnIQenV1hl9W7R2dX2GWl7dHZFXZZFXt0BmH_Ot1aCdm5NBcS7x3LujoHZh1dnQPzjq7OgUVHV-fAsqNLDVzwpy22RIv_bKW_" + "T49ceY84vXx65Cp6xOnl0yNX2SNOL58luTonoUdnV9hl9e7R2RV2WWl7dHaFXVbFHp1BWH0vEXYuC-" + "8lC7o6B2YdXZ0D846uzoFFR1fnwLKjSw1c8AOuLdHiH2f7-_" + "TIlfWI08unR66iR5xePj1ylT3i9PJZkqtzEnp0doVdVu8enV1hl5W2R2dX2GVV7NEZhNX3EmHnsvBesqCrc2DW0dU5MO_" + "o6hxYdHR1Diw7utTABT9T2BIt_gmiv0-PXFmPOL18euTKe8Tp5dMjV9kjTi-" + "fJbk6J6FHZ1fYZfXu0dkVdllpe3R2hV1WxR6dQVh9LxF2LgvvJQu6OgdmHV2dA_OOrs6BRUdX58Cyo0sNXPAyzpZo8Yu2_" + "j49cmU94vTy6ZEr7xGnl0-" + "PXEWPOL18luTqnIQenV1hl9W7R2dX2GWl7dHZFXZZFXt0BmH1vUTYuSy8lyzo6hyYdXR1Dsw7ujoHFh1dnQPLjq56YP0_sILm9n_" + "2JGxb7JovalvsWixqW-xaLmpTrlnb_LKobbFrvqhtsWuxqG2xa7moTbnmC841X3yu-" + "YIpyBdPQb7gXPPF55ovONd88bkWC861WHyuxYJzLRafa7FgCorFU1AsONdi8bmWC861XHyu5YJzLRefa7ngXMvF51oumILSTUH9v4Qy3lOm6dh" + "Xpu44_" + "qRM1fHX6UahbdO1OdO27cq0bbq2drRtu2Jt264zbZuu7VTbtutK26Zr9KJt25Vp23TtJtq2XZfaNl3jd9q2XSNtm67JH23brkzbtivXtnTx5iY" + "ro0XnsB9g6MCV0mLg0KwYxc6FK0exd8lCdi5cSYq9SxyydzkL2blwhSn2LlchO5fRS8jeJQvZuXAFKvYulyE7F65Ixd5lFLJz4QpV7F2ykL1LH" + "rJyyeyqzdyqzeyqzdyqzeyqzdyqzYJVK-" + "xc2lUr7F2ykJ1Lu2qFvUscsnc5C9m5tKtW2Ltchexc2lUr7F2ykJ1Lu2qFvctlyM6lXbXC3mUUsnNpV62wd8lC9i55yMolt6s2d6s2t6s2d6s2" + "t6s2d6s2D1atsHNpV62wd8lCdi7tqhX2LnHI3uUsZOfSrlph73IVsnNpV62wd8lCdi7tqhX2LpchO5d21Qp7l1HIzqVdtcLeJQvZu-" + "QhK5fCrtrCrdrCrtrCrdrCrtrCrdoiWLXCzqVdtcLeJQvZubSrVti7xCF7l7OQnUu7aoW9y1XIzqVdtcLeJQvZubSrVti7XIbsXNpVK-" + "xdRiE7l3bVCnuXLGTvkoesXEq7aku3aku7aku3aku7aku3astg1Qo7l3bVCnuXLGTn0q5aYe8Sh-" + "xdzkJ2Lu2qFfYuVyE7l3bVCnuXLGTn0q5aYe9yGbJzaVetsHcZhexc2lUr7F2ykL1LHjJdztsVe25W63m7Us_NKj1vV-" + "i5WZ3namWKbbrqFSm27cq0bbrqFSi27Yq1bbvOtG266pUmtu260rbpqleW2LYr07bp2k20bbsutW266pUjtu0aadt01StFbNuVadt25dqWrr_" + "MHl2hc9gPMHTgSmkxcGhWjGLnwpWj2LtkITsXriTF3iUO2buchexcuMIUe5erkJ3L6CVk75KF7Fy4AhV7l8uQnQtXpGLvMgrZuXCFKvYuWcjeJ" + "Q9Zuag9ukLnsB9g6NCuWrtHlxa9aoM9etvUrtpgj66aspCdS7tqgz26aopD9i5nITuXdtUGe3TVdBWyc2lXbbBHV01ZyM6lXbXBHl01XYbsXNp" + "VG-zRVdMoZOfSrtpgj66aspC9Sx6yclF7dIXOYT_" + "A0KFdtXaPLi161QZ79LapXbXBHl01ZSE7l3bVBnt01RSH7F3OQnYu7aoN9uiq6Spk59Ku2mCPrpqykJ1Lu2qDPbpqugzZubSrNtijq6ZRyM6lX" + "bXBHl01ZSF7lzxk5aL26Aqdw36AoUO7au0eXVr0qg326G1Tu2qDPbpqykJ2Lu2qDfboqikO2buchexc2lUb7NFV01XIzqVdtcEeXTVlITuXdtU" + "Ge3TVdBmyc2lXbbBHV02jkJ1Lu2qDPbpqykL2LnnIykXt0RU6h_0AQ4d21do9urToVRvs0dumdtUGe3TVlIXsXNpVG-" + "zRVVMcsnc5C9m5tKs22KOrpquQnUu7aoM9umrKQnYu7aoN9uiq6TJk59Ku2mCPrppGITuXdtUGe3TVlIXsXfKQaxf8fw3WK1ZM07GvTN2BFSqm" + "6uDKbGzThRXZ2LYr07bpwgpsbNsVa9t2nWnbdGGlNbbtutK26Rq9aNt2Zdo2XVhJjW27LrVturByGtt2jbRturBSGtt2Zdq2Xbm2pesvvUfX6B" + "z2AwwduFJaDByaFaPYuXDlKPYuWcjOhStJsXeJQ_" + "YuZyE7F64wxd7lKmTnMnoJ2btkITsXrkDF3uUyZOfCFanYu4xCdi5coYq9Sxayd8lDVi7tHl2jc9gPMHRoV63ZozctetXaPbpqalet3aPrpixk" + "59KuWrtH101xyN7lLGTn0q5au0fXTVchO5d21do9um7KQnYu7aq1e3TddBmyc2lXrd2j66ZRyM6lXbV2j66bspC9Sx6ycmn36Bqdw36AoUO7as" + "0evWnRq9bu0VVTu2rtHl03ZSE7l3bV2j26bopD9i5nITuXdtXaPbpuugrZubSr1u7RdVMWsnNpV63do-" + "umy5CdS7tq7R5dN41Cdi7tqrV7dN2Uhexd8pCVS7tH1-gc9gMMHdpVa_" + "boTYtetXaPrpraVWv36LopC9m5tKvW7tF1UxyydzkL2bm0q9bu0XXTVcjOpV21do-um7KQnUu7au0eXTddhuxc2lVr9-" + "i6aRSyc2lXrd2j66YsZO-" + "Sh6xc2j26RuewH2Do0K5as0dvWvSqtXt01dSuWrtH101ZyM6lXbV2j66b4pC9y1nIzqVdtXaPrpuuQnYu7aq1e3TdlIXsXNpVa_" + "fouukyZOfSrlq7R9dNo5CdS7tq7R5dN2Uhe5c85MrlH0dPf3HvFL2zFHYPLLXdmRmdhaMzMzoLR-dmdB6Ozs3oPBxdmNFFOLowo4twdGlGl-" + "Ho0owuzeh25P_i_" + "7mpHdgOkp5BPRnbHzioNU3HQJnSoSbHonMYBKgcMhshcxEyGyFzEXIbIXcRchshdxEKG6FwEQoboXARShuhdBFKG6E0EVba0Stm5Eo7asWOsLV" + "X6BwGASqHzEbIXITMRshchNxGyF2E3EbIXYTCRihchMJGKFyE0kYoXYTSRrC1_9KO_" + "mJGfmlHfbEjbO0VOodBgMohsxEyFyGzETIXIbcRchchtxFyF6GwEQoXobARChehtBFKF6G0EWzt120lFTqHQYDKIbMRMhchsxEyFyG3EXIXIbc" + "RchehsBEKF6GwEQoXobQRShehtBGCSqrR5p7f9A1Mn4zbsDOg0DkMAlQOmY2QuQiZjZC5CLmNkLsIuY2QuwiFjVC4CIWNULgIpY1QugiljWBnY" + "EONDmdgQw0MZmB43YwT03QMlCkdZs40OodBgMohsxEyFyGzETIXIbcRchchtxFyF6GwEQoXobARChehtBFKF6G0EcycDf-0o_-YkX_aUX_" + "MiGk7YmpGTNsRUzvCztbUzdbUztbUzdbUztbUzdbUztbUzdbUztbUzdbUztbUzdbUztbUzdbUztbUzdbUztbUzdbUztbUzdZNO_" + "rGjLxpR93YEbb2N672N7b2N672N7b2N672N7b2N672N7b2N672N7b2N672N7b2N672N7b2N672N7b2N672N7b2N672s3b0zIyctaNmdoSt_" + "czVfmZrP3O1n9naz1ztZ7b2M1f7ma39zNV-Zms_c7Wf2drPXO1ntvYzV_uZrf3M1X5maz9ztZ-3o-dm5LwdNbcjbO3nrvZzW_u5q_3c1n7uaj-" + "3tZ-72s9t7eeu9nNb-7mr_dzWfu5qP7e1n7vaz23t5672c1v7eVj70ftmtJimY6BM6TC11-" + "gcBgEqh8xGyFyEzEbIXITcRshdhNxGyF2EwkYoXITCRihchNJGKF2E0kawtR-0owdm5KAdNbAjbO0HrvYDW_uBq_3A1n7gaj-wtR-" + "42g9s7Qeu9gNb-4Gr_" + "cDWfuBqP7C1H7jaD2ztB672A1v7gav9ajt61YxcbUet2hG29quu9qu29quu9qu29quu9qu29quu9qu29quu9qu29quu9qu29quu9qu29quu9qu" + "29quu9qu29quu9mvt6DUzcq0dtWZH2Nqvudqv2dqvudqv2dqvudqv2dqvudqv2dqvudqv2dqvudqv2dqvudqv2dqvudqv2dqvudqv2dqvhbXfu" + "zeV1OgcBgEqh8xGyFyEzEbIXITcRshdhNxGyF2EwkYoXITCRihchNJGKF2E0kYIKqlGB_" + "th9g1MH8dFH5txYpqOgTKlw8yZRucwCFA5ZDZC5iJkNkLmIuQ2Qu4i5DZC7iIUNkLhIhQ2QuEilDZC6SKUNoKZs6i960fmrh-1d_" + "1o1Y6wtXd3_cje9SN314_sXT9yd_3I3vUjd9eP7F0_cnf9yN71I3fXj-xdP3J3_cje9SN314_sXT9yd_3I3vUjd9eP2rt-" + "ZO76UXvXj9bsCFt7d9eP7F0_cnf9yN71I3fXj-xdP3J3_cje9SN314_sXT9yd_3I3vUjd9eP7F0_cnf9yN71I3fXj-xdP3J3_" + "ah9eyqm6RgoUzps7d2b68i-uY7cm-vIvrmO3JvryL65jtyb68i-uY7cm-vIvrmO3JvryL65jtyb68i-uY7cm-" + "vIvrmO3JvryL65jtyb62izHb1pRm62ozbtCFv7TVf7TVv7TVf7TVv7TVf7TVv7TVf7TVv7TVf7TVv7TVf7TVv7TVf7TVv7TVf7TVv7TVf7TVv7" + "TVf7rXb0lhm51Y7asiNs7bdc7bds7bdc7bds7bdc7bds7bdc7bds7bdc7bds7bdc7bds7bdc7bds7bdc7bds7bdc7bds7bfC2o9_" + "NaPFNB0DZUqHqb1G5zAIUDlkNkLmImQ2QuYi5DZC7iLkNkLuIhQ2QuEiFDZC4SKUNkLpIpQ2gq39XTv6zoy8a0fd2RG29neu9ne29neu9ne29n" + "eu9ne29neu9ne29neu9ne29neu9ne29neu9ne29neu9ne29neu9ne29neu9u2-" + "QEzTMVCmdNjauz2ZahkEqBwyGyFzETIbIXMRchshdxFyGyF3EQoboXARChuhcBFKG6F0EUobwdb-oR39YEY-tKMe7Ahb-wdX-wdb-wdX-wdb-" + "wdX-wdb-wdX-wdb-wdX-wdb-wdX-wdb-wdX-wdb-wdX-wdb-wdX-wdb-" + "4ew9vGkGS2m6RgoUzpM7TU6h0GAyiGzETIXIbMRMhchtxFyFyG3EXIXobARChehsBEKF6G0EUoXobQRbO3be05s7jlxe8-J7-" + "0IW3t3z4ntPSd295zY3nNid8-J7T0ndvec2N5zYnfPie09J3b3nNjec2J3z4ntPSd295zY3nNid8-J7T0ndvecuP31Kja_XsXtr1fx3I6wtXe_" + "XqmWQYDKIbMRMhchsxEyFyG3EXIXIbcRchehsBEKF6GwEQoXobQRShehtBFs7R_b0Y9m5GM76tGOsLV_dLV_tLV_dLV_tLV_dLV_tLV_dLV_" + "tLV_dLV_tLV_dLV_tLV_dLV_tLV_dLV_tLV_dLV_tLV_dLV_akc_mZFP7agnO8LW_snV_snW_snV_snW_snV_snW_snV_snW_snV_snW_snV_" + "snW_snV_snW_snV_snW_snV_snW_snVXtXAfn712e3nVp_" + "Zfl71We3nzO1s5W62cjtbuZut3M5W7mYrt7OVu9nK7WzlbrZyO1u5m63czlbuZiu3s5W72crtbOVutnI7W7mbLZXf5lZ5bc7C1r5wtS9s7QtX-" + "8LWvnC1L2ztC1f7wta-cLUvbO0LV_vC1r5wtS9s7QtX-8LWvnC1L2zti7D2k_YJMTFPiEn7hJg82hGm9hP3hJjYJ8TEPSEm9gkxcU-" + "IiX1CTNwTYmKfEBP3hJjYJ8TEPSEm9gkxcU-IiX1CTNwTYmKfEBP3hJjYJ8TEPSEm7RNiYp4Qk_YJMXmyI2zt3RNiYp8QE_" + "eEmNgnxMQ9ISb2CTFxT4iJfUJM3BNiYp8QE_eEmNgnxMQ9ISb2CTFxT4iJfUJM3BNiYp8QE_" + "eESNq3zmKajoEypcPUXqNzGASoHDIbIXMRMhshcxFyGyF3EXIbIXcRChuhcBEKG6FwEUoboXQRShvB1r596yym6RgoUzps7d1bZ9UyCFA5ZDZC" + "5iJkNkLmIuQ2Qu4i5DZC7iIUNkLhIhQ2QuEilDZC6SKUNoKt_" + "XY72vwkTxooUzps7bdd7bdt7bdd7bdt7bdd7bdt7bdd7bdt7bdd7bdt7bdd7bdt7bdd7bdt7bdd7bdt7bdd7bdt7bdd7Xfb0btm5G47ateOsLX" + "fdbXftbXfdbXftbXfdbXftbXfdbXftbXfdbXftbXfdbXftbXfdbXftbXfdbXftbXfdbXftbXfdbXfb0fvm5H77ah9O8LWft_Vft_Wft_Vft_" + "Wft_Vft_Wft_Vft_Wft_Vft_Wft_Vft_Wft_Vft_Wft_Vft_Wft_Vft_Wft_V_qAdfWBGHrSjDuwIW_sDV_sDW_sDV_sDW_sDV_sDW_sDV_" + "sDW_sDV_sDW_sDV_sDW_sDV_sDW_sDV_sDW_sDV_sDW_sDV_" + "vDdvShGXnYjjq0I2ztD13tD23tD13tD23tD13tD23tD13tD23tD13tD23tD13tD23tD13tD23tD13tD23tD13tD23tD13to3Z0ZEZG7ajIjrC1" + "j1ztI1v7yNU-srWPXO0jW_vI1T6ytY9c7SNb-8jVPrK1j1ztI1v7yNU-srWPXO0jW_vI1X7cjh6bkeN21NiOsLUfu9qPbe3HrvZjW_uxq_" + "3Y1n7saj-2tR-72o9t7ceu9mNb-7Gr_djWfuxqP7a1H7vaj23tx672R-3oIzPyqB11ZEfY2h-52h_Z2h-52h_Z2h-52h_Z2h-52h_Z2h-52h_" + "Z2h-52h_Z2h-52h_Z2h-52h_Z2h-52h_Z2h-52h-3o4_NyON21LEdYWt_7Gp_bGt_7Gp_bGt_7Gp_bGt_7Gp_bGt_7Gp_bGt_7Gp_bGt_7Gp_" + "bGt_7Gp_bGt_7Gp_bGt_7Gp_0o4-MSNP2lEndoSt_Ymr_Ymt_Ymr_Ymt_Ymr_Ymt_Ymr_Ymt_Ymr_Ymt_Ymr_Ymt_Ymr_Ymt_Ymr_Ymt_Ymr_" + "Ymt_Ymr_bd29Dcz8ls76psZcdqOODUjTtsRp3qE_A9uTrVtu260bbtutW27ZtqWLs50k0-xd7kJ2bvchuxdZiErlyw4l8yfSxacS-" + "bPJQvOJfPnkgXnkvlzyYNzyf255MG55P5c8uBccn8ueXAuuT-XIjiXwp9LEZxL4c-lCM6l8OdSBOdS-HMpg3Mp_bmUwbmU_" + "lzK4FxKfy5lcC6lPZdzdR7n9hzOVf5zm_tc5T23Oc9VvvMgV3CdaPYuNyF7l9uQvcssZOWSBeeS-XPJgnPJ_Llkwblk_" + "lyy4Fwyfy55cC65P5c8OJfcn0senEvuzyUPziX351IE51L4cymCcyn8uRTBuRT-XIrgXAp_LmVwLqU_lzI4l9KfSxmcS-nPpQzOxV4n8h-" + "enmrbdt1o23bdatt2zbQtXfY6MexdbkL2Lrche5dZyMolC84l8-eSBeeS-XPJgnPJ_Llkwblk_" + "lzy4Fxyfy55cC65P5c8OJfcn0senEvuz6UIzqXw51IE51L4cymCcyn8uRTBuRT-XMrgXEp_LmVwLqU_lzI4l9KfSxmci75O_nESg3Z_V-b_" + "4v9Z0JP2PH_SfSHVabfx36oYJzDrzr9J9f11uvFJdS5AOuPPxA-_K7Pu-PqpossjZbJjr_50z9pm16QdMzFj8KX_ZEWZvM28R4AD_G9MvJeTO-" + "B_vvLwGjg60za77mtMtc2uh_oTpto2d5itFW1XXf8_vFUDyA"); static string all_emojis_str = gzdecode(base64url_decode(packed_emojis).ok()).as_slice().str(); - constexpr size_t EMOJI_COUNT = 4713; + constexpr size_t EMOJI_COUNT = 7539; #else string all_emojis_str; constexpr size_t EMOJI_COUNT = 0; diff --git a/tdutils/test/emoji.cpp b/tdutils/test/emoji.cpp index 8ceea5491..aec011ac1 100644 --- a/tdutils/test/emoji.cpp +++ b/tdutils/test/emoji.cpp @@ -10,9 +10,12 @@ TEST(Emoji, is_emoji) { ASSERT_TRUE(!td::is_emoji("")); ASSERT_TRUE(td::is_emoji("👩đŸŧ‍❤‍💋‍👩đŸģ")); + ASSERT_TRUE(!td::is_emoji("👩đŸŧ‍❤‍💋‍👩đŸģī¸")); ASSERT_TRUE(td::is_emoji("👩đŸŧ‍❤ī¸â€đŸ’‹â€đŸ‘ŠđŸģ")); + ASSERT_TRUE(td::is_emoji("👩đŸŧ‍❤ī¸â€đŸ’‹â€đŸ‘ŠđŸģī¸")); ASSERT_TRUE(!td::is_emoji("👩đŸŧ‍❤ī¸ī¸â€đŸ’‹â€đŸ‘ŠđŸģ")); ASSERT_TRUE(td::is_emoji("⌚")); + ASSERT_TRUE(td::is_emoji("⌚ī¸")); ASSERT_TRUE(td::is_emoji("↔")); ASSERT_TRUE(td::is_emoji("đŸĒ—")); ASSERT_TRUE(td::is_emoji("2ī¸âƒŖ")); @@ -27,6 +30,13 @@ TEST(Emoji, is_emoji) { ASSERT_TRUE(td::is_emoji("⌚")); ASSERT_TRUE(td::is_emoji("🎄")); ASSERT_TRUE(td::is_emoji("🧑‍🎄")); + ASSERT_TRUE(td::is_emoji("Šī¸")); + ASSERT_TRUE(td::is_emoji("Š")); + ASSERT_TRUE(!td::is_emoji("Šī¸ī¸")); + ASSERT_TRUE(td::is_emoji("đŸ•ĩī¸â€â™‚ī¸")); + ASSERT_TRUE(!td::is_emoji("đŸ•ĩ‍♂ī¸")); + ASSERT_TRUE(!td::is_emoji("đŸ•ĩī¸â€â™‚")); + ASSERT_TRUE(td::is_emoji("đŸ•ĩ‍♂")); } static void test_get_fitzpatrick_modifier(td::string emoji, int result) {