Thursday Jul 09, 2009

Lowering the bar for OpenDS Translation...

Opends Logo TagPavel Heimlich, also known as Hajma on in the OpenDS project and lead for many Translation projects, has gone through all of the OpenDS messages to figure out the ones that were still in use and important to translate. There is now a "simplified" OpenDS project in the Community Translation Interface that contains a 5th of the initial messages, making it easier and faster for the volunteers to translate OpenDS to their preferred language. There are currently on-going translation for chinese, french, german, japanese, korean, polish, portuguese, serbian and spanish, but new language projects can be initiated on demand.
If you're interested, check the How To Guide.

Technorati Tags: , , , , ,

Monday Jun 29, 2009

FISL 10 Trip report

I've just spent a wonderful week in Porto Alegre, Brazil where I've landed to talk about OpenDS at the FISL 10 conference.
This is my first visit in Brazil and I must say that I didn't get any good impression of the country in the first two days. As a matter of fact, I didn't get any impression at all. I arrived on Monday evening around 9pm, it was all dark. After more than 16 hours of traveling, I just wanted to hit a bed.
On the Tuesday morning, thanks to the jet lag, I got up quite early, checked email and went for breakfast by 7am, noticing a rainy day and still pretty dark. I was just done with the breakfast when Bruno Souza arrived and took me to the location of the Javali meeting, an ancillary event of FISL, sponsored by Sun and organized by SOU Java and RS JUG.
We spent the whole day in the conference room, watching from time to time through the windows the heavy rain and wind. The Javali talks ended with pizzas and guarana and by then the night was already dark.
While I didn't get to see how Porto Alegre looks like in the first days of my visit, I did enjoyed the friendliness of Brazilians. At Javali, trying to follow the presentations in Portuguese was though but I think I got probably 50% of the technical parts thanks to the mix of english words and to my understanding of Spanish. And when it was necessary, Bruno or Mauricio Leal would do some translation for us.
I didn't get to talk at Javali, the agenda was pretty full and I hadn't told Bruno I would be coming as I wasn't sure I could make it. But Pat Patterson presented Securing RESTful Web Services with OpenSSO (and OAuth) and mentioned a few times OpenDS.

LP0_1036

LP0_1039Wednesday was the first day of FISL and all the Sun participants went quite early to help setting up the booth in the Exhibition Hall. Sun's booth was very well located and its main attraction was the thousands of small soccer balls that were given to attendees that registered to the OSUM program. I think that throughout the whole event, the Sun's booth was the most vibrant and busy one, with Roger Brinkley making demos with his toys, Angel Camacho, Brian Leonard, Kirthankar Das and others helping with installs of OpenSolaris on attendees' laptops.

LP0_1167LP0_1181

Arun Gupta fired the event on Wednesday morning with his presentation demonstrating the combined power of GlassFish, MySQL and NetBeans to build web applications.

Arun Gupta, inauguring FISL conf with the 1st talk

Friday was the busiest day for me as I was scheduled for 2 presentations. But before that, I was invited to participate in Simon Phipps talk show, describing in 5 minutes, what was OpenDS, what were the benefits for the Brazilian open source users and developers.

Fisl10 Simontalk

Immediately after, and in the same room, I did my presentation for OpenDS with the theme of "Scaling the Identity Store with OpenDS". The sessions talked about the 3 models we have in OpenDS for deployment :

  • Embedded in Java applications,
  • Standalone replicated servers,
  • LDAP Front-end access to MySQL Cluster's network DB.

While FISL is mostly attended by students, my session had a majority of System Administrators, interested by simplifying and reducing the cost of their data-centers.

4791_116007741662_583231662_2881035_1391095_n

Later in the afternoon, I was presenting again, repeating JavaOne's presentation from Tony Printezis and Charlie Hunt GC Tuning In the HotSpot Java Virtual Machine. Charlie was meant to attend the event, but the week before found out he could not make it. As they recalled I was in the room at JavaOne and I'm quite familiar with the subject as we're spending a lot of time trying the different options to tune the JVM to get the best performances out of OpenDS, they asked me to cover the talk. I think I've done a reasonable job, despite the density of information in the slides, and the simultaneous translation in Portuguese for the largest part of the crowd not so familiar with English.

Still on Friday, part of the exhibition floor was closed to the public as the Brazilian President, Lula Da Silva, was schedule to visit the event. Sun booth was very well positioned, on the border on the closed area and the crowd started to gather by the booth as President Lula arrived. The excitement was amazing. When the President reached by the OpenSolaris Brazil user group, he received an OpenSolaris cap and T-shirt from Vitorio Sassi, Sun employee and one of the leaders of the Brazilian OpenSolaris community.

Brazilian Presidente Lula with OpenSolaris community
Photo taken by Ludovic Poitou, June 26 2009.
Somerights20

.

On Saturday and last day of the FISL conference, I got to share a little bit more of the stage by answering a performance related question from the attendance on Bruno Souza's session about the future of Java,with the exceptional presence of Javali, the mascote for the Javali user group.

Bruno Souza with Duke and Javali

Overall FISL has been an amazing experience. It is definitely the biggest open source I've participated to. Over 8200 registered visitors, from 27 different countries, more than 320 speakers for 354 presentations and a presidential visit. More than that, Brazilians are extremely nice, generous and happy to live. They made our stay in Porto Alegre something that I'll remember for a long time. A special thanks to the main organizers: Bruno Souza and Eduardo Lima (here below with Simon Phipps)

LP0_1127

.

I'll definitely participate to the Call For Presentation next year, if evangelism of the OpenDS project is still one of my tasks for next year.

You can find all photos for the event in the FISL 10 picasa album.

Technorati Tags: , , , , , , , ,

Saturday Jun 27, 2009

To the FISL attendees...

FISL 10

Many of you have requested the slides.
Here they are :

Thanks for your presence...
A more detailed article is in the works.

Technorati Tags: , , , , ,

Wednesday Jun 24, 2009

OpenDS 2.0.0 Release Candidate 3 is now available

Opends Logo TagThe OpenDS development team is very pleased to announce the immediate availability of OpenDS 2.0.0-RC3, the third and probably last release candidate for OpenDS 2.0.

OpenDS 2.0 has a number of new features over OpenDS 1.2.0 that was released in February 2009 :

  • A new mode for Multi-Master Replication providing greater consistency and availability of data: Assured Replication
  • Recurring tasks allow an administrator to schedule repeated tasks such as backups
  • New extensible matching rules and indexing allowing comparing, ordering of data according to specific locales and languages
  • Better monitoring information for the server and for Replication
  • Full compliance with RFC 4518 and matching of UTF-8 in attributes with a DirectoryString syntax
  • VLV indexes are now built during the Import
  • Several improvements in the Control Panel
  • Works with IBM JVM (Java 6 SR4 required)
  • Works by default with JConsole and VisualVM when JMX Connection Handler is enabled
  • Default settings and ergonomics have been improved reducing the need for tuning parts of the server
  • Greatly improved performances and stability over time of those performances
  • Resolved a possible security issue when Pre-ReadEntry, Post-ReadEntry and Assertion Controls were enabled

Overall, over 170 issues have been fixed.

The purpose of the Release Candidate is to solicit one last round of testing before the final release.
So please test the OpenDS release with your client applications, in your environment or on your favorite platform.

Our quality team will be doing the same during the next 2 to 3 weeks.

If you do find a bug, please report it with Issue Tracker.

We welcome feedback. Please report you experience with OpenDS on our mailing lists, or on #opends IRC channel on Freenode.

OpenDS 2.0.0-RC3 is built from revision 5460 of the b2.0 branch of our source tree.

The direct link to download the core server is: http://www.opends.org/promoted-builds/2.0.0-RC3/OpenDS-2.0.0-RC3.zip

The direct link to download the DSML gateway is: http://www.opends.org/promoted-builds/2.0.0-RC3/OpenDS-2.0.0-RC3-DSML.war

We have also updated the archive that may be used to install OpenDS via Java Web Start. You may launch that using the URL http://www.opends.org/promoted-builds/2.0.0-RC3/install/QuickSetup.jnlp, or visit https://www.opends.org/wiki/page/OverviewOfTheQuickSetupTool for more information.

Detailed information about this build is available at http://www.opends.org/promoted-builds/2.0.0-RC3.

Major changes incorporated since OpenDS 2.0.0 RC2 include:

  • Revision 5436. Delivers updated localization bundles
  • Revision 5439 (issue #4047) - Resolves an issue with uninstalling OpenDS.
  • Revision 5440 (Issue #4049) - Fixes an issue in the Control Panel where monitoring information was not available for all Connection Handlers.
  • Revision 5441 (Issue #4045) - Fixes an issue with start-ds -F so it reports snmp build information.
  • Revision 5452 (Issue #3713) - Resolves an issue where sockets could be leaked when replication connection fails due to SSL handshake.
  • Revision 5459 (Issue #4057) - Fixes an issue where restoring the schema from a backup would silently fail and prevent the server from working.

Technorati Tags: , , , , ,

Tuesday Jun 23, 2009

If "God" says it...

...It must be true.

James Gosling
In a interview published this monday in eWeek Europe, James Gosling queried about Innovation in Java, replied the following:

"It's all over the place inside Sun. People are doing cool things in any direction you want to look. The enterprise guys — the GlassFish group — they're totally on a tear these days. The OpenDS guys are being really successful. The OpenJDK guys are getting some real traction. Stuff like the Jigsaw modularity stuff is getting a lot of excitement."

As one of the OpenDS guys, I like the middle of the response... And so it must be true !

Technorati Tags: , , , ,

Sunday Jun 21, 2009

OpenDS in Brazil

This week, one of the biggest conference about Open Source Software takes place in Porto Alegre, Brazil: FISL.
FISL stands for "Forum Internacional Software Livre" in the Portuguese language and means "International Free Software Forum".

FISL 10

This will the 10th edition and already over 6000 people have registered, according to the organizers.
It's the first time I get to go to FISL and to Brazil as well. I'm looking forward to it, as I've been told a lot about the energy and the good atmosphere of the conference. It will be a good opportunity to be in touch with our community from South America.

My session will talk about "Scaling the Identity Store with OpenDS", describing the options to scale OpenDS based LDAP directory service from very small embedded to extremely large, telco scale. It's schedule to happen on Friday 26th, from 11am to 12am in room 41A.
See you there.

Technorati Tags: , , , , , ,

Thursday Jun 11, 2009

OpenDS 2.0.0 Release Candidate 2 is now available

Opends Logo TagThe OpenDS development team is very pleased to announce the immediate availability of OpenDS 2.0.0-RC2, the second and probably last release candidate for OpenDS 2.0.

OpenDS 2.0 has a number of new features over OpenDS 1.2.0 that was released in February 2009 :

  • A new mode for Multi-Master Replication providing greater consistency and availability of data: Assured Replication
  • Recurring tasks allow an administrator to schedule repeated tasks such as backups
  • New extensible matching rules and indexing allowing comparing, ordering of data according to specific locales and languages
  • Better monitoring information for the server and for Replication
  • Full compliance with RFC 4518 and matching of UTF-8 in attributes with a DirectoryString syntax
  • VLV indexes are now built during the Import
  • Several improvements in the Control Panel
  • Works with IBM JVM (Java 6 SR4 required)
  • Works by default with JConsole and VisualVM when JMX Connection Handler is enabled
  • Default settings and ergonomics have been improved reducing the need for tuning parts of the server
  • Greatly improved performances and stability over time of those performances
  • Resolved a possible security issue when Pre-ReadEntry, Post-ReadEntry and Assertion Controls were enabled

Overall, over 170 issues have been fixed.

The purpose of the Release Candidate is to solicit one last round of testing before the final release.
So please test the OpenDS release with your client applications, in your environment or on your favorite platform.

Our quality team will be doing the same during the next 2 to 3 weeks.

If you do find a bug, please report it with Issue Tracker.

We welcome feedback. Please report you experience with OpenDS on our mailing lists, or on #opends IRC channel on Freenode.

OpenDS 2.0.0-RC2 is built from revision 5417 of the b2.0 branch of our source tree.

The direct link to download the core server is: http://www.opends.org/promoted-builds/2.0.0-RC2/OpenDS-2.0.0-RC2.zip

The direct link to download the DSML gateway is: http://www.opends.org/promoted-builds/2.0.0-RC2/OpenDS-2.0.0-RC2-DSML.war

We have also updated the archive that may be used to install OpenDS via Java Web Start. You may launch that using the URL http://www.opends.org/promoted-builds/2.0.0-RC2/install/QuickSetup.jnlp, or visit https://www.opends.org/wiki/page/OverviewOfTheQuickSetupTool for more information.

Detailed information about this build is available at http://www.opends.org/promoted-builds/2.0.0-RC2.

Major changes incorporated since OpenDS 2.0.0 RC1 include:

  • Revisions 5376, 5388, 5390 (Issues #3997, 4006 and 3993) - Improvements to the schema parsing mechanism.
  • Revision 5378 (Issue #3898) - Make all information from a BIND request accessible from AuthenticationInfo.
  • Revision 5381 (Issue #4009) - Fixes to the upgrade facility.
  • Revision 5384 (Issue #3856) - Improvements to the way in which connections and extended operations are logged.
  • Revision 5386 (Issue #3996) - Fix a problem that could result in lost delete operations within a replication topology.
  • Revision 5392 (Issue #4010) - Fix an exception in the DSML implementation.
  • Revision 5394 (Issue #4014) - Improve the information showed by start-ds.
  • Revision 5395 (Issue #4013) - Fix an encoding error for the server side sort response control.
  • Revision 5396 (Issue #4011) - Correct a problem with indexing after an upgrade.
  • Revisions 5398, 5400, 5403 & 5412 - Localization improvements.
  • Revision 5402 (Issue #4007) - Improve performance when importing entries containing attributes with many values.
  • Revisions 5404 & 5409 (Issue #4020) - Allow help links in the control panel to be customized.
  • Revision 5406 (Issue #4022) - Fix a Java exception when using dsconfig -m/unit-time.
  • Revision 5407 (Issue #4027) - Fix an NPE when configuring network groups.
  • Revision 5411 (Issue #3988) - Improve throughput stability and GC performance under heavy connect/disconnect loads.
  • Revision 5414 (Issue #4062) - Enable the deregistering of add/change/delete configuration listeners.
  • Revision 5415 (Issue #4012) - Improve the import task to handle missing include branches.
  • Revision 5417 (Issue #4023) - Restart the server after scheduling a restart task.

Technorati Tags: , , , , ,

Monday Jun 01, 2009

OpenSSO / OpenDS Community Day in San Francisco

Yesterday, in a prelude to the CommunityOne West and JavaOne conferences, we had our 3rd community day for the OpenSSO, OpenDS and Identity Connectors projects.

Lp0 0572Lp0 0571

Being on a Sunday, and in a less attractive venue than the previous Community days, the attendance was not as high a previous community days, but we still had interesting discussions and presentations with users and customers of our projects. And it's also a nice way to get to know the users of our technologies and learn more about what they're doing with it.
The day ended at the Thirsty Bear for more discussions and exchanges around beers and food.

Technorati Tags: , , , ,

Friday May 29, 2009

I'm heading to San Francisco now !

Well, I'll be leaving home tomorrow morning, but early enough that people in California will still be up on the Friday night.
I'll be arriving in San Francisco on Saturday mid-day, getting prepared for a long and intense week.

On Sunday, from 1pm to 7pm, we have our OpenSSO / OpenDS community day at the Moscone.
And for the rest of the week, we'll be at CommunityOne West and JavaOne, mostly working on the Identity booth in the Pavilion.
See you there !

Technorati Tags: , , , , ,

Wednesday May 27, 2009

An index of indexes in OpenDS

I noticed that my colleague Kunal wrote a series of article on OpenDS indexes.
Here's an index of his posts:

Kunal is a committer in the OpenDS project, has recently developed the support for extensible matching rules and indexes in OpenDS, as well as all internationalized matching rules (also called collation rules) which allow to filter LDAP content according to a language specific rules.

Kunal is also an amateur photographer and we're planning on bringing our respective toys in San Francisco next week to shoot pictures of the city but also during the CommunityOne and the JavaOne conferences.

Technorati Tags: , , , , , , , , ,

Tuesday May 26, 2009

Being Global...

Some time ago, I enabled the ClustrMaps on my blog to get some idea of who was reading this space and where from.
And I must say I'm completely amazed by the global reach out of what I post here.
Below is a picture indicating the location of the readers from March 19 to May 20, 2009.

Blogs.Sun.Com-Ludo-World

While I'm not surprise that most readers are from US and Europe, I find it interesting that the blog has been read from 94 different countries, some of which I cannot even place on the map.
The power of the Internet keeps amazing me everyday. Now it would be really cool if you, reader from one of those little isolated red dot, could leave a comment and tell me what you're interested in, and how you use OpenDS if you do.

Note that I do understand French, English and Spanish, so this leaves you some choice for leaving your comment. So don't be shy !

Technorati Tags: , , , ,

Monday May 25, 2009

OpenDS 2.0.0 Release Candidate 1 is now available

Opends Logo TagThe OpenDS development team is very pleased to announce the immediate availability of OpenDS 2.0.0-RC1 which is the first release candidate for OpenDS 2.0.

OpenDS 2.0 has a number of new features over OpenDS 1.2.0 that was released in February 2009 :

  • A new mode for Multi-Master Replication providing greater consistency and availability of data: Assured Replication
  • Recurring tasks allow an administrator to schedule repeated tasks such as backups
  • New extensible matching rules and indexing allowing comparing, ordering of data according to specific locales and languages
  • Better monitoring information for the server and for Replication
  • Full compliance with RFC 4518 and matching of UTF-8 in attributes with a DirectoryString syntax
  • VLV indexes are now built during the Import
  • Several improvements in the Control Panel
  • Works with IBM JVM (Java 6 SR4 required)
  • Works by default with JConsole and VisualVM when JMX Connection Handler is enabled
  • Default settings and ergonomics have been improved reducing the need for tuning parts of the server
  • Greatly improved performances and stability over time of those performances
  • Resolved a possible security issue when Pre-ReadEntry, Post-ReadEntry and Assertion Controls were enabled

Overall, over 150 issues have been fixed. However, there are still a few issues with the release candidates, and more specifically upgrading from an earlier version is not functional. This should be fixed in the next release candidate.

Localization of the OpenDS messages is still work in progress and thus some messages can still appear in English when running a localized version of the server.

The purpose of the Release Candidate is to solicit one last round of testing before the final release.
So please test the OpenDS release with your client applications, in your environment or on your favorite platform.

If you do find a bug, please report it with Issue Tracker.

We welcome feedback. Please report you experience with OpenDS on our mailing lists, or on #opends IRC channel on Freenode.

OpenDS 2.0.0-RC1 is built from revision 5374 of the b2.0 branch of our source tree.

The direct link to download the core server is: http://www.opends.org/promoted-builds/2.0.0-RC1/OpenDS-2.0.0-RC1.zip

The direct link to download the DSML gateway is: http://www.opends.org/promoted-builds/2.0.0-RC1/OpenDS-2.0.0-RC1-DSML.war

We have also updated the archive that may be used to install OpenDS via Java Web Start. You may launch that using the URL http://www.opends.org/promoted-builds/2.0.0-RC1/install/QuickSetup.jnlp, or visit https://www.opends.org/wiki/page/OverviewOfTheQuickSetupTool for more information.

Detailed information about this build is available at http://www.opends.org/promoted-builds/2.0.0-RC1.

Major changes incorporated since OpenDS 1.3.0-build006 include:

  • Revision 5318 (Issue #3969) - Provide support for wildcards in dsconfig certificate management.
  • Revision 5321 (Issue #3962) - Fix memory leaks after Bind - Unbind
  • Revision 5323 (Issue #3971) - Enable Windows to detect the JVM automatically on install.
  • Revision 5336 (Issue #3981) - Fix uncontrolled memory growth under heavy connect/disconnect load.
  • Revision 5338 (Issue #3977) - Fix memory leak in Control Panel.
  • Revision 5347 (Issue #3938) - Improve the speed of dsconfig in non-interactive mode.
  • Revision 5364 (Issue #3995) - Fix an error that caused replication to stop if the queue-size-bytes maximum was reached.
  • Revision 5365 (Issue #3250) - Fix a problem that could cause replication initialization to fail.
  • Revision 5369 (Issues #3984 & #3989) - Fix security issues with Assertion, Pre-Read, and Post-Read Controls.
  • Revision 5374 - Upgrade JE to the latest official release (3.3.82).

Technorati Tags: , , , , ,

Wednesday May 20, 2009

My new OpenDS cap

I meant to post this earlier... but thanks to our new friends, I have a new OpenDS cap.
For the time being, this one requires no extra work nor shift of duty ;-)
I could have worn Felix's cap as well, but I think it suits him better. And anyway, LDAP and OpenDS are good friends...

LDAP and OpenDS caps working together ;-)

Technorati Tags: , ,

Tuesday May 19, 2009

OpenDS as the OpenSSO User Repository

OpenSSO Express 7 was announced earlier in April with a full support for OpenDS Standard Edition for storing users' identity data.
Back in March, I pointed out Indira's blog and the detailed how to guide for configuring OpenDS as the OpenSSO user store.

BlahRecently, the official documentation appeared on the OpenSSO resource center. So if you want to use OpenDS as the OpenSSO User Repository, I encourage you to read and follow the steps detailed here: http://wikis.sun.com/display/OpenSSO/Using+OpenDS+as+a+User+Data+Store.

Technorati Tags: , , , , ,

Monday May 18, 2009

OpenDS, OpenSSO and Identity at large

On the first week of May, I was in Munich for the European Identity Conference hosted by Kuppinger-Cole.
This was my first participation and I was delighted to meet with several of the experts in the area as well as some OpenDS customers or users, whom I've mostly "known" only through blogs or emails. I had discussions with Kim Cameron, Jackson Shaw and James McGovern. We shared tea with Felix Gaehtgens and Prateek Mishra. The conference was also the opportunity to talk with and listen to some of my Sun colleagues that I don't get to see often like Fulup Ar Foll and Eve Maler. I must say that both of them did pretty interesting presentations.

Eve

Eve's keynote on the first day of the conference brought the case for "permissioned data sharing" and was very well argued. It was the first time that I heard about User Centric identity and VRM tied together and even with a proposed solution.

Fulup

On Wednesday, Fulup did a very thought provocative (and fast forward) presentation about Digital Identity in the cloud, where he explained the identity management concepts are inherited from a centralized vision of the world and they would not fit well with the cloud, nor scale to the internet. He proposes to look at how mobile operators are solving massive identity scale and to leverage existing SAML2 and Liberty defined services to build the "lazy" identity architecture.

On Thursday I was to take part of a panel discussion on the subject of "The Identity Bus" or the future of Directory Services (should I say Identity Services ?), moderated by Felix Gaehtgens. The panel was an opportunity to see again Steve Shoaff, CEO of Unboundid but previously my manager, and to meet both Dale Olds of Novell and Prateek Mishra of Oracle. I don't know if we've been able to give a good idea of what this "Identity Bus" would look like, but it's definitely "something" in between applications and the data layer, and will probably use a set of protocols like SAML2 and XACML. After the panel, James McGovern asked me when OpenDS will support IGF and CARML. Since both are abstractions and APIs for applications to express their need in term of identity related data, I don't think they are appropriate for an LDAPv3 directory server. But I do see a layer on top of Virtual Directories or Directories that is able to consume those and translate them into appropriate functions.

Right after that Panel, Mark Craig was taking part on a panel discussion on Virtual Directories, along with Sampo Kellomäki of Symlabs, Michel Prompt of Radiant Logic and Keith Grayson of SAP.

On the Tuesday, Pat Patterson and Daniel Raskin hosted the second OpenSSO Community Day, and it was a great success, with over 50 attendees, a day packed of presentations with a very good balance of users and deployers talks vs Sun employees' talks.
Like in New-York, I talked about OpenDS, its goals and roadmap and why it's the perfect companion to OpenSSO as the Users identity store. Most of the presentations from the OpenSSO Community Day have been posted on the event wiki page. And if you could not make it to New-York or Munich, we're having a 3rd OpenSSO / OpenDS / Identity Connectors Community Day in San Francisco on Sunday May 31st at the Moscone center, starting at 1pm. The event is free, but please RSVP. And I hope to see you there.

Photo

And congratulations to Pat, Daniel and the whole OpenSSO team, for the Fedlet, winner of the "Best Innovation Award".

Overall, I found the conference really good and interesting and it helped me to put back the work we're doing in the Directory Services engineering team, in the larger picture of Identity management.

Technorati Tags: , , , , ,

About

This is the blog of a senior software engineer, specialized in LDAP, Directory Server and OpenDS. Ludovic Poitou works in France at the Grenoble Engineering Center, in the Directory Services Engineering team. Outside work, I love skiing and taking photo

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
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
   
       
Today