C# : String

[".0s4*0|collections;datetime-format;string",["F@eEPS\\]_a","KAgaGEECBEKNBEIIJC","OLOCSTUUUUTTUUUUYFFOOOBOCCOCBWBCSTTUUUUTTUUUU","swfkfs.",".NET","Array","Dictionary","List","String","2D","Async","Console","DataTable","Dates","DateTime","Enum","File","For","Foreach","Format","IEnumerable","If","IndexOf","Lambda","LINQ","Optimization","Parse","Path","Process","Property","Random","Regex","Replace","Sort","Split","Static","Substring","Switch","Tuple","While","StringBuilder"," is an optimization. But it doesn't always improve performance. We determine the point at which StringBuilder becomes faster. Here we see benchmarks of StringBuilder and strings. We discuss the important considerations.","Benchmark."," To start, we see the code styles that were benchmarked to produce the graph. This is an adjunct article to my other StringBuilder work. What was tested here were tight loops that append a single string each iteration. ","Info: ","The number of strings that were appended was steadily increased to determine the slope of the graph.","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","StringBuilder default code, red line: C#","\n\nStringBuilder builder1 = new StringBuilder();\nfor (int i = 1; i < count1; i++)\n{\n builder1.Append(s);\n}\nreturn builder1.ToString();\n\n","StringBuilder with capacity, purple line: C#","\n\nStringBuilder builder2 = new StringBuilder(count1 * maxLength);\nfor (int i = 1; i < count1; i++)\n{\n builder2.Append(s);\n}\nreturn builder2.ToString();\n\n","String concat, blue line: C#","\n\nstring st1 = string.Empty;\nfor (int i = 1; i < count1; i++)\n{\n st1 += s;\n}\nreturn st1;","My test"," tried to defeat every compiler optimization by using different strings of the same lengths to append. The tests were repeated 20 times more for counts below 8 strings. You can see the graph above.","The benchmark indicates"," that using the string reference type with Concat is faster for one to four strings inclusive. Using StringBuilder with an accurate capacity is always faster than without.","Discussion."," Here I explore the best way to use StringBuilder in a program. Use StringBuilder always when you have a loop of a variable length. This will make your program usable in more scenarios than string Concat will. ","string.Concat ","string-concat","For example,"," if a program has three strings 99% of the time, but 30,000 strings 1% of the time, StringBuilder will make the program usable in that 1%. An important part of good programming is planning for errors and edge cases. ","Warning: ","If your program is lightning fast 99% of the time, but fails 1% of the time, your program is unacceptable for important work.","Therefore: ","I think StringBuilder is preferable in most loops, unless you have studied the input to the loop.","Problems."," There are many problems to this test. The individual strings themselves were 20 characters long. This may not match many programs in the real world. I benchmarked no cases where there are hundreds of thousands of strings. ","But: ","It is clear to me that the trend of the lines would continue. I used capacity settings that were 100% accurate.","Capacity ","capacity","Summary."," StringBuilder is entirely an optimization. It offers no logical improvements to string Concat other than its internal implementation. It is sometimes fine to use small loops (of four or fewer iterations) with simple string concatenations. ","Optimization ","optimization","Note: ","In edge cases, using string concats can be disastrous. Plan for your edge cases with StringBuilder.","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","3679700504","data-ad-format","link","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto"],"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABJCAMAAABPapnRAAAAMFBMVEX////9amn+z879o6Lx//rj//T/MTH95OP/9PT8ubj/AADj0cTR/+3b6drx9O/W9ORYTpHNAAAEfklEQVR4XtWa23KzOgyF0cFHkvT933Y3wa4QQYPr/RPqdUenhnwjLUUSmYYRs6tinqaQiACAvoVhIAp3q3KOHwmyFsQhMITi5pgf5PNWfoho3ETMHARDBGNxOGZOeU+kAqgOMLyFD4jC3+TIuAZRAWT2u+iewkUcjr8vJa+Alg+PSAQ52iCPbIniBT53yyVUjHDALiCYTflwFQcpSyiZFqH8F0g0R/TCcQjinOOV16HKX0HiKocKCDTB18sC/yVOCwk+XberZ/Vnwt+AxGIHd1vfLIDUuw+IdUBQAtJxSNstVhL6oNVZZ1bqSUcqkSqhkkLuPwhSL4ttYzu9HEKpZpowf84iTmc7TD1ej9IjsMq5HKTDdq5Uu+fTEgG8qh2lWAF4Ub0MiPM832/O8XL9OuLLiSOL0K9AgiSQAYI7cwJv5gTAdbSdThFauqdJnaF4nO19XrdB3hs69HkrCG8pwuwrCDMjGF2Dne19XhcQjZjf5p0AeUc+bUCYudzb7fYPEA+yferyugnij8MhoZN7O2YuaTszP4RDRKd43W4TCkd9VFJjCxHIdeQfEHeTdhT5sR/DeIrXBUTHitSYIBwwF+ZINURUQJ4cTkCkkgPGZ7mrIU1lU+LcnVYq1EAbpQ6vC2K+qz9XDj+r707d5jxju/JF5YC707cmSdfcIGrxup1ZBVzTwdf+V04J3eKmAgA1VYx7C/KBsMXrZvFNe2MCGN3qvC4L9ebelxAKSNqCQAtIaPG6NdnAbpTibu3TIOWvRf6+sbOA6LWBLd/mdVcDonvfec82YToGkTgJogkScoPgf/Xwu3XsfabxqjDUI8JB+4/ll9zta/4WFtWn4Eahxes3xZF8Vk7X1D5ajbLXHCFXgfHYg2y3ZaeEcEiZz/BlPJ61oZLEbw2I0laZg5M9sTbOxsyq2ixCTFTQhGP7hBzZ6c9bj/iwCaz0Im7RDwi8FHrHXL2bOzIZPKw0lAobkMTRSQDVZOa7utj2veTBFypJAXDrFbGHH3njAOtlYersYv/Jbo5CiZ6E76DKp7cSAMcB6e/hNQjYGPptxWE7BGGzLZTqSyfM6y17eA8pKmjVDpmLe3swizZDfw+vsz5ssl5eN7aDeCDsWHueM68frYgdiwlpLcTYuWU7a15vX8eG9i3bwYET5vWmJ6h1XfsB/8ndXBdIf96et5vrAGl37RVe7wexvY7Xet12YejYqF/odfu/U6NrJx3uxlPhBK8b8YMO117rdVmr6OkpjeR14RaSKFv0Tte2nwr/lt7pgY9WrzbYKQikYLn2Qq+L9JYqeOl25zsv5sTy3gqNbvyDXu/9vY4WfsLr/fTtIwn2e91umPvp+0nwb3pdxBoFwQL5q163UchvIYBSOMHrZ/8Q97XMInhKZkRLnV4fTLbXB5M9HI8lu/kbTHYdHU66vY5+zMyyB57BZM87Y8j+oe+YAZF+geWt10gOcYvqUpleAul6aCxfGO/XB+CwRrUBODrmG4/TmCDTBGsMiqM1V1J1vVDgNJSYy0yzCJGIEH8H8R86J7+C+8H8WAAAAABJRU5ErkJggg==)","url(data:image/png;base64,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)","url(data:image/png;base64,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)"]

["url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAAB4BAMAAADS7QcCAAAAGFBMVEX////0qHKhmbLDvs74yKT4xaH4yqr2tYUVUWgbAAAAfUlEQVR42u3XsQmAMBgF4V9xAAOCfVxAdAEdQtwg1il0fsHS8IpIsLob4OvPnKy1V7WXWb+J9pQZZpG3zkRNyowmmmBgYGBgYGBgYGBgYGA+Mn0QHTl3V+o1iYieKifLYq4gilnMYqIVBgYGBgYGBgYGBgYG5gfm3ESx0GvePshxrr29cIIAAAAASUVORK5CYII=)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAACCAgMAAADasxWRAAAADFBMVEX/6Nn///+VlZX29va5ksB5AAAASElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOSAALWyrsxEHLDAAAAAElFTkSuQmCC)","url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCADkAMgDASIAAhEBAxEB/8QAHAAAAgMBAQEBAAAAAAAAAAAAAAECAwQFBgcI/8QASBAAAgIBAQQGBQcHCgcBAAAAAAECAxEEBRIhMQYTQVGR0SJhcYGxFCMkMlKSk2Jyc6GywdIHFSUzNUJDU4KiFhc0RFRjs/D/xAAbAQACAwEBAQAAAAAAAAAAAAAAAQIDBAUGB//EADMRAAICAgECBAQDBwUAAAAAAAABAhEDBCESMQUTQXEzUWGxIiPRBhQkMkJSoXKBkZLB/9oADAMBAAIRAxEAPwD9UgAAACY2U6i1U0WWSzuwi5PHPCGlfAiUpYKpWJHC1HSXSxX1NR92Pmc+7pRpuxan7sfM1w08r/pK3lh8z0ep1O5u8e8pWs9Z5W7pLpbMb0dS8fkx8xafbmkuvrqhHUKU5KKbSxl+80rSmlzEj50b7nsIapMvjcmedWolBS7XF4NFOrm1yRRLB8i2Ny7HcVvFe0m7Ecb5VNccLgVXbTtivqw8GV+Q32J9LO8rETjLJ5b+eLd7G7DwfmdTRa6VsU2lxCevKKtkex2U8jRTVPKLTM1QxgACAAAAAAA4k7NxJ88vtZOMbE2dsTWTNTLecX6zURaGJLADAjQAAAxgJsx7Uf8AR2q/RS+DNMmYNrzxs3V/opfAsxr8S9yMuzPnmpknKCk8Rb4myzZWh6jrpXW9VjO9lcvA4+rs5Hoap1x2LXK6G/Wq45j3no8nVBRaZgjTuzm6nZOkWgnqdPZbNJZi21h8cdxg2ZQ/5w0vD/Fj8UdC6uV8VbpqZ16bHLs5mnZem+mad45WRf6x+a4wdux9NtUdiyp4s4dv7wtb0+jvuUcuuuU0n24WTqTo9GXDt/eRnpY20TqsXoTi4y9j4HIlltHRx8Iz/wA265umMtq7PhO5ZhXLSSy+GXj53jgrs2Jrp3dQ9r6BXbu/1fyOW9u5xnHW8s9o5aSxbd2HdqNTZfKq2yuvejGO7GVM88ks/ViLatNv/Ftup018qL4aGqtSUVLMZWWNrDXfFGZTyXSY3fY4VO/NS38OUZzg3FYT3ZOOce472y01XEy1aNVx3cuTy5OT5tttt+LOvoad2uPA25MlwSZCR0tPndNS5GepYRejmy7gSAAIAAAADA4s9NZOUW4WcOzB2iuOXji/EnGVCZRTCUZRWJYz2o1ke3myRFuxgAAIAExiYAU2PByNuSa2Vrf0MvgdexZObtSh3aHU1RaTsg4JvllmjC0pJv5ohLsfKHa1bGTzJJ5wzvVbdjKG58jjuct3f4fAJdFtXn+u033n5F1PRnVRazbp/vPyPRZM2vNcswxhkXZGivaCv07pjp1XF90uX6jo7Lp+fqf5S+JXpNg6iHOyn7z8js6LZ1tU4OUq2k0+Dfkc3NlxpNQZdGMr5OjKHoshu4NLXovBTJPufgc1M1xdHNtzTtRamekv1MYQj1PVziurn6ak8Skuakl2lOsm9ZtDT3w0Op09kXu22WThiVajPEcRm8+lJPl3nTmpfZfgUyUvsvwJKKuxuS7lUa1k3UQxBFEE+5murhFJjnIg5WWwLEQiSKGBNAQsbVcmuDSZlrjbYk1a1n1sFG+SMp06o2gYtPOfXqMpSfPKbNoSj0hCfWrArjLCLAIkyG8m17SYGSOZ2zXWyj6XBZE5URlPpo1gYbZShLEbJS94EPMRU9hJ1RuExgWF5CSyUXV70GjSJpYJJ0BzHpl3Eo6dLsN26G6WeYxUUQrwWxjgngOJFuwKdTZ1FErMZx2HMltS3sjX4PzNm13jZ1r9nxR5u21VUWWzy4wi5PHPCRz9nLOM0os262KM4OUkdOW07vs1+D8yt7Ruf92Hg/M+X/8AN/o//wCJtT8Kv+M9B0Z6abG6SXOjZ9tkNSo7/U3Q3ZNduOaePUyl5M65tlvl4H6I9lHaNn2YeDOlpb+tqjPGMnm5to6ez7fo8Vnln4mjUyzyTcZO+DJu48eKClBVyduMixMwOx8MNli6z7X6zc0ZYStdzTY/mp/msy1ahQrUXHOO54JxlJTSbfPvNS5BaSphODbtMxaZ51KaWOZ0CKGKT6h44dKoYAgIEwMDm4Xykkm8vmbwIyjZCcOqqZzJPek3jGQOmBDy/qVfu/1AAAtNACGxDABDI5AQMQAxiMO2v7Mu/wBP7SPPVYfBnoNtv+jLv9P7SPMTnZGix0pO3de4n2vHA5u38Vex0tT4T9z4Do9dLZX8rWv1dWgt17p12rxpqY5lJfOLgsPknnlyR2/5NKKdt/yg6nbEbKdE67LL4aKOd5qSawuCWFvcfhxFsHoz0x0fTOvbtmy6o3T1E7bX11bilZlTwt/PKTwWW9DekmyulGpv2RXHq7pWKvUQsUVGE8rPPKaT7O1cMk+GqszzbXNH2G1mvQz+aj7zmw3oUwhOTnKMUnJ9rxzN2j/qo+/4ktJVkfsYPEc35a9zqqecGqufzbzLj7TnweccUaa0+9HQZkwZbSNVbzOOe82JmOqPFcUa4kZG9SsmhkRpkSQxiBAMYAAgAAABgAAAhMAAYCZEbEMQMixsiwImTatc7tBdCtZk8NL2NM80tNqV/wBvd9xnots6qzR7OsuoUHYpQit9NrjJLs9pznqdq/5mh/Cn/EZ82sssupuiyO8tePS/UwdTqEuNNv3GQnXd21WfdZunqNqP/E0X4Uv4jNZdtF856T8OX8QlpR/uMubxWL7Jf5MUq7PsS8DdpIuNUVJYZllPX54z0v4cv4jVs2yeo0sLLFHfbknurC4Sa/cX4teOJ2mcnPtvY/DXY2ReOPcidGrqk1htZeE2uGRJY4+oxaeuyEISdc2ozy47v6y1k8KO/VzXtNcTHS291tYfcbEJnUx9iY0RRIiXEgEhiJDAEAgAAABgDAGAhCYxMYEQYCbGRERGyIyLOZ0k/siz9JV/9IlLNG3odZsyyOcenW/98Spw9YzBuJtqiz5IpR3usWPYYLI8zq1r6G16mYnRLd3uOO/AzNnwql0r0MMokthwzs6D/Ls/bkXur1ktiVbmzoLOfTn+2xlWvh5dlzSTWU/cXQce6QrI4mvYWSit2OFzEzoQx0WVyjvLhLmaomKH14+1G1CZriqJoZFEkRLESQyKHkQxoYkMQwAAAABgDABCYxMYiLIsbZXOWCMp0FDbItlcpkd8q89CcSja/HQT/Oh+0ios2hmekmopyeYvCWX9ZGaV+P8AB1Huql5F0J9Rj2INtUbFdWobu7LBCdsHU4RTRjeo/wDRqfwZeRVbqnGPCjUrj/ky8i0plLJXb/BoJ7H/AOgh+dP9tnP+VyfFUar8CXkadlSthooKalB70niUcPjJhZHC+lu0brV857icbHw4R4FkEpRi5JN47iahH7MfADckUQ+vH2o2IrUIp8IrwJMRMnkeSGQ3uAqHZah5KFNklN57BDTLhkIvJMiTGAgABiYxMAEU6yThp5tNprHFe0uZj2nLGisfs+KMu7k6NfJL5J/YlBXJIwy1E/ty8SCvm85nLxMisyfOdh9JNta6O1Lnq4OnSTipJ1wT9KTSx6PHkeO182XZuUZcL6v1Ns4qPFH093S+0/EOtf2n4ni6drbQnovlUr4uvrOr+rHOcZ7j1Gnsc6K5N8XFN+ASzZMb5ZHpTOvp5NwWXlmhGTScaomuPI9ZoTcscX9DDkVNjKdSvQXtLyu+DlFKKzxOn6GeauLKdO23u9iK7JNvj2cCxVWLkmveHU2N5a4+0XJRTqi+tehH2FiFBYjFPsRIZpS4AiyRGQDZFzRXfqq6a3Kx7seWcEmjmbcj9Ej+evgxuqMmzmlixSmvRGmvaukzxsf3WWR2npZNJWZz+Szzml09l9qrqWZP9R0atlaiFscuDXenyK7OXg8Q28vMYJr2f6nar1lD5TfgzXCSlFSi8pnDhW4TcXzTwdfSLFEP/wB2hZ19XPPK2pIvAAEbhsi2DZCUgAUpGDa0/oFvu+KNNkzn7UlnRWe74o43jEnHUy/6ZfYnh+JH3RyISOX0sddPRrWuKjFvc5LGfTib4ywYdrbB0u3nS9XZfDqN7d6qSWd7Gc5T7kfO/CNmPnR8x8HVzQfS6M3QKcbtjW5w2r3w/wBMT0mO45Gw+jWj2NqZ36W3UTnKDraskmsZT7Eu47kY5O3sKOTK5Y3aZnjaXJv0MfmIe/4mtLBVo4408Pf8TRg9toY+nDD2Rz8nMmRYYJYDB0CojgCWAwAUIaQwAYYE0SHgVhRVunN29HGjh+kXwZ18HN6QL6FD9IvgxN8GPfj/AA0/b9Dm7GdkNRJ1176xiSTSx4nWpjVddO2mUoW8pcPijj6G+emlJ1qL3lh5R0tNrLZJRkot9+CJytDJCMIwk/W+32ZNQatlvc88TpadYqiY4Jt5fNm6lfNoDsasabZMAADaVSku9eJTZLuOXtLU3U6mmFU8RnGTfBPGO3ibqW5UQbkptxXpR5P1lUcrbSoscFRTZbx5rxM2pXyiiVcJR3njm/WaaKK7cqTkpLLwu4phVBapOttx7GyO1rw2ccsU1xJNP/cww2JqUZJLuYY7Kvf96vxfkadNsq+G9mVfH1vyOrXEvijz+H9lNDFLqipf9n+h03uZZKn9jlrZ1v2oeL8iyOhsXNw8WdIDpY/BdWHZP/kqeebKaYOuuMXjK7ieCYsHVhFQiorsil88kJNRWW8ISaaynwC6LdbUVlsh1cmpvG7vckWKqFROMlLk8iU4t/WRGuEt9NrCSx7Rqv51+j6OB8DonvRTw2shvxSTysMrsrlKzMVyXBg65dVBYeU8viKkFFu/HdzvLHLIKcGm1JYXMUY/N8Y8VyQowaoa3fSxgKQ6LIyjJNpppcynUU06yvqpy7crdfEsqr3Y5472OQqISi0pR97a4CpClCM4uMlaZihszS5xGyxv2ryNFeiohNJSlvdzaJxhNT3t3hvN4yTmpq5yjHPo45g4opjqYI/yxQOuqDw5YfrZdHG6t3kZ7q5ym3GPZjOeZogmoRTxnHYRaVF6io9hgACJGK7Q12yTtrrm1wTksk4U7kVGKSilhJdhqayRZBY4p2NzZx4auquTcLo55fVb/cS0ttNl8VCxOXHCw/I8Tt/X6jR6iqNE8RlXKTW4nxXt7D0PR63r7dLZvRk5Ry3HlndeTyut47s5MuOMoxqTS9fn7nOilaPTRRYkJElwPXG5ALBJAAyIiWAwMREB4DAAIB4DACEBLAYAYsDSGAgAAHgBggABAAAAAAAADEJjAjYmeat2LpbpqdkozklhSlRl47jTs7Z9Okuq6qeIxyowVe6uTOpXVmjGE5YWGVqpqyHLg/3M5uPwnUxzjOMOU7XL/UoeNJ8I0RZNEMYJJnVLESAAAmADwGAAQBgMAAAGAwAAA8BgAEAwAAAAEAAAAAAAAMAAAA4EulGjjzp1P3Y+ZZs/pHpNdra9LVVqI2TzhzikuCb7/UY9ip0ard+bVc8Obl6s+ZXpd+7pTTZPc9DegnDk0oyBpHVlr4PxJRfCu7/8o9OoNLGV4CUGpJtrh6iwMCSOTRCSIykoRcpPCSyyxop1a+iXfmS+AsknCEpL0T+zIvjkpW0dL/m/7X5F1Gqpvk41T3mlnGGjFs3T1y0kXKqLk23vSWc+Qtlw3dXY0kvRfL2o42Dd2pSxeYo1P5J8cfVkIylxfqdZACA7ZaAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAOe9k6dr61nivIlp9l0UaiN0HZvRzjLWOWO4AFZb52RqrNwAAFQMq1Kzp7V3xfwACGX4cvZ/ZkWcKo6WzUusl+aAHl/DF+dEox90dAAA9YaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//Z)","E","url(data:image/png;base64,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAByCAAAAADMwOSzAAACe0lEQVR4Xu3csY7kMAgG4Lz/86Wkp6ZAokDy6RTfodVsTDSaxPy7/uux9a0LZpkEb20YNzNVEWYmItr/hYiYWcS8Tcw2cKv8DTPtoxCzqFfC+wGXgCchYlGvgDfp9MBd/xNsIj7otL8XHwC8x14Sq04/Yine4tRvwEvP6ypqPXp+dgneY+nbaZPwHscOh7eww+HDjoL/uJ1m4D3scPjYFw8fawDxUWjw8LErFP7TB7/z0/jYFA8fB4+Il1iQh47UwF//fvrfLPV/t0WEj+52Ev5yjWc96y/MNNrdR/EX6yRZuxb3Z/Ge10lu1/MsPm9auZXFS09iL4n3DE+tLD5vQrQsPi+U1ArjJcELAv7Og/eeAT4+cor3r2lbVPk7Sk30ODeEt3R/QcZ7YXxWbKgB47kyPis2goy3ynhP8K00frw9lcbbD8bz3fiFJ0S8jvEyCb/wioy30nhZ+Kz/Mz3CPa8S0h7hI9+AtMeOeIb3cBRswGO7UviFfwO48Au/8Au/8OhfUgu/8EkzUhqvNfELr8h4+cV477EuGvSw0sPnPaz06BHbDOJHp/UrMf6TkYVfD9RagndkvCI/vpfSeAN+9yDbn0rjPdnfEPCC+JpWS/BUGJ8PGWldfH46XBifzy1oXXw+qkOF8dE1wr2Cful4uC7epQdu7OLimBRpRfzlmkDiw1kjNRFmmjehto9DLJZNeT2P1zfG66jKbKAjDzbGCkS8Iw/zxhJAfGyLiI9aj4iPRYg3ToQeEB87EyLepQcLnyzEwIceER8VEwT/6fu0JuKDzwSA/yifWGbhIxb+y2wWm9DDJnc+UtE7HwOfXOTB/KX1o37bppq3efkDT4lpi2pYKzIAAAAASUVORK5CYII=)"]