<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nsis.sourceforge.io/mediawiki/index.php?action=history&amp;feed=atom&amp;title=StrSort</id>
	<title>StrSort - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://nsis.sourceforge.io/mediawiki/index.php?action=history&amp;feed=atom&amp;title=StrSort"/>
	<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=StrSort&amp;action=history"/>
	<updated>2026-08-10T21:14:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=StrSort&amp;diff=8636&amp;oldid=prev</id>
		<title>Deguix: Corrected link to LogicLib header file.</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=StrSort&amp;diff=8636&amp;oldid=prev"/>
		<updated>2005-12-03T06:19:43Z</updated>

		<summary type="html">&lt;p&gt;Corrected link to &lt;a href=&quot;/LogicLib_header_file&quot; title=&quot;LogicLib header file&quot;&gt;LogicLib header file&lt;/a&gt;.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 06:19, 3 December 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Requires:&amp;#039;&amp;#039;&amp;#039; [[LogicLib]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Requires:&amp;#039;&amp;#039;&amp;#039; [[LogicLib &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;header file&lt;/ins&gt;]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Version:&amp;#039;&amp;#039;&amp;#039; 2.0.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Version:&amp;#039;&amp;#039;&amp;#039; 2.0.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Deguix</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=StrSort&amp;diff=6248&amp;oldid=prev</id>
		<title>Deguix at 11:49, 10 July 2005</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=StrSort&amp;diff=6248&amp;oldid=prev"/>
		<updated>2005-07-10T11:49:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:49, 10 July 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l69&quot;&gt;Line 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 69:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!define StrSort &amp;quot;!insertmacro StrSort&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!define StrSort &amp;quot;!insertmacro StrSort&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!macro StrSort ResultVar String LeftMarkerSubString SubString RightMarkerSubString IncludeLeftMarkerSubString IncludeSubString IncludeRightMarkerSubString&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!macro StrSort ResultVar String LeftMarkerSubString SubString &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;RightMarkerSubString IncludeLeftMarkerSubString IncludeSubString &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;IncludeRightMarkerSubString&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Push &amp;quot;${String}&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Push &amp;quot;${String}&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Push &amp;quot;${LeftMarkerSubString}&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Push &amp;quot;${LeftMarkerSubString}&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Deguix</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=StrSort&amp;diff=4465&amp;oldid=prev</id>
		<title>Deguix: Corrected function parameters order.</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=StrSort&amp;diff=4465&amp;oldid=prev"/>
		<updated>2005-07-10T11:48:23Z</updated>

		<summary type="html">&lt;p&gt;Corrected function parameters order.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:48, 10 July 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l14&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;${StrSort} &amp;quot;ResultVar&amp;quot; &amp;quot;String&amp;quot; &amp;quot;LeftMarkerSubString&amp;quot; &amp;quot;SubString&amp;quot; &amp;quot;RightMarkerSubString&amp;quot; &amp;quot;IncludeLeftMarkerSubString&amp;quot; &amp;quot;IncludeSubString&amp;quot; &amp;quot;IncludeRightMarkerSubString&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;${StrSort} &amp;quot;ResultVar&amp;quot; &amp;quot;String&amp;quot; &amp;quot;LeftMarkerSubString&amp;quot; &amp;quot;SubString&amp;quot; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;RightMarkerSubString&amp;quot; &amp;quot;IncludeLeftMarkerSubString&amp;quot; &amp;quot;IncludeSubString&amp;quot; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;IncludeRightMarkerSubString&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;or&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;or&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;String&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;LeftMarkerSubString&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;SubString&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;RightMarkerSubString&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;IncludeLeftMarkerSubString&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;IncludeSubString&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Push &amp;quot;IncludeRightMarkerSubString&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Push &amp;quot;IncludeRightMarkerSubString&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;IncludeSubString&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;IncludeLeftMarkerSubString&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;RightMarkerSubString&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;SubString&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;LeftMarkerSubString&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Push &quot;String&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Call StrSort&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Call StrSort&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pop &amp;quot;ResultVar&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pop &amp;quot;ResultVar&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l68&quot;&gt;Line 68:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 70:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!macro StrSort ResultVar String LeftMarkerSubString SubString RightMarkerSubString IncludeLeftMarkerSubString IncludeSubString IncludeRightMarkerSubString&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!macro StrSort ResultVar String LeftMarkerSubString SubString RightMarkerSubString IncludeLeftMarkerSubString IncludeSubString IncludeRightMarkerSubString&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${String}&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${LeftMarkerSubString}&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${SubString}&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${RightMarkerSubString}&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${IncludeLeftMarkerSubString}&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${IncludeSubString}&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Push &amp;quot;${IncludeRightMarkerSubString}&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Push &amp;quot;${IncludeRightMarkerSubString}&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${IncludeSubString}&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${IncludeLeftMarkerSubString}&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${RightMarkerSubString}&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${SubString}&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${LeftMarkerSubString}&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Push &quot;${String}&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Call StrSort&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Call StrSort&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Pop &amp;quot;${ResultVar}&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Pop &amp;quot;${ResultVar}&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Deguix</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=StrSort&amp;diff=4464&amp;oldid=prev</id>
		<title>Deguix: Version: 2.0.</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=StrSort&amp;diff=4464&amp;oldid=prev"/>
		<updated>2005-07-10T08:32:06Z</updated>

		<summary type="html">&lt;p&gt;Version: 2.0.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{PageAuthor|deguix}}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Requires:&amp;#039;&amp;#039;&amp;#039; [[LogicLib]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Version:&amp;#039;&amp;#039;&amp;#039; 2.0.&lt;br /&gt;
&lt;br /&gt;
This function searches for a substring in a string, and returns itself plus the remaining part of the string between the left and right marker substrings. The substring, along with the marker substrings can also be hidden from the resulting value.&lt;br /&gt;
&lt;br /&gt;
== How To Use ==&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
${StrSort} &amp;quot;ResultVar&amp;quot; &amp;quot;String&amp;quot; &amp;quot;LeftMarkerSubString&amp;quot; &amp;quot;SubString&amp;quot; &amp;quot;RightMarkerSubString&amp;quot; &amp;quot;IncludeLeftMarkerSubString&amp;quot; &amp;quot;IncludeSubString&amp;quot; &amp;quot;IncludeRightMarkerSubString&amp;quot;&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
Push &amp;quot;IncludeRightMarkerSubString&amp;quot;&lt;br /&gt;
Push &amp;quot;IncludeSubString&amp;quot;&lt;br /&gt;
Push &amp;quot;IncludeLeftMarkerSubString&amp;quot;&lt;br /&gt;
Push &amp;quot;RightMarkerSubString&amp;quot;&lt;br /&gt;
Push &amp;quot;SubString&amp;quot;&lt;br /&gt;
Push &amp;quot;LeftMarkerSubString&amp;quot;&lt;br /&gt;
Push &amp;quot;String&amp;quot;&lt;br /&gt;
Call StrSort&lt;br /&gt;
Pop &amp;quot;ResultVar&amp;quot;&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
; ResultVar&lt;br /&gt;
: Variable where the string between &amp;#039;&amp;#039;LeftMarkerSubString&amp;#039;&amp;#039; and &amp;#039;&amp;#039;RightMarkerSubString&amp;#039;&amp;#039; containing the &amp;#039;&amp;#039;SubString&amp;#039;&amp;#039; found in &amp;#039;&amp;#039;String&amp;#039;&amp;#039; is returned.&lt;br /&gt;
&lt;br /&gt;
; String&lt;br /&gt;
: String where to search for &amp;#039;&amp;#039;SubString&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
; LeftMarkerSubString&lt;br /&gt;
: String to search with the &amp;quot;right-to-left&amp;quot; direction on the left of &amp;#039;&amp;#039;SubString&amp;#039;&amp;#039; after the &amp;#039;&amp;#039;SubString&amp;#039;&amp;#039;&amp;#039;s search is done. If this is an empty string, everything on the left of &amp;#039;&amp;#039;SubString&amp;#039;&amp;#039; gets included in &amp;#039;&amp;#039;ResultVar&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
; SubString&lt;br /&gt;
: String to search in &amp;#039;&amp;#039;String&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
; RightMarkerSubString&lt;br /&gt;
: String to search with the &amp;quot;left-to-right&amp;quot; direction on the right of &amp;#039;&amp;#039;SubString&amp;#039;&amp;#039; after the &amp;#039;&amp;#039;SubString&amp;#039;&amp;#039;&amp;#039;s search is done. If this is an empty string, everything on the right of &amp;#039;&amp;#039;SubString&amp;#039;&amp;#039; gets included in &amp;#039;&amp;#039;ResultVar&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
; IncludeLeftMarkerSubString&lt;br /&gt;
: Allows the inclusion or not of the &amp;#039;&amp;#039;LeftMarkerSubString&amp;#039;&amp;#039; value in &amp;#039;&amp;#039;ResultVar&amp;#039;&amp;#039;. 1 = True, 0 = False. Default is 1 (True).&lt;br /&gt;
&lt;br /&gt;
; IncludeSubString&lt;br /&gt;
: Allows the inclusion or not of the &amp;#039;&amp;#039;SubString&amp;#039;&amp;#039; value in &amp;#039;&amp;#039;ResultVar&amp;#039;&amp;#039;. 1 = True, 0 = False. Default is 1 (True).&lt;br /&gt;
&lt;br /&gt;
; IncludeRightMarkerSubString&lt;br /&gt;
: Allows the inclusion or not of the &amp;#039;&amp;#039;RightMarkerSubString&amp;#039;&amp;#039; value in &amp;#039;&amp;#039;ResultVar&amp;#039;&amp;#039;. 1 = True, 0 = False. Default is 1 (True).&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
${StrSort} $0 &amp;quot;This is just an example&amp;quot; &amp;quot;&amp;quot; &amp;quot; just&amp;quot; &amp;quot;&amp;quot; &amp;quot;0&amp;quot; &amp;quot;0&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
$0 = &amp;quot;This is an example&amp;quot;&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
!define StrSort &amp;quot;!insertmacro StrSort&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!macro StrSort ResultVar String LeftMarkerSubString SubString RightMarkerSubString IncludeLeftMarkerSubString IncludeSubString IncludeRightMarkerSubString&lt;br /&gt;
  Push &amp;quot;${IncludeRightMarkerSubString}&amp;quot;&lt;br /&gt;
  Push &amp;quot;${IncludeSubString}&amp;quot;&lt;br /&gt;
  Push &amp;quot;${IncludeLeftMarkerSubString}&amp;quot;&lt;br /&gt;
  Push &amp;quot;${RightMarkerSubString}&amp;quot;&lt;br /&gt;
  Push &amp;quot;${SubString}&amp;quot;&lt;br /&gt;
  Push &amp;quot;${LeftMarkerSubString}&amp;quot;&lt;br /&gt;
  Push &amp;quot;${String}&amp;quot;&lt;br /&gt;
  Call StrSort&lt;br /&gt;
  Pop &amp;quot;${ResultVar}&amp;quot;&lt;br /&gt;
!macroend&lt;br /&gt;
&lt;br /&gt;
Function StrSort&lt;br /&gt;
  /*After this point:&lt;br /&gt;
  ------------------------------------------&lt;br /&gt;
  $R0 = String (input)&lt;br /&gt;
  $R1 = LeftMarkerSubString (input)&lt;br /&gt;
  $R2 = SubString (input)&lt;br /&gt;
  $R3 = RightMarkerSubString (input)&lt;br /&gt;
  $R4 = IncludeLeftMarkerSubString (input)&lt;br /&gt;
  $R5 = IncludeSubString (input)&lt;br /&gt;
  $R6 = IncludeRightMarkerSubString (input)&lt;br /&gt;
&lt;br /&gt;
  $0 = StrLen (temp)&lt;br /&gt;
  $1 = LeftMarkerSubStrLen (temp)&lt;br /&gt;
  $2 = SubStrLen (temp)&lt;br /&gt;
  $3 = RightMarkerSubStrLen (temp)&lt;br /&gt;
  $4 = StartPos (temp)&lt;br /&gt;
  $5 = EndPos (temp)&lt;br /&gt;
  $6 = StartCharPos (temp)&lt;br /&gt;
  $7 = EndCharPos (temp)&lt;br /&gt;
  $8 = TempStr (temp)*/&lt;br /&gt;
&lt;br /&gt;
  ;Get input from user&lt;br /&gt;
  Exch $R6&lt;br /&gt;
  Exch&lt;br /&gt;
  Exch $R5&lt;br /&gt;
  Exch&lt;br /&gt;
  Exch 2&lt;br /&gt;
  Exch $R4&lt;br /&gt;
  Exch 2&lt;br /&gt;
  Exch 3&lt;br /&gt;
  Exch $R3&lt;br /&gt;
  Exch 3&lt;br /&gt;
  Exch 4&lt;br /&gt;
  Exch $R2&lt;br /&gt;
  Exch 4&lt;br /&gt;
  Exch 5&lt;br /&gt;
  Exch $R1&lt;br /&gt;
  Exch 5&lt;br /&gt;
  Exch 6&lt;br /&gt;
  Exch $R0&lt;br /&gt;
  Exch 6&lt;br /&gt;
  Push $0&lt;br /&gt;
  Push $1&lt;br /&gt;
  Push $2&lt;br /&gt;
  Push $3&lt;br /&gt;
  Push $4&lt;br /&gt;
  Push $5&lt;br /&gt;
  Push $6&lt;br /&gt;
  Push $7&lt;br /&gt;
  Push $8&lt;br /&gt;
&lt;br /&gt;
  ;Parameter defaults&lt;br /&gt;
  ${IfThen} $R4 == `` ${|} StrCpy $R4 `1` ${|}&lt;br /&gt;
  ${IfThen} $R5 == `` ${|} StrCpy $R5 `1` ${|}&lt;br /&gt;
  ${IfThen} $R6 == `` ${|} StrCpy $R6 `1` ${|}&lt;br /&gt;
&lt;br /&gt;
  ;Get &amp;quot;String&amp;quot;, &amp;quot;SubString&amp;quot;, &amp;quot;LeftMarkerSubString&amp;quot; and &amp;quot;RightMarkerSubString&amp;quot; length&lt;br /&gt;
  StrLen $0 $R0&lt;br /&gt;
  StrLen $1 $R1&lt;br /&gt;
  StrLen $2 $R2&lt;br /&gt;
  StrLen $3 $R3&lt;br /&gt;
  ;Start &amp;quot;StartCharPos&amp;quot; counter&lt;br /&gt;
  StrCpy $6 0&lt;br /&gt;
  ;Start &amp;quot;EndCharPos&amp;quot; counter based on &amp;quot;SubString&amp;quot; length&lt;br /&gt;
  IntOp $7 $6 + $2&lt;br /&gt;
&lt;br /&gt;
  ;Loop until &amp;quot;SubString&amp;quot; is found or &amp;quot;String&amp;quot; reaches its end&lt;br /&gt;
  ${Do}&lt;br /&gt;
    ;Remove everything before and after the searched part (&amp;quot;TempStr&amp;quot;)&lt;br /&gt;
    StrCpy $8 $R0 $2 $6&lt;br /&gt;
&lt;br /&gt;
    ;Compare &amp;quot;TempStr&amp;quot; with &amp;quot;SubString&amp;quot;&lt;br /&gt;
    ${IfThen} $8 == $R2 ${|} ${ExitDo} ${|}&lt;br /&gt;
    ;If not, this could be &amp;quot;String&amp;quot; end&lt;br /&gt;
    ${IfThen} $7 &amp;gt;= $0 ${|} Goto Done ${|}&lt;br /&gt;
    ;If not, continue the loop&lt;br /&gt;
    IntOp $6 $6 + 1&lt;br /&gt;
    IntOp $7 $7 + 1&lt;br /&gt;
  ${Loop}&lt;br /&gt;
&lt;br /&gt;
  # &amp;quot;SubString&amp;quot; was found&lt;br /&gt;
&lt;br /&gt;
  ;Remove &amp;quot;SubString&amp;quot; from &amp;quot;String&amp;quot; if the user wants&lt;br /&gt;
  ${If} $R5 = 0 ;FALSE&lt;br /&gt;
    StrCpy $8 $R0 $6&lt;br /&gt;
    StrCpy $R0 $R0 `` $7&lt;br /&gt;
    StrCpy $R0 $8$R0&lt;br /&gt;
  ${EndIf}&lt;br /&gt;
&lt;br /&gt;
  ;&amp;quot;StartPos&amp;quot; and &amp;quot;EndPos&amp;quot; will record &amp;quot;SubString&amp;quot; coordinates for now&lt;br /&gt;
  StrCpy $4 $6&lt;br /&gt;
  StrCpy $5 $7&lt;br /&gt;
  ;&amp;quot;StartCharPos&amp;quot; and &amp;quot;EndCharPos&amp;quot; should be before &amp;quot;SubString&amp;quot;&lt;br /&gt;
  IntOp $6 $6 - $1&lt;br /&gt;
  IntOp $7 $6 + $1&lt;br /&gt;
&lt;br /&gt;
  ;Loop until &amp;quot;LeftMarkerSubString&amp;quot; is found or &amp;quot;String&amp;quot; reaches its start&lt;br /&gt;
  ${Do}&lt;br /&gt;
    ;Remove everything before and after the searched part (&amp;quot;TempStr&amp;quot;)&lt;br /&gt;
    StrCpy $8 $R0 $1 $6&lt;br /&gt;
&lt;br /&gt;
    ;If &amp;quot;LeftMarkerSubString&amp;quot; is empty&lt;br /&gt;
    ${If} $R1 == ``&lt;br /&gt;
      StrCpy $6 0&lt;br /&gt;
      StrCpy $7 0&lt;br /&gt;
      ${ExitDo}&lt;br /&gt;
    ${EndIf}&lt;br /&gt;
&lt;br /&gt;
    ;Compare &amp;quot;TempStr&amp;quot; with &amp;quot;LeftMarkerSubString&amp;quot;&lt;br /&gt;
    ${IfThen} $8 == $R1 ${|} ${ExitDo} ${|}&lt;br /&gt;
    ;If not, this could be &amp;quot;String&amp;quot; start&lt;br /&gt;
    ${IfThen} $6 &amp;lt;= 0 ${|} ${ExitDo} ${|}&lt;br /&gt;
    ;If not, continue the loop&lt;br /&gt;
    IntOp $6 $6 - 1&lt;br /&gt;
    IntOp $7 $7 - 1&lt;br /&gt;
  ${Loop}&lt;br /&gt;
&lt;br /&gt;
  # &amp;quot;LeftMarkerSubString&amp;quot; is found or &amp;quot;String&amp;quot; start was reached&lt;br /&gt;
&lt;br /&gt;
  ;Remove &amp;quot;LeftMarkerSubString&amp;quot; from &amp;quot;String&amp;quot; if the user wants&lt;br /&gt;
  ${If} $R4 = 0 ;FALSE&lt;br /&gt;
    IntOp $6 $6 + $1&lt;br /&gt;
  ${EndIf}&lt;br /&gt;
&lt;br /&gt;
  ;Record &amp;quot;LeftMarkerSubString&amp;quot; first character position on &amp;quot;TempStr&amp;quot; (temporarily)&lt;br /&gt;
  StrCpy $8 $6&lt;br /&gt;
&lt;br /&gt;
  ;&amp;quot;StartCharPos&amp;quot; and &amp;quot;EndCharPos&amp;quot; should be after &amp;quot;SubString&amp;quot;&lt;br /&gt;
  ${If} $R5 = 0 ;FALSE&lt;br /&gt;
    StrCpy $6 $4&lt;br /&gt;
  ${Else}&lt;br /&gt;
    IntOp $6 $4 + $2&lt;br /&gt;
  ${EndIf}&lt;br /&gt;
  IntOp $7 $6 + $3&lt;br /&gt;
      &lt;br /&gt;
  ;Record &amp;quot;LeftMarkerSubString&amp;quot; first character position on &amp;quot;StartPos&amp;quot;&lt;br /&gt;
  StrCpy $4 $8&lt;br /&gt;
&lt;br /&gt;
  ;Loop until &amp;quot;RightMarkerSubString&amp;quot; is found or &amp;quot;String&amp;quot; reaches its end&lt;br /&gt;
  ${Do}&lt;br /&gt;
    ;Remove everything before and after the searched part (&amp;quot;TempStr&amp;quot;)&lt;br /&gt;
    StrCpy $8 $R0 $3 $6&lt;br /&gt;
&lt;br /&gt;
    ;If &amp;quot;RightMarkerSubString&amp;quot; is empty&lt;br /&gt;
    ${If} $R3 == ``&lt;br /&gt;
      StrCpy $6 $0&lt;br /&gt;
      StrCpy $7 $0&lt;br /&gt;
      ${ExitDo}&lt;br /&gt;
    ${EndIf}&lt;br /&gt;
&lt;br /&gt;
    ;Compare &amp;quot;TempStr&amp;quot; with &amp;quot;RightMarkerSubString&amp;quot;&lt;br /&gt;
    ${IfThen} $8 == $R3 ${|} ${ExitDo} ${|}&lt;br /&gt;
    ;If not, this could be &amp;quot;String&amp;quot; end&lt;br /&gt;
    ${IfThen} $7 &amp;gt;= $0 ${|} ${ExitDo} ${|}&lt;br /&gt;
    ;If not, continue the loop&lt;br /&gt;
    IntOp $6 $6 + 1&lt;br /&gt;
    IntOp $7 $7 + 1&lt;br /&gt;
  ${Loop}&lt;br /&gt;
&lt;br /&gt;
  ;Remove &amp;quot;RightMarkerSubString&amp;quot; from &amp;quot;String&amp;quot; if the user wants&lt;br /&gt;
  ${If} $R6 = 0 ;FALSE&lt;br /&gt;
    IntOp $7 $7 - $3&lt;br /&gt;
  ${EndIf}&lt;br /&gt;
&lt;br /&gt;
  ;Record &amp;quot;RightMarkerSubString&amp;quot; last character position on &amp;quot;StartPos&amp;quot;&lt;br /&gt;
  StrCpy $5 $7&lt;br /&gt;
&lt;br /&gt;
  ;As the positionment is relative...&lt;br /&gt;
  IntOp $5 $5 - $4&lt;br /&gt;
&lt;br /&gt;
  ;Write the string and finish the job&lt;br /&gt;
  StrCpy $R0 $R0 $5 $4&lt;br /&gt;
  Goto +2&lt;br /&gt;
&lt;br /&gt;
  Done:&lt;br /&gt;
  StrCpy $R0 ``&lt;br /&gt;
&lt;br /&gt;
/*After this point:&lt;br /&gt;
  ------------------------------------------&lt;br /&gt;
  $R0 = ResultVar (output)*/&lt;br /&gt;
&lt;br /&gt;
  ;Return output to user&lt;br /&gt;
  Pop $8&lt;br /&gt;
  Pop $7&lt;br /&gt;
  Pop $6&lt;br /&gt;
  Pop $5&lt;br /&gt;
  Pop $4&lt;br /&gt;
  Pop $3&lt;br /&gt;
  Pop $2&lt;br /&gt;
  Pop $1&lt;br /&gt;
  Pop $0&lt;br /&gt;
  Pop $R6&lt;br /&gt;
  Pop $R5&lt;br /&gt;
  Pop $R4&lt;br /&gt;
  Pop $R3&lt;br /&gt;
  Pop $R2&lt;br /&gt;
  Pop $R1&lt;br /&gt;
  Exch $R0&lt;br /&gt;
FunctionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
Author: Diego Pedroso ([[User:deguix|deguix]])&amp;lt;br&amp;gt;&lt;br /&gt;
Based on [[Sort String 3]] function.&lt;br /&gt;
&lt;br /&gt;
[[Category:String Functions]]&lt;/div&gt;</summary>
		<author><name>Deguix</name></author>
	</entry>
</feed>