Click here to Skip to main content
15,887,302 members
Articles / Programming Languages / C#

LyricsFetcher - The Easiest Way to Find Lyrics for your Songs

Rate me:
Please Sign up or sign in to vote.
4.93/5 (82 votes)
29 Oct 2009GPL325 min read 201.3K   2.4K   184  
An article describing the development of a non-trivial C#/.NET application to fetch lyrics for songs.
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="imageList32.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <data name="imageList32.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADK
        JwAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
        AwABIAMAAQEBAAEgBgABQP8A/wA8AAECAwEBMAIBAUoBRQICAYoBQQICAbgBNQICAdIBJgICAeMBNAIC
        AdMBQQICAbsBRgICAY4BMgIBAU8BAwIBAQNUAAEFAgEBBQEtAgIBQgFBAgUBZwFMAQoBCQF6AUcCBwFx
        ATgCAwFVARoCAQEi/wBdAAEUAgEBGQFGAgIBlgEMAgIB+QMCAf8DAgH/AQIBBwENAf8BAgEZASwB/wEC
        ASEBOwH/AQIBGwEvAf8BAgEJAQ8B/wMCAf8DAgH/AQYCAgH9AUYCAgGhARoCAQEiRAABLwIBAUgBagER
        AQ0BvwGgAToBLwH/AbMBWAFMAf8BwwFwAWMB/wHKAXsBbAH/AcYBdQFmAf8BuwFlAVgB/wGnAUcBPAH/
        AZEBJwEgAeoBSgEEAQMBgwEKAgEBDP8ATQABRAICAYMDAgH/AwIB/wECASkBQwH/AQIBYwGlAf8BAgGN
        AfQB/wECAZoC/wECAZcC/wECAZYC/wECAZUC/wECAZUC/wECAYkB9wH/AQIBYgGuAf8BAgEtAU4B/wMC
        Af8DAgH/AUUCAgGTAQMCAQEDNAABGAIBAR8BdwEbARUB0QG2AVcBSwH/AeIBmQGKAv8ByAG3Av8BygG5
        Av8ByAG3Av8BxwG2Av8ByAG2Av8ByQG3Av8BzAG6Af8B8wG2AaYB/wHKAX8BdAH/AawBQQE0Af8BQgED
        AQIBcP8AQQABDgIBAREBNAICAdEDAgH/AQIBKwFGAf8BAgGIAeEB/wECAaAC/wECAZoC/wEuAZMB1wH/
        AXUBjgGaAf8BAgGVAv8BAgGUAv8BAgGTAv8BAgGSAv8BAgGRAv8BAgGSAv8BAgGUAv8BAgGDAe0B/wEC
        ATABVAH/AwIB/wEsAgIB3QEXAgEBHiwAATICAQFNAasBRAE4Af8B2wGQAYIC/wHNAbsC/wHGAbUC/wHD
        AbIC/wHDAbIC/wHDAbIC/wHDAbIC/wHDAbIC/wHCAbEC/wHFAbUC/wHUAccC/wHoAd8B/wH3Ad8B2gH/
        AbYBYwFZAf8BaAEQAQ4Buv8AOQABFQIBARsBHwICAesDAgH/AQIBbQGqAf8BAgGnAv8BAgGfAv8BAgGd
        Av8BAgGbAv8BtAGHAWEB/wH0AYgBMQH/AdEBkAFTAf8BGgGXAeoB/wECAZUC/wECAZUC/wECAZQC/wEC
        AZMC/wECAZIC/wECAZEC/wECAZYC/wECAWoBvAH/AQIBAwECAf8BFAICAfIBGwIBASQkAAEyAgEBTgGt
        AUgBPAH/AfMBsgGiAv8ByAG3Av8BwwGyAv8BwwGyAv8BwwGyAv8BxQG2Av8BxgG5Av8BxgG5Av8BxQG3
        Av8BxwG3Av8B0gHFAv8B4AHXAv8B7AHnAv8B+wH6Bf8BwwGAAXcB/wFuARMBEAHF/wAxAAEIAgEBCQEn
        AgIB4gECAQQBBQH/AQIBiwHZAf8BAgGnAv8BAgGiAv8BAgGhAv8BAgGgAv8BAgGeAv8B0QGEAUgB/wHq
        AYkBOgH/Ae0BkAE+Af8B7gGZAUQB/wF2AZoBqQH/AUABlQHSAf8BHAGUAecB/wECAZQC/wECAZUC/wEC
        AZQC/wECAZMC/wECAZQC/wECAYMB5wH/AQIBBwEMAf8BFwICAe8BEAIBARQcAAEaAgEBIwGrAUMBOAH/
        AfQBtAGjAv8BxgG1Av8BwwGyAv8BwwGyAv8BwwG0Av8BxAG2Af8BlwGiAXQB/wFUAY0BSgH/AUkBigFD
        Af8BbwGWAVsB/wHYAcQBqwL/AeYB4gL/AewB5wL/AvgC/wL+Cf8BvwF3AW4B/wFZAQgBBwGd/wAtAAFD
        AgIBtwMCAf8BAgGOAdgB/wECAaoC/wECAaYC/wECAaUC/wECAaQC/wEgAZwB5AH/AYMBpwG9Af8B6QGB
        ATIB/wHpAYsBOwH/AeoBkgFBAf8B7gGaAUUB/wH2AZ4BQgH/AfIBwwGPAf8B4AHcAdsB/wGhAa4BtQH/
        ATYBkwHSAf8BAgGWAv8BAgGWAv8BAgGTAv8BAgGVAv8BAgGFAegB/wMCAf8BOQICAcscAAGBASABGgHW
        Ad0BkwGEAv8ByAG3Av8BwwGyAv8BwwGyAv8BwwGzAf8B5wG7AaMB/wEJAXkBHAH/AQIBggEgAf8BEgGZ
        ATYB/wEUAZwBOQH/AQsBkQEuAf8BAgFyAQsB/wFlAaMBaAb/Av4G/wL+Av8C+gL/AfMB7gH/Aa4BTgFC
        Af8BKgIBAT3/ACUAATQCAQFUAwIB/wECAW4BoQH/AQIBrwL/AQIBqgL/AQIBqQL/AQIBpwL/AV8BmwG8
        Af8B3gHVAdAC/wH8AfcB/wHkAX8BLQH/AekBiQE8Af8B6gGQAUEB/wHuAZkBRgH/Ae8BoAFLAf8B8wGl
        AUkB/wH4AcABeAP/Af4B/wHtAegB5QH/AYQBnwGwAf8BBgGWAfgB/wECAZcC/wECAZYC/wECAZgC/wEC
        AW8BvAH/AwIB/wE9AgEBaxQAATYCAQFVAbYBXAFQAv8BzAG7Av8BwwGyAv8BwwGyAv8BwwGyAv8BxwG6
        Af8BGQF9ASUB/wESAZYBNAH/ASUBsQFOAf8BIwGuAUwB/wEjAa0BSwH/ASMBrwFMAf8BJAGuAUwB/wEC
        AXkBEwH/AYoBvwGUBv8C/gL/AvkC/wHsAecC/wHjAdoB/wHjAacBmwH/AYIBHwEaAdf/ACUAASgCAgHh
        AQIBKwE9Af8BAgG4Av8BAgGuAv8BAgGtAv8BAgGrAv8BfQGfAbAB/wH2AfEB7gX/AfkB5gHYAf8B5AF+
        AS4B/wHpAYoBPAH/AesBkQE/Af8B7AGYAUUB/wHwAZ8BSgH/AfIBpgFPAf8B8wGrAVAB/wH2AbUBXQL/
        AfMB4AX/AaQBqgGvAf8BCQGYAfYB/wECAZkC/wECAZgC/wECAZ0C/wECATMBVAH/ARQCAgHyAQMCAQED
        EAABcgEXARMBzQHnAaABkQL/AcUBtAL/AcMBsgL/AcMBsgL/AcMBswH/AdcBtgGZAf8BAgF5ARUB/wEl
        AbEBTwH/ASMBrQFLAf8BIwGtAUsB/wEjAa0BSwH/ASMBrQFLAf8BIwGtAUsB/wEcAaUBQwH/AQ4BfQEh
        Bv8C+QL/AewB5wL/Ad8B1gL/AdABxAL/Ac0BvQH/AbQBUQFHAf8BJAIBATL/AB0AATMCAQFQAwIB/wEC
        AZgB2QH/AQIBswL/AQIBsAL/AQIBsAL/AWEBnwG8Af8B9gHwAe4J/wH2AdUBvgH/AeUBfgEuAf8B6AGI
        ATsB/wHpAY8BPgH/Ae0BlgFEAf8B7wGdAUkB/wHwAaQBTQH/AfQBqwFRAf8B9AGvAVMB/wH2AbIBUQH/
        AfwB4AG3Bf8BkgGkAa8B/wECAZsC/wECAZsC/wECAZoC/wECAY4B7QH/AwIB/wE8AgEBZwwAAQ4CAQER
        AagBRAE5Av8BygG5Av8BwwGyAv8BwwGyAv8BwwGyAv8BwwG0Af8BzwGzAZQB/wECAXwBFwH/ASUBsQFO
        Af8BIwGtAUsB/wEjAa0BSwH/ASMBrQFLAf8BIwGtAUsB/wEjAa0BSwH/ASQBrwFMAf8BAgFtAQkG/wHs
        AecC/wHfAdYC/wHQAcQC/wHFAbYC/wHLAb4B/wGxAYMBaQH/AVQBDwEHAasBJAIBATP/ABkAAUMCAgGz
        AQIBJwE0Af8BAgG/Av8BAgG2Av8BAgG1Av8BIAGpAeIB/wHdAdQBzw3/AfMBxAGjAf8B5AF9AS8B/wHm
        AYYBOgH/AeoBjQE9Af8B7AGUAUMB/wHuAZsBRwH/AfABoQFLAf8B8QGnAU8B/wH0AawBUwH/AfQBrwFU
        Af8B9QGwAU8B/wH5AcsBigH/AfYB8gHxAf8BTAGYAccB/wECAZ4C/wECAZ0C/wECAaIC/wECAS8BTQH/
        ATsCAgHKDAABNAICAVABvQFmAVkC/wHJAbgC/wHDAbIC/wHDAbIC/wHDAbIC/wHDAbIC/wHFAbcB/wED
        AXgBGwH/ARoBoQFAAf8BJAGvAU0B/wEjAa0BSwH/ASIBrAFKAf8BIgGsAUoB/wEjAa0BSwH/AR4BqAFF
        Af8BDwF+ASQC/wH4AfoC/wHeAdUC/wHQAcQC/wHGAbkB/wG8Aa4BiQH/AQoBeAEbAf8BAgF+ARkB/wEI
        AYsBKAH/AQsBhwEkAf8BDAF3ARgB+gFAAQQBAgFy/wARAAEKAgIB+gECAXABlgH/AQIBvQL/AQIBuQL/
        AQIBuAL/AYYBpwG2Ef8B7gGyAYgB/wHkAX0BLwH/AecBgwE3Af8B6QGLAT0B/wHrAZABQQH/Ae0BmAFF
        Af8B7wGcAUkB/wHxAaMBSwH/AfMBqAFOAf8B9AGrAVIB/wHzAa0BUwH/AfQBrAFPAf8B+QG5AWkB/wG9
        AbQBqAH/AQIBoAH9Af8BAgGgAv8BAgGhAv8BAgFtAa0B/wMCAf8BCAIBAQkIAAFIAgUBeQHNAX4BcAL/
        AccBtgL/AcMBsgL/AcMBsgL/AcMBsgL/AcEBsAL/AdIBxwH/AcQB4gHNAf8BAgFyAQwB/wETAZgBNwH/
        ASQBrwFNAf8BJwGzAVAB/wEnAbEBUAH/ASYBsAFPAf8BHAGlAUIB/wEpAYoBOwL/AfoB/QL/Ac8BwgL/
        AcUBtQH/AcQBsAGNAf8BAgFzAQ0B/wEaAaIBQAH/ASUBsQFOAf8BJAGvAU0B/wEkAbABTgH/ASABqAFG
        Af8BCAGFASIB/wFFAQkBAgGK/wAJAAEcAgEBJgMCAf8BAgGlAd0B/wECAb4C/wECAbwC/wEQAbQB8AH/
        AdkBzwHLEf8B6gGfAW8B/wHjAXoBLgH/AeYBggE1Af8B6AGIATsB/wHqAY4BPwH/AewBlAFDAf8B7gGa
        AUUB/wHwAZ8BSgH/AfEBoQFMAf8B8gGmAU4B/wHzAagBTgH/AfMBqAFQAf8B8gGmAU0B/wH2AaIBSAH/
        AWIBoQG3Af8BAgGjAv8BAgGiAv8BAgGaAfUB/wMCAf8BKgIBAT4IAAFWAQsBCgGNAdQBhwF6Av8BxwG2
        Av8BwwGyAv8BwwGyAv8BwgGxAv8BxAGzAv8B4QHZBf8BtAGUAYQB/wE5ATwBDgHbAQIBgAEZAf8BBgGB
        AR0B/wECAXIBEwH/ASoBsgFTAf8BHwGnAUcB/wFAAZYBUAL/Af4D/wHAAa8C/wHGAboB/wEwAYIBMwH/
        ARQBnAE6Af8BIwGuAUwB/wEjAa0BSwH/ASMBrQFLAf8BIwGtAUsB/wEjAa0BSwH/ASIBrAFLAf8BAgF6
        ARIB/wEQAgEBE/8ABQABMQICAUoDAgH/AQIByQL/AQIBwAL/AQIBvwL/ATwBqQHPAf8B9QHvAe0R/wHl
        AYsBUgH/AeMBfwE2Af8B5AGAATMB/wHnAYUBOQH/AekBiwE7Af8B6wGQAUAB/wHrAZQBQwH/Ae4BmgFF
        Af8B7gGdAUkB/wHwAaABSwH/Ae8BoAFMAf8B8QGiAUwB/wHvAaEBSwH/AfABnwFJAf8B+gGbAT4B/wGF
        AZwBkwH/AQIBpgL/AQIBrAL/AQIBCQEOAf8BOwIBAWQIAAFQAggBhwHTAYQBdwL/AccBtgL/AcMBsgL/
        AcIBsQL/AcUBtQL/AdIBxAL/AekB4wX/AdMBmQGVAf8BSgIDAYEIAAEfAVkBEgHrATcBvwFjAf8BIAGl
        AUYB/wFXAaMBZgL/AfcB9gL/Ab8BrQL/AccBuwH/AQoBeQEbAf8BJgGwAVAB/wEkAa8BTAH/ASIBrAFK
        Af8BIwGtAUsB/wEjAa0BSwH/ASMBrQFLAf8BJAGwAU0B/wEEAYIBIQH/ATECAgFL/wAFAAE6AgMBWwEC
        AQkBDgH/AQIBzAL/AQIBwwL/AQIBwgL/AVUBpQG/Ff8B4QF3ATMB/wHmAYUBQgH/AeMBfQEwAf8B5gGB
        ATUB/wHoAYcBOgH/AegBjAE9Af8B6wGRAUAB/wHrAZUBQwH/Ae4BmAFEAf8B7QGbAUcB/wHvAZwBSAH/
        Ae8BnAFIAf8B7QGbAUYB/wHuAZkBRgH/Ae0BlgFEAf8B8gGRAToB/wG7AZIBZQH/AQkBrAL/AQIBGwEs
        Af8BRQICAYoIAAFCAgQBbQHJAXYBaQL/AcgBtgL/AcIBsQL/AcUBtQL/AdIBxQL/AeAB1wL/Ae0B6AX/
        AfUC7AH/AaEBNgEqAfwBJgIBATcEAAECAX0BFwH/AUYB0AF5Af8BHQGgAUMB/wFyAbMBgQL/AeUB4AL/
        AcABrgL/AccBugH/ATYBhAE3Af8BHgGjAUQB/wEtAbkBWAH/ASUBsAFPAf8BIgGsAUoB/wEjAa0BSwH/
        ASMBrQFLAf8BJAGvAU0B/wECAYEBHgH/ASwCAgFB/wAFAAE6AgMBWwECAQ0BEgH/AQIBzwL/AQIBxgL/
        AQIBxQL/AWYBqQG/Ff8B3AFkARoB/wHnAY4BTgH/AeIBeAEuAf8B5QGAATQB/wHlAYMBNwH/AegBiAE6
        Af8B6AGMAT0B/wHrAZABQAH/AeoBkQFCAf8B7AGVAUMB/wHtAZYBRAH/Ae0BlgFEAf8B7QGVAUQB/wHs
        AZIBQQH/AesBkQE/Af8B6gGNAT4B/wHsAYgBNwH/Ad8BiwFGAf8BLgEwAS0B/wMCAf8BIQIBAS0EAAEo
        AgEBOQG0AVgBTAL/AcoBuQL/AcUBtQL/AdIBxQL/AeAB1wL/AewB5wL/AfgB9wL/Av4F/wHoAdIB0AH/
        Aa0BTQFDAf8BmAErASMB6wECAXsBFgH/AVIB3gGGAf8BGgGcAT8B/wGHAb0BkQL/AcYBuAL/AcIBsQL/
        AcQBtAH/Ac4BswGTAf8BAgFyAQwB/wEoAa8BUgH/ATABuwFcAf8BKAGzAVIB/wEjAa4BTAH/ASMBrgFL
        Af8BJAGwAU0B/wECAX0BGAH/ARoCAQEi/wAFAAEyAgIBTQECAQcBCwH/AQIB0wL/AQIByQL/AQIByQL/
        AVsBqAG+Ef8B+wHuAeYB/wHbAWIBGgH/AegBlAFWAf8B4AF0ASoB/wHiAXwBMQH/AeUBgQE0Af8B5QGD
        ATcB/wHoAYcBOgH/AekBiwE7Af8B6gGNAT4B/wHpAY8BPwH/AesBkAFAAf8B6wGQAUAB/wHrAY4BPgH/
        AeoBjgE/Af8B6QGMAT0B/wHoAYgBOwH/AecBhAE4Af8B5gGBATQB/wHxAYIBMwH/AQsBAwECAf8BQgIG
        AW0IAAGjAT0BMAH+AfwBwwGyAv8B0wHGAv8B4AHXAv8B7AHnAv8C+AL/Av4R/wHhAeYB3QH/AQIBegEY
        Af8BXAHmAZQB/wEVAZgBPAH/AZ8BpAF4Av8BxAG1Av8BwwGyAv8BwwGyAv8BxgG4Af8BvwGvAYsB/wED
        AXYBGAH/AQQBiAEmAf8BFgGXATUB/wEQAY4BLgH/ARgBmQE5Af8BJQGxAU8B/wECAXcBEgH/AQgCAQEJ
        /wAFAAEfAgEBKwMCAf8BAgHSAv8BAgHMAv8BAgHLAv8BQQGvAcwB/wH5AfQB8g3/AfUB2QHKAf8B2QFe
        ARcB/wHrAZ0BYgH/Ad8BbwEoAf8B4gF2AS4B/wHiAXwBMQH/AeUBgAE0Af8B5gGCATcB/wHnAYQBOQH/
        AegBiAE6Af8B6QGKAToB/wHpAYsBPAH/AekBiwE8Af8B6QGKATwB/wHoAYgBOwH/AecBhgE4Af8B5QGD
        ATYB/wHlAYABNAH/AeoBfgEuAf8B4AF3AS4B/wEEAgIB/wEpAgEBOwgAAVkBCQEHAaEB1AGOAYIC/wHm
        Ad0C/wHsAecC/wL4Av8C/gb/Av4C/wH5AfgC/wHxAe4C/wH3AfYB/wHPAeIBzwH/AQYBhAElAf8BZgHx
        AaEB/wENAY8BMQH/AboBrAGGAv8BxAG1Av8BwwGyAv8BwwGyAv8BwwGyAv8BxQG2Av8BxQG4Af8BfAFP
        AS0B/wE9AQMBAQFoAUABIAEGAb0BFAGUATMB/wElAbABTQH/AQIBdgEQAf//AA0AAQQCAgH+AQIBqgHR
        Af8BAgHRAv8BAgHOAv8BGAHAAegB/wHgAdYB1A3/AfEBxAGtAf8B2wFkASAB/wHrAZ4BZQH/Ad4BawEl
        Af8B3wFzASsB/wHiAXcBLgH/AeMBewExAf8B5AF/ATMB/wHlAYEBNQH/AeYBggE1Af8B5QGCATgB/wHn
        AYMBOAH/AecBhQE4Af8B5gGDATYB/wHlAYEBNQH/AeUBgQE0Af8B6wF9AS0B/wHeAX4BNwH/AXIBiAGC
        Af8BBgICAf8BPgIBAWwMAAEYAgEBHwGsAUUBOgL/Ae0B6AL/AvkC/wL+Bv8C/gL/AvkC/wHsAecC/wHe
        AdUC/wHQAcYB/wGzAakBgQH/ARMBlAE4Af8BdAH7Aa8B/wEHAYcBKQH/AdIBtAGVAv8BwwG0Av8BwwGy
        Av8BwwGyAv8BwwGyAv8BygG5Af8BywF8AW4B/wFZAQgBBwGdBAABRgEPAQQBoAEcAaABPQH/ASABqQFH
        Af8BIwFPAQ0B5v8ADQABQQICAbkBAgFxAYYB/wECAdcC/wECAdEC/wECAdAC/wGdAbEBtg3/AesBrAGN
        Af8B3gFzATQB/wHoAZgBXwH/AdwBZwEiAf8B3wFvASgB/wHfAXEBKwH/AeABdgEsAf8B4QF6AS4B/wHj
        AXsBMAH/AeQBfQEzAf8B5AF+ATIB/wHkAX4BMQH/AeQBfgEwAf8B6QGSAUwB/wHuAYwBQgH/AdoBgQE8
        Af8BaQGbAZ8B/wECAbsC/wECAXUBowH/ATcCAgHQFAABUwEHAQYBkQG/AXgBbwr/Av4C/wL5Av8B7AHn
        Av8B3wHWAv8B0AHEAv8BxQG3Af8BmgGhAXIB/wEmAaMBSwH/AYgB/wG9Af8BAgF8ARoB/wHrAbsBpQL/
        AcMBswL/AcMBsgL/AcMBsgL/AcYBtQH/Ae8BrAGdAf8BpgE5ATEB+AEJAgEBCgQAAT8BIQEHAcABIgGp
        AUkB/wEfAacBRgH/ATkBKAEGAcv/AA0AATcCAQFaAQIBGgEeAf8BAgHfAv8BAgHUAv8BAgHTAv8BMwG3
        AdUB/wHqAeAB3gn/AeUBlAFxAf8B4gGCAUcB/wHmAY0BUwH/AdsBYgEfAf8B3AFoASUB/wHfAW4BJgH/
        AeABcQEqAf8B4AFyASoB/wHgAXQBKgH/AeABdAEpAf8B6AGNAUkB/wHsAaUBZwH/AeoBlwFUAf8B5gGB
        ATwB/wGHAZUBiQH/AQIBvwL/AQIBvQL/AQIBxAL/AQIBKQE3Af8BPwIBAXEYAAGDAR4BGQHWAc0BmAGT
        Bv8B+gH5Av8B7AHnAv8B3wHWAv8B0AHEAv8BwwGyAv8BxQG2Af8BgQGaAWYB/wE6AbEBXwH/AZwB/wHL
        Af8BAgFuAQcC/wHGAbkC/wHFAbYC/wHDAbIC/wHGAbUB/wH6Ab0BqwH/AawBSAE7Af8BLgIBAUYIAAEr
        AUwBEAHfASwBswFVAf8BHQGkAUEB/wFFAREBAwGt/wARAAEcAgIB7QECAaEBvgH/AQIB2gL/AQIB1gL/
        AQIB1gL/AX8BqgGyAf8B/gH6AfkF/wHeAXwBUAH/AecBkgFcAf8B5wGTAVsB/wHZAV4BGwH/AdsBYwEg
        Af8B2wFkAR8B/wHcAWUBHgH/AeMBgAE9Af8B7wGzAXoB/wHwAbUBfQH/AecBjQFKAf8B4wF/ATwB/wH5
        Ac4BtAH/Aa4BtgG5Af8BBAG+AfwB/wECAcAC/wECAcAC/wECAZ4B1QH/AQ8CAgH2AQcCAQEHGAABCQIB
        AQoBigElAR0B4gHKAY4BhwL/AfkB9AL/AeEB2AL/AdABxAL/AcMBsgL/AcIBsQL/AcYBuAH/AWQBkQFS
        Af8BVQHBAXYB/wGxAf8B1QH/ASwBmwFHAf8BIgF9AScB/wGwAaoBgQL/AcUBtQH/AfwBrAGhAf8BrgFC
        ATwB/wE7AgIBXgwAAQIBfQEXAf8BNQHBAWQB/wEcAZ4BPQH/AUYBCwECAZX/ABEAAToCAQFhAQIBGwEg
        Af8BAgHiAv8BAgHZAv8BAgHYAv8BAwHTAfoB/wGcAawBsAX/AdkBZAExAf8B6wGlAXEB/wHnAZQBXgH/
        AdYBUQEQAf8B4QF7AT0B/wHvAbABegH/AfkB2AGmAf8B7wGwAXoB/wHeAW8BKAH/AeIBgAFEAf8B9AHQ
        AbkF/wHDAb8BvgH/ARoBuQHoAf8BAgHEAv8BAgHDAv8BAgHMAv8BAgEnATQB/wFBAgEBeCAAAQUCAQEF
        AWsBEgEOAcEBtgFcAVEB/wHwAboBrgL/Ac0BvAL/AcYBtQL/AcQBswL/AcYBuQH/AU0BiQFDAf8BdgHR
        AZIB/wHDAf8B2gH/AcgB/wHiAf8BdwHOAZAB/wEcAZIBOgH/AQIBcAEKAf8BBQFoAQ4B/wE6AUUBEgHm
        AUUBDwEDAaMBRgEPAQQBoAFEARUBBAGvATEBOgELAdYBCwGBASMB/wE6AcYBagH/ARgBmgE5Af8BQQED
        AQEBeP8AFQABPAICAcUBAgFqAXsB/wECAeUC/wECAdsC/wECAdkC/wEEAdQB+QH/AYcBsgG7Af8B1QFK
        ARIB/wHvAbUBgQH/Af0B5gG2Av8B8QHDAf8B+QHbAakB/wHmAY8BVQH/AdcBVAEPAf8B4gGEAVIB/wH2
        AdkBygX/Af0C+gH/AaoBsQGzAf8BGQG8AegB/wECAcgC/wECAccC/wECAcwC/wECAXMBkwH/ATECAgHX
        LAABOgECAQEBXQGQASoBIwHrAbwBYAFTAf8B3QGRAYMB/wH1AbYBpgL/Ac8BwgH/ATMBgwE0Af8BlAHc
        AawB/wHbAf8B6gH/AdoB/wHpAf8BzwH/AeMB/wG9Af8B2QH/AaQB/wHMAf8BfAHqAacB/wFaAdUBhgH/
        AUcByQF3Af8BOwG+AWgB/wE5AbwBZQH/AT0BwwFsAf8BQwHNAXYB/wE4AcQBZwH/ARQBkwEzAf8BOAEC
        AQEBXv8AFQABDwIBARIBHAICAe0BAgGbAbIB/wECAeQC/wECAdwC/wECAdsC/wECAd0C/wHZATcBAgH/
        Ae8BtgGEAf8B8QG7AYgB/wHgAWsBLwH/AdgBSgEJAf8B6QGQAWgC/wHrAeEF/wH1AfAB7wH/AcoCwQH/
        AVwBrAG+Af8BAwHKAfsB/wECAcwC/wECAcsC/wECAc8C/wECAZsBxAH/AQ8CAgH3ARcCAQEeNAABMwIB
        AU8BXAEKAQgBqAGUAS4BJgHmAbEBPgE4Af8BCwFqARIB/wG3Ae4BygH/AfIB/wH3Af8B8wH/AfcB/wHY
        Af8B5gH/AbwB/wHVAf8BogH9AcUB/wGOAfkBugH/AX0B9QGuAf8BaQHwAaMB/wFeAeYBlgH/AVQB3gGJ
        Af8BSgHUAX4B/wFBAcoBcgH/AToBxAFpAf8BEAGNASwB/wEtAgEBQ/8AGQABGwIBASQBFAICAfIBAgGY
        Aa0B/wECAegC/wECAd4C/wEGAdkB+AH/Ad8BNQECAf8B1gE6AQIB/wHMAUYBDgH/AYEBhAFzAf8BhgGu
        AbIB/wGZAb8BxwH/AZEBuAHBAf8BagGuAbwB/wE7AbYBzwH/AQYBzQH3Af8BAgHSAv8BAgHQAv8BAgHP
        Av8BAgHVAv8BAgGbAcEB/wEMAgIB+QElAgEBNEgAAREBaAEMAfUBzwH+AeEB/wHuAf8B+AH/AesB/wHz
        Af8B1QH/AeQB/wG6Af8B1AH/AZ8B/QHFAf8BjAH2AbgB/wF7AfIBrAH/AWcB7QGgAf8BWwHkAZMB/wFT
        AdoBhwH/AUoB0wF9Af8BQQHKAXEB/wE6AcQBaAH/AQoBhgEkAf8BHgIBASj/AB0AARgCAQEfASkCAgHg
        AQIBZwFzAf8BAgHoAv8BAgHoAv8BZwGOAYQB/wFTAZ8BnQH/AQIB3wL/AQIB4AL/AQIB3QL/AQIB2wL/
        AQIB2gL/AQIB2QL/AQIB1gL/AQIB1QL/AQIB1AL/AQIB1gL/AQIB3AL/AQIBbQGDAf8BHwICAesBHwIB
        AStMAAFGARQBBgGmAREBhwEoAf8BhgHPAZkB/wHWAf8B6AH/AcwB/wHjAf8BswH/AdMB/wGcAf4BwwH/
        AYgB9wG3Af8BdgHxAakB/wFlAesBnQH/AVkB4QGRAf8BUgHaAYUB/wFJAdEBewH/AUABygFxAf8BOgHG
        AWoB/wEFAYEBHQH/AQ0CAQEQ/wAhAAEEAgEBBAFGAgIBmgECARYBGAH/AQIBmgGtAf8BAgHwAv8BAgHq
        Av8BAgHjAv8BAgHgAv8BAgHeAv8BAgHdAv8BAgHcAv8BAgHbAv8BAgHbAv8BAgHdAv8BAgHjAv8BAgGa
        AbcB/wECAR0BIgH/AUUCAgGpAQoCAQELVAABKgIBAT0BQQEfAQUBuQECAXwBEwH/AS8BngFIAf8BVAG+
        AXEB/wFpAdYBiwH/AW4B4QGZAf8BagHrAZ8B/wFhAeoBmgH/AV4B6AGXAf8BUAHYAYMB/wFDAcoBdAH/
        ATEBuAFdAf8BHgGfAT8B/wEIAYABHAH9/wAtAAEfAgEBKgFEAgIBrgECAQ8BEAH/AQIBZgFyAf8BAgGo
        AbwB/wECAdMB7gH/AQIB7QL/AQIB6gL/AQIB6wL/AQIB0gHzAf8BAgGlAb8B/wECAWkBegH/AQIBFQEY
        Af8BQgICAbYBJQIBATRkAAEFAgEBBQEyAgEBTwFEAQUBAgGHAUMBEgECAbMBMQE2AQIB1wEXAU8BAgHv
        AQgBYAECAfsBAgFpAQIB/wEIAWABAwH7ARkBUgEFAe4BNwEmAQIBzAFFAQgBAgGSARoCAQEj/wA1AAEM
        AgEBDgE5AgEBXwFGAgIBoAE3AgIBzwEfAgIB6gERAgIB9QEfAgIB6wE0AgIB0QFGAgIBpgE7AgEBZQEP
        AgEBEv8A/wD/AK8AAUIBTQE+BwABPgMAASgDAAGAAwABIAMAAQEBAAEBBgABAhYAA/8BAAj/CAAB/wHA
        AQcC/wHAAX8B/wgAAf8BAAEBAv8BAAEPAf8IAAH+AgABfwH8AQABBwH/CAAB+AIAAT8B+AEAAQMB/wgA
        AfACAAEfAfABAAEBAf8IAAHgAgABDwHgAgAB/wgAAeACAAEPAeACAAF/CAABwAIAAQcBwAIAAX8IAAHA
        AgABAwHAAgABPwgAAYACAAEDAYACAAEfCAABgAIAAQMBgAIAAQcIAAGAAgABAQGAAgABAwsAAQEBgAIA
        AQELAAEBAYABDAEAAQELAAEBAYABBAEAAQEMAAGAAgABAQwAAcACAAEBDAABwAIAAQMIAAGAAgABAQHA
        AgABQwgAAYACAAEDAeACAAFDCAABgAIAAQMB8AIAAcMIAAHAAgABAwHwAQABAQHDCAABwAIAAQcB+AIA
        AQMIAAHgAgABDwH+AgABAwgAAeACAAEPAf8BgAEAAQMIAAHwAgABHwH/AfgBAAEDCAAB+AIAAT8B/wH4
        AQABAwgAAfwCAAF/Af8B/AEAAQcIAAH/AQABAQP/AQABBwgAAf8BwAEHBf8IAAj/CAAL
</value>
  </data>
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)


Written By
Team Leader
Australia Australia
Phillip has been playing with computers since the Apple II was the hottest home computer available. He learned the fine art of C programming and Guru meditation on the Amiga.

C# and Python are his languages of choice. Smalltalk is his mentor for simplicity and beauty. C++ is to programming what drills are to visits to the dentist.

He worked for longer than he cares to remember as Lead Programmer and System Architect of the Objective document management system. (www.objective.com)

He has lived for 10 years in northern Mozambique, teaching in villages.

He has developed high volume trading software, low volume FX trading software, and is currently working for Atlassian on HipChat.

Comments and Discussions