App-RetroPAN
view release on metacpan or search on metacpan
t/retropan.t view on Meta::CPAN
use Test::More;
use App::RetroPAN;
use File::Temp qw/ tempdir /;
use_ok 'App::RetroPAN';
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new( GET => "https://fastapi.metacpan.org/v1/release/_search" );
my $res = $ua->request($req);
SKIP: {
skip "Cannot reach API server" if !$res->is_success;
ok $res->is_success, "API server reachable";
my ($author, $dist, $url) = App::RetroPAN::find_module_on_date("Moose", "2011-01-01T00:00:00");
is($dist, "Moose-1.21");
is($author, "DROLSKY");
like($url, qr/^http.*Moose-1\.21\.tar\.gz/);
($author, $dist, $url) = App::RetroPAN::find_module_on_date("Pod::Spell", "2002-01-01T00:00:00");
is($dist, "Pod-Spell-1.01");
is($author, "SBURKE");
($author, $dist, $url) = App::RetroPAN::find_module_on_date("Pod::Spell", "2016-02-22T00:00:00");
is($dist, "Pod-Spell-1.19");
is($author, "DOLMEN");
($author, $dist, $url) = App::RetroPAN::find_module_on_date("Class::C3", "2011-01-01T00:00:00");
is($dist, "Class-C3-0.23");
is($author, "FLORA");
($author, $dist, $url) = App::RetroPAN::find_module_on_date("DBI", "2015-01-01T00:00:00");
is($dist, "DBI-1.632");
is($author, "TIMB");
my @deps = App::RetroPAN::find_module_dependencies("DROLSKY", "Moose-1.21");
is_deeply(\@deps, [qw/ Test::Requires Test::Fatal Params::Util Data::OptList Sub::Name Class::MOP Task::Weaken Try::Tiny Package::DeprecationManager List::MoreUtils Sub::Exporter /]);
my ($dists_required, $dist_to_url) = App::RetroPAN::find_deps_on_date("2011-01-01T00:00:00", "Moose");
isa_ok($dist_to_url, 'HASH');
{
local $TODO = "B::Debug was removed from core" if ($^V ge v5.30.0);
is_deeply($dists_required, [qw|
CHOCOLATE/Scope-Guard-0.20
FLORA/Devel-GlobalDestruction-0.03
DOY/Package-Stash-0.13
FLORA/Algorithm-C3-0.08
FLORA/Class-C3-0.23
FLORA/MRO-Compat-0.11
FLORA/Sub-Name-0.05
DROLSKY/Class-MOP-1.11
ADAMK/Task-Weaken-1.03
DOY/Try-Tiny-0.09
RJBS/Test-Fatal-0.003
TOKUHIROM/Test-Requires-0.06
DROLSKY/Package-DeprecationManager-0.10
VPARSEVAL/List-MoreUtils-0.24
RJBS/Sub-Install-0.925
RJBS/Data-OptList-0.106
ADAMK/Params-Util-1.03
RJBS/Sub-Exporter-0.982
DROLSKY/Moose-1.21
|]);
}
my $td = tempdir( CLEANUP => 1 );
App::RetroPAN::make_minicpan($td, $dists_required, $dist_to_url);
ok -f "$td/modules/02packages.details.txt";
($dists_required, $dist_to_url) = App::RetroPAN::find_deps_on_date("2015-01-01T00:00:00", "Catalyst");
isa_ok($dist_to_url, 'HASH');
{
local $TODO = "B::Debug was removed from core" if ($^V ge v5.30.0);
local $TODO = "inc::latest, Module::Build, CGI removed from core" if ($^V lt v5.22.0);
is_deeply($dists_required, [qw|
MIYAGAWA/Plack-1.0033
MIYAGAWA/Plack-Middleware-ReverseProxy-0.15
MRAMBERG/Text-SimpleTable-2.03
FLORA/Class-C3-Adopt-NEXT-0.13
FULLERMD/CGI-Struct-1.21
ETHER/MooseX-MethodAttributes-0.29
SZABGAB/CGI-Simple-1.115
SWEETKID/Plack-Middleware-RemoveRedundantBody-0.05
RSAVAGE/Tree-Simple-1.24
RSAVAGE/Tree-Simple-VisitorFactory-0.12
EBHANSSEN/Test-Trap-v0.3.0
ETHER/MooseX-ConfigFromFile-0.13
BRICAS/Config-Any-0.24
ETHER/MooseX-SimpleConfig-0.11
ETHER/Moose-2.1403
ETHER/MooseX-Getopt-0.65
MIYAGAWA/Plack-0.9956
FLORA/MooseX-Emulate-Class-Accessor-Fast-0.00903
SIMONW/Module-Pluggable-5.1
SWEETKID/Plack-Middleware-FixMissingBodyInRedirect-0.12
FLORA/Plack-Test-ExternalServer-0.01
INGY/Inline-0.78
INGY/Pegex-0.59
PARDUS/File-BaseDir-0.03
PARDUS/File-MimeInfo-0.9
URI/File-ReadBackwards-1.05
FREW/IO-All-0.85
INGY/YAML-LibYAML-0.55
INGY/Inline-C-0.71
DAGOLDEN/Dist-Zilla-Plugin-OSPrereqs-0.005
APOCAL/Pod-Spell-CommonMistakes-1.002
LEONT/ExtUtils-Helpers-0.022
LEONT/ExtUtils-InstallPaths-0.010
REHSACK/Config-AutoConf-0.309
DAGOLDEN/inc-latest-0.500
REHSACK/Data-Tumbler-0.008
SHLOMIF/File-Find-Object-v0.2.12
ISHIGAKI/Archive-Any-Lite-0.10
AUDREYT/Algorithm-Diff-XS-0.04
TYPESTER/Array-Diff-0.07
DOMM/Pod-Strip-1.02
DOMM/Module-ExtractUse-0.33
SUKRIA/Test-TinyMocker-0.05
XSAWYERX/MetaCPAN-API-0.44
KENTNL/Dist-Zilla-Plugin-Git-Remote-Check-0.1.2
DAGOLDEN/superclass-0.003
DAGOLDEN/HTTP-Tiny-UA-0.003
KENTNL/Net-Travis-API-0.001001
KENTNL/Dist-Zilla-UtilRole-MaybeZilla-0.001000
FREW/Log-Contextual-0.006004
FREW/Data-Dumper-Concise-2.022
KENTNL/Log-Contextual-LogDispatchouli-0.001000
KENTNL/Dist-Zilla-Util-Git-Wrapper-0.004001
CJM/Dist-Zilla-Plugin-Git-2.029
IZUT/Date-Simple-3.03
RUBYKAT/Dist-Zilla-Plugin-GitFmtChanges-0.005
ALEXBIO/Dist-Zilla-Plugin-Test-CheckManifest-0.04
ALEXBIO/Dist-Zilla-Plugin-Clean-0.07
BBYRD/Dist-Zilla-TravisCI-1.12
BBYRD/Dist-Zilla-Role-PluginBundle-Merged-1.00
BBYRD/Dist-Zilla-PluginBundle-Prereqs-0.93
RJBS/Dist-Zilla-5.029
SWESTRUP/Dist-Zilla-Plugin-ReportPhase-0.03
ADAMK/Module-Manifest-1.08
ETHER/Test-DistManifest-1.012
DOHERTY/Dist-Zilla-Plugin-Test-DistManifest-2.000004
VPIT/autovivification-0.14
THALJEF/criticism-1.02
DOHERTY/utf8-all-0.015
HIDEAKIO/autolocale-0.07
CHOCOLATE/B-Hooks-OP-Annotation-0.44
CHOCOLATE/true-0.18
DEXTER/namespace-functions-0.0101
t/retropan.t view on Meta::CPAN
GETTY/HTTP-Body-1.19
GAAS/HTTP-Message-6.06
DDICK/Test-MockTime-0.13
KAZEBURO/Time-TZOffset-0.03
KAZEBURO/POSIX-strftime-Compiler-0.40
KAZEBURO/Apache-LogFormat-Compiler-0.32
MIYAGAWA/Hash-MultiValue-0.15
DOY/Stream-Buffered-0.03
MIYAGAWA/Filesys-Notify-Simple-0.12
MARKOV/MIME-Types-2.09
MIYAGAWA/HTTP-Server-Simple-PSGI-0.16
GAAS/LWP-Protocol-http10-6.03
RWSTAUNER/Config-MVP-Slicer-0.302
RWSTAUNER/Dist-Zilla-Config-Slicer-0.200
MIYAGAWA/Dist-Zilla-Plugin-Prereqs-FromCPANfile-0.08
RWSTAUNER/Dist-Zilla-Role-PluginBundle-PluginRemover-0.102
MIYAGAWA/Dist-Zilla-Plugin-ReversionOnRelease-0.05
DAGOLDEN/Dist-Zilla-Plugin-CheckChangesHasContent-0.007
MIYAGAWA/Dist-Zilla-Plugin-LicenseFromModule-0.05
MIYAGAWA/Dist-Zilla-Plugin-NameFromDirectory-0.03
MIYAGAWA/Dist-Milla-v1.0.9
MIYAGAWA/CGI-Compile-0.18
MIYAGAWA/CGI-Emulate-PSGI-0.20
KASEI/Class-Accessor-0.34
RSAVAGE/Crypt-PasswdMD5-1.40
CHANSEN/Authen-Simple-0.5
CHANSEN/Authen-Simple-Passwd-0.6
FLORA/HTTP-Request-AsCGI-1.2
AVAR/Hijk-0.18
DANKOGAI/URI-Escape-XS-0.12
SRI/Mojolicious-5.70
AVIF/Time-Duration-1.1
PERLANCAR/Progress-Any-0.18
SHARYANTO/Perinci-Sub-DepChecker-0.10
PERLANCAR/Sah-0.9.31
YANICK/File-ShareDir-Tarball-0.2.2
SHARYANTO/Text-sprintfn-0.06
ADAMK/Algorithm-Dependency-1.110
SHARYANTO/Data-ModeMerge-0.30
SHARYANTO/Version-Util-0.71
NEILB/Lingua-EN-Numbers-Ordinate-1.03
PERLANCAR/String-Indent-0.01
CHOCOLATE/Scalar-Util-Numeric-0.40
PERLANCAR/Data-Sah-0.36
PERLANCAR/Perinci-Sub-Wrapper-0.67
PERLANCAR/Package-MoreUtil-0.58
PERLANCAR/Module-Path-More-0.27
PERLANCAR/Riap-1.2.2
PERLANCAR/Perinci-Access-Base-0.32
CHAMAS/Tie-Cache-0.21
ETJ/Event-1.23
MUIR/IO-Event-0.813
EXODIST/Test-SharedFork-0.29
ANDYA/Data-Structure-Util-0.15
MLEHMANN/Async-Interrupt-1.2
MLEHMANN/Guard-1.023
MLEHMANN/EV-4.18
MLEHMANN/AnyEvent-7.08
MUIR/File-Flock-2014.01
CRENZ/Module-Find-0.12
ETHER/Any-Moose-0.24
ETHER/Crypt-Random-Source-0.10
JAWNSY/Math-Random-ISAAC-1.004
JAWNSY/Math-Random-ISAAC-XS-1.004
MKANAT/Math-Random-Secure-0.06
SHARYANTO/UUID-Random-Patch-UseMRS-0.01
SHARYANTO/Crypt-Password-Util-0.09
SHARYANTO/Unix-Passwd-File-0.12
SHARYANTO/String-Wildcard-Bash-0.01
PERLANCAR/Complete-Getopt-Long-0.27
PERLER/UUID-Random-0.04
SHARYANTO/Filesys-Cap-0.01
PERLANCAR/Complete-Path-0.06
PERLANCAR/Complete-Util-0.21
SPROUT/Sub-Delete-1.00002
SHARYANTO/Monkey-Patch-Action-0.04
PERLANCAR/Complete-0.10
PERLANCAR/Complete-Bash-0.15
PERLANCAR/Perinci-Sub-Complete-0.70
ZEFRAM/Module-List-0.003
PERLANCAR/String-Trim-More-0.02
PERLANCAR/Perinci-Object-0.21
PERLANCAR/Perinci-Examples-0.44
PERLANCAR/Perinci-Access-Perl-0.79
PERLANCAR/Data-Dmp-0.05
PERLANCAR/Data-Dump-OneLine-0.06
SHARYANTO/Gen-Test-Rinci-FuncResult-0.04
PERLANCAR/Perinci-Sub-Util-0.40
SHARYANTO/Perinci-Sub-GetArgs-Array-0.14
PERLANCAR/Getopt-Long-Util-0.79
PERLANCAR/Rinci-1.1.70
PERLANCAR/Perinci-Sub-Normalize-0.08
PERLANCAR/Data-Clean-JSON-0.20
SHARYANTO/Data-Sah-Normalize-0.01
PERLANCAR/String-LineNumber-0.01
PERLANCAR/Function-Fallback-CoreOrPP-0.06
PERLANCAR/String-PerlQuote-0.01
DAGOLDEN/Log-Any-1.02
GFUJI/Data-Clone-0.004
IBB/Acme-Damn-0.06
PERLANCAR/Perl-osnames-0.11
PERLANCAR/Perinci-Sub-GetArgs-Argv-0.60
PERLANCAR/DefHash-1.0.8
PERLANCAR/Test-Rinci-0.09
DROLSKY/Dist-Zilla-Plugin-SurgicalPodWeaver-0.0023
SHARYANTO/Log-Any-Adapter-Callback-0.09
MICKEY/MetaCPAN-Client-1.008000
ADAMK/asa-1.03
NUFFIN/IO-Handle-Util-0.01
SZABGAB/Parallel-ForkManager-1.07
DROLSKY/Test-DependentModules-0.20
HDP/Config-INI-Reader-Ordered-0.011
BARBIE/Test-CPAN-Meta-JSON-0.15
JROCKWAY/Test-YAML-Valid-0.04
BARBIE/Test-CPAN-Meta-YAML-0.22
ETHER/Dist-Zilla-Plugin-Test-CheckBreaks-0.011
ETHER/Dist-Zilla-Plugin-Breaks-0.003
DAGOLDEN/MooseX-Types-Stringlike-0.003
ETHER/Dist-Zilla-Plugin-MakeMaker-Awesome-0.32
ETHER/Dist-Zilla-Plugin-DynamicPrereqs-0.009
ETHER/Dist-Zilla-Plugin-OptionalFeature-0.020
t/retropan.t view on Meta::CPAN
NEILB/Exporter-Lite-0.06
MOTEMEN/Test-Deep-JSON-0.03
DAGOLDEN/Dist-Zilla-Plugin-Prereqs-AuthorDeps-0.004
ETHER/UNIVERSAL-isa-1.20140927
LEEJO/CGI-4.13
CHROMATIC/Test-MockObject-1.20140408
AJGB/Dist-Zilla-Plugin-AutoMetaResources-1.20
RJBS/App-Cmd-0.326
RJBS/Throwable-0.200012
MLEHMANN/Types-Serialiser-1.0
MLEHMANN/JSON-XS-3.01
MAKAMAKA/JSON-2.90
RJBS/String-Errf-0.007
RJBS/Role-HasMessage-0.006
PHAYLON/Declare-Constraints-Simple-0.03
DOY/ExtUtils-MakeMaker-Dist-Zilla-Develop-0.03
NUFFIN/Tie-ToObject-0.03
RSRCHBOY/MooseX-MarkAsMethods-0.15
CHROMATIC/SUPER-1.20141117
HAARG/Algorithm-C3-0.10
SHAY/Class-Singleton-1.5
DROLSKY/List-AllUtils-0.09
BDFOY/Test-Output-1.03
PETDANCE/Test-Taint-1.06
DROLSKY/DateTime-TimeZone-1.83
DROLSKY/DateTime-Locale-0.45
DROLSKY/DateTime-Format-Strptime-1.56
DROLSKY/Class-Factory-Util-1.7
DROLSKY/DateTime-Format-Builder-0.81
XMIKEW/DateTime-Format-MySQL-0.05
HAARG/Role-Tiny-1.003004
DCONWAY/Lingua-EN-Inflect-1.895
DROLSKY/Specio-0.11
ADAMK/Params-Coerce-0.14
DOY/MooseX-NonMoose-0.26
XENO/File-chmod-0.40
ADAMK/Pod-Tests-1.19
RSAVAGE/Config-Tiny-2.20
ADAMK/Test-ClassAPI-1.06
ADAMK/prefork-1.04
ADAMK/File-Flat-1.04
JHOBLITT/DateTime-Calendar-Mayan-0.0601
RKINYON/DBM-Deep-2.0011
MIYAGAWA/Data-Section-Simple-0.07
TBONE/Locale-US-2.112150
LDS/Devel-Cycle-1.12
PETDANCE/Test-Memory-Cycle-1.04
LBROCARD/DateTime-Stringify-4.08
ALEXMV/Module-Refresh-0.17
THEPLER/MooseX-Types-Path-Class-0.06
DAGOLDEN/File-pushd-1.009
RJBS/MooseX-SetOnce-0.200002
PEVANS/List-UtilsBy-0.09
KENTNL/Dist-Zilla-Role-Bootstrap-1.000003
KENTNL/Dist-Zilla-Plugin-Bootstrap-lib-1.001000
DAGOLDEN/Dist-Zilla-PluginBundle-DAGOLDEN-0.073
ETHER/aliased-0.33
ETHER/MooseX-LazyRequire-0.11
DROLSKY/Log-Dispatch-2.44
RJBS/Log-Dispatch-Array-1.003
RJBS/String-Flogger-1.101245
RJBS/Sub-Exporter-GlobExporter-0.004
RJBS/Log-Dispatchouli-2.012
RJBS/IO-TieCombine-1.004
ETHER/Test-TempDir-0.09
URI/File-Slurp-9999.19
BOBTFISH/Directory-Scratch-0.15
RSRCHBOY/Dist-Zilla-Plugin-ContributorsFromGit-0.014
ETHER/Devel-PartialDump-0.17
RJBS/MooseX-Types-Perl-0.101343
XENO/Dist-Zilla-Plugin-Test-PodSpelling-2.006008
ETHER/Class-Load-XS-0.09
STBEY/Carp-Clan-6.04
BINGOS/Log-Message-0.08
BINGOS/Log-Message-Simple-0.10
BINGOS/Term-UI-0.42
MIYAGAWA/Term-Encoding-0.02
LEONT/ExtUtils-Config-0.008
LEONT/Devel-FindPerl-0.012
NEILB/Module-Path-0.18
RJBS/Perl-PrereqScanner-1.022
RJBS/Sub-Exporter-ForMethods-0.100051
ETHER/Dist-Zilla-Plugin-Test-CleanNamespaces-0.006
ETHER/Dist-Zilla-Plugin-PromptIfStale-0.032
ETHER/namespace-autoclean-0.23
RJBS/Pod-Eventual-0.094001
BINGOS/Dist-Zilla-Plugin-GithubMeta-0.46
ETHER/Class-Method-Modifiers-2.11
HAARG/Moo-1.006001
RJBS/Role-Identifiable-0.007
CHORNY/Tie-IxHash-1.23
LEONT/File-Slurp-Tiny-0.003
BDFOY/Perl-Version-1.013
LEONT/Dist-Zilla-Plugin-ModuleBuildTiny-0.008
ETHER/Dist-Zilla-Plugin-ModuleBuildTiny-Fallback-0.014
ETHER/YAML-Tiny-1.64
DROLSKY/Params-Validate-1.13
RJBS/Sub-Exporter-0.987
RJBS/Getopt-Long-Descriptive-0.098
MSCHILLI/Net-HTTP-6.07
GAAS/File-Listing-6.04
PETDANCE/HTML-Tagset-3.20
MIKEM/Net-SSLeay-1.66
SULLR/IO-Socket-SSL-2.008
GAAS/WWW-RobotRules-6.02
GAAS/HTTP-Negotiate-6.01
GAAS/HTTP-Cookies-6.01
GAAS/HTTP-Daemon-6.01
NBEBOUT/NTLM-1.09
ABH/Mozilla-CA-20141217
MSCHILLI/LWP-Protocol-https-6.06
RJBS/CPAN-Uploader-0.103007
ETHER/Dist-Zilla-Plugin-Test-Compile-2.051
ETHER/Dist-Zilla-Plugin-Keywords-0.006
ETHER/Module-Runtime-Conflicts-0.001
ROBIN/PadWalker-2.0
RCLAMP/Devel-Caller-2.06
RCLAMP/Devel-LexAlias-0.05
SHANCOCK/Perl-Tidy-20140711
DOY/Eval-Closure-0.11
RJBS/Config-MVP-Reader-INI-2.101463
t/retropan.t view on Meta::CPAN
GOCCY/Compiler-Lexer-0.19
ISHIGAKI/Perl-MinimumVersion-Fast-0.15
TOKUHIROM/Test-MinimumVersion-Fast-0.04
TOKUHIROM/Test-Requires-0.08
RCLAMP/Number-Compare-0.03
RCLAMP/Text-Glob-0.09
RCLAMP/File-Find-Rule-0.33
ADAMK/File-Remove-1.52
ADAMK/Test-Object-0.07
JSTOWE/TermReadKey-2.32
ETHER/Dist-Zilla-Plugin-VerifyPhases-0.009
ETHER/Dist-Zilla-PluginBundle-Author-ETHER-0.081
ETHER/Hook-LexWrap-0.25
ADAMK/Test-SubCalls-1.09
GAAS/IO-String-1.08
DAGOLDEN/PPI-XS-0.902
HAYASHI/Term-ReadLine-Gnu-1.25
RJBS/IPC-Run3-0.048
KWILLIAMS/Probe-Perl-0.03
ADAMK/Test-Script-1.07
ADAMK/File-Which-1.09
TODDR/IO-Tty-1.12
TODDR/IPC-Run-0.94
MSCHILLI/Log-Log4perl-1.46
MSCHILLI/Archive-Tar-Wrapper-0.21
ETHER/Dist-Zilla-Plugin-OnlyCorePrereqs-0.019
CHANSEN/Unicode-UTF8-0.60
DAGOLDEN/Path-Tiny-0.061
MJD/Text-Template-1.46
DAGOLDEN/Test-FailWarnings-0.008
BOBTFISH/MRO-Compat-0.12
RJBS/Data-Section-0.200006
LEONT/CPAN-Meta-Check-0.009
LEONT/Test-CheckDeps-0.010
BBYRD/Software-License-CCpack-1.11
REYNOLDS/IO-Capture-0.05
MIYAGAWA/Module-CPANfile-1.1000
ISHIGAKI/ExtUtils-MakeMaker-CPANfile-0.06
ISHIGAKI/Module-CPANTS-Analyse-0.96
SANBEG/Test-Directory-0.041
REHSACK/Test-WriteVariants-0.010
REHSACK/List-MoreUtils-0.402
ADAMK/Task-Weaken-1.04
GARU/Clone-0.37
HAARG/local-lib-2.000015
LEONT/Module-Build-Tiny-0.039
APOCAL/Test-Pod-Spelling-CommonMistakes-1.001
RENEEB/Test-CheckManifest-1.28
ADAMK/Class-Inspector-1.28
GWYN/File-ShareDir-Install-0.10
REHSACK/File-ShareDir-1.102
DOY/Dist-Zilla-Plugin-PerlVersionPrereqs-0.01
DAGOLDEN/Class-Tiny-1.000
BARBIE/Test-CPAN-Meta-0.23
SARTAK/Test-Spelling-0.20
DAGOLDEN/Capture-Tiny-0.27
BOBTFISH/Test-NoTabs-1.3
DOY/Try-Tiny-0.22
RJBS/Test-Fatal-0.014
RCLAMP/Pod-Coverage-0.23
DAGOLDEN/Sub-Uplevel-0.24
EXODIST/Test-Exception-0.35
ANDK/Devel-Symdump-2.14
NEILB/Test-Pod-Coverage-1.10
LEONT/PerlIO-utf8_strict-0.005
ADAMK/Params-Util-1.07
RJBS/Data-OptList-0.109
RJBS/Sub-Install-0.928
ADAMK/Test-NoWarnings-1.04
RJBS/Test-Deep-0.114
LEONT/Module-Build-0.4210
DWHEELER/Test-Pod-1.48
RJBS/Pod-Coverage-TrustPod-0.100003
CJM/IO-HTML-1.001
GAAS/HTTP-Date-6.02
JDB/Win32-Console-0.10
GAAS/Encode-Locale-1.03
GAAS/LWP-MediaTypes-6.02
BDFOY/Business-ISBN-20001010
CORION/Test-Without-Module-0.18
MLEHMANN/common-sense-3.73
RURBAN/Cpanel-JSON-XS-3.0113
ETHER/JSON-MaybeXS-1.003003
JJNAPIORK/Catalyst-Runtime-5.90075
|], "Why re-invent the wheel?");
}
}
done_testing();
( run in 1.845 second using v1.01-cache-2.11-cpan-5b529ec07f3 )