Errored: apache/syncope#7122 (master - 9f4fb3e)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7122
Status: Errored

Duration: 17 mins and 51 secs
Commit: 9f4fb3e (master)
Author: Francesco Chicchiriccò
Message: Fixing archetype creation for WA

View the changeset: 
https://github.com/apache/syncope/compare/ea8ed063aaa2...9f4fb3ea92c8

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217632761?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




Errored: apache/syncope#7122 (master - 9f4fb3e)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7122
Status: Errored

Duration: 17 mins and 23 secs
Commit: 9f4fb3e (master)
Author: Francesco Chicchiriccò
Message: Fixing archetype creation for WA

View the changeset: 
https://github.com/apache/syncope/compare/ea8ed063aaa2...9f4fb3ea92c8

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217632761?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




Errored: apache/syncope#7122 (master - 9f4fb3e)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7122
Status: Errored

Duration: 1 hr, 12 mins, and 44 secs
Commit: 9f4fb3e (master)
Author: Francesco Chicchiriccò
Message: Fixing archetype creation for WA

View the changeset: 
https://github.com/apache/syncope/compare/ea8ed063aaa2...9f4fb3ea92c8

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217632761?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




[jira] [Issue Comment Deleted] (SYNCOPE-1617) Debezium integration for live sync

2021-02-19 Thread Abhishek Kumar Shukla (Jira)


 [ 
https://issues.apache.org/jira/browse/SYNCOPE-1617?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Abhishek Kumar Shukla updated SYNCOPE-1617:
---
Comment: was deleted

(was: Thanks for the info! I will talk into mailing list. Commenting in red was 
oopsie, Sorry for that.)

> Debezium integration for live sync
> --
>
> Key: SYNCOPE-1617
> URL: https://issues.apache.org/jira/browse/SYNCOPE-1617
> Project: Syncope
>  Issue Type: New Feature
>Reporter: Francesco Chicchiriccò
>Priority: Major
>  Labels: gsoc2021, mentor
>
> [Debezium|https://debezium.io/] provides a mean to transform changes from 
> RDBMS, MongoDB and Cassandra into Kafka messages.
> This tool can be leveraged to implement a listener-like approach to enable a 
> "live-sync" mechanism from External Resources not requiring ConnId.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (SYNCOPE-1617) Debezium integration for live sync

2021-02-19 Thread Abhishek Kumar Shukla (Jira)


[ 
https://issues.apache.org/jira/browse/SYNCOPE-1617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17287090#comment-17287090
 ] 

Abhishek Kumar Shukla commented on SYNCOPE-1617:


Thanks for the info! I will talk into mailing list. Commenting in red was 
oopsie, Sorry for that.

> Debezium integration for live sync
> --
>
> Key: SYNCOPE-1617
> URL: https://issues.apache.org/jira/browse/SYNCOPE-1617
> Project: Syncope
>  Issue Type: New Feature
>Reporter: Francesco Chicchiriccò
>Priority: Major
>  Labels: gsoc2021, mentor
>
> [Debezium|https://debezium.io/] provides a mean to transform changes from 
> RDBMS, MongoDB and Cassandra into Kafka messages.
> This tool can be leveraged to implement a listener-like approach to enable a 
> "live-sync" mechanism from External Resources not requiring ConnId.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Issue Comment Deleted] (SYNCOPE-1617) Debezium integration for live sync

2021-02-19 Thread Jira


 [ 
https://issues.apache.org/jira/browse/SYNCOPE-1617?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Francesco Chicchiriccò updated SYNCOPE-1617:

Comment: was deleted

(was: Hi [~babayaga] please have a look at 
https://community.apache.org/gsoc.html especially the timeline.
Commenting(in red...) this issue is not the way to approach the community, 
subscribing the dev@ mailing list and ask there is definitely better.)

> Debezium integration for live sync
> --
>
> Key: SYNCOPE-1617
> URL: https://issues.apache.org/jira/browse/SYNCOPE-1617
> Project: Syncope
>  Issue Type: New Feature
>Reporter: Francesco Chicchiriccò
>Priority: Major
>  Labels: gsoc2021, mentor
>
> [Debezium|https://debezium.io/] provides a mean to transform changes from 
> RDBMS, MongoDB and Cassandra into Kafka messages.
> This tool can be leveraged to implement a listener-like approach to enable a 
> "live-sync" mechanism from External Resources not requiring ConnId.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Issue Comment Deleted] (SYNCOPE-1617) Debezium integration for live sync

2021-02-19 Thread Abhishek Kumar Shukla (Jira)


 [ 
https://issues.apache.org/jira/browse/SYNCOPE-1617?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Abhishek Kumar Shukla updated SYNCOPE-1617:
---
Comment: was deleted

(was: *{color:#FF}Hey I am aiming this idea for GSOC 2021 as student. I 
have done the setup of Debezium locally. I couldn't find any issues in github 
repo. Can someone please guide me how to proceed further i.e resolve basic 
issues/features? Thanks!{color}*)

> Debezium integration for live sync
> --
>
> Key: SYNCOPE-1617
> URL: https://issues.apache.org/jira/browse/SYNCOPE-1617
> Project: Syncope
>  Issue Type: New Feature
>Reporter: Francesco Chicchiriccò
>Priority: Major
>  Labels: gsoc2021, mentor
>
> [Debezium|https://debezium.io/] provides a mean to transform changes from 
> RDBMS, MongoDB and Cassandra into Kafka messages.
> This tool can be leveraged to implement a listener-like approach to enable a 
> "live-sync" mechanism from External Resources not requiring ConnId.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


Errored: apache/syncope#7121 (master - ea8ed06)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7121
Status: Errored

Duration: 17 mins and 9 secs
Commit: ea8ed06 (master)
Author: Francesco Chicchiriccò
Message: Upgrading Swagger Core

View the changeset: 
https://github.com/apache/syncope/compare/1afd8eabc2ac...ea8ed063aaa2

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217590903?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




Re: Proposal: using ctor-level dependency injection

2021-02-19 Thread Matteo Alessandroni

Hello Misagh,

I've recently come across similar discussions while working on a 
Java-based application and I'm getting curious about the topic you've 
just raised.
Although I'm still attached to the field injections (@Autowired) way, 
I'd be happy to discover new paths about that! From my side the best 
advantages might show up on the "test context and component scanning" 
side, since sometimes it's kind of a pain to deal with that!


So, thank you for proposing (highly possible) better alternatives and 
I'm gonna carefully follow the discussion!


Regards,
Matteo


On 19/02/21 11:41, Misagh Moayyed wrote:

Hello all,

I want to discuss and propose a design change in the way Syncope components, 
specially *Logic classes are constructed. For a concrete example, this 
component [1] might be a good baseline.

Components such as [1] do two things that seem less than ideal:

1) The class is directly annotated with a @Component
2) It uses field-injections by annotating fields with @Autowire and such

I submit that this approach generally proves challenging, specially when it comes to 
constructing a context for integration tests and dealing with classpath scanning. There 
is lot of literature on why this (field injections) might not be an ideal approach; The 
"test context and component scanning" is one practical example that I myself 
ran into; Purists might also argue that business-level components and logic classes 
should not be tied to the upper framework per se (though I don't actually find myself in 
this camp all too often!).

A better alternative perhaps would be:

- Avoid field-injections and use ctor-level injections (this is the general 
recommendation from Spring)
- Do not use autowire/component/etc directly in business-level classes
- ...which means do not rely as much (if ever) on classpath/context scanning
- ...and instead, create and instantiate the bean directory in @Configuration 
classes, conditionally and with direct control
- ...or use a middle-ground for now, with something like this [2]

The work feels largely cosmetic perhaps; I think it will pay off in the future 
specially if it's something that is advocated by Spring and family.

WDYT?

--Misagh

[1] 
https://github.com/apache/syncope/blob/master/core/am/logic/src/main/java/org/apache/syncope/core/logic/OIDCJWKSLogic.java
[2] 
https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/using-boot-spring-beans-and-dependency-injection.html



Errored: apache/syncope#7121 (master - ea8ed06)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7121
Status: Errored

Duration: 25 mins and 50 secs
Commit: ea8ed06 (master)
Author: Francesco Chicchiriccò
Message: Upgrading Swagger Core

View the changeset: 
https://github.com/apache/syncope/compare/1afd8eabc2ac...ea8ed063aaa2

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217590903?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




Re: Proposal: using ctor-level dependency injection

2021-02-19 Thread Francesco Chicchiriccò
On 19/02/21 11:41, Misagh Moayyed wrote:
> Hello all,
>
> I want to discuss and propose a design change in the way Syncope components, 
> specially *Logic classes are constructed. For a concrete example, this 
> component [1] might be a good baseline.
>
> Components such as [1] do two things that seem less than ideal:
>
> 1) The class is directly annotated with a @Component
> 2) It uses field-injections by annotating fields with @Autowire and such
>
> I submit that this approach generally proves challenging, specially when it 
> comes to constructing a context for integration tests and dealing with 
> classpath scanning. There is lot of literature on why this (field injections) 
> might not be an ideal approach; The "test context and component scanning" is 
> one practical example that I myself ran into; Purists might also argue that 
> business-level components and logic classes should not be tied to the upper 
> framework per se (though I don't actually find myself in this camp all too 
> often!). 
>
> A better alternative perhaps would be:
>
> - Avoid field-injections and use ctor-level injections (this is the general 
> recommendation from Spring)
> - Do not use autowire/component/etc directly in business-level classes
> - ...which means do not rely as much (if ever) on classpath/context scanning
> - ...and instead, create and instantiate the bean directory in @Configuration 
> classes, conditionally and with direct control
> - ...or use a middle-ground for now, with something like this [2]
>
> The work feels largely cosmetic perhaps; I think it will pay off in the 
> future specially if it's something that is advocated by Spring and family.
>
> WDYT?

Hi Misagh,
thanks for bringing up this discussion.

Moving (especially, but not only) Logic classes from the current "@Component + 
@Autowired" setup to something more in line with [2] would be beneficial not 
only for cosmetics but also to simplify override or extensions for deployments.

At least for Logic, I suspect [3] would be the central place at least for 
IdRepo, then we'll need to setup similar classes form IdM and AM, respectively.

Globally, I'd say not a difficult but labor intensive task to accomplish.
A big +1 from my side.

Regards.

> [1] 
> https://github.com/apache/syncope/blob/master/core/am/logic/src/main/java/org/apache/syncope/core/logic/OIDCJWKSLogic.java
> [2] 
> https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/using-boot-spring-beans-and-dependency-injection.html
[3] 
https://github.com/apache/syncope/blob/master/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/LogicContext.java

-- 
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/



Proposal: using ctor-level dependency injection

2021-02-19 Thread Misagh Moayyed
Hello all,

I want to discuss and propose a design change in the way Syncope components, 
specially *Logic classes are constructed. For a concrete example, this 
component [1] might be a good baseline.

Components such as [1] do two things that seem less than ideal:

1) The class is directly annotated with a @Component
2) It uses field-injections by annotating fields with @Autowire and such

I submit that this approach generally proves challenging, specially when it 
comes to constructing a context for integration tests and dealing with 
classpath scanning. There is lot of literature on why this (field injections) 
might not be an ideal approach; The "test context and component scanning" is 
one practical example that I myself ran into; Purists might also argue that 
business-level components and logic classes should not be tied to the upper 
framework per se (though I don't actually find myself in this camp all too 
often!). 

A better alternative perhaps would be:

- Avoid field-injections and use ctor-level injections (this is the general 
recommendation from Spring)
- Do not use autowire/component/etc directly in business-level classes
- ...which means do not rely as much (if ever) on classpath/context scanning
- ...and instead, create and instantiate the bean directory in @Configuration 
classes, conditionally and with direct control
- ...or use a middle-ground for now, with something like this [2]

The work feels largely cosmetic perhaps; I think it will pay off in the future 
specially if it's something that is advocated by Spring and family.

WDYT?

--Misagh

[1] 
https://github.com/apache/syncope/blob/master/core/am/logic/src/main/java/org/apache/syncope/core/logic/OIDCJWKSLogic.java
[2] 
https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/using-boot-spring-beans-and-dependency-injection.html



Errored: apache/syncope#7121 (master - ea8ed06)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7121
Status: Errored

Duration: 17 mins and 31 secs
Commit: ea8ed06 (master)
Author: Francesco Chicchiriccò
Message: Upgrading Swagger Core

View the changeset: 
https://github.com/apache/syncope/compare/1afd8eabc2ac...ea8ed063aaa2

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217590903?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




Errored: apache/syncope#7121 (master - ea8ed06)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7121
Status: Errored

Duration: 17 mins and 13 secs
Commit: ea8ed06 (master)
Author: Francesco Chicchiriccò
Message: Upgrading Swagger Core

View the changeset: 
https://github.com/apache/syncope/compare/1afd8eabc2ac...ea8ed063aaa2

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217590903?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




Re: State of Syncope 3.0

2021-02-19 Thread Misagh Moayyed
Thank you, Francesco. Excellent stuff and it's exciting to see this goodness 
come to life.

I would support the idea of doing an RC; for advanced users or those who might 
been following the activity on Github or other developers building against 
Syncope, this could prove useful. Of course, this is assuming the 
release-engineering effort is reasonable (and speaking of which, we could 
explore whether this bit may also be automated using Travis CI; we could let 
the robots do all the work before their eventual uprising and return of Arnold 
Schwarzenegger!)

Happy Friday!

--Misagh

- Original Message -
> From: "Francesco Chicchiriccò" 
> To: "dev" 
> Sent: Monday, February 15, 2021 3:33:05 PM
> Subject: State of Syncope 3.0

> Hi all,
> I thought I could spend a few words to describe the current status of our
> efforts towards Syncope 3.0.
> 
> Starting point is [1] where the overall code reorganization - now completed -
> and the new components are introduced.
> Also relevant is [2] which describes the identified issues in JIRA for the new
> major version.
> 
> Overall, this is the state by component:
> 
> * Core is completed with several enhancements and improvements
> 
> * Console was upgraded to latest components and technologies but is still
> lacking the features to manage WA (Keymaster and SRA management was done,
> instead)
> 
> * Enduser was rewritten from scratch to uniform with Console as much as 
> possible
> but needs work to finalize and possibly include new features derived from WA 
> as
> auth profile management or SAML2 / OIDC account linking
> 
> * SRA is completed
> 
> * Keymaster is completed and provided in two flavors: self, e.g. REST and
> internal storage based, and zookeeper, requiring an Apache Zookeeper 
> deployment
> 
> * WA, based on Apereo CAS 6.4, is mostly completed but under continuous
> refinement
> 
> * Documentation is the sore point, essentially stuck at the same content as 
> 2.1
> 
> Similarly as we've done at the time of Syncope 2.0, I believe it is the case 
> to
> publish some RCs before the official 3.0.0.
> I don't think, however, we are yet a the point of issuing RC1, as we'd need at
> least to:
> 
> 1. update the Documentations at least with main changes
> 
> 2. bring the Enduser application at a degree of usability
> 
> 3. introduce at least some WA configuration items for Console
> 
> WDYT?
> Regards.
> 
> [1]
> https://cwiki.apache.org/confluence/display/SYNCOPE/%5BDISCUSS%5D+Syncope+3.0
> [2] https://issues.apache.org/jira/projects/SYNCOPE/versions/12322510
> 
> --
> Francesco Chicchiriccò
> 
> Tirasa - Open Source Excellence
> http://www.tirasa.net/
> 
> Member at The Apache Software Foundation
> Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
> http://home.apache.org/~ilgrosso/


Errored: apache/syncope#7121 (master - ea8ed06)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7121
Status: Errored

Duration: 17 mins and 3 secs
Commit: ea8ed06 (master)
Author: Francesco Chicchiriccò
Message: Upgrading Swagger Core

View the changeset: 
https://github.com/apache/syncope/compare/1afd8eabc2ac...ea8ed063aaa2

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217590903?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




Errored: apache/syncope#7121 (master - ea8ed06)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7121
Status: Errored

Duration: 17 mins and 22 secs
Commit: ea8ed06 (master)
Author: Francesco Chicchiriccò
Message: Upgrading Swagger Core

View the changeset: 
https://github.com/apache/syncope/compare/1afd8eabc2ac...ea8ed063aaa2

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217590903?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




Errored: apache/syncope#7121 (master - ea8ed06)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7121
Status: Errored

Duration: 28 mins and 22 secs
Commit: ea8ed06 (master)
Author: Francesco Chicchiriccò
Message: Upgrading Swagger Core

View the changeset: 
https://github.com/apache/syncope/compare/1afd8eabc2ac...ea8ed063aaa2

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217590903?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.




Errored: apache/syncope#7121 (master - ea8ed06)

2021-02-19 Thread Travis CI
Build Update for apache/syncope
-

Build: #7121
Status: Errored

Duration: 1 hr, 12 mins, and 10 secs
Commit: ea8ed06 (master)
Author: Francesco Chicchiriccò
Message: Upgrading Swagger Core

View the changeset: 
https://github.com/apache/syncope/compare/1afd8eabc2ac...ea8ed063aaa2

View the full build log and details: 
https://travis-ci.com/github/apache/syncope/builds/217590903?utm_medium=notification_source=email


--

You can unsubscribe from build emails from the apache/syncope repository going 
to 
https://travis-ci.com/account/preferences/unsubscribe?repository=16807214_medium=notification_source=email.
Or unsubscribe from *all* email updating your settings at 
https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification_source=email.
Or configure specific recipients for build notifications in your .travis.yml 
file. See https://docs.travis-ci.com/user/notifications.