summaryrefslogtreecommitdiff
path: root/symbian/sisify.pl
blob: 67f6d32a4c5c9fd923a804f8f645f2240dbe0e49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
#!/usr/bin/perl -w

#
# sisify.pl - package Perl scripts or Perl libraries into SIS files
#
# Copyright (c) 2004-2005 Nokia. All rights reserved.
# The sisify.pl utility is licensed under the same terms as Perl itself.
#

require 5.008;

use strict;

use vars qw($VERSION);

$VERSION = '0.2';

use Getopt::Long;
use File::Temp qw/tempdir/;
use File::Find;
use File::Basename qw/basename dirname/;
use Cwd qw/getcwd/;

BEGIN {
  # This utility has been developed in Windows under cmd.exe with
  # the Series 60 2.6 SDK installed, but for the makesis utility
  # in UNIX/Linux, try e.g. one of the following:
  # http://gnupoc.sourceforge.net/
  # http://symbianos.org/~andreh/ You
  # will also need the 'uidcrc' utility.
  die "$0: Looks like Cygwin, aborting.\n" if exists $ENV{'!C:'};
}

sub die_with_usage {
  if (@_) {
    warn "$0: $_\n" for @_;
  }
  die <<__USAGE__;
$0: Usage:
$0 [--variant=S60|S80|UIQ] [ --uid=hhhhhhhh ] [ --version=a.b.c ] [ --library=x.y.z ] [ some.pl | Some.pm | somefile | dir ... ]
The uid is the Symbian app uid for the SIS.
The version is the version of the SIS.
The library is the version of Perl under which to install.  If using this,
only specify directories for packaging.
__USAGE__
}

my $SisUid;
my $SisVersion;
my $Library;
my @SisPl;
my @SisPm;
my @SisDir;
my @SisOther;
my $AppName;
my $Debug;
my $ShowPkg;
my $Variant;

my $SisUidDefault     = 0x0acebabe;
my $SisVersionDefault = '0.0.0';
my $VariantDefault    = 'S60';

my %Variant = qw(S60 1 S80 1 UIQ 1);

die_with_usage()
  unless GetOptions(
		    'variant=s'		=> \$Variant,
		    'uid=s'		=> \$SisUid,
		    'version=s'		=> \$SisVersion,
		    'debug'		=> \$Debug,
		    'showpkg'		=> \$ShowPkg,
		    'library=s'		=> \$Library,
		    'appname=s'		=> \$AppName,
		   );
die_with_usage("Need to specify what to sisify")
  unless @ARGV;

unless (defined $Variant) {
  warn "$0: Defaulting to $VariantDefault\n";
  $Variant = $VariantDefault;
}

unless (exists $Variant{$Variant}) {
  die "$0: Unknown variant '$Variant'\n";
}

for my $i (@ARGV) {
  if ($i =~ /\.pl$/i) {
    push @SisPl, $i;
  } elsif ($i =~ /\.pm$/i) {
    push @SisPm, $i;
  } elsif (-f $i) {
    push @SisOther, $i;
  } elsif (-d $i) {
    push @SisDir, $i;
  } else {
    die_with_usage("Unknown sisifiable '$i'");
  }
}

sub do_system {
    my $cwd = getcwd();
    print qq{\# system("@_") [cwd "$cwd"]\n};
    return system("@_") == 0;
}

die_with_usage("Must specify something to sisify")
  unless @SisPl || @SisPm || @SisOther || @SisDir;

die_with_usage("With the lib option set, specify only directories")
  if defined $Library && ((@SisPl || @SisPm || @SisOther) || @SisDir == 0);

die_with_usage("Lib must define the Perl 5 version as 5.x.y")
  if defined $Library && $Library !~ /^5.\d+\.\d+$/;

die_with_usage("With the lib option unset, specify at least one .pl file")
  if (! defined $Library && @SisPl == 0);

if (!defined $AppName) {
  if (defined $Library) {
    $AppName = $SisDir[0];
    $AppName =~ tr!/!-!;
  } elsif (@SisPl > 0 && $SisPl[0] =~ /^(.+)\.pl$/i) {
    $AppName = basename($1);
  }
}

die_with_usage("Must either specify appname or at least one .pl file or the lib option")
  unless defined $AppName || defined $Library;

print "[app name '$AppName']\n" if $Debug;

unless (defined $SisUid) {
  $SisUid = $SisUidDefault;
  printf "[default app uid '0x%08x']\n", $SisUid;
} elsif ($SisUid =~ /^(?:0x)?([0-9a-f]{8})$/i) {
  $SisUid = hex($1);
} else {
  die_with_usage("Bad uid '$SisUid'");
}
$SisUid = sprintf "0x%08x", $SisUid;

die_with_usage("Bad uid '$SisUid'")
  if $SisUid !~ /^0x[0-9a-f]{8}$/i;

unless (defined $SisVersion) {
  $SisVersion = $SisVersionDefault;
  print "[default app version '$SisVersionDefault']\n";
} elsif ($SisVersion !~ /^\d+\.\d+\.\d+$/) {
  die_with_usage("Bad version '$SisVersion'")
}

my $tempdir = tempdir( CLEANUP => 1 );

print "[temp directory '$tempdir']\n" if $Debug;

for my $file (@SisPl, @SisPm, @SisOther) {
  print "[copying file '$file']\n" if $Debug;
  die_with_usage("$0: File '$file': $!") unless -f $file;
  my $dir = dirname($file);
  do_system("mkdir $tempdir\\$dir") unless $dir eq '.';
  do_system("copy $file $tempdir");
}
if (@SisPl) {
    do_system("copy $SisPl[0] $tempdir\\default.pl")
	unless $SisPl[0] eq "default.pl";
}
for my $dir (@SisDir) {
  print "[copying directory '$dir']\n" if $Debug;
  do_system("copy $dir $tempdir");
}

my $SisVersionCommas = $SisVersion;

$SisVersionCommas =~ s/\./\,/g;

my @pkg;

push @pkg, qq[&EN;];
push @pkg, qq[#{"$AppName"},($SisUid),$SisVersionCommas];
push @pkg, qq[(0x101F6F88), 0, 0, 0, {"Series60ProductID"}];

my $OWD = getcwd();

$OWD =~ s!/!\\!g;

chdir($tempdir) or die "$0: chdir('$tempdir')\n";

if (@SisPl) {
  if (open(my $fi, "default.pl")) {
    my $fn = "default.pl.new";
    if (open(my $fo, ">$fn")) {
      while (<$fi>) {
	last unless /^\#/;
	print $fo $_;
      }
      print $fo "use lib qw(\\system\\apps\\$AppName \\system\\apps\\$AppName\\lib);\n";
      printf $fo qq[# %d "$SisPl[0]"\n], $.;
      print $fo $_;
      while (<$fi>) {
	print $fo $_;
      }
      close($fo);
    } else {
      die "$0: open '>$fn': $!\n";
    }
    close($fi);
    rename($fn, "default.pl") or die "$0: rename $fn default.pl: $!\n";
    # system("cat -nvet default.pl");
  } else {
    die "$0: open 'default.pl': $!\n";
  }
}


my @c;
find(
     sub {
       if (-f $_) {
	 $File::Find::name =~ s!^\./!!;
	 push @c, $File::Find::name;
       }
     }
     ,
     ".");

for my $i (sort @c) {
  my $j = $i;
  $j =~ s!/!\\!g;
  push @pkg, defined $Library ? qq["$j"-"!:\\System\\Libs\\Perl\\siteperl\\$Library\\$j"] : qq["$j"-"!:\\system\\apps\\$AppName\\$j"];
}

sub hex2data {
  pack("H*", shift); # symbian\hexdump.pl to create the hexdumps.
}

my $APPHEX;
my $RSCHEX;

unless ($Library) {
  # If we package an application we will need both a launching native
  # Symbian application and a resource file for it.  The resource file
  # we can get easily from a stub but for the native app we need to
  # patch in the right Symbian app uids and executable checksums.

  &init_hex; # Initialized $APPHEX and $RSCHEX.

  die "$0: No app template found\n" unless defined $APPHEX && defined $RSCHEX;

  my $app = hex2data($APPHEX);
  my $uidcrc;
  my $uids = "0x10000079 0x100039CE $SisUid";

  my $cmd = "uidcrc $uids |";

  if (open(my $fh, $cmd)) {
    my $line = <$fh>;
    close($fh);
    # 0x10000079 0x100039ce 0x0acebabe 0xc82b1900
    $line =~ s/\r?\n$//;
    if ($line =~ /^$uids (0x[0-9a-f]{8})$/i) {
      $uidcrc = hex($1);
    } else {
      die "$0: uidcrc returned '$line'\n";
    }
  } else {
    die qq[$0: open '$cmd' failed: $!\n];
  }

  my $uid    = hex($SisUid);

  my $oldchk = unpack('V', substr($app, 24, 4));
  my $newchk = ($uid + $oldchk) & 0xFFFFFFFF;

  # printf "# uid    = 0x%08x\n", $uid;
  # printf "# uidcrc = 0x%08x\n", $uidcrc;
  # printf "# oldchk = 0x%08x\n", $oldchk;
  # printf "# newchk = 0x%08x\n", $newchk;

  substr($app,  8, 4) = pack('V', $uid);
  substr($app, 12, 4) = pack('V', $uidcrc);
  substr($app, 24, 4) = pack('V', $newchk);
  
  my $UID_OFFSET = 0x0C7C; # This is where the uid is in the $app.
  substr($app, $UID_OFFSET, 4) = substr($app, 8, 4); # Copy the uid also here.

  if (open(my $fh, ">$AppName.app")) {
    binmode($fh);
    print $fh $app;
    close($fh);
  } else {
    die qq[$0: open '>$AppName.app' failed: $!\n];
  }

  push @pkg, qq["$AppName.app"-"!:\\system\\apps\\$AppName\\$AppName.app"];

  if (open(my $fh, ">$AppName.rsc")) {
    binmode($fh);
    print $fh hex2data($RSCHEX);
    close($fh);
  } else {
    die qq[$0: open '>$AppName.rsc' failed: $!\n];
  }
  push @pkg, qq["$AppName.rsc"-"!:\\system\\apps\\$AppName\\$AppName.rsc"];
}

if ($ShowPkg) {
  for my $l (@pkg) {
    print $l, "\r\n";
  }
} else {
  my $fn = "$AppName.pkg";
  if (open(my $fh, ">$fn")) {
    for my $l (@pkg) {
      print $fh "$l\r\n"; # Note CRLF!
    }
    close($fh);
  } else {
    die qq[$0: Failed to open "$fn" for writing: $!\n];
  }
  my $sis = "$AppName.SIS";
  unlink($sis);
  do_system("dir");
  do_system("makesis $fn");
  unless (-f $sis) {
    die qq[$0: failed to create "$sis"\n];
  }
  do_system("copy $AppName.sis $OWD");
  chdir($OWD);
  system("dir $sis");
  print "\n=== Now transfer $sis to your device ===\n";
}

exit(0);

# To create the hex: print unpack("H*", $data);

sub init_hex {
  # This is Symbian application executable skeleton.
  # You can create the ...\epoc32\release\thumb\urel\foo.app
  # by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h.
  # The following executable has been compiled using the Series 60 SDK 2.6
  # for Visual C.
  # Use symbian\hexdump.pl to create the perlappmin.hex for this hexdump.
  if ($Variant eq 'S60') {
      $APPHEX = <<__APP__;
79000010ce390010f61520108581107645504f430020000017240aa7000000000100bf0000641e2823e2e000030000019011000000000000001000000000100000200000000000000100000000000010000000000700000008120000010000004c0f00007c000000000000000c1200000c150000000000005e01000000b500f0f7f902bc084700000148006870470000280c001000b5011c024800f0b3fc01bc00470000480c001030b585b00490002100f004fd6846049900f046fb684600f01bf9011c049cb4256d006019016004980022002300f002fab6256d0065190020286000f003fa012100f006fa05b030bc01bc0047f0b5071c0e1c1e4878611e48b8611e48f8611e48b8641e48f8641e483860b42464003d192968002910d0786800f018fb2968002905d008688268081c032100f0a3f9b4246400391900200860b62464003d192868002803d000f060fc00202860b96a002905d008688268081c032100f08bf9381c311c00f0adfcf0bc01bc0047d40e0010380f0010280f0010080f0010140f00106c0c001084b010b595b01790189119921a9301200021002200f07efc041c14a901a800f037fc002808d10090201c17a90222002300f076fc00f032fc00f036fc15b010bc08bc04b018470000f0b5474680b4324ca544071c8846022952d100f0bbfa011c0a687ea8126a00f043f98026f6006e44301c00f07dfa2949301c7eaa002300f07dfac425ed006d44281c00f07ffa244c6c440021224868440160201c042100f07bfa301c00f07efa011c201c2a1c00f07ffa002824d1301c00f074fa011c8420000168448022520000f0f4fb8521090169446846fc22520000f0f2fb84200001684400680f49694409680f4a6a4412680e4b6b441b68fff783ff381c00f070fa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffff2c0c0010480a000044080000480800004c0800004c0a000000b50120fff7e6fe01bc004700b5021c80204000814202d00348814206d1101c00f044fa05e00000c10b0000081cfff7e7ff01bc0047000010b500f007f8041c00f0aafb201c10bc02bc084730b5051c302000f0a7fb041c002c05d000f0f2f80748606007482060201c00f0a1fb201c291c00f009f8201c30bc02bc08470000e40c0010f40c001030b5041c0d1c00f0dff8201c291c00f0e1f82068016a201c00f08af830bc01bc0047000000b5044a4260044a026000f0d7f801bc00470000e40c0010f40c001030b584b0041c00f0d1f8051c6846211c00f0d2f82868b8300268281c694600f069f804b030bc01bc0047000030b5051c242000f053fb041c002c04d0291c00f085fb03482060201c30bc02bc08470000a40d001070b5b820400000f03ffb061c002e18d000f0c4f90d48b0640d48f0640d4d75610d4cb4610d4bf3610d4ab2640d49f1640d4830600d483060301c6030802100f02ffb301c70bc02bc084700003c0e0010480e0010d40e0010380f0010280f0010080f0010140f00105c0e00106c0c001010b58b20800000f019fb041c002c03d000f092f902482060201c10bc02bc0847000e0010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c0464c0f0010014b1b681847c046540f0010014b1b681847c046580f0010014b1b681847c046500f001040b4024e3668b44640bc6047a00f0010014b1b681847c04620100010014b1b681847c0463c100010014b1b681847c0462c100010014b1b681847c046b00f0010014b1b681847c04618100010014b1b681847c04628100010014b1b681847c04624100010014b1b681847c046f80f0010014b1b681847c046ec0f0010014b1b681847c046e40f0010014b1b681847c04610100010014b1b681847c0460c100010014b1b681847c046a80f0010014b1b681847c0469c0f0010014b1b681847c046f40f0010014b1b681847c04638100010014b1b681847c04604100010014b1b681847c04614100010014b1b681847c046d40f0010014b1b681847c046e80f0010014b1b681847c046cc0f0010014b1b681847c046b80f0010014b1b681847c046bc0f0010014b1b681847c046dc0f0010014b1b681847c046c80f0010014b1b681847c046c40f0010014b1b681847c046b40f0010014b1b681847c0461c100010014b1b681847c046f00f0010014b1b681847c046ac0f0010014b1b681847c046a40f0010014b1b681847c046fc0f0010014b1b681847c04600100010014b1b681847c046e00f0010014b1b681847c046c00f0010014b1b681847c046d00f0010014b1b681847c04608100010014b1b681847c046d80f0010014b1b681847c04640100010014b1b681847c04644100010014b1b681847c04630100010014b1b681847c04634100010014b1b681847c0464c100010014b1b681847c04648100010014b1b681847c0466410001040b4024e3668b44640bc60475c100010014b1b681847c04660100010014b1b681847c04650100010014b1b681847c04658100010014b1b681847c04654100010014b1b681847c04678100010014b1b681847c046e8100010014b1b681847c04668100010014b1b681847c0469c100010014b1b681847c04634110010014b1b681847c04630110010014b1b681847c04648110010014b1b681847c046f8100010014b1b681847c046a8100010014b1b681847c046b8100010014b1b681847c04618110010014b1b681847c046e4100010014b1b681847c046d8100010014b1b681847c04688100010014b1b681847c046bc100010014b1b681847c04624110010014b1b681847c046fc100010014b1b681847c04600110010014b1b681847c04684100010014b1b681847c046d4100010014b1b681847c04670100010014b1b681847c046f0100010014b1b681847c046a4100010014b1b681847c0466c100010014b1b681847c04604110010014b1b681847c046cc100010014b1b681847c0468c100010014b1b681847c04698100010014b1b681847c046dc100010014b1b681847c04610110010014b1b681847c0461c110010014b1b681847c04608110010014b1b681847c046a0100010014b1b681847c046c8100010014b1b681847c046c4100010014b1b681847c046ec100010014b1b681847c046f4100010014b1b681847c04620110010014b1b681847c0463c11001040b4024e3668b44640bc6047c0100010014b1b681847c04614110010014b1b681847c04680100010014b1b681847c046ac100010014b1b681847c0467410001040b4024e3668b44640bc60470c110010014b1b681847c04694100010014b1b681847c04690100010014b1b681847c046d0100010014b1b681847c04638110010014b1b681847c0467c10001040b4024e3668b44640bc6047e0100010014b1b681847c046b0100010014b1b681847c04640110010014b1b681847c0464411001040b4024e3668b44640bc6047b4100010014b1b681847c0462c110010014b1b681847c04628110010014b1b681847c04654110010014b1b681847c04674110010014b1b681847c04664110010014b1b681847c04668110010014b1b681847c04658110010014b1b681847c0466c110010014b1b681847c0464c110010014b1b681847c0465c110010014b1b681847c04650110010014b1b681847c04660110010014b1b681847c04670110010014b1b681847c04678110010014b1b681847c0467c110010014b1b681847c0468011001040b4024e3668b44640bc604784110010014b1b681847c0465c0f0010014b1b681847c046940f0010014b1b681847c046980f0010014b1b681847c046740f0010014b1b681847c046840f0010014b1b681847c046640f0010014b1b681847c0466c0f001040b4024e3668b44640bc6047600f0010014b1b681847c046900f0010014b1b681847c0468c0f0010014b1b681847c046800f0010014b1b681847c0467c0f001040b4024e3668b44640bc6047780f0010014b1b681847c046680f0010014b1b681847c046700f0010014b1b681847c046880f00107047000000b5fff72fff01bc0047000000b5fff72fff01bc0047000000b5fff723ff01bc0047000010b581b0039c14380094fff7b1fe01b010bc01bc0047000000b51438fff7d6ff01bc004700b51438fff7aafe01bc004700b51838fff7fcfe02bc084700b51c38fff7f0fe02bc084700b51c38fff7e4fe02bc084700b50438fff774fd02bc084700b50438fff768fd02bc084700b54838fff7a0ff01bc004700b54c38fff7a0ff01bc0047ffffffff00000000ffffffff00000000280c0010480c0010d40e0010380f0010280f0010080f0010140f00106c0c00102c0c0010e40c0010f40c0010e40c0010f40c0010a40d00103c0e0010480e0010d40e0010380f0010280f0010080f0010140f00105c0e00106c0c0010680d0010000e0010f81520100a000000640065006600610075006c0074002e0070006c00000000000e0000005000650072006c004100700070004d0069006e0069006d0061006c0000000000000000000000000079000010650a0010710a00101507001021070010fd050010090600107d0a001015060010890a00102d070010210600102d0600102d00001039070010590100104507001051020010510700105d07001069070010950a001075070010810700108d07001099070010a50a0010b10a0010fcffffff00000000910b0010850b00100000000000000000f1020010d1040010dd040010e9040010f5040010010500100d0500101905001025050010310500103d0500104905001055050010610500106d0500107905001085050010910500109d050010a9050010b5050010c1050010cd050010d90500100d030010e5050010f105001000000000000000000d0b0010bd0a0010a5070010190a0010c90a0010b107001031040010bd070010c9070010d5070010e1070010ed070010190a00100000000000000000190b0010f9070010050800103d040010110800101d080010290800103508001041080010090b00104d08001059080010490400105504001065080010710800107d08001061030010d50a001089080010950800100000000000000000250b0010bd0a0010a50700100d000010c90a0010b107001031040010bd070010c9070010d5070010e1070010ed070010390300100000000000000000190a00100000000000000000190a0010390600104506001000000000000000004d0a0010650a0010710a00101507001021070010fd050010090600107d0a001015060010890a00102d070010210600102d06001021090010390700102d090010450700103d090010510700105d07001069070010950a001075070010810700108d07001099070010a50a0010b10a0010ecffffff00000000490b0010bd080010c9080010d5080010e1080010f1080010fd080010310b001009090010550b001015090010b8ffffff000000009d0b0010b4ffffff00000000a90b00103906001045060010e4ffffff00000000790b00106d0b0010e8ffffff00000000610b0010510600105d06001003000000060000001b000000470000003f000000ee020000f502000022030000230300002503000028030000b5040000b6040000d2040000e6040000f304000044050000480500000008000005080000030000000c0000001c0000001d000000210000002800000042000000480000004a000000520000005400000055000000570000005a0000005f0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000ad000000b1000000b9000000bb000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ec000000ff0000000001000014010000150100002401000025010000380100003a010000120000002700000033000000b7000000e3000000e600000011000000140000001e0000001f0000002000000028000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004c00000050000000510000005200000054000000560000006400000074000000790000007a0000007c0000008200000085000000860000008c0000008e0000008f00000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c6000000c8000000cc000000ce000000d5000000d6000000de000000e0000000e2000000fd000000080100002201000028010000020000000300000029030000380300003c0300005a0300007c0400008c0400000205000003050000e00500002e0600004b060000040000007805000000000000d103000000030000780200000400000003000000060000001b000000470000008d020000100000003f000000ee020000f502000022030000230300002503000028030000b5040000b6040000d2040000e6040000f304000044050000480500000008000005080000a10200002d000000030000000c0000001c0000001d000000210000002800000042000000480000004a000000520000005400000055000000570000005a0000005f0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000ad000000b1000000b9000000bb000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ec000000ff0000000001000014010000150100002401000025010000380100003a010000b402000006000000120000002700000033000000b7000000e3000000e6000000c80200003900000011000000140000001e0000001f0000002000000028000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004c00000050000000510000005200000054000000560000006400000074000000790000007a0000007c0000008200000085000000860000008c0000008e0000008f00000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c6000000c8000000cc000000ce000000d5000000d6000000de000000e0000000e2000000fd000000080100002201000028010000de0200000d000000020000000300000029030000380300003c0300005a0300007c0400008c0400000205000003050000e00500002e0600004b060000f20200000200000004000000780500004150504152435b31303030336133645d2e444c4c0041564b4f4e5b31303030353663365d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f52455b31303030343839325d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c000000c00200005c01000000000000c002000014302830f830fc300031043108310c312c32c432c832043308335c33ac33b033b433b833bc33c033c433c833cc33f0333834443450345c346c347834843490349c34a834b434c034cc34d834e434f034fc340835143520352c353835443550355c356835743580358c359835a435b035bc35c835d435e035ec35f835043610361c362836343640364c365836643670367c3688369836a436b036bc36c836d436e036ec36f836043710371c372837343740374c375837643770377c3788379437a037ac37b837c437d037dc37e837f43700380c381838243830383c384838543860386c387838843890389c38ac38b838c438d038dc38ec38f838043910391c3928393839443950395c396c397839843990399c39a839b439c039cc39d839e439f039fc39083a143a203a2c3a3c3a483a543a603a6c3a783a843a903aa03aac3ab83ac43ad03ae03aec3af83a043bc43bc83bcc3bd03bd43bd83bdc3be03be43be83bec3bf03bf43bf83bfc3b003c043c083c0c3c103c143c183c1c3c203c243c743c783c7c3c803c843c883c8c3c903c943c983c9c3ca03ca43ca83cac3cb03cb43cb83cbc3cc03cc43cc83ccc3cd03cd43cd83cdc3ce03cec3cf03cfc3c003d043d083d0c3d103d143d183d1c3d203d243d283d2c3d303d343d383d3c3d403d443d483d4c3d503d543d583d5c3d603d643d703d743d783d7c3d803d843d883d8c3d903d943d983d9c3da03dac3db03db43db83dbc3dc03dc43dc83dcc3dd03dd43dd83ddc3de03de43de83dec3df03df43df83dfc3d083e0c3e103e143e183e1c3e203e243e283e2c3e303e343e383e443e503e543e583e643e683e6c3e703e743e783e7c3e803e843e883e8c3e903e943e983e9c3ea03ea43ea83eac3eb03eb43eb83ebc3ec03ec43ec83ecc3ed03edc3ee03ee43ee83eec3ef03ef43ef83efc3e003f043f103f1c3f203f243f303f343f403f443f483f
__APP__
  }

  # This is Symbian application resource skeleton.
  # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc
  # by compiling the PerlApp.cpp.
  # The following resource has been compiled using the Series 60 SDK 2.6
  # for Visual C.
  # Use symbian\hexdump.pl to create the perlrscmin.hex for this hexdump.
  if ($Variant eq 'S60') {
    $RSCHEX = <<__RSC__;
6b4a1f10000000005fde04001ca360de01b80010000400000001f0e54d0000000004f0e54d00000000000000001a00cc0800000000010005f0e54d000000000000ffffffff0000000000000000000f0500000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff00000000020400000000000000000000030352756e170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff00000000000000000120000000000000001400cc0801006816000100000000000100000000ffffffff00ffffffff0000000000000000ffff000000000000000120000000000000002400cc0801006816000100000000000100000000ffffffff00ffffffff0000000000000000ffff000000000000004122000000000000001400cc08010069160000050000000001000000000000000001000000040007000800ff020100ffffffff00000000000000000000ffff000000000000004122000000000000001400cc08010074160007000000000054160000ffffffff000000000000ffff00000000000000000000000015001d001d0035004d00ef0026015d01a301d201d701
__RSC__
  }

  # This is Symbian application executable skeleton.
  # You can create the ...\epoc32\release\thumb\urel\foo.app
  # by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h.
  # The following executable has been compiled using the Series 80 SDK 2.0
  # for Visual C.
  # Use symbian\hexdump.pl to create the perlappmin.hex for this hexdump.
  if ($Variant eq 'S80') {
      $APPHEX = <<__APP__;
79000010ce390010f61520108581107645504f430020000000756022000000000100bb0080ac4d1223e2e00003000001a80e0000000000000010000000001000002000000000000001000000000000100000000007000000200f000001000000a00c00007c00000000000000240f0000ec110000000000005e01000000b500f0cff902bc0847000001480068704700009c0a001000b5011c024800f075fc01bc00470000bc0a001030b585b00490002100f0e6fa6846049900f0e8fa684600f013f9011c049c9e256d006019016004980022002300f0daf9a0256d0065190020286000f0dbf9012100f0def905b030bc01bc0047f0b5071c0e1c1b4878611b48b8611b4838609e2464003d192968002910d0786800f0c0fa2968002905d008688268081c032100f081f99e246400391900200860a02464003d192868002803d000f028fc00202860796a002905d008688268081c032100f069f9381c311c00f0a1faf0bc01bc0047580c00108c0c0010e00a001084b010b595b01790189119921a9301200021002200f046fc041c14a901a800f005fc002808d10090201c17a90222002300f03efc00f000fc00f004fc15b010bc08bc04b018470000f0b5474680b4324ca544071c8846022952d100f06ffa011c0a687ea8126a00f027f98026f6006e44301c00f025fa2949301c7eaa002300f025fac425ed006d44281c00f027fa244c6c440021224868440160201c042100f023fa301c00f026fa011c201c2a1c00f027fa002824d1301c00f01cfa011c8420000168448022520000f0c2fb8521090169446846fc22520000f0c0fb84200001684400680f49694409680f4a6a4412680e4b6b441b68fff783ff381c00f024fa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffffa00a0010480a000044080000480800004c0800004c0a000000b50120fff7f2fe01bc004700b5081cfff7f6ff01bc004710b5021c80204000814203d1101c00f0f5f905e09e24640010190068fff7eaff10bc01bc0047000010b500f007f8041c00f074fb201c10bc02bc084730b5051c2c2000f071fb041c002c03d000f092fb06482060201c00f06dfb201c291c00f007f8201c30bc02bc084700004c0b001030b5041c0d1c00f0bdf8201c291c00f0bff82068016a201c00f06ef830bc01bc0047000000b5034a026000f0b7f801bc004700004c0b001030b584b0041c00f0b3f8051c6846211c00f0b4f82868b8300268281c694600f051f804b030bc01bc0047000030b5051c242000f025fb041c002c04d0291c00f08ff903482060201c30bc02bc08470000c00b001010b5a220400000f011fb041c002c0cd000f082f9074860610748a06107482060201c3430802100f00dfb201c10bc02bc08470000580c00108c0c0010e00a001010b58b20800000f003fb041c002c03d000f068f902482060201c10bc02bc08471c0c0010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c046a00c0010014b1b681847c046a80c0010014b1b681847c046ac0c0010014b1b681847c046a40c001040b4024e3668b44640bc6047b40c0010014b1b681847c046200d0010014b1b681847c046380d0010014b1b681847c046c40c0010014b1b681847c046180d0010014b1b681847c046280d0010014b1b681847c046240d0010014b1b681847c046000d0010014b1b681847c046f40c0010014b1b681847c046ec0c0010014b1b681847c046100d0010014b1b681847c0460c0d0010014b1b681847c046bc0c0010014b1b681847c046b00c0010014b1b681847c046fc0c0010014b1b681847c046340d0010014b1b681847c046140d0010014b1b681847c046f00c0010014b1b681847c046cc0c0010014b1b681847c046e40c0010014b1b681847c046d80c0010014b1b681847c046d40c0010014b1b681847c046c80c0010014b1b681847c0461c0d0010014b1b681847c046f80c0010014b1b681847c046c00c0010014b1b681847c046b80c0010014b1b681847c046040d0010014b1b681847c046e80c0010014b1b681847c046d00c0010014b1b681847c046dc0c0010014b1b681847c046080d0010014b1b681847c046e00c0010014b1b681847c0462c0d0010014b1b681847c046300d0010014b1b681847c046500d001040b4024e3668b44640bc6047480d0010014b1b681847c0464c0d0010014b1b681847c0463c0d0010014b1b681847c046440d0010014b1b681847c046400d0010014b1b681847c046640e0010014b1b681847c0467c0d0010014b1b681847c046f80d0010014b1b681847c046400e0010014b1b681847c0466c0d0010014b1b681847c0469c0d0010014b1b681847c046440e0010014b1b681847c0464c0e0010014b1b681847c046480e0010014b1b681847c046580e0010014b1b681847c046600e0010014b1b681847c046040e0010014b1b681847c0460c0e0010014b1b681847c046540e0010014b1b681847c046c40d0010014b1b681847c046a80d0010014b1b681847c046b80d0010014b1b681847c046f40d0010014b1b681847c046e00d0010014b1b681847c046880d001040b4024e3668b44640bc6047b00d0010014b1b681847c046bc0d0010014b1b681847c046340e0010014b1b681847c046100e0010014b1b681847c046140e0010014b1b681847c046e80d0010014b1b681847c046840d0010014b1b681847c046e40d0010014b1b681847c046d80d0010014b1b681847c046740d0010014b1b681847c046000e0010014b1b681847c046a40d0010014b1b681847c046700d0010014b1b681847c046180e0010014b1b681847c046d00d0010014b1b681847c0468c0d0010014b1b681847c046980d0010014b1b681847c046ec0d0010014b1b681847c046240e0010014b1b681847c0462c0e0010014b1b681847c0461c0e0010014b1b681847c046a00d0010014b1b681847c046cc0d0010014b1b681847c046c80d0010014b1b681847c046fc0d0010014b1b681847c046080e001040b4024e3668b44640bc6047dc0d0010014b1b681847c046300e0010014b1b681847c0465c0e001040b4024e3668b44640bc6047b40d0010014b1b681847c046f00d001040b4024e3668b44640bc6047c00d0010014b1b681847c046280e0010014b1b681847c046800d0010014b1b681847c046ac0d0010014b1b681847c046780d001040b4024e3668b44640bc6047200e0010014b1b681847c046940d0010014b1b681847c046900d0010014b1b681847c046d40d0010014b1b681847c046500e0010014b1b681847c0463c0e0010014b1b681847c046380e0010014b1b681847c046700e0010014b1b681847c046900e0010014b1b681847c046800e0010014b1b681847c046840e0010014b1b681847c046740e0010014b1b681847c046880e0010014b1b681847c046680e0010014b1b681847c046780e0010014b1b681847c0466c0e0010014b1b681847c0467c0e0010014b1b681847c0468c0e0010014b1b681847c046940e0010014b1b681847c046980e001040b4024e3668b44640bc60479c0e0010014b1b681847c046640d0010014b1b681847c046600d0010014b1b681847c0465c0d0010014b1b681847c046580d0010014b1b681847c046540d0010014b1b681847c046680d00107047000000b5fff77bff01bc0047000000b5fff76fff01bc0047000010b581b0039c14380094fff725ff01b010bc01bc0047000000b51438fff716ff01bc004700b51438fff71eff01bc004700b51838fff702ff02bc0847ffffffff00000000ffffffff000000009c0a0010bc0a0010580c00108c0c0010e00a0010a00a00104c0b00104c0b0010c00b0010580c00108c0c0010e00a00101c0c0010f81520100a000000640065006600610075006c0074002e0070006c00000000000e0000005000650072006c004100700070004d0069006e0069006d0061006c0000000000000000000000000079000010710600107d06001089060010950600106505001071050010a10600107d050010ad060010b906001089050010950500102d000010c50600104101001045020010d1060010dd060010e9060010f506001005070010110700101d070010290700100000000000000000d902001075040010810400108d04001099040010a5040010b1040010bd040010c9040010c5090010d5040010d1090010e1040010dd090010e9090010ed040010f904001005050010110500101d0500102905001035050010410500104d050010ed020010f5090010590500100000000000000000050a0010a1070010ad070010ed030010b9070010c5070010d1070010dd070010e9070010010a0010f507001001080010f9030010050400100d08001019080010250800104103001031080010410800104d0800100000000000000000110a001035070010410700100d0000104d07001059070010e103001065070010710700107d070010890700109507001019030010ecffffff00000000350a0010910800109d080010a9080010b5080010c5080010d10800101d0a0010dd080010410a0010e9080010e8ffffff000000004d0a0010a1050010ad05001003000000060000001b00000047000000030000000c0000001c0000001d0000002100000028000000420000004a0000005200000054000000550000005a0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000b1000000bb000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ff000000000100001401000015010000120000002700000033000000b7000000e3000000e6000000260100005601000065010000800200000a040000af04000011000000140000001e0000001f00000020000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004e0000005000000051000000520000005400000055000000560000006400000074000000790000007a0000007b0000007c0000007d0000007f0000008200000083000000860000008c0000008e0000008f0000009000000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000d6000000d9000000db000000de000000e0000000e2000000e5000000fb000000fd000000fe0000002f010000020000000300000029030000380300003c0300005a0300007c0400008c0400000205000003050000e00500002e06000004000000780500000000000081030000c80200003c0200000400000003000000060000001b000000470000005102000023000000030000000c0000001c0000001d0000002100000028000000420000004a0000005200000054000000550000005a0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000b1000000bb000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ff0000000001000014010000150100006402000006000000120000002700000033000000b7000000e3000000e60000007802000006000000260100005601000065010000800200000a040000af0400008f0200003f00000011000000140000001e0000001f00000020000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004e0000005000000051000000520000005400000055000000560000006400000074000000790000007a0000007b0000007c0000007d0000007f0000008200000083000000860000008c0000008e0000008f0000009000000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000d6000000d9000000db000000de000000e0000000e2000000e5000000fb000000fd000000fe0000002f010000a50200000c000000020000000300000029030000380300003c0300005a0300007c0400008c0400000205000003050000e00500002e060000b90200000200000004000000780500004150504152435b31303030336133645d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f43544c5b31303030343839655d2e444c4c0045494b434f52455b31303030343839325d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c0000000004020000fe000000000000000402000014302830ec30f030f4301432b032e8323c33743378337c33a033e833f43300340c341c342834343440344c345834643470347c3488349434a034ac34b834c434d034dc34e834f43400350c351835243530353c354835543560356c357835843590359c35a835b435c035d035dc35e835f43500360c361836243630363c364836543660366c367836843690369c36a836b436c036cc36d836e436f03600370c371837243730373c374837543760376c377837843790379c37a837b437c037cc37d837e437f037fc370838143820382c383c38483854386438703880388c389838a438b038c038cc38d838e438f038fc380839143920392c393839443950395c396839743980398c399839a439b439c039cc39d839e439f039fc39683a6c3a703a743a783a7c3a803a843a883a8c3a903a943a983ae83aec3af03af43af83afc3a003b043b083b0c3b103b143b183b1c3b203b243b283b2c3b303b343b383b3c3b403b443b483b543b583b5c3b603b643b683b6c3b703b743b783b7c3b803b843b883b8c3b903b943b983b9c3ba03ba43ba83bac3bb03bb43bb83bbc3bc83bcc3bd03bd43bd83bdc3be03be43be83bec3bf03bf43bf83bfc3b003c043c083c0c3c103c143c183c243c283c2c3c303c343c383c3c3c403c443c483c4c3c503c543c603c643c683c6c3c703c743c783c7c3c803c843c883c943c983c9c3c
__APP__
  }

  # This is Symbian application resource skeleton.
  # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc
  # by compiling the PerlApp.cpp.
  # The following resource has been compiled using the Series 80 SDK 2.0
  # for Visual C.
  # Use symbian\hexdump.pl to create the perlrscmin.hex for this hexdump.
  if ($Variant eq 'S80') {
    $RSCHEX = <<__RSC__;
6b4a1f10000000005fde04001ca360de01b800780400000001f0e54d0000000005f0e54d000000000000000004f0e54d000000000010010000005000000000000400000204030352756e0900ffffffff00030408084f6e656c696e65720900ffffffff000504050541626f75740900ffffffff0000010404457869740500ffffffff0007010006f0e54d07074f7074696f6e73110000000000ffffffff0000000000000000000f0500000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff00000000020400000000000000000000030352756e170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff00000000000000000003010005055469746c65110000000064b0f3000000000001000200060650726f6d70740f06040000000000000a00010080000014001c001c0034008200a50047017b01
__RSC__
  }

  # This is Symbian application executable skeleton.
  # You can create the ...\epoc32\release\thumb\urel\foo.app
  # by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h.
  # The following executable has been compiled using the UIQ SDK 2.1
  # for CodeWarrior.
  # Use symbian\hexdump.pl to create the perlappmin.hex for this hexdump.
  if ($Variant eq 'UIQ') {
      $APPHEX = <<__APP__;
79000010ce390010f61520108581107645504f43002000001c2ae529000000000100af00c0f9bef022e2e00003000000ac2e000000000000001000000000100000200000000000000100000000000010000000000c000000242f000001000000442b00007c00000000000000282f0000e0330000000000005e01000000b501f0cbfb02bc0847000001480068704700009c26001000b5011c024801f039fe01bc00470000bc26001030b585b00490002102f016f86846049901f048fd684601f0f7fa011c049ca4256d006019016004980022002301f0e4fba6256d0065190020286001f0e5fb012101f0e8fb05b030bc01bc0047f0b5071c0e1c1b4878611b48b8611b483860a42464003d192968002910d0786801f020fd2968002905d008688268081c032101f07dfba4246400391900200860a62464003d192868002803d001f0ecfd00202860796a002905d008688268081c032101f065fb381c311c01f0c5fff0bc01bc0047fc2a0010302b00109c28001000b5682001f0d6fd002801d001f0d6fe054901f0d9fe00220221c84200d10122101c02bc0847000007f0e54d00b5682001f0c0fd002801d001f0c0fe054901f0c3fe00220221c84200d10122101c02bc0847000009f0e54d10b5041c01f06efb211c01f0c5fc10bc01bc004710b5041c01f064fb211c01f0c1fc012010bc02bc0847000030b5041c0d1c01f097fe0b48e0620b4820630b4860630b48a0630b482060a566201c6c3001f08afd201c743001f086fd201c30bc02bc0847742800108028001060280010d82a00103c2a001010b5041c054901f07dfe01f057fea16e0860012010bc02bc084700000604000010b5041c211c6c3101f072fe0549201c01f074fe7434211c01f046fe10bc01bc0047000006040000f0b5474680b481b0051c0e1c90461f1c00200090802001f041fd041c002c03d06946fff7a3ff041c201c6c30002802d0291c01f03ffd201c7430002802d0311c01f038fde7670449201c01f031fe002804d1002007e0000006f0e54d0099404601f02efd012001b008bc9846f0bc02bc084700000020704784b030b50390049105920693204903a801f020fd041c0025002c06d103a8002101f01efd00885c282bd0022c2ad103a8002101f015fd0088402806d903a8002101f00efd00885a280dd903a8002101f007fd0088602815d903a8002101f000fd00887a280ed803a8012101f0f9fc00883a2807d103a8022101f0f2fc00885c2800d10125281c30bc08bc04b0184700002428001084b030b50390049105920693204903a801f0d6fc041c0025002c06d103a8002101f0d4fc00885c282bd0022c2ad103a8002101f0cbfc0088402806d903a8002101f0c4fc00885a280dd903a8002101f0bdfc0088602815d903a8002101f0b6fc00887a280ed803a8012101f0affc00883a2807d103a8022101f0a8fc00885c2800d10125281c30bc08bc04b0184700000428001030b584b001f02efb009001916d4602ac0849201c01f096fc281c211c01f098fc0021002800d10121081c04b030bc02bc084700007423001030b584b001f012fb009001916d4602ac0849201c01f07afc281c211c01f07cfc0021002800d10121081c04b030bc02bc0847000080230010f0b52c4ca54486ab18600f1c151c012668468021490001f069fc82ac2649201c01f058fc6846211c2a1c01f065fc6846fff752fe002855d084ac2049201c01f049fc6846211c2a1c01f056fc6846fff743fe002846d086a8291c01f0bff900280fd087ac1649201c01f034fc6846211c2a1c01f041fc6846fff72efe002800d10026002e2ed086a8391c2a1c012301f0abf9061c002e17d189ac0a49201c01f019fc6846211c2a1c01f026fc6846fff73ffe17e0ccfdffff8c230010f823001018240010382400108bac0949201c01f001fc6846211c321c2b1c01f00dfc6846fff730fe8d239b009d44f0bc01bc00475424001084b0f0b557464e464546e0b484b00c900d910e920f934ea800684e904fa80068814601f0f7fb4c466468a0460c980001070900264e9c0294484601f0ebfbbc4200dbc1e10ca8029901f0eafb007820281cd00ca8029901f0e3fb0078092815d00ca8029901f0dcfb00780a280ed00ca8029901f0d5fb00780d2807d00ca8029901f0cefb00780c2800d09de1029cbc4200db99e10ca8211c01f0c2fb007820281bd00ca8029901f0bbfb0078092814d00ca8029901f0b4fb00780a280dd00ca8029901f0adfb00780d2806d00ca8029901f0a6fb00780c2803d1029c01340294d4e7029cbc4200db6ee10ca8211c01f097fb0078402806d90ca8029901f090fb00785a280fd90ca8029901f089fb0078602800d858e10ca8029901f081fb00787a2800d950e1029cbc4200db04e10ca8211c01f075fb0078402806d90ca8029901f06efb00785a2823d90ca8029901f067fb0078602806d90ca8029901f060fb00787a2815d90ca8029901f059fb00782f2806d90ca8029901f052fb0078392807d90ca8029901f04bfb00785f2800d0d2e0029cbc4243da0ca8211c01f040fb0078402806d90ca8029901f039fb00785a2822d90ca8029901f032fb0078602806d90ca8029901f02bfb00787a2814d90ca8029901f024fb00782f2806d90ca8029901f01dfb0078392806d90ca8029901f016fb00785f2812d1464510da311c0136484601f0e6fa039002990c1c013402940ca801f004fb0078039c2080b8e7029c0134a246ba4500db7ce70ca8029901f0f6fa00783a2800d074e70ca8514601f0eefa00783a2800d06ce7464500db69e7311c0136484601f0bcfa5c210180029c02340294bc4266da0ca8211c01f0d7fa0078402806d90ca8029901f0d0fa00785a280fd90ca8029901f0c9fa0078602800d847e70ca8029901f0c1fa00787a2800d93fe7029cbc4245da0ca8211c01f0b6fa0078402806d90ca8029901f0affa00785a2823d90ca8029901f0a8fa0078602806d90ca8029901f0a1fa00787a2815d90ca8029901f09afa00782f2806d90ca8029901f093fa0078392807d90ca8029901f08cfa00785f2800d00ae7464500db07e7311c0136484601f05afa039002990c1c013402940ca801f078fa0078039c2080b6e7029cbc4244da0ca8211c01f06dfa007820281bd00ca8029901f066fa0078092814d00ca8029901f05ffa00780a280dd00ca8029901f058fa00780d2806d00ca8029901f051fa00780c2803d1029c01340294d5e7029cbc421ada0ca8211c01f043fa00783b2813d1f01c404510da4846311c01f03ffa6c460449201c01f014fa4846211c01f03cfa012002e074230010002004b038bc9846a146aa46f0bc08bc04b0184783b0f0b54f464646c0b44d4ca544071c8824e4006c4421604a4c6c4422608924e4006c442360a920c000684406688225ed006d448424e4006c4425604249206801f012fa8820c00068448424e4006c44216801f00ffa814601204c46c44200d1a1e040a88021490001f0d8f9c224a4006c44a0468422520040468821c900694401f0fef9484607303e9040ac3f94c6a96846f82201f0f4f944462068c3a90968c4aa1268c5ab1b68fff7bcfd00287ad040468021490001f0e9f9301c01f038f88322d2006a44106051608321c9006944404601f0e1f91d49404601f0e3f9381c01f0aaf9216809010909409800010009013009187868814251da0026b146c224a4006c44a046444620680001000981451eda311c0136381c01f06ef98424e4006c442060c2a8494601f08cf900788424e4006c44256828800124a144e3e70000dcfbffff44040000a024001038280010311c0136381c01f04ff95c2101800024a146409800010009814515da311c0136381c01f041f98424e4006c44206040a8494601f039f900888424e4006c44256828800124a144e4e7381c311c01e0381c002101f055f9044b9d4418bc9846a146f0bc08bc03b018472404000084b070b586b00a900b910c920d9300260aa8022101f06ef9009001916d4602ac0e49201c01f042f9281c211c01f068f900280cd104ac0a49201c01f037f90aa8211c01f039f90121c84200d00126301c06b070bc08bc04b018470000b0240010b424001081b0f0b54f464646c0b4644ca54480460e1ccd24e4006c442260d124e4006c442360f220c0006844076840a88021490001f0e4f8301c00f06bffcb22d2006a4410605160cd24e4006c44206800f066ffcc22d2006a4410605160ca25ed006d44cd24e4006c4425604d49206801f0baf84c4bcd24e4006c442568cb22d2006a44cc20c0006844009040a8216801f0bcf80024a146c225ad006d44cd24e4006c442560206840a900f03fffcd24e4006c442068fff711fc00281ad1caac84225200201cd121c900694401f0caf8cea96846f82201f0c5f82068cba90968ccaa1268cdab1b68fff75aff002801d10124a1464c46200600284ad040a8002101f098f8c2ac201c40a900f00fff201cfff7c8fb00283cd08623db006b4423485861321c01ca1860214c6c44a446032101246442a14601ca64460434a446043c206001394945f6d11a485861311c18318920c00068448222920001f083f8c2ac84225200201cd121c900694401f07af88620c00068443f90c5a96846fc2201f071f82168c3a80268c4a8036840a8fff729fe4098000100280ed1002012e0000094f9ffffc4240010242800101829001034040000ec2a0010381c414640aafff7a9fb0120044b9d4418bc9846a146f0bc08bc01b0184700006c06000083b0f0b5474680b4354ca544051ceb24e4006c442160334c6c442260ec24e4006c44236000260027822292007ea8291c01f02af882a96846fc22520001f024f87e987f99809a819bfff7aafa002838d08024e4006c44a0464046291c00f078fe4046fff74dfb00282ad14046291c00f06ffe4046fff728fb061c002e20d18424e4006c4484225200201ceb21c900694400f0faff8621c90069446846f82200f0f3ff20681049694409688522d2006a4412680e4b6b441b68fff784fe002800d00127380600284dd07ea88021490000f0a9ff002e0ed0e624e4006c4404490de0c0f8ffff5c070000240400002c040000e4240010e724e4006c441749201c00f085ff7ea8211c2a1c00f092ff7ea8fff795f900281dd0a524e4006c4482229200201c291c00f0b0ffa721c90069446846fc22520000f0a8ff2068084969440968a622d2006a441268054b6b441b6800f0c5f9012007e00000102500102c050000340500000020e823db009d4408bc9846f0bc08bc03b01847f0b5474680b4244ca54480460f1c7ea800f0e8fd8320c000684400f0e3fdc720c00068448021490000f040ff7ea8391c0022002300f0dcfd381c002100f024ff0088402806d9381c002100f01dff00885a280dd9381c002100f016ff008860281cd9381c002100f00fff00887a2815d8381c012100f008ff00883a280ed1381c022100f001ff00885c2807d18320c0006844391c14e0000048eeffff842424016c4400f097fc806900f0fafd011c0a68201c126a00f048fc8320c0006844211c0022002300f094fda6256d0045442868002803d100f07efc1c302860574d6d4400215648684401606960a620400040440168281c3a1c002300f082fd061c002e00d0fde08420000168448021490000f005ff842109016944281c00f079fd061c281c00f07bfd002e00d0dde0444c6c4482229200201c391c00f0eafe414969446846fc22520000f0e3fe20683e4969440968a52212016a4412683c4b6b441b68fff7acf9002800d184e0c52212016a448320c00068443649516100681060354e6e440321344b6b4401256d4201cb01c60139a942fad131485061314868448621c90069448222920000f0b2fee7231b016b447ea9264858617e981860294d6d440322fe2464006c44a4460126764264460434a446043c206801c5013ab242f6d11e4858611831204868448222920000f08ffec5252d016d44e72636016e44842109016944194c6c4484225200201c00f07ffea620400040440068006841901449694468468222520000f072fe2368381c291c321cfff73cfd37e0000098110000480a0000580a00004c0a0000540a000018290010540c00001c040000ec2a0010680c0000740e0000880e00009010000094100000842109016944c52424016c4484225200201c00f043fe134969446846fc2200f03dfe2168104868440268104868440368381cfff7effd0021002800d101210806002835d0c724e4006c448d256d016d440749281c00f0e4fd201c291c3a1c00f0f1fd22e05c0c0000540c0000580c000028250010c724e4006c44024d6d4402490ae00000a811000050250010c724e4006c440f4d6d440f49281c00f0c1fd201c291c321c3b1c00f0cdfd201cfef7f0ff4446606a00280fd000f052fb816900290dd008688268081c032100f003fb06e0b011000078250010404600f0adfc034b9d4408bc9846f0bc01bc0047b811000084b030b51d4ca5449c909d919e929f9301200021002200f03dfe041c96a901a800f0e8fd002808d10090201c9ca90222002300f035fe00f0e3fd96a80068002813d014a88021490000f07efd14ad97ac0b49201c00f06cfd96a80268281c211c00f078fd281cfef77bff00f0cffd99239b009d4430bc08bc04b018479cfdffffb425001010b5094ca544041c68468022520000f0c1fd201c6946fff7fffd82239b009d4410bc01bc00470000f8fdfffff0b5474680b4324ca544071c8846022952d100f03bfc011c0a687ea8126a00f089fa8026f6006e44301c00f0d1fb2949301c7eaa002300f0d1fbc425ed006d44281c00f0e7fb244c6c440021224868440160201c042100f0e3fb301c00f0e6fb011c201c2a1c00f0e7fb002824d1301c00f0dcfb011c8420000168448022520000f072fd8521090169446846fc22520000f034fd84200001684400680f49694409680f4a6a4412680e4b6b441b68fff74fff381c00f0f0fb00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffffa0260010480a000044080000480800004c0800004c0a000010b5a62464000019016010bc01bc0047f0b50b4ca5440b4c6c4420607ea88021490000f0c3fc074c6c442468064d6019052800d92ae180000449401800688746c8f7ffff3408000000fcffffb0130010c8130010f813001024140010a8140010601500107415001009490a4b032000900020019002220292039004930592012006907ea80522092300f096fcbce00000dc260010d026001001200021002200f02bfd8022d2006a44131c054970c970c30321002300f02efd00f0dafce9e00000082600101a4868448021490000f06efc174f6f44174c6c441749201c00f05afc381c211c00f044fc381cfef71bff002800d1cee0114c6c4482229200201c391c00f086fc0e4969446846fc22520000f07ffc2068c321c90069440968094a6a441268c423db006b441b68fff79bfeb0e00c0400001c0800001426001014060000240600001c06000000f0c4f98569254c6c442549201c00f01dfc24492f1c4037201c3a1c8023fef7a3fe002800d190e08020c0006844c021490000f04ffc8025ed006d44281c391c00f096f901200021002200f0b1fc061c0c2000f0c5fb041c00f072fc124a6a44124911486844016054600f4868444168006800f06bfc0e4820600e486060281c00f06cfca060301c0321221c002300f09dfc022000f068fc57e00000240800002c2600101c2600102c0800007d1c0010b4240010d025001003497ea800f0d8fb7ea8fef7f1fd40e05c2700108020c00068448021490000f0c5fbc120c00068448021490000f0befb1249134b8024e4006c4403200090002001900222029203900493059201200690201c0522092300f0affb201cfef7c8fd084800f02bfcc124e4006c440649201c00f0a2fb201cfef7bbfd0ae0dc260010d026001040420f005c2700100120fef713fd024b9d44f0bc01bc00473808000000b5081cfff7b4fe01bc004710b5021c80204000814203d1101c00f077fa05e0a424640010190068fff7eaff10bc01bc0047000010b500f007f8041c00f0f4fb201c10bc02bc084730b5051c282000f02dfb041c002c03d000f0f8f806482060201c00f0e7fb201c291c00f007f8201c30bc02bc084700002829001030b5041c0d1c00f0e9f8201c291c00f0ebf82068016a201c00f086f830bc01bc0047000000b5034a026000f0e3f801bc004700002829001030b584b0041c00f0dff8051c6846211c00f0e0f82868b8300268281c694600f069f804b030bc01bc0047000030b5051c242000f0e1fa041c002c04d0291c00f011fa03482060201c30bc02bc084700009c29001010b5a820400000f0cdfa041c002c0cd000f0b0fc074860610748a06107482060201c4030802100f0edfa201c10bc02bc08470000fc2a0010302b00109c280010f0b50d1c171c1c1c00f070f88669301c211cfff701fe002d05d03068026d301c391c00f01df80020f0bc02bc0847000010b58c20800000f05ffb041c002c03d000f07efc02482060201c10bc02bc0847f8290010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c046482b0010014b1b681847c0464c2b0010014b1b681847c046442b0010014b1b681847c046542b001040b4024e3668b44640bc6047502b0010014b1b681847c046582b001040b4024e3668b44640bc6047602b0010014b1b681847c046dc2b0010014b1b681847c046fc2b0010014b1b681847c046e82b0010014b1b681847c046702b0010014b1b681847c046d42b0010014b1b681847c046e42b0010014b1b681847c046e02b0010014b1b681847c046b42b0010014b1b681847c046a02b0010014b1b681847c046cc2b0010014b1b681847c046c82b0010014b1b681847c0465c2b0010014b1b681847c046b02b0010014b1b681847c046f82b0010014b1b681847c046d02b0010014b1b681847c046882b0010014b1b681847c046842b0010014b1b681847c046742b0010014b1b681847c046ac2b0010014b1b681847c046a82b0010014b1b681847c046682b0010014b1b681847c046c42b0010014b1b681847c046902b0010014b1b681847c046a42b0010014b1b681847c0468c2b0010014b1b681847c046782b0010014b1b681847c0467c2b0010014b1b681847c046982b0010014b1b681847c046d82b0010014b1b681847c0466c2b0010014b1b681847c046642b0010014b1b681847c046b82b0010014b1b681847c046bc2b0010014b1b681847c0469c2b0010014b1b681847c046802b0010014b1b681847c046942b0010014b1b681847c046ec2b0010014b1b681847c046c02b0010014b1b681847c046f02b0010014b1b681847c046f42b0010014b1b681847c046102c0010014b1b681847c046082c0010014b1b681847c046182c0010014b1b681847c046302c0010014b1b681847c046382c001040b4024e3668b44640bc60472c2c001040b4024e3668b44640bc6047242c0010014b1b681847c046282c0010014b1b681847c046002c0010014b1b681847c046342c0010014b1b681847c046042c0010014b1b681847c046142c0010014b1b681847c0460c2c0010014b1b681847c046202c0010014b1b681847c0461c2c0010014b1b681847c046582c0010014b1b681847c046a02c0010014b1b681847c0468c2c0010014b1b681847c0464c2c0010014b1b681847c046502c0010014b1b681847c046742c0010014b1b681847c046cc2c0010014b1b681847c046802c0010014b1b681847c046602c0010014b1b681847c046c42c0010014b1b681847c046942c0010014b1b681847c046642c0010014b1b681847c046702c0010014b1b681847c0469c2c0010014b1b681847c046b42c0010014b1b681847c046bc2c0010014b1b681847c046ac2c0010014b1b681847c046782c0010014b1b681847c046902c0010014b1b681847c046882c0010014b1b681847c046a42c0010014b1b681847c046a82c0010014b1b681847c046c02c0010014b1b681847c046d42c001040b4024e3668b44640bc6047842c0010014b1b681847c046b82c0010014b1b681847c0465c2c0010014b1b681847c0467c2c0010014b1b681847c046542c001040b4024e3668b44640bc6047b02c0010014b1b681847c0466c2c0010014b1b681847c046682c0010014b1b681847c046982c0010014b1b681847c046d02c0010014b1b681847c046c82c0010014b1b681847c0466c2d0010014b1b681847c046682d0010014b1b681847c046b02d0010014b1b681847c046f82d0010014b1b681847c046742d0010014b1b681847c046e82d0010014b1b681847c046f02d0010014b1b681847c046982d0010014b1b681847c0469c2d0010014b1b681847c046882d0010014b1b681847c046ec2d0010014b1b681847c0468c2d0010014b1b681847c046e02d001040b4024e3668b44640bc6047a42d0010014b1b681847c046d02d0010014b1b681847c046842d0010014b1b681847c046cc2d0010014b1b681847c046802d0010014b1b681847c046e42d0010014b1b681847c046a02d0010014b1b681847c046702d0010014b1b681847c046f42d0010014b1b681847c046942d0010014b1b681847c0467c2d0010014b1b681847c046ac2d0010014b1b681847c046902d0010014b1b681847c046d42d0010014b1b681847c046d82d0010014b1b681847c046b42d0010014b1b681847c046dc2d0010014b1b681847c046a82d001040b4024e3668b44640bc6047c42d0010014b1b681847c046c02d0010014b1b681847c046b82d0010014b1b681847c046782d0010014b1b681847c046bc2d0010014b1b681847c046c82d0010014b1b681847c046fc2d0010014b1b681847c046002e0010014b1b681847c046042e001040b4024e3668b44640bc60470c2e001040b4024e3668b44640bc6047082e0010014b1b681847c0463c2c0010014b1b681847c046482c0010014b1b681847c046442c0010014b1b681847c046402c0010014b1b681847c046582d0010014b1b681847c046f42c0010014b1b681847c046e42c0010014b1b681847c0464c2d0010014b1b681847c046e02c0010014b1b681847c0465c2d0010014b1b681847c046602d0010014b1b681847c0461c2d0010014b1b681847c046dc2c0010014b1b681847c046182d0010014b1b681847c0460c2d0010014b1b681847c046f82c0010014b1b681847c046fc2c0010014b1b681847c046102d0010014b1b681847c046502d0010014b1b681847c046e82c0010014b1b681847c046d82c0010014b1b681847c046f02c0010014b1b681847c046342d0010014b1b681847c046382d0010014b1b681847c046302d0010014b1b681847c046242d0010014b1b681847c046442d0010014b1b681847c046042d0010014b1b681847c046082d0010014b1b681847c046482d0010014b1b681847c0463c2d0010014b1b681847c046402d0010014b1b681847c046002d0010014b1b681847c046282d0010014b1b681847c0462c2d0010014b1b681847c046202d0010014b1b681847c046142d0010014b1b681847c046ec2c0010014b1b681847c046642d0010014b1b681847c046542d0010014b1b681847c046a02e0010014b1b681847c046682e0010014b1b681847c046102e0010014b1b681847c046202e0010014b1b681847c046442e0010014b1b681847c046502e0010014b1b681847c046582e0010014b1b681847c0465c2e0010014b1b681847c046342e0010014b1b681847c046242e0010014b1b681847c046402e0010014b1b681847c0462c2e0010014b1b681847c0464c2e0010014b1b681847c046482e001040b4024e3668b44640bc60473c2e0010014b1b681847c046382e0010014b1b681847c046602e0010014b1b681847c046642e0010014b1b681847c046302e0010014b1b681847c046142e0010014b1b681847c046182e0010014b1b681847c0461c2e0010014b1b681847c046902e0010014b1b681847c046802e0010014b1b681847c0468c2e0010014b1b681847c046882e0010014b1b681847c0466c2e0010014b1b681847c0467c2e0010014b1b681847c046942e0010014b1b681847c046842e0010014b1b681847c046702e0010014b1b681847c046982e0010014b1b681847c046742e0010014b1b681847c046782e0010014b1b681847c046542e001040b4024e3668b44640bc6047282e0010014b1b681847c0469c2e00107047000000b5fff71ffd01bc0047000000b5fff7efff01bc0047000000b5074ac262074a0263074a4263074a8263074a0260fff7fdfe01bc00470000742800108028001060280010d82a00103c2a001010b581b0039c14380094fff7b5fc01b010bc01bc0047000000b51438fff7b4ff01bc004700b51438fff7aefc01bc004700b51838fff7aeff02bc084700b52c38fff7a4fe01bc004710b5041c3039fff7bbfe201c10bc02bc0847000000b53038fff7acfe01bc004700b53038fff7a0fe01bc004700b53038fff794fe01bc004700b53038fff7a6fe01bc004700b53438fff782fe01bc004700b53838fff7f2fd02bc084700b53838fff7e6fd02bc084700b53838fff78aff01bc0047ffffffff00000000ffffffff000000009c260010bc260010fc2a0010302b00109c280010742800108028001060280010d82a00103c2a001024280010042800102e0070006d000000742300102e0070006c0000008023001025005300200069007300200075006e0074007200750073007400650064002e00200049006e007300740061006c006c0020006f006e006c007900200069006600200079006f0075002000740072007500730074002000700072006f00760069006400650072002e000000000049006e007300740061006c006c002000610073002000250053003f00000000005200650070006c0061006300650020006f006c0064002000250053003f00000049006e007300740061006c006c0065006400200025005300000000004600610069006c00750072006500200025006400200069006e007300740061006c006c0069006e006700200025005300000000008c230010f8230010182400103824001054240010742300107061636b61676500a024001038280010232100007065726c00000000b0240010b424001025005300250053002500530000000000c42400102428001018290010ec2a00105200650061006c006c0079002000720075006e0020006d006f00640075006c0065002000250053003f000000520075006e002000250053003f000000e4240010102500104600610069006c0065006400200066006f0072002000660069006c006500200025005300000000004500720072006f0072002000250064002000720065006100640069006e00670020002500530000004500720072006f00720020002500640020006f00700065006e0069006e006700200025005300000018290010ec2a00102825001050250010782500104500720072006f00720020002500640000000000b4250010a02600102d6c65007072696e74202752756e6e696e6720696e20272c20245e4f2c20225c6e222c207363616c6172206c6f63616c74696d6500000000b4240010d0250010d425001043003a005c0000000500000043006f00640065003a0000004f006e0065006c0069006e006500720000000000dc260010d026001008260010142600102c2600101c2600107d1c0010b4240010d02500105c270010b013001028290010282900109c290010fc2a0010302b00109c280010f8290010742800108028001060280010d82a00103c2a0010f61520100a000000640065006600610075006c0074002e0070006c0000000000070000005000650072006c0041007000700000000300000055004900510000003c0000005000650072006c002000250064002e00250064002e00250064002c002000530079006d006200690061006e00200070006f00720074002000250064002e00250064002e00250064002c0020006200750069006c007400200066006f0072002000250053002000530044004b002000250064002e0025006400000000005100000043006f007000790072006900670068007400200031003900380037002d00320030003000350020004c0061007200720079002000570061006c006c00200061006e00640020006f00740068006500720073002c002000530079006d006200690061006e00200070006f0072007400200043006f00700079007200690067006800740020004e006f006b0069006100200032003000300034002d00320030003000350000000d0000005c00530079007300740065006d005c004d00610069006c005c000000060000005c005000650072006c005c0000000000200000005c73797374656d5c6c6962735c7065726c5c736974657065726c5c352e392e3300000000ccffffff00000000e5190010f119001005230010d4ffffff00000000b5220010d0ffffff00000000ed220010e1220010d5220010c1220010f922001000000000000000007900001095200010a1200010ad200010b9200010c1190010cd190010c5200010d1200010dd200010e9200010f5200010d91900102d000010251b0010751200100d1600100121001049120010311b00100d2100101d2100103d1b00102921001035210010412100104d210010592100106521001000000000000000004d1e00104d1e00100000000000000000a11600101919001095180010a1180010ad18001025190010b9180010c5180010d118001031190010dd1800103d1900104919001055190010611900106d19001079190010e9180010f518001001190010851900100d190010911900109d190010b5160010a9190010b519001000000000000000002d220010491b0010551b0010d9170010611b00106d1b0010791b0010851b0010911b0010292200109d1b0010a91b0010e5170010f1170010b51b0010c11b0010cd1b00100917001049170010d91b0010e51b0010000000000000000039220010712100107d2100100d0000108921001095210010a1210010ad210010b9210010c5210010d1210010dd210010e1160010e9210010f5210010000000000000000045220010091f001095180010a1180010ad180010151f0010b9180010c5180010d11800109d1e0010dd180010a91e0010211f00102d1f0010391f0010451f0010511f0010e9180010f5180010011900105d1f00100d190010691f0010751f0010811f00108d1f0010991f0010c9010010a51f0010e9010010b11f0010bd1f0010c91f0010d51f0010e11f0010ed1f0010f91f0010c8ffffff00000000292300101d230010112300100000000000000000b91a0010c51a0010ecffffff00000000912200100d1c0010191c0010251c0010311c0010411c00104d1c001079220010591c00109d220010651c0010e8ffffff00000000a9220010fd190010091a0010060000001b00000047000000110000002900000004000000030000000c0000001c0000001d000000210000002800000042000000480000004a000000520000005400000055000000570000005f0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000ad000000b1000000b5000000b9000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ec000000f4000000ff0000000001000014010000150100000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e60000002e01000065010000800200004d03000009000000110000001f0000002000000030000000330000003400000040000000410000004200000043000000440000004b0000005100000054000000560000005c000000640000007400000079000000820000008c0000008e000000920000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000db000000e2000000fd0000000a0000000e0000001400000017000000180000001b00000022000000250000002b0000002e0000002f000000310000003200000035000000390000003f000000470000004c0000004f00000050000000530000005500000056000000580000005b0000005e0000005f000000730000007c00000081000000860000008f000000930000009500000096000000970000000300000006000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300003c03000053030000590300005a030000e7030000ea0300007c0400008c0400000205000003050000690500007e0500007f0500008105000097050000e00500002e0600004b060000040000004600000078050000010000000d0000000e0000000f00000010000000750000007a0000008600000087000000900000009d000000a6000000b2000000b3000000bd000000d4000000e3000000e4000000020100001701000021010000220100008d0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a8010000ad0100000000000079170000b8040000c403000003000000060000001b00000047000000d9030000020000001100000029000000ec03000001000000040000000304000029000000030000000c0000001c0000001d000000210000002800000042000000480000004a000000520000005400000055000000570000005f0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000ad000000b1000000b5000000b9000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ec000000f4000000ff000000000100001401000015010000160400000f0000000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e60000002a040000040000002e01000065010000800200004d030000410400002300000009000000110000001f0000002000000030000000330000003400000040000000410000004200000043000000440000004b0000005100000054000000560000005c000000640000007400000079000000820000008c0000008e000000920000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000db000000e2000000fd00000057040000240000000a0000000e0000001400000017000000180000001b00000022000000250000002b0000002e0000002f000000310000003200000035000000390000003f000000470000004c0000004f00000050000000530000005500000056000000580000005b0000005e0000005f000000730000007c00000081000000860000008f000000930000009500000096000000970000006c0400000200000003000000060000008104000025000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300003c03000053030000590300005a030000e7030000ea0300007c0400008c0400000205000003050000690500007e0500007f0500008105000097050000e00500002e0600004b0600009504000003000000040000004600000078050000a104000025000000010000000d0000000e0000000f00000010000000750000007a0000008600000087000000900000009d000000a6000000b2000000b3000000bd000000d4000000e3000000e4000000020100001701000021010000220100008d0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a8010000ad0100004150504152435b31303030336133645d2e444c4c004241464c5b31303030336130665d2e444c4c0043484152434f4e565b31303030336231315d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f43544c5b31303030343839655d2e444c4c0045494b434f52455b31303030343839325d2e444c4c0045494b444c475b31303030343839385d2e444c4c004553544c49425b31303030336230625d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c0051494b43544c5b31303030356663395d2e444c4c00000010040000fb010000000000004400000014302830ec30f030f430b431b831bc31c031c4311833ac33e4331c34d834dc34e034e4341035d838383a3c3a083b0c3bb03cb43cb83cc03cd83d403e00100000a0010000b030bc3044315c31a83144324833ac33b033b433b833bc33c033c433f033f4332034983448354c35543558355c357035dc35e035e8357836b03604373c37403744379837e037ec37f83704381438203830383c384838543860386c387838843890389c38a838b438c038cc38d838e438f038fc380839143920392c393839443950395c396839743980398c399839a439b039bc39c839d439e039ec39f839043a103a1c3a283a343a403a4c3a5c3a6c3a783a843a903a9c3aa83ab43ac03acc3ad83ae43af03afc3a083b143b203b2c3b383b443b503b5c3b683b743b803b8c3b983ba43bb03bbc3bc83bd43be03bec3bfc3b083c143c203c2c3c3c3c483c543c603c6c3c783c843c903c9c3ca83cb43cc03ccc3cd83ce43cf03cfc3c083d143d243d303d3c3d483d543d603d6c3d783d843d903d9c3da83db43dc03dcc3dd83de43df03d003e0c3e183e243e303e3c3e483e543e603e703e803e8c3e983ea43eb03ebc3ec83ed43ee03eec3ef83e043f103f1c3f283f343f403f4c3f583f643f703f7c3f883f943fa03fac3fb83fc43fd03fdc3fe83ff43f002000002c02000000300c301830243030303c304830543060306c307830843090309c30a830b430c030cc30d830e430f030fc3008311831243130313c314831543160316c317831843190319c31a831b431c031cc31d831e431f031fc31083218322432643268326c3270327432443348334c335033543358335c336033643368336c3370337c33883388348c349034943498349c34a834ac34bc34c034d434d834dc34e03420352435a035a435a835ac35b035c835cc3508360c3610364036443648364c365036543658365c366036643668366c367036743678367c368036843688368c3690369436983668386c3870387c3888388c38903894389838a438a838ac38b038b438b838bc38c038c438c838cc38d038d438d838dc38e038e438e838ec38f038f438f838fc380039043908390c3910391439203924393039343938393c394039443948394c395039543958395c396039643968396c397039743978397c398039843988398c39903994399839a439a839ac39b039b439b839bc39c039c439c839cc39d039d439d839dc39e039e439e839ec39f039f439003a043a083a0c3a103a143a183a1c3a203a243a283a2c3a303a343a383a443a483a4c3a503a543a583a5c3a603a643a683a6c3a703a743a783a7c3a803a843a883a8c3a903a943a983a9c3aa03aa43aa83aac3ab03ab43ab83abc3ac03ac43ac83acc3ad03ad43ae03ae43ae83af43af83a043b083b0c3b103b143b183b1c3b203b243b283b2c3b383b3c3b403b0000
__APP__
  }

  # This is Symbian application resource skeleton.
  # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc
  # by compiling the PerlApp.cpp.
  # The following resource has been compiled using the Series 80 SDK 2.0
  # for Visual C.
  # Use symbian\hexdump.pl to create the perlrscmin.hex for this hexdump.
  if ($Variant eq 'UIQ') {
    $RSCHEX = <<__RSC__;
6b4a1f10000000005fde04001ca360de01b800f8030400000001f0e54d0000000004f0e54d04f0e54d0000000000000000000000000007010005f0e54d07074f7074696f6e73110000000000ffffffff0000000000000000000f0500000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff00000000020400000000000000000000030352756e170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff000000000000000000050100000005055469746c6511460014000000000064b0f30001000200060650726f6d707411060400000000000000000a0001008000000005000000000d0d4f4b202f2043616e63656c203f0e460014000000000008f0e54d00000015010000000200feff00000000000000000000000002024f6b1a00ffffffff000000000101ffff000000000000000000000000060643616e63656c0b00ffffffff0000000001010005000000000a0a596573202f204e6f203f0e46001400000000000af0e54d00000015010000000200feff00000000000000000000000003035965732900ffffffff000000000101ffff000000000000000000000000024e006f0000ffffffff00000000010115001d001d0035005800fa00320156019e01bf010402
__RSC__
  }
}