[Petal] Example templates

William McKee william@knowmad.com
Fri, 27 Sep 2002 16:57:12 -0400


--Message-Boundary-30135
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body

Hi Christopher,

Welcome to Petal. The example you found is an older copy of the test 
script I use when posting bug reports to the list; it has also been very 
instructional in my learning this new template format. Attached is a more 
recent version of the file (9/19/02) along with the cgi script used to 
process the template. There is a constant in the cgi script, RUNALLTESTS, 
which you may want to change in order to run all tests. If set to 0, it 
only runs tests that are currently not working for me; set to 1, it does 
the obvious <g>.

Enjoy!
William

-- 
 Lead Developer
 Knowmad Services Inc. || Internet Applications & Database Integration
 http://www.knowmad.com
 



--Message-Boundary-30135
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Text from file 'test.cgi'

#!/usr/bin/perl
#
use strict;
use Petal;
use CGI::Carp qw/fatalsToBrowser/;
use constant RUNALLTESTS => 0;


# Extend the list of modifiers
$Petal::Hash::MODIFIERS->{pg_true} = 'Petal::Hash::Postgres::TRUE';
$Petal::Hash::MODIFIERS->{pg_false} = 'Petal::Hash::Postgres::FALSE';

$ENV{PATH} = "/bin:/usr/bin";

my $template_file = 'test.tmpl';
$Petal::DISK_CACHE = 0;
$Petal::MEMORY_CACHE = 0;
$Petal::TAINT = 1;
$Petal::BASE_DIR = './';
$Petal::INPUT = "HTML";
#$Petal::INPUT = "XML";
$Petal::OUTPUT = "XHTML";
#$Petal::OUTPUT = "XML";
my $template = new Petal ($template_file);


my $hash = {
	petal => { version => $Petal::VERSION },
	alltests => RUNALLTESTS,
	error_message => "Kilroy was Here",
	first_name => "William",
	last_name => "McKee",
	email => 'william@knowmad.com',
	boolean => '1',
	pg_boolean => 't',
	pg_boolean_false => 'f',
	students => [ { student_id => '1',
					first_name => 'William',
					last_name => 'McKee',
					email => 'william@knowmad.com',
					},
				  { student_id => '2',
					  first_name => 'Elizabeth',
					  last_name => 'McKee',
					  email => 'elizabeth@knowmad.com',
					},
				],
};
my $html = $template->process($hash);
print "Content-type: text/html\n\n";
print $html;

--Message-Boundary-30135
Content-type: text/plain; charset=US-ASCII
Content-disposition: inline
Content-description: Attachment information.

The following section of this message contains a file attachment
prepared for transmission using the Internet MIME message format.
If you are using Pegasus Mail, or any another MIME-compliant system,
you should be able to save it or view it from within your mailer.
If you cannot, please ask your system administrator for assistance.

   ---- File information -----------
     File:  test.tmpl
     Date:  19 Sep 2002, 11:58
     Size:  6825 bytes.
     Type:  Unknown

--Message-Boundary-30135
Content-type: Application/Octet-stream; name="test.tmpl"; type=Unknown
Content-disposition: attachment; filename="test.tmpl"
Content-transfer-encoding: BASE64

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLT8NCiMg
ICAgIFRlbXBsYXRlOiB0ZXN0LnRtcGwNCiMgICAgICBDcmVhdGVkOiAwNy0yMy0yMDAyDQoj
ICAgICBNb2RpZmllZDogMDktMTktMjAwMg0KIyAgICAgICBBdXRob3I6IHdsbQ0KIyAgRGVz
Y3JpcHRpb246IFRlbXBsYXRlIHRvIGRvIHRlcnJpYmxlIHRoaW5ncyB0byB0ZXN0IFBldGFs
IHRlbXBsYXRlIGxhbmd1YWdlLg0KLS0+DQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1cz
Qy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIg0KICAgICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4NCg0KPGh0bWwg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KICA8aGVhZD4NCiAgICA8
bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkhUTUwgVGlkeSBmb3IgV2luZG93cyAo
dmVycyAxc3QgSmFudWFyeSAyMDAyKSwgc2VlIHd3dy53My5vcmciIC8+DQoNCiAgICA8dGl0
bGU+UGV0YWwgU3RyZXNzIFRlc3QgVGVtcGxhdGU8L3RpdGxlPg0KICA8L2hlYWQ+DQogIDwh
LS0/IDw/cGV0YWw6aW5jbHVkZSBmaWxlPSJpbmNsdWRlcy9oZWFkZXIudG1wbCI/PiAtLT4N
Cg0KICA8Ym9keT4NCg0KCQk8aDM+Q3VycmVudCBQZXRhbCB2ZXJzaW9uOiA8c3BhbiBwZXRh
bDpyZXBsYWNlPSJwZXRhbC92ZXJzaW9uIjwvaDM+DQoNCiAgICA8aDM+VGhlIHRhZ3M6PC9o
Mz4NCg0KICAgIDx1bD4NCiAgICAgIDxsaT5lcnJvcl9tZXNzYWdlOiA8c3BhbiBwZXRhbDpj
b250ZW50PSJlcnJvcl9tZXNzYWdlIj5FcnJvcjwvc3Bhbj48L2xpPg0KDQogICAgICA8bGk+
Zmlyc3RfbmFtZTogPHNwYW4gcGV0YWw6Y29udGVudD0iZmlyc3RfbmFtZSI+Rmlyc3Q8L3Nw
YW4+PC9saT4NCg0KICAgICAgPGxpPmxhc3RfbmFtZTogPHNwYW4gcGV0YWw6Y29udGVudD0i
bGFzdF9uYW1lIj5MYXN0PC9zcGFuPjwvbGk+DQoNCiAgICAgIDxsaT5ib29sZWFuOiA8c3Bh
biBwZXRhbDpjb250ZW50PSJib29sZWFuIj5ib29sZWFuPC9zcGFuPjwvbGk+DQoNCgkJCTxs
aT5wZ19ib29sZWFuOiA8c3BhbiBwZXRhbDpjb250ZW50PSJwZ19ib29sZWFuIj5wZ19ib29s
ZWFuPC9zcGFuPjwvbGk+DQoNCiAgICAgIDxsaT5wZ19ib29sZWFuX2ZhbHNlOiA8c3BhbiBw
ZXRhbDpjb250ZW50PSJwZ19ib29sZWFuX2ZhbHNlIj5wZ19ib29sZWFuX2ZhbHNlPC9zcGFu
PjwvbGk+DQoNCiAgICAgIDxsaT5lbWFpbDogPHNwYW4gcGV0YWw6Y29udGVudD0iZW1haWwi
PkVtYWlsPC9zcGFuPjwvbGk+DQoNCiAgICAgIDxsaT4NCiAgICAgICAgU3R1ZGVudHMgTGlz
dDxiciAvPg0KCQkJCTx1bD48bGkgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIj4gTmFtZSAt
IEVtYWlsPC9saT48L3VsPg0KDQogICAgICAgIDx1bCBwZXRhbDpyZXBlYXQ9InN0dWRlbnQg
c3R1ZGVudHMiPg0KICAgICAgICAgIDxsaT48P3BldGFsOnZhciBuYW1lPSJlbmNvZGU6IHN0
dWRlbnQuZmlyc3RfbmFtZSI/Pg0KICAgICAgICAgIDw/cGV0YWw6dmFyIG5hbWU9ImVuY29k
ZTogc3R1ZGVudC5sYXN0X25hbWUiPz4NCiAgICAgICAgICAtIDw/cGV0YWw6dmFyIG5hbWU9
ImVuY29kZTogc3R1ZGVudC5lbWFpbCI/Pg0KICAgICAgICAgIDwvbGk+DQogICAgICAgIDwv
dWw+DQogICAgICA8L2xpPg0KICAgIDwvdWw+DQogICAgPGhyIHNpemU9IjkiIHdpZHRoPSI5
NSUiIC8+DQoNCgk8aDM+VGhlIE5vbi1Xb3JraW5nIFRlc3RzPC9oMz4NCg0KCTxoND5LTk9X
TiBFUlJPUiAtIFJld3JpdGUgZXJyb3I8L2g0Pg0KCTxwPlRoaXMgZXhhbXBsZSBzaG93cyBo
b3cgUGV0YWwgaXMgY2hhbmdpbmcgc29tZSBIVE1MIGF0dHJpYnV0ZXMgd2hlbiBjcmVhdGlu
ZyBpdHMgb3V0cHV0LiBJbiB0aGlzIGV4YW1wbGUsICZuYnNwOyB2YWx1ZXMgYXJlIGNoYW5n
ZWQgdG8gcmVhbCBzcGFjZXMgd2hpY2ggaXMgbm90IHRoZSBkZXNpcmVkIHJlc3VsdCB3aGVu
IGNyZWF0aW5nIFhIVE1MIG91dHB1dC4gSSBidWlsdCB0aGlzIGFzIGEgdGFibGUgdG8gdHJ5
IHRvIHJlcGVhdCBhIHByb2JsZW0gSSBzYXcgd2hlcmUgYWRkaW5nICZhbXA7bmJzcDsgYXR0
cmlidXRlcyB3YXMgY2F1c2luZyBQZXRhbCB0byBhZGQgYW4gZXh0cmEgcm93LiBJdCdzIHBy
b2JhYmx5IGEgcHJvYmxlbSB3aXRoIG15IG90aGVyIHRlbXBsYXRlLjwvcD4NCgk8dGFibGUg
Ym9yZGVyPSIxIj4NCgkJPHRyPg0KCQkJPHRkPkNvbHVtbiAxPC90ZD4NCgkJCTx0ZD5Db2x1
bW4gMjwvdGQ+DQoJCTwvdHI+DQoJCTx0cj4NCgkJCTx0ZCBjb2xzcGFuPSIyIj48aW5wdXQg
dHlwZT0iYnV0dG9uIiB2YWx1ZT0iQnV0dG9uIDEiPiZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1
dCB0eXBlPSJidXR0b24iIHZhbHVlPSJCdXR0b24gMiI+PC90ZD4NCgkJPC90cj4NCgk8L3Rh
YmxlPg0KDQoNCgk8P3BldGFsOmlmIG5hbWU9ImFsbHRlc3RzIj8+DQogICAgPHA+Jm5ic3A7
PC9wPg0KICAgIDxociBzaXplPSI5IiB3aWR0aD0iOTUlIj4NCg0KICAgIDxoMz5UaGUgV29y
a2luZyBUZXN0czwvaDM+DQoNCgk8aDQ+Q2Fub25pY2FsIHRhZyBlcnJvciBpbiBYSFRNTCBw
YXJzZXI8L2g0Pg0KCTxwPkVycm9ycyBvY2N1ciB3aGVuIHRyeWluZyB0byB1c2UgdGhlIGNh
bm9uaWNhbCBmb3JtYXQgaW4gdGVtcGxhdGVzIHBhcnNlZCBieSB0aGUgWEhUTUwgcGFyc2Vy
LjwvcD4NCgk8P3BldGFsOnJlcGVhdCBuYW1lPSJzdHVkZW50IHN0dWRlbnRzIj8+DQoJPHVs
Pg0KCQk8bGk+PD9wZXRhbDp2YXIgbmFtZT0ic3R1ZGVudC5maXJzdF9uYW1lIj8+DQoJCTw/
cGV0YWw6dmFyIG5hbWU9InN0dWRlbnQubGFzdF9uYW1lIj8+DQoJCS0gPD9wZXRhbDp2YXIg
bmFtZT0ic3R1ZGVudC5lbWFpbCI/Pg0KCQk8L2xpPg0KCTwvdWw+DQoJPD9wZXRhbDplbmQ/
Pg0KDQoNCgk8aDQ+UGFyYW1ldGVyIHJld3JpdGUgZXJyb3JzPC9oND4NCgk8cD5USElTIElT
IFNUQU5EQVJEIFhIVE1MIGFuZCB0aHVzIG5vdCBhIGJ1ZzwvcD4NCgk8cD5QZXRhbCByZXdy
aXRlcyBwYXJhbWV0ZXJzIHdpdGhvdXQgcmVnYXJkIHRvIGNhc2UuIFRoaXMgaXMgYSBwcm9i
bGVtIGZvciBzb21lIEphdmFzY3JpcHQgc2NyaXB0cy48L3A+DQoJPGZvcm0+PGlucHV0IHR5
cGU9InN0cmluZyIgUEFSTT0iUEhOIiB3Q0xBU1M9IkZvcm1hdFRleHQiIHNpemU9IjMwIiBt
YXhsZW5ndGg9IjU1Ij48L2Zvcm0+DQoJPGJyPg0KCTxhIGhyZWY9IiIgb25Nb3VzZU92ZXI9
ImFsZXJ0KCdIaSBtb20nKSI+TW91c2UgT3ZlciBUZXN0PC9hPg0KDQoNCgk8aDQ+SFRNTCBD
b21tZW50cyBlcnJvcjwvaDQ+DQoJPHA+VGhpcyBleGFtcGxlIGlsbHVzdHJhdGVzIGhvdyBI
VE1MIGNvbW1lbnRzIGdldCByZW1vdmVkIHdoZW4gdXNpbmcgdGhlIFhIVE1ML1hIVE1MIGlu
cHV0L291dHB1dCBzZXR0aW5ncyBpbiBQZXRhbC48L3A+DQoJPCEtLSBUaGlzIGlzIGEgdGVz
dC4gSXQgd2lsbCBkaXNhcHBlYXIuIC0tPg0KDQoNCgk8aDQ+UG9zdGdyZXMgdHJ1ZS9mYWxz
ZTwvaDQ+DQoJPHA+VGVzdCB0aGUgbmV3IGhhbmRsZXJzIEkgd3JvdGUuPC9wPg0KCTx1bD4N
CgkJPGxpPlRydWUgPSA8c3BhbiBwZXRhbDpjb250ZW50PSJwZ190cnVlOiBwZ19ib29sZWFu
Ij50PC9zcGFuPjwvbGk+DQoJCTxsaT5GYWxzZSA9IDxzcGFuIHBldGFsOmNvbnRlbnQ9InBn
X2ZhbHNlOiBwZ19ib29sZWFuX2ZhbHNlIj50PC9zcGFuPjwvbGk+DQoJPC91bD4NCg0KDQoJ
PGg0PlN0cmluZyBtb2RpZmllciBlcnJvciBJSTwvaDQ+DQoJPHA+VGhpcyBleGFtcGxlIGls
bHVzdHJhdGVzIGhvdyB0aGUgX19jb3VudF9fIHZhbHVlIGlzIG5vdCBiZWluZyBwcm9wZXJs
eSBoYW5kbGVkIGluIHN0cmluZyBzdGF0ZW1lbnRzLiBJdCBhbHNvIHNob3dzIGhvdyB0aGUg
bmFtZSBhdHRyaWJ1dGUgaXMgbm90IGJlaW5nIHByb3Blcmx5IGJ1aWx0IGluIGFuIGlucHV0
IGVsZW1lbnQgYXMgd2VsbC48L3A+DQoJPHVsIHBldGFsOnJlcGVhdD0ic3R1ZGVudCBzdHVk
ZW50cyI+DQoJICA8bGk+PD9wZXRhbDp2YXIgbmFtZT0ic3RyaW5nOiRfX2NvdW50X18gLSAk
ZW5jb2RlOnN0dWRlbnQuZmlyc3RfbmFtZSI/Pg0KCSAgPD9wZXRhbDp2YXIgbmFtZT0iZW5j
b2RlOiBzdHVkZW50Lmxhc3RfbmFtZSI/Pg0KCSAgLSA8P3BldGFsOnZhciBuYW1lPSJlbmNv
ZGU6IHN0dWRlbnQuZW1haWwiPz4gLQ0KCSAgPGlucHV0IHBldGFsOmF0dHI9Im5hbWUgc3Ry
aW5nOmZpcnN0X25hbWUke19fY291bnRfX307IHZhbHVlIHN0dWRlbnQuZmlyc3RfbmFtZSIg
dHlwZT0ic3RyaW5nIiAvPg0KCSAgPC9saT4NCgk8L3VsPg0KDQoNCiAgICA8aDQ+U3RyaW5n
IG1vZGlmaWVyIGVycm9yPC9oND4NCg0KICAgIDxwPjxhIHBldGFsOmF0dHI9ImhyZWYgc3Ry
aW5nOnRlc3QuY2dpP3JtPWVkaXRfY29hY2gmYW1wO2ZuPSRmaXJzdF9uYW1lIj48P3BldGFs
OnZhciBuYW1lPSJlbmNvZGU6IGZpcnN0X25hbWUiPz4NCiAgICAgPD9wZXRhbDp2YXIgbmFt
ZT0iZW5jb2RlOiBsYXN0X25hbWUiPz4NCiAgICA8L2E+PC9wPg0KDQogICAgPHA+PGEgcGV0
YWw6YXR0cj0iaHJlZiBzdHJpbmc6bWFpbHRvOi8vJGVtYWlsIj48c3BhbiBwZXRhbDpjb250
ZW50PSJlbmNvZGU6IGVtYWlsIj5FbWFpbDwvc3Bhbj48L2E+PC9wPg0KDQoNCiAgICA8cD5T
dGFja2VkIHBldGFsIHRhZ3M8L3A+DQogICAgPHAgY2xhc3M9ImVycm9yIiBwZXRhbDppZj0i
ZXJyb3JfbWVzc2FnZSIgcGV0YWw6Y29udGVudD0iZXJyb3JfbWVzc2FnZSI+RXJyb3I8L3A+
DQoNCiAgICA8aHIgc2l6ZT0iNSIgd2lkdGg9Ijc1JSI+DQoNCiAgICA8cD4xLiBBIHRhZyB3
aXRoaW4gYW4gaHRtbCB0YWcgcHJvcGVydHkgZG9lc24ndCB3b3JrLCBpbiBzb21lIGNhc2Vz
LiBXb3JrcyBpZiB0aGVyZSBpcyBubyBpbmNsdWRlIHRhZyBhYm92ZSBpdC4gRG9lcyBub3Qg
d29yayBpZiB0aGVyZSBpcyBhbiBpbmNsdWRlIHRhZyBhYm92ZSBpdC4NCiAgICA8YnIgLz4N
CiAgICA8YSBocmVmPSJtYWlsdG86PD9wZXRhbDp2YXIgbmFtZT0iZW1haWwiPz4iPkVtYWls
PC9hPg0KICAgIDwvcD4NCg0KICAgIDxociBzaXplPSI1IiB3aWR0aD0iNzUlIj4NCg0KICAg
IDxwPjIuIFR3byB0YWdzIGluIGEgcm93IHdpbGwgb25seSBzaG93IHRoZSBmaXJzdCwgb3Ig
bm90aGluZyBhdCBhbGwuIEknbSBub3Qgc3VyZSB3aHkgdGhpcyBmb3JtYXQgaXNuJ3Qgd29y
a2luZyBhdCBhbGwgaW4gdGhpcyB0ZXN0IHRlbXBsYXRlLiBJdCBkb2VzIHdvcmsgaW4gYW5v
dGhlciBvZiBteSB0ZW1wbGF0ZXMuIFBlcmhhcHMgaXQgaXMgZHVlIHRvIHRoZSBlcnJvciBp
biB0aGUgYWJvdmUgdGFnLiBDb21tZW50aW5nIG91dCB0aGUgYWJvdmUgdGFnIGRvZXNuJ3Qg
c2VlbSB0byBtYWtlIGFueSBkaWZmZXJlbmNlLCB0aG91Z2guIERvIHRhZ3MgaW5zaWRlIG9m
IGNvbW1lbnRzIGdldCBleGVjdXRlZD8NCiAgICA8YnIgLz4NCiAgICA8P3BldGFsOnZhciBu
YW1lPSJlbmNvZGU6IGZpcnN0X25hbWUiPz4gPGJyIC8+DQogICAgPD9wZXRhbDp2YXIgbmFt
ZT0iZW5jb2RlOiBmaXJzdF9uYW1lIj8+IDw/cGV0YWw6dmFyIG5hbWU9ImVuY29kZTogbGFz
dF9uYW1lIj8+DQogICAgPC9wPg0KDQogICAgPGhyIHNpemU9IjUiIHdpZHRoPSI3NSUiPg0K
DQogICAgPHA+My4gSW5jbHVkZXMgZG9uJ3QgYWx3YXlzIHdvcmsuIFRyeSBtb3Zpbmcgb25l
IG9mIHRoZSB0YWdzIHRvIHRoZSB0b3AgYW5kIHNlZSB0aGUgcmVzdWx0cy4gUmF0aGVyIGN1
cmlvdXMuLi4gSWYgeW91IG1vdmUgdGhlIGZvb3RlciB0byB0aGUgdG9wLCB5b3UnbGwgc2Vl
IHRoYXQgaXQgZ2V0cyBzaG93biB0d2ljZSBpZiB5b3UgaGF2ZSAyIGZvb3RlciBpbmNsdWRl
cyBzdGF0ZW1lbnRzIGZvbGxvd2luZyBpdDsgaWYgeW91IHJlbW92ZSB0aGUgbGFzdCBvbmUg
anVzdCBhYm92ZSB0aGUgL2JvZHkgdGFnLCB5b3UnbGwgc2VlIHRoZSBvbmUgYWZ0ZXIgaGVh
ZGVyIGlzbid0IHdvcmtpbmcsIGJ1dCBmdXJ0aGVyIG9uZXMgZG8uIFRoZXJlIGlzIGFwcGFy
ZW50bHkgc29tZXRoaW5nIGluIHRoZSBoZWFkZXIudG1wbCBkb2N1bWVudCB3aGljaCBpcyBj
YXVzaW5nIFBldGFsIHRvIG5vdCBwZXJmb3JtIHRoZSBuZXh0IGluY2x1ZGVzLiBJbiBmYWN0
LCB5b3UgY2FuIGtlZXAgYWRkaW5nIGZvb3RlciBpbmNsdWRlcyBhbmQgZ2V0IG1vcmUgYW5k
IG1vcmUgcmVzdWx0cyBhcyBleHBlY3RlZC4NCiAgICA8YnIgLz4NCiAgICA8P3BldGFsOmlu
Y2x1ZGUgZmlsZT0iaW5jbHVkZXMvaGVhZGVyLnRtcGwiPz4NCiAgICA8cD5UaGlzIGluY2x1
ZGUgd29uJ3QgZ2V0IGRpc3BsYXllZDwvcD4NCiAgICA8P3BldGFsOmluY2x1ZGUgZmlsZT0i
aW5jbHVkZXMvZm9vdGVyLnRtcGwiPz4NCg0KICAgIDxociBzaXplPSI1IiB3aWR0aD0iNzUl
Ij4NCg0KICAgIDxwPkNyZWF0aW5nIGEgbGluazwvcD4NCiAgICAgICAgPHVsIHBldGFsOnJl
cGVhdD0ic3R1ZGVudCBzdHVkZW50cyI+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj48
P3BldGFsOnZhciBuYW1lPSJlbmNvZGU6IHN0dWRlbnQuZmlyc3RfbmFtZSI/PiA8P3BldGFs
OnZhciBuYW1lPSJlbmNvZGU6IHN0dWRlbnQubGFzdF9uYW1lIj8+IC0gPD9wZXRhbDp2YXIg
bmFtZT0iZW5jb2RlOiBzdHVkZW50LmVtYWlsIj8+PC9hPjwvbGk+DQogICAgICAgIDwvdWw+
DQoNCiAgICA8aHIgc2l6ZT0iNSIgd2lkdGg9Ijc1JSI+DQoJCTw/cGV0YWw6ZW5kPz4NCg0K
CQk8IS0tPw0KICAgIDxoMz5FbmQgVGVzdHM8L2gzPg0KDQogICAgPD9wZXRhbDppbmNsdWRl
IGZpbGU9ImluY2x1ZGVzL2Zvb3Rlci50bXBsIiB0YWludD0iMSI/Pg0KDQogICAgLS0+DQog
IDwvYm9keT4NCjwvaHRtbD4NCg0K

--Message-Boundary-30135--