This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a change to branch 7.1.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git


    from 053610bb49 Merge branch '7.0.x' into 7.1.x
     add 32ac3863a5 prevent duplicate loading of micronaut beans & fix bootJar 
task
     add 37f5114dbf Merge remote-tracking branch 'origin/7.0.x' into 
micronaut-fixes
     add 6fd254b99d fix: configure Micronaut annotation processor and CLASSIC 
loader in GrailsGradlePlugin
     add 19fa41e0fe fix: add bootWar CLASSIC loader to Forge-generated 
build.gradle
     add beff44a522 chore: add Apache license header to GrailsMicronautValidator
     add 888fa45a59 test: add integration tests for Micronaut bean type 
registration
     add 6d4dfc9e2f docs: document Micronaut annotation processor and CLASSIC 
loader in upgrade guide
     add fbf50a26b8 fix: exclude Spring Boot DevTools for Micronaut apps in 
Forge
     add b3062c6478 test: add bean duplication and cross-context identity tests 
for Micronaut
     add b04d6d51ef fix: address review feedback on test correctness and 
documentation
     add 4e9d6b9259 refactor: extract JavaMessageProvider to its own file
     add ae7747aee5 fix: remove annotation processor auto-config and add 
declarative @Client test
     add e6e202ab13 Merge branch '7.0.x' into micronaut-fixes-2
     add 782b950a65 test: invoke declarative @Client through load balancing 
path with ersatz mock
     add 03d1a51674 fix: restore Micronaut annotation processor auto-config in 
GrailsGradlePlugin
     add 79cdfc189e fix: move Micronaut annotation processor config to test 
apps with Java sources
     add af9191215c style: formatting and readability
     add f4fe7bdc1e refactor: groovify
     add 6c812442a4 Use BootArchive instead of BootWar/BootJar
     add 749364dd9a Remove unused imports
     add 52f1180917 Fix exists() cross-join caused by duplicate CriteriaQuery 
root
     add d430eed0a6 Merge pull request #15419 from apache/fix/exists-cross-join
     add 251e6fd857 Merge branch '7.0.x' into micronaut-fixes-2
     add 6b59b6f1a3 Address PR review feedback: comprehensive ersatz tests, 
plugin @Singleton beans, and docs updates
     add db7f62f9bb Exhaustive ersatz integration tests for all Micronaut 
client patterns
     add 7c25aa5cf3 Auto-exclude Spring Boot LiquibaseAutoConfiguration when 
Database Migration Plugin is present
     add 8fd3c59a46 Switch to AST-based LiquibaseAutoConfiguration exclusion 
with opt-out
     add a2e6cd15d4 refactor: groovify and readability
     add 656158070e test: clean up and simplify
     add f608051cdc Merge branch '7.0.x' into fix/liquibase-autoconfig-exclusion
     add ca84fb2513 Rename system property to 
grails.autoconfigure.exclude.liquibase
     add 26a8ee47ad Merge pull request #15405 from 
jamesfredley/fix/liquibase-autoconfig-exclusion
     add 3bc530e990 fix: copy missing fields in AbstractDetachedCriteria.clone()
     add 8395e3d8a3 Merge pull request #15424 from 
apache/fix/detached-criteria-clone
     add 13d86abc46 fix: add jboss-threads 3.9.2 to Undertow feature for Java 
25 compatibility
     add f4f9120872 Merge pull request #15427 from 
apache/fix/undertow-jboss-threads-java25
     add f8fd27a682 Upgrade to Spring Boot 3.5.11
     add c8b1b28d89 test(deps): bump `grails-spring-security`
     add 1b4a0ba679 Merge pull request #15428 from apache/upgrade-boot
     add c0d58dfda8 fix: add Java 23+/24+ compatibility JVM args and upgrade 
commons-lang3 to 3.20.0
     add 7ed3ffde65 fix: make Java compat tests JDK-version-aware for CI on 
Java 25
     add 8f22d071a5 Merge branch '7.0.x' into fix/java-compat-jvm-args
     add abbde8cf43 fix: replace afterEvaluate with plugins.withId and add 
logger.info per review
     add b3c414b875 fix: replace afterEvaluate with lazy plugin syntax in 
configureToolchainForForkTasks
     add 418cde8b33 Merge pull request #15417 from 
apache/fix/java-compat-jvm-args
     add 7ae3260c47 Fix @Where and DetachedCriteria query methods ignoring 
@Transactional(connection)
     add dbb0e9851e Merge branch '7.0.x' into fix/where-connection-routing
     add 98e9b512fd Add @Where connection routing TCK test for multi-datasource 
support
     add 5a50372074 refactor: use public GORM multi-datasource API in test 
helpers
     add 118f897eab Merge pull request #15418 from 
apache/fix/where-connection-routing
     add 47e4cbd8a2 Merge branch '7.0.x' into micronaut-fixes-2
     add 13447162ac test: add Groovy-only Micronaut test module
     add c80069261c Merge pull request #15411 from apache/micronaut-fixes-2
     add fe158099bc test: add @Query Data Service connection routing tests
     add a514a047c9 fix: restore removed documentation comments
     add 95bb3023f1 Merge pull request #15423 from 
apache/test/query-connection-routing
     new 2988347767 Merge pull request #15434 from apache/7.0.x

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 dependencies.gradle                                |   4 +-
 gradle.properties                                  |   3 +-
 .../injection/ApplicationClassInjector.groovy      |  46 +-
 .../injection/ApplicationClassInjectorSpec.groovy  | 100 +++
 .../AbstractHibernateGormStaticApi.groovy          |   2 +-
 .../core/GrailsDataHibernate5TckManager.groovy     |  47 +-
 .../orm/hibernate/ExistsCrossJoinSpec.groovy       | 122 +++
 .../DataServiceMultiDataSourceSpec.groovy          | 107 +++
 .../WhereQueryMultiDataSourceSpec.groovy           | 179 +++++
 grails-data-hibernate5/dbmigration/README.md       |  22 +
 .../mongo/core/GrailsDataMongoTckManager.groovy    |  38 +
 .../query/criteria/AbstractDetachedCriteria.groovy |   3 +
 .../implementers/AbstractWhereImplementer.groovy   |   8 +-
 .../services/WhereConnectionRoutingSpec.groovy     | 211 +++++
 .../criteria/DetachedCriteriaCloneSpec.groovy      | 123 +++
 .../testing/tck/base/GrailsDataTckManager.groovy   |  16 +
 .../{TestEntity.groovy => WhereRoutingItem.groovy} |  21 +-
 ...ntity.groovy => WhereRoutingItemService.groovy} |  26 +-
 .../tests/WhereQueryConnectionRoutingSpec.groovy   | 140 ++++
 .../dataSource/automaticDatabaseMigration.adoc     |  15 +-
 .../src/en/guide/upgrading/upgrading60x.adoc       |  18 +
 .../build/gradle/templates/buildGradle.rocker.raw  |   2 +-
 .../GrailsMicronautValidator.java}                 |  18 +-
 .../feature/reloading/SpringBootDevTools.java      |  12 +-
 .../feature/spring/SpringBootUndertowFeature.java  |   4 +
 .../grails-forge-core/src/main/resources/pom.xml   |   6 +
 .../reloading/SpringBootDevToolsSpec.groovy        |  32 +-
 .../forge/feature/spring/SpringBootSpec.groovy     |  14 +
 .../gradle/plugin/core/GrailsGradlePlugin.groovy   |  91 ++-
 .../core/GrailsGradlePluginJavaCompatSpec.groovy   | 109 +++
 .../java-compat-no-toolchain/build.gradle          |  21 +
 .../gradle.properties                              |   0
 .../grails-app/conf/application.yml                |   0
 .../settings.gradle                                |   0
 .../java-compat-toolchain-23/build.gradle          |  29 +
 .../gradle.properties                              |   0
 .../grails-app/conf/application.yml                |   0
 .../settings.gradle                                |   0
 .../java-compat-toolchain-24/build.gradle          |  29 +
 .../gradle.properties                              |   0
 .../grails-app/conf/application.yml                |   0
 .../settings.gradle                                |   0
 .../java-compat-toolchain-current/build.gradle     |  27 +
 .../gradle.properties                              |   0
 .../grails-app/conf/application.yml                |   0
 .../settings.gradle                                |   0
 grails-micronaut/build.gradle                      |   3 +-
 .../micronaut/GrailsMicronautGrailsPlugin.groovy   |  36 +-
 .../groovy/gorm/ExistsSpec.groovy}                 |  51 +-
 .../services/example/ProductService.groovy         |  10 +
 .../DataServiceMultiDataSourceSpec.groovy          |  46 ++
 .../build.gradle                                   |  18 +-
 .../grails-app/conf/application.yml                |  35 +-
 .../micronautgroovyonly}/UrlMappings.groovy        |   3 +-
 .../init/micronautgroovyonly}/Application.groovy   |   4 +-
 .../BeanInjectionService.groovy                    |   2 +-
 .../micronautgroovyonly}/TestService.groovy        |   2 +-
 .../BeanInjectionServiceSpec.groovy                |   2 +-
 .../MicronautContextSpec.groovy                    |  11 +-
 .../MicronautQualifierSpec.groovy                  |  11 +-
 .../main/groovy/bean/injection/AppConfig.groovy}   |  12 +-
 .../bean/injection/FactoryCreatedService.groovy}   |   7 +-
 .../main/groovy/bean/injection/NamedService.groovy |   8 +-
 .../bean/injection/PrimaryNamedService.groovy      |   1 -
 .../main/groovy/bean/injection/Qualified.groovy    |   0
 .../bean/injection/QualifiedNamedService.groovy    |   2 +-
 .../bean/injection/RegularNamedService.groovy      |   2 +-
 .../groovy/bean/injection/ServiceFactory.groovy}   |  16 +-
 .../bean/injection/SpecialNamedService.groovy      |   0
 grails-test-examples/micronaut/build.gradle        |  14 +-
 .../micronaut/grails-app/conf/application.yml      |   7 +
 .../micronaut/ExternalApiController.groovy         | 113 +++
 .../micronaut/MicronautTestController.groovy}      |  34 +-
 .../controllers/micronaut/UrlMappings.groovy       |  15 +
 .../services/micronaut/ExternalApiService.groovy   | 110 +++
 .../micronaut/MicronautBeanDuplicationSpec.groovy  | 105 +++
 .../groovy/micronaut/MicronautBeanTypesSpec.groovy |  99 +++
 .../MicronautDeclarativeClientSpec.groovy          | 299 +++++++
 .../micronaut/MicronautErsatzAdvancedSpec.groovy   | 863 +++++++++++++++++++++
 .../micronaut/MicronautErsatzPatternSpec.groovy    | 481 ++++++++++++
 .../micronaut/MicronautErsatzRoundtripSpec.groovy  | 531 +++++++++++++
 .../micronaut/MicronautPluginBeanSpec.groovy       |  85 ++
 .../main/groovy/bean/injection/AppConfig.groovy}   |  12 +-
 .../bean/injection/FactoryCreatedService.groovy}   |   7 +-
 ...edNamedService.groovy => ServiceFactory.groovy} |  16 +-
 .../client/MicronautAdvancedClient.groovy          |  59 ++
 .../client/MicronautFilteredClient.groovy          |  22 +-
 .../micronaut/client/MicronautHeaderClient.groovy  |  26 +-
 .../micronaut/client/MicronautPathClient.groovy    |  26 +-
 .../client/MicronautReactiveClient.groovy          |  41 +-
 .../micronaut/client/MicronautTestClient.groovy    |  43 +-
 .../bean/injection/JavaMessageProvider.java}       |   4 +-
 .../bean/injection/JavaSingletonService.java}      |   9 +-
 .../micronaut/client/MicronautRetryableClient.java |  20 +-
 .../micronaut/filter/AuthTokenClientFilter.java}   |  22 +-
 .../plugins/issue-11767/build.gradle               |   6 +-
 .../build.gradle                                   |  17 +-
 .../MicronautSingletonGrailsPlugin.groovy}         |  19 +-
 .../plugins/micronaut/PluginMessageProvider.java}  |   7 +-
 .../plugins/micronaut/PluginSingletonService.java} |  19 +-
 settings.gradle                                    |   4 +
 101 files changed, 4676 insertions(+), 386 deletions(-)
 create mode 100644 
grails-core/src/test/groovy/org/grails/compiler/injection/ApplicationClassInjectorSpec.groovy
 create mode 100644 
grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/ExistsCrossJoinSpec.groovy
 create mode 100644 
grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/WhereQueryMultiDataSourceSpec.groovy
 create mode 100644 
grails-datamapping-core/src/test/groovy/grails/gorm/services/WhereConnectionRoutingSpec.groovy
 create mode 100644 
grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/criteria/DetachedCriteriaCloneSpec.groovy
 copy 
grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/{TestEntity.groovy
 => WhereRoutingItem.groovy} (74%)
 copy 
grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/{ChildEntity.groovy
 => WhereRoutingItemService.groovy} (67%)
 create mode 100644 
grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/WhereQueryConnectionRoutingSpec.groovy
 copy 
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{test/AssertJValidator.java
 => micronaut/GrailsMicronautValidator.java} (71%)
 create mode 100644 
grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/GrailsGradlePluginJavaCompatSpec.groovy
 create mode 100644 
grails-gradle/plugins/src/test/resources/test-projects/java-compat-no-toolchain/build.gradle
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-no-toolchain}/gradle.properties (100%)
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-no-toolchain}/grails-app/conf/application.yml (100%)
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-no-toolchain}/settings.gradle (100%)
 create mode 100644 
grails-gradle/plugins/src/test/resources/test-projects/java-compat-toolchain-23/build.gradle
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-toolchain-23}/gradle.properties (100%)
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-toolchain-23}/grails-app/conf/application.yml (100%)
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-toolchain-23}/settings.gradle (100%)
 create mode 100644 
grails-gradle/plugins/src/test/resources/test-projects/java-compat-toolchain-24/build.gradle
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-toolchain-24}/gradle.properties (100%)
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-toolchain-24}/grails-app/conf/application.yml (100%)
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-toolchain-24}/settings.gradle (100%)
 create mode 100644 
grails-gradle/plugins/src/test/resources/test-projects/java-compat-toolchain-current/build.gradle
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-toolchain-current}/gradle.properties (100%)
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-toolchain-current}/grails-app/conf/application.yml (100%)
 copy 
grails-gradle/plugins/src/test/resources/test-projects/{fork-settings-custom => 
java-compat-toolchain-current}/settings.gradle (100%)
 copy 
grails-test-examples/{app1/src/integration-test/groovy/functionaltests/BookIntegrationSpec.groovy
 => gorm/src/integration-test/groovy/gorm/ExistsSpec.groovy} (55%)
 copy grails-test-examples/{micronaut => micronaut-groovy-only}/build.gradle 
(71%)
 copy grails-test-examples/{micronaut => 
micronaut-groovy-only}/grails-app/conf/application.yml (74%)
 copy grails-test-examples/{mongodb/base/grails-app/controllers => 
micronaut-groovy-only/grails-app/controllers/micronautgroovyonly}/UrlMappings.groovy
 (96%)
 copy grails-test-examples/{issue-11767/grails-app/init/issue11767/app => 
micronaut-groovy-only/grails-app/init/micronautgroovyonly}/Application.groovy 
(97%)
 copy grails-test-examples/{micronaut/grails-app/services/micronaut => 
micronaut-groovy-only/grails-app/services/micronautgroovyonly}/BeanInjectionService.groovy
 (97%)
 copy grails-test-examples/{micronaut/grails-app/services/micronaut => 
micronaut-groovy-only/grails-app/services/micronautgroovyonly}/TestService.groovy
 (97%)
 copy grails-test-examples/{micronaut/src/integration-test/groovy/micronaut => 
micronaut-groovy-only/src/integration-test/groovy/micronautgroovyonly}/BeanInjectionServiceSpec.groovy
 (98%)
 copy grails-test-examples/{micronaut/src/integration-test/groovy/micronaut => 
micronaut-groovy-only/src/integration-test/groovy/micronautgroovyonly}/MicronautContextSpec.groovy
 (89%)
 copy grails-test-examples/{micronaut/src/integration-test/groovy/micronaut => 
micronaut-groovy-only/src/integration-test/groovy/micronautgroovyonly}/MicronautQualifierSpec.groovy
 (92%)
 copy 
grails-test-examples/{plugins/issue-11767/src/main/groovy/issue11767/plugin/PluginGroovyMicronautBean.groovy
 => micronaut-groovy-only/src/main/groovy/bean/injection/AppConfig.groovy} (88%)
 copy 
grails-test-examples/{micronaut/grails-app/services/micronaut/TestService.groovy
 => 
micronaut-groovy-only/src/main/groovy/bean/injection/FactoryCreatedService.groovy}
 (92%)
 copy 
grails-data-neo4j/examples/grails3-neo4j-hibernate/grails-app/init/BootStrap.groovy
 => 
grails-test-examples/micronaut-groovy-only/src/main/groovy/bean/injection/NamedService.groovy
 (92%)
 copy grails-test-examples/{micronaut => 
micronaut-groovy-only}/src/main/groovy/bean/injection/PrimaryNamedService.groovy
 (99%)
 copy grails-test-examples/{micronaut => 
micronaut-groovy-only}/src/main/groovy/bean/injection/Qualified.groovy (100%)
 copy grails-test-examples/{micronaut => 
micronaut-groovy-only}/src/main/groovy/bean/injection/QualifiedNamedService.groovy
 (99%)
 copy grails-test-examples/{micronaut => 
micronaut-groovy-only}/src/main/groovy/bean/injection/RegularNamedService.groovy
 (99%)
 copy 
grails-test-examples/{micronaut/src/main/groovy/bean/injection/QualifiedNamedService.groovy
 => micronaut-groovy-only/src/main/groovy/bean/injection/ServiceFactory.groovy} 
(77%)
 copy grails-test-examples/{micronaut => 
micronaut-groovy-only}/src/main/groovy/bean/injection/SpecialNamedService.groovy
 (100%)
 create mode 100644 
grails-test-examples/micronaut/grails-app/controllers/micronaut/ExternalApiController.groovy
 copy 
grails-test-examples/micronaut/grails-app/{services/micronaut/BeanInjectionService.groovy
 => controllers/micronaut/MicronautTestController.groovy} (63%)
 create mode 100644 
grails-test-examples/micronaut/grails-app/services/micronaut/ExternalApiService.groovy
 create mode 100644 
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautBeanDuplicationSpec.groovy
 create mode 100644 
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautBeanTypesSpec.groovy
 create mode 100644 
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautDeclarativeClientSpec.groovy
 create mode 100644 
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzAdvancedSpec.groovy
 create mode 100644 
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzPatternSpec.groovy
 create mode 100644 
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzRoundtripSpec.groovy
 create mode 100644 
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautPluginBeanSpec.groovy
 copy 
grails-test-examples/{plugins/issue-11767/src/main/groovy/issue11767/plugin/PluginGroovyMicronautBean.groovy
 => micronaut/src/main/groovy/bean/injection/AppConfig.groovy} (88%)
 copy 
grails-test-examples/micronaut/{grails-app/services/micronaut/TestService.groovy
 => src/main/groovy/bean/injection/FactoryCreatedService.groovy} (92%)
 copy 
grails-test-examples/micronaut/src/main/groovy/bean/injection/{QualifiedNamedService.groovy
 => ServiceFactory.groovy} (77%)
 create mode 100644 
grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautAdvancedClient.groovy
 copy grails-bootstrap/src/main/groovy/grails/util/Described.groovy => 
grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautFilteredClient.groovy
 (67%)
 copy 
build-logic/docs-core/src/main/groovy/grails/doc/internal/FileResourceChecker.groovy
 => 
grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautHeaderClient.groovy
 (65%)
 copy 
build-logic/docs-core/src/main/groovy/grails/doc/macros/HiddenMacro.groovy => 
grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautPathClient.groovy
 (62%)
 copy 
grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/PreviewClient.groovy
 => 
grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautReactiveClient.groovy
 (55%)
 copy 
grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/PreviewClient.groovy
 => 
grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautTestClient.groovy
 (56%)
 copy 
grails-test-examples/micronaut/src/main/{groovy/bean/injection/NamedService.java
 => java/bean/injection/JavaMessageProvider.java} (92%)
 copy 
grails-test-examples/micronaut/src/main/{groovy/bean/injection/NamedService.java
 => java/bean/injection/JavaSingletonService.java} (80%)
 copy 
grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/SourceCodeAware.java
 => 
grails-test-examples/micronaut/src/main/java/micronaut/client/MicronautRetryableClient.java
 (70%)
 copy 
grails-test-examples/{external-configuration/src/test/groovy/grails/plugin/externalconfig/ConfigWithEnvironmentBlock.groovy
 => micronaut/src/main/java/micronaut/filter/AuthTokenClientFilter.java} (67%)
 copy grails-test-examples/plugins/{loadfirst => 
micronaut-singleton}/build.gradle (74%)
 copy 
grails-test-examples/plugins/{issue-11767/src/main/groovy/issue11767/plugin/MyPluginGrailsPlugin.groovy
 => 
micronaut-singleton/src/main/groovy/micronaut/singleton/MicronautSingletonGrailsPlugin.groovy}
 (74%)
 copy 
grails-test-examples/{micronaut/src/main/groovy/bean/injection/NamedService.java
 => 
plugins/micronaut-singleton/src/main/java/com/example/grails/plugins/micronaut/PluginMessageProvider.java}
 (87%)
 copy 
grails-test-examples/{views-functional-tests/grails-app/views/testGml/_cars.gml 
=> 
plugins/micronaut-singleton/src/main/java/com/example/grails/plugins/micronaut/PluginSingletonService.java}
 (76%)

Reply via email to