demo/0000755000175000017500000000000011043217467010471 5ustar lukelukedemo/Makefile.PL0000644000175000017500000000111211043146341012426 0ustar lukeluke# IMPORTANT: if you delete this file your app will not work as # expected. you have been warned use inc::Module::Install; name 'demo'; all_from 'lib/demo.pm'; requires 'Catalyst::Runtime' => '5.7014'; requires 'Catalyst::Plugin::ConfigLoader'; requires 'Catalyst::Plugin::Static::Simple'; requires 'Catalyst::Action::RenderView'; requires 'parent'; requires 'Config::General'; # This should reflect the config file format you've chosen # See Catalyst::Plugin::ConfigLoader for supported formats catalyst; install_script glob('script/*.pl'); auto_install; WriteAll; demo/Changes0000644000175000017500000000021711043146341011754 0ustar lukelukeThis file documents the revision history for Perl extension demo. 0.01 2008-07-27 16:30:41 - initial revision, generated by Catalyst demo/db.sqlite0000644000175000017500000000600011043217467012275 0ustar lukelukeSQLite format 3@  VVyQtabletopictopicCREATE TABLE topic ( name VARCHAR(255) NOT NULL, content TEXT NOT NULL, PRIMARY KEY (name) ))=indexsqlite_autoindex_topic_1topic FooBarBarBaz-CoisaFooBar teste #'3CoisaQualquerAaaaaaaaaaaaaaaaa  FooBar Coisa'CoisaQualquerdemo/README0000644000175000017500000000006311043146341011340 0ustar lukelukeRun script/demo_server.pl to test the application. demo/demo.conf0000644000175000017500000000020311043146341012247 0ustar lukeluke# rename this file to demo.yml and put a : in front of "name" if # you want to use yaml like in old versions of Catalyst name demo demo/t/0000755000175000017500000000000011043163206010723 5ustar lukelukedemo/script/0000755000175000017500000000000011043147755011777 5ustar lukelukedemo/lib/0000755000175000017500000000000011043151350011223 5ustar lukelukedemo/root/0000755000175000017500000000000011043217567011455 5ustar lukelukedemo/t/view_TT.t0000644000175000017500000000013111043163206012464 0ustar lukelukeuse strict; use warnings; use Test::More tests => 1; BEGIN { use_ok 'demo::View::TT' } demo/t/01app.t0000644000175000017500000000023311043146341012030 0ustar lukelukeuse strict; use warnings; use Test::More tests => 2; BEGIN { use_ok 'Catalyst::Test', 'demo' } ok( request('/')->is_success, 'Request should succeed' ); demo/t/03podcoverage.t0000644000175000017500000000035711043146341013557 0ustar lukelukeuse strict; use warnings; use Test::More; eval "use Test::Pod::Coverage 1.04"; plan skip_all => 'Test::Pod::Coverage 1.04 required' if $@; plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD}; all_pod_coverage_ok(); demo/t/02pod.t0000644000175000017500000000033011043146341012031 0ustar lukelukeuse strict; use warnings; use Test::More; eval "use Test::Pod 1.14"; plan skip_all => 'Test::Pod 1.14 required' if $@; plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD}; all_pod_files_ok(); demo/t/controller_Topic.t0000644000175000017500000000031511043157727014443 0ustar lukelukeuse strict; use warnings; use Test::More tests => 3; BEGIN { use_ok 'Catalyst::Test', 'demo' } BEGIN { use_ok 'demo::Controller::Topic' } ok( request('/topic')->is_success, 'Request should succeed' ); demo/script/demo_test.pl0000700000175000017500000000151511043146341014300 0ustar lukeluke#!/usr/bin/perl -w use strict; use warnings; use Getopt::Long; use Pod::Usage; use FindBin; use lib "$FindBin::Bin/../lib"; use Catalyst::Test 'demo'; my $help = 0; GetOptions( 'help|?' => \$help ); pod2usage(1) if ( $help || !$ARGV[0] ); print request($ARGV[0])->content . "\n"; 1; =head1 NAME demo_test.pl - Catalyst Test =head1 SYNOPSIS demo_test.pl [options] uri Options: -help display this help and exits Examples: demo_test.pl http://localhost/some_action demo_test.pl /some_action See also: perldoc Catalyst::Manual perldoc Catalyst::Manual::Intro =head1 DESCRIPTION Run a Catalyst action from the command line. =head1 AUTHORS Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut demo/script/demo_server.pl0000700000175000017500000000617711043146341014640 0ustar lukeluke#!/usr/bin/perl -w BEGIN { $ENV{CATALYST_ENGINE} ||= 'HTTP'; $ENV{CATALYST_SCRIPT_GEN} = 31; require Catalyst::Engine::HTTP; } use strict; use warnings; use Getopt::Long; use Pod::Usage; use FindBin; use lib "$FindBin::Bin/../lib"; my $debug = 0; my $fork = 0; my $help = 0; my $host = undef; my $port = $ENV{DEMO_PORT} || $ENV{CATALYST_PORT} || 3000; my $keepalive = 0; my $restart = $ENV{DEMO_RELOAD} || $ENV{CATALYST_RELOAD} || 0; my $restart_delay = 1; my $restart_regex = '(?:/|^)(?!\.#).+(?:\.yml$|\.yaml$|\.conf|\.pm)$'; my $restart_directory = undef; my $follow_symlinks = 0; my @argv = @ARGV; GetOptions( 'debug|d' => \$debug, 'fork' => \$fork, 'help|?' => \$help, 'host=s' => \$host, 'port=s' => \$port, 'keepalive|k' => \$keepalive, 'restart|r' => \$restart, 'restartdelay|rd=s' => \$restart_delay, 'restartregex|rr=s' => \$restart_regex, 'restartdirectory=s@' => \$restart_directory, 'followsymlinks' => \$follow_symlinks, ); pod2usage(1) if $help; if ( $restart && $ENV{CATALYST_ENGINE} eq 'HTTP' ) { $ENV{CATALYST_ENGINE} = 'HTTP::Restarter'; } if ( $debug ) { $ENV{CATALYST_DEBUG} = 1; } # This is require instead of use so that the above environment # variables can be set at runtime. require demo; demo->run( $port, $host, { argv => \@argv, 'fork' => $fork, keepalive => $keepalive, restart => $restart, restart_delay => $restart_delay, restart_regex => qr/$restart_regex/, restart_directory => $restart_directory, follow_symlinks => $follow_symlinks, } ); 1; =head1 NAME demo_server.pl - Catalyst Testserver =head1 SYNOPSIS demo_server.pl [options] Options: -d -debug force debug mode -f -fork handle each request in a new process (defaults to false) -? -help display this help and exits -host host (defaults to all) -p -port port (defaults to 3000) -k -keepalive enable keep-alive connections -r -restart restart when files get modified (defaults to false) -rd -restartdelay delay between file checks -rr -restartregex regex match files that trigger a restart when modified (defaults to '\.yml$|\.yaml$|\.conf|\.pm$') -restartdirectory the directory to search for modified files, can be set mulitple times (defaults to '[SCRIPT_DIR]/..') -follow_symlinks follow symlinks in search directories (defaults to false. this is a no-op on Win32) See also: perldoc Catalyst::Manual perldoc Catalyst::Manual::Intro =head1 DESCRIPTION Run a Catalyst Testserver for this application. =head1 AUTHORS Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut demo/script/demo_create.pl0000700000175000017500000000345411043146341014570 0ustar lukeluke#!/usr/bin/perl -w use strict; use warnings; use Getopt::Long; use Pod::Usage; use Catalyst::Helper; my $force = 0; my $mech = 0; my $help = 0; GetOptions( 'nonew|force' => \$force, 'mech|mechanize' => \$mech, 'help|?' => \$help ); pod2usage(1) if ( $help || !$ARGV[0] ); my $helper = Catalyst::Helper->new( { '.newfiles' => !$force, mech => $mech } ); pod2usage(1) unless $helper->mk_component( 'demo', @ARGV ); 1; =head1 NAME demo_create.pl - Create a new Catalyst Component =head1 SYNOPSIS demo_create.pl [options] model|view|controller name [helper] [options] Options: -force don't create a .new file where a file to be created exists -mechanize use Test::WWW::Mechanize::Catalyst for tests if available -help display this help and exits Examples: demo_create.pl controller My::Controller demo_create.pl controller My::Controller BindLex demo_create.pl -mechanize controller My::Controller demo_create.pl view My::View demo_create.pl view MyView TT demo_create.pl view TT TT demo_create.pl model My::Model demo_create.pl model SomeDB DBIC::Schema MyApp::Schema create=dynamic\ dbi:SQLite:/tmp/my.db demo_create.pl model AnotherDB DBIC::Schema MyApp::Schema create=static\ dbi:Pg:dbname=foo root 4321 See also: perldoc Catalyst::Manual perldoc Catalyst::Manual::Intro =head1 DESCRIPTION Create a new Catalyst Component. Existing component files are not overwritten. If any of the component files to be created already exist the file will be written with a '.new' suffix. This behavior can be suppressed with the C<-force> option. =head1 AUTHORS Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut demo/script/demo_cgi.pl0000700000175000017500000000076311043146341014067 0ustar lukeluke#!/usr/bin/perl -w BEGIN { $ENV{CATALYST_ENGINE} ||= 'CGI' } use strict; use warnings; use FindBin; use lib "$FindBin::Bin/../lib"; use demo; demo->run; 1; =head1 NAME demo_cgi.pl - Catalyst CGI =head1 SYNOPSIS See L =head1 DESCRIPTION Run a Catalyst application as a cgi script. =head1 AUTHORS Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut demo/script/demo_fastcgi.pl0000700000175000017500000000335511043146341014745 0ustar lukeluke#!/usr/bin/perl -w BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' } use strict; use warnings; use Getopt::Long; use Pod::Usage; use FindBin; use lib "$FindBin::Bin/../lib"; use demo; my $help = 0; my ( $listen, $nproc, $pidfile, $manager, $detach, $keep_stderr ); GetOptions( 'help|?' => \$help, 'listen|l=s' => \$listen, 'nproc|n=i' => \$nproc, 'pidfile|p=s' => \$pidfile, 'manager|M=s' => \$manager, 'daemon|d' => \$detach, 'keeperr|e' => \$keep_stderr, ); pod2usage(1) if $help; demo->run( $listen, { nproc => $nproc, pidfile => $pidfile, manager => $manager, detach => $detach, keep_stderr => $keep_stderr, } ); 1; =head1 NAME demo_fastcgi.pl - Catalyst FastCGI =head1 SYNOPSIS demo_fastcgi.pl [options] Options: -? -help display this help and exits -l -listen Socket path to listen on (defaults to standard input) can be HOST:PORT, :PORT or a filesystem path -n -nproc specify number of processes to keep to serve requests (defaults to 1, requires -listen) -p -pidfile specify filename for pid file (requires -listen) -d -daemon daemonize (requires -listen) -M -manager specify alternate process manager (FCGI::ProcManager sub-class) or empty string to disable -e -keeperr send error messages to STDOUT, not to the webserver =head1 DESCRIPTION Run a Catalyst application as fastcgi. =head1 AUTHORS Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut demo/lib/demo.pm0000644000175000017500000000253111043146341012512 0ustar lukelukepackage demo; use strict; use warnings; use Catalyst::Runtime '5.70'; # Set flags and add plugins for the application # # -Debug: activates the debug mode for very useful log messages # ConfigLoader: will load the configuration from a Config::General file in the # application's home directory # Static::Simple: will serve static files from the application's root # directory use parent qw/Catalyst/; use Catalyst qw/-Debug ConfigLoader Static::Simple/; our $VERSION = '0.01'; # Configure the application. # # Note that settings in demo.conf (or other external # configuration file that you set up manually) take precedence # over this when using ConfigLoader. Thus configuration # details given here can function as a default configuration, # with a external configuration file acting as an override for # local deployment. __PACKAGE__->config( name => 'demo' ); # Start the application __PACKAGE__->setup(); =head1 NAME demo - Catalyst based application =head1 SYNOPSIS script/demo_server.pl =head1 DESCRIPTION [enter your description here] =head1 SEE ALSO L, L =head1 AUTHOR Sylvestre Mergulhao,,, =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; demo/lib/demo/0000755000175000017500000000000011043203533012150 5ustar lukelukedemo/lib/demo/Schema.pm0000644000175000017500000000017111043170562013712 0ustar lukelukepackage demo::Schema; use strict; use warnings; use parent 'DBIx::Class::Schema'; __PACKAGE__->load_namespaces(); 1; demo/lib/demo/Model/0000755000175000017500000000000011043200533013205 5ustar lukelukedemo/lib/demo/Controller/0000755000175000017500000000000011043217324014276 5ustar lukelukedemo/lib/demo/Schema/0000755000175000017500000000000011043201062013343 5ustar lukelukedemo/lib/demo/View/0000755000175000017500000000000011043216643013070 5ustar lukelukedemo/lib/demo/Model/.DB.pm.swp0000600000175000017500000003000011043200537014703 0ustar lukelukeb0VIM 7.1[H#'1lukedarkstar~luke/Desenvolvimento/demo/lib/demo/Model/DB.pm 3210#"! UtpadhU;'1;1;); ] '' '', 'dbi:SQLite:db.sqlite', connect_info => [ schema_class => 'demo::Schema',__PACKAGE__->config(use parent 'Catalyst::Model::DBIC::Schema';use strict;use warnings;package demo::Model::DB;demo/lib/demo/Model/DB.pm0000644000175000017500000000040311043200533014025 0ustar lukelukepackage demo::Model::DB; use warnings; use strict; use parent 'Catalyst::Model::DBIC::Schema'; __PACKAGE__->config( schema_class => 'demo::Schema', connect_info => [ 'dbi:SQLite:db.sqlite', '', '' ] ); 1; demo/lib/demo/Controller/.Topic.pm.swp0000644000175000017500000003000011043217330016566 0ustar lukelukeb0VIM 7.1H$'lukedarkstar~luke/Desenvolvimento/demo/lib/demo/Controller/Topic.pmutf-8 3210#"! UtpQad e QedQP;:+*%$#s1 z a ;  P . I G F   l (       o n i h e 1111111;=cutit under the same terms as Perl itself.This library is free software, you can redistribute it and/or modify=head1 LICENSESylvestre Mergulhao,,,=head1 AUTHOR} ); ) $self->action_for('view'), [$c->stash->{params}{name}] $c->uri_for( $c->res->redirect( $topic->update($c->stash->{params}); $c->detach unless $topic; my $topic = $c->stash->{topic}; my( $self, $c ) = @_;sub update : Chained('fetch') Args(0) {} $c->stash->{topic} ||= { name => $c->stash->{name} }; my($self, $c) = @_;sub view : Chained('fetch') PathPart('') Args(0) {} $c->stash->{name} = $name; $c->stash->{topic} = $c->model('DB::Topic')->find($name); my ( $self, $c, $name ) = @_;sub fetch : Chained('base') CaptureArgs(1) PathPart('') {} ); ) $self->action_for('view'), [$params->{name}] $c->uri_for( $c->res->redirect( $c->model('DB::Topic')->find_or_create($params); my $params = $c->stash->{params}; my ($self, $c) = @_;sub create : Chained('base') Args(0) {} }; return $c->stash->{topic}; $self->fetch($c, @_); $c->stash->{topic_exists} = sub { $c->stash->{params} = $params; @{$params}{qw/name content/} = @{$bparams}{qw/name content/}; my $params = {}; my $bparams = $c->req->body_parameters; my ( $self, $c ) = @_;sub base : Chained('/base') CaptureArgs(0) PathPart('topic') {=cut=head2 index =cut=head1 METHODSCatalyst Controller.=head1 DESCRIPTIONdemo::Controller::Topic - Catalyst Controller=head1 NAMEuse parent 'Catalyst::Controller';use warnings;use strict;package demo::Controller::Topic;demo/lib/demo/Controller/Topic.pm0000644000175000017500000000323311043217324015713 0ustar lukelukepackage demo::Controller::Topic; use strict; use warnings; use parent 'Catalyst::Controller'; =head1 NAME demo::Controller::Topic - Catalyst Controller =head1 DESCRIPTION Catalyst Controller. =head1 METHODS =cut =head2 index =cut sub base : Chained('/base') CaptureArgs(0) PathPart('topic') { my ( $self, $c ) = @_; my $bparams = $c->req->body_parameters; my $params = {}; @{$params}{qw/name content/} = @{$bparams}{qw/name content/}; $c->stash->{params} = $params; $c->stash->{topic_exists} = sub { $self->fetch($c, @_); return $c->stash->{topic}; }; } sub create : Chained('base') Args(0) { my ($self, $c) = @_; my $params = $c->stash->{params}; $c->model('DB::Topic')->find_or_create($params); $c->res->redirect( $c->uri_for( $self->action_for('view'), [$params->{name}] ) ); } sub fetch : Chained('base') CaptureArgs(1) PathPart('') { my ( $self, $c, $name ) = @_; $c->stash->{topic} = $c->model('DB::Topic')->find($name); $c->stash->{name} = $name; } sub view : Chained('fetch') PathPart('') Args(0) { my($self, $c) = @_; $c->stash->{topic} ||= { name => $c->stash->{name} }; } sub update : Chained('fetch') Args(0) { my( $self, $c ) = @_; my $topic = $c->stash->{topic}; $c->detach unless $topic; $topic->update($c->stash->{params}); $c->res->redirect( $c->uri_for( $self->action_for('view'), [$c->stash->{params}{name}] ) ); } =head1 AUTHOR Sylvestre Mergulhao,,, =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; demo/lib/demo/Controller/Root.pm0000644000175000017500000000201211043154026015551 0ustar lukelukepackage demo::Controller::Root; use strict; use warnings; use parent 'Catalyst::Controller'; # # Sets the actions in this controller to be registered with no prefix # so they function identically to actions created in MyApp.pm # __PACKAGE__->config->{namespace} = ''; =head1 NAME demo::Controller::Root - Root Controller for demo =head1 DESCRIPTION [enter your description here] =head1 METHODS =cut =head2 index =cut sub base : Chained('/') PathPart('') CaptureArgs(0) {} sub root : Chained('base') PathPart('') Args(0) { my ( $self, $c ) = @_; # Hello World $c->response->body( $c->welcome_message ); } sub default :Private { my ( $self, $c ) = @_; $c->response->body( 'Page not found' ); $c->response->status(404); } =head2 end Attempt to render a view, if needed. =cut sub end : ActionClass('RenderView') {} =head1 AUTHOR Sylvestre Mergulhao,,, =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; demo/lib/demo/Schema/Result/0000755000175000017500000000000011043201155014624 5ustar lukelukedemo/lib/demo/Schema/Result/Topic.pm0000644000175000017500000000065211043201155016243 0ustar lukelukepackage demo::Schema::Result::Topic; use strict; use warnings; use parent 'DBIx::Class'; __PACKAGE__->load_components(qw/Core/); __PACKAGE__->table('topic'); __PACKAGE__->add_columns( name => { data_type => 'VARCHAR', size => 255, is_nullable => 0}, content => { data_type => 'TEXT', is_nullable => 0} ); __PACKAGE__->set_primary_key('name'); 1; demo/lib/demo/View/TT.pm0000644000175000017500000000127411043216643013761 0ustar lukelukepackage demo::View::TT; use strict; use base 'Catalyst::View::TT'; =head1 NAME demo::View::TT - Catalyst TT View =head1 SYNOPSIS See L =head1 DESCRIPTION Catalyst TT View. =cut sub process { my $self = shift; my($c) = @_; $c->stash->{wikitext} = sub { $self->wikitext($c, @_); }; $self->NEXT::process(@_); } sub wikitext { my($self, $c, $text) = @_; $text =~ s/((?:[A-Z]+[a-z]+){2,})/$self->render($c, 'wikilink', {topic => { name => $1 }})/eg; return $text; } =head1 AUTHOR Sylvestre Mergulhao,,, =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; demo/lib/demo/View/.TT.pm.swp0000644000175000017500000003000011043216647014640 0ustar lukelukeb0VIM 7.1H!Dlukedarkstar~luke/Desenvolvimento/demo/lib/demo/View/TT.pmutf-8 3210#"! Utp.adx D .{znmZYGFA@2 n v N M H G D Q 1;=cutit under the same terms as Perl itself.This library is free software, you can redistribute it and/or modify=head1 LICENSESylvestre Mergulhao,,,=head1 AUTHOR} return $text; $text =~ s/((?:[A-Z]+[a-z]+){2,})/$self->render($c, 'wikilink', {topic => { name => $1 }})/eg; my($self, $c, $text) = @_;sub wikitext {} $self->NEXT::process(@_); }; $self->wikitext($c, @_); $c->stash->{wikitext} = sub { my($c) = @_; my $self = shift;sub process {=cutCatalyst TT View.=head1 DESCRIPTIONSee L=head1 SYNOPSISdemo::View::TT - Catalyst TT View=head1 NAMEuse base 'Catalyst::View::TT';use strict;package demo::View::TT;demo/root/favicon.ico0000644000175000017500000000476711043146341013603 0ustar lukelukeh& h( RR**jjZZ**JJ**zzRR>>::VV~~~~VVNN**bb**NN**~~>>::~~VV5555555555555555555555555555705555555555555$55555555555#25751)++555$ ("**8/55552'2 " "-5555555555&$,4 555555555535555555555%55555555555555.55555555555555/555555555555555555555555555$!5555555555555  5555555555555555555(  QQLLSS****UULLKK``UU****99LLLL99**<<<<**))88hhyyXXLLVV555555555555550555555555555pdemo/root/wikilink0000644000175000017500000000021411043217432013205 0ustar lukeluke [% topic.name %] [% '?' UNLESS topic_exists(topic.name) %] demo/root/topic/0000755000175000017500000000000011043216540012561 5ustar lukelukedemo/root/static/0000755000175000017500000000000011043146340012732 5ustar lukelukedemo/root/topic/view0000644000175000017500000000066511043216311013461 0ustar lukeluke

[% topic.name %]

[% IF topic.content %] [% wikitext(topic.content) %] [% action = c.uri_for(c.controller.action_for('update'), [topic.name]) %] [% ELSE %] Crie o topico porra! [% action = c.uri_for('create') %] [% END %]

demo/root/static/images/0000755000175000017500000000000011043146341014200 5ustar lukelukedemo/root/static/images/btn_120x50_powered.png0000644000175000017500000000742611043146341020146 0ustar lukelukePNG  IHDRx2ygAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTEqqp0/ޣ̌ÿʧuql87ED>>>WV䮯ꩨǺwv˓VU丶[ZWWWfeuuxwz{z⻹Յ멩Һ̳Ł~z```<<ʯSLF}|˜WVkkggg('νլݻ:2*WVNNNc]WiiwwfdCB̭CCC܅{FFgb\jjjD=6}xsĔյÄb`򹷴.&OIBϾ:9³ ̸ZTNsss䉅okeNMÿyuorng֘mgaMG@"G?9㄃on++嘘H6tRNSS% IDATxX}X&A G l`2PAppI8 IP4 *ɫ 1$Ðz2";;Ʒhehu*s\n F5y ;bG EDmKw@Ve+ZZ~69AjIW |O֔l9r~5s}q5ea5L9;S5|J[;5 qQ;̨ᒰ'Scc|dcf&diS5phg2J0EQ076%! LQQ*$JeWW?.?ZZI8B /@E$TLa1Ē #2Px,}V܉$)ׯt}u9@:`ɊN2;(*@? N$y̝1ZYϷ1>*6wO,"j8yćS3#2,2 QU%(rr3`TaLQkq8[8*_"w,Y\X0kYN3zMuttu:4HcBБaVGwtmNu3\7U-58~x=S#>蟰v^?Yh4bL0 )H >t^2"XGZ}$D>!lX:p#An<~7y`D"uruF`4sA|_bO+>xzOd`Lւak_-E/H.IT ޅ|T^̫1 VuQPFe#(c1{шt[ڮ#/{dm?50^#n8zEx.?/YԁcsVJ֭Xc7#0p@pcYٜOl O'= M}*{E̹+cWֱX8񻁀r>ϊ~Iu,Y$ "u,)u/`2:E75w.0+MԔ`뛐 555pcc7:czm%GQ^IA~9 iN#ѯ&6WtWmU]V'wqBJʏ5 fk.05U Z!w!%|b]Rwc%\]5uƪnϕ#Nq nYNp.1R2aٰ{]koo81͵Zr77ٗ}&@40R$aXK*'`vqePb0 كtK]gs{z oM\VȺu떽sp0l0\%FcR4!!%K&DHzz4GޯHܐ: I^} ʻK ٌbw799d7ԛI,D K[A$WJ6#X CZHXodkW秘.=k51L" "d_9cZȼsׇD>;cW"FK` x`ؽ"g 1 Ϙd`2]ƎC?SD+!tl-fW Rq]!fG&JDl^tАK<8c7/1d'Eb1c,V`l6P'cѳG{bI;͎b<(hWMʨ_Knkвz1>WxlE"GCKe#ѡb魿ą?eo"' IXoJcM p՞x+[n/-iVoJJʩ0+8Noo0ةx:{!n\8`:HScB#$ ރDb' XS&]7ި/H,oY"Ɋ):%Gdh`fIvZY3E;~e'asr#UfE8 sPobreh;6p4ø1TQ/ORNF0_BZdqLp6ar/'Nsxn1׃XRuBQ 6i1WsJ$=I ACqM[VӕmxWW׫?2Δa usՔ^ /v] a"U}N3k3 .ΰرR?}YʞZG`acݙN?W7_Z[ Z{d Ȉg˰ن Gí֠V''=lZH5-::>|rBѨ~כ67+V { SShBQ!GG phT(*|6ϙtFAvlJ;Id 28˝KsN2}U*nGM'In8 &ܤ^F ùs;붘(ʝ6z& rۗ)D<JP(f0yXAEQ(堥a •p!?`_,Z4;ۆj!?Qr<`94!hk,:jڈ0\w8QL$E$~!c;[P{.N#]eVYcpގ.gAȂZBڗDMSZZHmZmH7̘L.ݭJB^$'!JPˊ(V Y"ټZ.6Kf%1Am xϯDQqnnCg  S-\vU Pe!HP e*QJu I*>>WV˝ꩨ˓VU丶[Zz{zbbbfeuuxw⻹ՅҺ̳ũȁ}y㖖<<ʯSLF~}׾ȝWVkk('νլ޵:2*WVNNNd_YiiwwCB̬CCC܅{FFlllgb\D=6[[[}xsĔյba.&OIBϾ:9³ ̸YSL䉅okeNMÿxuqrng֘mgaMG@"ټG?9嘘㄃XVT`ZTon++7! IDATxڼX}\SߐhEH6 Tn!/qDD (MQ-ez\x %|cnˮެѝ{Ά^^{s7(zM4ؠܿUWRBo |: VVׄ 'Դ=jwj&P8+mY0I_ 8=64G(;' ~ E9kP0 6Os"\[}5 {<鮰W[0Ngx{zz :Qq0ួtd&;.鱘tYN嬥A쭵 y64Ӟ&qñ<]Gz~O3@ϙr0{{o<=zI\SX\P&4Z@#Ki\{k;3hnpJ$vIe+#9y#R4: 320xvJa[ƪDPD(Dҩ^Px0`([K֞vx܅3J0#`U$Ab6Lt1#Œ̚آ+_p 8/exV;|gNp4|hԶP,)[`I*hOcaC"W99 2D뒭vk1j-%5a0b6cOscA\["J[ҨB;GJ1/mKCmp0$ A,MRM<c.j\ Ws_aw+,]TXI*.R}+ɤ}p8_dVXtؕ)--M ^i`7 f2aiBc"j@K{a gcH{f@qy\d6AoBkq J'h.DI.$pϑI\nPd$*yv8:}E0MJXBע&ު9pٵDmC 7 Zm6QK9WҀf-w 3 ^c8KEA_BL>X0wD f2jl> Q=Ɍg2ڌDSzÏƾ+-їa""X; b)㟓bާ#6p @c'{qЍ? b~/>`TWWUM 2JLuUUZ@o"O MttH8gO?9‘\JJ%͝T UBxy *t ATQa * L61Su:r2WNtrz%5rɑKuhp;NhZGC Z'j]:۰Ѷ*4 FOL&7LQ,PՈ>*ua?T㏅S8Kc|.E%sZ`V^_S ׄl G(("   X|hS!HH` Xy^ ˢ^{S[Wov-䣭Fvy__pn N%`J Dfo`/> +1ۉo )%ЩM"l3>>{!g?y==Wm}FU[ e1-\X&$ zHJOB>2 -2숈6G2vzWկ6bE#{G:K<[[!^~ HgKdD+ZfKQw JҬaժm^҃7<wgIDATxڬ PW#BOZDP#AD )VRV%8j6$&DxP{Xj[bvz6;}$>V/*b9O˗'7Y}l<%b/W?Q|?88{.cEI!m$j8&))O}igJ>#D4 4>jIuMoz;+BU ']&i6ƞh 1xB_O5DbU-J6XN+08D)[HrǸu55juͮ+ R]E5!P BPH)J_O B@u){BB/57nc0]a%OOMG]ڐsL_X^;:>*-hf\x籡nHaztw=trͼ)}k#^%_S~rrrh jdryWn7jj2AL2Iά1PI&K'h\.{|J. Yy37zqͱ83 ukkN!8:1,b˚ay.Bv:3mԨA4wwss<.̄c ) ΂K !LLI2 ,OZnrD;/.ZO,o ֜7j4^J@xPSb\4Fw(8jD1ixti0o%挆8=_`J,HR @VuD"v.̦`?+o]16ZW&<< Qy0oR!I>CQGPNSAf f!6^n#f|Ѵ4[f|7;vXiZL Vl sAXL[ 4m0l6z#4b? 3$((ɇf1Xj K2.ej`8c.SGcm>$gU_c|A\IENDB`demo/root/static/images/btn_120x50_built_shadow.png0000644000175000017500000000714111043146341021157 0ustar lukelukePNG  IHDRx2ygAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTEtr⮯󤢝qrqQQQա0/̌uqlÿɦ87ED>>>WVꩨ˓VU丶[Zbbbfeuuxw𻹵Յ멩Һ̳}}}}x㿽<<ʯSLFݱ~}ȝWVkk('νլ:2*WVNNNd_YiiwwCB̬CCC臂}FFޔlllgb\D=6[[[|xtĔնba.&OIBϾ:9³ ̸YSL任okeNMÿxuqrng֘mgaMG@"G?9XVT`ZTon++㄃⾾嘘O+ IDATxڼX}\އXFcCBh@0Q 5_R'qr Ȏ׍1|)R!Ї?<\}_T&Zr9uX J Ţꆆ2٣=>Y>)>x'"c6CYXI<LP7sv]c~7P;n~5tc`ƑXs* 'juXƛͪM^7l`d)Ν^R! RrШTPuw OlYI\E:*8DKUIg30ΜQuP Gg [@:}>68،T%L6qD3n6;:f0'_f$att؃yLhnVs8SOq(bGY0 qGvWyG!Ԁv3̔ݦG:ٳ}A&ءpڎvf1Uommm.rߡVnZ{ zXZMp0; 1EE8z{X  u1BEXfhK q~c͠oC&zmvbxmgE.jk:pݨE]-`_f4ۼqGH @&d `"LH6KӦdD/zDE"fʌS4 g\{X@/"m `̉x'0{k,ϼy̷c[ #mi-#2bu2!ml,\·M~9=1@w¸xfR׎ڮ1u󯺽~)|0%da sJldrSz.-E9~}J s$(u{/^Y|Z~uޮy ~qk9\'N;4X*T]A\Lv^9 J$%B 1kۍ'Dn[o`Y\knWzusswSGD",07+;.J>E}0^qmT!6nnn罼u͚kf=e˖5C}:塾!!6 ]u@m̮fxy;uS@,~ x{yAQ˼~{AEy׸yH*Pۍg4>8y8tO2"f"!_n7~^b`' MeCv('sd!S>zSo ф IENDB`demo/root/static/images/catalyst_logo.png0000644000175000017500000003261611043146341017562 0ustar lukelukePNG  IHDR& gAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTE®mmkkCCMM|zyrr22Ⱥ++llk<<ژ<;:٧ٻڃ YY奣cc$$zztnkLLKȔYYYݎ˧XX|{޲ IHNj76󚕒hfڠϮΕVPKѱGB=b_\,+*)33"!Ր;:/&nm@?ŷ闗rrq"VOI򠟞߲RP77//Ѽqp`^縺C2IDATx} \Wo\mEA1a 8c .mԐ茂1jD!C:3$ ƖfiVEvQVMb˽sgDnp3Ɨ}9U 5oN}ο:U]9~CbS /I s4VKDn;nQ-ه{h!] x/X[2OLiX}eamiIJ>ߔ{:P&&Z`CtTv֡C[m3X[I}2 O<?'G.w,m#X[ &={޼ٳ._[ w.eL`mRlWǣ; Mfr-w$'=@ z%&@rkCq._ݱ~PrjAAAj5MhEd~ ~j[юyo V[[Y>;t諿;֯啕!,(P$l~A%KBow]k{a yοo'OYlٲOJJ>|sXs?ߒ|qʂڟ۲z)XųefF.#0+Oc-R-b|vffFª#%>>jge*k*).ggg]3O)-6>`UUjuOxeuvݧi@ɶgOM8f6˼t{9ӓ]HU`eb-vcrKuSlytTG~l)lO`(ocl$<~@L>]Cui` \TsZKm )>>; tVꋼ}n=jXUW)Nyy=-XSj/˖Y:/,g* ~>I]%V`LkA[EEE jƑԫD4*Sj"+;Sq[,+z]*Hdϲ[nE:kX]R[!G11qyCՆyPǯºOJjt[Ú_ǎ+=鋕xZҽ<>Eǎ]6Zb/FG}ț0~沣ˬ`]l( a- ^MM͂wƢPϳSZS͐7 k͉GM'f'-~=˱ ȫpErj*(3fy_{A'(*: V[\8ax!555].[ܻ/5]n.@$aD i:h.c0H`y؜gohn6:ãIJZ{Tk,mV^KJJ>j*l|cq 哯p.%%BG|uhGKV7.3R8 ~j0+-lHIRFp-5cXZ?f V[eLjœ8Ɖ2;Xn~Zl0{t&N:ts3Ofݵv{L?83GPzzAcLx0?n%n l]S/0^q@5M =붰۷o')p{[C? X qP(º%%SX^DR~(?JPQ~ l'  S^q:PB@ECp3%ed))؟(,)XY"bbZN\yj¯ ´JKYwf&a v#`J)q6.nC\܇a܇6A Ҧ | ذ߀+c,V@ 8tHqXc C}C|D #UHK&jcHkP6 ii8:g2z!L֭[$aMB^.,M_YX/A Y%jIZ'4F8(p_ jKG&$@^<‹O@@zla vOK &4+MC'&\>s-̕jdwttݶ X\X!?0c"4J. u0R'XA~oqbqyMKKCW$~mX㉅֎w0ys/rю6mak$O*U5޼&L{~zOP_@WK$*Me7"VUi2{XNwk,XTΊ x9Pꅪ՞PReM6`Uy oڐ'SҹAeQʴ09PSӋ lk7,eYv^e&?kz44 ֖? |qrzq-}Lk/gMVnݣƪz .)ӌTWAӝ}+ 'B rUZVc*1tup=gV |du :=5׉wWX5?8R"Y7g.:)CG2S߼֖9ħWJX)&Hʗco*]Wjזn2)@˜ 'H;>ks߭aC,M=V6 W[k{85U'3zV)A ޞNGKolF2Rj ʾo̡:+޵;Ktߎ񳳌xE?üڙ5@G&xNwݿ5 b1MdI3ND?'5w_{_-eZ.[wIcM/?5G eb|N[2s33f,2%E LJ51z|q̾o`5kRg_{K F)w#uh>MJbՃ`^ZwK X7F6`r FxD|kV_*#*8Q~S!Ƿ)LfL0kmy}izDk'YsU(59= g/==Xky^JoVp#e /K \7xK I + /I`1{ He/Y6xrut?!r NJ'+"jR6{[Yb*zu4NbP?=xҗ-`C%p .db s{gNSO J~7c N_4@u0J^ ZveUfpO},/&%eVexg[Vx@~?NsP LӀZwEWϭ&dc]BjGzZ@?~ |v2=#;m` P+˾=5Ǝw[X͞kboY6 kueSvo۶95;+-xN#2䑑D)#b3e[_0;윦ϘFBVEdsZq.>!_ `2˫thj6' )Ο+7Υ~02*a/X{{Sx{fg1zZq?^?cD&8j܂BuFvZ2>|;o+xd|\ fwȨd㦒\]K@Nu2߬;+10b:t ]0> e`pz4>x;ӧB߭p"?əd ~e܋Ϟ?O Yͷ ةKe~ 7M TYkY{iV8ߪ33K`HȏSi[T7WLC, YU.Mۺb3oN_ݯWr09F%6;y(b}~rЎHkos1b[,A+Kt7Ӊ|?nlq\> $HVrtA;rsr֥Knݺ{,;@,|)}Oq%Asay$be$]5KM3] =]S0Gg՗,\8Sm 2+4F. S/7nvN,_0(W8GvG2#dvv}r<|\NFNhqeʶ}?v FTގew{Wtǿ>يyK4jݶi+f rJooU)a(o*&“OvTgħn5t[l[^ 9;L]"ZG Jjq2S=oq1MzAOxܹk݇s5s?k[ k{aTs_?Xm|yB(zܷbPk%''LX7ẀOxs8,2y#ixbhu1CZb+~3~ 3V>tys@nyc߮kF|~<` nF cK&Xivwo] qxin;J=Cjy;NNuJx.65)V6)hLhSfٚF= ǯv}iR6DĽ&8 zh6sh}K7x 1 [t웄)R+I OB.R-1 H]| R #h{p6,jO))”R: lh'\VZ\ : OQ`17Nq3(Q9QPo׀Iu+dnyum53:ƬdY`: ݄#12`b854'D`{0 04@d2-Xgƛ* I?X`}4?++4yBjo0| S)1 7P', )JY2|swdrpp'h\YD[o Uh)X`[< M^n>@F'v/h\:^˅qPnT,|2 ˗Ko0_tÑoBPz/MI!ؖ\!@eHyW_:+ "zuʊ/)!7KY7&X*ҔWJ|˭b,йjHl35 '_@hD^NˊDK^[|ݥkf3g4Y@6p8ظQu9Ø!ԉxq#UӐHc76ƴ 1#,PƼ7js(p)Ȇ5SxQ;Μ?zuf#gQOJhV&yE^nk"ƍ(ݸ1#4G 5]}DT}MqŹiѠY+UTY)iSb†+5gJm&s yE۸ 6Hx0<R225ad,W*֍5 LL1Rf^΂2D2C rVgQ3[=E?De2Xky7g~x85U  aE4~E:NK VϞ=NCa?P_gb5=Kb<i˪HtUSAY_ubDhQOS۪? t6A Rlc;˪HP8xY WP8w 8H$i$?p-7rJ ejwV<h 89U-9Hy{@<]F^k Vz \zӻ|MK"{D ɞ!)o%Pl+! !6txwu3ߟs,m{ʓ <9/{Q1yE$jyŷ#lSRo?ӻil@p^HG!g;ُ^/H2Az?h'Pl5\_[yqrn_YٻUW3,{}{k)^$, {IK;14_Pm䕾[I^++&Eb^̀{}qY=FQ=ENG-cڮ4(fycSܵzd(M,E91 lSee zruQGv"Q7(Z:ԷoJg`>ۢ^ЦS`~'ܲSPBt23v$2ۊ)ZZ_.؉T^Y?b^zJZODlSTH\j}-+cN S9S%cjl䕎=MuN ( w(N}\O) rb [POm*@ NCO(6JL"x\YJǔc8;1j40{:,3 V^ݑ* :eK\SN>^! +s%VP+-֊M-mva_A-ߩz$l^KE^K FK6քieTP`t0⭥ JW{I~۵' Od FG'O9*'kBzޜ%MDlS%8KyI H'ɿ!=}_TO~?Cֈg'AHIb_Z2613A B7C+N3ht2(㙜4250z,>j>bS:Fu=|_EV;XֈUzы+Q8g ≑JGvt}::n8Wk*Av*H| &UԀOW^Q7ȁw ,bh 긊H"wmwbp`rU\֦owt(Dm7:G7n|خw ]_ }ntt|ށP;ڐm*7WQ?\\&7SHl_|b +"iIÚV5`_5F$eQQ_#Xʫ5Rls GPՉ +k^z}BT,5DT2Zv*9(^6z@"VP=X#`ļεUP։\kѶDE$`UDL)h]>Rᓨ E^NMG DpCtIEu"Ab9M'}u6hϹJ@PD}ghM@'' 599 Q^,J씁\ֵ5 4tՐa6*y)mN y(:qLLtE92Ebb(lVG+ X;w P e"B&XKbSh8kfh3dZk;ϟ;)EK;+BъhX hŵ?|b] ؂Z)Hv-1uJDt$EڠKu+\@y߁vMHl`Cy8`CX]BMTĂ:-QtLTp'\+H8f(|"|w"R-SȰ!rEEDz-Fׇ:O@*cXl|zס ]u?M^Z,ynW3ru̥rj[?Օ"!ymXNIiD:Q)O@`y'DKAQOkrvм>x>Mr uQ׍s/il4}캻_B+Ew'ݘJ*hU:NwtynļudlPn.F@]%4["םK4@XBLv3`1#` CG>}_\ ?QK Y0A{p< 4AMݻs!9 O܊pu[y%lucV]rV[yW? $mآaea[dk~YwƘ3j^[[e4,{a58W*[OIIKx'2;7*fd L#*HaI0Ś[P$gcijH^w4a*o,Rjtϵ%7߹I. U xi5bߕdhd()r.ZڢtU*+sb7 *) V-<PX6?#a /x|SIENDB`demo/root/static/images/btn_88x31_powered.png0000644000175000017500000000475611043146341020105 0ustar lukelukePNG  IHDRXTgAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTEOOnnnggzzٔKKqqq((㳲|||嬬 80)fffZZƇ..كvqltt˲ZZZݺꧥII6.'ܐ||SSSE=7RKEhb]\\,,҂}yIB;{vqc]XԮ}lfaMF@ƻ FFFZZY\\\铐XXX^WQ䪧 ZSM򧧦}xsߢح̝LLL_YS66?? rrգOHBթίYZYaaaMtRNSS%gIDATxڴTSW_ DQQEL蓡.DbQbdB "nu-v`Vk-ahOS;w睼qut x2ټ^7]tq+oٚzbc[څ|||%b=qXqYMmϟƷ~؋,q\㺵 &7Sd-qc|}d2sD>Pl,fI]ouh̻3f.d<"ǍFA6ђ;B0se;&i?`tʀSF羪q"E W!jaXxbx[8`{! RL]Ǚ2j_' rg:5O $`BE&d,^ 3G+(8*E Ѵl|J8(H~7_`--CZlL݉vj½i3O#DbPkFȼˑbc8z7cU2T [DUfVbc*ˀVꧥX;or]N6›f˓wtr6-S4]$rz=fܦ[bf[#Al:v6<<[_n=t˾G@bbEbd-Pڊjy&x$b),+Sq $C 4_wSPو~"u(:HL)(Lu 5b / $d,t[*+bPXUUUU(®wCe2ʡ(+,zN%1t4 !.5{Pc@+_xX us0n|U>ƙ=m<+IfՆ {I U<θꤽJGVyȾ oFIENDB`demo/root/static/images/btn_120x50_built.png0000644000175000017500000000736211043146341017617 0ustar lukelukePNG  IHDRx2ygAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTEϋ󤢝ճܡ0/qqp̌uqlÿɦ87ED>>>WV䮯˝ꩨǼ|{˓VU丶ؖ[ZWWWfeuuxwՅ멩Һ̳}x```㾾<<ʯSLFܱ}|}~}ȝWVkkggg('νլ:2*WVNNNc]Wiiww¾fdCB̭CCC܇}FFޒgb\jjjD=6|xtĔյb`.&OIBϾ:9³ ̸ZTNsss任okeNMÿyuorng֘mgaMG@"G?9㄃on嘘++Ʒrqd*tRNSS% kIDATxXkTSWNhMkxbBZ. D(X@A }@UQ *!mQ-T|L-Q(:-uB(}ڪ>5$Hάe5߽gGʂuwP~M|㶃;}vs쀥 &ָMqYXǞPUm#>2=lVOT^ڢn62qƅmaSNlL(1ay՞~ȗ«!l_baf3 h7\q01|tӦaQ'?''j$kǪ@X#4ԎIk^}E" 8eS4-B#8=,@pDByӛRb|S`U?qjlA˪MN=_ {eYTgM5 ,rYU4,S5Hq-K҄ƊuGv$KT*GL9c}<=49c`|f(a"f4]EhʷYT*tDsf4UbbGiݏzG)#2ˤb@ ;-U4 ȧ!ɪ<kIrd% >ޫ<`ڒOhálqMo솒{x<{#w;ln/Zlp4Y:Ksm;YlTh75nwqߏ7gt>| ]^^v:~u:Ix}`e΢'Nd? "n㠔ǜZ͙_o}~ a'AwDQQ[/@ Ғ |1tK Ң$0nz}<NOOwKm{{yov{/+*4PîYkN^K݁K V'0nx10c,؊صuvu+._};ãZa;>-`DCVd%ӣ"$˕K]Y;e+gz׫FmW_4m/G̓L6?OOd懽? (ρàO0x|ܒ#]fˎeŝї]`Ҍ'6;]?]ig:u"(&E4$Xv ϤNhXB{иmam\<0$ 7-wC;\^:DC0X@aү`-Vw]| T %',(S)2כ͢ z.rfW+&`Æ +0E"` Ԑi."H6԰QnX?d` P-}V90j]wy/F"*:קf-6p+wzkvPG!P K[ y3¦rd`3l7n$5M;wg9mXdZ. ib]]iK9~'#>qjB*>ci9E@c2[,},s羄r3~N .C \A)yrUxJE, B!v'S#xlJ!^ٙc?}nmu-eĘXQ1`rB!XQ1wRxIoJ+d""|)Ɯ[߷u`8[]2FfO$2F#x CR@}+Nʲoygvb[P@ۥ~e$B"<@{[xJ%o3,U80 [Բ:ւxbogbSXpc,5njmtWz0A,uQw24HThnn{hԳ<(:f RqT^^VVڻUTQlo9 S(#|3)3R%pW3Z*䍻=zMRmazVomy3Q 321g2lk{3=/`mn><d%%-HJdy9XŁ7Fji{uqwcvw%PTVj=Q Wj41m x٦.]Z 0f[GBiݐg;$$CH Lr AOkVVM2XC$!)#5Ay )¹r;qȐtpi,>ON!$N·Y`W)|$9h!?'G/^?/OmiZE|t~kuW61>46[t©w+/? | MIENDB`