| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | #!perl | 
| 2 |  |  |  |  |  |  | package Acme::Tango; | 
| 3 |  |  |  |  |  |  | BEGIN { | 
| 4 | 1 |  |  | 1 |  | 1146 | $Acme::Tango::VERSION = '0.07'; | 
| 5 |  |  |  |  |  |  | } | 
| 6 |  |  |  |  |  |  |  | 
| 7 | 1 |  |  | 1 |  | 7 | use strict; | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 31 |  | 
| 8 | 1 |  |  | 1 |  | 4 | use warnings; | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 50 |  | 
| 9 | 1 |  |  | 1 |  | 5 | use Carp qw(croak); | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 79 |  | 
| 10 | 1 |  |  | 1 |  | 833 | use Convert::Color; | 
|  | 1 |  |  |  |  | 21461 |  | 
|  | 1 |  |  |  |  | 44 |  | 
| 11 | 1 |  |  | 1 |  | 870 | use Convert::Color::RGB8; | 
|  | 1 |  |  |  |  | 1289 |  | 
|  | 1 |  |  |  |  | 27 |  | 
| 12 | 1 |  |  | 1 |  | 1406 | use Convert::Color::HSV; | 
|  | 1 |  |  |  |  | 2369 |  | 
|  | 1 |  |  |  |  | 591 |  | 
| 13 |  |  |  |  |  |  |  | 
| 14 |  |  |  |  |  |  | our %flavours = ( | 
| 15 |  |  |  |  |  |  | apple        => 105, | 
| 16 |  |  |  |  |  |  | blackcurrant => 300, | 
| 17 |  |  |  |  |  |  | cherry       => 0, | 
| 18 |  |  |  |  |  |  | lemon        => 60, | 
| 19 |  |  |  |  |  |  | orange       => 40 | 
| 20 |  |  |  |  |  |  | ); | 
| 21 |  |  |  |  |  |  |  | 
| 22 |  |  |  |  |  |  | sub drink { | 
| 23 | 27 |  |  | 27 | 1 | 9108 | my ( $hex, $flavour ) = @_; | 
| 24 | 27 |  | 50 |  |  | 60 | $flavour ||= 'orange'; | 
| 25 |  |  |  |  |  |  |  | 
| 26 |  |  |  |  |  |  | # Pick the transformation hue | 
| 27 | 27 |  |  |  |  | 44 | my $new_hue = $flavours{$flavour}; | 
| 28 | 27 | 50 |  |  |  | 53 | croak "Unknown flavour [$flavour]" unless defined $new_hue; | 
| 29 |  |  |  |  |  |  |  | 
| 30 |  |  |  |  |  |  | # Sanity-check the incoming colour | 
| 31 | 27 | 100 |  |  |  | 65 | my $prefix = $hex =~ s/^#// ? '#' : ''; | 
| 32 | 27 | 50 |  |  |  | 99 | croak "Please provide a valid hex colour" | 
| 33 |  |  |  |  |  |  | unless $hex =~ m/^([0-9a-f]{3}|[0-9a-f]{6})$/i; | 
| 34 | 27 | 100 |  |  |  | 98 | $hex =~ s/(.)/$1$1/g if length($hex) == 3; | 
| 35 |  |  |  |  |  |  |  | 
| 36 |  |  |  |  |  |  | # Convert to HSV | 
| 37 | 27 |  |  |  |  | 90 | my ( $old_hue, $s, $v ) = Convert::Color::RGB8->new( $hex )->as_hsv->hsv; | 
| 38 |  |  |  |  |  |  |  | 
| 39 |  |  |  |  |  |  | # Back to RGB | 
| 40 | 27 |  |  |  |  | 14935 | my $new_color = Convert::Color::HSV->new( $new_hue, $s, $v )->as_rgb8->hex; | 
| 41 |  |  |  |  |  |  |  | 
| 42 |  |  |  |  |  |  | # Back to the user! | 
| 43 | 27 |  |  |  |  | 3179 | return uc($prefix . $new_color); | 
| 44 |  |  |  |  |  |  | } | 
| 45 |  |  |  |  |  |  |  | 
| 46 |  |  |  |  |  |  | 1; | 
| 47 |  |  |  |  |  |  |  | 
| 48 |  |  |  |  |  |  | =head1 NAME | 
| 49 |  |  |  |  |  |  |  | 
| 50 |  |  |  |  |  |  | Acme::Tango - Turn colours orange | 
| 51 |  |  |  |  |  |  |  | 
| 52 |  |  |  |  |  |  | =head1 VERSION | 
| 53 |  |  |  |  |  |  |  | 
| 54 |  |  |  |  |  |  | version 0.07 | 
| 55 |  |  |  |  |  |  |  | 
| 56 |  |  |  |  |  |  | =head1 SYNOPSIS | 
| 57 |  |  |  |  |  |  |  | 
| 58 |  |  |  |  |  |  | use Acme::Tango; | 
| 59 |  |  |  |  |  |  |  | 
| 60 |  |  |  |  |  |  | my $hex_string = Acme::Tango::drink('#00bbff'); | 
| 61 |  |  |  |  |  |  |  | 
| 62 |  |  |  |  |  |  | # But then also | 
| 63 |  |  |  |  |  |  |  | 
| 64 |  |  |  |  |  |  | my $hex_string = Acme::Tango::drink('#00bbcc', 'apple'); | 
| 65 |  |  |  |  |  |  |  | 
| 66 |  |  |  |  |  |  | =head1 METHODS | 
| 67 |  |  |  |  |  |  |  | 
| 68 |  |  |  |  |  |  | =head2 drink | 
| 69 |  |  |  |  |  |  |  | 
| 70 |  |  |  |  |  |  | Given a hex rgb colour string (like: "#aaff4f" or "44f567" or "#fab"), | 
| 71 |  |  |  |  |  |  | returns the hex string of the shade of orange with the same I | 
| 72 |  |  |  |  |  |  | and I values. Unless you specifically specify that Apple or Lemon | 
| 73 |  |  |  |  |  |  | tango are what you're after, by passing C or C as the | 
| 74 |  |  |  |  |  |  | second argument. See: | 
| 75 |  |  |  |  |  |  |  | 
| 76 |  |  |  |  |  |  | L | 
| 77 |  |  |  |  |  |  |  | 
| 78 |  |  |  |  |  |  | =head1 EXAMPLE | 
| 79 |  |  |  |  |  |  |  | 
| 80 |  |  |  |  |  |  | C should give you an HTML segment to look | 
| 81 |  |  |  |  |  |  | at. If you're reading this page in an HTML-compatible POD reader, you | 
| 82 |  |  |  |  |  |  | can see the results below: | 
| 83 |  |  |  |  |  |  |  | 
| 84 |  |  |  |  |  |  | =begin html | 
| 85 |  |  |  |  |  |  |  | 
| 86 |  |  |  |  |  |  |  
 
| 87 |  |  |  |  |  |  |  | Orange 
| 88 |  |  |  |  |  |  |  |  | 000000 | 000000 |  | 000033 | 332200 |  | 000066 | 664400 |  | 000099 | 996500 |  | 0000CC | CC8800 |  | 0000FF | FFAA00 |  | 003300 | 332200 |  | 003333 | 332200 |  | 003366 | 664400 |  | 003399 | 996500 |  | 0033CC | CC8800 |  | 0033FF | FFAA00 |  | 006600 | 664400 |  | 006633 | 664400 |  | 006666 | 664400 |  | 006699 | 996500 |  | 0066CC | CC8800 |  | 0066FF | FFAA00 |  | 009900 | 996500 |  | 009933 | 996500 |  | 009966 | 996500 |  | 009999 | 996500 |  | 0099CC | CC8800 |  | 0099FF | FFAA00 |  | 00CC00 | CC8800 |  | 00CC33 | CC8800 |  | 00CC66 | CC8800 |  | 00CC99 | CC8800 |  | 00CCCC | CC8800 |  | 00CCFF | FFAA00 |  | 00FF00 | FFAA00 |  | 00FF33 | FFAA00 |  | 00FF66 | FFAA00 |  | 00FF99 | FFAA00 |  | 00FFCC | FFAA00 |  | 00FFFF | FFAA00 |  | 330000 | 332200 |  | 330033 | 332200 |  | 330066 | 664400 |  | 330099 | 996500 |  | 3300CC | CC8800 |  | 3300FF | FFAA00 |  | 333300 | 332200 |  | 333333 | 333333 |  | 333366 | 665533 |  | 333399 | 997733 |  | 3333CC | CC9933 |  | 3333FF | FFBB32 |  | 336600 | 664400 |  | 336633 | 665533 |  | 336666 | 665533 |  | 336699 | 997733 |  | 3366CC | CC9933 |  | 3366FF | FFBB32 |  | 339900 | 996500 |  | 339933 | 997733 |  | 339966 | 997733 |  | 339999 | 997733 |  | 3399CC | CC9933 |  | 3399FF | FFBB32 |  | 33CC00 | CC8800 |  | 33CC33 | CC9933 |  | 33CC66 | CC9933 |  | 33CC99 | CC9933 |  | 33CCCC | CC9933 |  | 33CCFF | FFBB32 |  | 33FF00 | FFAA00 |  | 33FF33 | FFBB32 |  | 33FF66 | FFBB32 |  | 33FF99 | FFBB32 |  | 33FFCC | FFBB32 |  | 33FFFF | FFBB32 |  | 660000 | 664400 |  | 660033 | 664400 |  | 660066 | 664400 |  | 660099 | 996500 |  | 6600CC | CC8800 |  | 6600FF | FFAA00 |  | 663300 | 664400 |  | 663333 | 665533 |  | 663366 | 665533 |  | 663399 | 997733 |  | 6633CC | CC9933 |  | 6633FF | FFBB32 |  | 666600 | 664400 |  | 666633 | 665533 |  | 666666 | 666666 |  | 666699 | 998866 |  | 6666CC | CCAA66 |  | 6666FF | FFCC66 |  | 669900 | 996500 |  | 669933 | 997733 |  | 669966 | 998866 |  | 669999 | 998866 |  | 6699CC | CCAA66 |  | 6699FF | FFCC66 |  | 66CC00 | CC8800 |  | 66CC33 | CC9933 |  | 66CC66 | CCAA66 |  | 66CC99 | CCAA66 |  | 66CCCC | CCAA66 |  | 66CCFF | FFCC66 |  | 66FF00 | FFAA00 |  | 66FF33 | FFBB32 |  | 66FF66 | FFCC66 |  | 66FF99 | FFCC66 |  | 66FFCC | FFCC66 |  | 66FFFF | FFCC66 |  | 990000 | 996500 |  | 990033 | 996500 |  | 990066 | 996500 |  | 990099 | 996500 |  | 9900CC | CC8800 |  | 9900FF | FFAA00 |  | 993300 | 996500 |  | 993333 | 997733 |  | 993366 | 997733 |  | 993399 | 997733 |  | 9933CC | CC9933 |  | 9933FF | FFBB32 |  | 996600 | 996500 |  | 996633 | 997733 |  | 996666 | 998866 |  | 996699 | 998866 |  | 9966CC | CCAA66 |  | 9966FF | FFCC66 |  | 999900 | 996500 |  | 999933 | 997733 |  | 999966 | 998866 |  | 999999 | 999999 |  | 9999CC | CCBB99 |  | 9999FF | FFDD99 |  | 99CC00 | CC8800 |  | 99CC33 | CC9933 |  | 99CC66 | CCAA66 |  | 99CC99 | CCBB99 |  | 99CCCC | CCBB99 |  | 99CCFF | FFDD99 |  | 99FF00 | FFAA00 |  | 99FF33 | FFBB32 |  | 99FF66 | FFCC66 |  | 99FF99 | FFDD99 |  | 99FFCC | FFDD99 |  | 99FFFF | FFDD99 |  | CC0000 | CC8800 |  | CC0033 | CC8800 |  | CC0066 | CC8800 |  | CC0099 | CC8800 |  | CC00CC | CC8800 |  | CC00FF | FFAA00 |  | CC3300 | CC8800 |  | CC3333 | CC9933 |  | CC3366 | CC9933 |  | CC3399 | CC9933 |  | CC33CC | CC9933 |  | CC33FF | FFBB32 |  | CC6600 | CC8800 |  | CC6633 | CC9933 |  | CC6666 | CCAA66 |  | CC6699 | CCAA66 |  | CC66CC | CCAA66 |  | CC66FF | FFCC66 |  | CC9900 | CC8800 |  | CC9933 | CC9933 |  | CC9966 | CCAA66 |  | CC9999 | CCBB99 |  | CC99CC | CCBB99 |  | CC99FF | FFDD99 |  | CCCC00 | CC8800 |  | CCCC33 | CC9933 |  | CCCC66 | CCAA66 |  | CCCC99 | CCBB99 |  | CCCCCC | CCCCCC |  | CCCCFF | FFEECC |  | CCFF00 | FFAA00 |  | CCFF33 | FFBB32 |  | CCFF66 | FFCC66 |  | CCFF99 | FFDD99 |  | CCFFCC | FFEECC |  | CCFFFF | FFEECC |  | FF0000 | FFAA00 |  | FF0033 | FFAA00 |  | FF0066 | FFAA00 |  | FF0099 | FFAA00 |  | FF00CC | FFAA00 |  | FF00FF | FFAA00 |  | FF3300 | FFAA00 |  | FF3333 | FFBB32 |  | FF3366 | FFBB32 |  | FF3399 | FFBB32 |  | FF33CC | FFBB32 |  | FF33FF | FFBB32 |  | FF6600 | FFAA00 |  | FF6633 | FFBB32 |  | FF6666 | FFCC66 |  | FF6699 | FFCC66 |  | FF66CC | FFCC66 |  | FF66FF | FFCC66 |  | FF9900 | FFAA00 |  | FF9933 | FFBB32 |  | FF9966 | FFCC66 |  | FF9999 | FFDD99 |  | FF99CC | FFDD99 |  | FF99FF | FFDD99 |  | FFCC00 | FFAA00 |  | FFCC33 | FFBB32 |  | FFCC66 | FFCC66 |  | FFCC99 | FFDD99 |  | FFCCCC | FFEECC |  | FFCCFF | FFEECC |  | FFFF00 | FFAA00 |  | FFFF33 | FFBB32 |  | FFFF66 | FFCC66 |  | FFFF99 | FFDD99 |  | FFFFCC | FFEECC |  | FFFFFF | FFFFFF |  |  
| 89 |  |  |  |  |  |  |  | Lemon 
| 90 |  |  |  |  |  |  |  |  | 000000 | 000000 |  | 000033 | 333300 |  | 000066 | 666600 |  | 000099 | 999900 |  | 0000CC | CCCC00 |  | 0000FF | FFFF00 |  | 003300 | 333300 |  | 003333 | 333300 |  | 003366 | 666600 |  | 003399 | 999900 |  | 0033CC | CCCC00 |  | 0033FF | FFFF00 |  | 006600 | 666600 |  | 006633 | 666600 |  | 006666 | 666600 |  | 006699 | 999900 |  | 0066CC | CCCC00 |  | 0066FF | FFFF00 |  | 009900 | 999900 |  | 009933 | 999900 |  | 009966 | 999900 |  | 009999 | 999900 |  | 0099CC | CCCC00 |  | 0099FF | FFFF00 |  | 00CC00 | CCCC00 |  | 00CC33 | CCCC00 |  | 00CC66 | CCCC00 |  | 00CC99 | CCCC00 |  | 00CCCC | CCCC00 |  | 00CCFF | FFFF00 |  | 00FF00 | FFFF00 |  | 00FF33 | FFFF00 |  | 00FF66 | FFFF00 |  | 00FF99 | FFFF00 |  | 00FFCC | FFFF00 |  | 00FFFF | FFFF00 |  | 330000 | 333300 |  | 330033 | 333300 |  | 330066 | 666600 |  | 330099 | 999900 |  | 3300CC | CCCC00 |  | 3300FF | FFFF00 |  | 333300 | 333300 |  | 333333 | 333333 |  | 333366 | 666633 |  | 333399 | 999933 |  | 3333CC | CCCC33 |  | 3333FF | FFFF32 |  | 336600 | 666600 |  | 336633 | 666633 |  | 336666 | 666633 |  | 336699 | 999933 |  | 3366CC | CCCC33 |  | 3366FF | FFFF32 |  | 339900 | 999900 |  | 339933 | 999933 |  | 339966 | 999933 |  | 339999 | 999933 |  | 3399CC | CCCC33 |  | 3399FF | FFFF32 |  | 33CC00 | CCCC00 |  | 33CC33 | CCCC33 |  | 33CC66 | CCCC33 |  | 33CC99 | CCCC33 |  | 33CCCC | CCCC33 |  | 33CCFF | FFFF32 |  | 33FF00 | FFFF00 |  | 33FF33 | FFFF32 |  | 33FF66 | FFFF32 |  | 33FF99 | FFFF32 |  | 33FFCC | FFFF32 |  | 33FFFF | FFFF32 |  | 660000 | 666600 |  | 660033 | 666600 |  | 660066 | 666600 |  | 660099 | 999900 |  | 6600CC | CCCC00 |  | 6600FF | FFFF00 |  | 663300 | 666600 |  | 663333 | 666633 |  | 663366 | 666633 |  | 663399 | 999933 |  | 6633CC | CCCC33 |  | 6633FF | FFFF32 |  | 666600 | 666600 |  | 666633 | 666633 |  | 666666 | 666666 |  | 666699 | 999966 |  | 6666CC | CCCC66 |  | 6666FF | FFFF66 |  | 669900 | 999900 |  | 669933 | 999933 |  | 669966 | 999966 |  | 669999 | 999966 |  | 6699CC | CCCC66 |  | 6699FF | FFFF66 |  | 66CC00 | CCCC00 |  | 66CC33 | CCCC33 |  | 66CC66 | CCCC66 |  | 66CC99 | CCCC66 |  | 66CCCC | CCCC66 |  | 66CCFF | FFFF66 |  | 66FF00 | FFFF00 |  | 66FF33 | FFFF32 |  | 66FF66 | FFFF66 |  | 66FF99 | FFFF66 |  | 66FFCC | FFFF66 |  | 66FFFF | FFFF66 |  | 990000 | 999900 |  | 990033 | 999900 |  | 990066 | 999900 |  | 990099 | 999900 |  | 9900CC | CCCC00 |  | 9900FF | FFFF00 |  | 993300 | 999900 |  | 993333 | 999933 |  | 993366 | 999933 |  | 993399 | 999933 |  | 9933CC | CCCC33 |  | 9933FF | FFFF32 |  | 996600 | 999900 |  | 996633 | 999933 |  | 996666 | 999966 |  | 996699 | 999966 |  | 9966CC | CCCC66 |  | 9966FF | FFFF66 |  | 999900 | 999900 |  | 999933 | 999933 |  | 999966 | 999966 |  | 999999 | 999999 |  | 9999CC | CCCC99 |  | 9999FF | FFFF99 |  | 99CC00 | CCCC00 |  | 99CC33 | CCCC33 |  | 99CC66 | CCCC66 |  | 99CC99 | CCCC99 |  | 99CCCC | CCCC99 |  | 99CCFF | FFFF99 |  | 99FF00 | FFFF00 |  | 99FF33 | FFFF32 |  | 99FF66 | FFFF66 |  | 99FF99 | FFFF99 |  | 99FFCC | FFFF99 |  | 99FFFF | FFFF99 |  | CC0000 | CCCC00 |  | CC0033 | CCCC00 |  | CC0066 | CCCC00 |  | CC0099 | CCCC00 |  | CC00CC | CCCC00 |  | CC00FF | FFFF00 |  | CC3300 | CCCC00 |  | CC3333 | CCCC33 |  | CC3366 | CCCC33 |  | CC3399 | CCCC33 |  | CC33CC | CCCC33 |  | CC33FF | FFFF32 |  | CC6600 | CCCC00 |  | CC6633 | CCCC33 |  | CC6666 | CCCC66 |  | CC6699 | CCCC66 |  | CC66CC | CCCC66 |  | CC66FF | FFFF66 |  | CC9900 | CCCC00 |  | CC9933 | CCCC33 |  | CC9966 | CCCC66 |  | CC9999 | CCCC99 |  | CC99CC | CCCC99 |  | CC99FF | FFFF99 |  | CCCC00 | CCCC00 |  | CCCC33 | CCCC33 |  | CCCC66 | CCCC66 |  | CCCC99 | CCCC99 |  | CCCCCC | CCCCCC |  | CCCCFF | FFFFCC |  | CCFF00 | FFFF00 |  | CCFF33 | FFFF32 |  | CCFF66 | FFFF66 |  | CCFF99 | FFFF99 |  | CCFFCC | FFFFCC |  | CCFFFF | FFFFCC |  | FF0000 | FFFF00 |  | FF0033 | FFFF00 |  | FF0066 | FFFF00 |  | FF0099 | FFFF00 |  | FF00CC | FFFF00 |  | FF00FF | FFFF00 |  | FF3300 | FFFF00 |  | FF3333 | FFFF32 |  | FF3366 | FFFF32 |  | FF3399 | FFFF32 |  | FF33CC | FFFF32 |  | FF33FF | FFFF32 |  | FF6600 | FFFF00 |  | FF6633 | FFFF32 |  | FF6666 | FFFF66 |  | FF6699 | FFFF66 |  | FF66CC | FFFF66 |  | FF66FF | FFFF66 |  | FF9900 | FFFF00 |  | FF9933 | FFFF32 |  | FF9966 | FFFF66 |  | FF9999 | FFFF99 |  | FF99CC | FFFF99 |  | FF99FF | FFFF99 |  | FFCC00 | FFFF00 |  | FFCC33 | FFFF32 |  | FFCC66 | FFFF66 |  | FFCC99 | FFFF99 |  | FFCCCC | FFFFCC |  | FFCCFF | FFFFCC |  | FFFF00 | FFFF00 |  | FFFF33 | FFFF32 |  | FFFF66 | FFFF66 |  | FFFF99 | FFFF99 |  | FFFFCC | FFFFCC |  | FFFFFF | FFFFFF |  |  
| 91 |  |  |  |  |  |  |  | Apple 
| 92 |  |  |  |  |  |  |  |  | 000000 | 000000 |  | 000033 | 0C3300 |  | 000066 | 196600 |  | 000099 | 269900 |  | 0000CC | 33CC00 |  | 0000FF | 3FFF00 |  | 003300 | 0C3300 |  | 003333 | 0C3300 |  | 003366 | 196600 |  | 003399 | 269900 |  | 0033CC | 33CC00 |  | 0033FF | 3FFF00 |  | 006600 | 196600 |  | 006633 | 196600 |  | 006666 | 196600 |  | 006699 | 269900 |  | 0066CC | 33CC00 |  | 0066FF | 3FFF00 |  | 009900 | 269900 |  | 009933 | 269900 |  | 009966 | 269900 |  | 009999 | 269900 |  | 0099CC | 33CC00 |  | 0099FF | 3FFF00 |  | 00CC00 | 33CC00 |  | 00CC33 | 33CC00 |  | 00CC66 | 33CC00 |  | 00CC99 | 33CC00 |  | 00CCCC | 33CC00 |  | 00CCFF | 3FFF00 |  | 00FF00 | 3FFF00 |  | 00FF33 | 3FFF00 |  | 00FF66 | 3FFF00 |  | 00FF99 | 3FFF00 |  | 00FFCC | 3FFF00 |  | 00FFFF | 3FFF00 |  | 330000 | 0C3300 |  | 330033 | 0C3300 |  | 330066 | 196600 |  | 330099 | 269900 |  | 3300CC | 33CC00 |  | 3300FF | 3FFF00 |  | 333300 | 0C3300 |  | 333333 | 333333 |  | 333366 | 3F6633 |  | 333399 | 4C9933 |  | 3333CC | 59CC33 |  | 3333FF | 65FF32 |  | 336600 | 196600 |  | 336633 | 3F6633 |  | 336666 | 3F6633 |  | 336699 | 4C9933 |  | 3366CC | 59CC33 |  | 3366FF | 65FF32 |  | 339900 | 269900 |  | 339933 | 4C9933 |  | 339966 | 4C9933 |  | 339999 | 4C9933 |  | 3399CC | 59CC33 |  | 3399FF | 65FF32 |  | 33CC00 | 33CC00 |  | 33CC33 | 59CC33 |  | 33CC66 | 59CC33 |  | 33CC99 | 59CC33 |  | 33CCCC | 59CC33 |  | 33CCFF | 65FF32 |  | 33FF00 | 3FFF00 |  | 33FF33 | 65FF32 |  | 33FF66 | 65FF32 |  | 33FF99 | 65FF32 |  | 33FFCC | 65FF32 |  | 33FFFF | 65FF32 |  | 660000 | 196600 |  | 660033 | 196600 |  | 660066 | 196600 |  | 660099 | 269900 |  | 6600CC | 33CC00 |  | 6600FF | 3FFF00 |  | 663300 | 196600 |  | 663333 | 3F6633 |  | 663366 | 3F6633 |  | 663399 | 4C9933 |  | 6633CC | 59CC33 |  | 6633FF | 65FF32 |  | 666600 | 196600 |  | 666633 | 3F6633 |  | 666666 | 666666 |  | 666699 | 729966 |  | 6666CC | 7FCC66 |  | 6666FF | 8CFF66 |  | 669900 | 269900 |  | 669933 | 4C9933 |  | 669966 | 729966 |  | 669999 | 729966 |  | 6699CC | 7FCC66 |  | 6699FF | 8CFF66 |  | 66CC00 | 33CC00 |  | 66CC33 | 59CC33 |  | 66CC66 | 7FCC66 |  | 66CC99 | 7FCC66 |  | 66CCCC | 7FCC66 |  | 66CCFF | 8CFF66 |  | 66FF00 | 3FFF00 |  | 66FF33 | 65FF32 |  | 66FF66 | 8CFF66 |  | 66FF99 | 8CFF66 |  | 66FFCC | 8CFF66 |  | 66FFFF | 8CFF66 |  | 990000 | 269900 |  | 990033 | 269900 |  | 990066 | 269900 |  | 990099 | 269900 |  | 9900CC | 33CC00 |  | 9900FF | 3FFF00 |  | 993300 | 269900 |  | 993333 | 4C9933 |  | 993366 | 4C9933 |  | 993399 | 4C9933 |  | 9933CC | 59CC33 |  | 9933FF | 65FF32 |  | 996600 | 269900 |  | 996633 | 4C9933 |  | 996666 | 729966 |  | 996699 | 729966 |  | 9966CC | 7FCC66 |  | 9966FF | 8CFF66 |  | 999900 | 269900 |  | 999933 | 4C9933 |  | 999966 | 729966 |  | 999999 | 999999 |  | 9999CC | A5CC99 |  | 9999FF | B2FF99 |  | 99CC00 | 33CC00 |  | 99CC33 | 59CC33 |  | 99CC66 | 7FCC66 |  | 99CC99 | A5CC99 |  | 99CCCC | A5CC99 |  | 99CCFF | B2FF99 |  | 99FF00 | 3FFF00 |  | 99FF33 | 65FF32 |  | 99FF66 | 8CFF66 |  | 99FF99 | B2FF99 |  | 99FFCC | B2FF99 |  | 99FFFF | B2FF99 |  | CC0000 | 33CC00 |  | CC0033 | 33CC00 |  | CC0066 | 33CC00 |  | CC0099 | 33CC00 |  | CC00CC | 33CC00 |  | CC00FF | 3FFF00 |  | CC3300 | 33CC00 |  | CC3333 | 59CC33 |  | CC3366 | 59CC33 |  | CC3399 | 59CC33 |  | CC33CC | 59CC33 |  | CC33FF | 65FF32 |  | CC6600 | 33CC00 |  | CC6633 | 59CC33 |  | CC6666 | 7FCC66 |  | CC6699 | 7FCC66 |  | CC66CC | 7FCC66 |  | CC66FF | 8CFF66 |  | CC9900 | 33CC00 |  | CC9933 | 59CC33 |  | CC9966 | 7FCC66 |  | CC9999 | A5CC99 |  | CC99CC | A5CC99 |  | CC99FF | B2FF99 |  | CCCC00 | 33CC00 |  | CCCC33 | 59CC33 |  | CCCC66 | 7FCC66 |  | CCCC99 | A5CC99 |  | CCCCCC | CCCCCC |  | CCCCFF | D8FFCC |  | CCFF00 | 3FFF00 |  | CCFF33 | 65FF32 |  | CCFF66 | 8CFF66 |  | CCFF99 | B2FF99 |  | CCFFCC | D8FFCC |  | CCFFFF | D8FFCC |  | FF0000 | 3FFF00 |  | FF0033 | 3FFF00 |  | FF0066 | 3FFF00 |  | FF0099 | 3FFF00 |  | FF00CC | 3FFF00 |  | FF00FF | 3FFF00 |  | FF3300 | 3FFF00 |  | FF3333 | 65FF32 |  | FF3366 | 65FF32 |  | FF3399 | 65FF32 |  | FF33CC | 65FF32 |  | FF33FF | 65FF32 |  | FF6600 | 3FFF00 |  | FF6633 | 65FF32 |  | FF6666 | 8CFF66 |  | FF6699 | 8CFF66 |  | FF66CC | 8CFF66 |  | FF66FF | 8CFF66 |  | FF9900 | 3FFF00 |  | FF9933 | 65FF32 |  | FF9966 | 8CFF66 |  | FF9999 | B2FF99 |  | FF99CC | B2FF99 |  | FF99FF | B2FF99 |  | FFCC00 | 3FFF00 |  | FFCC33 | 65FF32 |  | FFCC66 | 8CFF66 |  | FFCC99 | B2FF99 |  | FFCCCC | D8FFCC |  | FFCCFF | D8FFCC |  | FFFF00 | 3FFF00 |  | FFFF33 | 65FF32 |  | FFFF66 | 8CFF66 |  | FFFF99 | B2FF99 |  | FFFFCC | D8FFCC |  | FFFFFF | FFFFFF |  |  
| 93 |  |  |  |  |  |  |  | Blackcurrant 
| 94 |  |  |  |  |  |  |  |  | 000000 | 000000 |  | 000033 | 330033 |  | 000066 | 660066 |  | 000099 | 990099 |  | 0000CC | CC00CC |  | 0000FF | FF00FF |  | 003300 | 330033 |  | 003333 | 330033 |  | 003366 | 660066 |  | 003399 | 990099 |  | 0033CC | CC00CC |  | 0033FF | FF00FF |  | 006600 | 660066 |  | 006633 | 660066 |  | 006666 | 660066 |  | 006699 | 990099 |  | 0066CC | CC00CC |  | 0066FF | FF00FF |  | 009900 | 990099 |  | 009933 | 990099 |  | 009966 | 990099 |  | 009999 | 990099 |  | 0099CC | CC00CC |  | 0099FF | FF00FF |  | 00CC00 | CC00CC |  | 00CC33 | CC00CC |  | 00CC66 | CC00CC |  | 00CC99 | CC00CC |  | 00CCCC | CC00CC |  | 00CCFF | FF00FF |  | 00FF00 | FF00FF |  | 00FF33 | FF00FF |  | 00FF66 | FF00FF |  | 00FF99 | FF00FF |  | 00FFCC | FF00FF |  | 00FFFF | FF00FF |  | 330000 | 330033 |  | 330033 | 330033 |  | 330066 | 660066 |  | 330099 | 990099 |  | 3300CC | CC00CC |  | 3300FF | FF00FF |  | 333300 | 330033 |  | 333333 | 333333 |  | 333366 | 663366 |  | 333399 | 993399 |  | 3333CC | CC33CC |  | 3333FF | FF32FF |  | 336600 | 660066 |  | 336633 | 663366 |  | 336666 | 663366 |  | 336699 | 993399 |  | 3366CC | CC33CC |  | 3366FF | FF32FF |  | 339900 | 990099 |  | 339933 | 993399 |  | 339966 | 993399 |  | 339999 | 993399 |  | 3399CC | CC33CC |  | 3399FF | FF32FF |  | 33CC00 | CC00CC |  | 33CC33 | CC33CC |  | 33CC66 | CC33CC |  | 33CC99 | CC33CC |  | 33CCCC | CC33CC |  | 33CCFF | FF32FF |  | 33FF00 | FF00FF |  | 33FF33 | FF32FF |  | 33FF66 | FF32FF |  | 33FF99 | FF32FF |  | 33FFCC | FF32FF |  | 33FFFF | FF32FF |  | 660000 | 660066 |  | 660033 | 660066 |  | 660066 | 660066 |  | 660099 | 990099 |  | 6600CC | CC00CC |  | 6600FF | FF00FF |  | 663300 | 660066 |  | 663333 | 663366 |  | 663366 | 663366 |  | 663399 | 993399 |  | 6633CC | CC33CC |  | 6633FF | FF32FF |  | 666600 | 660066 |  | 666633 | 663366 |  | 666666 | 666666 |  | 666699 | 996699 |  | 6666CC | CC66CC |  | 6666FF | FF66FF |  | 669900 | 990099 |  | 669933 | 993399 |  | 669966 | 996699 |  | 669999 | 996699 |  | 6699CC | CC66CC |  | 6699FF | FF66FF |  | 66CC00 | CC00CC |  | 66CC33 | CC33CC |  | 66CC66 | CC66CC |  | 66CC99 | CC66CC |  | 66CCCC | CC66CC |  | 66CCFF | FF66FF |  | 66FF00 | FF00FF |  | 66FF33 | FF32FF |  | 66FF66 | FF66FF |  | 66FF99 | FF66FF |  | 66FFCC | FF66FF |  | 66FFFF | FF66FF |  | 990000 | 990099 |  | 990033 | 990099 |  | 990066 | 990099 |  | 990099 | 990099 |  | 9900CC | CC00CC |  | 9900FF | FF00FF |  | 993300 | 990099 |  | 993333 | 993399 |  | 993366 | 993399 |  | 993399 | 993399 |  | 9933CC | CC33CC |  | 9933FF | FF32FF |  | 996600 | 990099 |  | 996633 | 993399 |  | 996666 | 996699 |  | 996699 | 996699 |  | 9966CC | CC66CC |  | 9966FF | FF66FF |  | 999900 | 990099 |  | 999933 | 993399 |  | 999966 | 996699 |  | 999999 | 999999 |  | 9999CC | CC99CC |  | 9999FF | FF99FF |  | 99CC00 | CC00CC |  | 99CC33 | CC33CC |  | 99CC66 | CC66CC |  | 99CC99 | CC99CC |  | 99CCCC | CC99CC |  | 99CCFF | FF99FF |  | 99FF00 | FF00FF |  | 99FF33 | FF32FF |  | 99FF66 | FF66FF |  | 99FF99 | FF99FF |  | 99FFCC | FF99FF |  | 99FFFF | FF99FF |  | CC0000 | CC00CC |  | CC0033 | CC00CC |  | CC0066 | CC00CC |  | CC0099 | CC00CC |  | CC00CC | CC00CC |  | CC00FF | FF00FF |  | CC3300 | CC00CC |  | CC3333 | CC33CC |  | CC3366 | CC33CC |  | CC3399 | CC33CC |  | CC33CC | CC33CC |  | CC33FF | FF32FF |  | CC6600 | CC00CC |  | CC6633 | CC33CC |  | CC6666 | CC66CC |  | CC6699 | CC66CC |  | CC66CC | CC66CC |  | CC66FF | FF66FF |  | CC9900 | CC00CC |  | CC9933 | CC33CC |  | CC9966 | CC66CC |  | CC9999 | CC99CC |  | CC99CC | CC99CC |  | CC99FF | FF99FF |  | CCCC00 | CC00CC |  | CCCC33 | CC33CC |  | CCCC66 | CC66CC |  | CCCC99 | CC99CC |  | CCCCCC | CCCCCC |  | CCCCFF | FFCCFF |  | CCFF00 | FF00FF |  | CCFF33 | FF32FF |  | CCFF66 | FF66FF |  | CCFF99 | FF99FF |  | CCFFCC | FFCCFF |  | CCFFFF | FFCCFF |  | FF0000 | FF00FF |  | FF0033 | FF00FF |  | FF0066 | FF00FF |  | FF0099 | FF00FF |  | FF00CC | FF00FF |  | FF00FF | FF00FF |  | FF3300 | FF00FF |  | FF3333 | FF32FF |  | FF3366 | FF32FF |  | FF3399 | FF32FF |  | FF33CC | FF32FF |  | FF33FF | FF32FF |  | FF6600 | FF00FF |  | FF6633 | FF32FF |  | FF6666 | FF66FF |  | FF6699 | FF66FF |  | FF66CC | FF66FF |  | FF66FF | FF66FF |  | FF9900 | FF00FF |  | FF9933 | FF32FF |  | FF9966 | FF66FF |  | FF9999 | FF99FF |  | FF99CC | FF99FF |  | FF99FF | FF99FF |  | FFCC00 | FF00FF |  | FFCC33 | FF32FF |  | FFCC66 | FF66FF |  | FFCC99 | FF99FF |  | FFCCCC | FFCCFF |  | FFCCFF | FFCCFF |  | FFFF00 | FF00FF |  | FFFF33 | FF32FF |  | FFFF66 | FF66FF |  | FFFF99 | FF99FF |  | FFFFCC | FFCCFF |  | FFFFFF | FFFFFF |  |  
| 95 |  |  |  |  |  |  |  | Cherry 
| 96 |  |  |  |  |  |  |  |  | 000000 | 000000 |  | 000033 | 330000 |  | 000066 | 660000 |  | 000099 | 990000 |  | 0000CC | CC0000 |  | 0000FF | FF0000 |  | 003300 | 330000 |  | 003333 | 330000 |  | 003366 | 660000 |  | 003399 | 990000 |  | 0033CC | CC0000 |  | 0033FF | FF0000 |  | 006600 | 660000 |  | 006633 | 660000 |  | 006666 | 660000 |  | 006699 | 990000 |  | 0066CC | CC0000 |  | 0066FF | FF0000 |  | 009900 | 990000 |  | 009933 | 990000 |  | 009966 | 990000 |  | 009999 | 990000 |  | 0099CC | CC0000 |  | 0099FF | FF0000 |  | 00CC00 | CC0000 |  | 00CC33 | CC0000 |  | 00CC66 | CC0000 |  | 00CC99 | CC0000 |  | 00CCCC | CC0000 |  | 00CCFF | FF0000 |  | 00FF00 | FF0000 |  | 00FF33 | FF0000 |  | 00FF66 | FF0000 |  | 00FF99 | FF0000 |  | 00FFCC | FF0000 |  | 00FFFF | FF0000 |  | 330000 | 330000 |  | 330033 | 330000 |  | 330066 | 660000 |  | 330099 | 990000 |  | 3300CC | CC0000 |  | 3300FF | FF0000 |  | 333300 | 330000 |  | 333333 | 333333 |  | 333366 | 663333 |  | 333399 | 993333 |  | 3333CC | CC3333 |  | 3333FF | FF3232 |  | 336600 | 660000 |  | 336633 | 663333 |  | 336666 | 663333 |  | 336699 | 993333 |  | 3366CC | CC3333 |  | 3366FF | FF3232 |  | 339900 | 990000 |  | 339933 | 993333 |  | 339966 | 993333 |  | 339999 | 993333 |  | 3399CC | CC3333 |  | 3399FF | FF3232 |  | 33CC00 | CC0000 |  | 33CC33 | CC3333 |  | 33CC66 | CC3333 |  | 33CC99 | CC3333 |  | 33CCCC | CC3333 |  | 33CCFF | FF3232 |  | 33FF00 | FF0000 |  | 33FF33 | FF3232 |  | 33FF66 | FF3232 |  | 33FF99 | FF3232 |  | 33FFCC | FF3232 |  | 33FFFF | FF3232 |  | 660000 | 660000 |  | 660033 | 660000 |  | 660066 | 660000 |  | 660099 | 990000 |  | 6600CC | CC0000 |  | 6600FF | FF0000 |  | 663300 | 660000 |  | 663333 | 663333 |  | 663366 | 663333 |  | 663399 | 993333 |  | 6633CC | CC3333 |  | 6633FF | FF3232 |  | 666600 | 660000 |  | 666633 | 663333 |  | 666666 | 666666 |  | 666699 | 996666 |  | 6666CC | CC6666 |  | 6666FF | FF6666 |  | 669900 | 990000 |  | 669933 | 993333 |  | 669966 | 996666 |  | 669999 | 996666 |  | 6699CC | CC6666 |  | 6699FF | FF6666 |  | 66CC00 | CC0000 |  | 66CC33 | CC3333 |  | 66CC66 | CC6666 |  | 66CC99 | CC6666 |  | 66CCCC | CC6666 |  | 66CCFF | FF6666 |  | 66FF00 | FF0000 |  | 66FF33 | FF3232 |  | 66FF66 | FF6666 |  | 66FF99 | FF6666 |  | 66FFCC | FF6666 |  | 66FFFF | FF6666 |  | 990000 | 990000 |  | 990033 | 990000 |  | 990066 | 990000 |  | 990099 | 990000 |  | 9900CC | CC0000 |  | 9900FF | FF0000 |  | 993300 | 990000 |  | 993333 | 993333 |  | 993366 | 993333 |  | 993399 | 993333 |  | 9933CC | CC3333 |  | 9933FF | FF3232 |  | 996600 | 990000 |  | 996633 | 993333 |  | 996666 | 996666 |  | 996699 | 996666 |  | 9966CC | CC6666 |  | 9966FF | FF6666 |  | 999900 | 990000 |  | 999933 | 993333 |  | 999966 | 996666 |  | 999999 | 999999 |  | 9999CC | CC9999 |  | 9999FF | FF9999 |  | 99CC00 | CC0000 |  | 99CC33 | CC3333 |  | 99CC66 | CC6666 |  | 99CC99 | CC9999 |  | 99CCCC | CC9999 |  | 99CCFF | FF9999 |  | 99FF00 | FF0000 |  | 99FF33 | FF3232 |  | 99FF66 | FF6666 |  | 99FF99 | FF9999 |  | 99FFCC | FF9999 |  | 99FFFF | FF9999 |  | CC0000 | CC0000 |  | CC0033 | CC0000 |  | CC0066 | CC0000 |  | CC0099 | CC0000 |  | CC00CC | CC0000 |  | CC00FF | FF0000 |  | CC3300 | CC0000 |  | CC3333 | CC3333 |  | CC3366 | CC3333 |  | CC3399 | CC3333 |  | CC33CC | CC3333 |  | CC33FF | FF3232 |  | CC6600 | CC0000 |  | CC6633 | CC3333 |  | CC6666 | CC6666 |  | CC6699 | CC6666 |  | CC66CC | CC6666 |  | CC66FF | FF6666 |  | CC9900 | CC0000 |  | CC9933 | CC3333 |  | CC9966 | CC6666 |  | CC9999 | CC9999 |  | CC99CC | CC9999 |  | CC99FF | FF9999 |  | CCCC00 | CC0000 |  | CCCC33 | CC3333 |  | CCCC66 | CC6666 |  | CCCC99 | CC9999 |  | CCCCCC | CCCCCC |  | CCCCFF | FFCCCC |  | CCFF00 | FF0000 |  | CCFF33 | FF3232 |  | CCFF66 | FF6666 |  | CCFF99 | FF9999 |  | CCFFCC | FFCCCC |  | CCFFFF | FFCCCC |  | FF0000 | FF0000 |  | FF0033 | FF0000 |  | FF0066 | FF0000 |  | FF0099 | FF0000 |  | FF00CC | FF0000 |  | FF00FF | FF0000 |  | FF3300 | FF0000 |  | FF3333 | FF3232 |  | FF3366 | FF3232 |  | FF3399 | FF3232 |  | FF33CC | FF3232 |  | FF33FF | FF3232 |  | FF6600 | FF0000 |  | FF6633 | FF3232 |  | FF6666 | FF6666 |  | FF6699 | FF6666 |  | FF66CC | FF6666 |  | FF66FF | FF6666 |  | FF9900 | FF0000 |  | FF9933 | FF3232 |  | FF9966 | FF6666 |  | FF9999 | FF9999 |  | FF99CC | FF9999 |  | FF99FF | FF9999 |  | FFCC00 | FF0000 |  | FFCC33 | FF3232 |  | FFCC66 | FF6666 |  | FFCC99 | FF9999 |  | FFCCCC | FFCCCC |  | FFCCFF | FFCCCC |  | FFFF00 | FF0000 |  | FFFF33 | FF3232 |  | FFFF66 | FF6666 |  | FFFF99 | FF9999 |  | FFFFCC | FFCCCC |  | FFFFFF | FFFFFF |  |  
| 97 |  |  |  |  |  |  |  | 
 | 
| 98 |  |  |  |  |  |  |  | 
| 99 |  |  |  |  |  |  | =end html | 
| 100 |  |  |  |  |  |  |  | 
| 101 |  |  |  |  |  |  | =head1 AUTHOR | 
| 102 |  |  |  |  |  |  |  | 
| 103 |  |  |  |  |  |  | Pete Sergeant - pete@clueball.com | 
| 104 |  |  |  |  |  |  |  | 
| 105 |  |  |  |  |  |  | =head1 SEE ALSO | 
| 106 |  |  |  |  |  |  |  | 
| 107 |  |  |  |  |  |  | http://www.tango.com | 
| 108 |  |  |  |  |  |  |  | 
| 109 |  |  |  |  |  |  | =head1 LICENSE | 
| 110 |  |  |  |  |  |  |  | 
| 111 |  |  |  |  |  |  | This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. | 
| 112 |  |  |  |  |  |  |  | 
| 113 |  |  |  |  |  |  | Tango is someone else's registered trademark - see: http://www.tango.com | 
| 114 |  |  |  |  |  |  |  | 
| 115 |  |  |  |  |  |  | =cut |