From 80a5e7ab81303f4581b6d4d0cb953405e8ecd72b Mon Sep 17 00:00:00 2001 From: Andras Slemmer Date: Fri, 1 Jun 2018 19:15:35 +0100 Subject: [PATCH 01/19] Add flow state machine extension tutorial --- .../corda/core/internal/FlowAsyncOperation.kt | 4 + .../net/corda/core/internal/FlowIORequest.kt | 2 + .../contributing-flow-state-machines.rst | 237 ++++++++++++++++++ docs/source/contributing.rst | 3 + .../docs/TutorialFlowAsyncOperationTest.kt | 29 +++ .../TutorialFlowAsyncOperation.kt | 38 +++ 6 files changed, 313 insertions(+) create mode 100644 docs/source/contributing-flow-state-machines.rst create mode 100644 docs/source/example-code/src/integration-test/kotlin/net/corda/docs/TutorialFlowAsyncOperationTest.kt create mode 100644 docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt diff --git a/core/src/main/kotlin/net/corda/core/internal/FlowAsyncOperation.kt b/core/src/main/kotlin/net/corda/core/internal/FlowAsyncOperation.kt index dad14b4b69..61fc4ee5d5 100644 --- a/core/src/main/kotlin/net/corda/core/internal/FlowAsyncOperation.kt +++ b/core/src/main/kotlin/net/corda/core/internal/FlowAsyncOperation.kt @@ -5,6 +5,7 @@ import net.corda.core.concurrent.CordaFuture import net.corda.core.flows.FlowLogic import net.corda.core.serialization.CordaSerializable +// DOCSTART FlowAsyncOperation /** * Interface for arbitrary operations that can be invoked in a flow asynchronously - the flow will suspend until the * operation completes. Operation parameters are expected to be injected via constructor. @@ -14,10 +15,13 @@ interface FlowAsyncOperation { /** Performs the operation in a non-blocking fashion. */ fun execute(): CordaFuture } +// DOCEND FlowAsyncOperation +// DOCSTART executeAsync /** Executes the specified [operation] and suspends until operation completion. */ @Suspendable fun FlowLogic.executeAsync(operation: FlowAsyncOperation, maySkipCheckpoint: Boolean = false): R { val request = FlowIORequest.ExecuteAsyncOperation(operation) return stateMachine.suspend(request, maySkipCheckpoint) } +// DOCEND executeAsync diff --git a/core/src/main/kotlin/net/corda/core/internal/FlowIORequest.kt b/core/src/main/kotlin/net/corda/core/internal/FlowIORequest.kt index 257e7706c6..494c5099aa 100644 --- a/core/src/main/kotlin/net/corda/core/internal/FlowIORequest.kt +++ b/core/src/main/kotlin/net/corda/core/internal/FlowIORequest.kt @@ -9,6 +9,7 @@ import net.corda.core.transactions.SignedTransaction import net.corda.core.utilities.NonEmptySet import java.time.Instant +// DOCSTART FlowIORequest /** * A [FlowIORequest] represents an IO request of a flow when it suspends. It is persisted in checkpoints. */ @@ -93,3 +94,4 @@ sealed class FlowIORequest { // TODO: consider using an empty FlowAsyncOperation instead object ForceCheckpoint : FlowIORequest() } +// DOCSEND FlowIORequest diff --git a/docs/source/contributing-flow-state-machines.rst b/docs/source/contributing-flow-state-machines.rst new file mode 100644 index 0000000000..7da84c2707 --- /dev/null +++ b/docs/source/contributing-flow-state-machines.rst @@ -0,0 +1,237 @@ +.. highlight:: kotlin +.. raw:: html + + + + +How to extend the state machine +=============================== + +This article explains how to extend the state machine code that underlies flow execution. It is intended for Corda +contributors. + +How to add suspending operations +-------------------------------- + +To add a suspending operation that's a simple request-response type function that perhaps involves some external IO you +can use the internal ``FlowAsyncOperation`` interface. + +.. container:: codeset + + .. literalinclude:: ../../core/src/main/kotlin/net/corda/core/internal/FlowAsyncOperation.kt + :language: kotlin + :start-after: DOCSTART FlowAsyncOperation + :end-before: DOCEND FlowAsyncOperation + +Let's imagine we want to add a suspending operation that takes two integers and returns their sum. To do this we +implement ``FlowAsyncOperation``: + +.. container:: codeset + + .. literalinclude:: ../../docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt + :language: kotlin + :start-after: DOCSTART SummingOperation + :end-before: DOCEND SummingOperation + +As we can see the constructor of ``SummingOperation`` takes the two numbers, and the ``execute`` function simply returns +a future that is immediately completed by the result of summing the numbers. Note how we don't use ``@Suspendable`` on +``execute``, this is because we'll never suspend inside this function, the suspension will happen before we're calling +it. + +Note also how the input numbers are stored in the class as fields. This is important, because in the flow's checkpoint +we'll store an instance of this class whenever we're suspending on such an operation. If the node fails or restarts +while the operation is underway this class will be deserialized from the checkpoint and ``execute`` will be called +again. + +Now we can use the internal function ``executeAsync`` to execute this operation from a flow. + +.. container:: codeset + + .. literalinclude:: ../../core/src/main/kotlin/net/corda/core/internal/FlowAsyncOperation.kt + :language: kotlin + :start-after: DOCSTART executeAsync + :end-before: DOCEND executeAsync + +It simply takes a ``FlowAsyncOperation`` and an optional flag we don't care about for now. We can use this function in a +flow: + +.. container:: codeset + + .. literalinclude:: ../../docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt + :language: kotlin + :start-after: DOCSTART ExampleSummingFlow + :end-before: DOCEND ExampleSummingFlow + +That's it! Obviously this is a mostly useless example, but this is the basic code structure one could extend for heavier +computations/other IO. For example the function could call into a ``CordaService`` or something similar. One thing to +note is that the operation executed in ``execute`` must be redoable(= "idempotent") in case the node fails while the +next checkpoint is reached. + +How to test +----------- + +The recommended way to test flows and the state machine is using the Driver DSL. This ensures that you will test your +flow with a full node. + +.. container:: codeset + + .. literalinclude:: ../../docs/source/example-code/src/integration-test/kotlin/net/corda/docs/TutorialFlowAsyncOperationTest.kt + :language: kotlin + :start-after: DOCSTART summingWorks + :end-before: DOCEND summingWorks + +The above will spin up a node and run our example flow. + +How to debug issues +------------------- + +Let's assume we made a mistake in our summing operation: + +.. container:: codeset + + .. literalinclude:: ../../docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt + :language: kotlin + :start-after: DOCSTART SummingOperationThrowing + :end-before: DOCEND SummingOperationThrowing + +The operation now throws a rude exception. If we modify the example flow to use this and run the same test we will get +a lot of logs about the error condition (as we are in dev mode). The interesting bit looks like this: + +.. parsed-literal:: + [WARN ] 18:38:52,613 [Node thread-1] (DumpHistoryOnErrorInterceptor.kt:39) interceptors.DumpHistoryOnErrorInterceptor.executeTransition - Flow [03ab886e-3fd3-4667-b944-ab6a3b1f90a7] errored, dumping all transitions: + + --- Transition of flow [03ab886e-3fd3-4667-b944-ab6a3b1f90a7] --- + Timestamp: 2018-06-01T17:38:52.426Z + Event: DoRemainingWork + Actions: + CreateTransaction + PersistCheckpoint(id=[03ab886e-3fd3-4667-b944-ab6a3b1f90a7], checkpoint=Checkpoint(invocationContext=InvocationContext(origin=RPC(actor=Actor(id=Id(value=aliceUser), serviceId=AuthServiceId(value=NODE_CONFIG), owningLegalIdentity=O=Alice Corp, L=Madrid, C=ES)), trace=Trace(invocationId=26bcf0c3-f1d8-4098-a52d-3780f4095b7a, timestamp: 2018-06-01T17:38:52.234Z, entityType: Invocation, sessionId=393d1175-3bb1-4eb1-bff0-6ba317851260, timestamp: 2018-06-01T17:38:52.169Z, entityType: Session), actor=Actor(id=Id(value=aliceUser), serviceId=AuthServiceId(value=NODE_CONFIG), owningLegalIdentity=O=Alice Corp, L=Madrid, C=ES), externalTrace=null, impersonatedActor=null), ourIdentity=O=Alice Corp, L=Madrid, C=ES, sessions={}, subFlowStack=[Inlined(flowClass=class net.corda.docs.tutorial.flowstatemachines.ExampleSummingFlow, subFlowVersion=CorDappFlow(platformVersion=1, corDappName=net.corda.docs-c6816652-f975-4fb2-aa09-ef1dddea19b3, corDappHash=F4012397D8CF97926B5998E046DBCE16D497318BB87DCED66313912D4B303BB7))], flowState=Unstarted(flowStart=Explicit, frozenFlowLogic=74BA62EC5821EBD4FC4CBE129843F9ED6509DB37E6E3C8F85E3F7A8D84083500), errorState=Clean, numberOfSuspends=0, deduplicationSeed=03ab886e-3fd3-4667-b944-ab6a3b1f90a7)) + PersistDeduplicationFacts(deduplicationHandlers=[net.corda.node.internal.FlowStarterImpl$startFlow$startFlowEvent$1@69326343]) + CommitTransaction + AcknowledgeMessages(deduplicationHandlers=[net.corda.node.internal.FlowStarterImpl$startFlow$startFlowEvent$1@69326343]) + SignalFlowHasStarted(flowId=[03ab886e-3fd3-4667-b944-ab6a3b1f90a7]) + CreateTransaction + Continuation: Resume(result=null) + Diff between previous and next state: + isAnyCheckpointPersisted: + false + true + pendingDeduplicationHandlers: + [net.corda.node.internal.FlowStarterImpl$startFlow$startFlowEvent$1@69326343] + [] + isFlowResumed: + false + true + + + --- Transition of flow [03ab886e-3fd3-4667-b944-ab6a3b1f90a7] --- + Timestamp: 2018-06-01T17:38:52.487Z + Event: Suspend(ioRequest=ExecuteAsyncOperation(operation=net.corda.docs.tutorial.flowstatemachines.SummingOperationThrowing@40f4c23d), maySkipCheckpoint=false, fiber=15EC69204562BB396846768169AD4A339569D97AE841D805C230C513A8BA5BDE, ) + Actions: + PersistCheckpoint(id=[03ab886e-3fd3-4667-b944-ab6a3b1f90a7], checkpoint=Checkpoint(invocationContext=InvocationContext(origin=RPC(actor=Actor(id=Id(value=aliceUser), serviceId=AuthServiceId(value=NODE_CONFIG), owningLegalIdentity=O=Alice Corp, L=Madrid, C=ES)), trace=Trace(invocationId=26bcf0c3-f1d8-4098-a52d-3780f4095b7a, timestamp: 2018-06-01T17:38:52.234Z, entityType: Invocation, sessionId=393d1175-3bb1-4eb1-bff0-6ba317851260, timestamp: 2018-06-01T17:38:52.169Z, entityType: Session), actor=Actor(id=Id(value=aliceUser), serviceId=AuthServiceId(value=NODE_CONFIG), owningLegalIdentity=O=Alice Corp, L=Madrid, C=ES), externalTrace=null, impersonatedActor=null), ourIdentity=O=Alice Corp, L=Madrid, C=ES, sessions={}, subFlowStack=[Inlined(flowClass=class net.corda.docs.tutorial.flowstatemachines.ExampleSummingFlow, subFlowVersion=CorDappFlow(platformVersion=1, corDappName=net.corda.docs-c6816652-f975-4fb2-aa09-ef1dddea19b3, corDappHash=F4012397D8CF97926B5998E046DBCE16D497318BB87DCED66313912D4B303BB7))], flowState=Started(flowIORequest=ExecuteAsyncOperation(operation=net.corda.docs.tutorial.flowstatemachines.SummingOperationThrowing@40f4c23d), frozenFiber=15EC69204562BB396846768169AD4A339569D97AE841D805C230C513A8BA5BDE), errorState=Clean, numberOfSuspends=1, deduplicationSeed=03ab886e-3fd3-4667-b944-ab6a3b1f90a7)) + PersistDeduplicationFacts(deduplicationHandlers=[]) + CommitTransaction + AcknowledgeMessages(deduplicationHandlers=[]) + ScheduleEvent(event=DoRemainingWork) + Continuation: ProcessEvents + Diff between previous and next state: + checkpoint.numberOfSuspends: + 0 + 1 + checkpoint.flowState: + Unstarted(flowStart=Explicit, frozenFlowLogic=74BA62EC5821EBD4FC4CBE129843F9ED6509DB37E6E3C8F85E3F7A8D84083500) + Started(flowIORequest=ExecuteAsyncOperation(operation=net.corda.docs.tutorial.flowstatemachines.SummingOperationThrowing@40f4c23d), frozenFiber=15EC69204562BB396846768169AD4A339569D97AE841D805C230C513A8BA5BDE) + isFlowResumed: + true + false + + + --- Transition of flow [03ab886e-3fd3-4667-b944-ab6a3b1f90a7] --- + Timestamp: 2018-06-01T17:38:52.549Z + Event: DoRemainingWork + Actions: + ExecuteAsyncOperation(operation=net.corda.docs.tutorial.flowstatemachines.SummingOperationThrowing@40f4c23d) + Continuation: ProcessEvents + Diff between previous and intended state: + null + Diff between previous and next state: + checkpoint.errorState: + Clean + Errored(errors=[FlowError(errorId=-8704604242619505379, exception=java.lang.IllegalStateException: You shouldn't be calling me)], propagatedIndex=0, propagating=false) + + + --- Transition of flow [03ab886e-3fd3-4667-b944-ab6a3b1f90a7] --- + Timestamp: 2018-06-01T17:38:52.555Z + Event: DoRemainingWork + Actions: + + Continuation: ProcessEvents + Diff between previous and next state: + null + + --- Transition of flow [03ab886e-3fd3-4667-b944-ab6a3b1f90a7] --- + Timestamp: 2018-06-01T17:38:52.556Z + Event: StartErrorPropagation + Actions: + ScheduleEvent(event=DoRemainingWork) + Continuation: ProcessEvents + Diff between previous and next state: + checkpoint.errorState.propagating: + false + true + + + --- Transition of flow [03ab886e-3fd3-4667-b944-ab6a3b1f90a7] --- + Timestamp: 2018-06-01T17:38:52.606Z + Event: DoRemainingWork + Actions: + PropagateErrors(errorMessages=[ErrorSessionMessage(flowException=null, errorId=-8704604242619505379)], sessions=[], senderUUID=861f07d6-4b8f-42bd-9b52-5152812db2ba) + CreateTransaction + RemoveCheckpoint(id=[03ab886e-3fd3-4667-b944-ab6a3b1f90a7]) + PersistDeduplicationFacts(deduplicationHandlers=[]) + ReleaseSoftLocks(uuid=03ab886e-3fd3-4667-b944-ab6a3b1f90a7) + CommitTransaction + AcknowledgeMessages(deduplicationHandlers=[]) + RemoveSessionBindings(sessionIds=[]) + RemoveFlow(flowId=[03ab886e-3fd3-4667-b944-ab6a3b1f90a7], removalReason=ErrorFinish(flowErrors=[FlowError(errorId=-8704604242619505379, exception=java.lang.IllegalStateException: You shouldn't be calling me)]), lastState=StateMachineState(checkpoint=Checkpoint(invocationContext=InvocationContext(origin=RPC(actor=Actor(id=Id(value=aliceUser), serviceId=AuthServiceId(value=NODE_CONFIG), owningLegalIdentity=O=Alice Corp, L=Madrid, C=ES)), trace=Trace(invocationId=26bcf0c3-f1d8-4098-a52d-3780f4095b7a, timestamp: 2018-06-01T17:38:52.234Z, entityType: Invocation, sessionId=393d1175-3bb1-4eb1-bff0-6ba317851260, timestamp: 2018-06-01T17:38:52.169Z, entityType: Session), actor=Actor(id=Id(value=aliceUser), serviceId=AuthServiceId(value=NODE_CONFIG), owningLegalIdentity=O=Alice Corp, L=Madrid, C=ES), externalTrace=null, impersonatedActor=null), ourIdentity=O=Alice Corp, L=Madrid, C=ES, sessions={}, subFlowStack=[Inlined(flowClass=class net.corda.docs.tutorial.flowstatemachines.ExampleSummingFlow, subFlowVersion=CorDappFlow(platformVersion=1, corDappName=net.corda.docs-c6816652-f975-4fb2-aa09-ef1dddea19b3, corDappHash=F4012397D8CF97926B5998E046DBCE16D497318BB87DCED66313912D4B303BB7))], flowState=Started(flowIORequest=ExecuteAsyncOperation(operation=net.corda.docs.tutorial.flowstatemachines.SummingOperationThrowing@40f4c23d), frozenFiber=15EC69204562BB396846768169AD4A339569D97AE841D805C230C513A8BA5BDE), errorState=Errored(errors=[FlowError(errorId=-8704604242619505379, exception=java.lang.IllegalStateException: You shouldn't be calling me)], propagatedIndex=1, propagating=true), numberOfSuspends=1, deduplicationSeed=03ab886e-3fd3-4667-b944-ab6a3b1f90a7), flowLogic=net.corda.docs.tutorial.flowstatemachines.ExampleSummingFlow@600b0c6c, pendingDeduplicationHandlers=[], isFlowResumed=false, isTransactionTracked=false, isAnyCheckpointPersisted=true, isStartIdempotent=false, isRemoved=true, senderUUID=861f07d6-4b8f-42bd-9b52-5152812db2ba)) + Continuation: Abort + Diff between previous and next state: + checkpoint.errorState.propagatedIndex: + 0 + 1 + isRemoved: + false + true + +Whoa that's a lot of stuff. Now we get a glimpse into the bowels of the flow state machine. As we can see the flow did +quite a few things, even though the flow code looks simple. + +What we can see here is the different transitions the flow's state machine went through that led up to the error +condition. For each transition we see what *Event* triggered the transition, what *Action* s were taken as a consequence, +and how the internal *State* of the state machine was modified in the process. It also prints the transition's +*Continuation*, which indicates how the flow should proceed after the transition. + +For example in the first transition we can see that the triggering event was a ``DoRemainingWork``, this is a generic +event that instructs the state machine to check its own state to see whether there's any work left to do, and does it if +there's any. + +In this case the work involves persisting a checkpoint together with some deduplication data in a database transaction, +then acknowledging any triggering messages, signalling that the flow has started, and creating a fresh database +transaction, to be used by user code. + +The continuation is a ``Resume``, which instructs the state machine to hand control to user code. The state change is +a simple update of bookkeeping data. + +On other words the first transition concerns initializing of the flow, which includes the creation of the +checkpoint. + +The next transition is the suspension on our summing operation, triggered by the ``Suspend`` event. As we can see in +this transition we aren't doing any work related to the summation yet, we're merely persisting the checkpoint that +indicates that we want to do the summation. Had we added a ``toString`` method to our ``SummingOperationThrowing`` we +would see a nicer message. + +The next transition is the faulty one, as we can see it was also triggered by a ``DoRemainingWork``, and executed our +operation. We can see that there are two state "diff"s printed, one that would've happened had the transition succeeded, +and one that actually happened, this is the marking of the flow's state as errored. The rest of the transitions involve +error propagation (triggered by the ``FlowHospital``) and notification of failure, which ultimately raises the exception +on the RPC ``resultFuture``. diff --git a/docs/source/contributing.rst b/docs/source/contributing.rst index 04becd16b5..3b3f14e22b 100644 --- a/docs/source/contributing.rst +++ b/docs/source/contributing.rst @@ -107,6 +107,9 @@ Running the API scanner Your changes must also not break compatibility with existing public API. We have an API scanning tool which runs as part of the build process which can be used to flag up any accidental changes, which is detailed :doc:`here `. +Extending the flow state machine +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +You can find instructions on how to extend the flow state machine :doc:`here ` Updating the docs ----------------- diff --git a/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/TutorialFlowAsyncOperationTest.kt b/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/TutorialFlowAsyncOperationTest.kt new file mode 100644 index 0000000000..fb3717f109 --- /dev/null +++ b/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/TutorialFlowAsyncOperationTest.kt @@ -0,0 +1,29 @@ +package net.corda.docs + +import net.corda.client.rpc.CordaRPCClient +import net.corda.core.messaging.startFlow +import net.corda.core.utilities.getOrThrow +import net.corda.docs.tutorial.flowstatemachines.ExampleSummingFlow +import net.corda.node.services.Permissions +import net.corda.testing.core.ALICE_NAME +import net.corda.testing.driver.DriverParameters +import net.corda.testing.driver.driver +import net.corda.testing.node.User +import org.junit.Test +import kotlin.test.assertEquals + +class TutorialFlowAsyncOperationTest { + // DOCSTART summingWorks + @Test + fun summingWorks() { + driver(DriverParameters(startNodesInProcess = true)) { + val aliceUser = User("aliceUser", "testPassword1", permissions = setOf(Permissions.all())) + val alice = startNode(providedName = ALICE_NAME, rpcUsers = listOf(aliceUser)).getOrThrow() + val aliceClient = CordaRPCClient(alice.rpcAddress) + val aliceProxy = aliceClient.start("aliceUser", "testPassword1").proxy + val answer = aliceProxy.startFlow(::ExampleSummingFlow).returnValue.getOrThrow() + assertEquals(3, answer) + } + } + // DOCEND summingWorks +} diff --git a/docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt b/docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt new file mode 100644 index 0000000000..527edd3f23 --- /dev/null +++ b/docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt @@ -0,0 +1,38 @@ +package net.corda.docs.tutorial.flowstatemachines + +import co.paralleluniverse.fibers.Suspendable +import net.corda.core.concurrent.CordaFuture +import net.corda.core.flows.FlowLogic +import net.corda.core.flows.StartableByRPC +import net.corda.core.internal.FlowAsyncOperation +import net.corda.core.internal.concurrent.doneFuture +import net.corda.core.internal.concurrent.openFuture +import net.corda.core.internal.executeAsync + +// DOCSTART SummingOperation +class SummingOperation(val a: Int, val b: Int) : FlowAsyncOperation { + override fun execute(): CordaFuture { + return doneFuture(a + b) + } +} +// DOCEND SummingOperation + +// DOCSTART SummingOperationThrowing +class SummingOperationThrowing(val a: Int, val b: Int) : FlowAsyncOperation { + override fun execute(): CordaFuture { + throw IllegalStateException("You shouldn't be calling me") + } +} +// DOCEND SummingOperationThrowing + +// DOCSTART ExampleSummingFlow +@StartableByRPC +class ExampleSummingFlow : FlowLogic() { + @Suspendable + override fun call(): Int { + val answer = executeAsync(SummingOperationThrowing(1, 2)) + return answer // hopefully 3 + } +} +// DOCEND ExampleSummingFlow + From d3758750541e39d18fc6ac45bd54bd5616e9ef03 Mon Sep 17 00:00:00 2001 From: Andras Slemmer Date: Mon, 4 Jun 2018 17:02:17 +0100 Subject: [PATCH 02/19] Address comments --- .../contributing-flow-state-machines.rst | 18 +++++++++--------- docs/source/contributing.rst | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/source/contributing-flow-state-machines.rst b/docs/source/contributing-flow-state-machines.rst index 7da84c2707..a78b945890 100644 --- a/docs/source/contributing-flow-state-machines.rst +++ b/docs/source/contributing-flow-state-machines.rst @@ -13,8 +13,8 @@ contributors. How to add suspending operations -------------------------------- -To add a suspending operation that's a simple request-response type function that perhaps involves some external IO you -can use the internal ``FlowAsyncOperation`` interface. +To add a suspending operation for a simple request-response type function that perhaps involves some external IO we can +use the internal ``FlowAsyncOperation`` interface. .. container:: codeset @@ -64,8 +64,8 @@ flow: That's it! Obviously this is a mostly useless example, but this is the basic code structure one could extend for heavier computations/other IO. For example the function could call into a ``CordaService`` or something similar. One thing to -note is that the operation executed in ``execute`` must be redoable(= "idempotent") in case the node fails while the -next checkpoint is reached. +note is that the operation executed in ``execute`` must be redoable(= "idempotent") in case the node fails before the +next checkpoint is committed. How to test ----------- @@ -222,16 +222,16 @@ transaction, to be used by user code. The continuation is a ``Resume``, which instructs the state machine to hand control to user code. The state change is a simple update of bookkeeping data. -On other words the first transition concerns initializing of the flow, which includes the creation of the +In other words the first transition concerns the initialization of the flow, which includes the creation of the checkpoint. -The next transition is the suspension on our summing operation, triggered by the ``Suspend`` event. As we can see in +The next transition is the suspension of our summing operation, triggered by the ``Suspend`` event. As we can see in this transition we aren't doing any work related to the summation yet, we're merely persisting the checkpoint that indicates that we want to do the summation. Had we added a ``toString`` method to our ``SummingOperationThrowing`` we would see a nicer message. The next transition is the faulty one, as we can see it was also triggered by a ``DoRemainingWork``, and executed our operation. We can see that there are two state "diff"s printed, one that would've happened had the transition succeeded, -and one that actually happened, this is the marking of the flow's state as errored. The rest of the transitions involve -error propagation (triggered by the ``FlowHospital``) and notification of failure, which ultimately raises the exception -on the RPC ``resultFuture``. +and one that actually happened, which marked the flow's state as errored. The rest of the transitions involve error +propagation (triggered by the ``FlowHospital``) and notification of failure, which ultimately raises the exception on +the RPC ``resultFuture``. diff --git a/docs/source/contributing.rst b/docs/source/contributing.rst index 3b3f14e22b..9b8e885de9 100644 --- a/docs/source/contributing.rst +++ b/docs/source/contributing.rst @@ -28,6 +28,10 @@ Making the required changes 2. Clone the fork to your local machine 3. Make the changes, in accordance with the :doc:`code style guide ` +Extending the flow state machine +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +You can find instructions on how to extend the flow state machine :doc:`here ` + Things to check ^^^^^^^^^^^^^^^ @@ -107,10 +111,6 @@ Running the API scanner Your changes must also not break compatibility with existing public API. We have an API scanning tool which runs as part of the build process which can be used to flag up any accidental changes, which is detailed :doc:`here `. -Extending the flow state machine -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -You can find instructions on how to extend the flow state machine :doc:`here ` - Updating the docs ----------------- From 8c1ea4a61d4aa8c1f1fc6e3b5c201b79939b5b4d Mon Sep 17 00:00:00 2001 From: Andras Slemmer Date: Mon, 4 Jun 2018 17:03:10 +0100 Subject: [PATCH 03/19] Fix test --- .../tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt b/docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt index 527edd3f23..8619361485 100644 --- a/docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt +++ b/docs/source/example-code/src/main/kotlin/net/corda/docs/tutorial/flowstatemachines/TutorialFlowAsyncOperation.kt @@ -30,7 +30,7 @@ class SummingOperationThrowing(val a: Int, val b: Int) : FlowAsyncOperation class ExampleSummingFlow : FlowLogic() { @Suspendable override fun call(): Int { - val answer = executeAsync(SummingOperationThrowing(1, 2)) + val answer = executeAsync(SummingOperation(1, 2)) return answer // hopefully 3 } } From 18a9155e89a19fa274a9386d9634e30b3773ea64 Mon Sep 17 00:00:00 2001 From: Andras Slemmer Date: Mon, 4 Jun 2018 18:42:40 +0100 Subject: [PATCH 04/19] Add java samples --- .../contributing-flow-state-machines.rst | 20 +++++++++ docs/source/example-code/build.gradle | 5 +++ .../java/TutorialFlowAsyncOperationTest.java | 42 +++++++++++++++++++ .../flowstatemachines/ExampleSummingFlow.java | 19 +++++++++ .../flowstatemachines/SummingOperation.java | 32 ++++++++++++++ .../SummingOperationThrowing.java | 31 ++++++++++++++ 6 files changed, 149 insertions(+) create mode 100644 docs/source/example-code/src/integration-test/java/net/corda/docs/java/TutorialFlowAsyncOperationTest.java create mode 100644 docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/ExampleSummingFlow.java create mode 100644 docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperation.java create mode 100644 docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperationThrowing.java diff --git a/docs/source/contributing-flow-state-machines.rst b/docs/source/contributing-flow-state-machines.rst index a78b945890..7f5a9a37c8 100644 --- a/docs/source/contributing-flow-state-machines.rst +++ b/docs/source/contributing-flow-state-machines.rst @@ -33,6 +33,11 @@ implement ``FlowAsyncOperation``: :start-after: DOCSTART SummingOperation :end-before: DOCEND SummingOperation + .. literalinclude:: ../../docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperation.java + :language: java + :start-after: DOCSTART SummingOperation + :end-before: DOCEND SummingOperation + As we can see the constructor of ``SummingOperation`` takes the two numbers, and the ``execute`` function simply returns a future that is immediately completed by the result of summing the numbers. Note how we don't use ``@Suspendable`` on ``execute``, this is because we'll never suspend inside this function, the suspension will happen before we're calling @@ -62,6 +67,11 @@ flow: :start-after: DOCSTART ExampleSummingFlow :end-before: DOCEND ExampleSummingFlow + .. literalinclude:: ../../docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/ExampleSummingFlow.java + :language: java + :start-after: DOCSTART ExampleSummingFlow + :end-before: DOCEND ExampleSummingFlow + That's it! Obviously this is a mostly useless example, but this is the basic code structure one could extend for heavier computations/other IO. For example the function could call into a ``CordaService`` or something similar. One thing to note is that the operation executed in ``execute`` must be redoable(= "idempotent") in case the node fails before the @@ -80,6 +90,11 @@ flow with a full node. :start-after: DOCSTART summingWorks :end-before: DOCEND summingWorks + .. literalinclude:: ../../docs/source/example-code/src/integration-test/java/net/corda/docs/java/TutorialFlowAsyncOperationTest.java + :language: java + :start-after: DOCSTART summingWorks + :end-before: DOCEND summingWorks + The above will spin up a node and run our example flow. How to debug issues @@ -94,6 +109,11 @@ Let's assume we made a mistake in our summing operation: :start-after: DOCSTART SummingOperationThrowing :end-before: DOCEND SummingOperationThrowing + .. literalinclude:: ../../docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperationThrowing.java + :language: java + :start-after: DOCSTART SummingOperationThrowing + :end-before: DOCEND SummingOperationThrowing + The operation now throws a rude exception. If we modify the example flow to use this and run the same test we will get a lot of logs about the error condition (as we are in dev mode). The interesting bit looks like this: diff --git a/docs/source/example-code/build.gradle b/docs/source/example-code/build.gradle index e45425686a..54c5ad53de 100644 --- a/docs/source/example-code/build.gradle +++ b/docs/source/example-code/build.gradle @@ -24,6 +24,11 @@ sourceSets { runtimeClasspath += main.output + test.output srcDir file('src/integration-test/kotlin') } + java { + compileClasspath += main.output + test.output + runtimeClasspath += main.output + test.output + srcDir file('src/integration-test/java') + } } } diff --git a/docs/source/example-code/src/integration-test/java/net/corda/docs/java/TutorialFlowAsyncOperationTest.java b/docs/source/example-code/src/integration-test/java/net/corda/docs/java/TutorialFlowAsyncOperationTest.java new file mode 100644 index 0000000000..410f2fcf73 --- /dev/null +++ b/docs/source/example-code/src/integration-test/java/net/corda/docs/java/TutorialFlowAsyncOperationTest.java @@ -0,0 +1,42 @@ +package net.corda.docs.java; + +import kotlin.Unit; +import net.corda.client.rpc.CordaRPCClient; +import net.corda.core.messaging.CordaRPCOps; +import net.corda.core.utilities.KotlinUtilsKt; +import net.corda.docs.java.tutorial.flowstatemachines.ExampleSummingFlow; +import net.corda.node.services.Permissions; +import net.corda.testing.driver.*; +import net.corda.testing.node.User; +import org.junit.Test; + +import java.util.Collections; +import java.util.HashSet; +import java.util.concurrent.Future; + +import static net.corda.testing.core.TestConstants.ALICE_NAME; +import static org.junit.Assert.assertEquals; + +public final class TutorialFlowAsyncOperationTest { + // DOCSTART summingWorks + @Test + public final void summingWorks() { + Driver.driver(new DriverParameters(), (DriverDSL dsl) -> { + User aliceUser = new User("aliceUser", "testPassword1", + new HashSet<>(Collections.singletonList(Permissions.all())) + ); + Future aliceFuture = dsl.startNode(new NodeParameters() + .withProvidedName(ALICE_NAME) + .withRpcUsers(Collections.singletonList(aliceUser)) + ); + NodeHandle alice = KotlinUtilsKt.getOrThrow(aliceFuture, null); + CordaRPCClient aliceClient = new CordaRPCClient(alice.getRpcAddress()); + CordaRPCOps aliceProxy = aliceClient.start("aliceUser", "testPassword1").getProxy(); + Future answerFuture = aliceProxy.startFlowDynamic(ExampleSummingFlow.class).getReturnValue(); + int answer = KotlinUtilsKt.getOrThrow(answerFuture, null); + assertEquals(3, answer); + return Unit.INSTANCE; + }); + } + // DOCEND summingWorks +} diff --git a/docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/ExampleSummingFlow.java b/docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/ExampleSummingFlow.java new file mode 100644 index 0000000000..c8e93d7025 --- /dev/null +++ b/docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/ExampleSummingFlow.java @@ -0,0 +1,19 @@ +package net.corda.docs.java.tutorial.flowstatemachines; + +import co.paralleluniverse.fibers.Suspendable; +import net.corda.core.flows.FlowLogic; +import net.corda.core.flows.StartableByRPC; +import net.corda.core.internal.FlowAsyncOperationKt; +import org.jetbrains.annotations.NotNull; + +// DOCSTART ExampleSummingFlow +@StartableByRPC +public final class ExampleSummingFlow extends FlowLogic { + @Suspendable + @NotNull + @Override + public Integer call() { + return FlowAsyncOperationKt.executeAsync(this, new SummingOperation(1, 2), false); + } +} +// DOCEND ExampleSummingFlow diff --git a/docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperation.java b/docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperation.java new file mode 100644 index 0000000000..d313fdb8ce --- /dev/null +++ b/docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperation.java @@ -0,0 +1,32 @@ +package net.corda.docs.java.tutorial.flowstatemachines; + +import net.corda.core.concurrent.CordaFuture; +import net.corda.core.internal.FlowAsyncOperation; +import net.corda.core.internal.concurrent.CordaFutureImplKt; +import org.jetbrains.annotations.NotNull; + +// DOCSTART SummingOperation +public final class SummingOperation implements FlowAsyncOperation { + private final int a; + private final int b; + + @NotNull + @Override + public CordaFuture execute() { + return CordaFutureImplKt.doneFuture(this.a + this.b); + } + + public final int getA() { + return this.a; + } + + public final int getB() { + return this.b; + } + + public SummingOperation(int a, int b) { + this.a = a; + this.b = b; + } +} +// DOCEND SummingOperation diff --git a/docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperationThrowing.java b/docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperationThrowing.java new file mode 100644 index 0000000000..1a759074b0 --- /dev/null +++ b/docs/source/example-code/src/main/java/net/corda/docs/java/tutorial/flowstatemachines/SummingOperationThrowing.java @@ -0,0 +1,31 @@ +package net.corda.docs.java.tutorial.flowstatemachines; + +import net.corda.core.concurrent.CordaFuture; +import net.corda.core.internal.FlowAsyncOperation; +import org.jetbrains.annotations.NotNull; + +// DOCSTART SummingOperationThrowing +public final class SummingOperationThrowing implements FlowAsyncOperation { + private final int a; + private final int b; + + @NotNull + @Override + public CordaFuture execute() { + throw new IllegalStateException("You shouldn't be calling me"); + } + + public final int getA() { + return this.a; + } + + public final int getB() { + return this.b; + } + + public SummingOperationThrowing(int a, int b) { + this.a = a; + this.b = b; + } +} +// DOCEND SummingOperationThrowing From 9f905da036622526e0b198b1c3e67fbbf98c6ca5 Mon Sep 17 00:00:00 2001 From: szymonsztuka Date: Mon, 16 Jul 2018 11:43:24 +0100 Subject: [PATCH 05/19] Missing upgrade notes for table change in v3.1 - related to CORDA-1804 (#3567) Document different upgrade notes for table name change from v3.0 or from v3.1/v3.2 to the current version (a table change introduced in v3.1 was not documented in upgrade notes). --- docs/source/upgrade-notes.rst | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/source/upgrade-notes.rst b/docs/source/upgrade-notes.rst index dc99a4416f..482f3d812d 100644 --- a/docs/source/upgrade-notes.rst +++ b/docs/source/upgrade-notes.rst @@ -69,7 +69,17 @@ UNRELEASED * H2 database upgrade - the table with a typo has been change, for each database instance and schema run the following SQL statement: - ALTER TABLE [schema].NODE_ATTCHMENTS_CONTRACTS RENAME TO NODE_ATTACHMENTS_CONTRACTS; + Upgrade from ``v3.0``: + + .. sourcecode:: sql + + ALTER TABLE [schema].NODE_ATTACHMENTS_CONTRACT_CLASS_NAME RENAME TO NODE_ATTACHMENTS_CONTRACTS; + + Upgrade from ``v3.1``: + + .. sourcecode:: sql + + ALTER TABLE [schema].NODE_ATTCHMENTS_CONTRACTS RENAME TO NODE_ATTACHMENTS_CONTRACTS; Schema is optional, run SQL when the node is not running. From 7e220d317dc24c176ab7576d9c070c7f94196079 Mon Sep 17 00:00:00 2001 From: Chris Rankin Date: Mon, 16 Jul 2018 12:02:19 +0100 Subject: [PATCH 06/19] CORDA-1748: Delete unwanted default parameter values from Kotlin metadata. (#3556) * Delete default parameter values from Kotlin metadata when their supporting synthetic functions disappear. * Fix conversion of class name to class descriptor. --- .../net/corda/gradle/jarfilter/Elements.kt | 39 +++++- .../gradle/jarfilter/MetaFixerTransformer.kt | 118 ++++++++++-------- .../gradle/jarfilter/MetadataTransformer.kt | 4 +- .../MetaFixConstructorDefaultParameterTest.kt | 110 ++++++++++++++++ .../jarfilter/MetaFixConstructorTest.kt | 22 ++-- .../MetaFixFunctionDefaultParameterTest.kt | 96 ++++++++++++++ .../gradle/jarfilter/MetaFixFunctionTest.kt | 18 +-- .../MetaFixPackageDefaultParameterTest.kt | 39 ++++++ .../gradle/jarfilter/MetaFixPackageTest.kt | 6 +- .../jarfilter/PackageWithDefaultParameters.kt | 12 ++ .../net/corda/gradle/jarfilter/Utilities.kt | 12 +- .../gradle/jarfilter/asm/ClassMetadata.kt | 9 +- .../template/PackageWithDefaultParameters.kt | 9 ++ 13 files changed, 413 insertions(+), 81 deletions(-) create mode 100644 buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixConstructorDefaultParameterTest.kt create mode 100644 buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixFunctionDefaultParameterTest.kt create mode 100644 buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixPackageDefaultParameterTest.kt create mode 100644 buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/PackageWithDefaultParameters.kt create mode 100644 buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/template/PackageWithDefaultParameters.kt diff --git a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/Elements.kt b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/Elements.kt index 5f49d0422a..34da8fbba5 100644 --- a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/Elements.kt +++ b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/Elements.kt @@ -13,6 +13,7 @@ import org.objectweb.asm.Opcodes.ACC_SYNTHETIC import java.util.* private const val DEFAULT_CONSTRUCTOR_MARKER = "ILkotlin/jvm/internal/DefaultConstructorMarker;" +private const val DEFAULT_FUNCTION_MARKER = "ILjava/lang/Object;" private const val DUMMY_PASSES = 1 private val DECLARES_DEFAULT_VALUE_MASK: Int = DECLARES_DEFAULT_VALUE.toFlags(true).inv() @@ -79,6 +80,30 @@ internal class FieldElement(name: String, descriptor: String = "?", val extensio val String.extensionType: String get() = substring(0, 1 + indexOf(')')) +/** + * Returns a fully-qualified class name as it would exist + * in the byte-code, e.g. as "a/b/c/ClassName$Nested". + */ +fun NameResolver.getClassInternalName(idx: Int): String + = getQualifiedClassName(idx).replace('.', '$') + +/** + * Construct the signatures of the synthetic methods that + * Kotlin would create to handle default parameter values. + */ +fun String.toKotlinDefaultConstructor(): String { + val closer = lastIndexOf(')') + return substring(0, closer) + DEFAULT_CONSTRUCTOR_MARKER + substring(closer) +} + +fun String.toKotlinDefaultFunction(classDescriptor: String): String { + val opener = indexOf('(') + val closer = lastIndexOf(')') + return (substring(0, opener) + "\$default(" + + classDescriptor + substring(opener + 1, closer) + DEFAULT_FUNCTION_MARKER + + substring(closer)) +} + /** * Convert Kotlin getter/setter method data to [MethodElement] objects. */ @@ -124,7 +149,7 @@ internal fun JvmProtoBuf.JvmPropertySignature.toFieldElement(property: ProtoBuf. } /** - * Rewrites metadata for constructor parameters. + * Rewrites metadata for function and constructor parameters. */ internal fun ProtoBuf.Constructor.Builder.updateValueParameters( updater: (ProtoBuf.ValueParameter) -> ProtoBuf.ValueParameter @@ -135,6 +160,15 @@ internal fun ProtoBuf.Constructor.Builder.updateValueParameters( return this } +internal fun ProtoBuf.Function.Builder.updateValueParameters( + updater: (ProtoBuf.ValueParameter) -> ProtoBuf.ValueParameter +): ProtoBuf.Function.Builder { + for (idx in 0 until valueParameterList.size) { + setValueParameter(idx, updater(valueParameterList[idx])) + } + return this +} + internal fun ProtoBuf.ValueParameter.clearDeclaresDefaultValue(): ProtoBuf.ValueParameter { return if (DECLARES_DEFAULT_VALUE.get(flags)) { toBuilder().setFlags(flags and DECLARES_DEFAULT_VALUE_MASK).build() @@ -142,3 +176,6 @@ internal fun ProtoBuf.ValueParameter.clearDeclaresDefaultValue(): ProtoBuf.Value this } } + +internal val List.hasAnyDefaultValues + get() = any { DECLARES_DEFAULT_VALUE.get(it.flags) } diff --git a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/MetaFixerTransformer.kt b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/MetaFixerTransformer.kt index 65988db056..f6d97c7a24 100644 --- a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/MetaFixerTransformer.kt +++ b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/MetaFixerTransformer.kt @@ -34,10 +34,11 @@ internal abstract class MetaFixerTransformer( parser: (InputStream, ExtensionRegistryLite) -> T ) { private val stringTableTypes: StringTableTypes - private val nameResolver: NameResolver + protected val nameResolver: NameResolver protected val message: T protected abstract val typeTable: TypeTable + protected open val classDescriptor: String = "" protected open val classKind: ProtoBuf.Class.Kind? = null protected abstract val properties: MutableList protected abstract val functions: MutableList @@ -78,7 +79,7 @@ internal abstract class MetaFixerTransformer( var count = 0 var idx = 0 while (idx < sealedSubclassNames.size) { - val sealedSubclassName = nameResolver.getString(sealedSubclassNames[idx]).replace('.', '$') + val sealedSubclassName = nameResolver.getClassInternalName(sealedSubclassNames[idx]) if (actualClasses.contains(sealedSubclassName)) { ++idx } else { @@ -93,15 +94,25 @@ internal abstract class MetaFixerTransformer( private fun filterFunctions(): Int { var count = 0 var idx = 0 - while (idx < functions.size) { - val signature = JvmProtoBufUtil.getJvmMethodSignature(functions[idx], nameResolver, typeTable) - if ((signature == null) || actualMethods.contains(signature)) { - ++idx - } else { - logger.info("-- removing method: {}", signature) - functions.removeAt(idx) - ++count + removed@ while (idx < functions.size) { + val function = functions[idx] + val signature = JvmProtoBufUtil.getJvmMethodSignature(function, nameResolver, typeTable) + if (signature != null) { + if (!actualMethods.contains(signature)) { + logger.info("-- removing method: {}", signature) + functions.removeAt(idx) + ++count + continue@removed + } else if (function.valueParameterList.hasAnyDefaultValues + && !actualMethods.contains(signature.toKotlinDefaultFunction(classDescriptor))) { + logger.info("-- removing default parameter values: {}", signature) + functions[idx] = function.toBuilder() + .updateValueParameters(ProtoBuf.ValueParameter::clearDeclaresDefaultValue) + .build() + ++count + } } + ++idx } return count } @@ -109,15 +120,25 @@ internal abstract class MetaFixerTransformer( private fun filterConstructors(): Int { var count = 0 var idx = 0 - while (idx < constructors.size) { - val signature = JvmProtoBufUtil.getJvmConstructorSignature(constructors[idx], nameResolver, typeTable) - if ((signature == null) || actualMethods.contains(signature)) { - ++idx - } else { - logger.info("-- removing constructor: {}", signature) - constructors.removeAt(idx) - ++count + removed@ while (idx < constructors.size) { + val constructor = constructors[idx] + val signature = JvmProtoBufUtil.getJvmConstructorSignature(constructor, nameResolver, typeTable) + if (signature != null) { + if (!actualMethods.contains(signature)) { + logger.info("-- removing constructor: {}", signature) + constructors.removeAt(idx) + ++count + continue@removed + } else if (constructor.valueParameterList.hasAnyDefaultValues + && !actualMethods.contains(signature.toKotlinDefaultConstructor())) { + logger.info("-- removing default parameter values: {}", signature) + constructors[idx] = constructor.toBuilder() + .updateValueParameters(ProtoBuf.ValueParameter::clearDeclaresDefaultValue) + .build() + ++count + } } + ++idx } return count } @@ -127,30 +148,32 @@ internal abstract class MetaFixerTransformer( var idx = 0 removed@ while (idx < properties.size) { val property = properties[idx] - val signature = property.getExtensionOrNull(propertySignature) ?: continue - val field = signature.toFieldElement(property, nameResolver, typeTable) - val getterMethod = signature.toGetter(nameResolver) + val signature = property.getExtensionOrNull(propertySignature) + if (signature != null) { + val field = signature.toFieldElement(property, nameResolver, typeTable) + val getterMethod = signature.toGetter(nameResolver) - /** - * A property annotated with [JvmField] will use a field instead of a getter method. - * But properties without [JvmField] will also usually have a backing field. So we only - * remove a property that has either lost its getter method, or never had a getter method - * and has lost its field. - * - * Having said that, we cannot remove [JvmField] properties from a companion object class - * because these properties are implemented as static fields on the companion's host class. - */ - val isValidProperty = if (getterMethod == null) { - actualFields.contains(field) || classKind == COMPANION_OBJECT - } else { - actualMethods.contains(getterMethod.name + getterMethod.descriptor) - } + /** + * A property annotated with [JvmField] will use a field instead of a getter method. + * But properties without [JvmField] will also usually have a backing field. So we only + * remove a property that has either lost its getter method, or never had a getter method + * and has lost its field. + * + * Having said that, we cannot remove [JvmField] properties from a companion object class + * because these properties are implemented as static fields on the companion's host class. + */ + val isValidProperty = if (getterMethod == null) { + actualFields.contains(field) || classKind == COMPANION_OBJECT + } else { + actualMethods.contains(getterMethod.signature) + } - if (!isValidProperty) { - logger.info("-- removing property: {},{}", field.name, field.descriptor) - properties.removeAt(idx) - ++count - continue@removed + if (!isValidProperty) { + logger.info("-- removing property: {},{}", field.name, field.descriptor) + properties.removeAt(idx) + ++count + continue@removed + } } ++idx } @@ -196,6 +219,7 @@ internal class ClassMetaFixerTransformer( ProtoBuf.Class::parseFrom ) { override val typeTable = TypeTable(message.typeTable) + override val classDescriptor = "L${nameResolver.getClassInternalName(message.fqName)};" override val classKind: ProtoBuf.Class.Kind = CLASS_KIND.get(message.flags) override val properties = mutableList(message.propertyList) override val functions = mutableList(message.functionList) @@ -204,18 +228,15 @@ internal class ClassMetaFixerTransformer( override val sealedSubclassNames= mutableList(message.sealedSubclassFqNameList) override fun rebuild(): ProtoBuf.Class = message.toBuilder().apply { + clearConstructor().addAllConstructor(constructors) + clearFunction().addAllFunction(functions) + if (nestedClassNames.size != nestedClassNameCount) { clearNestedClassName().addAllNestedClassName(nestedClassNames) } if (sealedSubclassNames.size != sealedSubclassFqNameCount) { clearSealedSubclassFqName().addAllSealedSubclassFqName(sealedSubclassNames) } - if (constructors.size != constructorCount) { - clearConstructor().addAllConstructor(constructors) - } - if (functions.size != functionCount) { - clearFunction().addAllFunction(functions) - } if (properties.size != propertyCount) { clearProperty().addAllProperty(properties) } @@ -248,9 +269,8 @@ internal class PackageMetaFixerTransformer( override val constructors = mutableListOf() override fun rebuild(): ProtoBuf.Package = message.toBuilder().apply { - if (functions.size != functionCount) { - clearFunction().addAllFunction(functions) - } + clearFunction().addAllFunction(functions) + if (properties.size != propertyCount) { clearProperty().addAllProperty(properties) } diff --git a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/MetadataTransformer.kt b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/MetadataTransformer.kt index 73d0db24ca..1701654c18 100644 --- a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/MetadataTransformer.kt +++ b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/MetadataTransformer.kt @@ -200,7 +200,7 @@ internal abstract class MetadataTransformer( var count = 0 var idx = 0 while (idx < sealedSubclassNames.size) { - val subclassName = nameResolver.getString(sealedSubclassNames[idx]).replace('.', '$') + val subclassName = nameResolver.getClassInternalName(sealedSubclassNames[idx]) if (deletedClasses.contains(subclassName)) { logger.info("-- removing sealed subclass: {}", subclassName) sealedSubclassNames.removeAt(idx) @@ -248,7 +248,7 @@ internal class ClassMetadataTransformer( ProtoBuf.Class::parseFrom ) { override val typeTable = TypeTable(message.typeTable) - override val className = nameResolver.getString(message.fqName) + override val className = nameResolver.getClassInternalName(message.fqName) override val nestedClassNames = mutableList(message.nestedClassNameList) override val sealedSubclassNames = mutableList(message.sealedSubclassFqNameList) override val properties = mutableList(message.propertyList) diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixConstructorDefaultParameterTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixConstructorDefaultParameterTest.kt new file mode 100644 index 0000000000..df36c6e08c --- /dev/null +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixConstructorDefaultParameterTest.kt @@ -0,0 +1,110 @@ +package net.corda.gradle.jarfilter + +import net.corda.gradle.jarfilter.asm.recodeMetadataFor +import net.corda.gradle.jarfilter.asm.toClass +import net.corda.gradle.jarfilter.matcher.isConstructor +import net.corda.gradle.unwanted.HasAll +import org.assertj.core.api.Assertions.* +import org.gradle.api.logging.Logger +import org.hamcrest.core.IsCollectionContaining.* +import org.junit.Assert.* +import org.junit.BeforeClass +import org.junit.Test +import kotlin.reflect.full.primaryConstructor + +class MetaFixConstructorDefaultParameterTest { + companion object { + private val logger: Logger = StdOutLogging(MetaFixConstructorDefaultParameterTest::class) + private val primaryCon + = isConstructor(WithConstructorParameters::class, Long::class, Int::class, String::class) + private val secondaryCon + = isConstructor(WithConstructorParameters::class, Char::class, String::class) + + lateinit var sourceClass: Class + lateinit var fixedClass: Class + + @BeforeClass + @JvmStatic + fun setup() { + val bytecode = recodeMetadataFor() + sourceClass = bytecode.toClass() + fixedClass = bytecode.fixMetadata(logger, pathsOf(WithConstructorParameters::class)) + .toClass() + } + } + + @Test + fun `test source constructor has optional parameters`() { + with(sourceClass.kotlin.constructors) { + assertThat(size).isEqualTo(2) + assertThat("source primary constructor missing", this, hasItem(primaryCon)) + assertThat("source secondary constructor missing", this, hasItem(secondaryCon)) + } + + val sourcePrimary = sourceClass.kotlin.primaryConstructor + ?: throw AssertionError("source primary constructor missing") + sourcePrimary.call(BIG_NUMBER, NUMBER, MESSAGE).apply { + assertThat(longData()).isEqualTo(BIG_NUMBER) + assertThat(intData()).isEqualTo(NUMBER) + assertThat(stringData()).isEqualTo(MESSAGE) + } + + val sourceSecondary = sourceClass.kotlin.constructors.firstOrNull { it != sourcePrimary } + ?: throw AssertionError("source secondary constructor missing") + sourceSecondary.call('X', MESSAGE).apply { + assertThat(stringData()).isEqualTo("X$MESSAGE") + } + + assertTrue("All source parameters should have defaults", sourcePrimary.hasAllOptionalParameters) + } + + @Test + fun `test fixed constructors exist`() { + with(fixedClass.kotlin.constructors) { + assertThat(size).isEqualTo(2) + assertThat("fixed primary constructor missing", this, hasItem(primaryCon)) + assertThat("fixed secondary constructor missing", this, hasItem(secondaryCon)) + } + } + + @Test + fun `test fixed primary constructor has mandatory parameters`() { + val fixedPrimary = fixedClass.kotlin.primaryConstructor + ?: throw AssertionError("fixed primary constructor missing") + assertTrue("All fixed parameters should be mandatory", fixedPrimary.hasAllMandatoryParameters) + } + + @Test + fun `test fixed secondary constructor still has optional parameters`() { + val fixedSecondary = (fixedClass.kotlin.constructors - fixedClass.kotlin.primaryConstructor).firstOrNull() + ?: throw AssertionError("fixed secondary constructor missing") + assertTrue("Some fixed parameters should be optional", fixedSecondary.hasAnyOptionalParameters) + } + + class MetadataTemplate( + private val longData: Long = 0, + private val intData: Int = 0, + private val message: String = DEFAULT_MESSAGE + ) : HasAll { + @Suppress("UNUSED") + constructor(prefix: Char, message: String = DEFAULT_MESSAGE) : this(message = prefix + message) + + override fun longData(): Long = longData + override fun intData(): Int = intData + override fun stringData(): String = message + } +} + +class WithConstructorParameters( + private val longData: Long, + private val intData: Int, + private val message: String +) : HasAll { + @Suppress("UNUSED") + constructor(prefix: Char, message: String = DEFAULT_MESSAGE) : this(0, 0, prefix + message) + + override fun longData(): Long = longData + override fun intData(): Int = intData + override fun stringData(): String = message +} + diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixConstructorTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixConstructorTest.kt index cbab25571a..35630a82a3 100644 --- a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixConstructorTest.kt +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixConstructorTest.kt @@ -13,14 +13,8 @@ import kotlin.jvm.kotlin class MetaFixConstructorTest { companion object { private val logger: Logger = StdOutLogging(MetaFixConstructorTest::class) - private val unwantedCon = isConstructor( - returnType = WithConstructor::class, - parameters = *arrayOf(Int::class, Long::class) - ) - private val wantedCon = isConstructor( - returnType = WithConstructor::class, - parameters = *arrayOf(Long::class) - ) + private val unwantedCon = isConstructor(WithConstructor::class, Int::class, Long::class) + private val wantedCon = isConstructor(WithConstructor::class, Long::class) } @Test @@ -32,15 +26,19 @@ class MetaFixConstructorTest { // added to the metadata, and that the class is valid. val sourceObj = sourceClass.getDeclaredConstructor(Long::class.java).newInstance(BIG_NUMBER) assertEquals(BIG_NUMBER, sourceObj.longData()) - assertThat("(Int,Long) not found", sourceClass.kotlin.constructors, hasItem(unwantedCon)) - assertThat("(Long) not found", sourceClass.kotlin.constructors, hasItem(wantedCon)) + with(sourceClass.kotlin.constructors) { + assertThat("(Int,Long) not found", this, hasItem(unwantedCon)) + assertThat("(Long) not found", this, hasItem(wantedCon)) + } // Rewrite the metadata according to the contents of the bytecode. val fixedClass = bytecode.fixMetadata(logger, pathsOf(WithConstructor::class)).toClass() val fixedObj = fixedClass.getDeclaredConstructor(Long::class.java).newInstance(BIG_NUMBER) assertEquals(BIG_NUMBER, fixedObj.longData()) - assertThat("(Int,Long) still exists", fixedClass.kotlin.constructors, not(hasItem(unwantedCon))) - assertThat("(Long) not found", fixedClass.kotlin.constructors, hasItem(wantedCon)) + with(fixedClass.kotlin.constructors) { + assertThat("(Int,Long) still exists", this, not(hasItem(unwantedCon))) + assertThat("(Long) not found", this, hasItem(wantedCon)) + } } class MetadataTemplate(private val longData: Long) : HasLong { diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixFunctionDefaultParameterTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixFunctionDefaultParameterTest.kt new file mode 100644 index 0000000000..65ed6a300f --- /dev/null +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixFunctionDefaultParameterTest.kt @@ -0,0 +1,96 @@ +package net.corda.gradle.jarfilter + +import net.corda.gradle.jarfilter.asm.recodeMetadataFor +import net.corda.gradle.jarfilter.asm.toClass +import net.corda.gradle.jarfilter.matcher.isFunction +import org.assertj.core.api.Assertions.* +import org.gradle.api.logging.Logger +import org.hamcrest.core.IsCollectionContaining.* +import org.junit.Assert.* +import org.junit.BeforeClass +import org.junit.Test +import kotlin.reflect.KFunction +import kotlin.reflect.full.declaredFunctions + +class MetaFixFunctionDefaultParameterTest { + companion object { + private val logger: Logger = StdOutLogging(MetaFixFunctionDefaultParameterTest::class) + private val hasMandatoryParams + = isFunction("hasMandatoryParams", String::class, Long::class, Int::class, String::class) + private val hasOptionalParams + = isFunction("hasOptionalParams", String::class, String::class) + + lateinit var sourceClass: Class + lateinit var fixedClass: Class + + @BeforeClass + @JvmStatic + fun setup() { + val bytecode = recodeMetadataFor() + sourceClass = bytecode.toClass() + fixedClass = bytecode.fixMetadata(logger, pathsOf(WithFunctionParameters::class)) + .toClass() + } + } + + @Test + fun `test source functions have default parameters`() { + with(sourceClass.kotlin.declaredFunctions) { + assertThat(size).isEqualTo(2) + assertThat("source mandatory parameters missing", this, hasItem(hasMandatoryParams)) + assertThat("source optional parameters missing", this, hasItem(hasOptionalParams)) + } + + val sourceUnwanted = sourceClass.kotlin.declaredFunctions.findOrFail("hasMandatoryParams") + assertThat(sourceUnwanted.call(sourceClass.newInstance(), BIG_NUMBER, NUMBER, MESSAGE)) + .isEqualTo("Long: $BIG_NUMBER, Int: $NUMBER, String: $MESSAGE") + + assertTrue("All source parameters should be optional", sourceUnwanted.hasAllOptionalParameters) + + val sourceWanted = sourceClass.kotlin.declaredFunctions.findOrFail("hasOptionalParams") + assertThat(sourceWanted.call(sourceClass.newInstance(), MESSAGE)) + .isEqualTo(MESSAGE) + + assertTrue("All source parameters should be optional", sourceWanted.hasAllOptionalParameters) + } + + @Test + fun `test fixed functions exist`() { + with(fixedClass.kotlin.declaredFunctions) { + assertThat(size).isEqualTo(2) + assertThat("fixed mandatory parameters missing", this, hasItem(hasMandatoryParams)) + assertThat("fixed optional parameters missing", this, hasItem(hasOptionalParams)) + } + } + + @Test + fun `test unwanted default parameters are removed`() { + val fixedMandatory = fixedClass.kotlin.declaredFunctions.findOrFail("hasMandatoryParams") + assertTrue("All fixed parameters should be mandatory", fixedMandatory.hasAllMandatoryParameters) + } + + @Test + fun `test wanted default parameters are kept`() { + val fixedOptional = fixedClass.kotlin.declaredFunctions.findOrFail("hasOptionalParams") + assertTrue("All fixed parameters should be optional", fixedOptional.hasAllOptionalParameters) + } + + @Suppress("UNUSED") + abstract class MetadataTemplate { + abstract fun hasMandatoryParams(longData: Long = 0, intData: Int = 0, message: String = DEFAULT_MESSAGE): String + abstract fun hasOptionalParams(message: String = DEFAULT_MESSAGE): String + } + + private fun Iterable>.findOrFail(name: String): KFunction { + return find { it.name == name } ?: throw AssertionError("$name missing") + } +} + +@Suppress("UNUSED") +class WithFunctionParameters { + fun hasMandatoryParams(longData: Long, intData: Int, message: String): String { + return "Long: $longData, Int: $intData, String: $message" + } + + fun hasOptionalParams(message: String = DEFAULT_MESSAGE): String = message +} diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixFunctionTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixFunctionTest.kt index 1f4011d84e..1aad6b1929 100644 --- a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixFunctionTest.kt +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixFunctionTest.kt @@ -15,11 +15,7 @@ class MetaFixFunctionTest { companion object { private val logger: Logger = StdOutLogging(MetaFixFunctionTest::class) private val longData = isFunction("longData", Long::class) - private val unwantedFun = isFunction( - name = "unwantedFun", - returnType = String::class, - parameters = *arrayOf(String::class) - ) + private val unwantedFun = isFunction("unwantedFun", String::class, String::class) } @Test @@ -31,15 +27,19 @@ class MetaFixFunctionTest { // added to the metadata, and that the class is valid. val sourceObj = sourceClass.newInstance() assertEquals(BIG_NUMBER, sourceObj.longData()) - assertThat("unwantedFun(String) not found", sourceClass.kotlin.declaredFunctions, hasItem(unwantedFun)) - assertThat("longData not found", sourceClass.kotlin.declaredFunctions, hasItem(longData)) + with(sourceClass.kotlin.declaredFunctions) { + assertThat("unwantedFun(String) not found", this, hasItem(unwantedFun)) + assertThat("longData not found", this, hasItem(longData)) + } // Rewrite the metadata according to the contents of the bytecode. val fixedClass = bytecode.fixMetadata(logger, pathsOf(WithFunction::class)).toClass() val fixedObj = fixedClass.newInstance() assertEquals(BIG_NUMBER, fixedObj.longData()) - assertThat("unwantedFun(String) still exists", fixedClass.kotlin.declaredFunctions, not(hasItem(unwantedFun))) - assertThat("longData not found", fixedClass.kotlin.declaredFunctions, hasItem(longData)) + with(fixedClass.kotlin.declaredFunctions) { + assertThat("unwantedFun(String) still exists", this, not(hasItem(unwantedFun))) + assertThat("longData not found", this, hasItem(longData)) + } } class MetadataTemplate : HasLong { diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixPackageDefaultParameterTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixPackageDefaultParameterTest.kt new file mode 100644 index 0000000000..74bb986fac --- /dev/null +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixPackageDefaultParameterTest.kt @@ -0,0 +1,39 @@ +package net.corda.gradle.jarfilter + +import net.corda.gradle.jarfilter.asm.metadataAs +import net.corda.gradle.jarfilter.asm.toClass +import org.gradle.api.logging.Logger +import org.junit.BeforeClass +import org.junit.Test +import kotlin.reflect.full.declaredFunctions +import kotlin.test.assertFailsWith + +/** + * These tests cannot actually "test" anything until Kotlin reflection + * supports package metadata. Until then, we can only execute the code + * paths to ensure they don't throw any exceptions. + */ +class MetaFixPackageDefaultParameterTest { + companion object { + private const val TEMPLATE_CLASS = "net.corda.gradle.jarfilter.template.PackageWithDefaultParameters" + private const val DEFAULT_PARAMETERS_CLASS = "net.corda.gradle.jarfilter.PackageWithDefaultParameters" + private val logger: Logger = StdOutLogging(MetaFixPackageDefaultParameterTest::class) + + lateinit var sourceClass: Class + lateinit var fixedClass: Class + + @BeforeClass + @JvmStatic + fun setup() { + val defaultParametersClass = Class.forName(DEFAULT_PARAMETERS_CLASS) + val bytecode = defaultParametersClass.metadataAs(Class.forName(TEMPLATE_CLASS)) + sourceClass = bytecode.toClass(defaultParametersClass, Any::class.java) + fixedClass = bytecode.fixMetadata(logger, setOf(DEFAULT_PARAMETERS_CLASS)).toClass(sourceClass, Any::class.java) + } + } + + @Test + fun `test package functions`() { + assertFailsWith { fixedClass.kotlin.declaredFunctions } + } +} diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixPackageTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixPackageTest.kt index 0ef49ac46b..37948f219b 100644 --- a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixPackageTest.kt +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/MetaFixPackageTest.kt @@ -41,21 +41,21 @@ class MetaFixPackageTest { @Test fun testPackageFunction() { - assertFailsWith { sourceClass.kotlin.declaredFunctions } + assertFailsWith { fixedClass.kotlin.declaredFunctions } //assertThat("templateFun() not found", sourceClass.kotlin.declaredFunctions, hasItem(staticFun)) //assertThat("templateFun() still exists", fixedClass.kotlin.declaredFunctions, not(hasItem(staticFun))) } @Test fun testPackageVal() { - assertFailsWith { sourceClass.kotlin.declaredMembers } + assertFailsWith { fixedClass.kotlin.declaredMembers } //assertThat("templateVal not found", sourceClass.kotlin.declaredMembers, hasItem(staticVal)) //assertThat("templateVal still exists", fixedClass.kotlin.declaredMembers, not(hasItem(staticVal))) } @Test fun testPackageVar() { - assertFailsWith { sourceClass.kotlin.declaredMembers } + assertFailsWith { fixedClass.kotlin.declaredMembers } //assertThat("templateVar not found", sourceClass.kotlin.declaredMembers, hasItem(staticVar)) //assertThat("templateVar still exists", fixedClass.kotlin.declaredMembers, not(hasItem(staticVar))) } diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/PackageWithDefaultParameters.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/PackageWithDefaultParameters.kt new file mode 100644 index 0000000000..8665cb17cd --- /dev/null +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/PackageWithDefaultParameters.kt @@ -0,0 +1,12 @@ +@file:JvmName("PackageWithDefaultParameters") +@file:Suppress("UNUSED") +package net.corda.gradle.jarfilter + +/** + * Example package functions, one with default parameter values and one without. + * We will rewrite this class's metadata so that it expects both functions to + * have default parameter values, and then ask the [MetaFixerTask] to fix it. + */ +fun hasDefaultParameters(intData: Int=0, message: String=DEFAULT_MESSAGE): String = "$message: intData=$intData" + +fun hasMandatoryParameters(longData: Long, message: String): String = "$message: longData=$longData" diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/Utilities.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/Utilities.kt index b27809b5db..443d2a3ef0 100644 --- a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/Utilities.kt +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/Utilities.kt @@ -16,6 +16,7 @@ import java.util.zip.ZipFile import kotlin.reflect.KClass import kotlin.reflect.KFunction import kotlin.reflect.KParameter +import kotlin.reflect.full.valueParameters const val DEFAULT_MESSAGE = "" const val MESSAGE = "Goodbye, Cruel World!" @@ -67,8 +68,17 @@ fun arrayOfJunk(size: Int) = ByteArray(size).apply { } } +val KFunction<*>.hasAnyOptionalParameters: Boolean + get() = valueParameters.any(KParameter::isOptional) + +val KFunction<*>.hasAllOptionalParameters: Boolean + get() = valueParameters.all(KParameter::isOptional) + +val KFunction<*>.hasAllMandatoryParameters: Boolean + get() = valueParameters.none(KParameter::isOptional) + val KClass.noArgConstructor: KFunction? - get() = constructors.firstOrNull { it.parameters.all(KParameter::isOptional) } + get() = constructors.firstOrNull(KFunction<*>::hasAllOptionalParameters) @Throws(MalformedURLException::class) fun classLoaderFor(jar: Path) = URLClassLoader(arrayOf(jar.toUri().toURL()), classLoader) diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/asm/ClassMetadata.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/asm/ClassMetadata.kt index b4852deaa7..313a562f05 100644 --- a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/asm/ClassMetadata.kt +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/asm/ClassMetadata.kt @@ -1,6 +1,7 @@ package net.corda.gradle.jarfilter.asm import net.corda.gradle.jarfilter.MetadataTransformer +import net.corda.gradle.jarfilter.getClassInternalName import net.corda.gradle.jarfilter.toPackageFormat import net.corda.gradle.jarfilter.mutableList import org.gradle.api.logging.Logger @@ -24,7 +25,7 @@ internal class ClassMetadata( ProtoBuf.Class::parseFrom ) { override val typeTable = TypeTable(message.typeTable) - override val className = nameResolver.getString(message.fqName) + override val className = nameResolver.getClassInternalName(message.fqName) override val nestedClassNames = mutableList(message.nestedClassNameList) override val properties = mutableList(message.propertyList) override val functions = mutableList(message.functionList) @@ -35,13 +36,13 @@ internal class ClassMetadata( override fun rebuild(): ProtoBuf.Class = message val sealedSubclasses: List = sealedSubclassNames.map { - // Transform "a/b/c/BaseName.SubclassName" -> "a.b.c.BaseName$SubclassName" - nameResolver.getString(it).replace('.', '$').toPackageFormat }.toList() + // Transform "a/b/c/BaseName$SubclassName" -> "a.b.c.BaseName$SubclassName" + nameResolver.getClassInternalName(it).toPackageFormat }.toList() val nestedClasses: List init { val internalClassName = className.toPackageFormat - nestedClasses = nestedClassNames.map { "$internalClassName\$${nameResolver.getString(it)}" }.toList() + nestedClasses = nestedClassNames.map { "$internalClassName\$${nameResolver.getClassInternalName(it)}" }.toList() } } diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/template/PackageWithDefaultParameters.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/template/PackageWithDefaultParameters.kt new file mode 100644 index 0000000000..186c1eb634 --- /dev/null +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/template/PackageWithDefaultParameters.kt @@ -0,0 +1,9 @@ +@file:JvmName("PackageWithDefaultParameters") +@file:Suppress("UNUSED") +package net.corda.gradle.jarfilter.template + +import net.corda.gradle.jarfilter.DEFAULT_MESSAGE + +fun hasDefaultParameters(intData: Int=0, message: String=DEFAULT_MESSAGE): String = "$message: intData=$intData" + +fun hasMandatoryParameters(longData: Long=0, message: String=DEFAULT_MESSAGE): String = "$message: longData=$longData" From d672cba8777e754622e8fb659f5d164b2e9a67bc Mon Sep 17 00:00:00 2001 From: Chris Rankin Date: Mon, 16 Jul 2018 12:03:00 +0100 Subject: [PATCH 07/19] CORDA-1785: Update JarFilter to delete classes whose outer class or enclosing method is removed. (#3562) --- .../net/corda/gradle/jarfilter/Elements.kt | 6 +- .../gradle/jarfilter/FilterTransformer.kt | 25 +++--- .../corda/gradle/jarfilter/JarFilterTask.kt | 4 +- .../corda/gradle/jarfilter/UnwantedCache.kt | 46 ++++++++++ .../gradle/jarfilter/DeleteInnerLambdaTest.kt | 84 +++++++++++++++++++ .../gradle/jarfilter/FieldRemovalTest.kt | 2 +- .../jarfilter/StaticFieldRemovalTest.kt | 2 +- .../gradle/jarfilter/UnwantedCacheTest.kt | 54 ++++++++++++ .../delete-inner-lambda/build.gradle | 33 ++++++++ .../kotlin/net/corda/gradle/HasInnerLambda.kt | 19 +++++ 10 files changed, 257 insertions(+), 18 deletions(-) create mode 100644 buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/UnwantedCache.kt create mode 100644 buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/DeleteInnerLambdaTest.kt create mode 100644 buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/UnwantedCacheTest.kt create mode 100644 buildSrc/jarfilter/src/test/resources/delete-inner-lambda/build.gradle create mode 100644 buildSrc/jarfilter/src/test/resources/delete-inner-lambda/kotlin/net/corda/gradle/HasInnerLambda.kt diff --git a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/Elements.kt b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/Elements.kt index 34da8fbba5..17810136a8 100644 --- a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/Elements.kt +++ b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/Elements.kt @@ -18,14 +18,14 @@ private const val DUMMY_PASSES = 1 private val DECLARES_DEFAULT_VALUE_MASK: Int = DECLARES_DEFAULT_VALUE.toFlags(true).inv() -internal abstract class Element(val name: String, val descriptor: String) { +abstract class Element(val name: String, val descriptor: String) { private var lifetime: Int = DUMMY_PASSES open val isExpired: Boolean get() = --lifetime < 0 } -internal class MethodElement(name: String, descriptor: String, val access: Int = 0) : Element(name, descriptor) { +class MethodElement(name: String, descriptor: String, val access: Int = 0) : Element(name, descriptor) { override fun equals(other: Any?): Boolean { if (this === other) return true if (other?.javaClass != javaClass) return false @@ -66,7 +66,7 @@ internal class MethodElement(name: String, descriptor: String, val access: Int = * A class cannot have two fields with the same name but different types. However, * it can define extension functions and properties. */ -internal class FieldElement(name: String, descriptor: String = "?", val extension: String = "()") : Element(name, descriptor) { +class FieldElement(name: String, descriptor: String = "?", val extension: String = "()") : Element(name, descriptor) { override fun equals(other: Any?): Boolean { if (this === other) return true if (other?.javaClass != javaClass) return false diff --git a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/FilterTransformer.kt b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/FilterTransformer.kt index e6e2089381..164f3bf5d7 100644 --- a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/FilterTransformer.kt +++ b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/FilterTransformer.kt @@ -22,7 +22,7 @@ class FilterTransformer private constructor ( private val removeAnnotations: Set, private val deleteAnnotations: Set, private val stubAnnotations: Set, - private val unwantedClasses: MutableSet, + private val unwantedElements: UnwantedCache, private val unwantedFields: MutableSet, private val deletedMethods: MutableSet, private val stubbedMethods: MutableSet @@ -33,7 +33,7 @@ class FilterTransformer private constructor ( removeAnnotations: Set, deleteAnnotations: Set, stubAnnotations: Set, - unwantedClasses: MutableSet + unwantedElements: UnwantedCache ) : this( visitor = visitor, logger = logger, @@ -41,7 +41,7 @@ class FilterTransformer private constructor ( removeAnnotations = removeAnnotations, deleteAnnotations = deleteAnnotations, stubAnnotations = stubAnnotations, - unwantedClasses = unwantedClasses, + unwantedElements = unwantedElements, unwantedFields = mutableSetOf(), deletedMethods = mutableSetOf(), stubbedMethods = mutableSetOf() @@ -57,7 +57,7 @@ class FilterTransformer private constructor ( || stubbedMethods.isNotEmpty() || super.hasUnwantedElements - private fun isUnwantedClass(name: String): Boolean = unwantedClasses.contains(name) + private fun isUnwantedClass(name: String): Boolean = unwantedElements.containsClass(name) private fun hasDeletedSyntheticMethod(name: String): Boolean = deletedMethods.any { method -> name.startsWith("$className\$${method.visibleName}\$") } @@ -69,7 +69,7 @@ class FilterTransformer private constructor ( removeAnnotations = removeAnnotations, deleteAnnotations = deleteAnnotations, stubAnnotations = stubAnnotations, - unwantedClasses = unwantedClasses, + unwantedElements = unwantedElements, unwantedFields = unwantedFields, deletedMethods = deletedMethods, stubbedMethods = stubbedMethods @@ -86,7 +86,7 @@ class FilterTransformer private constructor ( logger.info("- Removing annotation {}", descriptor) return null } else if (deleteAnnotations.contains(descriptor)) { - if (unwantedClasses.add(className)) { + if (unwantedElements.addClass(className)) { logger.info("- Identified class {} as unwanted", className) } } @@ -110,6 +110,7 @@ class FilterTransformer private constructor ( logger.debug("--- method ---> {}", method) if (deletedMethods.contains(method)) { logger.info("- Deleted method {}{}", method.name, method.descriptor) + unwantedElements.addMethod(className, method) deletedMethods.remove(method) return null } @@ -131,7 +132,7 @@ class FilterTransformer private constructor ( override fun visitInnerClass(clsName: String, outerName: String?, innerName: String?, access: Int) { logger.debug("--- inner class {} [outer: {}, inner: {}]", clsName, outerName, innerName) if (isUnwantedClass || hasDeletedSyntheticMethod(clsName)) { - if (unwantedClasses.add(clsName)) { + if (unwantedElements.addClass(clsName)) { logger.info("- Deleted inner class {}", clsName) } } else if (isUnwantedClass(clsName)) { @@ -143,8 +144,10 @@ class FilterTransformer private constructor ( override fun visitOuterClass(outerName: String, methodName: String?, methodDescriptor: String?) { logger.debug("--- outer class {} [enclosing method {},{}]", outerName, methodName, methodDescriptor) - if (isUnwantedClass(outerName)) { - logger.info("- Deleted reference to outer class {}", outerName) + if (unwantedElements.containsMethod(outerName, methodName, methodDescriptor)) { + if (unwantedElements.addClass(className)) { + logger.info("- Identified class {} as unwanted by its outer class", className) + } } else { super.visitOuterClass(outerName, methodName, methodDescriptor) } @@ -180,8 +183,8 @@ class FilterTransformer private constructor ( deletedFields = unwantedFields, deletedFunctions = partitioned[false] ?: emptyList(), deletedConstructors = partitioned[true] ?: emptyList(), - deletedNestedClasses = unwantedClasses.filter { it.startsWith(prefix) }.map { it.drop(prefix.length) }, - deletedClasses = unwantedClasses, + deletedNestedClasses = unwantedElements.classes.filter { it.startsWith(prefix) }.map { it.drop(prefix.length) }, + deletedClasses = unwantedElements.classes, handleExtraMethod = ::delete, d1 = d1, d2 = d2) diff --git a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/JarFilterTask.kt b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/JarFilterTask.kt index 1d0c99f4cc..78100b2613 100644 --- a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/JarFilterTask.kt +++ b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/JarFilterTask.kt @@ -138,7 +138,7 @@ open class JarFilterTask : DefaultTask() { } private inner class Filter(inFile: File) { - private val unwantedClasses: MutableSet = mutableSetOf() + private val unwantedElements = UnwantedCache() private val source: Path = inFile.toPath() private val target: Path = toFiltered(inFile).toPath() @@ -251,7 +251,7 @@ open class JarFilterTask : DefaultTask() { removeAnnotations = descriptorsForRemove, deleteAnnotations = descriptorsForDelete, stubAnnotations = descriptorsForStub, - unwantedClasses = unwantedClasses + unwantedElements = unwantedElements ) /* diff --git a/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/UnwantedCache.kt b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/UnwantedCache.kt new file mode 100644 index 0000000000..5a8d28bc73 --- /dev/null +++ b/buildSrc/jarfilter/src/main/kotlin/net/corda/gradle/jarfilter/UnwantedCache.kt @@ -0,0 +1,46 @@ +package net.corda.gradle.jarfilter + +import java.util.Collections.unmodifiableMap + +/** + * A persistent cache of all of the classes and methods that JarFilter has + * removed. This cache belongs to the Gradle task itself and so is shared + * by successive filter passes. + * + * The internal method cache is only required for those classes which are + * being kept. When an entire class is declared as "unwanted", any entry + * it may have in the method cache is removed. + */ +class UnwantedCache { + private val _classes: MutableSet = mutableSetOf() + private val _classMethods: MutableMap> = mutableMapOf() + + val classes: Set get() = _classes + val classMethods: Map> get() = unmodifiableMap(_classMethods) + + fun containsClass(className: String): Boolean = _classes.contains(className) + + fun addClass(className: String): Boolean { + return _classes.add(className).also { isAdded -> + if (isAdded) { + _classMethods.remove(className) + } + } + } + + fun addMethod(className: String, method: MethodElement) { + if (!containsClass(className)) { + _classMethods.getOrPut(className) { mutableSetOf() }.add(method) + } + } + + private fun containsMethod(className: String, method: MethodElement): Boolean { + return _classMethods[className]?.contains(method) ?: false + } + + fun containsMethod(className: String, methodName: String?, methodDescriptor: String?): Boolean { + return containsClass(className) || + (methodName != null && methodDescriptor != null && containsMethod(className, MethodElement(methodName, methodDescriptor))) + } +} + diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/DeleteInnerLambdaTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/DeleteInnerLambdaTest.kt new file mode 100644 index 0000000000..14f1f4edc9 --- /dev/null +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/DeleteInnerLambdaTest.kt @@ -0,0 +1,84 @@ +package net.corda.gradle.jarfilter + +import net.corda.gradle.jarfilter.matcher.isConstructor +import net.corda.gradle.unwanted.HasInt +import org.assertj.core.api.Assertions.assertThat +import org.hamcrest.core.IsCollectionContaining.* +import org.hamcrest.core.IsNot.* +import org.junit.Assert.* +import org.junit.BeforeClass +import org.junit.ClassRule +import org.junit.Test +import org.junit.rules.RuleChain +import org.junit.rules.TemporaryFolder +import org.junit.rules.TestRule +import kotlin.test.assertFailsWith + +class DeleteInnerLambdaTest { + companion object { + private const val LAMBDA_CLASS = "net.corda.gradle.HasInnerLambda" + private const val SIZE = 64 + + private val testProjectDir = TemporaryFolder() + private val testProject = JarFilterProject(testProjectDir, "delete-inner-lambda") + private val constructInt = isConstructor(LAMBDA_CLASS, Int::class) + private val constructBytes = isConstructor(LAMBDA_CLASS, ByteArray::class) + + private lateinit var sourceClasses: List + private lateinit var filteredClasses: List + + @ClassRule + @JvmField + val rules: TestRule = RuleChain + .outerRule(testProjectDir) + .around(testProject) + + @BeforeClass + @JvmStatic + fun setup() { + sourceClasses = testProject.sourceJar.getClassNames(LAMBDA_CLASS) + filteredClasses = testProject.filteredJar.getClassNames(LAMBDA_CLASS) + } + } + + @Test + fun `test lambda class is deleted`() { + assertThat(sourceClasses) + .contains(LAMBDA_CLASS) + .hasSize(2) + assertThat(filteredClasses).containsExactly(LAMBDA_CLASS) + } + + @Test + fun `test host class`() { + classLoaderFor(testProject.sourceJar).use { cl -> + cl.load(LAMBDA_CLASS).apply { + getConstructor(Int::class.java).newInstance(SIZE).also { obj -> + assertEquals(SIZE, obj.intData()) + } + kotlin.constructors.also { ctors -> + assertThat("(Int) not found", ctors, hasItem(constructInt)) + assertThat("(byte[]) not found", ctors, hasItem(constructBytes)) + } + + getConstructor(ByteArray::class.java).newInstance(ByteArray(SIZE)).also { obj -> + assertEquals(SIZE, obj.intData()) + } + } + } + + classLoaderFor(testProject.filteredJar).use { cl -> + cl.load(LAMBDA_CLASS).apply { + assertFailsWith { getConstructor(Int::class.java) } + kotlin.constructors.also { ctors -> + assertThat("(Int) still exists", ctors, not(hasItem(constructInt))) + assertThat("(byte[]) not found", ctors, hasItem(constructBytes)) + } + + getConstructor(ByteArray::class.java).newInstance(ByteArray(SIZE)).also { obj -> + assertEquals(SIZE, obj.intData()) + } + } + } + } +} \ No newline at end of file diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/FieldRemovalTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/FieldRemovalTest.kt index a6cfdb6a8c..9e99d4e470 100644 --- a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/FieldRemovalTest.kt +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/FieldRemovalTest.kt @@ -52,7 +52,7 @@ class FieldRemovalTest { removeAnnotations = emptySet(), deleteAnnotations = setOf(Deletable::class.jvmName.descriptor), stubAnnotations = emptySet(), - unwantedClasses = mutableSetOf() + unwantedElements = UnwantedCache() ) }, COMPUTE_MAXS) return bytecode.toClass(type, asType) diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/StaticFieldRemovalTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/StaticFieldRemovalTest.kt index 83ef0258ba..e174ed147a 100644 --- a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/StaticFieldRemovalTest.kt +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/StaticFieldRemovalTest.kt @@ -34,7 +34,7 @@ class StaticFieldRemovalTest { removeAnnotations = emptySet(), deleteAnnotations = setOf(Deletable::class.jvmName.descriptor), stubAnnotations = emptySet(), - unwantedClasses = mutableSetOf() + unwantedElements = UnwantedCache() ) }, COMPUTE_MAXS) return bytecode.toClass(type, asType) diff --git a/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/UnwantedCacheTest.kt b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/UnwantedCacheTest.kt new file mode 100644 index 0000000000..53abf1de1b --- /dev/null +++ b/buildSrc/jarfilter/src/test/kotlin/net/corda/gradle/jarfilter/UnwantedCacheTest.kt @@ -0,0 +1,54 @@ +package net.corda.gradle.jarfilter + +import org.junit.Assert.* +import org.junit.Before +import org.junit.Test + +class UnwantedCacheTest { + private companion object { + private const val CLASS_NAME = "org.testing.MyClass" + private const val LONG_ARG = "(J)V" + private const val NO_ARG = "()V" + } + + private lateinit var cache: UnwantedCache + + @Before + fun setup() { + cache = UnwantedCache() + } + + @Test + fun testEmptyCache() { + assertFalse(cache.containsClass(CLASS_NAME)) + assertFalse(cache.containsMethod(CLASS_NAME, null, null)) + assertFalse(cache.containsMethod(CLASS_NAME, "", NO_ARG)) + } + + @Test + fun testAddingClass() { + cache.addClass(CLASS_NAME) + assertTrue(cache.containsClass(CLASS_NAME)) + assertTrue(cache.containsMethod(CLASS_NAME, null, null)) + assertTrue(cache.containsMethod(CLASS_NAME, "", NO_ARG)) + } + + @Test + fun testAddingMethod() { + cache.addMethod(CLASS_NAME, MethodElement("", LONG_ARG)) + assertTrue(cache.containsMethod(CLASS_NAME, "", LONG_ARG)) + assertFalse(cache.containsMethod(CLASS_NAME, "", NO_ARG)) + assertFalse(cache.containsMethod(CLASS_NAME, "destroy", LONG_ARG)) + assertFalse(cache.containsMethod(CLASS_NAME, null, null)) + assertFalse(cache.containsMethod(CLASS_NAME, "nonsense", null)) + assertFalse(cache.containsClass(CLASS_NAME)) + } + + @Test + fun testAddingMethodFollowedByClass() { + cache.addMethod(CLASS_NAME, MethodElement("", LONG_ARG)) + cache.addClass(CLASS_NAME) + assertTrue(cache.containsMethod(CLASS_NAME, "", LONG_ARG)) + assertEquals(0, cache.classMethods.size) + } +} \ No newline at end of file diff --git a/buildSrc/jarfilter/src/test/resources/delete-inner-lambda/build.gradle b/buildSrc/jarfilter/src/test/resources/delete-inner-lambda/build.gradle new file mode 100644 index 0000000000..f5725b6e52 --- /dev/null +++ b/buildSrc/jarfilter/src/test/resources/delete-inner-lambda/build.gradle @@ -0,0 +1,33 @@ +plugins { + id 'org.jetbrains.kotlin.jvm' version '$kotlin_version' + id 'net.corda.plugins.jar-filter' +} +apply from: 'repositories.gradle' + +sourceSets { + main { + kotlin { + srcDir files( + '../resources/test/delete-inner-lambda/kotlin', + '../resources/test/annotations/kotlin' + ) + } + } +} + +dependencies { + compile 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' + compileOnly files('../../unwanteds/build/libs/unwanteds.jar') +} + +jar { + baseName = 'delete-inner-lambda' +} + +import net.corda.gradle.jarfilter.JarFilterTask +task jarFilter(type: JarFilterTask) { + jars jar + annotations { + forDelete = ["net.corda.gradle.jarfilter.DeleteMe"] + } +} diff --git a/buildSrc/jarfilter/src/test/resources/delete-inner-lambda/kotlin/net/corda/gradle/HasInnerLambda.kt b/buildSrc/jarfilter/src/test/resources/delete-inner-lambda/kotlin/net/corda/gradle/HasInnerLambda.kt new file mode 100644 index 0000000000..774ebb80d6 --- /dev/null +++ b/buildSrc/jarfilter/src/test/resources/delete-inner-lambda/kotlin/net/corda/gradle/HasInnerLambda.kt @@ -0,0 +1,19 @@ +@file:Suppress("UNUSED") +package net.corda.gradle + +import net.corda.gradle.jarfilter.DeleteMe +import net.corda.gradle.unwanted.HasInt + +class HasInnerLambda(private val bytes: ByteArray) : HasInt { + @DeleteMe + constructor(size: Int) : this(ZeroArray { size }.bytes) + + override fun intData() = bytes.size +} + +/** + * Do NOT inline this lambda! + */ +class ZeroArray(initialSize: () -> Int) { + val bytes: ByteArray = ByteArray(initialSize()) { 0 } +} From ca56f6bd33e45ce3992142ad2e87619ff369d008 Mon Sep 17 00:00:00 2001 From: Shams Asari Date: Mon, 16 Jul 2018 13:14:57 +0100 Subject: [PATCH 08/19] Fixed out-of-date integration testing tutorial and added Java example (#3596) --- .../docs/JavaIntegrationTestingTutorial.java | 124 +++++++++++ .../corda/docs/IntegrationTestingTutorial.kt | 114 ---------- .../docs/KotlinIntegrationTestingTutorial.kt | 97 +++++++++ docs/source/tutorial-integration-testing.rst | 197 +++++++++--------- 4 files changed, 324 insertions(+), 208 deletions(-) create mode 100644 docs/source/example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java delete mode 100644 docs/source/example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt create mode 100644 docs/source/example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt diff --git a/docs/source/example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java b/docs/source/example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java new file mode 100644 index 0000000000..912a996537 --- /dev/null +++ b/docs/source/example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java @@ -0,0 +1,124 @@ +package net.corda.docs; + +import net.corda.client.rpc.CordaRPCClient; +import net.corda.core.concurrent.CordaFuture; +import net.corda.core.contracts.Amount; +import net.corda.core.contracts.Issued; +import net.corda.core.contracts.Structures; +import net.corda.core.messaging.CordaRPCOps; +import net.corda.core.node.services.Vault; +import net.corda.core.utilities.OpaqueBytes; +import net.corda.finance.contracts.asset.Cash; +import net.corda.finance.flows.CashIssueAndPaymentFlow; +import net.corda.finance.flows.CashPaymentFlow; +import net.corda.testing.driver.DriverParameters; +import net.corda.testing.driver.NodeHandle; +import net.corda.testing.driver.NodeParameters; +import net.corda.testing.node.User; +import org.junit.Test; +import rx.Observable; + +import java.util.Currency; +import java.util.HashSet; +import java.util.List; + +import static java.util.Arrays.asList; +import static java.util.Collections.singletonList; +import static net.corda.finance.Currencies.DOLLARS; +import static net.corda.node.services.Permissions.invokeRpc; +import static net.corda.node.services.Permissions.startFlow; +import static net.corda.testing.core.ExpectKt.expect; +import static net.corda.testing.core.ExpectKt.expectEvents; +import static net.corda.testing.core.TestConstants.ALICE_NAME; +import static net.corda.testing.core.TestConstants.BOB_NAME; +import static net.corda.testing.driver.Driver.driver; +import static org.junit.Assert.assertEquals; + +public class JavaIntegrationTestingTutorial { + @Test + public void aliceBobCashExchangeExample() { + // START 1 + driver(new DriverParameters() + .withStartNodesInProcess(true) + .withExtraCordappPackagesToScan(singletonList("net.corda.finance.contracts.asset")), dsl -> { + + User aliceUser = new User("aliceUser", "testPassword1", new HashSet<>(asList( + startFlow(CashIssueAndPaymentFlow.class), + invokeRpc("vaultTrack") + ))); + + User bobUser = new User("bobUser", "testPassword2", new HashSet<>(asList( + startFlow(CashPaymentFlow.class), + invokeRpc("vaultTrack") + ))); + + try { + List> nodeHandleFutures = asList( + dsl.startNode(new NodeParameters().withProvidedName(ALICE_NAME).withRpcUsers(singletonList(aliceUser))), + dsl.startNode(new NodeParameters().withProvidedName(BOB_NAME).withRpcUsers(singletonList(bobUser))) + ); + + NodeHandle alice = nodeHandleFutures.get(0).get(); + NodeHandle bob = nodeHandleFutures.get(1).get(); + // END 1 + + // START 2 + CordaRPCClient aliceClient = new CordaRPCClient(alice.getRpcAddress()); + CordaRPCOps aliceProxy = aliceClient.start("aliceUser", "testPassword1").getProxy(); + + CordaRPCClient bobClient = new CordaRPCClient(bob.getRpcAddress()); + CordaRPCOps bobProxy = bobClient.start("bobUser", "testPassword2").getProxy(); + // END 2 + + // START 3 + Observable> bobVaultUpdates = bobProxy.vaultTrack(Cash.State.class).getUpdates(); + Observable> aliceVaultUpdates = aliceProxy.vaultTrack(Cash.State.class).getUpdates(); + // END 3 + + // START 4 + OpaqueBytes issueRef = OpaqueBytes.of((byte)0); + aliceProxy.startFlowDynamic( + CashIssueAndPaymentFlow.class, + DOLLARS(1000), + issueRef, + bob.getNodeInfo().getLegalIdentities().get(0), + true, + dsl.getDefaultNotaryIdentity() + ).getReturnValue().get(); + + @SuppressWarnings("unchecked") + Class> cashVaultUpdateClass = (Class>)(Class)Vault.Update.class; + + expectEvents(bobVaultUpdates, true, () -> + expect(cashVaultUpdateClass, update -> true, update -> { + System.out.println("Bob got vault update of " + update); + Amount> amount = update.getProduced().iterator().next().getState().getData().getAmount(); + assertEquals(DOLLARS(1000), Structures.withoutIssuer(amount)); + return null; + }) + ); + // END 4 + + // START 5 + bobProxy.startFlowDynamic( + CashPaymentFlow.class, + DOLLARS(1000), + alice.getNodeInfo().getLegalIdentities().get(0) + ).getReturnValue().get(); + + expectEvents(aliceVaultUpdates, true, () -> + expect(cashVaultUpdateClass, update -> true, update -> { + System.out.println("Alice got vault update of " + update); + Amount> amount = update.getProduced().iterator().next().getState().getData().getAmount(); + assertEquals(DOLLARS(1000), Structures.withoutIssuer(amount)); + return null; + }) + ); + // END 5 + } catch (Exception e) { + throw new RuntimeException("Exception thrown in driver DSL", e); + } + return null; + }); + } +} diff --git a/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt b/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt deleted file mode 100644 index 375a13c3b6..0000000000 --- a/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt +++ /dev/null @@ -1,114 +0,0 @@ -package net.corda.docs - -import net.corda.client.rpc.CordaRPCClient -import net.corda.core.internal.concurrent.transpose -import net.corda.core.messaging.CordaRPCOps -import net.corda.core.messaging.startFlow -import net.corda.core.messaging.vaultTrackBy -import net.corda.core.node.services.Vault -import net.corda.core.utilities.OpaqueBytes -import net.corda.core.utilities.getOrThrow -import net.corda.finance.DOLLARS -import net.corda.finance.contracts.asset.Cash -import net.corda.finance.flows.CashIssueFlow -import net.corda.finance.flows.CashPaymentFlow -import net.corda.node.services.Permissions.Companion.invokeRpc -import net.corda.node.services.Permissions.Companion.startFlow -import net.corda.testing.core.* -import net.corda.testing.driver.DriverParameters -import net.corda.testing.driver.driver -import net.corda.testing.node.User -import org.junit.Test -import kotlin.test.assertEquals - -class IntegrationTestingTutorial { - @Test - fun `alice bob cash exchange example`() { - // START 1 - driver(DriverParameters(startNodesInProcess = true, - extraCordappPackagesToScan = listOf("net.corda.finance.contracts.asset"))) { - val aliceUser = User("aliceUser", "testPassword1", permissions = setOf( - startFlow(), - startFlow(), - invokeRpc("vaultTrackBy"), - invokeRpc(CordaRPCOps::notaryIdentities), - invokeRpc(CordaRPCOps::networkMapFeed) - )) - val bobUser = User("bobUser", "testPassword2", permissions = setOf( - startFlow(), - invokeRpc("vaultTrackBy"), - invokeRpc(CordaRPCOps::networkMapFeed) - )) - val (alice, bob) = listOf( - startNode(providedName = ALICE_NAME, rpcUsers = listOf(aliceUser)), - startNode(providedName = BOB_NAME, rpcUsers = listOf(bobUser)) - ).transpose().getOrThrow() - - // END 1 - - // START 2 - val aliceClient = CordaRPCClient(alice.rpcAddress) - val aliceProxy = aliceClient.start("aliceUser", "testPassword1").proxy - - val bobClient = CordaRPCClient(bob.rpcAddress) - val bobProxy = bobClient.start("bobUser", "testPassword2").proxy - // END 2 - - // START 3 - val bobVaultUpdates = bobProxy.vaultTrackBy().updates - val aliceVaultUpdates = aliceProxy.vaultTrackBy().updates - // END 3 - - // START 4 - val issueRef = OpaqueBytes.of(0) - val notaryParty = aliceProxy.notaryIdentities().first() - (1..10).map { i -> - aliceProxy.startFlow(::CashIssueFlow, - i.DOLLARS, - issueRef, - notaryParty - ).returnValue - }.transpose().getOrThrow() - // We wait for all of the issuances to run before we start making payments - (1..10).map { i -> - aliceProxy.startFlow(::CashPaymentFlow, - i.DOLLARS, - bob.nodeInfo.singleIdentity(), - true - ).returnValue - }.transpose().getOrThrow() - - bobVaultUpdates.expectEvents { - parallel( - (1..10).map { i -> - expect( - match = { update: Vault.Update -> - update.produced.first().state.data.amount.quantity == i * 100L - } - ) { update -> - println("Bob vault update of $update") - } - } - ) - } - // END 4 - - // START 5 - for (i in 1..10) { - bobProxy.startFlow(::CashPaymentFlow, i.DOLLARS, alice.nodeInfo.singleIdentity()).returnValue.getOrThrow() - } - - aliceVaultUpdates.expectEvents { - sequence( - (1..10).map { i -> - expect { update: Vault.Update -> - println("Alice got vault update of $update") - assertEquals(update.produced.first().state.data.amount.quantity, i * 100L) - } - } - ) - } - // END 5 - } - } -} \ No newline at end of file diff --git a/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt b/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt new file mode 100644 index 0000000000..ee017c77a7 --- /dev/null +++ b/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt @@ -0,0 +1,97 @@ +package net.corda.docs + +import net.corda.client.rpc.CordaRPCClient +import net.corda.core.contracts.Amount +import net.corda.core.contracts.Issued +import net.corda.core.contracts.withoutIssuer +import net.corda.core.messaging.CordaRPCOps +import net.corda.core.messaging.startFlow +import net.corda.core.messaging.vaultTrackBy +import net.corda.core.node.services.Vault +import net.corda.core.utilities.OpaqueBytes +import net.corda.core.utilities.getOrThrow +import net.corda.finance.DOLLARS +import net.corda.finance.contracts.asset.Cash +import net.corda.finance.flows.CashIssueAndPaymentFlow +import net.corda.finance.flows.CashPaymentFlow +import net.corda.node.services.Permissions.Companion.invokeRpc +import net.corda.node.services.Permissions.Companion.startFlow +import net.corda.testing.core.* +import net.corda.testing.driver.DriverParameters +import net.corda.testing.driver.driver +import net.corda.testing.node.User +import org.junit.Test +import rx.Observable +import java.util.* +import kotlin.test.assertEquals + +class KotlinIntegrationTestingTutorial { + @Test + fun `alice bob cash exchange example`() { + // START 1 + driver(DriverParameters( + startNodesInProcess = true, + extraCordappPackagesToScan = listOf("net.corda.finance.contracts.asset") + )) { + val aliceUser = User("aliceUser", "testPassword1", permissions = setOf( + startFlow(), + invokeRpc("vaultTrackBy") + )) + + val bobUser = User("bobUser", "testPassword2", permissions = setOf( + startFlow(), + invokeRpc("vaultTrackBy") + )) + + val (alice, bob) = listOf( + startNode(providedName = ALICE_NAME, rpcUsers = listOf(aliceUser)), + startNode(providedName = BOB_NAME, rpcUsers = listOf(bobUser)) + ).map { it.getOrThrow() } + // END 1 + + // START 2 + val aliceClient = CordaRPCClient(alice.rpcAddress) + val aliceProxy: CordaRPCOps = aliceClient.start("aliceUser", "testPassword1").proxy + + val bobClient = CordaRPCClient(bob.rpcAddress) + val bobProxy: CordaRPCOps = bobClient.start("bobUser", "testPassword2").proxy + // END 2 + + // START 3 + val bobVaultUpdates: Observable> = bobProxy.vaultTrackBy().updates + val aliceVaultUpdates: Observable> = aliceProxy.vaultTrackBy().updates + // END 3 + + // START 4 + val issueRef = OpaqueBytes.of(0) + aliceProxy.startFlow(::CashIssueAndPaymentFlow, + 1000.DOLLARS, + issueRef, + bob.nodeInfo.singleIdentity(), + true, + defaultNotaryIdentity + ).returnValue.getOrThrow() + + bobVaultUpdates.expectEvents { + expect { update -> + println("Bob got vault update of $update") + val amount: Amount> = update.produced.first().state.data.amount + assertEquals(1000.DOLLARS, amount.withoutIssuer()) + } + } + // END 4 + + // START 5 + bobProxy.startFlow(::CashPaymentFlow, 1000.DOLLARS, alice.nodeInfo.singleIdentity()).returnValue.getOrThrow() + + aliceVaultUpdates.expectEvents { + expect { update -> + println("Alice got vault update of $update") + val amount: Amount> = update.produced.first().state.data.amount + assertEquals(1000.DOLLARS, amount.withoutIssuer()) + } + } + // END 5 + } + } +} diff --git a/docs/source/tutorial-integration-testing.rst b/docs/source/tutorial-integration-testing.rst index f2e410d347..1647d1bf43 100644 --- a/docs/source/tutorial-integration-testing.rst +++ b/docs/source/tutorial-integration-testing.rst @@ -1,119 +1,128 @@ +.. highlight:: kotlin +.. raw:: html + + + + Integration testing =================== -Integration testing involves bringing up nodes locally and testing -invariants about them by starting flows and inspecting their state. +Integration testing involves bringing up nodes locally and testing invariants about them by starting flows and inspecting +their state. -In this tutorial we will bring up three nodes - Alice, Bob and a -notary. Alice will issue cash to Bob, then Bob will send this cash -back to Alice. We will see how to test some simple deterministic and -nondeterministic invariants in the meantime. +In this tutorial we will bring up three nodes - Alice, Bob and a notary. Alice will issue cash to Bob, then Bob will send +this cash back to Alice. We will see how to test some simple deterministic and nondeterministic invariants in the meantime. -.. note:: This example where Alice is self-issuing cash is purely for - demonstration purposes, in reality, cash would be issued by a bank - and subsequently passed around. +.. note:: This example where Alice is self-issuing cash is purely for demonstration purposes, in reality, cash would be + issued by a bank and subsequently passed around. -In order to spawn nodes we will use the Driver DSL. This DSL allows -one to start up node processes from code. It manages a network map -service and safe shutting down of nodes in the background. +In order to spawn nodes we will use the Driver DSL. This DSL allows one to start up node processes from code. It creates +a local network where all the nodes see each other and provides safe shutting down of nodes in the background. -.. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt - :language: kotlin - :start-after: START 1 - :end-before: END 1 - :dedent: 8 +.. container:: codeset -The above code starts three nodes: + .. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt + :language: kotlin + :start-after: START 1 + :end-before: END 1 + :dedent: 8 -* Alice, who has user permissions to start the ``CashIssueFlow`` and - ``CashPaymentFlow`` flows -* Bob, who only has user permissions to start the ``CashPaymentFlow`` -* A notary that offers a ``ValidatingNotaryService``. We won't connect - to the notary directly, so there's no need to provide a ``User`` + .. literalinclude:: example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java + :language: java + :start-after: START 1 + :end-before: END 1 + :dedent: 8 -The ``startNode`` function returns a future that completes once the -node is fully started. This allows starting of the nodes to be -parallel. We wait on these futures as we need the information -returned; their respective ``NodeHandles`` s. +The above code starts two nodes: -.. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt - :language: kotlin - :start-after: START 2 - :end-before: END 2 - :dedent: 12 +* Alice, configured with an RPC user who has permissions to start the ``CashIssueAndPaymentFlow`` flow on it and query + Alice's vault. +* Bob, configured with an RPC user who only has permissions to start the ``CashPaymentFlow`` and query Bob's vault. -After getting the handles we wait for both parties to register with -the network map to ensure we don't have race conditions with network -map registration. Next we connect to Alice and Bob respectively from -the test process using the test user we created. Then we establish RPC -links that allow us to start flows and query state. +.. note:: You will notice that we did not start a notary. This is done automatically for us by the driver - it creates + a notary node with the name ``DUMMY_NOTARY_NAME`` which is visible to both nodes. If you wish to customise this, for + example create more notaries, then specify the ``DriverParameters.notarySpecs`` parameter. -.. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt - :language: kotlin - :start-after: START 3 - :end-before: END 3 - :dedent: 12 +The ``startNode`` function returns a ``CordaFuture`` object that completes once the node is fully started and visible on +the local network. Returning a future allows starting of the nodes to be parallel. We wait on these futures as we need +the information returned; their respective ``NodeHandles`` s. -We will be interested in changes to Alice's and Bob's vault, so we -query a stream of vault updates from each. +.. container:: codeset + + .. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt + :language: kotlin + :start-after: START 2 + :end-before: END 2 + :dedent: 12 + + .. literalinclude:: example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java + :language: java + :start-after: START 2 + :end-before: END 2 + :dedent: 16 + +Next we connect to Alice and Bob from the test process using the test users we created. We establish RPC links that allow +us to start flows and query state. + +.. container:: codeset + + .. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt + :language: kotlin + :start-after: START 3 + :end-before: END 3 + :dedent: 12 + + .. literalinclude:: example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java + :language: java + :start-after: START 3 + :end-before: END 3 + :dedent: 16 + +We will be interested in changes to Alice's and Bob's vault, so we query a stream of vault updates from each. Now that we're all set up we can finally get some cash action going! -.. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt - :language: kotlin - :start-after: START 4 - :end-before: END 4 - :dedent: 12 +.. container:: codeset -The first loop creates 10 threads, each starting a ``CashFlow`` flow -on the Alice node. We specify that we want to issue ``i`` dollars to -Bob, setting our notary as the notary responsible for notarising the -created states. Note that no notarisation will occur yet as we're not -spending any states, only creating new ones on the ledger. + .. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt + :language: kotlin + :start-after: START 4 + :end-before: END 4 + :dedent: 12 -We started the flows from different threads for the sake of the -tutorial, to demonstrate how to test non-determinism, which is what -the ``expectEvents`` block does. + .. literalinclude:: example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java + :language: java + :start-after: START 4 + :end-before: END 4 + :dedent: 16 -The Expect DSL allows ordering constraints to be checked on a stream -of events. The above code specifies that we are expecting 10 updates -to be emitted on the ``bobVaultUpdates`` stream in unspecified order -(this is what the ``parallel`` construct does). We specify an -(otherwise optional) ``match`` predicate to identify specific updates -we are interested in, which we then print. +We start a ``CashIssueAndPaymentFlow`` flow on the Alice node. We specify that we want Alice to self-issue $1000 which is +to be payed to Bob. We specify the default notary identity created by the driver as the notary responsible for notarising +the created states. Note that no notarisation will occur yet as we're not spending any states, only creating new ones on +the ledger. -If we run the code written so far we should see 4 nodes starting up -(Alice, Bob, the notary and an implicit Network Map service), then -10 logs of Bob receiving 1,2,...10 dollars from Alice in some unspecified -order. +We expect a single update to Bob's vault when it receives the $1000 from Alice. This is what the ``expectEvents`` call +is asserting. + +.. container:: codeset + + .. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt + :language: kotlin + :start-after: START 5 + :end-before: END 5 + :dedent: 12 + + .. literalinclude:: example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java + :language: java + :start-after: START 5 + :end-before: END 5 + :dedent: 16 Next we want Bob to send this cash back to Alice. -.. literalinclude:: example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt - :language: kotlin - :start-after: START 5 - :end-before: END 5 - :dedent: 12 +That's it! We saw how to start up several corda nodes locally, how to connect to them, and how to test some simple invariants +about ``CashIssueAndPaymentFlow`` and ``CashPaymentFlow``. -This time we'll do it sequentially. We make Bob pay 1,2,..10 dollars -to Alice in order. We make sure that a the ``CashFlow`` has finished -by waiting on ``startFlow`` 's ``returnValue``. - -Then we use the Expect DSL again, this time using ``sequence`` to test -for the updates arriving in the order we expect them to. - -Note that ``parallel`` and ``sequence`` may be nested into each other -arbitrarily to test more complex scenarios. - -That's it! We saw how to start up several corda nodes locally, how to -connect to them, and how to test some simple invariants about -``CashFlow``. - -To run the complete test you can open -``example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt`` -from IntelliJ and run the test, or alternatively use gradle: - -.. sourcecode:: bash - - # Run example-code integration tests - ./gradlew docs/source/example-code:integrationTest -i \ No newline at end of file +You can find the complete test at ``example-code/src/integration-test/java/net/corda/docs/JavaIntegrationTestingTutorial.java`` +(Java) and ``example-code/src/integration-test/kotlin/net/corda/docs/KotlinIntegrationTestingTutorial.kt`` (Kotlin) in the +`Corda repo `_. From d262c88c0b45db1bda445c79a0f278954bbae954 Mon Sep 17 00:00:00 2001 From: Chris Rankin Date: Mon, 16 Jul 2018 15:57:11 +0100 Subject: [PATCH 09/19] CORDA-1814: Quasar is only providing its annotations (i.e. @Suspendable) so remove its transitive dependencies. (#3620) --- confidential-identities/build.gradle | 4 +++- core/build.gradle | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/confidential-identities/build.gradle b/confidential-identities/build.gradle index 309dce7946..dc60215773 100644 --- a/confidential-identities/build.gradle +++ b/confidential-identities/build.gradle @@ -14,7 +14,9 @@ dependencies { compile project(':core') // Quasar, for suspendable fibres. - compileOnly "$quasar_group:quasar-core:$quasar_version:jdk8" + compileOnly("$quasar_group:quasar-core:$quasar_version:jdk8") { + transitive = false + } testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version" testCompile "junit:junit:$junit_version" diff --git a/core/build.gradle b/core/build.gradle index 32d253d978..289f4c84e8 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -69,7 +69,9 @@ dependencies { testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version" // Quasar, for suspendable fibres. - compileOnly "$quasar_group:quasar-core:$quasar_version:jdk8" + compileOnly("$quasar_group:quasar-core:$quasar_version:jdk8") { + transitive = false + } // Thread safety annotations compile "com.google.code.findbugs:jsr305:$jsr305_version" From a1cb184a1d635fa582263dc45d8e0d404e2feb89 Mon Sep 17 00:00:00 2001 From: Andrius Dagys Date: Mon, 16 Jul 2018 17:13:43 +0100 Subject: [PATCH 10/19] ENT-2168: Node internal docs tweaks (#3624) --- docs/source/messaging.rst | 39 ++++++++-------- docs/source/node-services.rst | 84 +++++++---------------------------- docs/source/vault.rst | 22 ++++----- 3 files changed, 46 insertions(+), 99 deletions(-) diff --git a/docs/source/messaging.rst b/docs/source/messaging.rst index ebba7c3013..4fe8cc39a5 100644 --- a/docs/source/messaging.rst +++ b/docs/source/messaging.rst @@ -31,10 +31,10 @@ regular time interval for network map and applies any related changes locally. Nodes do not automatically deregister themselves, so (for example) nodes going offline briefly for maintenance are retained in the network map, and messages for them will be queued, minimising disruption. -Additionally, on every restart and on daily basis nodes submit signed `NodeInfo`s to the map service. When network map gets -signed, these changes are distributed as new network data. `NodeInfo` republishing is treated as a heartbeat from the node, +Additionally, on every restart and on daily basis nodes submit signed ``NodeInfo`` s to the map service. When network map gets +signed, these changes are distributed as new network data. ``NodeInfo`` republishing is treated as a heartbeat from the node, based on that network map service is able to figure out which nodes can be considered as stale and removed from the network -map document after `eventHorizon` time. +map document after ``eventHorizon`` time. Message queues -------------- @@ -61,10 +61,10 @@ for maintenance and other minor purposes. corresponding bridge is used to forward the message to an advertising peer's p2p queue. Once a peer is picked the session continues on as normal. -:``rpc.requests``: +:``rpc.server``: RPC clients send their requests here, and it's only open for sending by clients authenticated as RPC users. -:``clients.$user.rpc.$random``: +:``rpc.client.$user.$random``: RPC clients are given permission to create a temporary queue incorporating their username (``$user``) and sole permission to receive messages from it. RPC requests are required to include a random number (``$random``) from which the node is able to construct the queue the user is listening on and send the response to that. This mechanism @@ -80,7 +80,7 @@ Clients attempting to connect to the node's broker fall in one of four groups: they are given full access to all valid queues, otherwise they are rejected. #. Anyone connecting with the username ``SystemUsers/Peer`` is treated as a peer on the same Corda network as the node. Their - TLS root CA must be the same as the node's root CA - the root CA is the doorman of the network and having the same root CA + TLS root CA must be the same as the node's root CA -- the root CA is the doorman of the network and having the same root CA implies we've been let in by the same doorman. If they are part of the same network then they are only given permission to send to our ``p2p.inbound.$identity`` queue, otherwise they are rejected. @@ -98,20 +98,19 @@ this to determine what permissions the user has. The broker also does host verification when connecting to another peer. It checks that the TLS certificate subject matches with the advertised X.500 legal name from the network map service. - Implementation details ----------------------- +~~~~~~~~~~~~~~~~~~~~~~ The components of the system that need to communicate and authenticate each other are: - - The Artemis P2P broker (Currently runs inside the Nodes JVM process, but in the future it will be able to run as a separate server) - * opens Acceptor configured with the doorman's certificate in the truststore and the node's ssl certificate in the keystore - - The Artemis RPC broker (Currently runs inside the Nodes JVM process, but in the future it will be able to run as a separate server) - * opens "Admin" Acceptor configured with the doorman's certificate in the truststore and the node's ssl certificate in the keystore - * opens "Client" Acceptor with the ssl settings configurable. This acceptor does not require ssl client-auth. - - The current node hosting the brokers - * connects to the P2P broker using the ``SystemUsers/Node`` user and the node's keystore and trustore - * connects to the "Admin" Acceptor of the RPC broker using the ``SystemUsers/NodeRPC`` user and the node's keystore and trustore - - RPC clients ( Third party applications that need to communicate with the Node. ) - * connect to the "Client" Acceptor of the RPC broker using the username/password provided by the node's admin. The client verifies the node's certificate using a truststore provided by the node's admin. - - Peer nodes (Other nodes on the network) - * connect to the P2P broker using the ``SystemUsers/Peer`` user and a doorman signed certificate. The authentication is performed based on the root CA. + - The Artemis P2P broker (currently runs inside the node's JVM process, but in the future it will be able to run as a separate server): + * Opens Acceptor configured with the doorman's certificate in the trustStore and the node's SSL certificate in the keyStore. + - The Artemis RPC broker (currently runs inside the node's JVM process, but in the future it will be able to run as a separate server): + * Opens "Admin" Acceptor configured with the doorman's certificate in the trustStore and the node's SSL certificate in the keyStore. + * Opens "Client" Acceptor with the SSL settings configurable. This acceptor does not require SSL client-auth. + - The current node hosting the brokers: + * Connects to the P2P broker using the ``SystemUsers/Node`` user and the node's keyStore and trustStore. + * Connects to the "Admin" Acceptor of the RPC broker using the ``SystemUsers/NodeRPC`` user and the node's keyStore and trustStore. + - RPC clients (third party applications that need to communicate with the node): + * Connect to the "Client" Acceptor of the RPC broker using the username/password provided by the node's admin. The client verifies the node's certificate using a trustStore provided by the node's admin. + - Peer nodes (other nodes on the network): + * Connect to the P2P broker using the ``SystemUsers/Peer`` user and a doorman signed certificate. The authentication is performed based on the root CA. \ No newline at end of file diff --git a/docs/source/node-services.rst b/docs/source/node-services.rst index 0931a5f28f..bded7edfa7 100644 --- a/docs/source/node-services.rst +++ b/docs/source/node-services.rst @@ -14,27 +14,15 @@ The node services represent the various sub functions of the Corda node. Some are directly accessible to contracts and flows through the ``ServiceHub``, whilst others are the framework internals used to host the node functions. Any public service interfaces are defined in the -``:core`` gradle project in the -``src/main/kotlin/net/corda/core/node/services`` folder. The -``ServiceHub`` interface exposes functionality suitable for flows. -The implementation code for all standard services lives in the gradle -``:node`` project under the ``src/main/kotlin/net/corda/node/services`` -folder. The ``src/main/kotlin/net/corda/node/services/api`` folder -contains declarations for internal only services and for interoperation -between services. +``net.corda.core.node.services`` package. The ``ServiceHub`` interface exposes +functionality suitable for flows. +The implementation code for all standard services lives in the ``net.corda.node.services`` package. All the services are constructed in the ``AbstractNode`` ``start`` -method (and the extension in ``Node``). They may also register a -shutdown handler during initialisation, which will be called in reverse -order to the start registration sequence when the ``Node.stop`` -is called. +method. They may also register a shutdown handler during initialisation, +which will be called in reverse order to the start registration sequence when the ``Node.stop`` is called. -For unit testing a number of non-persistent, memory only services are -defined in the ``:node`` and ``:test-utils`` projects. The -``:test-utils`` project also provides an in-memory networking simulation -to allow unit testing of flows and service functions. - -The roles of the individual services are described below. +The roles of the individual services are described below. Key management and identity services ------------------------------------ @@ -43,15 +31,15 @@ InMemoryIdentityService ~~~~~~~~~~~~~~~~~~~~~~~ The ``InMemoryIdentityService`` implements the ``IdentityService`` -interface and provides a store of remote mappings between ``CompositeKey`` +interface and provides a store of remote mappings between ``PublicKey`` and remote ``Parties``. It is automatically populated from the -``NetworkMapCache`` updates and is used when translating ``CompositeKey`` +``NetworkMapCache`` updates and is used when translating ``PublicKey`` exposed in transactions into fully populated ``Party`` identities. This service is also used in the default JSON mapping of parties in the web server, thus allowing the party names to be used to refer to other nodes' legal identities. In the future the Identity service will be made persistent and extended to allow anonymised session keys to be used in -flows where the well-known ``CompositeKey`` of nodes need to be hidden +flows where the well-known ``PublicKey`` of nodes need to be hidden to non-involved parties. PersistentKeyManagementService and E2ETestKeyManagementService @@ -95,7 +83,7 @@ of this component, because the ``ArtemisMessagingServer`` is responsible for configuring the network ports (based upon settings in ``node.conf``) and the service configures the security settings of the ``ArtemisMQ`` middleware and acts to form bridges between node mailbox queues based -upon connection details advertised by the ``NetworkMapService``. The +upon connection details advertised by the ``NetworkMapCache``. The ``ArtemisMQ`` broker is configured to use TLS1.2 with a custom ``TrustStore`` containing a Corda root certificate and a ``KeyStore`` with a certificate and key signed by a chain back to this root @@ -105,13 +93,13 @@ each other it is essential that the entire set of nodes are able to authenticate against each other and thus typically that they share a common root certificate. Also note that the address configuration defined for the server is the basis for the address advertised in the -NetworkMapService and thus must be externally connectable by all nodes +``NetworkMapCache`` and thus must be externally connectable by all nodes in the network. -NodeMessagingClient -~~~~~~~~~~~~~~~~~~~ +P2PMessagingClient +~~~~~~~~~~~~~~~~~~ -The ``NodeMessagingClient`` is the implementation of the +The ``P2PMessagingClient`` is the implementation of the ``MessagingService`` interface operating across the ``ArtemisMQ`` middleware layer. It typically connects to the local ``ArtemisMQ`` hosted within the ``ArtemisMessagingServer`` service. However, the @@ -133,7 +121,7 @@ services of authorised nodes provided by the remote specific advertised services e.g. a Notary service, or an Oracle service. Also, this service allows mapping of friendly names, or ``Party`` identities to the full ``NodeInfo`` which is used in the -``StateMachineManager`` to convert between the ``CompositeKey``, or +``StateMachineManager`` to convert between the ``PublicKey``, or ``Party`` based addressing used in the flows/contracts and the physical host and port information required for the physical ``ArtemisMQ`` messaging layer. @@ -141,13 +129,6 @@ physical host and port information required for the physical Storage and persistence related services ---------------------------------------- -StorageServiceImpl -~~~~~~~~~~~~~~~~~~ - -The ``StorageServiceImpl`` service simply hold references to the various -persistence related services and provides a single grouped interface on -the ``ServiceHub``. - DBCheckpointStorage ~~~~~~~~~~~~~~~~~~~ @@ -247,40 +228,7 @@ a reference to the state that triggered the event. The flow can then begin whatever action is required. Note that the scheduled activity occurs in all nodes holding the state in their Vault, it may therefore be required for the flow to exit early if the current node is not -the intended initiator. - -Notary flow implementation services ------------------------------------ - -PersistentUniquenessProvider, InMemoryUniquenessProvider and RaftUniquenessProvider -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -These variants of ``UniquenessProvider`` service are used by the notary -flows to track consumed states and thus reject double-spend -scenarios. The ``InMemoryUniquenessProvider`` is for unit testing only, -the default being the ``PersistentUniquenessProvider`` which records the -changes to the DB. When the Raft based notary is active the states are -tracked by the whole cluster using a ``RaftUniquenessProvider``. Outside -of the notary flows themselves this service should not be accessed -by any CorDapp components. - -NotaryService (SimpleNotaryService, ValidatingNotaryService, RaftValidatingNotaryService) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The ``NotaryService`` is an abstract base class for the various concrete -implementations of the Notary server flow. By default, a node does -not run any ``NotaryService`` server component. For that you need to specify the ``notary`` config. -The node may then participate in controlling state uniqueness when contacted by nodes -using the ``NotaryFlow.Client`` ``subFlow``. The -``SimpleNotaryService`` only offers protection against double spend, but -does no further verification. The ``ValidatingNotaryService`` checks -that proposed transactions are correctly signed by all keys listed in -the commands and runs the contract verify to ensure that the rules of -the state transition are being followed. The -``RaftValidatingNotaryService`` further extends the flow to operate -against a cluster of nodes running shared consensus state across the -RAFT protocol (note this requires the additional configuration of the -``notaryClusterAddresses`` property). +the intended initiator. Vault related services ---------------------- diff --git a/docs/source/vault.rst b/docs/source/vault.rst index 62b4df0bb4..371a4781d6 100644 --- a/docs/source/vault.rst +++ b/docs/source/vault.rst @@ -6,9 +6,9 @@ that can be easily queried and worked with. The vault keeps track of both unconsumed and consumed states: - * Unconsumed (or unspent) states represent fungible states available for spending (including spend-to-self transactions) + * **Unconsumed** (or unspent) states represent fungible states available for spending (including spend-to-self transactions) and linear states available for evolution (eg. in response to a lifecycle event on a deal) or transfer to another party. - * Consumed (or spent) states represent ledger immutable state for the purpose of transaction reporting, audit and archival, including the ability to perform joins with app-private data (like customer notes) + * **Consumed** (or spent) states represent ledger immutable state for the purpose of transaction reporting, audit and archival, including the ability to perform joins with app-private data (like customer notes). By fungible we refer to assets of measurable quantity (eg. a cash currency, units of stock) which can be combined together to represent a single ledger state. @@ -40,15 +40,15 @@ The following diagram illustrates the breakdown of the vault into sub-system com Note the following: -* the vault "On Ledger" store tracks unconsumed state and is updated internally by the node upon recording of a transaction on the ledger - (following successful smart contract verification and signature by all participants) -* the vault "Off Ledger" store refers to additional data added by the node owner subsequent to transaction recording -* the vault performs fungible state spending (and in future, fungible state optimisation management including merging, splitting and re-issuance) -* vault extensions represent additional custom plugin code a developer may write to query specific custom contract state attributes. -* customer "Off Ledger" (private store) represents internal organisational data that may be joined with the vault data to perform additional reporting or processing -* a :doc:`Vault Query API ` is exposed to developers using standard Corda RPC and CorDapp plugin mechanisms -* a vault update API is internally used by transaction recording flows. -* the vault database schemas are directly accessible via JDBC for customer joins and queries +* The vault "On Ledger" store tracks unconsumed state and is updated internally by the node upon recording of a transaction on the ledger + (following successful smart contract verification and signature by all participants). +* The vault "Off Ledger" store refers to additional data added by the node owner subsequent to transaction recording. +* The vault performs fungible state spending (and in future, fungible state optimisation management including merging, splitting and re-issuance). +* Vault extensions represent additional custom plugin code a developer may write to query specific custom contract state attributes. +* Customer "Off Ledger" (private store) represents internal organisational data that may be joined with the vault data to perform additional reporting or processing. +* A :doc:`Vault Query API ` is exposed to developers using standard Corda RPC and CorDapp plugin mechanisms. +* A vault update API is internally used by transaction recording flows. +* The vault database schemas are directly accessible via JDBC for customer joins and queries. Section 8 of the `Technical white paper`_ describes features of the vault yet to be implemented including private key management, state splitting and merging, asset re-issuance and node event scheduling. From 1ca20598634580b54d48a7e3c0d47481f6257033 Mon Sep 17 00:00:00 2001 From: Florian Friemel Date: Mon, 16 Jul 2018 17:29:29 +0100 Subject: [PATCH 11/19] [CORDA-1635] Update docs (node naming constraints). (#3595) * Update docs (node naming constraints). * Update CordaX500NameTest to ensure consistency with the docs. * Respond to feedback. --- .../corda/core/identity/CordaX500NameTest.kt | 127 +++++++++++++++++- docs/source/node-structure.rst | 16 +-- 2 files changed, 126 insertions(+), 17 deletions(-) diff --git a/core/src/test/kotlin/net/corda/core/identity/CordaX500NameTest.kt b/core/src/test/kotlin/net/corda/core/identity/CordaX500NameTest.kt index 3cfc7c089b..53dc7e186a 100644 --- a/core/src/test/kotlin/net/corda/core/identity/CordaX500NameTest.kt +++ b/core/src/test/kotlin/net/corda/core/identity/CordaX500NameTest.kt @@ -5,6 +5,8 @@ import kotlin.test.assertEquals import kotlin.test.assertFailsWith import kotlin.test.assertNull +import java.lang.Character.MIN_VALUE as NULLCHAR + class CordaX500NameTest { @Test fun `service name with organisational unit`() { @@ -60,17 +62,128 @@ class CordaX500NameTest { } } - @Test - fun `rejects name with wrong organisation name format`() { - assertFailsWith(IllegalArgumentException::class) { - CordaX500Name.parse("O=B, L=New York, C=US, OU=Org Unit, CN=Service Name") - } - } - @Test fun `rejects name with unsupported attribute`() { assertFailsWith(IllegalArgumentException::class) { CordaX500Name.parse("O=Bank A, L=New York, C=US, SN=blah") } } + + @Test + fun `rejects organisation (but not other attributes) with non-latin letters`() { + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=Bཛྷa, L=New York, C=DE, OU=Org Unit, CN=Service Name") + } + // doesn't throw + validateLocalityAndOrganisationalUnitAndCommonName("Bཛྷa") + } + + @Test + fun `organisation (but not other attributes) must have at least two letters`() { + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=B, L=New York, C=DE, OU=Org Unit, CN=Service Name") + } + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=, L=New York, C=DE, OU=Org Unit, CN=Service Name") + } + // doesn't throw + validateLocalityAndOrganisationalUnitAndCommonName("B") + validateLocalityAndOrganisationalUnitAndCommonName("") + } + + @Test + fun `accepts attributes starting with lower case letter`() { + CordaX500Name.parse("O=bank A, L=New York, C=DE, OU=Org Unit, CN=Service Name") + validateLocalityAndOrganisationalUnitAndCommonName("bank") + } + + @Test + fun `accepts attributes starting with numeric character`() { + CordaX500Name.parse("O=8Bank A, L=New York, C=DE, OU=Org Unit, CN=Service Name") + validateLocalityAndOrganisationalUnitAndCommonName("8bank") + } + + @Test + fun `accepts attributes with leading whitespace`() { + CordaX500Name.parse("O= VALID, L=VALID, C=DE, OU=VALID, CN=VALID") + validateLocalityAndOrganisationalUnitAndCommonName(" VALID") + } + + @Test + fun `accepts attributes with trailing whitespace`() { + CordaX500Name.parse("O=VALID , L=VALID, C=DE, OU=VALID, CN=VALID") + validateLocalityAndOrganisationalUnitAndCommonName("VALID ") + } + + @Test + fun `rejects attributes with comma`() { + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=IN,VALID, L=VALID, C=DE, OU=VALID, CN=VALID") + } + checkLocalityAndOrganisationalUnitAndCommonNameReject("IN,VALID") + } + + @Test + fun `accepts org with equals sign`() { + CordaX500Name.parse("O=IN=VALID, L=VALID, C=DE, OU=VALID, CN=VALID") + } + + @Test + fun `accepts organisation with dollar sign`() { + CordaX500Name.parse("O=VA\$LID, L=VALID, C=DE, OU=VALID, CN=VALID") + validateLocalityAndOrganisationalUnitAndCommonName("VA\$LID") + } + @Test + fun `rejects attributes with double quotation mark`() { + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=IN\"VALID, L=VALID, C=DE, OU=VALID, CN=VALID") + } + checkLocalityAndOrganisationalUnitAndCommonNameReject("IN\"VALID") + } + + @Test + fun `accepts organisation with single quotation mark`() { + CordaX500Name.parse("O=VA'LID, L=VALID, C=DE, OU=VALID, CN=VALID") + validateLocalityAndOrganisationalUnitAndCommonName("VA'LID") + } + @Test + fun `rejects organisation with backslash`() { + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=IN\\VALID, L=VALID, C=DE, OU=VALID, CN=VALID") + } + checkLocalityAndOrganisationalUnitAndCommonNameReject("IN\\VALID") + } + + @Test + fun `rejects double spacing only in the organisation attribute`() { + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=IN VALID , L=VALID, C=DE, OU=VALID, CN=VALID") + } + validateLocalityAndOrganisationalUnitAndCommonName("VA LID") + } + @Test + fun `rejects organisation (but not other attributes) containing the null character`() { + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=IN${NULLCHAR}VALID , L=VALID, C=DE, OU=VALID, CN=VALID") + } + validateLocalityAndOrganisationalUnitAndCommonName("VA${NULLCHAR}LID") + } + + fun checkLocalityAndOrganisationalUnitAndCommonNameReject(invalid: String) { + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=VALID, L=${invalid}, C=DE, OU=VALID, CN=VALID") + } + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=VALID, L=VALID, C=DE, OU=${invalid}, CN=VALID") + } + assertFailsWith(IllegalArgumentException::class) { + CordaX500Name.parse("O=VALID, L=VALID, C=DE, OU=VALID, CN=${invalid}") + } + } + + fun validateLocalityAndOrganisationalUnitAndCommonName(valid: String) { + CordaX500Name.parse("O=VALID, L=${valid}, C=DE, OU=VALID, CN=VALID") + CordaX500Name.parse("O=VALID, L=VALID, C=DE, OU=${valid}, CN=VALID") + CordaX500Name.parse("O=VALID, L=VALID, C=DE, OU=VALID, CN=${valid}") + } } diff --git a/docs/source/node-structure.rst b/docs/source/node-structure.rst index 374548f8ee..9d785df0a9 100644 --- a/docs/source/node-structure.rst +++ b/docs/source/node-structure.rst @@ -71,22 +71,18 @@ The name must also obey the following constraints: * The ``country`` attribute is a valid ISO 3166-1 two letter code in upper-case -* All attributes must obey the following constraints: - - * Upper-case first letter +* The ``organisation`` field of the name obeys the following constraints: * Has at least two letters - * No leading or trailing whitespace - * Does not include the following characters: ``,`` , ``=`` , ``$`` , ``"`` , ``'`` , ``\`` + * Does not include the following characters: ``,`` , ``"``, ``\`` * Is in NFKC normalization form * Does not contain the null character * Only the latin, common and inherited unicode scripts are supported - -* The ``organisation`` field of the name also obeys the following constraints: - * No double-spacing - * This is to avoid right-to-left issues, debugging issues when we can't pronounce names over the phone, and - character confusability attacks +This is to avoid right-to-left issues, debugging issues when we can't pronounce names over the phone, and +character confusability attacks. + +.. note:: The network operator of a Corda Network may put additional constraints on node naming in place. External identifiers ^^^^^^^^^^^^^^^^^^^^ From 21725ef192ae00e70ba2a606d34bd5232b4bacbb Mon Sep 17 00:00:00 2001 From: dmytrobr Date: Mon, 16 Jul 2018 22:04:19 -0400 Subject: [PATCH 12/19] CORDA-3167 added titles to Treasury chart in Explorer --- .../net/corda/explorer/views/cordapps/cash/CashViewer.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/explorer/src/main/kotlin/net/corda/explorer/views/cordapps/cash/CashViewer.kt b/tools/explorer/src/main/kotlin/net/corda/explorer/views/cordapps/cash/CashViewer.kt index 76514a4cbe..4d5dd876b2 100644 --- a/tools/explorer/src/main/kotlin/net/corda/explorer/views/cordapps/cash/CashViewer.kt +++ b/tools/explorer/src/main/kotlin/net/corda/explorer/views/cordapps/cash/CashViewer.kt @@ -304,12 +304,17 @@ class CashViewer : CordaView("Cash") { tickLabelFormatter = stringConverter { Instant.ofEpochMilli(it.toLong()).atZone(TimeZone.getDefault().toZoneId()).toLocalTime().toString() } + label= "Timeline" + style = "-fx-font-size: 10px;" + } val yAxis = NumberAxis().apply { isAutoRanging = true isMinorTickVisible = false isForceZeroInRange = false tickLabelFormatter = stringConverter { it.toStringWithSuffix() } + label= "Cash" + style = "-fx-font-size: 10px;" } linechart(null, xAxis, yAxis) { series("USD") { From 1cffe1b080b064ab21df646a36591fc6cf911d65 Mon Sep 17 00:00:00 2001 From: Andrius Dagys Date: Tue, 3 Jul 2018 13:24:25 +0100 Subject: [PATCH 13/19] Docs: update notary setup page --- docs/source/corda-networks-index.rst | 1 + docs/source/key-concepts-notaries.rst | 2 ++ docs/source/running-a-notary.rst | 51 +++++++++++++++++---------- docs/source/tutorials-index.rst | 1 - 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/docs/source/corda-networks-index.rst b/docs/source/corda-networks-index.rst index b16acc006a..777d57a443 100644 --- a/docs/source/corda-networks-index.rst +++ b/docs/source/corda-networks-index.rst @@ -5,6 +5,7 @@ Networks :maxdepth: 1 setting-up-a-corda-network + running-a-notary permissioning network-map versioning diff --git a/docs/source/key-concepts-notaries.rst b/docs/source/key-concepts-notaries.rst index e1a52c4d2a..8998894819 100644 --- a/docs/source/key-concepts-notaries.rst +++ b/docs/source/key-concepts-notaries.rst @@ -50,6 +50,8 @@ In particular, notary clusters may differ in terms of: * **Consensus algorithm** - a notary cluster may choose to run a high-speed, high-trust algorithm such as RAFT, a low-speed, low-trust algorithm such as BFT, or any other consensus algorithm it chooses +.. _key_concepts_notaries_validation: + Validation ^^^^^^^^^^ A notary cluster must also decide whether or not to provide **validity consensus** by validating each transaction diff --git a/docs/source/running-a-notary.rst b/docs/source/running-a-notary.rst index 511f00c27a..cebfbfb459 100644 --- a/docs/source/running-a-notary.rst +++ b/docs/source/running-a-notary.rst @@ -1,33 +1,48 @@ -Running a notary service ------------------------- +Setting up a notary service +--------------------------- -At present we have several notary implementations: +Corda comes with several notary implementations built-in: -1. ``SimpleNotaryService`` (single node) -- commits the provided transaction input states without any validation. -2. ``ValidatingNotaryService`` (single node) -- retrieves and validates the whole transaction history - (including the given transaction) before committing. -3. ``RaftNonValidatingNotaryService`` (distributed) -- functionally equivalent to ``SimpleNotaryService``, but stores - the committed states in a distributed collection replicated and persisted in a Raft cluster. For the consensus layer - we are using the `Copycat `_ framework. -4. ``RaftValidatingNotaryService`` (distributed) -- as above, but performs validation on the transactions received. +1. **Single-node**: a simple notary service that persists notarisation requests in the node's database. It is easy to set up + and is recommended for testing, and production networks that do not have strict availability requirements. +2. **Crash fault-tolerant** *(experimental)*: a highly available notary service operated by a single party. +3. **Byzantine fault-tolerant** *(experimental)*: a decentralised highly available notary service operated by a group of parties. -To have a node run a notary service, you need to set appropriate ``notary`` configuration before starting it -(see :doc:`corda-configuration-file` for reference). +Single-node +=========== -For ``SimpleNotaryService`` the config is simply: +To have a regular Corda node provide a notary service you simply need to set appropriate ``notary`` configuration values +before starting it: .. parsed-literal:: notary : { validating : false } -For ``ValidatingNotaryService``, it is: +For a validating notary service specify: .. parsed-literal:: notary : { validating : true } -Setting up a Raft notary is currently slightly more involved and is not recommended for prototyping purposes. There is -work in progress to simplify it. To see it in action, however, you can try out the :ref:`notary-demo`. -Use the `--bootstrap-raft-cluster` command line argument when starting the first node of a notary cluster for the first -time. When the flag is set, the node will act as a seed for the cluster that other members can join. +See :ref:`key_concepts_notaries_validation` for more details about validating versus non-validating notaries. + +For clients to be able to use the notary service, its identity must be added to the network parameters. This will be +done automatically when creating the network, if using :doc:`network-bootstrapper`. See :doc:`setting-up-a-corda-network` +for more details. + +Crash fault-tolerant (experimental) +=================================== + +Corda provides a prototype `Raft-based `_ highly available notary implementation. You can try it out on our +`notary demo `_ page. Note that it has known limitations +and is not recommended for production use. + +Byzantine fault-tolerant (experimental) +======================================= + +A prototype BFT notary implementation based on `BFT-Smart `_ is available. You can +try it out on our `notary demo `_ page. Note that it +is still experimental and there is active work ongoing for a production ready solution. + +We do not recommend using it in any long-running test or production deployments. \ No newline at end of file diff --git a/docs/source/tutorials-index.rst b/docs/source/tutorials-index.rst index dab76fb001..60992e92a9 100644 --- a/docs/source/tutorials-index.rst +++ b/docs/source/tutorials-index.rst @@ -26,7 +26,6 @@ World tutorials, and can be read in any order. tutorial-building-transactions flow-state-machines flow-testing - running-a-notary oracles tutorial-custom-notary tutorial-tear-offs From 736d62ec1a7d2ac4dcd7347d97d36db4f9d678f5 Mon Sep 17 00:00:00 2001 From: Shams Asari Date: Tue, 17 Jul 2018 10:29:47 +0100 Subject: [PATCH 14/19] Retire RandomFree as it causes flaky tests (#3626) --- .../net/corda/node/flows/FlowRetryTest.kt | 3 --- ...gratedAttachmentContractsTableNameTests.kt | 14 +++++++----- .../persistence/NodeStatePersistenceTests.kt | 22 ++++++++++++------- .../node/services/network/NetworkMapTest.kt | 4 ++-- .../net/corda/node/services/rpc/RpcSslTest.kt | 15 ++++++------- .../statemachine/LargeTransactionsTest.kt | 19 ++++------------ .../node/services/rpc/ArtemisRpcTests.kt | 13 +++++++---- .../net/corda/testing/driver/DriverTests.kt | 10 --------- .../testing/driver/internal/DriverInternal.kt | 12 ---------- .../shell/InteractiveShellIntegrationTest.kt | 15 ++++++------- 10 files changed, 52 insertions(+), 75 deletions(-) diff --git a/node/src/integration-test/kotlin/net/corda/node/flows/FlowRetryTest.kt b/node/src/integration-test/kotlin/net/corda/node/flows/FlowRetryTest.kt index b1524ff219..548f904d7e 100644 --- a/node/src/integration-test/kotlin/net/corda/node/flows/FlowRetryTest.kt +++ b/node/src/integration-test/kotlin/net/corda/node/flows/FlowRetryTest.kt @@ -13,7 +13,6 @@ import net.corda.node.services.Permissions import net.corda.testing.core.singleIdentity import net.corda.testing.driver.DriverParameters import net.corda.testing.driver.driver -import net.corda.testing.driver.internal.RandomFree import net.corda.testing.node.User import org.junit.Before import org.junit.Test @@ -23,7 +22,6 @@ import java.util.* import kotlin.test.assertEquals import kotlin.test.assertNotNull - class FlowRetryTest { @Before fun resetCounters() { @@ -38,7 +36,6 @@ class FlowRetryTest { val user = User("mark", "dadada", setOf(Permissions.startFlow())) val result: Any? = driver(DriverParameters( startNodesInProcess = isQuasarAgentSpecified(), - portAllocation = RandomFree, notarySpecs = emptyList() )) { val nodeAHandle = startNode(rpcUsers = listOf(user)).getOrThrow() diff --git a/node/src/integration-test/kotlin/net/corda/node/persistence/FailNodeOnNotMigratedAttachmentContractsTableNameTests.kt b/node/src/integration-test/kotlin/net/corda/node/persistence/FailNodeOnNotMigratedAttachmentContractsTableNameTests.kt index 7ee592193c..80f7a11ee0 100644 --- a/node/src/integration-test/kotlin/net/corda/node/persistence/FailNodeOnNotMigratedAttachmentContractsTableNameTests.kt +++ b/node/src/integration-test/kotlin/net/corda/node/persistence/FailNodeOnNotMigratedAttachmentContractsTableNameTests.kt @@ -10,12 +10,13 @@ import net.corda.testMessage.MessageState import net.corda.testing.core.singleIdentity import net.corda.testing.driver.DriverParameters import net.corda.testing.driver.driver -import net.corda.testing.driver.internal.RandomFree import net.corda.testing.node.User import org.junit.Test import java.nio.file.Path import java.sql.DriverManager -import kotlin.test.* +import kotlin.test.assertFailsWith +import kotlin.test.assertFalse +import kotlin.test.assertTrue class FailNodeOnNotMigratedAttachmentContractsTableNameTests { @Test @@ -28,11 +29,14 @@ class FailNodeOnNotMigratedAttachmentContractsTableNameTests { `node fails when not detecting compatible table name`("NODE_ATTACHMENTS_CONTRACTS", "NODE_ATTCHMENTS_CONTRACTS") } - fun `node fails when not detecting compatible table name`(tableNameFromMapping: String, tableNameInDB: String) { + private fun `node fails when not detecting compatible table name`(tableNameFromMapping: String, tableNameInDB: String) { val user = User("mark", "dadada", setOf(Permissions.startFlow(), Permissions.invokeRpc("vaultQuery"))) val message = Message("Hello world!") - val baseDir: Path = driver(DriverParameters(inMemoryDB = false, startNodesInProcess = isQuasarAgentSpecified(), - portAllocation = RandomFree, extraCordappPackagesToScan = listOf(MessageState::class.packageName))) { + val baseDir: Path = driver(DriverParameters( + inMemoryDB = false, + startNodesInProcess = isQuasarAgentSpecified(), + extraCordappPackagesToScan = listOf(MessageState::class.packageName) + )) { val (nodeName, baseDir) = { val nodeHandle = startNode(rpcUsers = listOf(user)).getOrThrow() val nodeName = nodeHandle.nodeInfo.singleIdentity().name diff --git a/node/src/integration-test/kotlin/net/corda/node/persistence/NodeStatePersistenceTests.kt b/node/src/integration-test/kotlin/net/corda/node/persistence/NodeStatePersistenceTests.kt index 00df28b5a8..f4b86bffce 100644 --- a/node/src/integration-test/kotlin/net/corda/node/persistence/NodeStatePersistenceTests.kt +++ b/node/src/integration-test/kotlin/net/corda/node/persistence/NodeStatePersistenceTests.kt @@ -1,10 +1,6 @@ package net.corda.node.persistence import co.paralleluniverse.fibers.Suspendable -import net.corda.testMessage.MESSAGE_CONTRACT_PROGRAM_ID -import net.corda.testMessage.Message -import net.corda.testMessage.MessageContract -import net.corda.testMessage.MessageState import net.corda.client.rpc.CordaRPCClient import net.corda.core.contracts.Command import net.corda.core.contracts.StateAndContract @@ -21,10 +17,13 @@ import net.corda.core.utilities.ProgressTracker import net.corda.core.utilities.getOrThrow import net.corda.node.services.Permissions.Companion.invokeRpc import net.corda.node.services.Permissions.Companion.startFlow +import net.corda.testMessage.MESSAGE_CONTRACT_PROGRAM_ID +import net.corda.testMessage.Message +import net.corda.testMessage.MessageContract +import net.corda.testMessage.MessageState import net.corda.testing.core.singleIdentity import net.corda.testing.driver.DriverParameters import net.corda.testing.driver.driver -import net.corda.testing.driver.internal.RandomFree import net.corda.testing.node.User import org.junit.Assume.assumeFalse import org.junit.Test @@ -37,8 +36,11 @@ class NodeStatePersistenceTests { fun `persistent state survives node restart`() { val user = User("mark", "dadada", setOf(startFlow(), invokeRpc("vaultQuery"))) val message = Message("Hello world!") - val stateAndRef: StateAndRef? = driver(DriverParameters(inMemoryDB = false, startNodesInProcess = isQuasarAgentSpecified(), - portAllocation = RandomFree, extraCordappPackagesToScan = listOf(MessageState::class.packageName))) { + val stateAndRef: StateAndRef? = driver(DriverParameters( + inMemoryDB = false, + startNodesInProcess = isQuasarAgentSpecified(), + extraCordappPackagesToScan = listOf(MessageState::class.packageName) + )) { val nodeName = { val nodeHandle = startNode(rpcUsers = listOf(user)).getOrThrow() val nodeName = nodeHandle.nodeInfo.singleIdentity().name @@ -70,7 +72,11 @@ class NodeStatePersistenceTests { val user = User("mark", "dadada", setOf(startFlow(), invokeRpc("vaultQuery"))) val message = Message("Hello world!") - val stateAndRef: StateAndRef? = driver(DriverParameters(inMemoryDB = false, startNodesInProcess = isQuasarAgentSpecified(), portAllocation = RandomFree, extraCordappPackagesToScan = listOf(MessageState::class.packageName))) { + val stateAndRef: StateAndRef? = driver(DriverParameters( + inMemoryDB = false, + startNodesInProcess = isQuasarAgentSpecified(), + extraCordappPackagesToScan = listOf(MessageState::class.packageName) + )) { val nodeName = { val nodeHandle = startNode(rpcUsers = listOf(user)).getOrThrow() val nodeName = nodeHandle.nodeInfo.singleIdentity().name diff --git a/node/src/integration-test/kotlin/net/corda/node/services/network/NetworkMapTest.kt b/node/src/integration-test/kotlin/net/corda/node/services/network/NetworkMapTest.kt index 8605e9cbcd..2bf6d30eee 100644 --- a/node/src/integration-test/kotlin/net/corda/node/services/network/NetworkMapTest.kt +++ b/node/src/integration-test/kotlin/net/corda/node/services/network/NetworkMapTest.kt @@ -19,8 +19,8 @@ import net.corda.nodeapi.internal.network.SignedNetworkParameters import net.corda.testing.common.internal.testNetworkParameters import net.corda.testing.core.* import net.corda.testing.driver.NodeHandle +import net.corda.testing.driver.PortAllocation import net.corda.testing.driver.internal.NodeHandleInternal -import net.corda.testing.driver.internal.RandomFree import net.corda.testing.node.internal.* import net.corda.testing.node.internal.network.NetworkMapServer import org.assertj.core.api.Assertions.assertThat @@ -42,7 +42,7 @@ class NetworkMapTest(var initFunc: (URL, NetworkMapServer) -> CompatibilityZoneP val testSerialization = SerializationEnvironmentRule(true) private val cacheTimeout = 1.seconds - private val portAllocation = RandomFree + private val portAllocation = PortAllocation.Incremental(10000) private lateinit var networkMapServer: NetworkMapServer private lateinit var compatibilityZone: CompatibilityZoneParams diff --git a/node/src/integration-test/kotlin/net/corda/node/services/rpc/RpcSslTest.kt b/node/src/integration-test/kotlin/net/corda/node/services/rpc/RpcSslTest.kt index ebe2d46f90..1b141bfa2d 100644 --- a/node/src/integration-test/kotlin/net/corda/node/services/rpc/RpcSslTest.kt +++ b/node/src/integration-test/kotlin/net/corda/node/services/rpc/RpcSslTest.kt @@ -3,17 +3,16 @@ package net.corda.node.services.rpc import net.corda.client.rpc.CordaRPCClient import net.corda.client.rpc.RPCException import net.corda.core.internal.div +import net.corda.core.messaging.ClientRpcSslOptions import net.corda.core.utilities.getOrThrow import net.corda.node.services.Permissions.Companion.all -import net.corda.nodeapi.BrokerRpcSslOptions -import net.corda.core.messaging.ClientRpcSslOptions import net.corda.node.utilities.createKeyPairAndSelfSignedTLSCertificate import net.corda.node.utilities.saveToKeyStore import net.corda.node.utilities.saveToTrustStore +import net.corda.nodeapi.BrokerRpcSslOptions import net.corda.nodeapi.internal.ArtemisMessagingComponent.Companion.NODE_RPC_USER import net.corda.testing.driver.DriverParameters import net.corda.testing.driver.driver -import net.corda.testing.driver.internal.RandomFree import net.corda.testing.internal.useSslRpcOverrides import net.corda.testing.node.User import org.apache.activemq.artemis.api.core.ActiveMQException @@ -31,7 +30,7 @@ class RpcSslTest { @JvmField val tempFolder = TemporaryFolder() - val testName = X500Principal("CN=Test,O=R3 Ltd,L=London,C=GB") + private val testName = X500Principal("CN=Test,O=R3 Ltd,L=London,C=GB") @Test fun `RPC client using ssl is able to run a command`() { @@ -46,7 +45,7 @@ class RpcSslTest { val trustStorePath = saveToTrustStore(tempFolder.root.toPath() / "truststore.jks", cert) val clientSslOptions = ClientRpcSslOptions(trustStorePath, "password") - driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, notarySpecs = emptyList())) { + driver(DriverParameters(startNodesInProcess = true, notarySpecs = emptyList())) { val node = startNode(rpcUsers = listOf(user), customOverrides = brokerSslOptions.useSslRpcOverrides()).getOrThrow() val client = CordaRPCClient.createWithSsl(node.rpcAddress, sslConfiguration = clientSslOptions) val connection = client.start(user.username, user.password) @@ -84,7 +83,7 @@ class RpcSslTest { val trustStorePath = saveToTrustStore(tempFolder.root.toPath() / "truststore.jks", cert1) val clientSslOptions = ClientRpcSslOptions(trustStorePath, "password") - driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, notarySpecs = emptyList())) { + driver(DriverParameters(startNodesInProcess = true, notarySpecs = emptyList())) { val node = startNode(rpcUsers = listOf(user), customOverrides = brokerSslOptions.useSslRpcOverrides()).getOrThrow() Assertions.assertThatThrownBy { val connection = CordaRPCClient.createWithSsl(node.rpcAddress, sslConfiguration = clientSslOptions).start(user.username, user.password) @@ -104,7 +103,7 @@ class RpcSslTest { fun `RPC client not using ssl can run commands`() { val user = User("mark", "dadada", setOf(all())) var successful = false - driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, notarySpecs = emptyList())) { + driver(DriverParameters(startNodesInProcess = true, notarySpecs = emptyList())) { val node = startNode(rpcUsers = listOf(user)).getOrThrow() val connection = CordaRPCClient(node.rpcAddress).start(user.username, user.password) connection.proxy.apply { @@ -124,7 +123,7 @@ class RpcSslTest { val trustStorePath = saveToTrustStore(tempFolder.root.toPath() / "truststore.jks", cert) val clientSslOptions = ClientRpcSslOptions(trustStorePath, "password") - driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, notarySpecs = emptyList())) { + driver(DriverParameters(startNodesInProcess = true, notarySpecs = emptyList())) { val node = startNode(customOverrides = brokerSslOptions.useSslRpcOverrides()).getOrThrow() val client = CordaRPCClient.createWithSsl(node.rpcAddress, sslConfiguration = clientSslOptions) diff --git a/node/src/integration-test/kotlin/net/corda/node/services/statemachine/LargeTransactionsTest.kt b/node/src/integration-test/kotlin/net/corda/node/services/statemachine/LargeTransactionsTest.kt index 8451252c09..082f7ef0d1 100644 --- a/node/src/integration-test/kotlin/net/corda/node/services/statemachine/LargeTransactionsTest.kt +++ b/node/src/integration-test/kotlin/net/corda/node/services/statemachine/LargeTransactionsTest.kt @@ -3,13 +3,7 @@ package net.corda.node.services.statemachine import co.paralleluniverse.fibers.Suspendable import net.corda.client.rpc.CordaRPCClient import net.corda.core.crypto.SecureHash -import net.corda.core.flows.FlowLogic -import net.corda.core.flows.FlowSession -import net.corda.core.flows.InitiatedBy -import net.corda.core.flows.InitiatingFlow -import net.corda.core.flows.ReceiveTransactionFlow -import net.corda.core.flows.SendTransactionFlow -import net.corda.core.flows.StartableByRPC +import net.corda.core.flows.* import net.corda.core.internal.InputStreamAndHash import net.corda.core.internal.concurrent.transpose import net.corda.core.messaging.startFlow @@ -19,14 +13,9 @@ import net.corda.node.services.config.MB import net.corda.testing.common.internal.testNetworkParameters import net.corda.testing.contracts.DummyContract import net.corda.testing.contracts.DummyState -import net.corda.testing.core.ALICE_NAME -import net.corda.testing.core.BOB_NAME -import net.corda.testing.core.DUMMY_NOTARY_NAME -import net.corda.testing.core.TestIdentity -import net.corda.testing.core.dummyCommand +import net.corda.testing.core.* import net.corda.testing.driver.DriverParameters import net.corda.testing.driver.driver -import net.corda.testing.driver.internal.RandomFree import net.corda.testing.node.User import org.junit.Test import kotlin.test.assertEquals @@ -87,8 +76,8 @@ class LargeTransactionsTest { driver(DriverParameters( startNodesInProcess = true, extraCordappPackagesToScan = listOf("net.corda.testing.contracts"), - networkParameters = testNetworkParameters(maxTransactionSize = 13.MB.toInt()), - portAllocation = RandomFree)) { + networkParameters = testNetworkParameters(maxTransactionSize = 13.MB.toInt()) + )) { val rpcUser = User("admin", "admin", setOf("ALL")) val (alice, _) = listOf(ALICE_NAME, BOB_NAME).map { startNode(providedName = it, rpcUsers = listOf(rpcUser)) }.transpose().getOrThrow() CordaRPCClient(alice.rpcAddress).use(rpcUser.username, rpcUser.password) { diff --git a/node/src/test/kotlin/net/corda/node/services/rpc/ArtemisRpcTests.kt b/node/src/test/kotlin/net/corda/node/services/rpc/ArtemisRpcTests.kt index 1ecb560f2a..36d7d9bba2 100644 --- a/node/src/test/kotlin/net/corda/node/services/rpc/ArtemisRpcTests.kt +++ b/node/src/test/kotlin/net/corda/node/services/rpc/ArtemisRpcTests.kt @@ -23,7 +23,6 @@ import net.corda.nodeapi.internal.config.SSLConfiguration import net.corda.nodeapi.internal.config.User import net.corda.testing.core.SerializationEnvironmentRule import net.corda.testing.driver.PortAllocation -import net.corda.testing.driver.internal.RandomFree import net.corda.testing.internal.createNodeSslConfig import org.apache.activemq.artemis.api.core.ActiveMQConnectionTimedOutException import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl @@ -36,7 +35,7 @@ import java.nio.file.Path import javax.security.auth.x500.X500Principal class ArtemisRpcTests { - private val ports: PortAllocation = RandomFree + private val ports: PortAllocation = PortAllocation.Incremental(10000) private val user = User("mark", "dadada", setOf(all())) private val users = listOf(user) @@ -96,8 +95,14 @@ class ArtemisRpcTests { }.isInstanceOf(RPCException::class.java) } - private fun testSslCommunication(nodeSSlconfig: SSLConfiguration, brokerSslOptions: BrokerRpcSslOptions?, useSslForBroker: Boolean, clientSslOptions: ClientRpcSslOptions?, address: NetworkHostAndPort = ports.nextHostAndPort(), - adminAddress: NetworkHostAndPort = ports.nextHostAndPort(), baseDirectory: Path = tempFolder.root.toPath()) { + private fun testSslCommunication(nodeSSlconfig: SSLConfiguration, + brokerSslOptions: BrokerRpcSslOptions?, + useSslForBroker: Boolean, + clientSslOptions: ClientRpcSslOptions?, + address: NetworkHostAndPort = ports.nextHostAndPort(), + adminAddress: NetworkHostAndPort = ports.nextHostAndPort(), + baseDirectory: Path = tempFolder.root.toPath() + ) { val maxMessageSize = 10000 val jmxEnabled = false diff --git a/testing/node-driver/src/integration-test/kotlin/net/corda/testing/driver/DriverTests.kt b/testing/node-driver/src/integration-test/kotlin/net/corda/testing/driver/DriverTests.kt index 617eaf185b..cee15ec360 100644 --- a/testing/node-driver/src/integration-test/kotlin/net/corda/testing/driver/DriverTests.kt +++ b/testing/node-driver/src/integration-test/kotlin/net/corda/testing/driver/DriverTests.kt @@ -17,7 +17,6 @@ import net.corda.testing.core.BOB_NAME import net.corda.testing.core.DUMMY_BANK_A_NAME import net.corda.testing.core.DUMMY_BANK_B_NAME import net.corda.testing.core.DUMMY_NOTARY_NAME -import net.corda.testing.driver.internal.RandomFree import net.corda.testing.http.HttpApi import net.corda.testing.node.NotarySpec import net.corda.testing.node.internal.addressMustBeBound @@ -88,15 +87,6 @@ class DriverTests { } } - @Test - fun `random free port allocation`() { - val nodeHandle = driver(DriverParameters(portAllocation = RandomFree, notarySpecs = emptyList())) { - val nodeInfo = startNode(providedName = DUMMY_BANK_A_NAME) - nodeMustBeUp(nodeInfo) - } - nodeMustBeDown(nodeHandle) - } - @Test fun `debug mode enables debug logging level`() { // Make sure we're using the log4j2 config which writes to the log file diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/driver/internal/DriverInternal.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/driver/internal/DriverInternal.kt index b66f8f68b3..c107b865c7 100644 --- a/testing/node-driver/src/main/kotlin/net/corda/testing/driver/internal/DriverInternal.kt +++ b/testing/node-driver/src/main/kotlin/net/corda/testing/driver/internal/DriverInternal.kt @@ -12,11 +12,8 @@ import net.corda.nodeapi.internal.persistence.CordaPersistence import net.corda.testing.driver.InProcess import net.corda.testing.driver.NodeHandle import net.corda.testing.driver.OutOfProcess -import net.corda.testing.driver.PortAllocation import net.corda.testing.node.User import rx.Observable -import java.net.InetSocketAddress -import java.net.ServerSocket import java.nio.file.Path interface NodeHandleInternal : NodeHandle { @@ -78,12 +75,3 @@ data class InProcessImpl( } val InProcess.internalServices: StartedNodeServices get() = services as StartedNodeServices - -object RandomFree : PortAllocation() { - override fun nextPort(): Int { - return ServerSocket().use { - it.bind(InetSocketAddress(0)) - it.localPort - } - } -} \ No newline at end of file diff --git a/tools/shell/src/integration-test/kotlin/net/corda/tools/shell/InteractiveShellIntegrationTest.kt b/tools/shell/src/integration-test/kotlin/net/corda/tools/shell/InteractiveShellIntegrationTest.kt index 02aed5c099..8d382d2604 100644 --- a/tools/shell/src/integration-test/kotlin/net/corda/tools/shell/InteractiveShellIntegrationTest.kt +++ b/tools/shell/src/integration-test/kotlin/net/corda/tools/shell/InteractiveShellIntegrationTest.kt @@ -5,21 +5,20 @@ import com.jcraft.jsch.ChannelExec import com.jcraft.jsch.JSch import net.corda.client.rpc.RPCException import net.corda.core.internal.div +import net.corda.core.messaging.ClientRpcSslOptions import net.corda.core.messaging.CordaRPCOps import net.corda.core.utilities.getOrThrow import net.corda.node.services.Permissions import net.corda.node.services.Permissions.Companion.all import net.corda.node.services.config.shell.toShellConfig -import net.corda.nodeapi.BrokerRpcSslOptions -import net.corda.core.messaging.ClientRpcSslOptions import net.corda.node.utilities.createKeyPairAndSelfSignedTLSCertificate import net.corda.node.utilities.saveToKeyStore import net.corda.node.utilities.saveToTrustStore +import net.corda.nodeapi.BrokerRpcSslOptions import net.corda.testing.core.ALICE_NAME import net.corda.testing.driver.DriverParameters import net.corda.testing.driver.driver import net.corda.testing.driver.internal.NodeHandleInternal -import net.corda.testing.driver.internal.RandomFree import net.corda.testing.internal.useSslRpcOverrides import net.corda.testing.node.User import org.apache.activemq.artemis.api.core.ActiveMQSecurityException @@ -43,7 +42,7 @@ class InteractiveShellIntegrationTest { @Test fun `shell should not log in with invalid credentials`() { val user = User("u", "p", setOf()) - driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, notarySpecs = emptyList())) { + driver(DriverParameters(startNodesInProcess = true, notarySpecs = emptyList())) { val nodeFuture = startNode(providedName = ALICE_NAME, rpcUsers = listOf(user), startInSameProcess = true) val node = nodeFuture.getOrThrow() @@ -84,7 +83,7 @@ class InteractiveShellIntegrationTest { val trustStorePath = saveToTrustStore(tempFolder.root.toPath() / "truststore.jks", cert) val clientSslOptions = ClientRpcSslOptions(trustStorePath, "password") - driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, notarySpecs = emptyList())) { + driver(DriverParameters(startNodesInProcess = true, notarySpecs = emptyList())) { startNode(rpcUsers = listOf(user), customOverrides = brokerSslOptions.useSslRpcOverrides()).getOrThrow().use { node -> val conf = ShellConfiguration(commandsDirectory = Files.createTempDir().toPath(), @@ -112,7 +111,7 @@ class InteractiveShellIntegrationTest { val trustStorePath = saveToTrustStore(tempFolder.root.toPath() / "truststore.jks", cert1) val clientSslOptions = ClientRpcSslOptions(trustStorePath, "password") - driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, notarySpecs = emptyList())) { + driver(DriverParameters(startNodesInProcess = true, notarySpecs = emptyList())) { startNode(rpcUsers = listOf(user), customOverrides = brokerSslOptions.useSslRpcOverrides()).getOrThrow().use { node -> val conf = ShellConfiguration(commandsDirectory = Files.createTempDir().toPath(), @@ -129,7 +128,7 @@ class InteractiveShellIntegrationTest { @Test fun `internal shell user should not be able to connect if node started with devMode=false`() { - driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, notarySpecs = emptyList())) { + driver(DriverParameters(startNodesInProcess = true, notarySpecs = emptyList())) { startNode().getOrThrow().use { node -> val conf = (node as NodeHandleInternal).configuration.toShellConfig() InteractiveShell.startShellInternal(conf) @@ -195,7 +194,7 @@ class InteractiveShellIntegrationTest { val clientSslOptions = ClientRpcSslOptions(trustStorePath, "password") var successful = false - driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, notarySpecs = emptyList())) { + driver(DriverParameters(startNodesInProcess = true, notarySpecs = emptyList())) { startNode(rpcUsers = listOf(user), customOverrides = brokerSslOptions.useSslRpcOverrides()).getOrThrow().use { node -> val conf = ShellConfiguration(commandsDirectory = Files.createTempDir().toPath(), From a18076a35912533bfbccc5c48d7f1966974ff334 Mon Sep 17 00:00:00 2001 From: Joel Dudley Date: Tue, 17 Jul 2018 10:44:05 +0100 Subject: [PATCH 15/19] Update CONTRIBUTORS.md --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 481c32e989..b6d01787bc 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -70,6 +70,7 @@ see changes to this list. * David Lee (BCS) * Dinesh Rivankar (Persistent Systems Limited) * Dirk Hermans (KBC) +* dmytrobr * Edward Greenwood (State Street) * Elendu Uche (APPZONE) * Farzad Pezeshkpour (RBS) From aee2377f4f6f645a1e39e4c254ec4337b7421849 Mon Sep 17 00:00:00 2001 From: Nick Arini Date: Tue, 17 Jul 2018 10:45:46 +0100 Subject: [PATCH 16/19] Add a doc on local configuration for a Corda testnet node. (#3623) * Add a page on local deployment * Add a page on local deployment * Fix typos * add image * Added warning on copying nodes. * Added warning * Fix reviewer comments * Update index * broken note * typo --- docs/source/corda-networks-index.rst | 1 + docs/source/deploy-locally.rst | 157 +++++++++++++++++++++ docs/source/resources/testnet-download.png | Bin 0 -> 242693 bytes 3 files changed, 158 insertions(+) create mode 100644 docs/source/deploy-locally.rst create mode 100644 docs/source/resources/testnet-download.png diff --git a/docs/source/corda-networks-index.rst b/docs/source/corda-networks-index.rst index 777d57a443..e10db32a70 100644 --- a/docs/source/corda-networks-index.rst +++ b/docs/source/corda-networks-index.rst @@ -13,4 +13,5 @@ Networks azure-vm-explore aws-vm-explore gcp-vm + deploy-locally cipher-suites diff --git a/docs/source/deploy-locally.rst b/docs/source/deploy-locally.rst new file mode 100644 index 0000000000..9180c78247 --- /dev/null +++ b/docs/source/deploy-locally.rst @@ -0,0 +1,157 @@ +Setting up your local environment to allow the deployment of a Corda node +========================================================================= + +.. contents:: + +This document explains how to set up your local network to enable a +Corda node to connect to the Corda Testnet. This assumes you are +downloading a node ZIP from: https://testnet.corda.network. + + +Pre-requisites +-------------- +* Register for an account on https://testnet.corda.network. + + +Set up your local network +------------------------- + +For a Corda node to be able to connect to the Corda Testnet and be +reachable by counterparties on that network it needs to be reachable +on the open internet. Corda is a server which requires an externally +visible IP address and several ports in order to operate correctly. + +We recommend running your Coda node on cloud infrastructure. If you +wish to run Corda on your local machine then you will need to +configure your network to enable the Corda node to be reachable from +the internet. + +.. note:: You will need access to your network router/gateway to the internet. If you do not have direct access then contact your administrator. + +The following steps will describe how to use port forwarding on your +router to make sure packets intended for Corda are routed to the right +place on your local network. + +Set up static IP address local host machine +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The next steps will configure your router to forward +packets to the Corda node, but for this it is required to set the host +machine to have a static IP address. If this isn't done, and the +network is using DHCP dynamic address allocation then the next time +the host machine is rebooted it may be on a different IP and the port +forwarding will no longer work. + +Please consult your operating system documentation for instructions on +setting a static IP on the host machine. + + +Set up port forwarding on your router +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Port forwarding is a method of making a computer on your network +accessible to computers on the Internet, even though it is behind a router. + +.. note:: All routers are slightly different and you will need to consult the documentation for your specific make and model. + +Log in to the admin page of your router (often ``192.168.0.1``) in your +browser bar. + +.. note:: Router administration IP and log in credentials are usually on the bottom or side of your router. + +Navigate to the ``port forwarding`` section of the admin console. + +Add rules for the following ports which Corda uses: + +.. code:: bash + + 10002 + 10003 + 8080 + +.. note:: These ports are the defaults for Testnet which are specified + in the node.conf. If these conflict with existing services + on your host machine they can be changed in the + ``/opt/corda/node.conf`` file. + +For each rule you will also typically have to specify the rule name, +the static IP address of the host machine we configured earlier (the +same in each case) and the protocol (which is TCP in all cases here). + +Please consult your router documentation for specific details on +enabling port forwarding. + + +Open firewall ports +~~~~~~~~~~~~~~~~~~~ + +If you are operating a firewall on your host machine or local network +you will also need to open the above ports for incoming traffic. + +Please consult your firewall documentation for details. + + +Optional: Configure a static external IP address +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Corda expects nodes to have stable addresses over long periods of +time. ISPs typically assign dynamic IP addresses to a router and so if +your router is rebooted it may not obtain the same external IP and +therefore your Corda node will change its address on the Testnet. + +You can request a static IP address from your ISP however this may +incur a cost. + +If the IP address does change then this doesn't cause issues but it +will result in an update to the network map which then needs to be +propagated to all peers in the network. There may be some delay in the +ability to transact while this happens. + +.. warning:: Corda nodes are expected to be online all the time and + will send a heartbeat to the network map server to + indicate they are operational. If they go offline for a + period of time (~24 hours in the case of Testnet) then + the node will be removed from the network map. Any nodes + which have queued messages for your node will drop these messages, + they won't be delivered and unexpected behaviour may + occur. + + +Test if the ports are open +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can use a port checking tool to make sure the ports are open +properly. + + +Download and install your node +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Navigate to https://testnet.corda.network/platform. + +Click on the ``Download`` button and wait for the ZIP +file to download: + +.. image:: resources/testnet-download.png + +.. note: This may take several seconds. + +Unzip the file in your Corda root directory: + +.. code:: bash + + mkdir corda + cd corda + cp /node.zip . + unzip node.zip + cd node + +Run the ``run-corda.sh`` script to start your Corda node. + +.. code:: bash + + ./run-corda.sh + +Congratulations! You now have a running Corda node on Testnet. + +.. warning:: It is possible to copy the ``node.zip`` file from your local machine to any other host machine and run the Corda node from there. Do not run multiple copies of the same node (i.e. with the same identity). If a new copy of the node appears on the network then the network map server will interpret this as a change in the address of the node and route traffic to the most recent instance. Any states which are on the old node will no longer be available and undefined behaviour may result. Please provision a new node from the application instead. diff --git a/docs/source/resources/testnet-download.png b/docs/source/resources/testnet-download.png new file mode 100644 index 0000000000000000000000000000000000000000..537cb91ab0ec21740dca5f1934f8493b2f2ef807 GIT binary patch literal 242693 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 z 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 Date: Tue, 17 Jul 2018 11:53:53 +0100 Subject: [PATCH 17/19] CORDA-1516 - Adding notary to key-concepts-transactions (#3502) also decided not to include info about privacy salt (as too complex) --- docs/source/key-concepts-transactions.rst | 16 ++++++++++++++-- docs/source/resources/full-tx.png | Bin 204660 -> 222007 bytes 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/source/key-concepts-transactions.rst b/docs/source/key-concepts-transactions.rst index 6521ef2898..9f3cb8bfef 100644 --- a/docs/source/key-concepts-transactions.rst +++ b/docs/source/key-concepts-transactions.rst @@ -115,9 +115,11 @@ As well as input states and output states, transactions contain: * Commands * Attachments * Time-Window +* Notary -For example, a transaction where Alice pays off £5 of an IOU with Bob using a £5 cash payment, supported by two -attachments and a time-window, may look as follows: +For example, suppose we have a transaction where Alice uses a £5 cash payment to pay off £5 of an IOU with Bob. +This transaction has two supporting attachments and will only be notarised by NotaryClusterA if the notary pool +receives it within the specified time-window. This transaction would look as follows: .. image:: resources/full-tx.png :scale: 25% @@ -184,3 +186,13 @@ In some cases, we want a transaction proposed to only be approved during a certa In such cases, we can add a *time-window* to the transaction. Time-windows specify the time window during which the transaction can be committed. We discuss time-windows in the section on :doc:`key-concepts-time-windows`. + +Notary +^^^^^^ +A notary pool is a network service that provides uniqueness consensus by attesting that, for a given transaction, +it has not already signed other transactions that consume any of the proposed transaction’s input states. +The notary pool provides the point of finality in the system. + +Note that if the notary entity is absent then the transaction is not notarised at all. This is intended for +issuance/genesis transactions that don't consume any other states and thus can't double spend anything. +For more information on the notary services, see :doc:`key-concepts-notaries`. \ No newline at end of file diff --git a/docs/source/resources/full-tx.png b/docs/source/resources/full-tx.png index 354fc1c5e42a61bafbd4f66c1ee2c8607586259e..408dd049bc549142a8fbf571221b387ba2dd18b5 100644 GIT binary patch literal 222007 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 literal 204660 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 z zQJYHj;=j=;xOq-sCO*dh^SWqGtef2LQ~VhW#o23Fi=z!HbOW9P{2>1>6f8=)X!7nd zA<{aj%;USr^@bk?c%Szn#jV%~p(b9o<$c-AqIHDZG^}r=Dxdq-vG&AfHXHS(VM%$B zPai-S2Ls;9%Z*c9PTR{#g*_TxeMiY451;NCo@=ubKExkbb(pGI#lWIZST zwnC4raUX*$x)E8LQmHbHSLZ#$96>}SEmzg|1lfr+LqGEE3?Bk?BOS{A#b4Amca-hMYE+G(3yKcbrc&9a~hyFFWC@A!)q}mzj3PstGOrV)dlJs$*U4A z+_PW0^nFb^iFE3zYL#1Rb+o^tx=_L=x;wWcXzT^_35B;kUm{sSBFu5VKNt^LS}CO&ct# zOkTKZ4NHji+*n}i)v>Ii_^mSw#@A27&j5&9&Px8pb^Sv>aN2ELL9I!3vz0bU1{SB~D z%+R4gsOM>f5XR4kG%m-?PfQQxgGfoJUz;pnN(bySfmWSI=k=n^WTb))hcx7C1tA|i z1nq^*;z6KfUr;RXw~nu~slLOTOJ)yK>tTxl0Y0GGUw0%@0fzx(fLx-}dhM8rqic-> zY|E&L>SCW1b0oi}RI;s}-#Nush0YFzI^>kk2?28kv1x9Iv*Ab?4DYkV9*%{ zP=xD8_uVRNF$Bd#y!fkT0`z;o8BgSR(*6QygwOc94l3`rf5c=CoTq&6a67VAxTaYMS6 z3^6Qpn89&O_9ES)0a*V`0YDfQTt1uKy4^%*H4UrWDm-OXfNnlxI?@6x0%Y7hNy2eE z-550xQp9T*B5WDPyRZNQhl*2lV~U@$itvtEH;C^&F|39qBysFqHX>!Zkw{5f(L}l4 zB2#IM?LMvrkcmKP0(OOGCUm-v@E%nKo>MUl_wE&EMGLw$`kVHHN`4N3(x`lgZ^_xBnq}N5wG@({|B1k*r4(m*7tU)Gqij&K3(cj3E{kG;0igt!k z=dg2=3PVoH0`m&opcsYido?cG58i2Xc_=ZW%U(kTAAe^-kDHv%9Ck2w$<^2Ohy}=N z-UwkcM1J{5+MsXBM=N=O&E?BCf|Lm+-e@j)kc4)ew0706 zxFW8!w5*;GlC?U$9cXzo=`z7o{K|a0d}CK84Eu<6*!o^FdJp=%NY@RUT&(Zg%jc># zl?GsrEay&Lxo^*Vl&E!ho-#Z(UkUl6*719oG@?dhW-A?H1%SHo^UEypzvyx~(R-XK z3h8fHQQHlzq(1yctYXV96<2Zp@Nn?#Z-vvGIiqucyieaW64FFYdHlUMldjSfynL)E z-LyVY?NW2>W8gC1lO_zV76CwtwyHeK)AdsmbkdI9ICFWPWVh=-fX-*fviNvLNE0|S z?~=COpBeuq5WnbKk%?SC=*tIF4$G0thuW}_6x-(C6I;$Mam0pf(>#vzFW|6=1jre_ zV0~O&HGT;XPZd>d){peZLZ)sSN&X`kIkTCvN~p?^AV!2hu#lzuN&B5ioIGrVM7`$9 z5i~;LmWbuTxL7P7)AjO`8&V?oTF`7AIOe)Ic4!`#E+LlBxm4-%+j;B zF4*UF(fq`(2idy)=l7!0H(HvYO^caTO?M8vMy&GDh4}rIooKWxmr4e{TXb*8KX~$J zt`CnMIyF5kWbpAnXF~m5DKb7#vB58P`|i^7+nYu-C7e!Okqk%+g03PM;&8}3ZfT}E zEeHA{8pmKfRMD@=7Nizw=}<=zo0&vUJ8w=~FpgFWrlgH)>yD#1RKSqCORH~VVKwXD zl>W=__?JjfRLYdGB{M;L-H$6$bm50VdE3bw1AOk;0XGu>iK~CKuJA?e z87=Q4AWRZG9N(`_tXaoc@{)Zi;tbnS&8X|8@j3jhH8QrJ;A=(VIL#{8O?ESi`m;sE z%zEQPl&V5Ex+1@^iGWs$`0{@?f!kLHwC_94#iT=YL9VYHgnxRldG6&MUTRa3y0?H2~1IzN`AzhJ^K1^#$IyLxt|8HD@5!$>(DVdk*^IG zm}*ApjW7-C{%*`2ZsX=z;4Lk}f8J~Mdh%U8YW#9N9^EmSwC$vt<|)>(GLq+6XG7?Y zllvj>v15hg)32U6>ZkMhv8~j#+ofdn0jgup{IA>iBKKZGb%Ko`v!1V8W>@>diCAk5 z6A}k;7CH%RU*_DD`L6Z(x>}~<-q^>Wb&$v}BGeD-zN`~;^QFu0`cMViaGCQzec$bS z439l+m>pU*#R?)}BD_~7z&uW10~P7_!VpzA^zh*(U`|m zK2F<@CV$A9CauQF5{us;BdcmSMTS(zHZag3 zWH(H!pVD&>+DxLH?Yos>9ruQKyL$Id6yY1+I|am+xCmLP_+kEY1O&(mhOjri*;@ImtHu5Wfa9h=f(n=jJxee@vi>1Y=Ojpn|8LW(&Se4p|DxU*75u%Rlo` ztLMe#CKSk->X_X5N-dKf{S#w0#ig(=gIpoSCU*;?`?t#e>U7E`l{zVkZuN#cQNV`( z7zE<4e`@=lfwZZpY0aWfk$fzlS)MVmgp^L#6u`fFpn!&uMUB|VH_bl{8Nb2JIre8= zDw0!J*mv*+Kj~V1!C5zB=o{JFlt`abnjaF!&;|q{0A|{H#2iU5)z8&C$f4qO&j0aIHK|SqCJHeWE;? zJg_Z+59|YIJ;ZPj`~KXvOC!Ov7iH#{$Qt!!;C_ht{XP9qWA7p`k!M|2v6) zv5N7MnID5p7{bCpanbCK^?heH@9jf7CnE`qYb~hCX}GSfA(3Ys?okdo+GHNSL8?UP z{b*`QLUl;p=iJ7~*p~jKYwb1K&mXx8Wxc4K{P(T>H*}GXNY>3pjA>Sk9V>Cm&)qsd z_=qC^r6i`GGd6bZxYsAs7;t4Rq3*Uc7-{mri9v4YjQ;zExjgVunoz?={=A zPun}g@1SRZ#ME-)y2gz0`s*fF;K;j0m+&>wHBix!pteTz4ED#0rYhraV*}&%1_x$= z4A;%H2ElX!LFj)wS*gO5qh@~9rhQYnT5n|No1q<%J}=5}DaCn>L?tz3%{U@6XNt@} zYU9p0_q}iV5z(ZY$IR*sp?t(3F1he!cOUy^kr(Y(kmPph^qhe~uq7B7@#aK!`uato zV*mNr&K?%^g)-eij&+TC(QH9^`Qco5kCxU_^O0=-=o`0$p!~jkmKou|xaGJXA#V>( zX50o}@n~sjp|fY=B6E2!t$eC5Y>fVl#f1+PVrL~OH)Zn*27A){#$++>WR$e^Jmc$e z2ZU7+I10a^<04bVBLfjCRensnvPIp^P&B(!`&#bE*sQq>oCw|xuXiEh&P$pM%^&wq zW$=0-?QC#$$vo8%?jf)GhM-v4!q4jwjULw&^sU>GJWKUHx(s4oTCbF3^@Hqw+iVN; zT>ePe$beVU<H#`L^6G7U259=8LA3#eiHr*7KG+ZWIXu#6@&zeL0T zj0I)r-0_03lQh_FA6`<0dBtJ#9%x`SbxOK3y=S|Oy*IJ_-oC%3h?K*vw60?P|3N{E z>OD@apLkbHySbxLetu3@P<$=*`t>hJG#D4B!F!M!;&}0fClkZuB%8~8Q8?bAzbk{B z734hnHJV>1&=aQ~O-e&bs`IouRxx2usEW`6{yLti+LThR4DrGQu!bQ5g%jp}hjuK^ zcZoiHDi;x-s)X_Nccyv8i{k=5L&pe(^6{!~`_xHslho#qo8(1F`9CXxB(3DG7FZJK z8V#~{%5{^Y&fn!}U;*3xgi>RV%HCg4>wRev{kkDqzPK(>P{P459`H8pZFJJS+S0s0 z&*JQwZ>wZ%`>|R*7q--U^CG;!zAH5!p+&X#UqV;mJ&ube@Ye?D)<9`qSt`O<)e6uz zkv}FDIU-~KUcFQrcsWy$V~Rf`44jZL9>-=H$K92p`O@lGivJI76Pa>ofd}{aRCZew z{BnMl5`(S~ld<6;yEeau3bA#A#~`}1S3QURC_g6=Mvb(Fs!`S0 z`%*gnwDIuMCE@sXuoBW^krqbZmPO_dRiI89QH6J$?PiV&Fnd-l@E5KSaKYVM*6Qv<|9^ga)aG3gnfLp3~Pw z@~}5h7GC>JGO_1hUG3 zZH5_0@ynPfo8$me{5t+9{8qtjt9ev?F=f411sw#WoRj?$!+2S0Pb5pcBT1uSOIjHP z+o|K^+q)%9-LIB(DL%|NXsM#)-h!_EJ97(HXCuc2Ges z+C2tE$k#?b~Cv=3dC$x%WKj7?#vszTWc{`vD~PEkZe#M-xS$SO-y6BC^(D%K@slDFTSV(77$x~}hKS`ZE%bhJ`U0fI$7enD9l}pw}-B=YnrJh7I zWx7xC@I%9q6?Ix|$vtLx3QktVG#y4MpN94eH^FbrXn9!&5??UUBzZZX}k9KSspT&yo|T8aex}ed4IsIz8k+ zNM6-WIv(w;R3~C_GxKjE)fZRMw3Smtf_QaWM4n^2SyCxf1W9$M*z$&04s|X?5fz$$ zmyZ348EbKSSZohiJUX1KFnh{Aab)_U`Lg}=rX!6m84fXA54IXS7=2xG_zAqY{?$Ag zk;>*h`t@uo6~9VkLxVuK%|`BEe`M>~Gv;?aP46w$Vony@j0=Ezzy;yx>5%IcMl7X$ zgpN9awu63NSH3JbAj8zmEV6jlTE;EuUD;NVbvK*d$EmM-{fiCgwHUAa&67#0-c0Z* z{+-6tlNrBtMG`~oJ|}6J3IenQ*tyuTpB$b>PJ471GQ{&7~0<$xCTrI0Hct(6o7*lH;o^u_E}u0sQ@_htvrshZ;MEg6HyzL z_KhFxND}&5`i6yT7BX%P6E-ykUO(|4rfa6WYemB;dT6vxE_67cbbcCcw?jEOcPBJK z=lAo?qGS6uo%$Qm>+&c%>pA^xfyS;X1a^L}QYs~~QVh*kOa_}VZfY+n>NWTr%8di* zNRfA!Lf!Rg>x{>@^UrdT58j%-Vl|S8ElGCgAfMy@nH9rE>3i*-XX!>yO>6#)Y1<(7 z$b+j=e&J!_-k!E|DaLA&yg1Av`S+gYeX<}Y(_B@}3tnE{5}WUmvS&iHvau`3_+Q6Z zaE1t<(Oyqe3+Y7sIezE#%>44jqZl50`kjOO-vcY?sQxxm^#DlqU*lBiJ|;wz`bVmL zA&w{h9>AeJB=vBP&OvS;rjVx=NANX*&0J2fR8XifJvPhQ!G=ieq*Dd`&&d)lk2v3o zDV=D|JQ)`B^~cn-ZzeY`G~P?&>Mbse|K2cTpc)e0wYICRtF2|TbLTC!+aH@+h&V>p z(*(#8`OyOxdYjy|ctxMkajmVSzC44U1Fug!_R&L~-fUQrkfXkXL(bS{(Dkq4s?HH_ zuLBjujr6Irq*t`%WfB|LYeK|}0O+(`lR3u4N6Iqu|eH}HZcsr!~Q7X8NRs2a} zb`puIU;sqMmvT5RPia9j+5mgHpO5-@ImA6$m1yO4=T2Hy{FSI<0UuP&fN>RRi?wm! zSwWgvrHp%&`yv`6Hj)`@tJ}@y4|PR3lV{z;{9x~>d(siNY1}t}W3xD3@7CB|Z3_S= z6ZeA+2;->aF!FnB3@!85$_iD}hK&R!aSNZ#4@?&9*_mY5FLrigNYoRFd#E{&bXZVB zyXcvTEp}PnU>g*(3O6{&Nae%*xSd;R9{FY-sqUj!_5Ub)3%4x$x7$+?kVZg2TDn_q zxj1v$^@noG_LL*M=!{hxZbVJL&uyg8A}^1^Uby$=ndmA#&k~FpWi}y; zy|)IM3D?C`O-&J+t=AuDUtf@6cGH|xZSLLMdkM;{M>~{ey48j^{EledX z7+jeikcYTIe6GirH*UtOtl;jvnB*NJ1UMD|w|il;OXF7L6wwo&u42!*L%t5Rs+>&1 z=~bV`wijA9q5sSd&6ZE5w{sYDTVT%wWU=XQsv=<12?qS}G< zT(V0USBrK(o8q^V<`ZUF(Q4$>XZV2=hx%gA^tM6QCrUak?R#R-DFv02!|{ETY&*uY zcCjLT51OB&LjNs}5gA>7eN~B2S`?2mZk63Fdsge$24cmgcY@M^b&DQfmv|U>eIi9! zW{7{}^ucCqPh)^`4SpnEUFX4NmCy;Rj!}!z5zt-A|AzZEll#ht6S33x^#>R2m=EvA#2iY#3$lUwCVFwE zp5m-dSgiZCx(vS+h2h&TOm||RsK0yndMz$2prjlSgcdXLv!0xUbEGSvAH)7bR4U{L z;Glp*=uaEstycS+b21dlly}qfXA=^~u)AGie4I)%7FY5@3p<0croAz4x?49PW^3Al z{;63f!Y)BUbel`aHZ{m3}I_FHtaC2Ic958 zcQ#Nof}LYu;%)pp&TP`c(x6JrDfQuz4<}^x!@9^5`x@fRo1mnWQ&ZCfkRSE-)4@AL zPSF#yy~sJZ@^wwhW-GB@?!D=2x!+FJ{|Mr`+&Tp+w7rIj5Kdi|x!PW9*j76nz;ymWP4Q7v|W*9;SJ4o?C(vuJtpAl#Ig_@`+fGeA3 z0aW$Iq0?HC|5}_Aksbfb_&{&Fs`*#~4~Xs(hM#trhvT&pj5(agx7*@Y64M~isFa>} z_VSE3qcp~R8sFyAn^jU$D})DK>~f@~rRg)JPP+a^_;7nBWcX~8h`B37@kezCFrQf* zsW)v{CmK&6KVe|xR92oB7G-C@gPyZT4X?NTW}Zr*+;W%QKK0%E5hc6i_@fji!X0;b zm4`bTne)F3s?4+Uk3YmaLsuCjq>lJOx4dU<`N(T4fzIq|y1h|H zXwb0uu{#K)Gs-hmKY72XT%mp^n6Vz~9fcmJa6Z3wFM^df$t~|;iQ-?faQUKM;OA2H z_|Lu~H>rgXk)%s2L62=KN^}daZC8nNhSkZ>)8J%$;3wH;b|a<9k3_|j)D%8cU`7y@ z+dbkXIc2yxx1H0uE+aK1@D}ytMba&h%V|GFDhg^ztzE*fJfKu3$?2xy_jjhTs>Cs6O{zcs%i zOwyw3OQsBfTrh)r{s10M%Q{WW{5`|e9rlv>YL_R+kN@?3&Hku}k`#9mFd&LJ65gs{ zEUqWjAH-@djzi9`cnwe+nV1;N7Ax~fm#9|sTO6~ar;a2Wic6rOZDA3UQ$srLkM>7m z3-DfVM*n+dx0HcBLXK-MKeU|8_mJ?%S08ziwNXv_jJgdL!@yzf5Cdt*O8U~x+asr5 z%Nr&6rA{b(Iz znT&-W=rQgQ(?q*gCDYeW9!j~5U2A2!>DgwbgU((__Wx*Y?EkH`8DQcP&R&sG=a;5i zlbN~f(o-iYhg6}mcN(&I^kZ|2~Cm`U&DeZ^YeNRFn z!kCW@N=NhzQPtC2m%R>{>kse~^LNavUdBbNxSIk+VU@8DH(e7FhQT|VMW~svVS7TJ zafAaVQB@*$j6YWvsP57p7T(Z6LN5|PObg@EabL(~iE4#H6#LQNse1Awn6Cx~0;z&1 z`@$J)I}-Ag?tW4dh*#Ly5O4JY@Olwm&AY><7qMdE0KOgAc1Waiz!(uf(UIDiO?XE@DMFr@E{e1Fz+iwvF2V7vvo>nqai;+dDIatCJ%YsV`Brt}+eh?TFlpSYIZ;qk6&mT>XcE76k;`Ep z%?}OFb6t0;ocYoC(oSLa=}V-p208^L-mwL;U}KLg++_n>6%!yE!~iK+C6u+O@3O;; zf6oh3=57ffHP?D;eLG^zLvV8LMaQ?6%5(mMp{tV0zVbev8>V219z_ZuSWgy&b6MfH2#78%yJp8^J4y_@cMW2!HPj4 zc^(=g_GA9PXmRNBzM?xWy5&00S@#+EsW9==Zynr_21WuApkBwBEBjx8Eq6$`x*{bL z4Tkb03vH3#w-=N+7hwCHZop)il+XATT>CAh9;$Lm@Ry4Vyzj$@W4s;MTw5b<(5R(t zCYo&in557M?ipIK$*lEbS+=PlQJS?Q-+10;x3{kq6;-t>eSw3X%s}Ubpy)Osy1Ezb zs@HiabpW4JeFALxbO5;edWI}zS>gBE|G4QY0A&Mpn>8<#U=)sBQeWjHphAlAIzpWQeoY@86rX=Xw!c z!F_%Fs8|3M5`35TN^*z%fyF<^-J8a!YdUxv6B(kT>~vlKHAxLCd$ zl z^{5Edtf55REfX{yF!^HaOpm*)+Oj87%f1}*AF;9o5G&=uS}DD_8h$nQ!*1y~XZJ9y zkS#*1!@^*R9Mg)pSf|zL#o(hYJSYY+jPkuan(hS2Zgs{g&NP=VMsao#+5c0j+@S;@ z83g(LP08YeC!L_gzo}4v)kqJVZ`Ibao+U#|ylilPM$IS;oOybyT*$&{d+ID~fnktN z-#zvZc@c{;eXz%dJVbjK1E)#WF_FRk3`hw=Kt)I2p8141QiZkk{?dWNUNZ5)LGQF(U&Q76DH?32H_WvZr#Z zErB9|VDeWaj=VK=uU$j{fEJ-elBWM!?w1!PH@qBA#5Lt(&6_HU^p^Dt{kR1J9u}|v z);bqLs54}=0cRDMVZI2ld7Y8~VyEVt*vayb*lGR$CU%-ifN--VeUVpbFLBB+fqlk? z4R*OlNZ$Aqw?8_mA-z%YBZY1$5Jj@BJ^guO?N2IQY2KpC!O82cr*m1&@zT)~BK;U! zbCg_~8Jv(MWa+P?Wy5&M2p9eDVf_B`A(z;M>TMTEz6y|NEH6(kEpc+!)n*svAph9q zsx-GojwdmOMF##AjP5dNFeYuVDl^ZmYq##9Mw=n;ef~dM=U?SInVutDFOqwJuB-_N zjBZM5Gsae=^bCcAb?v^qA~CWZE_-rokrinaN8jC_D7|SfHY~TnpE|Fg5&|`lLy%uO zMcYZ99=Ng%4IjaQ^rz1TR-N1azjj4w2HVWz=Y8Zi{B?Ck`bjQkCA~_1iMiIu#Td{L z@5`(dF>YE9e~&(+n0QPD!T~?EV8%+)avE`CwYI-c?;P;g?C%s3bWT7!(g2Ha>#JRa2vug2h z!!0N0>rj5(M^D3*TGX6dMY-CjjZ#wfvEVwXfD$X>WYWmlNc`B z;V+7X>#rNwaL*=}gfggQ|0R%u{t-wcWxa#WZhePDNiKdAF4|Gkh!6Nzx~l;S>3Ke& zVKv@^j)?SrW6cXw=pP30Hx3Mrc-z*^i zIy0N?HIH1Xn-=Dl%!EuCeFLg{p?s;txRi5|qa3yk% zgYT$VtKI9ed`CoYQ{1|Jj%6F!_|mr=;}IMNr2Gg)1bXeYKzP1D)?w}nkDINBCytF zzJDPtE9rW9VBRS>{D_4W!fuV{gnd8BM!?@!47RtVdiDl3n!gHa5szoDW@*Fp=3E4f zRjMZTDKD!WRGLlYW)&1%I>Tj6D0f7=eFW=-cVEhJB4s{ zaLh7MHbCY~YIdwuYh)yVgM-t_!W5Ot9QUWla>m3BTMU);D$go}OkPjw=_i&@`NFh% zL5I-<&1NWp*Ib-um$mUC7qieR!9bSAF|-n{3Qhgn%&{V6gCN=h3PFkX^~m?zKV$8P z|NG6?!8TgEn9Jx-l&W-wsElgI?Dn4L&oPUkAJ>V~_&$W=RsiW!PjSL{HCijZti-#R z)HS}q#t>j?WlhLuaprZx>PyV;$!sM>$!v0Zxri*QAkmhP%=`;urGvIRV>l76<{#W< z9G$=gn5oqR9*)wd3L%9VaORK_d>e7s_^Q9hQ;~>MB_f9=&D3U3Mkc~F zaJv{CHOvqNHb%dl4g2yd;9lT> z45Hw+>yyBZewaEr4+uftAIn-PsuQ@XL-r&(s&UDUiW*`%VjMV*ZfFPdfG+Wm&MoB+ z)}lJ3K&Pz+28!_9RC_jDk3DppJIb9fat8rHjZ7aGV0cn6pPMUlNx2M7FRz37#;u zJBcS)k~;#r`X|(lEDv4VxkJBi;Ck9gb8KCWa=a)MI!LHH?$zc+=(wrT9FE> z2JR=dxace4XZlNc(?^_)c>EeCVLLep&lL3!O#iNqU>m&s3-Vg}HE@CTIH{pQNI@e6 zMEID-_QfLUst7WC5uxfT7UJG~k+N(ZMY4~R)~R^a_G5Y5y3cM*9wKf8o=UIvt7FxM zd&Ly9-MTX{tDD4GxJAFva_MOUGa_Op)r2%Kbr2gg>0n*j5W zjZK3Ntw%v_^>p#;P-eXa?eu8R!mYce0+ycjui8Y&UxAl658)`JcULS8zTtFMR_oa8 zT>=Jm6N+!$LXHOY8&mk>%5og^cE>hVfuqPh{lX_^_ILE3SeAZj4jE6anr9 zQMrPaD+ewd?hzRIIfe&ed-xlWI)tZf+nS9xk{|=>TX2wpnB#O=VAJVY&jsuou}e%RUCmI3*{6B z>`6Z-JlFnYnAR>1D#2F`WPf$Tck5V@M@OZ*o-mduWhAna`SZTgk$OLcuFmc?Q3mg{ zBMko=*VhkJL1@EjUN<}^gmg~1w`2peG+<{nQRVPt?l1bKEqeOPg zY&$j%T#Ra@JI>=3xlK&F%tb&nS9(r;CHi5oT*V~rmX-LrP?mB4 zBZ^s8<@2i}(2 zEsxZD`!ZG!T4={SP@7*b_9tI=K-a%aa@dIBgvxYl-cFxDYV1Apk8mL7iiRan{^Jj? zJz{DkQm;A?z>C)MLWtIKWP8X0^E|L&=A8vU+68(NYTQ1jd1DdvQUPCKW6JmBu0hL1 z8(UYwCAIG1(=qd_!5SgE;L#cH|N$+rZR zuI391x2i@QUON0*T_DoY%ngLm@TSJR!3*{N|CTFb_w79G$(#BI;A+3#=KnvmN-c}b zUo=+2(jr05#d^S%FKlYU#!P_o4r#X2d*%H)cP45s&+9~dPY_I3l#;4=ICm5D|3|9C z`$wwmHl12$6AX0%UIML#{equtTu;%?a84^qnH{iQW^0?zzpaMOHEXMpBlPDw4Wu?& zVut8jX0-LR>kCk142f=48(eKt^5x_`P~~%$KL$4j)~pUw-eGLcuS39b?5H(w;3PJ% zr(wPI07(V*AH_DiL41uHqAa)h$*ipe6q6JNMmp)hVFrojHI5It5bVh$Rz!U}nUX-N z(`+1=()&w4Uz6{f8_gfQW5H9u1%E1(II#9kw3c-?ySV_unRWKJrA1mJX?8Z{C#6Nn zg~i|l$$8F|5Vs`MT@LYXLYr;)DuYeoLg(5|^;J<20Trfcx>V{hFq#4QiZCl9%k#FF z?`OVxQ;aVLmvJ;nh6ex&h+_ai4GqMN{Lx$V{XT|G{-_RXB;fZ($v|XnaLD2`j?J*A zek^tZVD56|8Zb8{X{g`{YN_Lw&(ou?owY)~-!@dw__Z&%C~Is2Xsx6~3egL?7^nyU z=*_)(ysjJl*m5;ffmwY5k*Y}ast3Y0SLfv01((GSGofHd&FrNjgR2J zA0}I0(Ugu=1qe=a5b&ARmc4(2UT}Wi)svj3-7)>Oo37e#JJU8>qYpmX^!yUT8}b}0 zECKyg-tIKxanW*VaEgVTg?ZkxMf_V5L}d4BBX!KCw-nHd*s;Ys4;?L5zLOlM z*>QxATUOCio7um4Go|z1*`4T5oP$0mCn>Fn4FSz75u4gGL z(Rb5i#`(BV^#Ovg9jF}HRbPJ(i)_Sqz}q32m+irg@Ux?p{V5Z>3F-Bi=h##HM+4fW zuH38LmT}2hettBSFg^~^p-H^X-5Cyv|5i57Sb`~ChHq@e(6y=7`heQ7RDx>ELMAkXusUM7opl6%dpSwSS2M*wjUTf%EnINF{RHn*s3CR z#HarGSlLiK_)=dh60#yOzihnze;_J1Z9ibM_;bImz!41~y}h&1t6JaPk1KUeFTBviT+cL(XRjZw``GHKN9w8{dGC2eQ;hL}{ zwO;7dveoWp zHKh=hKBz~l!9*o+=i*7W^ zgKzeGCEUmuR)KBF2XU?OE6!Wi`pD@FaZse8%!tI){WQQ3P`i`t9|PT|BH|j^F(WW3 z4CJr5&4^j#S3yiv{59y8*%S3OLQGaWw?wICc8;r((*eVE^Ix1J&gl?Df)3HO%6dYF z({aBf&iU2SFl9*?q6vmRK73f<=Rf}n`aE`d1Myi=rHk3_#8kSXBVg?Sm+^Y>;Bvr= zHQ-IVqFRR^8|lE#)LHfKWLOIp#F}WAOy?Fw7}FG)%ZG8^6p~v@guPccoqz+W384S2 zN2<=~XoNTTO3K91f$AHLgl~`?ULRg$U)JsFf~S38Qbnz;1xNrA4<-F0^b?^@SZABE zT*rl`Wp1eCCm*@;Mrfb_D&l)bQs-+IA|<9S6u=i!W4L_1Zr#sB?qf~v^7Y1qe0|}B zY}~hy&bLcs`;x5AQ2jyaRe#0<&h1VFXeI0VDU5cW{8x@%+TTm&cb!L2i)=3RuN#Ov2p&u?hQ(0(?OCRQiOf-U`upe8}w;n&fLP`OAfYjNO++l$EefKqr2KZThaY$!QVVuDTep$b4Q)dQt{Za!^3h9c6Zy zY;K(i;1#?qUlPSUad>{AxF5=CrRn<_h#}X2@Pe}Xz7GQnrNdOzrpGkh!kgiquO8kH z36S)kq$zD=>uvG^-GJS~i*tC)SgJ0gcss=yf-_&6SFJ2r#*3^`iafnQDECW+e43c~ ziI*Fse@?mO9QqGn6|%n^Ux-l2=&|=@ub+9pjWvHhCUxo>S!!M0God$(AfUlBf%yNn zE%eWPdg+=&w99|5*ygH)1;$>y?G{FukTfVT5Y?!N(Sc0pL`q!N<=yvof7N*9nNGlRGob#cIru5}R$w^F~$*oqK;W$!< zV$B8P8oTYGQ%ahRz=7I>yiu6ZSi{QSwl0}(5u15Y8}oW zs7p%Z+byw%M@HmZoq3p>?jo7lKUFo;`rTrZ8~`R&u2TtJyutYF0zFxwDWdhMMX%>Z zKwecD93cgcIzfi< za9f|+7>P<5jeQ|0o?nN|*htfgs2)h*SsF?H2%O%NY(>!0&@nYi6k)NSvf;jA()V>L z`tq-jEix7uL4T3(f{YCjhnL)PV(lkEK9fvFEvDQTR?6}=Jm#j_n3AWvi*>?D zFbpI(9K|t^p_%54K>LS)JC|!~d2Jaj5yGV1$i*i}-jYi4m_bq%O}Up#2`C?pe@q6) z{J3xFLEmLxp>ECy>vX(agR^e;=Y+%G*<=juEuZPrrxBV+3!-*Y#GWU7=7r;b9yS3= zd8nVpH31Bu>GKO8H^dm1@As4ZLm=fDu31q>{t0%o0pq6LYifU+$qxsBh_V>LLo3}C z)(qApN>((GH%0cn%Isd^0-X?BApC;oW1in^JbKdb4lu9n%Jye*?`&{yUwgLa?(&qp z{>XN&>xMks50r_kjlbdazH(&>cT()m4G{H`07X0&TQ4Rt*d`tebA&2yI>@PTZo3Q=B1fT68AIuAEC4|V8ETISz`BB|1YT~*LF52j z*M~)d6Ik#!Bc<2&vyQKE zMO=vg)zk7w;dmImsCHvPh0B#w59O|Y2(WO7oevfA3knQGR0!(r&#+C;t>YA2BHJHT zn!jkZP-jK`(o8;Ff&Qq!3f_J$va*VS2(#3w8QLKvtcg{(e+TX2N)1!0#*Gp;WGTN& zyhc6D!DB|Li}D7sIQg4Yd;fdo%U^m6+k^jve}~ zD`-}Qw#pcs5%LO%jJ3J4`qF+s5x%1zI1iJeKD~!NeXgnV4<+%LN1{*`7YCzmV>w5& zatOz@ri>BwiU7wU=c4^>2{_j?Tu^)XTv%h45HqX)>If`*wDd3Z!mgBZg7qsrAfI#0 z@Ohl@)k6_5xbU)!zh?h_TIhpx9B5Hv$RT^UO+N-o+7LwsygWAiya z69hB!^IWW~bII^);1VthFG!n>pFyMhxX`wuv!*|KBFve9nVsqFkYb}UO6|mIV;aX0 zDzvypU#dZw!`UAh|Q9-b_hI3}G(P7U8DMb7Dvekv;W%oZXbHY*6aP zMzEd4*y3QTA5f1_*qj;3R0%)kwx4Q$s}&n6q;^LdLsz+T0;$a7eOD_a4)7sCtILTc z+s|$-hjwX}=P)@Hki0>rO@Jl=DVO3afe;Bx0}4;Wc&-f@Mps@VMYn$sSrKH;Pftfh z--5o*DjNYJ#QKIfy`+-FW`55ApoSB!lWxi=GJ88=Fp2YWJFj$bGg81!N` z8rbKSe1v?$D`vc1V(PYfqbZ00Xm=V(q%2UBzz+_@k=@YDHM^eR&}Qmg-qA1A(Cp-Q zKXH>KI0UOHmOEFGg(^{#0eHA^$o+F=*2I$D1VvH%O>d&bQS^`JUG$U*Jde#ILNdbq zW5{4_dac8t0Sf)|Aw5B5Q7!$lB*k_N;EjdE?lyKK8k7Kp}6f#VInVn#VS zya{H*s`i9wE7`CE%vGa7OyLgYcT&OifMl^271s8u2U1aX%AuVX_>XcqkPrvTt|Nj%a+qA)Y0=^z@$%@qBR_WV#0u08C3auWI;?z zM+UXk+1klR*Ssj)01Iy~X--m4P5@tJ+!<`g3o_jN zr#I(}#}IJN+@oo*uy)qI4jp$;+I2Am@s|8gOE(Bme!fM z;NV5r8;nJMLYluXr;Rct`veFV0Z+Fre`3u5VtCVnonC_@oqBq#%1r1e)og%qsrul` zVo)5F9UbRv0x8dxW zQQ;I9)Iam=?Oa6k4T##TB~0_CwsM2~&s`3^vVVLEfmc!uOvvQxF@?HbR^3BSx#@=P z(`VN&XQ|<6psz2J=NL3VDG;_|gsv3n6B=}}47B6%?XD@eN|7NgZ;^0~V}kSZL%2W> zpZ@&=AMMsw46h-{W4>3+$PV+r!1iZLHpBBXU?aA#!A|~-eS>1p4AJX5q5;-+;*Dq( z0`a6QV{wmJPm;(GLR(}5IAtBl!T2I2xvS+$F-r-lx0cqO1i}9B(Szu)&3B9#5CN;^N`s>6$RpYF$o_bZ|}0;$Zty z>z!8xzKGmcl^ssriu8tOR;7+hV!Q%pGlW=77JG5%OyE-@7E-Wrj$dXCB%a}g5L32IJ^5; zYZva9*7YllZ{Q=eWtP8p5LukS0)QjQU9%^H08zu}_i(DD8G9wSVHhXu;npOr-fi?O zWaUzS3eH?LXz6d1xZy*-Co1#n$%f{Tdas!yak=(CV|Elo@=Jx*{XBNKnjD#C=5q7% zp*&vJt(Pmygkv;@_U&pZm)cNRaTT~5PI;t~HN)Q*81#CLr$#ED z4j$AcO`8qhP*Aq_0ql5~F`1oLcHkM214++!LXW+&-ZaUJFL8Ii+_;w<(J_gmK=bsr zHcAfLE%|k(BVBawILyTz{u z3!{(lb=1oM;Ch0#I8K1bXQ;bNaK*Q-kvt1@o-L&7KRF(DFc2nn34r!LOWwu2SwXwL zYc$a19&%49OG@DQ8)p#k(F$&V`Z-od#&`1xs5clOMwL<7vI|`RxkmhiZUD z=8TtY@P|wVcGswHE!4tRJ0Dc9ujmE)XK^UTTC#4C$`&747<#kSZD5Fs5aiV(ik5CzoJfW@kg{RdH*UaX8?j(t8tMT?Y zO@WNibxO|o~a4lz0nsFf6nn5~JcZvI?Q{=A^A5gN&^y3S%hNWT!>@2y>_WX12*7;+3s(Uhkp z65?$+k%=)ioe*CNU4_2oD=5JDE8ydAySFp#8>u2WFMr{mA-O|(MO+e=XaINn z-5aS)F;&i7OLNWz@kd9b>B!4xlmp*ubpU`lpLQ}jtp@e`R1-e+&kF>3)~6|4NAzG` z%#Pz^*~o)7unHo`XMAsAOS6sg%%n_^loa!t4;;y=Z%jM#{aMM>czD+8>*!_0>jrGY zlh;l3i~qj;4pvd+36_l4rmiNhzDYJ11JUQ2YSj06L4zp&?!=M_?04r8aP@=!O|bxa zorFS|&RhO$>J9q)N&9{#Sk|{bByO7wW)Fk=5}xk{HV4`tGy$urANRC}|J3$7!7??q zVXCeVZrcax-d-r6KcT9anJT0gn@M+cwnQ!F9(Is7@#!Iv2G2Lt$?&_J9d#@ zbv6^YU{T)&%nJ1jH+J14j5Q6?;9uFzt4&8((bu)ghN&h5bCFG`-jYX+|5EBH;LQu4KJ9IgC~quQoYfb zuAc5GQ*$%K?zk>i|Lrj!#$nFz8Uh|O%|`&OEhQzm3#FpV)R0W#5!7kz3q)~=4Ez&D zJ=z6>_?cHYHWiL!(E)sAyglKcjCSXpsc$@QBkK_Ux=PUn9sL9Vf73hU9LPl zmE}W1E4~2%s2-Qt?AE8)>}*e3!Xl!2Yw7BW)w|&|Z%m-05zHsYv;Bp~-Ffh3T18hG z?{V?=%Sc(f9+ds@8LiDT-DGBrBUYfN_j8@<-WRF;gG51?+n?d6r@x>N&5HUFCX#Y* zOEwYUa^m2`I!N#@5=x~^-kR{t%==A!D+WFg&h=zhV60OJB4}&S<}$RxVr3E{{cXBp z@(lhqy$s7?Gj&n%zN_7R04a_i=J%W_&@AA&fH(lYMS9A35q$D}1WLo}cSH~6 ztvwH1@9*aMeVXm6$zD&P7e!Zqm98#?uoYNBmLPe&Q`(qhO z%*A!n3plFxDA8cras}dZ-7^6Ki;lx})Kv*Y6#(g(w3TF;?S9WjixXu_;pFykehKF5 zASiB8DBG?YwVlm9d)T}ydWc#VydR+{GbHjtAZ%ZXs4+4P)X-!Y5|XLy_rlG58Eush z1Nl9=M%1GnwOkP)deb(2`(gwD!^W2TVv7P3L`rA*#w%ZW$p)w-j?P2Hz1ON*kS|!U zy6QVSyrDhb`(%9D+`Eq@nE5-{lk0ThNC4e(XXxDetf}6N3(_|^!NFWqRa*~IW{Mss z!;#M{5-84lwA>1}`%OMAQ#bbyk*C>g76l&%Mfr=wpBptFYN>PO8M=2y)4oa@W=C%cGA&x$B)OPDt0!T^(22&c0OwBlTfQP%`dg*#d{JS^tYqbPM+Bc$BSh- ztlc)Le>e=pn)q=%-6lGYBcFMeDDf1@5DY^4zuR zB$00LEz@&Tho8CubV?ZUTM@hu7(OBpiTf3Y_Cts16l33Pa`zeJ<3KsU*i_ftSs>x4 zGSuW%`c_gJd7)_V?Yjqi+@Q=X;?-%)n5SQ6i!MN-^>gMB2FS`76N|GBB+0z+YvwE zmwg`}U`X^ZsbWtFG@2&Dn$kDkW|xCsE6t!K@urUClww23;N)d&7~0box~#nh<;N4` zHiHU9rZOdr=$&%c%A3%4-PuT-w+{>tR{n_YFoZcgiqJDZMyku)5Ys5;EN8+@&MYrt2n9A}M!V43ixRyP0bv`A#b*l~e%trP3tHPK<@*n4m5@y=(y zW$s|<%-?ZQYys%-s*FqU;YPeVKCA5HN#Z4eS-<}-5*;NC^;x{Xm=N6O_Iu)I!V|r{ z*Oue&zL#Sg`m)+`6sF6jLZPcAOeilf^G;QqRr%S)#F!q*Be)m7-G6LQoVF-n-_`!p zo0>C-PNn6sM(@a1wGCl~4-A&_ zl;OCX>R*2voc5t5dm~_)CFQgh;e#a2Pxzhfqk%t!&I^}!kY@;BmK~fD@CjlKiaU?!a*{=^!Vxw-?5(Gd{Fh$@1Z z*kL<6Mzossk&kQyad9j5GUrmGfJtXQCt9e{9_ds$zgE=?_>r~iyf(FOyd(ka)X4Ok zv`Xh=@*N{`p#nIOEqHThEHLJ$c^yhE9wX*(@rmusxUXcE3aFU0J=JxZ@~e~nx6v|A zwGDZBHRylKq<^m|M~=E-3)Y2II@0}Aj9`_-A`(UqdrR=A?7$H?#uM=S{U2MB7ZTJD z+`=K0RYlc(AbD}(zVwnRZ3&%;&r2(_p{^`>oeL__8_=AaPz*gF((#s0v-sO_+(g1r z`D14}gQv}l!3(iwpXO_;7OqA!q}8(U5Ht7brQ;g4oj`1g zO24ukh8352~!`fq8gjQt<_}MIwa$eE^m3S^F%Mz4j*_w z;cFbn&U^Unro?y-3I%96s%%1+t=pqNu6B=DXH8a5_y*;Een(LDj>PET`2BbHSdmPM zyG`p9Df`43ffKn=@ovwXAXR>eMIc$WP6_##8(rw+hM*MTn8+ntV|0G(C3L2DR>gN!_A|VKwiNSVb3X|9$ z!doSzHyL&&(c-VI@-0dN>UgoL4NsN@9JM9wX9Ns+zjZ*5noIy$KPnoL`Dw( z77Yb`!NF%wyk3rf=7Jd^Q%{-wt%NUe2x1h4ZoY%+=!YCcd;7p z(2xWRiPK(QbEiq&$F4f@a^oW|Ec=q6!j8LV!b#wlseOyt=@A$gyNQake%-EX4UDwS z6kQ{BNZy6r>)TDFY8Jtq#$63e_Yl?`;~Q;SoSvx%SASYJptZgF>0lRagP2aQRoun@ zd0#5}J#c~WQZQ=ZwW9#m6~dNWeFFjjIQ<>VWJp9%;|o0(;BW!Hv;$>w?vd{1NLhSC zMH!}Cjo95xcy0G_2BV$OIj`i7(>MjWjYnBK%;hSv-~1{3vBl}iuyp4YMoo3EL{^dG zzQtK>XJY6)1`+B^!+gL-{Kl_yKpsBU&@06KVYo+7t8~`Mtj=hl*hkH7+H>B;IjSGm zg8aOIz;efzH^pwjoEEZwbM2Iu*M=nRJiAb3P6s4#Qm`>C`3?g$+xH!@s)1x6m>1Ym z0{*xl!{aousy9~7Oye+^X*Nj2}liKY-+l4;dD-^K(H58z82eL))w)rfBQ zR<_F#3NSTyoLW#0NVGHm5sdlr;Lfh<+U+h9)kM&eeWW=fw&?XyM8UJ#4cN`Jd9oRr z5s!z{Rfz1*wU;@a+%wd@r*546EQT6wY>#`5d1WUk41>VASUfb)-ic|=!N+P z?97u+g|r4(iBvS4D3h7|9UYRF^^J{GSfsR&1CcN>-5OMnsTe`d6W;Srdw+&31P4h4 z|9Sna81-tVC0AF$uDWRPL7!T@K`sC$_IiiEUv9EG>F8N_#9}B(&TinZ?Ju~Cm)n}^ zgW402v01(#+@_(E`k4_L8abI_Te% zgX}uHtGp1aRZA}}WZ`Vd8e3-U>joG#k zi>X=g#8zuRF5*DGp*;S!J&dMTI@1lsE@W5%!Cs8J__i8bY*FsLP-K)k@pzpX<={QZcZl?dxyidMUUSjO%g#6L>Y1;B6>vc zLXhZ;UL$(1qt}E8f)KrTW-xkhNks1qql?ar-s{Zoxc7eR`+MH^dEWUa4>9MQz4qQ~ zt=m9`P&db&Aj9^dL_?nkdCtiPBzX27cj3Ta`Pb@rbg;8{XO}O#fFiIntAZcu zhxfnA)0b%)EPUsp)%@s~A57S}zk}1I$8`lWzeFJ`>yMeWW`4;mDJNCZ0y#vWJL6U9 zbc3Q?dUCt>FV-D}z|CirtetP)#!{U-i_=WTFvqDpYn+yvYsvEW>zDa;=RWpHov&OH z5EP}}&&arUMpYn5M{$3YzUMvA=X`wm)dN98PSdcgT%tvIreiT;UCIO&8=gd$-5=n$ z^LkT14P@ag8Wr2~i<1i2 zxP=pO&kd$i1A2U*A6;3OA}L3iu+46p^5omcxbwPSI~4?3O*kUp9m!44>waZC8iP`N z;b4D3_^pM-1F-ca{y7Dw?0n3H@!7(|>$b}=FC&lM^Z>oKr%`{p&RS!| z(h?rHK*1MQdKDnT*pqr~N<+zZBFu&C@{w9eeYoBNA_E!4D=;*OUkN+|HAcmmdgB> zmemi>f(Jhw=;x%jY0*rEWZNq1>!Jva)S<6PUdvUoTd35EECmg zmP(0_I=}Lr_(uA3^(}wPpg)fmdZ7Qy+t-Toc(LRjb-dvml#M5DI%F9lNjpR5a^)Tb z4~z6?YKEFmR+S$uXcrBd2l@gjj0Ti>2LZCuqzv)v<5h&$ve)j_U(a$RqHg;3cYV$1 zT|JGj`+5U&tX*z=uTTa5FVl+b-`8-3z!d*nq5&7!u2JM(iF=>ipx5wS!{NY+&kElK zQ%wEREenv2exJqmmeN*|^9idlyT|K^7+td5t7sK0BcYs}6nReGGuwpcPQ2PT3^VOM zN*BthWj!rcjLnR>p{gcl`}3o``khzba0;hS>-$#vOrHzBGaQsvKJ#I6dL`&$?!20M za^^#x9i;{WJ-Iuqd?h)2rV|0?N^Ur0Z6iPO#X;cGhx;UR0;t@^;JAPv_)wvXMI~-a z_WdFT=wur%gGz^tD>EY-w`O5(s=PLb7_WCHN>Q~@?RH;}!Q2$NJH@IwY!lD#c4^7% zJmO(+JVe~z#V=n^bn=LvODplU%Rm7iX6fBLch2}zjz$F%BTHP{OhSFl)|Uy^{z6{& zlZeVe2Yv?3fJm$b%OJ;vf8{TJ#vXC;p?U*{#Md?nM7S7^-nU#iKlESidl|Htq;a^| zg^R}Lp~LtyM)T(D1jf|bg#AY+Yl)MAhjPK@a6KmdHo=NKKuw0#nfr`y>RLYTMB{8AR{DfapF%UsOKz3b?p+Ob4E=HSnbBzQ0Ws zr6sd1q(LWy5Vc9L>a#b`4`kNM_h@Ik-eWq7l(9&Zuy5`m?Q&o zkOs7=%_m9r>gu-eh-;Z~-e%I+9gxig?ufyyiut`PiI%^T7WOF09I5+hsY)!}v38(& zwVt(;(FuhP6HVy@W>|Y6=k>g0vG*nFW<#HR?Ts~gVJMnrO;}!EXvN$BdvVz@mBNjy zd|j}HQxICYNbZ!kZ%`HGUq;7ZTWFr~)8ZuP{k)2)-VL|oN(z66nj>eDK3cd6tuUD{ z8x78{F+2C5`U>m01(nfybR$exj#0dzPg$?L`m~gloen0_F0Wrv0F)$Jm*-_g%+Pu{X%yfee>Kz z`LFL$_6o>)QGc$SgQpg=Q+3TeN^36ph89M!p$+^4*8ydVyYgPgL*%?>4Y|q=E>boH z+xkz|xb^y8ycES%wQvP3M=)&tHMWLrD35Hi3G+gnT%NTo;LwK)8f)`X-Xb*$3BC?8 zCbKaICuTxWjBf-K+06aOpscw3__uH3nycLE8O(#t*}cDRrdqW6fq#8kH}ACLCmR|= z*C;PjT$fK?waX4xksdd#z>B2gtvz-0tnz9w42hmUh1X~CuF<=#BXhm`?;22NMY^HD zQNlt>Nc4}CI2Qja-sW@NdN=a8t~C12g9O!5rSA%gE=qSuSEC|i*oV%nnB=b)>Lw>#+g?h%gL73 z5w`7I)*y`+FEzEJ}yRJ|Tt)r5uL3NZNQkBr-UJSL9yOGDU9uz&4-vw(wUE zR%bNeb{m~beszqko%^F$zG{560UKg;Ls0F$I{f-GlpQk9zUNK}We3ozZ`<|_Zdz0{h z%F=#sbLqFIP$R5L@n>Y$bW7GcVST?4ORCOZkP>d<$aBndd}h&0;d>`$e~lhc$YPt~ zS(DvZI!}41PEVS-t7_Y1rL)fto*?RSV1_ickbb6Q9k(xL_NV@4$YC_*WV}9rIFzU1 zF#cYHPvuFG^dQ)8$L9}h4%Q{?pgLIKXWTNP|MDl10mWDy_>6#iO#DnZZQwMRdQRBf ze(%q|rNMEIx9jAU3;6=HV6K|I9ak`b-Seku{H=es&6lymw1z!)7c{?mYhmQqKQof- zeLst?RTnN_dH}|WL1mLu2km(oTy=tkgl=_$2VI0{g*1#f3l0`UPsTdXCa9?H#Rrl)pMRGu1%K2-hS3ooI6w3XsIm z`2%oHP|zN=_*`$yH;KZVpn%9#ft*qCGfwVZw(JuP^qF&XHcAxUC5X!^T%IO3IQ<6H z(l2u(7gpK)y43@no>{=NHb|t1InFjM29)pZP06(TG|6iDU4BNmw#+_O->7$r%eKGB z&r=D}lluNpQr1eqOW%TSZ)R)pqx>CgIKpFv`Do@mF?+ialJNZNFe6S#KLLAza-AHZ zU*AXh7xWsj9nzp3@vUaEB5NGor9ur)4m3wi^=oz;8!jV0NMAWBned0vv2s%jb9#*K z{(Q%Kx#Y|JDoscvNNDCMN3;6yZJn^kBcE3%qZ9Z(llxft(0zOWt*b9^6ujsV4+;ukf4B((J^>sEY=X3yvSeeua-nR0lZGfk0;`a?ysC>m)SdV=7{7F<(7~>W(8a1B_ddtI-V%AU7mQ>6I2SR| z{5nBAp@2^OERdslPv`(V$BXoR(b+uLsG&XP((f$&#ye4AYGuS&>QVDzX9VP{e*7_5 zTHh_{OwMM2eL4>~vg@s3V}t%5A}alO=Mbvf1GC*LF`OP5OP4dz{)Jc+qxqvIZsN0a zrS%Hwd6%nKh^Mf`IQahFJRnd!coZVu%Tw*{q(i{_IVltbGI;cp=vt!d=z;X_O9*=SLQYgaVV2Xm zY*ZEVOI6(ZlF-3Crtd|cQU;eazDo&b=T~IMuCzd%g&x#rtob0XkcqnbHqHdBcN0}` zdLyQPa@M==g~-4dRw`1Mf`?$WuHcU#)LYktDc;d(#-){-2$@LI@Jtd63IHKBMDmcY zxOZ8UCQoKetwEp$x{u)N0SpnQ7J1d~-9P>8qNp@f^ZM$0tIa0$kY<5@nL>g8xjgs% zjL%Cr3wY$3ABWQHF%J1hz|Q_2p?l%dVN=GPS?Ro_J7fWtIp-F&>oWtW{;pl_+sZj! z1oKO;m#a!KBN%+Z^CiTIWSxJs=r4>Is2@LRi%JT#i1_QfigLU2PuYUQy=8Ccu|F#y zy%i#;4=oP-w>j2Fs`zRbkgoB%jo;<%{1~$AbMDD4neYbCGY`KBT|H+VLyG0HkD@NP z%EbNRGlYuFLS~NY94rb zykGGa2~8HCR!>jszJi)Od8(c&o#JC(8*K!J$+vF$pQmP~3BaP3aF8SAtGStn)B{>9 zhkLC9Ds5OPz@81*<0_SWF?4CdZZk6@eA}6$Fr0qwIW5X12obJ=4|*aI315pfHKu5W zGS5FMCjv=m$&}r^9#%v2Ic~BLf=kc-O!gC6Ch#3srKEV#Qe-I_C*3CA9P%jHt?x^N z`)3Y+yH6bc2ldMF*PBs^^D0k?6B|6x?ElNBfOie6%i7tLCv?#{d;KuY7yOVk)So4b z({oXgd&eyU@mu4vMp$A&Tv^);DeYRMct$HdCs_RwD>nCwkuYYd@dV@Aai157&j;q_-Ejd*@e(QA){Yh7w_DmFuxG`T1$@=<;Rr z{M@=&+U(J1F*;~UsttdV-Vh@R8U(u4mo;D7G>sH{Mu8sB8a4-kBv5bul~odeM<`j8 z@^BJvGV>1W=!d%0S*?<&f@he+nLNXSZbxM&r|tI;5xLM7=Kqn?{;_2L;%Dispr|Zd~aDVGc z4zPF5StKA(&mZb*W2O2zF8<=?GL-cRMFM zLgLPo{-hB4(M|?Z4P1)&sjm+qPOD&4-g!`YVee!d^LuMEa=(MwL}WIh@l&XG81e1L zi26SYkc)ad*ur5_N2$S|x$Ob4 zHJyaBi-VqKe!COCw^+lmp7Ttty2Xill3t16NrL;b_Gy{eBjJNaYK;0l9Dnk@VZ&XsJw(1AKv>jkMKx}xhoO!RyPbS zER8sP9bMt{5P!EtB<15enx-~NbXzq0(J%%w5|_ZQlruc>SB`Yuv-41V^0-4gz{2NX z9ER(CcM_vX$UU*;h93}~jzTn24}~zzDM4E7J4G$nOW!ntO$PTj^K%WzBYpkzQm3%T zA`&DSEpj9YvhoFkJZ^RZCy^MzvxAffNIeh)+$kJV|7{`8Za{7$!_g_eOM|v#&h|Hw z2GlwSSXh$8sHtJEoL3Cd+JdT!;JNb{yCZcl+fpwjrg}1)ColUzVtco8wb-ZBzv40aR^7dHkr0)|F`sh zwlbd!P*L8(`=t5%j30)^8V=1-HHRx0*KS_iq8DL(y7!6Ag-HlT5I$P}$$t#+vb%I@ z^av3sufjJzt1Ku!5t)QYuIXJ1FXn8EsE(6>4!f1v)(zV;y@+Y~wt0OF$bdeJNN=%@ zAz&cWb?>gCzM++j;cqj{db%{)K_wdByxBC7Q&P_iiD zyE(|wyr64Pej<3(r3aT^>U^tp$YaFyl+$kW*l{xE!nHjRi0(q`(z-oI)IkAm-?5_C z#x!%QOYaXq@~^xNy6Ye9KfcGmzH+94V8&(I!1kPp3}ClE)w8WA85o}DB8rQK$YtHp zVeUpF{&Ts}FFkdOcvz0hG@ zsq}O;-4hud`&XKfojo2X2%H5Nl)HyiLNfR6E%Ev_B{2T=+T`;&5wOdK;{I_DK~;?| z8aq8)-qF+p>AbZ;b4mElu5QyD+&BLDIxxt);a~2YFe>2b{=aV6rK}qeP+)kI@t16e z4BL8w5c2J)dJ97zX^S4W6g^PpC!hxrb3+;ZJS)2r-^~edCm0y=X5dofv1#X(*+(#6 z2R<8cGw=5}%DbiV9QAL8hld*uN96n2e+s*Ar_vII416vpy9>I-282`^UI;;5g=pPx zfk0*Wk-}5o!6ykxVYfjIFACbS8iZt*LLkPm=52fFQUQe^c#Bh0A zM}vX$oKBJAAXb$=IZM_ecQ7KYI4G;Rj}RnM1o4wBUX4%6k_}}M*C~$XGM~s3P%no` z=!C*pxN1ET3TI*z7?r^=OBeZR!D@G#@?$#pW~<=eR0f_$9*SV`uCI7i{Kx)*$AB6m zp`x0c_}OM4`{oS~hhn{WPeU8+_QR0Tjc0v$Kjs>&JBcL0X%t{#;KBa8{KjX+-h){U z@>|Hb`@2GZOQx};ll>wqlh9Hx;2r%Cx6C~@#QO;xIR)-X6nQNew|b{&v9hYvH1zXl zQ{U7fI7xFH^}5L}BZpS!Ngri7U#3YJj=;4k|7YYAv5p%Oz&jm3ukTC!w-4<7r!Gfy z(#bywrv07_>Qz1@S=d%$nupc4u?AUYyUDhA9TPuAE@;NXFdrz3gdVw63e0I(y^sRi zqYhPanejmDku%1T1O&jcxHjzorMO9#-8^>OBsZf>nktn8PCG;)L5@IQ?&fplL>rl( zx`?0i^Dh8S=yfXW`Ss}K^>>Eu{l|BK{ZUhPQj2-i)xO2(lA#s>!;^q(jzis38uA3p z$nA$)7&@Ww7NAk>%JQDnR1HV3Pjm1`DzB<4JG;P0dN`lP-DYpyEX(JAtBcnR$iE#+ zFtEvOGi8+ft7i~x+K8AiA;``3ZI=CnhB-ogp%utrhhwPg4$7OmEQc8I;M+Zrj2iU-KaG%9AL?P{G?*=@k+)_-WzW0 z8?y$(;`?rr@j_dyc7i1GP4@DsxzP-rmVJruAKi$@lCs_AqHT1AVbn>r@3CkT0y-ZF#22R3@to;~i`ZSj z)J1+=`M_=i1q=lJ`?vzY<7z`!yq*?}Jh-8e&4g94vj)wM!CH5;dflT>i!-c!KnL*; znvWVw8r))SJr#eNb^1&w$T+f?L8vS#aELm9D`AUBJh& z6zDG`r~y_;mtXhd7^0Qflbwj+EzzjRk&*qBxC7fR3(0&ZnQHkr17t$}`e({&UYFej zuP5@A4sb!g^{7?nO&Q+-InFgkdO>u^^H{}gdXzUuE(#Q=0$Q8*l3^TStqU&s*OMNg z6aWnC2f^R!BZL;=ug3|6yWDchQ!iLjQ5>_k)Bj#-7EWoi7i>1k&|}p4j$ES}O=N=y zx{eF$E7(o`U&F$BdV+9N(b}KJ{uds5I@1~rrcG2(o&qH#-S9jX>+ZYzQ&z~|T2M~w za3hBk+beOjK|bptpGgbtbX^`Y9`oA`ME9Se3kzA11@mKQ@yv`5Q%+$a4P@0q`?YOC zZks`3LN3AQ$IZoi?#+vEvGcw)u>!2`#fxNSrc0M`Sk3AeEEdb~baJ0Gq~m>6l~hU;^f5@0=(c`$SHwyPEx&Dpyqszc43b zyP^3kEF#55W{q)G11?}zN2LR4b}HXCxT^VJG8m<79jhtc{6^}g7YFTB;s}KMe&3LG z?M|%u9XDB!?dK~aV5dGW&ruw{_Yl2K(Qxk6shL_mb+}1?ltty`Dsw(F(Jl9w`o|1H zq83tc8Km9M&Mg&1s^M3m&CqCip&P=&NB)A9YfO@9|IJFgDT^nNd^j%5gm~9d*z7o= zQZ(PD4##Olp^$r@`W{PoFa4{S-iJg$kBGH};~6a_^9MyG!egp;)cpdOjG6_rMvfTI zi=uq9N6%C3Q+VI`Ca3m`X;w?M&Z^{&CEYH`e{adc!KJuy0CCm(rGgW7i8PtoyC_gE zJ9i?FJ8RIg(v(T}a~#~F=6)eUF9Pm_AO3RSUk@EiV%fV=p=Nw;v3`t8L^$}^<(^la zc?xEM5o@_qYc3;twFAj;KfGrTA~kGB9E^k!bR`yhmagYjJm=#&)Eh@iz)9~wdTLwJ zaQoL%jT)p}qjg{qVjj3-fYY(6KYy(o)A69}^xpcLxN-4|ih)F<^@?64^kn0e|Btu5 z?8xU@yBs&!$aRnqR4c4vuo9E`qH-iUO}IxpFJJF3l{4QJ+sh6!Bwu9sj=*NE7_x4XToG$CHh>0k-dEfr#xck#HTTVI( ztNpI`=GARZxn6cv-4S)2ex@qYKQ13M+Tph%Rkbt*x=}ott9p~nw~2PCdTX6PZujI#+sbbu z#>4a>ADYnK@o3R-cl-F+hsYh`Z6 zl=gbdjitoH)_y#Z1lz~mP8Jc+JZp?fqWMbZUG4E^ClmOs*=<-D=1S47#3@nlA3<0s^<$c>+ct8ayd&8}naaan#c8ODUe4Q8We9H>=Wp)Xf8lVy8W+~g zD?EV)h6v5by|O5DP!DrMo+rg|_2|uilc?5DU{YW9BJ#B;?%~-B{7?-oBG4_R;bEUc zQmP{$d96^2JCRZjRp%5jsBum7hpS+T;&0K(gkkC;3*437fIAt-9)~gfdu|#SKcde3Q%r+lX-l>OW zCfipw5~J?hj5g@)UJ9wQGl)O)BDl?cXlYeKb!+D|%Ni0q)L1ZvP3Xb{-2l9%t(<@5s8;Sp$PWglTn-RR*Kl(be&u$R5_@~TjM5jiHbS~y%WXF?A5wtMg>*Z#hT zMW2oyd{PvjmDiOxx4uH5y*=OZa_jc-)EHO0#qi)a@7sZL3L z)u6!cwHRd3-y)jdus$#2tLaP&fsPq&yS;9ONNVtQF8}#Xc0J@s zAW>jo7?GY#vmS_8VS%k{YCXr>&3@_+!+^7@>#8KdLe;YJs|q7Se$9`-RIs-w(ovfL zQgaT~t6>8 z&ONfU-D!uT%RGgJ%6nX|oNa_x+)|dU{-& zC-QGDL8r8UjI{Ir)wv5u13Wt6%H)_qmBmB?s$s+A*mz@WqZunN-Pb(4{QfEJ#96$$ z$4B?J1o-Ej4cvFAdjs+Gt1hD>wx)xhvdCrd<~g7+E}DAYK~jB3$>ZnWWBh6>!Apjb ztsBaUF5vj5wv^;6xiH7oi`#lc> zG48&f6Dcipew_$WowmgnkY8Axg{9jE0cm%OSw+P>@hPd&0bvOgH08E&iYYQz5)|EeaJ#~Wy< z@i-!F+-oZTV>Wn;;)yfunY^XYTft--4US!7GCQaYjl0iI>0o_lcDh78s ztP|vdw4lDWMqmNVt>(hbmU?R^lgC$Pfe$R?C+B?}3$JpGqE-T<5QLNFPd~qJXD!Xu zmsK9KQMM`%3lASt@z*q;sFlvHFZUbM(d^w)xBytwXd! zOiI-^mL_@7&n&(rbxI zh5$~f#3gOT2^{d~%l`G~XKw-` z%pjwH?1vH@j`@`^kvPmnKJ zcd(F}5j+;gFvir--SA~IZ_h;&y^auZ`6O;Og*$=dALlA5a{xhPY&+wc)%>2<3TILd zR~tS|xzrF%PL`8s=*wei`caJzII2pvH_ooU{%sy9y@#fqNXFc|XK>Sbrxng*#B1N= zP3y**xajYzMTe$&mnZE4rJMb&De!x!8ZOsUM?wev&(`Zh!wtvO2fU?=kNCanFy5S( z?%QVHLWpkwMMb&lA#Qdm9mQ|jJ3Cp$I1EF(by%3ivlq|qS!bwtG-DUAYu_Kr9kjC& z&rka}`42Xpx0;v8-EcqccZTp%Qi{t{>D066Yh~L_yQkrj0H`#RN*^&l^9y{1~)$Yu_D%L~LMr&W`@=9Msa0_~a$`5!do z3I)ulJ-k*&zT2WdW0A|4TJ$odr(){qb^vr6uQl!EVmQS7i1g zWGdaJ+*?+)#;|Y;EqZUUdgX0-KGD%|0jGJLUybPW1E26M5;GQ~VxO+U%455Z0It!a zp{WmX@$qn1Wmwojf+f1kZ?$NPA$7xr)n=?ws9Dozq5V<8awLjd1lWBXoyB;- zYq6@%_?6y8OoH3_>vKir;hyR|Abyl_pS!6wU0#jJa?Bn2Fncg)wi|DwEFO3pVIjqlSh- zQG=V9zLtBoriS-y>%6AjY=aazVt(w(!%b^b1G>c}XlZ4gR;g4yrU9R5Ub;MJ7^_w? zn3k8;sGcgTe=OSH+VcBFPfsoHl1c>TjB{2s>ptqZt`Xi5Z(v(`hFr<7V9_t(OJeGgU*H0ijC#>RZ2yT66Im2J7r?DJBBEIr0=!i_HRnrVDl4NMq)Cd zs#i9%VkK#U$ge(*%JjqBN?7_MPtQ1}xK}f{4I7KC=Mm_P3HXt&d}#d&OS<^T*W~GP zw%0%E%^2Y~aGUb-P8|(cF1Lt~ON>Jdo%!!)5nZJHq8Wo#y`CYb?g%2I6%DsF>o|Gp=D32r} zn*;5B{4XZOy9@pC2?3oc=Pl}Nx;*eL9%&$BF)+$*P3Mv#R>HV6*o{BqZT`HeJw|lp zCKat|L2)W_=W#+}{^1#O1G{ly#*#G0|G-1B3ISFIW%0T-w+O1`r4M<0jOBCuWGZQDE>vpK7*Kdqa0-fKLfE+EKAnO8%`!M&agq}*+EkJlck82_aPW5gJz6W zT6@~L8Y-kaR8vf0fCbrI?ZW29SVnPUmu|D{@zXDZV|ycK_qUf)+A~NJN^-m@U{O?j zqZ^;VdsBW*>Pzg1A7Q{c>M?r!Tx{?tHTTq0so{NDn@-MA>uEK1^@yPaBQ>{C8=JoI zmrPt@)=W^*@~)eP^mFr9vK@s$weU6)W`~flz7O%rjIbFJSP7hUG z`_Pe?{2n>JpE;lmvLY5uM$6a?H?DtJ)JXOi9h>p6s9tPmbo|DQ-2y!J1W`WiGnF13?2Qu$blPsPFH_9E*fXm$Fneof@2PVVuRv29(=q!q%h zX0j+>v2z=5;`V>0M?SjkO`YSo;vD8LYBFwun>(!1gOe0{UWKcZcQC(Ps@N{0MLS~L zj~+tK;`tcF0$|V2ZETZ+>#dp`HCtE39T#FQ4kqm;xM(x!ZM$Dq6US|Ml@|@@2-&2| z;FsOV@zS2YA@nClp);H|GbubCX!#&*7=NZ)wQNCGVB0fr8ofGrayXyZP6WVR;)1Sc zZtmWxn!KQVx@rmR8vlNj($C8m-kcpNPiw~tuW8Czd17LX7lw3K;r(!K=umbxaz1wM z2(==bhgR%Gy1ah~T&U-UA{}kf z@B@foGbV8(`B|ieeH6cgSGH~xNqFl14YqXu0k+Vt=p{pbOWh_IXQ6&U4^gt_jMI9A zW}4b!hat^4tOyTuELnDQVQr%52J0-#q6_cj&LQ(~^69KCmE*4F+`-K=L!j(B@0KoW zf7pKbQ|Hf3{&7^+sIhT{iNgxhd!aaX?=S`aYvv8NW%err|4lgFi)$C*y8MEz#?kD- z&god_%|n$@v2wkBi7 z1U9lkKd-Fd#NluR*8s4J#QO2U0gMTNnRMZYj_$zu}JgKMg^qtAnTnBqa z>1W;3ubZb`z4*&sC$jqk7>L#p5BXH@P|9-v&@0j$T;W@mrfQ$Bi8R4T`~%Cibap=i z&THkAR@F#PVArxIH95OMf-ocRn3T_?Nm3Y))JPJueKU}ZZ}gme6*t(w_T{B(a$9) zl>hTC=*fe-ZcqBqhrd{Cm^Ul5_-w9{d3Bd8bXxar$LYLF3}IKyD5SYb_+DGx0c%Hm zL?QWCx#sze^D&5&O!ao=(8xH7I0YV@SQPgMCteHln04gs-<{GceeG0I@QN8Wlr@0d zd}OjfT;}|4-;PPD^i; zFH%5p*4DUGF$55tPaV{GLYfiuqvwl76`dM$+oR>FLxC0f2E&8&SE)28JrdCi>s_c* z@=K>|QZh1Lla2?d*6+Mdzg`&dmz8?SNLwC%l&z}He*Q;=0`$WW5KNPGZ`H`6Yp7Y$ zy9QzAckle-8!eu7PsIi<$dBUFxtH-#8p|?9HP`$7DNr1vh(?d1dcMZZyU}cCo8Pide_od(hIfY%@W4KYd@9Gs!VrR1*PeC&9|OSlrPrAvQu?lI z6c@Gjwo=pm4D;1N#7O*lU@$XtX-A>_5M?=uV(MC4Sa_(7z-$|g!WwaIxhqjXs|}?` zs;cM3%)X6=8JI$wwGRkXm1cLO+?BnBuxvA}|7b>X+M|26_IcTU+ayKSHpFxDmyC>&U`~*JIEGQl0Rk7sJkwirFR&0u`fbOT1_(2-qt4dE)UWM}_&w@&bshNp^b6g_J1I}>#OR29rNpWpPL zHKC6ea?RwrcOEqa{&yz#{+r1={$+A8&i~Eiy^Q~p$>}((X?YITSi1MIcgb98nQhb( zO~8@Oa-m;Tet#jMUNElb=$6XOe)g`MuBG;Dv1Rb~UrBU@i04&l-3jxea-($2X4Vv- zbyHwl*eY$-#K#cVMkPZo&#H^Z7(VW;wU$I~E)L1RC{D>Wm?ZPstveay`#96yOB z^eiwhulXqR=0h}SKv)&QIito~wH>Hk6eEwZjO0 z)B6IMSzkcxH1E#WC%oRDDHf7}B*dbJ5QII6afPR+9_^j&tXzWfj4QJ0BH~$Kj?cv? z@fn;Csiakl$I60t3g`BYrxuR#<3<*7tByTC+wH2;+ZV5kpuC(RxbPNeDzBzK3_S2%Yd0buWQB$F>-Q}(2;<L8mjP;&K^rP3j*ULKs*tQvkbH`Q1hlB&k;_XY_ zE9(pM>hZyRkAZLtCK1-gWH@c83ybz`qE86hlV^|3T|Sva0{m`j%M--R}pe!5WK{K!A9lK_A}BUxHFz)0}hgQJZ#3Llq~vfu7Nt zeP5xu38+O0o$f0m7jq?zU#DDaQanH|d*tv@iM}2jB6|XR*>+*m@C^Dvvq#>)X2frh2QnuJF@ns{CU{o%us#c&X}Fdxc$G zp!3>xTYkk4Pj&B0zd8kEgw(Hk`KTHpO@piw8kEhI7plVPyPW%u#@4+P{A0v0CL3LC zkZ+wW?!<5{ZH^$Jfaj4L{6#JbTk;j=Uoj@=_;V|nhG3Ms4&1Pq$btTg4n~vp=X9Ix zhao%hvYFtY?4>UhHJ?{~X*_C-&-e1IJ;o`FP1(@+*|E&W5U^G|54`2Bc&fX!Ryu~z zXI=O%C%UJP+L=g6JaJL1_~yUPjU_TmoT7BcU)vtt_+9AmH9M%gTY{T|?htw8Zp!Q+ zUmuCuQN_kQV*E-AH&krg_8^(HC|ng$FV0z^X>vPz2fmQ^Y-xG`de0B6IEpd7utyUQ z!WPEFtj?95dwqGXd-_2Am3ye$Evl)KA`g9Twp%`nBUq_VDXww0%srCc5iyJ6-RL&g z@g@!&{YmL?K_Wq0d}?)LwTEudIT2l6H~04Vtb1cTRcNvRpVF1LEc0Jk1u-JG+>8Cc zz^_vS8X6i&W~FeO6#u58*>V{I3bt{e8#r}BdpPBKbcDugQI<+h!YjSj@aK_{1Q_z` z8Uv6Jo+Ma;I}%M9XTKm}>T}FSc;s|xwZ1IOrs%LQjxpla5O{{cPKP8hg#~d zRGAx^H@NVz%tqfgUEhg{mrPey#-^ohnRRQp#V52jhEnzP9|3g2$ggN*d+@XAZG^H; zcI-Qbm4fmJEngWWhtwFR{;w&$>I2WSfl?u=hno_QX-6F@>_!nwO>S>T-Nm@VaELX7 z`c*leh3Q^(@cT7M3p<#3RI-gs%dE@V;|znlh@Q^1@9O{6X!z{YaLQzSKN}rf0`Q*28z!~E!%WPWa z=H^QkKAw>y7PfaMe|{uul&_jWDn>N?Tj4Oo4phtNdfHv#5_@WQe7&n+P3yc$2gN*F zU2JL^iA3BTX0usYc&T+;|Al)5($}~bmkv%BEHXOqP{_%f$ry}}>Xy2E3;vMv zovF?si~iAdkmd(<;_wB!1BY4?K?!b3c7XN5o7fJjExQLrlu)s0dkp;BE!(fcKzCo8bkzE(Hs##Y1+*GaKf3h+(JaPxB+oFK|P~62e?x9ygIoTdPXe?A?|F< z2ATj;4M8(X;Vv)oIj^$vmD3O#qtg`%V~0uNNYZet^XAPI9!f#=a6av`yUUuH_ilPy zzs72gAw9)B4YV4y&Im}6{m7!QTG*IKN9c-5%9hlu za;o6ElUDD{FSe3S;BO!h2Xvl zNpB9J3%f{(tXetp-*>IFV=?ct?0*G?6!~AlVIS9s=<~b;o|7lI)gp4j9{|!E5(U<$ z2z*wj_$lCl0%t?SH%J{)bN7yL74~Ux@?bWpSORaqES5vA2jUsFxK3Tt1Tn1mzlw9; z``%HNr58dnsU^kU$F>MCp0vQx{a%-ebTMe$*m2d};4FT{S7XvPEzv~y|0u}OB?L!~$=OO5YH7s`tKP zvh1JxBR(Jq=eOE79VC>e%=Ia`sQz`WO#xKfg)4CuSGeIRPqL;|`}I?o>{S-epMLBq z*4I$0P%90()P9?7|9~gJShe}ARurjsH~6=VY!aN^%et#@9Q;Uk>ipaoQvJ}Sn)DL4 z#z#>~gUFwE^hN{SIiPF1G55h}TgvYpUx(O;8_92Tw#>E6CgFkb0PFk>ezgRNSKGI; z3bj)<;~%y`*0NX65ojg1xX@%)^+-bWv@~OL`VQ6m(^BAveJd;#hcEy_?Y!CA_uXDz z9-E^4NdkIES4{I+d3g;4Z;w9@u79t&a7Ep{_H-#IU0&!Q;Ho@bs+DCv?HtC+ZaG-*eCTg2k!BsgpcD?& zHX!e3l-Odfa5pkAL5E|rqNce8$w`OL_xVLO^=MBE8n%B+gNAqkOLBK?qh4fCE192P zzOvOSPhJZ26n|sDmZ16MS4{rS<%iFMs%FL)bT4}5uwQ|)nLzU94ot!17D>+F(BSF= zUS9QDBfVnUXUtxj-oFx)g|PM!Fpgx`gX;WON}EGu6m&MP(Ql3-6H64mqky+LoHyCk zJ}6-<+qFV`$JK$%ZIdjcReD2EEVI+@;}VtsGoE&CYAEXWetB4X||HK zw${u_xcMSZE=@q2WR${YDUu~^7x|-2rvMJd#J$Qc=y>j#@%%-p4>{Nr5J158XBGTE zvJrd()qanjh{PA={=&tUx(%f>*^~scOFBJ*DaBDBWE%443lzw|k~U-QpA42mcD&Ya zg(I>n-976I4JlR?Zh$6;08Os2A_EjK+{OtGsArK2zRz}M=W%_J)L7m&`hVDa@1Q2X zwp|n}Hb6x|kYWR*iS!OCBGRRIPH%*V;e0Q6|jmVgMcPFO>M9{z$-x zJh*IsBlp+S;Pqb(--~T8ey?oxF7iCz1`Q_k+PZYk_|*`^t5zhEr9~%v4y>z8>eR;b zsf{r<;E6!4VCV8TNjLwL^?z(q3G_f(?R}}_iOSBF)<~fB3ug$p?6X>mOV0=NM2o|R z>%~P6?G9Xv1S~7h)s^tx<1?JnY%)8iupl))iScnu%*$%J^k*P2RQG)%^R4B%;qm!M zv&~udd`V9q5cvdOyjxxPTj;K_hgPTB99u&6(k(NA6T zrBW3T3HUQL1qCC$h=@E3l>$pOjk@b<>vB%VagRfgYV7j{w<5NmXYDp{>XNe(?AZ!K zF9wrGm`u_FdG74YAoSD5dU_{s;#9DxK)`?$6V? ze|$yz`kkI^&P#DW+JT^FYs(Ml-zWriKqp(Do?-nn&3d zIlL=SsG)VX<4)nw2z*EHfAR^XZgsKz)Y~>HZQ~^yKP9$R`+=v(ox2KA=bz{%|@a4V$b7>#}NUHa4E=qwiaZVJq+EBA?M?F~jO8>P0Gp&XVLL zYcRqtW(n6>GcESVvyzKs>f0VKJ$bd;Ox-UG{~bCs!6|6;;^lRnDAPvtC&S?fj(-A) zFF%z>?4s3Lo^@I;py|5&PNcJ5mtgSgtW+nLOumt?JcJCHTUs|2MY<;1AD}a*0J1fV z1-BVbIC*EG#F{bzPYyUo$JFkF&7QlyR~qVU;5TQRz1k+h0fM(B%X|rz@ElLhSd0wt zQMo0;uAKXrQTjB^AB^`!sufUD7Lr~xv&d?@`8bND2+E>>v}nrB)ez4a{;XoMp|x#d z!SPceYjGZL%pZhB=3AdA&ZbS@36Qcm?=-B`EfZ8~{&B{sw#G0sMqU4)*-gf`){-Bk zZP4*b(%DPCJ&8I3p`NMU~d;}4s%s4IDbLW>*8LnS;vGp-Dl6Vxq>cW zjXP?Y?|~g9cj3yhzf{Gw>{xDBkcB~T_!Rv( z-Tn5;1S{xMC8BtPnxo|ZT|dD*zN&0`n%s;$US<_O;AbT!3pEl~(3k#m4FkC>V4!J5 z)pWU4b;$F97}F4%s2HOjc_%g1jPg@tg^yC``T!!Q{)t9{1XEJ!##V{fPM;cOW-7k>;#?d%~iAh;=QuCOM*=jL*C&S;|lr_`PSELZ$1wU6-A`!Etr- z3GI4oFMIq(!Zlzr78CAIYZ9=XWKX}FaK}^M(I2M6C!z%V!(pD*MU7}1Ll+O_vIR6R zu7AKRoXkXLqEVyBl#0N1lzV}ACX?gq{Ey_}9TSUE)fQ&`SMM@O!?{i9h+YkAxSRQ}(eaz`a%gqBMzl3`=OVBc5 z=OgNyU%kyumx%!VuPo>8{h^Z9HqcG|A=geLf7CabXU~at%p5OdDh}a~U7+vleCyw+ zzHH6|O}F(!<{NW{`CJeQhRpq^96A53=qvo5on|R}T&INE<7b9@{^CGiL!-v+O_ujW z_84zTT`aZOOC+Ps2_6xTu%PjAyw3%1nrvEP2Q^X9Y&|D?!7n%5cXA~zu3UUGD4UW9 z_NuFe*!D0Ni6SF%&5_5riux_AFPPcY{3-}yQKa6JnLs-)Fn!k{SvS8r5yIm06+(Jd z-NUdQCRa>FeVQDZtArydA*D!Gj<4XTylnXGo8r^`NspXn1DuN@jsrhI%u>rJs~Xha zbp-^ZN?`X}mDpz74|*yJ^xynWYqWkTAU>%g!g2rC(@S_AnRw?$=jW6@rp5{;`>OFW zh^U~vRyGR2a1#4W4-vH8@WTt0$LCItR8?deR7b{iDNe zP+x%BO~5N6^P(*n?`%HH)bmN-ckqaK30T@S1f-xi9mad9HBG9muOq2@cc&20<*DLb zLEr|1IB?Tf6SRx1q9?A*p zT2}23-erDJ+ObBJ0H7i`s>}kDv}0DSz>s2g0XleivL~7q68s^~)NRP>H81s-l;p?S z1`8MA25w_ppK@5`ob$Q0*(xqF^0;(TQvvCF%4QX2+6LE6>D^A8zEEqU%^e#r%`AyL z+Ksct))AjmN>slYQH~At&Vl{W1=L13tWykj(vKPyz8_rhr#{i23lsH<_Nr8`G`eTwc2-UAGq+sZ}xLRSZk!FljKZ zV|?+jAuJ1tG!DcHy&Tj->W6)!Zw$?lfQ|F|YDbINOgvGJO)EY(z%g2G5byZ3Urc#_ z3*6@;s3AMFcHM zF}B(_FjNXX$7{86PmE^$?7uxaHA%RdG^?nv=D?S@H#ThQ@xu9t#hk5Uq0_HS^0Nkg zi;9c+OTME*9#jqTwJLt!P;G8z4EE0JDD&hKmnNBfthhT|mWYFFPF@4Gsq^b`JB_@3 z$|~wqY{-PuQO!TfSK(6ojIK&DD8j1Rwt6~KawZYpofov(&GYe9NpgCUsW(zfHR12T zv5bHzm%*jyux!;aHL-yyIVBnz#GQY%*i*S=wA3BBFPr=3IVk?2%uH%1t{*GAOOp`p z>(BtJYepqkPVm3k5*T6Wz5*)f?>qp)2L2~xa!OhDeNrB1h{f4itQ-LrG^`a?hB<4e z>FV_^RtdwE6W!Y<^?Rb&gF8D{1YTyBE?ldFIN^kS29)F4l+^~E*eeb4PD?k}o1$^c)2SMR5DAc%_ypfmgVumNpGZQS~(w>S5WZXtK}#L#%GQ=#~ZUZlEZP{cDf z>CKb;d|Svn)g&rJt^@=ly6Nu@I|~vI&YIwcbPInrwX3}hdTz#F?ziKWaUfEA-*J(kyeo|553{f`tI4L0yQ2v@omq^GUwjlqR;DP-&7Y$F7@+U zDKoRstUv!BYigOQe&CqcAFCY*oo$8wPuReZiVbwCz!V(zo;bH%72lLe`UrPm-^aCn zko4T=(>J7FGO*7uO(zMQN=r7XzA>EBXo$mh+r*;Hy7K=sa8NfGl9&Dm9hCkDbP)Ro z9fbUi4mSSR(Lw58=-{e5RU+uG>#gU#iBo4`CRLC!rs~vq7(6NOjpNj4Y3lXy%Cn4A z^z{2f+33V}I=`Q<(VJVHj9&eS(3eL(FEYHo9CNK7DVf>68OwhA)4@aUjoNKaGb8w( zcTmo!!Xlk!84YM!8jNnIRg+23NLRN!Rf|d+@^97e2E>&<7MvE8(Yf4?QT();GyIFx zyi-zH_~e|jGM{m~xwJBQQD}TJ*=0?m`26X&!x8`J?4{oB_msF~%8Lb_>rD^c7H*tV zxESeo<~Oe1cT7<{EHbN@{Gof8nxu2p%JSsm%L*$Hmu^8!@?R%v=x0=B|GlM_O5R!n^a~2Z(3CILuaG2|n84 zOzWTajz3P9Sv`KRj)J~(i#I_;Cyh+6=Yx=y0`NS{$5XWLzfQ@!23@*AKo^r8p(4+| zMypLUTd34~bHBMyv;O&iEFK!yjcsgp@vdEpeVEIavaSdANl5#{G{Exv_ag9mIZ+O~ zBGDfXenCmRXO;+ao~{gf#>_WYD5E_;&+ojRxBj1V=NJDmcXs-3a_4P?Ej4#`T|%f+ zbLX#Tm8>VmlNJucT!o`+52w#-SX8^s)D4zGOo9-};=Hck;$GZGF*}EMPdvvqD4Bj8 zIoY{#OHrj8-wOd+q!h)8d9iRE2fdvaxks%Zy;!4IBl`n@02=N}l}_YH z5*#VZ0R{o9g<8!WO#g3_Q@;N?InDUDho4vTH0$wr_@@hY>}Rp!);tIGXYlW zL%JgB>qV)|sRk*3IkPVJ?_{5-|KzXB7mzS2ya}%`S{ZA2{Gu@5W_ZykklGxC1$mLb zNdO0_c|fkq-=Zvk|H*5;e_H-O-f)fnAJ+BfjklWD{?aJ=`_nWvywn8q-(3>a_LhJ5 z|YV!FNMf z?_*Er$IF@@iw!G{-~1uI`Evc~SER|k|M9rVrZk?JYJPLRn*JV&{}5;Xi_t9~xq#n0PmR46H57!z*3=)yDD`4<*b>+ZluL~J zS8D&)c>M46em6&#tepo^9$7e3TXmZ}^U6jhqHpqR++@uQU7+4x^W}puM8qHKc;CAy zPh+7R08m^Z-KLo>u4s>sI41m-0|ZX*1akk&RQ{UF|3@eBzicX3n{tua>`Ca)hG^T$ajf zla+9S*LKH(OPrASq_4G41`MHA>HxpNH|@++=riuwzw9aYNK1iA^b?5wZ+4cR=)p5N zMmu>9__%xKuHN%&He^t2c&=0ci_eA>9g|xPj;B``$`h-})f@oF^1(*4rIF%p!e&(0 z*Is~}ZVAF?${D%cK(W5*!t}7>5EzeMKY{W3lCmt3OpBd$?G|XZkLi=fLd0F{W>aJbH_tXpv&)rm4VJ_J@bb_qV#W9&a~+PUq&thI(9+}%n57F zqCoPd%YJu-V!>NWzhQzw?LDPB&X5mCvmE_kIjQJvV$YD52E(x6gzt8`-TjP~z6-&Qf@NqTs*R7KKtzib#I{GVODm%i4S zUZ#?PdauZ<4hkCWoFv$VUS@+fp>uEApv!IN&zkLs<&J%nXm*) zGSRnpcPcovy{WK$W_h`FIo9+<%4S6})h_l!NXoQOHZX%PtvX9{F-@%2x(vi;c!#Wa^;s!+SH$ zJHxa?zhY<>D-ctW$8b$j5_SWo5z{-gh{DEn+@AD>cQ9DQvNt*uTc5gm?)p~B>} zR6k|m^%L41t%-g}%!c0DE=qsCCneA?S?Eaa`>l5f1;LRtDA=^_mTdcD?D5@VXKmT!gKYCDj|D%Bz{_z#rF;AEIl;SR z`S~Bzlg%zVm3Fz6Tykg0{{%)l$8^&Ux|~|iU^5Upq~mBRqU^5GkQV^ghk6!0AoxS*H`-H#dw2@w}O=u!TA%FS~wIO!^$5Eui>*723`3(=}W;ZQP z$3D1uEZjt79N$54ByGyq1MOC(IFFxDZG8y)Dl^m^}4k{(E-F(#SZ*v{ggG+=V-DJ5q#xF%|)Wy;7NK$RZy=yXiai!VN>>dU~x zteaWRfot!m0vS1U==R`+3zsDpZ ztw0L;ecC1K#WPG=3KDvy2=}cLD@+LNvze@4&kakqD#$*~Dc`j1Hbr0Bu$i%t&6{8u zwAq_KYuSP30`+hZnr6sfRBn$7$qxJSJ5m*R^Wu*c(gSLKP5eBv=e0*M?J#@v5b0D_ z&!R5dNYb5ir?Pno0r@BAEfDWewU^yhbtHfJi$!ongg~k~&`d>Fpvvc#ulR*nmyA_@ zkPQ^1v4}5t_Hm#pXI)5d8Of*DC4{I%$het5RLR=jA z1@mD1I`Gj)0UsKoe(Wlq`G_|>O$%(i=7Jr-RiY%|`L~`_7D4Xqit%?AhA3r*cJY0e+f_WZ6hp+1REG1S z7XdWf+UgR?%qiMZoD)cgGp;{s_DtLw0wst`NQX7_LhrnSGW$Yd?vle~F=_qMT(<1{ z3$?DQ7j2J|y;xJT3Q!DeBkv;4i;J1iH@O28cuZDKd}o>*OUBw)WIuOOJ(8N%I<$4I zxS>=;PiPC%@7DaRn*;6Ndq0Yuar5wbLeD{V6??A?8UonzX}ta(i0vPY>Ibj$;qLnd zAI)q(_hO6$8jcpfQ1RZ(o+3|8rdAP{gdB_*EY$m5(aB#CXDA<69v&GCP zL&(p5o{STv`EZd+TezzeHalw&_)d0X_SzN3-o<^MirzGfoEf&CH(w0%$=A&tGt3-O z8To!+0<XX zz3JSKi-g^iy?#{=6ae7JH*#kn<;J}A#>sanE|eVj3>|nq`9xonL$1l-)tef0LtoiZ z@LKZusg>ab^c!NMsOI7h{%sJ|pd#w*Bata-PiYJl@X=+b8Ha(7B8Lu8vw-r>uGJ!5;E+=HU>IrpIk|9EYj`O&Kc`lQ88#QdQ~@Q)T(M`RQCJGX7B<# z`b=9pd?0zDtJra&H7GQ-P!{R*#1)-3T+-oL5E07>=G7}Uw#07dJaQCMAV#tRlUb%S z^n~ofc*OMPLSB`LE9`mc?N^{0(AgbigRmf*%-X~dkTC!s%c>{twH6z^1=9vx2>3j; zf&fhnfl#b|-&1B+s0;q~Ed-ZR={)hzq%r)NG%wQDGXq2Hcspv;Wfw!`>4(Z^gejwPY-}9J1sFvN+qy`>8l~)CwEGG2}6>bqDB@)urRNB?113- z_~kZmH-k1H&et*sBN)7SXoW|)nc?SrU>ndX1b%pQD8p;TVK9KECi5UT?8($vHia79 zrKqLrtJg={&O07%=dsGvABi}Qyozn>gF*D8?u!Ml=NeL~04xf=Po{MT{3voaMxG*j zCP#>;W!1N5dwMnPM&AY8h>qxwx*zHC1Qg2p`1O<5>Y&F(jtasiWQW}Cu+30)uP;>@ zRT>`4;4_^~Xz`y({xzZ)opTDRQQ2wkw`jdjB4z!HH*_v{Z2g$S8K=Ep3n{%XUK+s| zp6tv!_f5~qlJhb6T&}vOA$nutj;Wd$-&jxWcd+4Ql){t&H6ug6^+T9fg$j$0?zUS~ z#m!|PJXU%t^fgjE{)Oj1XB9?9-}dzcgq}BFSxF(XHD&XgJIrWTviA$IX+ue zc1cyEyWrq3%P8Pb^JuH_>mewbb7>#B+r${Hq$>MBM*Y* zd8M2kIrSjSB{^Y-T0t>NpJB~bE2rC7r+3~h1Y_*n0)HFz_w_lMQ;|MT{qj*NesY;0 z@4xO8lqoubm5poMPmIc=K51(KZMg<~?6ExAw!GRMfBo~MqyuGSqRK6FM-Z%en4Ms> zF*~~AyEi0>MtV_a`^QNT`ja2MuO8-z{2CsKYb(eWN?wn$vIt=awC>sqUdbj51=Po` zgm(pF)=(A%P{G#L)}CS)zAneO@hPn1Bx4~6cP1Vux*+X0t6!BRM^asC0(1yLFu1y8 z!Xd)~0-Or+Xr4b&Lrb)-9=GhgJEEtlQKY6eoz)BIoQmbycbHF=2aA?~A^k~tJ+>z< z>pdwW@7Q|`XSCSqyLIeumn=q_E*4KnD0$q3fRT|eWp;EJD*#C(Q8`JLSL+-O2Ln^;I*KRRG{g)nAfXJ!9mThCm}U?ahIu)9JNNc#(V=nw?It`WI7nv zI&`S&Z{Oq`DzwsMZcsrNe1Yi0-sbKiAz$vR-r^O-Hxr=CFvP~_dn;(+X9_0Z zrl?z;-qkf5e)VZ-5ZXWwl2nK$LOdLYf)3BkZ}?%q?wE=Vcmxyg^#XzwP`%L@;<DxP=!0|figa>O}!(S9J|MZ&GOh-m^Pkr`xfn1yN_kB08E)+ z+LtHP)jOCoc#S{1I8=^|Qo9c2gZC4QCgl~#<@V<2BWZ6LSXw!RmoZ{PP0wmSPht*n z9N=M&HFdx|_lT_W$t6022(*g9&&A1m3%6nD-hlbSP^)I0MEA_9`u!N(DJQ~Q*+t3F zQGDpG9!8GM+;=rRz@LxDFZww2O&a$?a0!|$ieCz6$f2-QgOdFh<(u~=qndZrtzO|W zvAPG%srxzLkg65IB8hfX$Wy1xAvZzH%PHo}b|HD4(L>9bebQ!P_ZVP}Hu!fnk}|KU z7}^(hwR`8q3czlhg6;I4Vq6XbUpdCrxv&EO@!Ip-S}ToW?vi@e_>V$B<;H~>-xk#= zAYl%9+_HR}>Fv>Axp!oH`mOvQz@aI~W+rLuGwS?+6M(MzQOuMY; zR*0Db)xXRrzs_~Qm&I4pD>;wCzVD_eFGFa2{psBR`LRa*DMRpv40oVO3iF>;g-3H4T66Wy`n4MC zMMmTjpY7invI3|fGKyt?kLd@ASlyS!OFJJx5z2PO$TjN8r#uraU~A0{lPK;G;eiXStUJ)&Jf79Pl4$QnJjqjyc+HX!q%y+z$G|RfS+BP-m zq_!xuF+2!IGFeIRlZG#D%5tfAknlDZ?(S|IU5S&O)|^`>Meb%8)Pqcd<$>jMzT>qG<<@ zED;+01m;TDxttkRW`R2jZS>^`g&KTXt%Ap+{S>3V5d0}mEy<=XoxjM%mr@%}fYk(6 zf9Yc_sG9en{|d?ph)$;!-%$r9ui&B77P&vkbY{68Cg(eY2<;eaa6qnLUTjzIGq0oE zSh{w@b}dPDkABpZ8|}>(KDSutacl3*DF3kPjXdK)R6F;;#q{OrQ+Y<)b>@om>@wj$ z)PUcu7_Q)+UTh4{1mS1wIt7p3O?>goxRrJMcCnh>vQgUd@)MN5Yl$III+G2QRs2&* zblcib6Y2LS06FV6pza+BI$WMv#1QLev^1RJb1i%rctI4xq6SvjyKyPa`B z?18RGK$3)Ez*vpiK1!?~hBmR=U_I32T#j3}yhN=0dLgdPaBabxow3@lZBH7%9Lc$P zX6pI@(>|^(m&@|ZwXXWDoJ>s&;x<|rUlc_M%C_vOU{7z}=!tSe*DnXED`q4)ov)&6 zSqT+vwMlC|sAafVvM{}EquIaje+2bKbufq<_{a}-W9xv#DSz}Ni zs;$UD4M@viNg<6FJ3H5f*3C~fd#-CMGh{RueLN=IK9gM_@WkzexaG#)(wI4;(4ed> zVgXyzwyLd}r+GsA2Mq$e*$m5IQCV$u6Rfi)MT_TVug^XVYpcM?X-$fO96AFwO*nm? zyYe1*6{8|t#HSZY9neJ;8ta&l`L-Sl@ZIA2>};xxgF7nT|Cjcy9~e!r6Yb^knh%v` zz30dc4$NSS7u5VN+XRkuSoJWvhv6AW7M@3)J;SFCob`5ikIgTb!rbmAGi(m?35@NZ zTHd(wr^`-!%OpP!BP;tfum;Ai>lNC`AnI;bWK)baKXyW150lk@6uTT}w^@0VjO{FX11E zGJM=i6MO0%D15YYK*g~^eDV76<3bq)>SVOlQRw75mW`SN)I2nsdR3-A7ebCF;d#XS zli$#6Zxt~+5Y8k5*Xl0z}YR)g8gvb zV)x~AD+Mq?b3S^Hoy0xw^W_abjAF@|)||}1SKniHK~z@9C{xD#*$!bQF}E=japEdT zGxCngGF(q#Qz_TC-h5)>LY{$x8>1M zbi)fX5mJv@z3-%_UchO4t=%WjkD3c*XtsO+Cc_lesR~~QNz}ZPP5rmrExV$fT zWV=GKD*FInk}#}lO)fK9*f}BWgilHKxm4P#G+Qcc1qtnEr%DE4K2dF$h!scJ-#sL5 zX$Cgjrdcx!}P+H9PgI+s~_SYU1%?E@PvBSw%W{9^MDAgC4$ z<=g$+!slYJf#&KSURHXTed&4C8f)5&&eS)TAtW#ZdiIMrdVR@{{`=Rsz_2EpHw_$N zCth|!tzC1!E#Ca#l=m;6?s%lma2yiOQcU#8nXK?2DMKKT>NRjM8eY}EvnOf$+839DCby&7Mh?&y{rqObGWUmV~#ze|(2rjG*px%jM7#{Az>dFd5!? zAHOg0?k3Z1PoDdMnqbn@N(o5oQ`C(E4Tb~MQdHzJPqbwII8<33V{rbjKIKhXQa ztxRvVew8UIK*lB(9yt4-(C86H8^=j!_o5A5cr<0rWkTnVac-2oL_~8pCsh?lVlUJY3 z2PU(8c+y+#Lz8!-mJrEn5{%DY3Etu%IQ4vHX~yxyZyd@Z#9$#a1;&uj_<+_t72KZi zH+U!HcwomUnLKYMwzUaE_w$2&1&uZ~->mFgOu^)iQ{7D0@$&X{q2DIAx?WgT5jlnp zuw9fjKj)j8N6BPSAAT<)p21lNN{g*W+>>ohw21y16qx-Z)vSu*pqXU zq~ebq%RS9y+mQW-{MO1|8Jbn{21(fwkZ>DO}}pV_rre z2u!P@V?*MS{?^^Br9E4py0W|H2OREycyA492Q2EDiOHHQygAR0?_=X+zctL?#MRw} zn+iI_STEZ+C&rDYY}ovXvsxBKyC+#1aRX@;)C0hlL>zYoK*XEX@|SPAANaxzByGa| z0Ja_<%UVByif_+hp1nRroNGT@2P4Ig1I5HEUPak&8O)fI0&N_w$US#C?$_+E&A@o7 zg5-?r_5$j)rP$vQx4$$r3Qmo#|1d*2qlorbKV&P%2f7J^3%N3^mz`H7smCXk$qfW! z1?7`-N-MywKr18Qj=g*<)X=33bZ&oxlCz)&miQNuLc@6D92$s3JHGwSwHh#!aaA|H2O2ic;N4m&j@Awe673W`| z>1o@wB^t9>t#`$&jJAU>ooD+3i&4wW7Qj6T*TWYsHn5*-<|-0Zk$vwo;=uX?bKb(G z<;iL4rb%5HFXEw9N%=f-9&ez>(&j!U7Z%H9=>Dpztc72;5)qFkzu|*jFNt-^I)C1f znkRXeD5l&~amJ@y@d*z&CyF(2D%mhubeb9WyOjI0+KHzzODgU^acSXG`8&a zI5jV#T}Y)0?gyfZ6BXJ37q^5$o-qFy2>r{1sm*t83#Yk0&Kkny0;z>a0gtfA>f>F( zYL(R)n+_q#WCSso%p5xFcPm|4HuJ3Y;y8|T@46S%ChkRqsMxKq9We6If;%@YHKY9p z_#{n`EY?ElMZ$`WIOk75b%WD&Rsd%@%yfyLbURi~XOV4Q8^kU)_gS7lY!6qw*?i(> z=Llb3TC$f%<86IvO|u44s2Np3UALBe3$%M?E1bB-&or`Y8>GTYMI@B)`E!bT?iGv& z7Z?;Rgin^JIFy^GUfcm%*7j*&tg0)sKFRS$S=8c?ID|PlJ$QKK;uf~^5xQZG)VLZ} z%XDkYCsMORmBkbVfIyR+eltv!>a|z=ykbP&@h(cwyO}H!WX$7!z3 zuwVAsM^qu|F;GYbs!F+SXEHiDSo%{nJGkmdh|}l{7~a_KxV%3f8Mz94ksj3F)aC5G zBzl|!t_U~tDqSUCq&`A;9J)a{ zXD=HIHl(iW$hlptnrO6He)%x@o^fgNaBevL&g6a?Y?-@ef`%yAr&ar`-AZvl4#vH; z1@S+qVcn&?Qu4hj{IuCWrf{D@wnMQ7-BZ;a z6745zLd-Q5x2GPZrJl5P$=BUAn};&32ico@nIZd?GO2OMRr5V9-i!hmgjr5+yfzs4 z9ri%`328E;NpxVb#qGERfhQF`#KD4wVh1QP#Ko9OpBWoiwCGo4WQ0bv`NymD*#fX2N^JaoWmo7Ehm2dv+G{cXa?CztXRlxW zg+GNF?86?lGUX09PD8n?%`$y!(?Z85Zl%>{q7{q9b}ei=R$E})RoLEd^1D(fcWvNG zIWecN?ut&qn&=9)H|BBK2+MJNG++_Iba@YJE9!#k{-Pk+eZELm*Ji|lqQDVUdJj1) z=iBLFFZV6TNbV5g@_XzXst3xP+9TQC!ZSGs!ZfdPqpk6jKzS$T_4(A_AfyBMczeW( zV)D+&ju2gth|J?owqhx1T>ARE07mwmtN=6MTR@NESfn3)e`K{cB*lX`Gf-%?3+axF z8$b%i(Q=-+%XI{3w;t?@dQseFQfObwN%OSt=wAkbkun=;X9VHGD_w;yikwiF{r$MQ zVc4DzBb^835vp52TjAJI?r1gfoNMf2s(AWHprT^1G=25Vs7wL*q`c6tv^HRmD;kYpHobnY1_mh zuw|UMw%j!#oGBYKC}h1J2$Kq!{T+C3Ah}O7^mq_#x<4BfG^1!|bqN_A`TMd1lZ0E6 z%k}NU6@`@gOH`He6Hrij;uc|8eWwvhjbkKl>{>efTR`B-gl|QhrJ$(N9<2eM8ljO|0 zl)c5)4R|LwG?cLR5R^)CULsQ5t$!Guk!&SU?6S|wVSd^q8hW+0te|Fi+A=CL89{7P zkF}&p`%D`URwm6YQ9gku*|ZU*^D_xS|x4by3+eMLF!6IVaBY-nAF|m z4>=t770nykJhGB}q{BA@?Nrc;c8@Gt6`T#>&owpG8)9{Qa7h9@Fog9E^-ye;_(?Zr z+cH*RFK_HuMs*{ugb!|Jb(U3(I!uW?+(Sy5S#yUaGjhy}0FfYbM9yd28lUc$NeEBG zU>r_=HO5~ccECQ$pUu;AEkmIlf+BR(RX zWEyakyM!YnJgk8&?G8?@zdZjS*(krEp&=KOY~;N1POeu(5j8i{XpWi_ge%$$nq>1# zOgL^#9NKHHc!Ys0Eqpi97lfCQ2Gql{KB{)mK=yt|5G^%ie0h6gKfBZ!8cCHesn!lH z5>Z<}KB*E^Hqt+W-;4p4zWg#QC3VMkXqtX3k8hjda~7MbASHfKE}IPMEb`J;KJdQf zfpME}u`gls$!(f-3RxF9xKU!QlBlh9vL}$&Tb{O)EGufb_UU%})l`d+ph3-MS~KQ7 zlwkh}ftAwZ5ZP#(4Nl=j5=EZ`{0VMCbS*YE*zWd~EIq}O2U5Wj$q~axs!n=N>&0Q8 z#C|q&uJT@#_i?Rb@C5XJ(t(0y0HoOJqi-%TSzdRApOMtOHyZYq=V15e*&JR8W>|GS(QsZ}tw~6i#nl8uN2i z^zzTC7*7Gm8MRD1j1(2T=>3$ZWJ6V(KIf(s8TTnh$jPR*OFE#JMd~hxMS|>|Sz9t! zgiWisXz6sYmAmc^p=dPU zsUU(-XV@6%JusYdj=V6#N)c4)K8f?a^I-g{Sy;13JH%SKQp%BNSXmlcmJ7TshOASq z_!Ku{LvNw3Mm3?$8B~GKNSC<|$3Tkw4F>s%NesD(lAi8@Lh%wVx@V?QtrO89Nex)Lq`Go=G>Lp=gzln0&Aj@&*$%oeU8isT@aIz$;f(cf z&5ubD3n?8B_Mxh(>pxXdt2wb&EqJTM$!o5^3J-OwySC?q3Y?mc;B0lsKYI z)EH(6l`rQI_4Z70EXQ@F2)dXzGYxl@^7pZ;nLft5>&Jy~y27n#4#hy@v3~oY%7y7} z=kj`M&0PZJi_usg_W~nZj!? zzShls6xwp%$^O+#eTO{)MOxkD_(dY$Z*{@8>qqN})*21?H|6#}35`r-vxD6Lih3cx z&9-|bbd6sab&Os)4sVe5B7Hvht*iUt8V{dP^W>a*H7Zki}M%<5I>CWIpKDuZz+4^Ar6fjPf*U7G-p|~L?Ma@0xZbHki z&M{+1uwP}r4oH6S!_gO2tA62`u-8s;=80=M64JF*?g^}n{3~T4Aa_Mc9`a@;bgEf9 zCJUyL=$gzMk;QUEK01117k!U988#i?62i_gQmv#;P}@+sx@^_jOcs|gy`cF>L>uu9 z6ZCr~i03nkGzI65-t!!uA3gt*&Hx^iV#^yfySetwKdd4Kt;okmnCz+gxbuxLL^IJ8@tA z{UH<#QMDp1?mN{mv`qgP2GBVRWY<`3KgXV_7n~oq+nuU%ptJKjk*_#J-*4qZ%x{lc z@F$;|%L6OF6E9orSALvbBeCQXsk>^;$@3kvU+YEq?qD}l3_Q5GVy z8@3JG(MYa5hIQcYkzYqUc(7Hxyz1V|l)C6A1y+@&$px&>Of-fi$FqEDJIda7{mx2U z3rZb%85Kp%!?QmHyKjuio%$g5i`{Y>wKr7yL@=mg<6 zTrhj08kJxE38zT0A5-{Rv^{+wC$5l*qw_neKO8Q0ud%hfErr4c%F|kK3{-d<$R9m? z22XfX?mr&zd=6hXdzvqxG8S|Kvrx^9+p%;tuYHgrV0t5lem3Q~0sKUY(y+<4+_czz zM$!sY&k)dccr7TL-3(-$K@I)XAsOhqIVdRJyf5_C@O&ojv(KYeF3V$!19<>?Em$m5|WJUBEafgaH zNlMG~gxR@|4ZGRTfW$en4@NC*Z2@wva% zPPX|iyuw?KlQzjt^YN7^Rp}{Fr!oDbdrnMU4c$8oM;x9{J4!4se=+pS%=vVb{rIws z$3}eI|JB}mM>V;1`@*{2>Q+>ABfY6ekt!fH6x~t`MMQd6BE7`WLrH9O2ny1hO6Voh zJ6KYr1|ppRlF&&&Is`(#Y`1%#_uMh=`2M)>9p87(IM07sBhRzensd!H=bCe_-`p)Z zzo=H%N+ts9MW~btiF84m(+&3<6qf4L1OkZ`U-NU}^TccrdT_S!v#i}6JG-N(Cv8IS z*5e1E5--c>+DeurIm6%_ZilSQyoHd#xZPM3DsGsynArb)sLNPmF-cZ)IfMH%nZVfC zL}qJ$9@?EpnF?orma_dmYi?x8AJ)s6r#75V$V^2G=c;KqTbSbJhGCqmEgQXu)U9$n zhF%}4a<_d!LdyEw%)+!hxz>R$4%-^@ShIdRjW9e$y`LAWRmZYkShPH7;J~oxf|>2e6`g;2Q51Gc+X!~aKpeJ?yYSba<~UM zL;@kO_6>5%KHT=(3osc)UbRQWc!+AZZ-`=$*!{E{%~$MUrF}_}fh63{R29SJZpOgw z2EJX-@i!3B<1&%EW{D`{|5Pp@ zY3H{$^32%Q#2veX^~M6y=h3qQL9WIN$JUwlNO9Q>y>qQsA?+Hn-{WirZ=2(~08O{6 zgc$4Gqj7WsQZkwMoTBWoXTaTXGwVC?(Qr=oJ)g7J>Q%vw2qJS6ow3J1YR_l9SFRJL z)>+egRG_7AF497lm~uRD9uEry5>_5`F@$pf?_vXxJ0s_4#MfU0Ws0I6!s(CuQ@;m= ze6A;d{j3K%r0A16_s3NE2d%Pv19P52$gJifROu4$5VeEBj((IwZjh(TQ9*Cktn)i_ zR!Os;*+mzwgW3+1fD+aIv2DM9KDiz10p1IKoob=AH;jr08MTX5*^f-jM2wT=MXypN z?L*dcg_djj!)Imb#5x0Bem41);yYubW<9wV=5seXlxJU?Y=b{*DqNnEa_hN&sg>No zb~lO*0gy&W_yMLHl;;|rLhjc&&`gXFPjUR!3|N8+Ef3f}`B@a}rBbCFZ)9n^*+C|E z)tjPY*r&$YC)Q^-$VsU)=kD4<7;(z2hU|0zElrTJRoEu*S=3fA!F!S~bGSSf%fKZ< z9pX$X?6{%k7h{5!8^!1|+OkYE9-$hjU71Hqg1^}Y`Q29+v@ckADrvB}k~C&Qirq+| zFw&QY6b|7Vc@X-G>9wsw17d$A0iaRSFAE~~#_$ys?=bGeq^^xp<#`Wy<&dorc*)l{Jgl*z;7enKd1&gRtHy##{@>CI2PnQK1>& z(f_R0c^W^?2Rs@c_a^4JKp3nBQ`H$FSbmAE)ulowaJ z+A57!2`pSv57H}hAVxefC@fAmn=r*Dw0}0*El_axc!ugm?z@+v<5BvBSEUH=cGBS& zx=xF6G8PiGA@kWAa7vi>;Z6#8h8wapx%c_wtowDX1c7XyVo7M$=rNfS5QYY8mmiO*;0eA(0 z-bUsV-12S8mwOolg(Q=Chl>sk>om(v*A;rmW-o(-@oJyHbSs!OVNvB6k31QVdlX#1 z%sroMpUL#Xc+DM;cj=+NIX0OK$YO34Y=2tAx)Yge?u2ev;;ym^*$ifQ0*&UiHsNV1 zzPkAY8P<^0tD@xQwEbxaZe*=nC*SMdW9qxodG;i?+_m+JzE>Yds!v6_G%zFd1qWP+`ZRGG918x*lSI ztw4q$f%}#GTNWEEMPnB#0}jz#^2_6u)l!QHTJ{<>6N`IK*y}heXa$>CNZa~efE?Cl zngo7%-nM*uoEP;H>g$KmhU9(p0s$&`B6HgYAXCwhC$jixXG~^Dw7k2j*Xb)FSa&fS zKhs*$a8EupOjKGOS$6Q&o-s}MVtvwm_fwii9oJVKbutN>fUV+Hh5u1Cg5cfHCBJo4 ze;B_4hk0Ktd;=Hd-=Iz5R*>l(f|Ga!-|f4eG~;dS#(0ayyv)*`zR{E-1Y?J$#(6UQ+e1xGZCK>Exl6O^?*tjZsx2I8L zb1Y-bJbCwU3*N%E)qj3#YbzY=?{7Q>ES~%$1+UC>&AMeES;$!|0cr4E} z2SmWS{@QKpQ)I{9@_KA}ITP}-+zHw%oVQq{#d$|NZhH35s=%C-0} z4dm&JplV@3q{09u0=F9bD(r52I{PU8e(GI`=uClS)j=Dki*8hPCM)D#H>wBb^eDK6 zKVd>v1;OtFd=zr3EE^8&E((=hkN92K);Cs-S z(gBC4a3fEI+h6C8xFLhI+;4^anm5bU*rn^R;K60)G%qG3i{9^z4sp}ewfBHcdZQ3D z;fQJi(~k3MG2X96CR;5Q8O^Cd+zs6p!oT9dYIa=}^SN0m8@K0*CV4`v*FJ)&2m0@f z672g6jdDNL!|3nu^Ww2>=ApMl?s`McKcu9JXzLeb*l0YQd?x-|vAnE!uAXlV$i{QL zPRbl*&sQzoa49$oVkOyQLv!>r4Rr~4iif`4XV^-%QsNpO3@u@GP1C$eT`zYjC)?o|Qs%eJ}$i6O&w5R1~fadJf`Mpm>D<(U$?Gm7+|SrEqs ze18p(T898dQDbSE)I{YrqlC1z!F|#qrxK>3ewp;`YePg4Dnz~xY{@y*HebLsTIvud zogMZ#{F$V9!MRvK&Sd%~p+_Y!r~G+uV@N`SYRmC@6dkztiTN=v%ZL z<{auZfg-(4p$yz|#J{D&;T?)vDf~bpnd? z#JkwraOS%>!=Ki{4gdok#?~6w+?0GDLPHgeie{477;5BQAL{FVphP z{NMYu)@{lNO^49yNl_6MF88#y<_Qiq=r#U5xP4L-Q|Jquq;>5M?<6|wE~JK1AG>IE znZM!Ub;ua_#J!PnH?6+t^dF}U%i<9DKSLzF3m4RbXU2P@aPEv zZonE#2AyKT!GB%4Q!i44I>d8PUf_#e_M0CL`QIeQ`u!2qCk=c33h@aAPAOCB0FfMv z-$ez+Wr7vj0^|5pd>BJ{*N*h9?sCb|-leIa-o3f0J50`MzQpg>8#X5I9r>~O_=`C(_NB2zz=k(opSO>^~B3r)s z>?F-i3TiTXni@3lzkbt2Abj=b(MchJREA1VVe{PNTB-OM^<|JA8tIU4RdKY^goa>j7RckxuZJ%}%^0p*wu-xr-t$XB8&Zt0KL_+M%k* zx|r#EMKh^d6F&PeXjCjtWxca`Z(_G# z(YPr$U9UnvnEO#Hsy@%>pb}y?RC-(gT`-Q;5PENg4Hc1{pp7yq6lqnPGsW%i*yqfD zj*bYTmF9s+6Qi1mp>G1f-8_)*0<-D`<%7@W-;LBswO#7{(#(N7*-0u6OYX0_^2@j* z!}I=M+y*8RS#TGD5m z1rqv2Q|7X=vP@cqR$4>v5xOeU=4~Uz$HD?Xf^6y+r?DG&Hz3OQHEQ&NQUd-!c|%<( zKXw>b!t0ytq+z?93!Wz)@9;SoBR7_f_wBA0_NyGy{az9*+XKzw#2>#D>uu=U1;{t9 z1&Y9@5$4<$hXw;g;#g_ySMnDX*5ZU=C2*8Wjuj^Z)Kxdqx<8>zTZjsrQddO?`rVIH zW5}CYz^2NkAL#(kSX@cJz{7C$tA#w*^?a9CATchFVRa4>X8NJxrEh+~o7^~>5Rbiwv} zg?;so-Bz31YLCs;FlK9y*L3H*C)9gDK`Zaf{E?d%F+w9ItyMcPP*})&>BEH@JQ`V9 z$QcUTSXq|AED3tW7u?!}V}P=UES$JgUSV!E&+vugb6@Czk2tvnt&688>PZ$TPlSW_ zgaEjuQ3=8G*qU!A(r(S1j~y3Adadl=w+O+0`$|r`8)O*ZmA!jN6ll?XG!vG0U3X>w z^DE)_cDy*#mc2~}lU-EwVX0^!JdrU_ES&$gt39om=}}ZCqvd_4rc)eNflM=&LyFZ{ zu`!%&)Gz{#lwr3&Jx!5McoI#yTulbBONldHYJj>(#pdCv8BDKDg>95t2PlykqPl`!}wTC ztYF+KY^Qnc+w&=}1KI=0L+mgqgTOo*ExG#mooV09!0t;Ekp0b>c?V-2pl!-%q}Q-L z0ASv-**wF`>vWb&tL2caZFTI#1q<}|k8Y>^Z!B_)WV4!-TtzAck>$Fi6q zYu|A|YiS@Ypl5)?U_@b&+XW#N?@?eFU;MQqn($|n3T*}pg7?&< zH8JK3T|S*Vw}4)Idu&sU*1!c@!R$LU`_6SoFBc{&wh5pTmQjr&1@-}MSpeIjJpY)3 zL*i(Q?vd=9?~g5T@ElTy8@o0U0HwPU3%?fi5&FJ@9NQB6qD}ODP~0sLT)RlQ5RuzO z`>jb22=6}e>HKYxu;LH7%rKRWhE0y%ZD+V>lV=?Wo{vZ|&r?Rfyh`l9jC(_Ui=Z=O z{z-$lgp^*Ru~8yVejZJfTDQdO&>)S!|EmXzS=lMpB&XHae*!cf@_p90+9j-ek?G%r zu;c|885(dKmy!DqvwRDU@m!j4=*g3IHm)CbgErGKz``Joifb|rwBKe1nvDiDX|ASb zX8d*PG*>fQc!wxxn{I^h06W>wGA8QnV+&Vu`9HS@x%hNVM@&7|&holHCxlR8LM7?^ zIs2tUf8Aczbp2jHbFq)rtq8*}zKbq-i7HMxgSTwN`p$0yHJn%F0KS^4;H!N z{d7&7UOB!{%?OgZIUl^yD2A_I|Fl^mqbs{Cdgh?}^%te^)|vh-U@6P;60VL>)DTF{ zDUz1C`nXTA-n{kv>L5|TPV8%CuJ6k0CG{(9YX(pPu<$77B-eP!#;=vuZ#=cVh#Ig5 zgy)J&(BN*%fZK$QGWW@3NblmYys140#Atn}dS_P`dAYtDA!D?}dCW*tv?9wQIn>2@ zxK|maZLuV<#^-zFh;kg$JU+S(*Rt;RxF}v{+p5PC9F_+t9a-s+VVZUGmbF1yTw#+|ozN*i zN{FJki;?8I@Aa$B78<-L4Kw4JC4Rvd_ryVt{Q~cq(p+GuS=4C zJ5=)RIG}YCmG>sOOG%U4OrHaj9XQDyn_`MdT237IWo8YuDXV#Pz4z0=@f|sGPGsb0 zO|yNNk-oK6)=2#~)<+>>6mp~HOKPC$+&=C0ipMccb=m;ZEb6H2T7j*FdkSV&$mTKB zY1M?Bn3ZdPr~!j7h`!Th9)d28Mq42qPNrLaG4LIoQIzU2{(@I--m0E0R;XMrex3YH zfER>Q^mcMGHeNGT+gfTH8J2#Ecz!lr86ciJF}(dmmkg2#SsDyD{r1nbRUEse*=2YC z9g-5kWi!&rD&_Mr6|84HYKo4?-U0%u9dms7OQ<^&wF%U>G*$t@!16J!kh=1Ol693v zywS!rZq9mXd+u5=CEjeOH|D}I>s?9y0`nDAc;S$2H%nW3!ItRm7OBt|Ao7SZofO#BFT(!7UbS7V++pPk$xNr0r}t z0h`lAFl>zVREPl~PvuX7W-M2tj0w^s&yKSsnnSv?ZSEa5ja${Y8WY43j!Z!5zAdj< zuTqD2QH%1JRXT|?o<2`%oIiKap_}oC*aer|uz)NDsE zgVuSQ!XuhSst!kYr&$>x17+pWOSOgya6Ly`pckKOiq;}D$#ESSz19ff#D4f=cyIAp zRwNSFj8bQ}$nte6)2DgKU(4AYtZLZ(b@i7<<+=JCY#_Z-a^;&5T1Vs!JeRGzTVPKY3tHncNR$ z=4>sKNz6N^bo`X5CHZioLiG zWinGbi%}Q9VSU6^eg5)I7l^==;^D+EeTuqE%1Z}r9(TylmofjK@?Fb!)QtgZ9Xo=2 zzA;q?v1d6_J|D)aeBZBrt$X+EkC&_|bUFN_hUq^;fAio!0K2aV{{yW1^8Wwto7J}! z^u~_cynk?uDbS6+^CD6iHvb{rM<&Am6AifVM?TEQ*=h4=;!XbnK)#f3O1UFzq4>*x zP>jiF4Ht^|e+L5n-{j!`j`+VE`F4je(F@Q1fgO2sE!_nyh&fcN=Gr^W{Z;_^8aO!I=zxDk8o3ZnMrt@R% z{T<3hv#MfLudQl04-4`F-b z6_@v8{(crrZ_LjJ`TC!NAUE}x0muJoK62!LX!6%8_^-7fOcTQ569YbSNLs%9(*?d0 zs8tLHD7Mx}4;{{gkF;!U?bc&6X^P&0`y&tt;rlDdN-hG?KaYqy+PVV|Oue@=*Bj*D zwLMZr=d27{Mv?0ohvo-|I~{_G?ql@{xqg3SsRX&65eRlZqd^_u8fj;tUV8L^NVyW% zh_$`nrTk|N-Xk{yg-2dlgLMsOmB@+9D|cy)h7OkO^>#|?5$6`tiHSC!D>8PMc~@em zcDypG)J*Nr9mDA7fp!9zjIofA`2tImR`C?g8=55^NxU|W#7)Z}Z8w9Q$G|wQ0nNq> zP3OqYW3{Vk<47T#9Y|XD3R&z2qb8Cc=$;<*f~$IS$;qaO(o-7zF*M7d!J;opgO>Hv zZ3{}l0e^)73Z2cH75!q591*kxYTYue@mB>8N8rerEZ~F~^BzfOS?{}LE&E`{&a{sm zXJ5jwJ)28Wvh_gSxMr*^;t|&PM|Vx7452+eJxWQVD6Q7#S!Kt>R~_7f)f7T031;4k z(Bm0phw%rW@V6ngSqYKR{rQ;e2cA`RR|;~Jt_B;l3E30Pa*4n7`S2^wDZ1ey!)eSq zAocUcCG$9_ z=yr67z*Hjf$US9{Hw(A#U!{js!yo9nQ)0j{h&4g_88ah&0PlaGMc&4(MuBvVVrzlz zLfsPl97(HCRa@P27kksjt+BR02Ji&IWZv&K0*ArfGTWFTL$-K0Jt)$!%?nB?l|}l& z2+Nj(8zR`WOo7-YBCu!ZeQ;y#xILEf@le~&fdfiBO$YE-V7D76fWIacZc!cXovuI5Zs!u-t) zj1I46sz|tl2IE1A_WQ--n^dm*W9z4|gsSk$cfp1OZBWOI7*AIleT{ z=Z*_e#ykn{x6l_MR$Rb>}=sISXCi^#o`@(+T_-N*HDePCk{Wq(k zy>WbBT`mlkl4k3ZwjTy#UyQd4n(Yt&mL`C2snn?8>4!6NYntnaF${IUYVe8uWHY97 z71gAob4JY5XYD%uB(5yP!*P6ReI~-W)0~p~fbypGL=$tx9sQg6#g|83oxlkQ(i5GX z2O<3qL^c3#;>trBZjf~)dLkqh6MoD_C3^U@jK*#)(V|tf(_%HMvlOQ#D=_-)loBpv z++5d{mbR;q*`E)i zu>i-AFv6-9U|53#%K0l-z4A(PuomH3Mb0rSI$p`%``HE8;~;PSe@2q>q@tR^w_9j64cFX3>1oJ9GiLjH%(WjP2qG zhU84dFS{u{$c{4fVdwdDe0F}+20a<+fiq>$@LD6 zf4Y^iyMs(Nbh8cJeu6yv()_2SA0ZgM7xF)Wp=y@KS0OE;W{2%A=7EEiC-2gz6&C9X znGiN|_aTt?(%|2{ATybq*y6vC95RH`rHP%@6rVm%{k~-f<+9U z49Neaz)Qzx{BDDAQ{w()ou#t$BBvv@g^Ms>Fw)nX`iilgoXUJ9Bnc&TpK~gwUnqD} zjHK9DwPt_x^n-4%edq4K&Y-TG%#RF(JSN=se5_wM>U&u?y9;{%CFGL*r5jx*7 zuOEgV-lK4TG&cuuJO%q(fA`EKPm~U4a~)-qyKswI@Yc ze9!tuc^2i@CV7x|>EEm#V{V|SeE<<+i@3d2QjP41SQC$RX$!MWfLkc|7)4pLy6VWh;&&Mij`RAV`m*gr+81f%K1E;AZOA z|HTycXYtP@mF7xEH+wME6`7Q-t^k?7oN7GmRT2ji9u{srgH=Bt;^FL+Zr~YJ*siK7 zGPgG^QP;|8adstpbGLgLGJ^T72P^P^po0pVNUDaaZF(%qvnS?VE z9MRe!$D8<>h(88bWBl=6Oo7w)4r*U(2a$|q_{{p)sgdd_J5vc<*KbJk$$r1t{@`q- zM;C3kgB8wI>M?{}U#jh(3W`NT^5-!xqI2W*Wm=W>POwI`G>d+)ZF8)94**kWfb39xmtE z0It^%kNH{(=PS*H$(0NXz`C)9xoj4%VX|%CU6}6c(CGBr{=0{LSr8`rKC^n)ir)J? ziPG_l)wE&??9e;X_N z9~y!lf(_%YeS6~B01l1I3A^)K-XjQQGzj!mpML?u$)%WHzVvUbT&ueCl}Qj;c5O3;J)H&gojpYj<((T#Km-#(UT$F<{eZ z86Cq6fsz(AY3m32Y^M0Qy#y~K)xAwb7Z??1)+L@-C5I1KwIC0L0_=is+unOzl-Hk$ z*M_Eyeuz1lgJ@zN&g^xCrV^Nfl{*bzS6(@h$i zmGyN5ZgN9S%Epst1Fw_Y*b4%?VnT05%FfM=jLFS$sM!x-34321@3g;K`yNrBG=AEo z-NTMJpgfmcbA6y6NotCQgrd0DHn)G#-8(lT_(Lq7+-9l+!-?&n-O{8yhjxv%k=}?I zEZ>Q{Q6U@M4O{wc9A@~pvaO-EgpLZwrI)(_uS9FzSJKi0RbHqJ8;E@`**d1EZpCi3 zS``c|lbUIC1v7Utm6q1&@&5S%eMdL_WBidNatZ+ zFVg~co_Zh(dk+eOeBl!H7gFy6t@)QfEh^2o`m}a*_v1LcK6zU7s6#pqZl{Q;bZ@4~ zRtW1CQsP#7ZF6emi{rs&D5J4Ov-a6(<$%p@qy^t_cAz8Cq*{LQ<12KUP1H8G??$Ey z{jdeE{kftr&u?Ua^0tK|LkV(+X!;nFlydFS&v8{T$My7I(ppa%-7C-Lv>+NM`BjBb zIU8@EJbp3QHTx->quWu7mr8CK*E0_Waiku_i)|xYj!s!Y9WBUIyG2r_qbZ9tKWhBD zA2GY8x;Te^$J6LmKcZ|&5ncPaKscKzmJVDJ!!74gl#vVI8{XsgR)VD#8t0v$IiH|P zX1WiD8L3)8;CA^Uet*mTBa4RA(B&)cOE6T7l@v1juV11|HBMxFE%1Eks4=vx@O$u~huq-kCq-JuL2 zVPD6dI(6e}%66I@%-{_F4Y3o7-p?ZuF{ezNwVis}M(mnZ=N?HOzsKWYo~q4Y($THu zeIUq_m=-o(4+hz)zf+D?xVg;b%hKP*6nsKa@FOcp8#A{3$#MQc7X74g*1G*3%B`r3 zW>k;B7v4Y*wQ3M}z*Gb@*>^#fnV!Za>m1tM)G9YQRV`IA_lWhOK{Kh1!+h9v|M0Ix zIdf&CKb_}Ls$_mX=aOgDLDPogOj+m1x^s1LV?-0Z>$f=W#P&1vANi2fH}l`p+P$<1 z*R=e*TOL_%a;vDUKzA2Ms+N0-@Q<~jVH25^vzS71PNs-13KWU1*=tPE+xv2Cc^=o7 zaxuKfMv&F?qWKs2Wc^T$t4~edfLD-mfs=|F+1rjgL~)Xrd~zP)e1=Q*^2$Vml6k6; zk+++iy8TG2IF^-?z3IE092!0#Hy3c2mdOO5LiUH;w1w?Iue^Tyy(bm#U}SyLV`R^A zX!apistnPp5QqtXUKRO;X<+kNOxdv2O3YoY=X=N0{`;F1NRzZW3hNIF+|+o+pItoP zC+1)`QafC$kBWVW+lhWf7RAMNB<1O%V39IHFOA)@eBJlWfeY%pB_nlmUB6l>)(*;o z$Ix5>q_zG+iv%p4M=*(Z$0L+H{7OAoD;I{ty=R`TT4D~8-V2J^9sJSFliXgX<;%2C ze?QK6k*`n6A7H1tM%9jrBf71)jV2WGpSbf1F7UE>+jF4GJZafkY|A^6v9ia`9h~C3 z5Z9QkF$eqh?ULn`@?H&cwEM+|5p%vFhyC3k`;M%o-Dzs7(xlBp9b12JOVyPPf@C1x zMnEb$pvLK^0IXl2EIc|UdSIvave7+6r`Dqs1ofY01Cu-Fv1#Wl>5kuDgRvRwlzi$& zv0bxb33D!9q2*;vg{gBxSi+!9Vu0R2c>>s} zOj%BSXi8o9bZIT*{acfjn6Uko_>|sZ*yE3?$aLAAC%xRhntee}GK4QL)gN41>3JN* z*iAblWchh}_hXB}psF5d@l#h`KIV3W{Z_nX*5dV{-q`s%PV2nlv-^M52)%dYBjWC` zrn7p3h_$AAYS-p2Zdt})j9Tsz*S=R=)K(j|eYG$#ypmd3YI850^dy2>3JQqW`L-#s4>@X9PO93rem83hPG2@P=k-eAAaZtJr_RFi$dI5DEY<>NJ@Dyt{ zCT-lgoX=PDKCca|Q9ZzW>SBTgOo4VLGa#q|iBxO5PWt}BU_wF@VE}1aGz+YeyZ2So zSsHf9O^~81vvS9JuLky$_NV_mQXRwM^6-*(RWa3%4WV&MeNf~iWY5kBBOhBRN2{ zyboty?Mp`2;LqxhNeu_0Ip3+>ez`h0)s|kf?neK)D_mq6+rlSogFv38Z3>IEcB3(4 z4Pl`!213lMVPIPhaLfBE*6+t|mA;lPL#Qj%-0{$cq}pC3>UA`Bk?gv zpqXcpk!p6?urYV%vDb(g6M!E#$3h0-Pk#=zA#+={Uc01FJ9jM*y&XsPEJze{!Ql3< z_Lwj7&d2q9x9LNB5FHIToy!@SCfjMFZM5!F)Em4*& zcpFQ+0AK+&z21zr_fmblwFYkA_a}HegV$@htgC(wH}X8?PF~J2$AiIo9Cl|1DT^MNHT#HQK8dkM1nNKs-h_xpt;|Z>;n-Byeb4V0 z53xlp^d&C&hToE6!5X}?T}c7*WRBi=*+_~XL-s4^VMO{!vtW?wQeuEhFoTs_Kzl1< zq<`8XB2{ZpzIIK|%WJ@SbO?otPZt6N`EZ@?Kgv{*2;M*w#X0Be^r3Z2Tl>k~G@lnn z%&Q~a@L<`+nS0F|_TaBi4q%i$e=mY}!IUvjsQul_Uz*^<1Fsh&4bH}imFRRJC2hr%}MsY!p5zjFk20=4JVR+rg)x1hd*%jSbimJ zwS>#;L$?h9QuFe43sMv46TtI=eSyxP(%PX{xoWl>%S)CG3MZT2gT{+It!?8SqV6M7R7 zg+ex_dHF-Vu&Z_T0V0)mg3s}ACnW~>)&@HK&I)#$4VF9$#ui9{MfjhPm}=h3`&)hz zD45Xe{vj$Y>)L2#%?*LEzL+h`B_;H;Vs>C*BLuRz@DvDWH(&j!#*h9ASkU2dq*e(7 zo4LeE`^$j+&gEOOP7pVO#z@V>YLJQkyb5msHp~Q(koXXX3tJ8lR{F*7Nd&zXzRq<% z-*@gR^|_rAje$sU0!+q%9RR9wLyt2Kb3v3R$O-G?)Svypp7Hw$`Y)4h*lU4>%5z~J zh8OKQ^T2amP2;WuagE%mBCg_l4(p4VB#aV^gv9;&RuShdRRw1Y!3BKV0=g))vagdr zEYAW!;eC9yQ;owrXr^69?tqW-(kbVJorb8l;n+zVp1l2@C|v!;^9`lrzwa1mXgE7t zrI#+%$>^*ivmM5_|Ek-3N$}&jrg$oY{wglXlibOn1BF5-%Oyd34B<7~kJ({U{k^`Ot>9rPF2XGeSNfOekB zplq1ybS0whZ!UWOr(6!lDM7xKo(Ay2nrw&{fqu`br3xh%A<}BgQx^&dKAV}osUa7J zk*K7UJYRk5ZQ`^k(I~yhUJy#pX@CwqJ=JcQEdOq%>9(}6;Lc4-dHSHASI`Ln8S$zR zdk}gYh)u?3ZRp@m;rQ6$K`tR>VLonUJv)JVJn$840?gZEn|f?k=Ee#+ZAGQnjfe!e zcLh~WZ6>cxR$b#Rak+seE5#!Sp=N0sd>dC_^J!5T5|un8O@2vz+qpjvmW>#FA8F3+}2ta$F*M37(eaNB-g{iBX8IwnHZ9`8bvOIu17b!t?QU}xr$stPAxab)@TH|K?DJ4`4Ki*W^ zL*C0N)&e&fA6N^DDi{7~6Fye{cn%S?1sKAuBPWQTmfQN)g>_EE#gBKLO9&Xy*t_5I zswQ)DX>c8*Pup@&dB=1TjuE-T@{9=G4aU7|3FJSV8~QTGN?Nf zwtTGeFn;IVI`-7@c22*6pH|C_;s3>FceFtkHm{gzqrwDn9<6qnHk^c)xga4My!~gln5A*T=Ab0cMLcxDY z0Oeq&sH*q6{I#V1B?a;S>mmMI=J_ulDgN{3nb%*&J2M+l3&Ttf{_*^qa%%sjtN%^D zZm|GkAI?|}1M>dt`F^2pf&h@EiK*UywlwiQWNl)?AO8JQ?G`J-l%c!M{&z!J*#0(k z>f0TmzmsM^T)6$=xeyc7<>x7EdInY0%)hlmG+5S$%{T3xc fyfw_e#yEyw=z2l(bY1`RD?shLS`~jhc=rDQ^T5c9 From 829be5dfb694acf6e72a83d8459313310cde74e6 Mon Sep 17 00:00:00 2001 From: Stefano Franz Date: Tue, 17 Jul 2018 12:19:06 +0100 Subject: [PATCH 18/19] CORDA-1747 fix issue around RPC return of generic objects (#3625) * fix issue around RPC return of generic objects * address review comments --- ...urnFailureReproductionIntegrationTest.java | 73 ++++++++ .../internal/amqp/CollectionSerializer.kt | 11 +- .../internal/amqp/MapSerializer.kt | 17 +- .../internal/amqp/SerializationHelper.kt | 2 +- .../internal/amqp/JavaGenericsTest.java | 166 +++++++++++++++++- 5 files changed, 253 insertions(+), 16 deletions(-) create mode 100644 node/src/integration-test/java/net/corda/serialization/reproduction/GenericReturnFailureReproductionIntegrationTest.java diff --git a/node/src/integration-test/java/net/corda/serialization/reproduction/GenericReturnFailureReproductionIntegrationTest.java b/node/src/integration-test/java/net/corda/serialization/reproduction/GenericReturnFailureReproductionIntegrationTest.java new file mode 100644 index 0000000000..f1f3af69c6 --- /dev/null +++ b/node/src/integration-test/java/net/corda/serialization/reproduction/GenericReturnFailureReproductionIntegrationTest.java @@ -0,0 +1,73 @@ +package net.corda.serialization.reproduction; + +import net.corda.client.rpc.CordaRPCClient; +import net.corda.core.concurrent.CordaFuture; +import net.corda.core.flows.FlowLogic; +import net.corda.core.flows.StartableByRPC; +import net.corda.core.serialization.CordaSerializable; +import net.corda.node.services.Permissions; +import net.corda.testing.driver.Driver; +import net.corda.testing.driver.DriverParameters; +import net.corda.testing.driver.NodeHandle; +import net.corda.testing.driver.NodeParameters; +import net.corda.testing.node.User; +import org.junit.Test; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class GenericReturnFailureReproductionIntegrationTest { + + @Test() + public void flowShouldReturnGenericList() { + User user = new User("yes", "yes", Collections.singleton(Permissions.startFlow(SuperSimpleGenericFlow.class))); + DriverParameters defaultParameters = new DriverParameters(); + Driver.driver(defaultParameters, (driver) -> { + NodeHandle startedNode = getOrThrow(driver.startNode(new NodeParameters().withRpcUsers(Collections.singletonList(user)).withStartInSameProcess(true))); + (new CordaRPCClient(startedNode.getRpcAddress())).use("yes", "yes", (cordaRPCConnection -> { + getOrThrow(cordaRPCConnection.getProxy().startFlowDynamic(SuperSimpleGenericFlow.class).getReturnValue()); + return null; + })); + return null; + }); + + } + + @StartableByRPC + public static class SuperSimpleGenericFlow extends FlowLogic> { + public SuperSimpleGenericFlow() { + } + + @Override + public GenericHolder call() { + return new GenericHolder<>(IntStream.of(100).mapToObj((i) -> "" + i).collect(Collectors.toList())); + } + } + + @CordaSerializable + public static class GenericHolder { + private final List items; + + public GenericHolder(List items) { + this.items = items; + } + + public List getItems() { + return items; + } + } + + + private static Y getOrThrow(CordaFuture future) { + + try { + return future.get(); + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/CollectionSerializer.kt b/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/CollectionSerializer.kt index 1a5c5b48b3..5cb856b247 100644 --- a/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/CollectionSerializer.kt +++ b/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/CollectionSerializer.kt @@ -63,9 +63,13 @@ class CollectionSerializer(private val declaredType: ParameterizedType, factory: private val typeNotation: TypeNotation = RestrictedType(SerializerFactory.nameForType(declaredType), null, emptyList(), "list", Descriptor(typeDescriptor), emptyList()) + private val outboundType = resolveTypeVariables(declaredType.actualTypeArguments[0], null) + private val inboundType = declaredType.actualTypeArguments[0] + + override fun writeClassInfo(output: SerializationOutput) = ifThrowsAppend({ declaredType.typeName }) { if (output.writeTypeNotations(typeNotation)) { - output.requireSerializer(declaredType.actualTypeArguments[0]) + output.requireSerializer(outboundType) } } @@ -80,12 +84,13 @@ class CollectionSerializer(private val declaredType: ParameterizedType, factory: data.withDescribed(typeNotation.descriptor) { withList { for (entry in obj as Collection<*>) { - output.writeObjectOrNull(entry, this, declaredType.actualTypeArguments[0], context, debugIndent) + output.writeObjectOrNull(entry, this, outboundType, context, debugIndent) } } } } + override fun readObject( obj: Any, schemas: SerializationSchemas, @@ -93,7 +98,7 @@ class CollectionSerializer(private val declaredType: ParameterizedType, factory: context: SerializationContext): Any = ifThrowsAppend({ declaredType.typeName }) { // TODO: Can we verify the entries in the list? concreteBuilder((obj as List<*>).map { - input.readObjectOrNull(it, schemas, declaredType.actualTypeArguments[0], context) + input.readObjectOrNull(it, schemas, inboundType, context) }) } } \ No newline at end of file diff --git a/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/MapSerializer.kt b/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/MapSerializer.kt index 26e9e7f090..ca66b9c81f 100644 --- a/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/MapSerializer.kt +++ b/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/MapSerializer.kt @@ -70,10 +70,15 @@ class MapSerializer(private val declaredType: ParameterizedType, factory: Serial private val typeNotation: TypeNotation = RestrictedType(SerializerFactory.nameForType(declaredType), null, emptyList(), "map", Descriptor(typeDescriptor), emptyList()) + private val inboundKeyType = declaredType.actualTypeArguments[0] + private val outboundKeyType = resolveTypeVariables(inboundKeyType, null) + private val inboundValueType = declaredType.actualTypeArguments[1] + private val outboundValueType = resolveTypeVariables(inboundValueType, null) + override fun writeClassInfo(output: SerializationOutput) = ifThrowsAppend({ declaredType.typeName }) { if (output.writeTypeNotations(typeNotation)) { - output.requireSerializer(declaredType.actualTypeArguments[0]) - output.requireSerializer(declaredType.actualTypeArguments[1]) + output.requireSerializer(outboundKeyType) + output.requireSerializer(outboundValueType) } } @@ -91,8 +96,8 @@ class MapSerializer(private val declaredType: ParameterizedType, factory: Serial data.putMap() data.enter() for ((key, value) in obj as Map<*, *>) { - output.writeObjectOrNull(key, data, declaredType.actualTypeArguments[0], context, debugIndent) - output.writeObjectOrNull(value, data, declaredType.actualTypeArguments[1], context, debugIndent) + output.writeObjectOrNull(key, data, outboundKeyType, context, debugIndent) + output.writeObjectOrNull(value, data, outboundValueType, context, debugIndent) } data.exit() // exit map } @@ -108,8 +113,8 @@ class MapSerializer(private val declaredType: ParameterizedType, factory: Serial private fun readEntry(schemas: SerializationSchemas, input: DeserializationInput, entry: Map.Entry, context: SerializationContext - ) = input.readObjectOrNull(entry.key, schemas, declaredType.actualTypeArguments[0], context) to - input.readObjectOrNull(entry.value, schemas, declaredType.actualTypeArguments[1], context) + ) = input.readObjectOrNull(entry.key, schemas, inboundKeyType, context) to + input.readObjectOrNull(entry.value, schemas, inboundValueType, context) // Cannot use * as a bound for EnumMap and EnumSet since * is not an enum. So, we use a sample enum instead. // We don't actually care about the type, we just need to make the compiler happier. diff --git a/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/SerializationHelper.kt b/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/SerializationHelper.kt index f9f5880053..7847ddbd2a 100644 --- a/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/SerializationHelper.kt +++ b/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/SerializationHelper.kt @@ -427,7 +427,7 @@ fun Data.writeReferencedObject(refObject: ReferencedObject) { exit() // exit described } -private fun resolveTypeVariables(actualType: Type, contextType: Type?): Type { +fun resolveTypeVariables(actualType: Type, contextType: Type?): Type { val resolvedType = if (contextType != null) TypeToken.of(contextType).resolveType(actualType).type else actualType // TODO: surely we check it is concrete at this point with no TypeVariables return if (resolvedType is TypeVariable<*>) { diff --git a/serialization/src/test/java/net/corda/serialization/internal/amqp/JavaGenericsTest.java b/serialization/src/test/java/net/corda/serialization/internal/amqp/JavaGenericsTest.java index 40d3f1d311..ecf7ba358e 100644 --- a/serialization/src/test/java/net/corda/serialization/internal/amqp/JavaGenericsTest.java +++ b/serialization/src/test/java/net/corda/serialization/internal/amqp/JavaGenericsTest.java @@ -1,26 +1,180 @@ package net.corda.serialization.internal.amqp; +import net.corda.core.serialization.CordaSerializable; import net.corda.core.serialization.SerializedBytes; +import net.corda.serialization.internal.amqp.custom.BigIntegerSerializer; +import net.corda.serialization.internal.amqp.testutils.AMQPTestUtilsKt; import net.corda.serialization.internal.amqp.testutils.TestSerializationContext; +import org.hamcrest.CoreMatchers; +import org.junit.Assert; import org.junit.Test; + import java.io.NotSerializableException; +import java.math.BigInteger; +import java.util.*; import static net.corda.serialization.internal.amqp.testutils.AMQPTestUtilsKt.testDefaultFactory; import static org.jgroups.util.Util.assertEquals; +@SuppressWarnings("unchecked") public class JavaGenericsTest { private static class Inner { private final Integer v; - private Inner(Integer v) { this.v = v; } - Integer getV() { return v; } + private Inner(Integer v) { + this.v = v; + } + + Integer getV() { + return v; + } } private static class A { private final T t; - private A(T t) { this.t = t; } - public T getT() { return t; } + private A(T t) { + this.t = t; + } + + public T getT() { + return t; + } + } + + @CordaSerializable + private static class ConcreteClass { + private final String theItem; + + private ConcreteClass(String theItem) { + this.theItem = theItem; + } + + public String getTheItem() { + return theItem; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ConcreteClass that = (ConcreteClass) o; + return Objects.equals(theItem, that.theItem); + } + + @Override + public int hashCode() { + + return Objects.hash(theItem); + } + } + + + @CordaSerializable + private static class GenericClassWithList { + private final List items; + + private GenericClassWithList(List items) { + this.items = items; + } + + public List getItems() { + return items; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + GenericClassWithList that = (GenericClassWithList) o; + return Objects.equals(items, that.items); + } + + @Override + public int hashCode() { + + return Objects.hash(items); + } + } + + @CordaSerializable + private static class GenericClassWithMap { + private final Map theMap; + + private GenericClassWithMap(Map theMap) { + this.theMap = new LinkedHashMap<>(theMap); + } + + public Map getTheMap() { + return theMap; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + GenericClassWithMap that = (GenericClassWithMap) o; + return Objects.equals(theMap, that.theMap); + } + + @Override + public int hashCode() { + + return Objects.hash(theMap); + } + } + + @CordaSerializable + private static class HolderOfGeneric { + private final G theGeneric; + + private HolderOfGeneric(G theGeneric) { + this.theGeneric = theGeneric; + } + + public G getTheGeneric() { + return theGeneric; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + HolderOfGeneric that = (HolderOfGeneric) o; + return Objects.equals(theGeneric, that.theGeneric); + } + + @Override + public int hashCode() { + return Objects.hash(theGeneric); + } + } + + @Test + + public void shouldSupportNestedGenericsFromJavaWithCollections() throws NotSerializableException { + ConcreteClass concreteClass = new ConcreteClass("How to make concrete, $99/class"); + HolderOfGeneric> genericList = new HolderOfGeneric<>(new GenericClassWithList<>(Collections.singletonList(concreteClass))); + SerializerFactory factory = AMQPTestUtilsKt.testDefaultFactoryWithWhitelist(); + SerializationOutput ser = new SerializationOutput(factory); + SerializedBytes bytes = ser.serialize(genericList, TestSerializationContext.testSerializationContext); + DeserializationInput des = new DeserializationInput(factory); + HolderOfGeneric> genericList2 = des.deserialize(bytes, HolderOfGeneric.class, TestSerializationContext.testSerializationContext); + Assert.assertThat(genericList, CoreMatchers.is(CoreMatchers.equalTo(genericList2))); + + } + + @Test + public void shouldSupportNestedGenericsFromJavaWithMaps() throws NotSerializableException { + ConcreteClass concreteClass = new ConcreteClass("How to make concrete, $99/class"); + GenericClassWithMap genericMap = new GenericClassWithMap<>(Collections.singletonMap(concreteClass, BigInteger.ONE)); + SerializerFactory factory = AMQPTestUtilsKt.testDefaultFactoryWithWhitelist(); + factory.register(BigIntegerSerializer.INSTANCE); + SerializationOutput ser = new SerializationOutput(factory); + SerializedBytes bytes = ser.serialize(genericMap, TestSerializationContext.testSerializationContext); + DeserializationInput des = new DeserializationInput(factory); + GenericClassWithMap genericMap2 = des.deserialize(bytes, GenericClassWithMap.class, TestSerializationContext.testSerializationContext); + Assert.assertThat(genericMap2, CoreMatchers.is(CoreMatchers.equalTo(genericMap2))); } @Test @@ -67,7 +221,7 @@ public class JavaGenericsTest { @Test public void forceWildcard() throws NotSerializableException { SerializedBytes bytes = forceWildcardSerialize(new A<>(new Inner(29))); - Inner i = (Inner)forceWildcardDeserialize(bytes).getT(); + Inner i = (Inner) forceWildcardDeserialize(bytes).getT(); assertEquals(29, i.getV()); } @@ -76,7 +230,7 @@ public class JavaGenericsTest { SerializerFactory factory = testDefaultFactory(); SerializedBytes bytes = forceWildcardSerializeFactory(new A<>(new Inner(29)), factory); - Inner i = (Inner)forceWildcardDeserializeFactory(bytes, factory).getT(); + Inner i = (Inner) forceWildcardDeserializeFactory(bytes, factory).getT(); assertEquals(29, i.getV()); } From e879de70f306af30a80ecbd125dab799aeeaf268 Mon Sep 17 00:00:00 2001 From: Chris Rankin Date: Tue, 17 Jul 2018 12:31:44 +0100 Subject: [PATCH 19/19] CORDA-1800: Shrink the Simm Valuation Demo's contract states using ProGuard. (#3586) * Shrink the Simm Valuation Demo's contract states CorDapp using ProGuard. * Remove CordFormation from CorDapp modules, which unbundles Jolokia from the CorDapps. * Preserve directory structure for CorDapp's own classes. * Remove unwanted transitive dependencies from Simm Valuation CorDapps. * Use allprojects {} to set Strata version property. --- build.gradle | 3 + constants.properties | 2 +- samples/simm-valuation-demo/build.gradle | 32 +++++---- .../contracts-states/build.gradle | 70 ++++++++++++++++--- .../simm-valuation-demo/flows/build.gradle | 37 +++++----- 5 files changed, 100 insertions(+), 44 deletions(-) diff --git a/build.gradle b/build.gradle index d738a835b4..70347531ef 100644 --- a/build.gradle +++ b/build.gradle @@ -216,6 +216,9 @@ allprojects { force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" force "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + // Force dependencies to use the same version of Guava as Corda. + force "com.google.guava:guava:$guava_version" + // Demand that everything uses our given version of Netty. eachDependency { details -> if (details.requested.group == 'io.netty' && details.requested.name.startsWith('netty-')) { diff --git a/constants.properties b/constants.properties index 0f752e89e5..128272acb1 100644 --- a/constants.properties +++ b/constants.properties @@ -1,4 +1,4 @@ -gradlePluginsVersion=4.0.25 +gradlePluginsVersion=4.0.26 kotlinVersion=1.2.51 platformVersion=4 guavaVersion=25.1-jre diff --git a/samples/simm-valuation-demo/build.gradle b/samples/simm-valuation-demo/build.gradle index 3221181909..576460d0e6 100644 --- a/samples/simm-valuation-demo/build.gradle +++ b/samples/simm-valuation-demo/build.gradle @@ -1,5 +1,7 @@ -buildscript { - ext.strata_version = '1.1.2' +allprojects { + ext { + strata_version = '1.1.2' + } } apply plugin: 'java' @@ -29,7 +31,7 @@ dependencies { // The SIMM demo CorDapp depends upon Cash CorDapp features cordapp project(':finance') - cordapp project(':samples:simm-valuation-demo:contracts-states') + cordapp project(path: ':samples:simm-valuation-demo:contracts-states', configuration: 'shrinkArtifacts') cordapp project(':samples:simm-valuation-demo:flows') // Corda integration dependencies @@ -39,25 +41,25 @@ dependencies { cordaCompile project(':webserver') // Javax is required for webapis - compile "org.glassfish.jersey.core:jersey-server:${jersey_version}" + compile "org.glassfish.jersey.core:jersey-server:$jersey_version" // Cordapp dependencies // Specify your cordapp's dependencies below, including dependent cordapps - compile "com.opengamma.strata:strata-basics:${strata_version}" - compile "com.opengamma.strata:strata-product:${strata_version}" - compile "com.opengamma.strata:strata-data:${strata_version}" - compile "com.opengamma.strata:strata-calc:${strata_version}" - compile "com.opengamma.strata:strata-pricer:${strata_version}" - compile "com.opengamma.strata:strata-report:${strata_version}" - compile "com.opengamma.strata:strata-market:${strata_version}" - compile "com.opengamma.strata:strata-collect:${strata_version}" - compile "com.opengamma.strata:strata-loader:${strata_version}" - compile "com.opengamma.strata:strata-math:${strata_version}" + compile "com.opengamma.strata:strata-basics:$strata_version" + compile "com.opengamma.strata:strata-product:$strata_version" + compile "com.opengamma.strata:strata-data:$strata_version" + compile "com.opengamma.strata:strata-calc:$strata_version" + compile "com.opengamma.strata:strata-pricer:$strata_version" + compile "com.opengamma.strata:strata-report:$strata_version" + compile "com.opengamma.strata:strata-market:$strata_version" + compile "com.opengamma.strata:strata-collect:$strata_version" + compile "com.opengamma.strata:strata-loader:$strata_version" + compile "com.opengamma.strata:strata-math:$strata_version" // Test dependencies testCompile project(':node-driver') testCompile "junit:junit:$junit_version" - testCompile "org.assertj:assertj-core:${assertj_version}" + testCompile "org.assertj:assertj-core:$assertj_version" } task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) { diff --git a/samples/simm-valuation-demo/contracts-states/build.gradle b/samples/simm-valuation-demo/contracts-states/build.gradle index 5b3bc5f3f3..146966bbee 100644 --- a/samples/simm-valuation-demo/contracts-states/build.gradle +++ b/samples/simm-valuation-demo/contracts-states/build.gradle @@ -1,24 +1,76 @@ -buildscript { - ext.strata_version = '1.1.2' +apply plugin: 'net.corda.plugins.cordapp' + +def javaHome = System.getProperty('java.home') +def shrinkJar = file("$buildDir/libs/${project.name}-${project.version}-tiny.jar") + +cordapp { + info { + vendor = 'R3' + } } -apply plugin: 'net.corda.plugins.cordapp' -apply plugin: 'net.corda.plugins.cordformation' +configurations { + shrinkArtifacts +} dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + cordaCompile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // The SIMM demo CorDapp depends upon Cash CorDapp features cordapp project(':finance') // Corda integration dependencies - cordaCompile project(path: ":node:capsule", configuration: 'runtimeArtifacts') cordaCompile project(':core') // Cordapp dependencies // Specify your cordapp's dependencies below, including dependent cordapps - compile "com.opengamma.strata:strata-product:${strata_version}" - compile "com.opengamma.strata:strata-market:${strata_version}" + compile "com.opengamma.strata:strata-product:$strata_version" + compile "com.opengamma.strata:strata-market:$strata_version" +} -} \ No newline at end of file +jar { + classifier = 'fat' +} + +import proguard.gradle.ProGuardTask +task shrink(type: ProGuardTask) { + injars jar + outjars shrinkJar + + libraryjars "$javaHome/lib/rt.jar" + libraryjars "$javaHome/lib/jce.jar" + configurations.runtime.forEach { + libraryjars it.path, filter: '!META-INF/versions/**' + } + + dontwarn 'afu.org.checkerframework.**' + dontwarn 'co.paralleluniverse.**' + dontwarn 'org.checkerframework.**' + dontwarn 'org.joda.**' + dontnote + + // We need to preserve our CorDapp's own directory structure so that Corda + // can find the contract classes. + keepdirectories 'net/corda/**' + keepattributes '*' + dontobfuscate + dontoptimize + verbose + + // These are our CorDapp classes, so don't change these. + keep 'class net.corda.vega.** { *; }', includedescriptorclasses:true + + // Until CorDapps are isolated from each other, we need to ensure that the + // versions of the classes that this CorDapp needs are still usable by other + // CorDapps. Unfortunately, this means that we cannot shrink them as much as + // we'd like to. + keepclassmembers 'class com.opengamma.strata.** { *; }', includedescriptorclasses:true + keepclassmembers 'class com.google.** { *; }', includedescriptorclasses:true + keepclassmembers 'class org.joda.** { *; }', includedescriptorclasses:true +} +jar.finalizedBy shrink + +artifacts { + shrinkArtifacts file: shrinkJar, name: project.name, type: 'jar', extension: 'jar', classifier: 'tiny', builtBy: shrink +} diff --git a/samples/simm-valuation-demo/flows/build.gradle b/samples/simm-valuation-demo/flows/build.gradle index ffe044fa55..fd3b512fab 100644 --- a/samples/simm-valuation-demo/flows/build.gradle +++ b/samples/simm-valuation-demo/flows/build.gradle @@ -1,33 +1,32 @@ -buildscript { - ext.strata_version = '1.1.2' -} - apply plugin: 'net.corda.plugins.quasar-utils' apply plugin: 'net.corda.plugins.cordapp' -apply plugin: 'net.corda.plugins.cordformation' + +cordapp { + info { + vendor = 'R3' + } +} dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + cordaCompile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // The SIMM demo CorDapp depends upon Cash CorDapp features cordapp project(':finance') - cordapp project(':samples:simm-valuation-demo:contracts-states') + cordapp project(path: ':samples:simm-valuation-demo:contracts-states', configuration: 'shrinkArtifacts') // Corda integration dependencies - cordaCompile project(path: ":node:capsule", configuration: 'runtimeArtifacts') cordaCompile project(':core') // Cordapp dependencies // Specify your cordapp's dependencies below, including dependent cordapps - compile "com.opengamma.strata:strata-basics:${strata_version}" - compile "com.opengamma.strata:strata-product:${strata_version}" - compile "com.opengamma.strata:strata-data:${strata_version}" - compile "com.opengamma.strata:strata-calc:${strata_version}" - compile "com.opengamma.strata:strata-pricer:${strata_version}" - compile "com.opengamma.strata:strata-report:${strata_version}" - compile "com.opengamma.strata:strata-market:${strata_version}" - compile "com.opengamma.strata:strata-collect:${strata_version}" - compile "com.opengamma.strata:strata-loader:${strata_version}" - compile "com.opengamma.strata:strata-math:${strata_version}" - + compile "com.opengamma.strata:strata-basics:$strata_version" + compile "com.opengamma.strata:strata-product:$strata_version" + compile "com.opengamma.strata:strata-data:$strata_version" + compile "com.opengamma.strata:strata-calc:$strata_version" + compile "com.opengamma.strata:strata-pricer:$strata_version" + compile "com.opengamma.strata:strata-report:$strata_version" + compile "com.opengamma.strata:strata-market:$strata_version" + compile "com.opengamma.strata:strata-collect:$strata_version" + compile "com.opengamma.strata:strata-loader:$strata_version" + compile "com.opengamma.strata:strata-math:$strata_version" }