Bugzilla – Attachment 146872 Details for
Bug 31028
Add 'Report a concern' feature for patrons to report concerns about catalog records
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 31028: Add new Koha::Object(s) classes
Bug-31028-Add-new-KohaObjects-classes.patch (text/plain), 16.51 KB, created by
Kyle M Hall (khall)
on 2023-02-17 17:20:11 UTC
(
hide
)
Description:
Bug 31028: Add new Koha::Object(s) classes
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2023-02-17 17:20:11 UTC
Size:
16.51 KB
patch
obsolete
>From ede066a469b6fa98b3293aee1faf12f2c8408a89 Mon Sep 17 00:00:00 2001 >From: Martin Renvoize <martin.renvoize@ptfs-europe.com> >Date: Tue, 25 Oct 2022 13:07:44 +0100 >Subject: [PATCH] Bug 31028: Add new Koha::Object(s) classes > >This patch adds new Koha::Object(s) for the newly introduced tables, >including updateing existing Koha::Objects adding new relations as >required. > >Signed-off-by: David Nind <david@davidnind.com> >Signed-off-by: Helen Oliver <HOliver@tavi-port.ac.uk> > >Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> >--- > Koha/Biblio.pm | 15 +++ > Koha/Ticket.pm | 110 +++++++++++++++++++++ > Koha/Ticket/Update.pm | 68 +++++++++++++ > Koha/Ticket/Updates.pm | 48 +++++++++ > Koha/Tickets.pm | 50 ++++++++++ > t/db_dependent/Koha/Biblio.t | 30 +++++- > t/db_dependent/Koha/Ticket.t | 147 ++++++++++++++++++++++++++++ > t/db_dependent/Koha/Ticket/Update.t | 74 ++++++++++++++ > 8 files changed, 541 insertions(+), 1 deletion(-) > create mode 100644 Koha/Ticket.pm > create mode 100644 Koha/Ticket/Update.pm > create mode 100644 Koha/Ticket/Updates.pm > create mode 100644 Koha/Tickets.pm > create mode 100644 t/db_dependent/Koha/Ticket.t > create mode 100755 t/db_dependent/Koha/Ticket/Update.t > >diff --git a/Koha/Biblio.pm b/Koha/Biblio.pm >index 5bf369cd6a..6f74ce9741 100644 >--- a/Koha/Biblio.pm >+++ b/Koha/Biblio.pm >@@ -48,6 +48,7 @@ use Koha::Subscriptions; > use Koha::SearchEngine; > use Koha::SearchEngine::Search; > use Koha::SearchEngine::QueryBuilder; >+use Koha::Tickets; > > =head1 NAME > >@@ -119,6 +120,20 @@ sub active_orders { > return $self->orders->search({ datecancellationprinted => undef }); > } > >+=head3 tickets >+ >+ my $tickets = $biblio->tickets(); >+ >+Returns all tickets linked to the biblio >+ >+=cut >+ >+sub tickets { >+ my ( $self ) = @_; >+ my $rs = $self->_result->tickets; >+ return Koha::Tickets->_new_from_dbic( $rs ); >+} >+ > =head3 item_groups > > my $item_groups = $biblio->item_groups(); >diff --git a/Koha/Ticket.pm b/Koha/Ticket.pm >new file mode 100644 >index 0000000000..408c818319 >--- /dev/null >+++ b/Koha/Ticket.pm >@@ -0,0 +1,110 @@ >+package Koha::Ticket; >+ >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+use Modern::Perl; >+ >+use base qw(Koha::Object); >+ >+use Koha::Ticket::Update; >+use Koha::Ticket::Updates; >+ >+=head1 NAME >+ >+Koha::Ticket - Koha Ticket Object class >+ >+=head1 API >+ >+=head2 Relations >+ >+=cut >+ >+=head3 reporter >+ >+Return the patron who submitted this ticket >+ >+=cut >+ >+sub reporter { >+ my ($self) = @_; >+ my $rs = $self->_result->reporter; >+ return unless $rs; >+ return Koha::Patron->_new_from_dbic($rs); >+} >+ >+=head3 resolver >+ >+Return the user who resolved this ticket >+ >+=cut >+ >+sub resolver { >+ my ($self) = @_; >+ my $rs = $self->_result->resolver; >+ return unless $rs; >+ return Koha::Patron->_new_from_dbic($rs) if $rs; >+} >+ >+=head3 biblio >+ >+Return the biblio linked to this ticket >+ >+=cut >+ >+sub biblio { >+ my ($self) = @_; >+ my $rs = $self->_result->biblio; >+ return unless $rs; >+ return Koha::Biblio->_new_from_dbic($rs); >+} >+ >+=head3 updates >+ >+Return any updates attached to this ticket >+ >+=cut >+ >+sub updates { >+ my ($self) = @_; >+ my $rs = $self->_result->ticket_updates; >+ return unless $rs; >+ return Koha::Ticket::Updates->_new_from_dbic($rs) if $rs; >+} >+ >+=head2 Actions >+ >+=head3 add_update >+ >+=cut >+ >+sub add_update { >+ my ( $self, $params ) = @_; >+ >+ my $rs = $self->_result->add_to_ticket_updates($params)->discard_changes; >+ return Koha::Ticket::Update->_new_from_dbic($rs); >+} >+ >+=head2 Internal methods >+ >+=head3 _type >+ >+=cut >+ >+sub _type { >+ return 'Ticket'; >+} >+ >+1; >diff --git a/Koha/Ticket/Update.pm b/Koha/Ticket/Update.pm >new file mode 100644 >index 0000000000..b954d59f03 >--- /dev/null >+++ b/Koha/Ticket/Update.pm >@@ -0,0 +1,68 @@ >+package Koha::Ticket::Update; >+ >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+use Modern::Perl; >+ >+use base qw(Koha::Object); >+ >+=head1 NAME >+ >+Koha::Ticket::Update - Koha Ticket Update Object class >+ >+=head1 API >+ >+=head2 Relations >+ >+=cut >+ >+=head3 ticket >+ >+Return the ticket this update relates to >+ >+=cut >+ >+sub ticket { >+ my ($self) = @_; >+ my $rs = $self->_result->ticket; >+ return unless $rs; >+ return Koha::Ticket->_new_from_dbic($rs); >+} >+ >+=head3 user >+ >+Return the patron who submitted this update >+ >+=cut >+ >+sub user { >+ my ($self) = @_; >+ my $rs = $self->_result->user; >+ return unless $rs; >+ return Koha::Patron->_new_from_dbic($rs); >+} >+ >+=head2 Internal methods >+ >+=head3 _type >+ >+=cut >+ >+sub _type { >+ return 'TicketUpdate'; >+} >+ >+1; >diff --git a/Koha/Ticket/Updates.pm b/Koha/Ticket/Updates.pm >new file mode 100644 >index 0000000000..d3e7433e76 >--- /dev/null >+++ b/Koha/Ticket/Updates.pm >@@ -0,0 +1,48 @@ >+package Koha::Ticket::Updates; >+ >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+use Modern::Perl; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::Ticket::Updates - Koha Ticket Update Objects class >+ >+=head1 API >+ >+=head2 Internal methods >+ >+=cut >+ >+=head3 _type >+ >+=cut >+ >+sub _type { >+ return 'TicketUpdate'; >+} >+ >+=head3 object_class >+ >+=cut >+ >+sub object_class { >+ return 'Koha::Ticket::Update'; >+} >+ >+1; >diff --git a/Koha/Tickets.pm b/Koha/Tickets.pm >new file mode 100644 >index 0000000000..85a7de8a8a >--- /dev/null >+++ b/Koha/Tickets.pm >@@ -0,0 +1,50 @@ >+package Koha::Tickets; >+ >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+use Modern::Perl; >+ >+use Koha::Ticket; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::Tickets - Koha Ticket Objects class >+ >+=head1 API >+ >+=head2 Internal methods >+ >+=cut >+ >+=head3 _type >+ >+=cut >+ >+sub _type { >+ return 'Ticket'; >+} >+ >+=head3 object_class >+ >+=cut >+ >+sub object_class { >+ return 'Koha::Ticket'; >+} >+ >+1; >diff --git a/t/db_dependent/Koha/Biblio.t b/t/db_dependent/Koha/Biblio.t >index 67513cd09f..188625e113 100755 >--- a/t/db_dependent/Koha/Biblio.t >+++ b/t/db_dependent/Koha/Biblio.t >@@ -17,7 +17,7 @@ > > use Modern::Perl; > >-use Test::More tests => 22; # +1 >+use Test::More tests => 23; # +1 > use Test::Warn; > > use C4::Biblio qw( AddBiblio ModBiblio ModBiblioMarc ); >@@ -650,6 +650,34 @@ subtest 'orders() and active_orders() tests' => sub { > $schema->storage->txn_rollback; > }; > >+subtest 'tickets() tests' => sub { >+ >+ plan tests => 4; >+ >+ $schema->storage->txn_begin; >+ >+ my $biblio = $builder->build_sample_biblio(); >+ my $tickets = $biblio->tickets; >+ is( ref($tickets), 'Koha::Tickets', 'Koha::Biblio->tickets should return a Koha::Tickets object' ); >+ is( $tickets->count, 0, 'Koha::Biblio->tickets should return a count of 0 when there are no related tickets' ); >+ >+ # Add two tickets >+ foreach (1..2) { >+ $builder->build_object( >+ { >+ class => 'Koha::Tickets', >+ value => { biblio_id => $biblio->biblionumber } >+ } >+ ); >+ } >+ >+ $tickets = $biblio->tickets; >+ is( ref($tickets), 'Koha::Tickets', 'Koha::Biblio->tickets should return a Koha::Tickets object' ); >+ is( $tickets->count, 2, 'Koha::Biblio->tickets should return the correct number of tickets' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ > subtest 'subscriptions() tests' => sub { > > plan tests => 4; >diff --git a/t/db_dependent/Koha/Ticket.t b/t/db_dependent/Koha/Ticket.t >new file mode 100644 >index 0000000000..672d749350 >--- /dev/null >+++ b/t/db_dependent/Koha/Ticket.t >@@ -0,0 +1,147 @@ >+#!/usr/bin/perl >+ >+# Copyright 2023 Koha Development team >+# >+# This file is part of Koha >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+use Modern::Perl; >+ >+use Test::More tests => 5; >+use t::lib::TestBuilder; >+ >+use Koha::Database; >+ >+my $builder = t::lib::TestBuilder->new; >+my $schema = Koha::Database->new->schema; >+ >+subtest 'reporter() tests' => sub { >+ >+ plan tests => 2; >+ >+ $schema->storage->txn_begin; >+ >+ my $patron = $builder->build_object({ class => 'Koha::Patrons' }); >+ my $ticket = $builder->build_object( >+ { >+ class => 'Koha::Tickets', >+ value => { >+ reporter_id => $patron->id >+ } >+ } >+ ); >+ >+ my $reporter = $ticket->reporter; >+ is( ref($reporter), 'Koha::Patron', 'Koha::Ticket->reporter returns a Koha::Patron object' ); >+ is( $reporter->id, $patron->id, 'Koha::Ticket->reporter returns the right Koha::Patron' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >+subtest 'resolver() tests' => sub { >+ >+ plan tests => 2; >+ >+ $schema->storage->txn_begin; >+ >+ my $patron = $builder->build_object({ class => 'Koha::Patrons' }); >+ my $ticket = $builder->build_object( >+ { >+ class => 'Koha::Tickets', >+ value => { >+ resolver_id => $patron->id >+ } >+ } >+ ); >+ >+ my $resolver = $ticket->resolver; >+ is( ref($resolver), 'Koha::Patron', 'Koha::Ticket->resolver returns a Koha::Patron object' ); >+ is( $resolver->id, $patron->id, 'Koha::Ticket->resolver returns the right Koha::Patron' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >+subtest 'biblio() tests' => sub { >+ >+ plan tests => 2; >+ >+ $schema->storage->txn_begin; >+ >+ my $biblio = $builder->build_object({ class => 'Koha::Biblios' }); >+ my $ticket = $builder->build_object( >+ { >+ class => 'Koha::Tickets', >+ value => { >+ biblio_id => $biblio->id >+ } >+ } >+ ); >+ >+ my $related_biblio = $ticket->biblio; >+ is( ref($related_biblio), 'Koha::Biblio', 'Koha::Ticket->biblio returns a Koha::Biblio object' ); >+ is( $related_biblio->id, $biblio->id, 'Koha::Ticket->biblio returns the right Koha::Biblio' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >+subtest 'updates() tests' => sub { >+ >+ plan tests => 4; >+ >+ $schema->storage->txn_begin; >+ >+ my $ticket = $builder->build_object( { class => 'Koha::Tickets' } ); >+ my $updates = $ticket->updates; >+ is( ref($updates), 'Koha::Ticket::Updates', 'Koha::Ticket->updates should return a Koha::Ticket::Updates object' ); >+ is( $updates->count, 0, 'Koha::Ticket->updates should return a count of 0 when there are no related updates' ); >+ >+ # Add two updates >+ foreach (1..2) { >+ $builder->build_object( >+ { >+ class => 'Koha::Ticket::Updates', >+ value => { ticket_id => $ticket->id } >+ } >+ ); >+ } >+ >+ $updates = $ticket->updates; >+ is( ref($updates), 'Koha::Ticket::Updates', 'Koha::Ticket->updates should return a Koha::Ticket::Updates object' ); >+ is( $updates->count, 2, 'Koha::Ticket->updates should return the correct number of updates' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >+subtest 'add_update() tests' => sub { >+ plan tests => 2; >+ >+ $schema->storage->txn_begin; >+ >+ my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); >+ >+ my $ticket = $builder->build_object( { class => 'Koha::Tickets' } ); >+ my $update = $ticket->add_update( >+ { user_id => $patron->id, public => 1, message => "Some message" } ); >+ is( ref($update), 'Koha::Ticket::Update', >+ 'Koha::Ticket->add_update should return a Koha::Ticket::Update object' >+ ); >+ >+ my $updates = $ticket->updates; >+ is( $updates->count, 1, >+ 'Koha::Ticket->add_update should have added 1 update linked to this ticket' >+ ); >+ >+ $schema->storage->txn_rollback; >+}; >diff --git a/t/db_dependent/Koha/Ticket/Update.t b/t/db_dependent/Koha/Ticket/Update.t >new file mode 100755 >index 0000000000..8c357aef78 >--- /dev/null >+++ b/t/db_dependent/Koha/Ticket/Update.t >@@ -0,0 +1,74 @@ >+#!/usr/bin/perl >+ >+# Copyright 2023 Koha Development team >+# >+# This file is part of Koha >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+use Modern::Perl; >+ >+use Test::More tests => 2; >+use t::lib::TestBuilder; >+ >+use Koha::Database; >+ >+my $builder = t::lib::TestBuilder->new; >+my $schema = Koha::Database->new->schema; >+ >+subtest 'ticket() tests' => sub { >+ >+ plan tests => 2; >+ >+ $schema->storage->txn_begin; >+ >+ my $ticket = $builder->build_object({ class => 'Koha::Tickets' }); >+ my $update = $builder->build_object( >+ { >+ class => 'Koha::Ticket::Updates', >+ value => { >+ ticket_id => $ticket->id >+ } >+ } >+ ); >+ >+ my $linked_ticket = $update->ticket; >+ is( ref($linked_ticket), 'Koha::Ticket', 'Koha::Ticket::Update->ticket returns a Koha::Ticket object' ); >+ is( $linked_ticket->id, $ticket->id, 'Koha::Ticket::Update->ticket returns the right Koha::Ticket' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >+subtest 'user() tests' => sub { >+ >+ plan tests => 2; >+ >+ $schema->storage->txn_begin; >+ >+ my $user = $builder->build_object({ class => 'Koha::Patrons' }); >+ my $update = $builder->build_object( >+ { >+ class => 'Koha::Ticket::Updates', >+ value => { >+ user_id => $user->id >+ } >+ } >+ ); >+ >+ my $linked_user = $update->user; >+ is( ref($linked_user), 'Koha::Patron', 'Koha::Ticket::Update->user returns a Koha::Patron object' ); >+ is( $linked_user->id, $user->id, 'Koha::Ticket::Update->user returns the right Koha::Patron' ); >+ >+ $schema->storage->txn_rollback; >+}; >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 31028
:
137412
|
139222
|
139223
|
139224
|
139225
|
139226
|
139227
|
139228
|
139229
|
139230
|
139231
|
139232
|
139233
|
139234
|
139235
|
139236
|
139237
|
139238
|
139572
|
139573
|
139574
|
139575
|
139576
|
139577
|
139578
|
139579
|
139580
|
139581
|
139582
|
139583
|
139584
|
139585
|
139586
|
139587
|
139588
|
139589
|
139590
|
139591
|
140289
|
140290
|
140291
|
140292
|
140293
|
140294
|
140295
|
140296
|
140297
|
140298
|
140299
|
140300
|
140301
|
140302
|
140303
|
140304
|
140305
|
140306
|
140307
|
140308
|
140436
|
140437
|
140438
|
140439
|
140440
|
140441
|
140442
|
140443
|
140444
|
140445
|
140446
|
140447
|
140448
|
140449
|
140450
|
140451
|
140452
|
140453
|
140454
|
140455
|
140764
|
140765
|
140766
|
140767
|
140768
|
140769
|
140770
|
140771
|
140772
|
140773
|
140774
|
140775
|
140776
|
140777
|
140778
|
140779
|
140780
|
140781
|
140782
|
140783
|
140793
|
140929
|
140930
|
140931
|
140932
|
140933
|
140934
|
140935
|
140936
|
140937
|
140938
|
140939
|
140940
|
140941
|
140942
|
140943
|
140944
|
140945
|
140946
|
140947
|
140948
|
140949
|
140950
|
141133
|
141134
|
141135
|
141136
|
141137
|
141138
|
141139
|
141140
|
141141
|
141142
|
141143
|
141144
|
141145
|
141146
|
141147
|
141148
|
141149
|
141150
|
141151
|
141152
|
141153
|
141154
|
141440
|
141441
|
141442
|
141443
|
141444
|
141445
|
141446
|
141447
|
141448
|
141449
|
141450
|
141451
|
141452
|
141453
|
141454
|
141455
|
141456
|
141457
|
141458
|
141459
|
141460
|
142164
|
142165
|
142166
|
142167
|
142168
|
142169
|
142170
|
142171
|
142172
|
142173
|
142174
|
142175
|
142177
|
142179
|
142180
|
142181
|
142182
|
142183
|
142184
|
142185
|
142186
|
142187
|
142188
|
142189
|
142190
|
142191
|
142616
|
142617
|
142618
|
142619
|
142620
|
142621
|
142622
|
142623
|
142624
|
142625
|
142626
|
142627
|
142932
|
142933
|
142934
|
142935
|
142936
|
142937
|
142938
|
142939
|
142940
|
142941
|
142942
|
142943
|
142944
|
142945
|
142946
|
142947
|
142948
|
142949
|
143238
|
143239
|
143240
|
143241
|
143242
|
143243
|
143244
|
143245
|
143246
|
143247
|
143248
|
143249
|
143250
|
143251
|
143252
|
143253
|
143254
|
143255
|
143256
|
143257
|
143302
|
143303
|
143304
|
143305
|
143306
|
143307
|
143308
|
143309
|
143310
|
143311
|
143312
|
143313
|
143314
|
143315
|
143316
|
143317
|
143318
|
143319
|
143320
|
143321
|
143322
|
143323
|
143324
|
143325
|
143326
|
143327
|
143328
|
143329
|
143330
|
143331
|
143332
|
143333
|
143334
|
143335
|
143336
|
143337
|
143338
|
143339
|
143340
|
143341
|
143470
|
143471
|
143472
|
143473
|
143474
|
143475
|
143476
|
143477
|
143478
|
143479
|
143480
|
143481
|
143482
|
143483
|
143484
|
143485
|
143486
|
143487
|
143488
|
143489
|
143490
|
143647
|
143648
|
143649
|
143650
|
143651
|
143652
|
143653
|
143654
|
143655
|
143656
|
143657
|
143658
|
143659
|
143660
|
143661
|
143662
|
143663
|
143664
|
143665
|
143666
|
143667
|
143708
|
143709
|
143710
|
143711
|
143712
|
143713
|
143714
|
143715
|
143716
|
143717
|
143718
|
143719
|
143720
|
143721
|
143722
|
143723
|
143724
|
143725
|
143726
|
143727
|
144647
|
144648
|
144649
|
144650
|
144651
|
144652
|
144653
|
144654
|
144655
|
144656
|
144657
|
144658
|
144659
|
144660
|
144661
|
144662
|
144663
|
144664
|
144665
|
144666
|
144667
|
144668
|
145542
|
146214
|
146215
|
146216
|
146217
|
146218
|
146219
|
146220
|
146221
|
146222
|
146223
|
146224
|
146225
|
146226
|
146227
|
146228
|
146229
|
146230
|
146231
|
146232
|
146233
|
146234
|
146235
|
146236
|
146237
|
146238
|
146239
|
146240
|
146241
|
146242
|
146243
|
146244
|
146245
|
146246
|
146247
|
146248
|
146249
|
146250
|
146251
|
146252
|
146253
|
146254
|
146255
|
146256
|
146257
|
146258
|
146259
|
146260
|
146261
|
146262
|
146697
|
146870
|
146871
| 146872 |
146873
|
146874
|
146875
|
146876
|
146877
|
146878
|
146879
|
146880
|
146881
|
146882
|
146883
|
146884
|
146885
|
146886
|
146887
|
146888
|
146889
|
146890
|
146891
|
146892
|
146893
|
146894
|
146895
|
146896
|
147797
|
147840
|
147841
|
147844
|
147859
|
147860
|
147861
|
147866
|
148673
|
149931