From 98aec6cf3407417d6730fc06fd6fef5600b73e0a Mon Sep 17 00:00:00 2001 From: Ravi Hegde Date: Wed, 4 Feb 2026 11:53:14 +0530 Subject: [PATCH] feat: added canton offer withdrawn builder Ticket: COIN-7486 --- modules/sdk-coin-canton/src/canton.ts | 1 + modules/sdk-coin-canton/src/lib/iface.ts | 4 + modules/sdk-coin-canton/src/lib/index.ts | 1 + .../src/lib/transactionBuilderFactory.ts | 8 + .../src/lib/transferOfferWithdrawnBuilder.ts | 139 ++++++++++++++++++ modules/sdk-coin-canton/src/lib/utils.ts | 52 +++++++ modules/sdk-coin-canton/test/resources.ts | 28 ++++ .../transferOfferWithdrawnBuilder.ts | 70 +++++++++ .../sdk-core/src/account-lib/baseCoin/enum.ts | 2 + 9 files changed, 305 insertions(+) create mode 100644 modules/sdk-coin-canton/src/lib/transferOfferWithdrawnBuilder.ts create mode 100644 modules/sdk-coin-canton/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.ts diff --git a/modules/sdk-coin-canton/src/canton.ts b/modules/sdk-coin-canton/src/canton.ts index 421fe60aeb..995145914b 100644 --- a/modules/sdk-coin-canton/src/canton.ts +++ b/modules/sdk-coin-canton/src/canton.ts @@ -113,6 +113,7 @@ export class Canton extends BaseCoin { case TransactionType.TransferReject: case TransactionType.TransferAcknowledge: case TransactionType.OneStepPreApproval: + case TransactionType.TransferOfferWithdrawn: // There is no input for these type of transactions, so always return true. return true; case TransactionType.Send: diff --git a/modules/sdk-coin-canton/src/lib/iface.ts b/modules/sdk-coin-canton/src/lib/iface.ts index dd17138555..afa129393e 100644 --- a/modules/sdk-coin-canton/src/lib/iface.ts +++ b/modules/sdk-coin-canton/src/lib/iface.ts @@ -138,6 +138,10 @@ export interface CantonTransferAcceptRejectRequest extends CantonPrepareCommandR contractId: string; } +export interface CantonTransferOfferWithdrawnRequest extends CantonTransferAcceptRejectRequest { + tokenName?: string; +} + export interface TransferAcknowledge { contractId: string; senderPartyId: string; diff --git a/modules/sdk-coin-canton/src/lib/index.ts b/modules/sdk-coin-canton/src/lib/index.ts index a19edc0f74..1d6d1c468d 100644 --- a/modules/sdk-coin-canton/src/lib/index.ts +++ b/modules/sdk-coin-canton/src/lib/index.ts @@ -9,6 +9,7 @@ export { TransferAcknowledgeBuilder } from './transferAcknowledgeBuilder'; export { TransferBuilder } from './transferBuilder'; export { TransactionBuilder } from './transactionBuilder'; export { TransactionBuilderFactory } from './transactionBuilderFactory'; +export { TransferOfferWithdrawnBuilder } from './transferOfferWithdrawnBuilder'; export { TransferRejectionBuilder } from './transferRejectionBuilder'; export { WalletInitBuilder } from './walletInitBuilder'; export { WalletInitTransaction } from './walletInitialization/walletInitTransaction'; diff --git a/modules/sdk-coin-canton/src/lib/transactionBuilderFactory.ts b/modules/sdk-coin-canton/src/lib/transactionBuilderFactory.ts index c3799296c9..9e438616a0 100644 --- a/modules/sdk-coin-canton/src/lib/transactionBuilderFactory.ts +++ b/modules/sdk-coin-canton/src/lib/transactionBuilderFactory.ts @@ -10,6 +10,7 @@ import { TransferAcceptanceBuilder } from './transferAcceptanceBuilder'; import { TransferAcknowledgeBuilder } from './transferAcknowledgeBuilder'; import { TransactionBuilder } from './transactionBuilder'; import { TransferBuilder } from './transferBuilder'; +import { TransferOfferWithdrawnBuilder } from './transferOfferWithdrawnBuilder'; import { TransferRejectionBuilder } from './transferRejectionBuilder'; import { Transaction } from './transaction/transaction'; import { WalletInitBuilder } from './walletInitBuilder'; @@ -41,6 +42,9 @@ export class TransactionBuilderFactory extends BaseTransactionBuilderFactory { case TransactionType.TransferAcknowledge: { return this.getTransferAcknowledgeBuilder(tx); } + case TransactionType.TransferOfferWithdrawn: { + return this.getTransferOfferWithdrawnBuilder(); + } case TransactionType.TransferReject: { return this.getTransferRejectBuilder(tx); } @@ -63,6 +67,10 @@ export class TransactionBuilderFactory extends BaseTransactionBuilderFactory { return TransactionBuilderFactory.initializeBuilder(tx, new TransferAcknowledgeBuilder(this._coinConfig)); } + getTransferOfferWithdrawnBuilder(tx?: Transaction): TransferOfferWithdrawnBuilder { + return TransactionBuilderFactory.initializeBuilder(tx, new TransferOfferWithdrawnBuilder(this._coinConfig)); + } + getTransferRejectBuilder(tx?: Transaction): TransferRejectionBuilder { return TransactionBuilderFactory.initializeBuilder(tx, new TransferRejectionBuilder(this._coinConfig)); } diff --git a/modules/sdk-coin-canton/src/lib/transferOfferWithdrawnBuilder.ts b/modules/sdk-coin-canton/src/lib/transferOfferWithdrawnBuilder.ts new file mode 100644 index 0000000000..e789e275fe --- /dev/null +++ b/modules/sdk-coin-canton/src/lib/transferOfferWithdrawnBuilder.ts @@ -0,0 +1,139 @@ +import { InvalidTransactionError, PublicKey, TransactionType } from '@bitgo/sdk-core'; +import { BaseCoin as CoinConfig } from '@bitgo/statics'; +import { CantonPrepareCommandResponse, CantonTransferOfferWithdrawnRequest } from './iface'; +import { TransactionBuilder } from './transactionBuilder'; +import { Transaction } from './transaction/transaction'; +import utils from './utils'; + +export class TransferOfferWithdrawnBuilder extends TransactionBuilder { + private _commandId: string; + private _contractId: string; + private _actAsPartyId: string; + private _tokenName: string; + constructor(_coinConfig: Readonly) { + super(_coinConfig); + } + + initBuilder(tx: Transaction): void { + super.initBuilder(tx); + this.setTransactionType(); + } + + get transactionType(): TransactionType { + return TransactionType.TransferOfferWithdrawn; + } + + setTransactionType(): void { + this.transaction.transactionType = TransactionType.TransferOfferWithdrawn; + } + + setTransaction(transaction: CantonPrepareCommandResponse): void { + this.transaction.prepareCommand = transaction; + } + + /** @inheritDoc */ + addSignature(publicKey: PublicKey, signature: Buffer): void { + if (!this.transaction) { + throw new InvalidTransactionError('transaction is empty!'); + } + this._signatures.push({ publicKey, signature }); + const pubKeyBase64 = utils.getBase64FromHex(publicKey.pub); + this.transaction.signerFingerprint = utils.getAddressFromPublicKey(pubKeyBase64); + this.transaction.signatures = signature.toString('base64'); + } + + /** + * Sets the unique id for the transfer offer withdrawn + * Also sets the _id of the transaction + * + * @param id - A uuid + * @returns The current builder instance for chaining. + * @throws Error if id is empty. + */ + commandId(id: string): this { + if (!id || !id.trim()) { + throw new Error('commandId must be a non-empty string'); + } + this._commandId = id.trim(); + // also set the transaction _id + this.transaction.id = id.trim(); + return this; + } + + /** + * Sets the contract id the receiver needs to withdraw + * @param id - canton withdrawn contract id + * @returns The current builder instance for chaining. + * @throws Error if id is empty. + */ + contractId(id: string): this { + if (!id || !id.trim()) { + throw new Error('contractId must be a non-empty string'); + } + this._contractId = id.trim(); + return this; + } + + /** + * The sender who wants to withdraw the offer + * + * @param id - the sender party id + * @returns The current builder instance for chaining. + * @throws Error if id is empty. + */ + actAs(id: string): this { + if (!id || !id.trim()) { + throw new Error('actAsPartyId must be a non-empty string'); + } + this._actAsPartyId = id.trim(); + return this; + } + + /** + * The token name to withdraw the offer + * @param name - the bitgo name of the asset + * @returns The current builder instance for chaining. + * @throws Error if name is empty. + */ + tokenName(name: string): this { + if (!name || !name.trim()) { + throw new Error('tokenName must be a non-empty string'); + } + this._tokenName = name.trim(); + return this; + } + + /** + * Builds and returns the CantonTransferOfferWithdrawnRequest object from the builder's internal state. + * + * This method performs validation before constructing the object. If required fields are + * missing or invalid, it throws an error. + * + * @returns {CantonTransferOfferWithdrawnRequest} - A fully constructed and validated request object for transfer offer withdrawal. + * @throws {Error} If any required field is missing or fails validation. + */ + toRequestObject(): CantonTransferOfferWithdrawnRequest { + this.validate(); + + return { + commandId: this._commandId, + contractId: this._contractId, + verboseHashing: false, + actAs: [this._actAsPartyId], + readAs: [], + tokenName: this._tokenName, + }; + } + + /** + * Validates the internal state of the builder before building the request object. + * + * @private + * @throws {Error} If any required field is missing or invalid. + */ + private validate(): void { + if (!this._commandId) throw new Error('commandId is missing'); + if (!this._contractId) throw new Error('contractId is missing'); + if (!this._actAsPartyId) throw new Error('receiver partyId is missing'); + } +} diff --git a/modules/sdk-coin-canton/src/lib/utils.ts b/modules/sdk-coin-canton/src/lib/utils.ts index db9bcc9668..55a2973571 100644 --- a/modules/sdk-coin-canton/src/lib/utils.ts +++ b/modules/sdk-coin-canton/src/lib/utils.ts @@ -101,6 +101,8 @@ export class Utils implements BaseUtils { let transferNode: RecordField[] = []; let transferAcceptRejectNode: RecordField[] = []; let tokenTransferAcceptRejectNode: RecordField[] = []; + let withdrawnNode: RecordField[] = []; + let tokenWithdrawnNode: RecordField[] = []; const nodes = decodedData.transaction?.nodes; nodes?.forEach((node) => { @@ -140,6 +142,20 @@ export class Utils implements BaseUtils { tokenTransferAcceptRejectNode = transferSum.record?.fields ?? []; } } + if ( + template?.entityName === 'Amulet' && + !withdrawnNode.length && + txType === TransactionType.TransferOfferWithdrawn + ) { + withdrawnNode = fields; + } + if ( + template?.entityName === 'Holding' && + !tokenWithdrawnNode.length && + txType === TransactionType.TransferOfferWithdrawn + ) { + tokenWithdrawnNode = fields; + } }); nodes?.forEach((node) => { @@ -247,6 +263,42 @@ export class Utils implements BaseUtils { instrumentId = idData.text ?? ''; } } + } else if (withdrawnNode.length) { + const ownerData = getField(withdrawnNode, 'owner'); + if (ownerData?.oneofKind === 'party') { + receiver = ownerData.party ?? ''; + sender = receiver; + } + const amountField = getField(withdrawnNode, 'amount'); + if (amountField?.oneofKind === 'record') { + const amountFields = amountField.record?.fields ?? []; + const initialAmountData = getField(amountFields, 'initialAmount'); + if (initialAmountData?.oneofKind === 'numeric') { + amount = initialAmountData.numeric ?? ''; + } + } + } else if (tokenWithdrawnNode.length) { + const ownerData = getField(tokenWithdrawnNode, 'owner'); + if (ownerData?.oneofKind === 'party') { + receiver = ownerData.party ?? ''; + sender = receiver; + } + const amountData = getField(tokenWithdrawnNode, 'amount'); + if (amountData?.oneofKind === 'numeric') { + amount = amountData.numeric ?? ''; + } + const instrumentData = getField(tokenWithdrawnNode, 'instrument'); + if (instrumentData?.oneofKind === 'record') { + const instrumentFields = instrumentData.record?.fields ?? []; + const adminData = getField(instrumentFields, 'source'); + if (adminData?.oneofKind === 'party') { + instrumentAdmin = adminData.party ?? ''; + } + const idData = getField(instrumentFields, 'id'); + if (idData?.oneofKind === 'text') { + instrumentId = idData.text ?? ''; + } + } } if (!sender || !receiver || !amount) { const missingFields: string[] = []; diff --git a/modules/sdk-coin-canton/test/resources.ts b/modules/sdk-coin-canton/test/resources.ts index 3ce6719645..aabf5fab88 100644 --- a/modules/sdk-coin-canton/test/resources.ts +++ b/modules/sdk-coin-canton/test/resources.ts @@ -181,6 +181,34 @@ export const CantonTokenTransferPrepareResponse = { }, }; +export const CantonTransferOfferWithdrawnPrepareResponse = { + preparedTransaction: + 'Cos2CgMyLjESATAa7wMKATPCPugDEuUDCgMyLjESigEwMGFhNGUwOTY3NTFjNzg4OTMyNDU5MzE2NzNjOWIxNWRiNmQ4ZDg3MjU1ZWNjODRjYTg3ZDc5NmQyNGE5NmNiMjRjYTEyMTIyMDNiNDBlNTNjMzI3MDM5N2JkM2EwYjEzMTg5YjRmOTZkNjY5N2ZjM2RjNTQ1NGRlODJhNzdiNGU4MTEzOTI3MDQaDXNwbGljZS1hbXVsZXQiYQpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRIMU3BsaWNlLlJvdW5kGg9PcGVuTWluaW5nUm91bmQqSURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEySURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWE6SURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEa7wMKATHCPugDEuUDCgMyLjESigEwMGFhNGUwOTY3NTFjNzg4OTMyNDU5MzE2NzNjOWIxNWRiNmQ4ZDg3MjU1ZWNjODRjYTg3ZDc5NmQyNGE5NmNiMjRjYTEyMTIyMDNiNDBlNTNjMzI3MDM5N2JkM2EwYjEzMTg5YjRmOTZkNjY5N2ZjM2RjNTQ1NGRlODJhNzdiNGU4MTEzOTI3MDQaDXNwbGljZS1hbXVsZXQiYQpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRIMU3BsaWNlLlJvdW5kGg9PcGVuTWluaW5nUm91bmQqSURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEySURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWE6SURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEatwkKATTCPrAJCq0JCgMyLjESQjAwZjI3NzQyMDZiMDAwODA3OTY1M2IxMmY1NDRjNDE1ZjMzOGQxNzBmMTQzNmUyOTYxYzZjNjYyYTM4YTk3OGQxYxoNc3BsaWNlLWFtdWxldCJZCkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEg1TcGxpY2UuQW11bGV0GgZBbXVsZXQqrwVyrAUKWQpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRINU3BsaWNlLkFtdWxldBoGQW11bGV0ElIKA2RzbxJLOklEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhEmIKBW93bmVyElk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhKWAwoGYW1vdW50EosDcogDCl8KQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESC1NwbGljZS5GZWVzGg5FeHBpcmluZ0Ftb3VudBIfCg1pbml0aWFsQW1vdW50Eg4yDDEuMDAwMDAwMDAwMBJ4CgljcmVhdGVkQXQSa3JpClcKQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESDFNwbGljZS5UeXBlcxoFUm91bmQSDgoGbnVtYmVyEgQY2NYDEokBCgxyYXRlUGVyUm91bmQSeXJ3Cl0KQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESC1NwbGljZS5GZWVzGgxSYXRlUGVyUm91bmQSFgoEcmF0ZRIOMgwwLjAwMDEwNjQxOTYySURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyGoAOCgEywj75DRr2DQoDMi4xEooBMDBlMGJlMzA0NzNhNTUxMzFkZmM1NTA3ZDZhZjJkNmMyNDMzZTBiOWI1NjE2OWIwYWFmNThlMmM2OThkNzIwYjFhY2ExMjEyMjBjODBkOWZlYmFlMzZlNDliMzliMjVjNGRlOTQzN2FmYTY0YzVjYjZlZjQ5ZjhhMDJiYmJiMThkYWIwOWQzYmI3Gg1zcGxpY2UtYW11bGV0Il8KQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESDVNwbGljZS5BbXVsZXQaDExvY2tlZEFtdWxldCpJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYSpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyMklEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhMldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDI6SURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWE6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMkoTTG9ja2VkQW11bGV0X1VubG9ja1KMAnKJAgpmCkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEg1TcGxpY2UuQW11bGV0GhNMb2NrZWRBbXVsZXRfVW5sb2NrEp4BCgxvcGVuUm91bmRDaWQSjQFKigEwMGFhNGUwOTY3NTFjNzg4OTMyNDU5MzE2NzNjOWIxNWRiNmQ4ZDg3MjU1ZWNjODRjYTg3ZDc5NmQyNGE5NmNiMjRjYTEyMTIyMDNiNDBlNTNjMzI3MDM5N2JkM2EwYjEzMTg5YjRmOTZkNjY5N2ZjM2RjNTQ1NGRlODJhNzdiNGU4MTEzOTI3MDRYAWIBM2IBNGrZBXLWBQpsCkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEg1TcGxpY2UuQW11bGV0GhlMb2NrZWRBbXVsZXRfVW5sb2NrUmVzdWx0Et4CCglhbXVsZXRTdW0S0AJyzQIKZgpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRINU3BsaWNlLkFtdWxldBoTQW11bGV0Q3JlYXRlU3VtbWFyeRJOCgZhbXVsZXQSREpCMDBmMjc3NDIwNmIwMDA4MDc5NjUzYjEyZjU0NGM0MTVmMzM4ZDE3MGYxNDM2ZTI5NjFjNmM2NjJhMzhhOTc4ZDFjEh0KC2FtdWxldFByaWNlEg4yDDAuMTc4NzgyMDAwMBJ0CgVyb3VuZBJrcmkKVwpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRIMU3BsaWNlLlR5cGVzGgVSb3VuZBIOCgZudW1iZXISBBjY1gMShAIKBG1ldGES+wFS+AEK9QFy8gEKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRKEAQoGdmFsdWVzEnpieApBCiZzcGxpY2UubGZkZWNlbnRyYWxpemVkdHJ1c3Qub3JnL3JlYXNvbhIXQhVob2xkZXJzIHJlbGVhc2VkIGxvY2sKMwonc3BsaWNlLmxmZGVjZW50cmFsaXplZHRydXN0Lm9yZy90eC1raW5kEghCBnVubG9jaxrvFQoBMMI+6BUa5RUKAzIuMRKKATAwZjE4NmNkMDYxNGQ1NjA1ODhmMzQ4YTQ4MzEyMTRjZjhhM2U2YjY1ZGQyNjRjMjJkYjQ3ZjBhN2ExMDdkODM5OWNhMTIxMjIwYzc4NWNmODljNDYyNDA1NDU0Y2Q0ZDNhMTJjYTNjOTlmNThkOTQzNzE1ZmEwZjQxYzAzZTNkZGI3NjQ1MTk1MhoNc3BsaWNlLWFtdWxldCJ/CkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEiBTcGxpY2UuQW11bGV0VHJhbnNmZXJJbnN0cnVjdGlvbhoZQW11bGV0VHJhbnNmZXJJbnN0cnVjdGlvbipJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYSpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyMksxMjIwYzo6MTIyMGM5MWRjZDIxMDRmZDkzY2I0Y2FkMjdiMzdiNTkyN2FhZDNkNjhiZjQ5N2VjNDMyZDE1OGQyNjljZDJjZDllMjAySURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyQn8KQDU1YmE0ZGViMGFkNDY2MmM0MTY4YjM5ODU5NzM4YTBlOTEzODhkMjUyMjg2NDgwYzczMzFiM2Y3MWE1MTcyODESJlNwbGljZS5BcGkuVG9rZW4uVHJhbnNmZXJJbnN0cnVjdGlvblYxGhNUcmFuc2Zlckluc3RydWN0aW9uShxUcmFuc2Zlckluc3RydWN0aW9uX1dpdGhkcmF3UvMJcvAJCogBCkA1NWJhNGRlYjBhZDQ2NjJjNDE2OGIzOTg1OTczOGEwZTkxMzg4ZDI1MjI4NjQ4MGM3MzMxYjNmNzFhNTE3MjgxEiZTcGxpY2UuQXBpLlRva2VuLlRyYW5zZmVySW5zdHJ1Y3Rpb25WMRocVHJhbnNmZXJJbnN0cnVjdGlvbl9XaXRoZHJhdxLiCAoJZXh0cmFBcmdzEtQIctEICmoKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoJRXh0cmFBcmdzEtwGCgdjb250ZXh0EtAGcs0GCm4KQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoNQ2hvaWNlQ29udGV4dBLaBQoGdmFsdWVzEs8FYswFCp4CCgxhbXVsZXQtcnVsZXMSjQJ6igIKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghBbnlWYWx1ZRINQVZfQ29udHJhY3RJZBqNAUqKATAwNzI0YzAzNjkwYTY4ODJjMmJmMGJhZDI0MTdkNjRhOGVkYzllNDJhNzRhMTYwM2QzOGUzMDI0NmEzZjhjNWU0Y2NhMTIxMjIwNjAyOGI0ZDk2MWNiYWI1ZTZmNWIyZDhkMGJmMzdkZDIyMTYzYjZmODJhNzJiMTIwYmU0ZDZhODU3ZTM0N2Q4OAqJAQoLZXhwaXJlLWxvY2sSenp4CmkKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoIQW55VmFsdWUSB0FWX0Jvb2waAhABCpwCCgpvcGVuLXJvdW5kEo0CeooCCmkKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoIQW55VmFsdWUSDUFWX0NvbnRyYWN0SWQajQFKigEwMGFhNGUwOTY3NTFjNzg4OTMyNDU5MzE2NzNjOWIxNWRiNmQ4ZDg3MjU1ZWNjODRjYTg3ZDc5NmQyNGE5NmNiMjRjYTEyMTIyMDNiNDBlNTNjMzI3MDM5N2JkM2EwYjEzMTg5YjRmOTZkNjY5N2ZjM2RjNTQ1NGRlODJhNzdiNGU4MTEzOTI3MDQSgwEKBG1ldGESe3J5CmkKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoITWV0YWRhdGESDAoGdmFsdWVzEgJiAFgBYgExYgEyarUEcrIECoUBCkA1NWJhNGRlYjBhZDQ2NjJjNDE2OGIzOTg1OTczOGEwZTkxMzg4ZDI1MjI4NjQ4MGM3MzMxYjNmNzFhNTE3MjgxEiZTcGxpY2UuQXBpLlRva2VuLlRyYW5zZmVySW5zdHJ1Y3Rpb25WMRoZVHJhbnNmZXJJbnN0cnVjdGlvblJlc3VsdBLDAQoGb3V0cHV0ErgBerUBCowBCkA1NWJhNGRlYjBhZDQ2NjJjNDE2OGIzOTg1OTczOGEwZTkxMzg4ZDI1MjI4NjQ4MGM3MzMxYjNmNzFhNTE3MjgxEiZTcGxpY2UuQXBpLlRva2VuLlRyYW5zZmVySW5zdHJ1Y3Rpb25WMRogVHJhbnNmZXJJbnN0cnVjdGlvblJlc3VsdF9PdXRwdXQSIFRyYW5zZmVySW5zdHJ1Y3Rpb25SZXN1bHRfRmFpbGVkGgIKABJcChBzZW5kZXJDaGFuZ2VDaWRzEkhaRgpESkIwMGYyNzc0MjA2YjAwMDgwNzk2NTNiMTJmNTQ0YzQxNWYzMzhkMTcwZjE0MzZlMjk2MWM2YzY2MmEzOGE5NzhkMWMSgwEKBG1ldGESe3J5CmkKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoITWV0YWRhdGESDAoGdmFsdWVzEgJiACIiEiAtuIFCgjBgN4LeOZpFBAwpItT7HmVnhuyIcb01JwH3CyIkCAISINHmsyhR8P1ke6pMdqo4icw9eDYXAf8P6U/AeFqeA2GZIiQIBBIgR8pvYuRr6wm4mZjwjIcLtH1yHnvGkjZckp8/eHCKfMIS9EYSfwpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyEiQ2ZTcwNTk2Mi02ODY2LTRhZGQtOGY0YS0xNDJmMjllODkxYzEaU2dsb2JhbC1kb21haW46OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhKiRlMTA3MzljZS03YjRiLTRhZjItOGRlYy1kZTNhZGY4ZmNmY2QwwbCKvM66kgM6vxgKjRIKAzIuMRKKATAwYWE0ZTA5Njc1MWM3ODg5MzI0NTkzMTY3M2M5YjE1ZGI2ZDhkODcyNTVlY2M4NGNhODdkNzk2ZDI0YTk2Y2IyNGNhMTIxMjIwM2I0MGU1M2MzMjcwMzk3YmQzYTBiMTMxODliNGY5NmQ2Njk3ZmMzZGM1NDU0ZGU4MmE3N2I0ZTgxMTM5MjcwNBoNc3BsaWNlLWFtdWxldCJhCkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEgxTcGxpY2UuUm91bmQaD09wZW5NaW5pbmdSb3VuZCrwDnLtDgphCkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEgxTcGxpY2UuUm91bmQaD09wZW5NaW5pbmdSb3VuZBJSCgNkc28SSzpJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYRJ0CgVyb3VuZBJrcmkKVwpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRIMU3BsaWNlLlR5cGVzGgVSb3VuZBIOCgZudW1iZXISBBjY1gMSHQoLYW11bGV0UHJpY2USDjIMMC4xNzg3ODIwMDAwEhQKB29wZW5zQXQSCSldPPvW1EkGABIbCg50YXJnZXRDbG9zZXNBdBIJKV3IgR7VSQYAEoYBCgppc3N1aW5nRm9yEnhydgpaCkBiNzBkYjgzNjllMWM0NjFkNWM3MGYxYzg2ZjUyNmEyOWU5Nzc2YzY1NWU2ZmZjMjU2MGY5NWIwNWNjYjhiOTQ2Eg1EQS5UaW1lLlR5cGVzGgdSZWxUaW1lEhgKDG1pY3Jvc2Vjb25kcxIIGICgiOOInAgSrAYKEXRyYW5zZmVyQ29uZmlnVXNkEpYGcpMGCmcKQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESE1NwbGljZS5BbXVsZXRDb25maWcaDlRyYW5zZmVyQ29uZmlnEoEBCgljcmVhdGVGZWUSdHJyClkKQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESC1NwbGljZS5GZWVzGghGaXhlZEZlZRIVCgNmZWUSDjIMMC4wMDAwMDAwMDAwEocBCgpob2xkaW5nRmVlEnlydwpdCkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEgtTcGxpY2UuRmVlcxoMUmF0ZVBlclJvdW5kEhYKBHJhdGUSDjIMMC4wMDAwMTkwMjU5Ep0BCgt0cmFuc2ZlckZlZRKNAXKKAQpcCkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEgtTcGxpY2UuRmVlcxoLU3RlcHBlZFJhdGUSHQoLaW5pdGlhbFJhdGUSDjIMMC4wMDAwMDAwMDAwEgsKBXN0ZXBzEgJaABKFAQoNbG9ja0hvbGRlckZlZRJ0cnIKWQpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRILU3BsaWNlLkZlZXMaCEZpeGVkRmVlEhUKA2ZlZRIOMgwwLjAwMDAwMDAwMDASLgocZXh0cmFGZWF0dXJlZEFwcFJld2FyZEFtb3VudBIOMgwxLjAwMDAwMDAwMDASEwoMbWF4TnVtSW5wdXRzEgMYyAESFAoNbWF4TnVtT3V0cHV0cxIDGMgBEhcKEW1heE51bUxvY2tIb2xkZXJzEgIYZBKqAwoOaXNzdWFuY2VDb25maWcSlwNylAMKYwpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRIPU3BsaWNlLklzc3VhbmNlGg5Jc3N1YW5jZUNvbmZpZxIwChRhbXVsZXRUb0lzc3VlUGVyWWVhchIYMhYyMDAwMDAwMDAwMC4wMDAwMDAwMDAwEisKGXZhbGlkYXRvclJld2FyZFBlcmNlbnRhZ2USDjIMMC4xMjAwMDAwMDAwEiUKE2FwcFJld2FyZFBlcmNlbnRhZ2USDjIMMC40MDAwMDAwMDAwEiQKEnZhbGlkYXRvclJld2FyZENhcBIOMgwwLjIwMDAwMDAwMDASKgoUZmVhdHVyZWRBcHBSZXdhcmRDYXASEjIQMjAwMDAuMDAwMDAwMDAwMBIoChZ1bmZlYXR1cmVkQXBwUmV3YXJkQ2FwEg4yDDAuNjAwMDAwMDAwMBIrChVvcHRWYWxpZGF0b3JGYXVjZXRDYXASElIQCg4yDDMuMzMwMDAwMDAwMBKGAQoMdGlja0R1cmF0aW9uEnZydApaCkBiNzBkYjgzNjllMWM0NjFkNWM3MGYxYzg2ZjUyNmEyOWU5Nzc2YzY1NWU2ZmZjMjU2MGY5NWIwNWNjYjhiOTQ2Eg1EQS5UaW1lLlR5cGVzGgdSZWxUaW1lEhYKDG1pY3Jvc2Vjb25kcxIGGICYmrwEMklEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhOklEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhwD7d7N+Zy7qSA9I+oQYKAzIuMRKZBgpFAKpOCWdRx4iTJFkxZzybFdttjYclXsyEyofXltJKlsskyhISIDtA5TwycDl706CxMYm0+W1ml/w9xUVN6Cp3tOgROScEEg1zcGxpY2UtYW11bGV0GmIKQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESBlNwbGljZRIFUm91bmQaD09wZW5NaW5pbmdSb3VuZCLcA2rZAwpNCks6SURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEKDAoKaggKBgoEGNjWAwoQCg4yDDAuMTc4NzgyMDAwMAoLCgkpXTz71tRJBgAKCwoJKV3IgR7VSQYAChAKDmoMCgoKCBiAoIjjiJwICpIBCo8BaowBChYKFGoSChAKDjIMMC4wMDAwMDAwMDAwChYKFGoSChAKDjIMMC4wMDAwMTkwMjU5ChwKGmoYChAKDjIMMC4wMDAwMDAwMDAwCgQKAloAChYKFGoSChAKDjIMMC4wMDAwMDAwMDAwChAKDjIMMS4wMDAwMDAwMDAwCgUKAxjIAQoFCgMYyAEKBAoCGGQKlgEKkwFqkAEKGgoYMhYyMDAwMDAwMDAwMC4wMDAwMDAwMDAwChAKDjIMMC4xMjAwMDAwMDAwChAKDjIMMC40MDAwMDAwMDAwChAKDjIMMC4yMDAwMDAwMDAwChQKEjIQMjAwMDAuMDAwMDAwMDAwMAoQCg4yDDAuNjAwMDAwMDAwMAoUChJSEAoOMgwzLjMzMDAwMDAwMDAKDgoMagoKCAoGGICYmrwEKklEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhOV32N7PUSQYAQioKJgokCAESIEBvqiM7ryvlCVXABM21Ky/ONFB7fy3Oy/SNB8al3SFyEB46rBQKvQ0KAzIuMRKKATAwZTBiZTMwNDczYTU1MTMxZGZjNTUwN2Q2YWYyZDZjMjQzM2UwYjliNTYxNjliMGFhZjU4ZTJjNjk4ZDcyMGIxYWNhMTIxMjIwYzgwZDlmZWJhZTM2ZTQ5YjM5YjI1YzRkZTk0MzdhZmE2NGM1Y2I2ZWY0OWY4YTAyYmJiYjE4ZGFiMDlkM2JiNxoNc3BsaWNlLWFtdWxldCJfCkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEg1TcGxpY2UuQW11bGV0GgxMb2NrZWRBbXVsZXQq8Ahy7QgKXwpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRINU3BsaWNlLkFtdWxldBoMTG9ja2VkQW11bGV0EroFCgZhbXVsZXQSrwVyrAUKWQpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRINU3BsaWNlLkFtdWxldBoGQW11bGV0ElIKA2RzbxJLOklEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhEmIKBW93bmVyElk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhKWAwoGYW1vdW50EosDcogDCl8KQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESC1NwbGljZS5GZWVzGg5FeHBpcmluZ0Ftb3VudBIfCg1pbml0aWFsQW1vdW50Eg4yDDEuMDAwMDAwMDAwMBJ4CgljcmVhdGVkQXQSa3JpClcKQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESDFNwbGljZS5UeXBlcxoFUm91bmQSDgoGbnVtYmVyEgQY2NYDEokBCgxyYXRlUGVyUm91bmQSeXJ3Cl0KQDY3ZmFjMmY4NTNiY2U4ZGJmMGI5ODE3YmI1YmE3YzU5ZjEwZTgxMjBiN2M4MDg2OTZmNzAxMGU1ZjBjOGE3OTESC1NwbGljZS5GZWVzGgxSYXRlUGVyUm91bmQSFgoEcmF0ZRIOMgwwLjAwMDEwNjQxOTYSzAIKBGxvY2sSwwJywAIKWwpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRINU3BsaWNlLkV4cGlyeRoIVGltZUxvY2sSWgoHaG9sZGVycxJPWk0KSzpJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYRIWCglleHBpcmVzQXQSCSlQ2dDq1EkGABJtCgpvcHRDb250ZXh0El9SXQpbQll0cmFuc2ZlciB0byAnMTIyMGM6OjEyMjBjOTFkY2QyMTA0ZmQ5M2NiNGNhZDI3YjM3YjU5MjdhYWQzZDY4YmY0OTdlYzQzMmQxNThkMjY5Y2QyY2Q5ZTIwJzJJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYTJXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyOklEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhOldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDLAPqSlv8nNupID0j7eBgoDMi4xEtYGCkUA4L4wRzpVEx38VQfWry1sJDPgubVhabCq9Y4saY1yCxrKEhIgyA2f66425Js5slxN6UN6+mTFy270n4oCu7sY2rCdO7cSDXNwbGljZS1hbXVsZXQaYApANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRIGU3BsaWNlEgZBbXVsZXQaDExvY2tlZEFtdWxldCLCA2q/AwrwAQrtAWrqAQpNCks6SURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEKWwpZOldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIKPAo6ajgKEAoOMgwxLjAwMDAwMDAwMDAKDAoKaggKBgoEGNjWAwoWChRqEgoQCg4yDDAuMDAwMTA2NDE5NgrJAQrGAWrDAQpRCk9aTQpLOklEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhCgsKCSlQ2dDq1EkGAAphCl9SXQpbQll0cmFuc2ZlciB0byAnMTIyMGM6OjEyMjBjOTFkY2QyMTA0ZmQ5M2NiNGNhZDI3YjM3YjU5MjdhYWQzZDY4YmY0OTdlYzQzMmQxNThkMjY5Y2QyY2Q5ZTIwJypJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYSpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyOaTSL9nUSQYAQioKJgokCAESIBaezOqwX3NgcJi/PuTZYctwslzxowJscV5S5GSwSvi5EB46+xcKxA8KAzIuMRKKATAwZjE4NmNkMDYxNGQ1NjA1ODhmMzQ4YTQ4MzEyMTRjZjhhM2U2YjY1ZGQyNjRjMjJkYjQ3ZjBhN2ExMDdkODM5OWNhMTIxMjIwYzc4NWNmODljNDYyNDA1NDU0Y2Q0ZDNhMTJjYTNjOTlmNThkOTQzNzE1ZmEwZjQxYzAzZTNkZGI3NjQ1MTk1MhoNc3BsaWNlLWFtdWxldCJ/CkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEiBTcGxpY2UuQW11bGV0VHJhbnNmZXJJbnN0cnVjdGlvbhoZQW11bGV0VHJhbnNmZXJJbnN0cnVjdGlvbiqKCnKHCgp/CkA2N2ZhYzJmODUzYmNlOGRiZjBiOTgxN2JiNWJhN2M1OWYxMGU4MTIwYjdjODA4Njk2ZjcwMTBlNWYwYzhhNzkxEiBTcGxpY2UuQW11bGV0VHJhbnNmZXJJbnN0cnVjdGlvbhoZQW11bGV0VHJhbnNmZXJJbnN0cnVjdGlvbhKeAQoMbG9ja2VkQW11bGV0Eo0BSooBMDBlMGJlMzA0NzNhNTUxMzFkZmM1NTA3ZDZhZjJkNmMyNDMzZTBiOWI1NjE2OWIwYWFmNThlMmM2OThkNzIwYjFhY2ExMjEyMjBjODBkOWZlYmFlMzZlNDliMzliMjVjNGRlOTQzN2FmYTY0YzVjYjZlZjQ5ZjhhMDJiYmJiMThkYWIwOWQzYmI3EuIHCgh0cmFuc2ZlchLVB3LSBwp0CkA1NWJhNGRlYjBhZDQ2NjJjNDE2OGIzOTg1OTczOGEwZTkxMzg4ZDI1MjI4NjQ4MGM3MzMxYjNmNzFhNTE3MjgxEiZTcGxpY2UuQXBpLlRva2VuLlRyYW5zZmVySW5zdHJ1Y3Rpb25WMRoIVHJhbnNmZXISYwoGc2VuZGVyElk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhJZCghyZWNlaXZlchJNOksxMjIwYzo6MTIyMGM5MWRjZDIxMDRmZDkzY2I0Y2FkMjdiMzdiNTkyN2FhZDNkNjhiZjQ5N2VjNDMyZDE1OGQyNjljZDJjZDllMjASGAoGYW1vdW50Eg4yDDEuMDAwMDAwMDAwMBLoAQoMaW5zdHJ1bWVudElkEtcBctQBCmwKQDcxOGEwZjc3ZTUwNWE4ZGUyMmYxODhiZDRjODdmZTc0MTAxMjc0ZTlkNGNiMWJmYWM3ZDA5YWVjNzE1OGQzNWISGlNwbGljZS5BcGkuVG9rZW4uSG9sZGluZ1YxGgxJbnN0cnVtZW50SWQSVAoFYWRtaW4SSzpJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYRIOCgJpZBIIQgZBbXVsZXQSGAoLcmVxdWVzdGVkQXQSCSlQNu/Y1EkGABIaCg1leGVjdXRlQmVmb3JlEgkpUNnQ6tRJBgASqAEKEGlucHV0SG9sZGluZ0NpZHMSkwFakAEKjQFKigEwMGUwYmUzMDQ3M2E1NTEzMWRmYzU1MDdkNmFmMmQ2YzI0MzNlMGI5YjU2MTY5YjBhYWY1OGUyYzY5OGQ3MjBiMWFjYTEyMTIyMGM4MGQ5ZmViYWUzNmU0OWIzOWIyNWM0ZGU5NDM3YWZhNjRjNWNiNmVmNDlmOGEwMmJiYmIxOGRhYjA5ZDNiYjcSswEKBG1ldGESqgFypwEKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRI6CgZ2YWx1ZXMSMGIuCiwKJnNwbGljZS5sZmRlY2VudHJhbGl6ZWR0cnVzdC5vcmcvcmVhc29uEgJCADJJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYTJXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyOksxMjIwYzo6MTIyMGM5MWRjZDIxMDRmZDkzY2I0Y2FkMjdiMzdiNTkyN2FhZDNkNjhiZjQ5N2VjNDMyZDE1OGQyNjljZDJjZDllMjA6SURTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWE6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMsA+pKW/yc26kgPSPqYICgMyLjESnggKRQDxhs0GFNVgWI80ikgxIUz4o+a2XdJkwi20fwp6EH2DmcoSEiDHhc+JxGJAVFTNTToSyjyZ9Y2UNxX6D0HAPj3bdkUZUhINc3BsaWNlLWFtdWxldBqAAQpANjdmYWMyZjg1M2JjZThkYmYwYjk4MTdiYjViYTdjNTlmMTBlODEyMGI3YzgwODY5NmY3MDEwZTVmMGM4YTc5MRIGU3BsaWNlEhlBbXVsZXRUcmFuc2Zlckluc3RydWN0aW9uGhlBbXVsZXRUcmFuc2Zlckluc3RydWN0aW9uIpwEapkECkkKR0pFAOC+MEc6VRMd/FUH1q8tbCQz4Lm1YWmwqvWOLGmNcgsayhISIMgNn+uuNuSbObJcTelDevpkxctu9J+KAru7GNqwnTu3CssDCsgDasUDClsKWTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyCk8KTTpLMTIyMGM6OjEyMjBjOTFkY2QyMTA0ZmQ5M2NiNGNhZDI3YjM3YjU5MjdhYWQzZDY4YmY0OTdlYzQzMmQxNThkMjY5Y2QyY2Q5ZTIwChAKDjIMMS4wMDAwMDAwMDAwCl8KXWpbCk0KSzpJRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYQoKCghCBkFtdWxldAoLCgkpUDbv2NRJBgAKCwoJKVDZ0OrUSQYACk0KS1pJCkdKRQDgvjBHOlUTHfxVB9avLWwkM+C5tWFpsKr1jixpjXILGsoSEiDIDZ/rrjbkmzmyXE3pQ3r6ZMXLbvSfigK7uxjasJ07two5CjdqNQozCjGCAS4KLAomc3BsaWNlLmxmZGVjZW50cmFsaXplZHRydXN0Lm9yZy9yZWFzb24SAkIAKklEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhKldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIySzEyMjBjOjoxMjIwYzkxZGNkMjEwNGZkOTNjYjRjYWQyN2IzN2I1OTI3YWFkM2Q2OGJmNDk3ZWM0MzJkMTU4ZDI2OWNkMmNkOWUyMDmk0i/Z1EkGAEIqCiYKJAgBEiD5R+01Vjvvjl74FYn3qBZAoMzFUOBY1sDrfc6R9NDLrBAe', + preparedTransactionHash: 'frwu54rtLjTLcHCSn5W+R4iM1unhM9ctJZ6KJWHpRsE=', + hashingSchemeVersion: 'HASHING_SCHEME_VERSION_V2', + hashingDetails: null, + costEstimation: { + estimationTimestamp: '2026-02-02T10:35:13.488193Z', + confirmationRequestTrafficCostEstimation: 8020, + confirmationResponseTrafficCostEstimation: 448, + totalTrafficCostEstimation: 8468, + }, +}; + +export const CantonTokenTransferOfferWithdrawnPrepareResponse = { + preparedTransaction: + 'CoopCgMyLjESATAalAwKATLCPo0MCooMCgMyLjESQjAwNzBjZTY2Zjc0ZTFmNDhkMGNjYzA1N2UwZjgzN2U3ZGNlYTY0Y2E3NWI4MmEyNmFiM2UyNDVlZjQ4ZGNmYTFhYxobdXRpbGl0eS1yZWdpc3RyeS1ob2xkaW5nLXYwInAKQGRkM2E5ZjJkNTFjYzRjNTJkOWVjMmUxZDdmZjIzNTI5OGRjZmIzYWZkMWQ1MGFiNDQzMjhiMWFhYTlhMTg1ODcSI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgdIb2xkaW5nKqkHcqYHCnAKQGRkM2E5ZjJkNTFjYzRjNTJkOWVjMmUxZDdmZjIzNTI5OGRjZmIzYWZkMWQ1MGFiNDQzMjhiMWFhYTlhMTg1ODcSI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgdIb2xkaW5nEnYKCG9wZXJhdG9yEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EnYKCHByb3ZpZGVyEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EncKCXJlZ2lzdHJhchJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORJiCgVvd25lchJZOldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDISvQIKCmluc3RydW1lbnQSrgJyqwIKewpAZGQzYTlmMmQ1MWNjNGM1MmQ5ZWMyZTFkN2ZmMjM1Mjk4ZGNmYjNhZmQxZDUwYWI0NDMyOGIxYWFhOWExODU4NxIhVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLlR5cGVzGhRJbnN0cnVtZW50SWRlbnRpZmllchJ0CgZzb3VyY2USajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSEQoCaWQSC0IJVGVzdFRva2VuEiMKBnNjaGVtZRIZQhdSZWdpc3RyYXJJbnRlcm5hbFNjaGVtZRILCgVsYWJlbBICQgASGAoGYW1vdW50Eg4yDDkuMDAwMDAwMDAwMDJoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4Zjk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhqXCwoBMcI+kAsajQsKAzIuMRKKATAwN2I5ODg1NGYzMTI5ZDY0ZGE2YmU4Yzc5MTc0ODFhYjFmMGExNDhhN2E5ODYzOWNiMDA0MDM0MTNjN2YwNTQ4YWNhMTIxMjIwYzUzZTg5NTA2MzlkOWIyNDQ4MDMxZTg0M2Y3Y2UyNDRhYjYyZjYxYzdmZGUwMWQxMmQzM2M5MGMwMGJlZjIxYhobdXRpbGl0eS1yZWdpc3RyeS1ob2xkaW5nLXYwInAKQGRkM2E5ZjJkNTFjYzRjNTJkOWVjMmUxZDdmZjIzNTI5OGRjZmIzYWZkMWQ1MGFiNDQzMjhiMWFhYTlhMTg1ODcSI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgdIb2xkaW5nKmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOSpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyMksxMjIwYTo6MTIyMGFmN2ViOTA1MTUxODQxZTkzYjllZmNmNTI5OTg4MGJmYTU2ZGUyZDA2ZTdjNzllNmI1NzhmMmM4YjA1ODllODIyaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5MldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDI6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5Sg5Ib2xkaW5nX1VubG9ja1J7cnkKdwpAZGQzYTlmMmQ1MWNjNGM1MmQ5ZWMyZTFkN2ZmMjM1Mjk4ZGNmYjNhZmQxZDUwYWI0NDMyOGIxYWFhOWExODU4NxIjVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLkhvbGRpbmcaDkhvbGRpbmdfVW5sb2NrWAFiATJqmgNylwMKfgpAZGQzYTlmMmQ1MWNjNGM1MmQ5ZWMyZTFkN2ZmMjM1Mjk4ZGNmYjNhZmQxZDUwYWI0NDMyOGIxYWFhOWExODU4NxIjVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLkhvbGRpbmcaFUhvbGRpbmdfVW5sb2NrX1Jlc3VsdBJSCgpob2xkaW5nQ2lkEkRKQjAwNzBjZTY2Zjc0ZTFmNDhkMGNjYzA1N2UwZjgzN2U3ZGNlYTY0Y2E3NWI4MmEyNmFiM2UyNDVlZjQ4ZGNmYTFhYxLAAQoEbWV0YRK3AVK0AQqxAXKuAQppCkA0ZGVkNmI2NjhjYjNiNjRmN2E4OGEzMDg3NGNkNDFjNzU4MjlmNWUwNjRiM2ZiYmFkZjQxZWM3ZTgzNjMzNTRmEhtTcGxpY2UuQXBpLlRva2VuLk1ldGFkYXRhVjEaCE1ldGFkYXRhEkEKBnZhbHVlcxI3YjUKMwonc3BsaWNlLmxmZGVjZW50cmFsaXplZHRydXN0Lm9yZy90eC1raW5kEghCBnVubG9jaxreEAoBMMI+1xAa1BAKAzIuMRKKATAwMTg0ZmNlNjM2YzIzM2VmMDc2MTc2NmRmNDBmOTViMWNhMDliNDZiOWM1OTJhNzcwZGI5YTEyNjY1YWU4NDNjYmNhMTIxMjIwOGUwNzg2MGMzYzY4MWM1MjE1NjA3YWY4NzAzYTBhNTUzZWY2MmYyMDQ4Y2YwMDAzNTY2ZGRjNGRjZDM0ZGZiOBoXdXRpbGl0eS1yZWdpc3RyeS1hcHAtdjAieQpAMjcxNzQxMmYwMTE1ODRjNjAwMWVmMjIyOTk0OTY2MWRhNjliYmU0OTc5MGM5ZmMyYzJiN2QzNWE0NzkzMTFmZhImVXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuTW9kZWwuVHJhbnNmZXIaDVRyYW5zZmVyT2ZmZXIqaGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5KldyYXZpLTItc3RlcC1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIySzEyMjBhOjoxMjIwYWY3ZWI5MDUxNTE4NDFlOTNiOWVmY2Y1Mjk5ODgwYmZhNTZkZTJkMDZlN2M3OWU2YjU3OGYyYzhiMDU4OWU4MjJoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyQn8KQDU1YmE0ZGViMGFkNDY2MmM0MTY4YjM5ODU5NzM4YTBlOTEzODhkMjUyMjg2NDgwYzczMzFiM2Y3MWE1MTcyODESJlNwbGljZS5BcGkuVG9rZW4uVHJhbnNmZXJJbnN0cnVjdGlvblYxGhNUcmFuc2Zlckluc3RydWN0aW9uShxUcmFuc2Zlckluc3RydWN0aW9uX1dpdGhkcmF3UqMEcqAECogBCkA1NWJhNGRlYjBhZDQ2NjJjNDE2OGIzOTg1OTczOGEwZTkxMzg4ZDI1MjI4NjQ4MGM3MzMxYjNmNzFhNTE3MjgxEiZTcGxpY2UuQXBpLlRva2VuLlRyYW5zZmVySW5zdHJ1Y3Rpb25WMRocVHJhbnNmZXJJbnN0cnVjdGlvbl9XaXRoZHJhdxKSAwoJZXh0cmFBcmdzEoQDcoEDCmoKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoJRXh0cmFBcmdzEowBCgdjb250ZXh0EoABcn4KbgpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGg1DaG9pY2VDb250ZXh0EgwKBnZhbHVlcxICYgASgwEKBG1ldGESe3J5CmkKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoITWV0YWRhdGESDAoGdmFsdWVzEgJiAFgBYgExarUEcrIECoUBCkA1NWJhNGRlYjBhZDQ2NjJjNDE2OGIzOTg1OTczOGEwZTkxMzg4ZDI1MjI4NjQ4MGM3MzMxYjNmNzFhNTE3MjgxEiZTcGxpY2UuQXBpLlRva2VuLlRyYW5zZmVySW5zdHJ1Y3Rpb25WMRoZVHJhbnNmZXJJbnN0cnVjdGlvblJlc3VsdBLDAQoGb3V0cHV0ErgBerUBCowBCkA1NWJhNGRlYjBhZDQ2NjJjNDE2OGIzOTg1OTczOGEwZTkxMzg4ZDI1MjI4NjQ4MGM3MzMxYjNmNzFhNTE3MjgxEiZTcGxpY2UuQXBpLlRva2VuLlRyYW5zZmVySW5zdHJ1Y3Rpb25WMRogVHJhbnNmZXJJbnN0cnVjdGlvblJlc3VsdF9PdXRwdXQSIFRyYW5zZmVySW5zdHJ1Y3Rpb25SZXN1bHRfRmFpbGVkGgIKABJcChBzZW5kZXJDaGFuZ2VDaWRzEkhaRgpESkIwMDcwY2U2NmY3NGUxZjQ4ZDBjY2MwNTdlMGY4MzdlN2RjZWE2NGNhNzViODJhMjZhYjNlMjQ1ZWY0OGRjZmExYWMSgwEKBG1ldGESe3J5CmkKQDRkZWQ2YjY2OGNiM2I2NGY3YTg4YTMwODc0Y2Q0MWM3NTgyOWY1ZTA2NGIzZmJiYWRmNDFlYzdlODM2MzM1NGYSG1NwbGljZS5BcGkuVG9rZW4uTWV0YWRhdGFWMRoITWV0YWRhdGESDAoGdmFsdWVzEgJiACIiEiAHMh9qm+uwJF3X785Fbrc3EbXFM8aZCVOcC/+6F0rSBCIkCAESIBrl6fpOYYCo0r4gaAMSeE5q3A19RDtCBkXS2FB1Y75WIiQIAhIgZtoSbyGwyTiuo7PHtt1lC6KIzM7Ui424u+L0Jb7JIggSjzoSfwpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyEiQwMjg0YWM0YS0zYjBlLTRiMmMtYjg3My0yOGU0YjVjYTUwOTgaU2dsb2JhbC1kb21haW46OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhKiQwODJkMmMzYy1jMGJkLTRmZWQtODMxOC0zYzY0M2M5NjM0MjAw+srwzs+6kgM6ghsK8RAKAzIuMRKKATAwMTg0ZmNlNjM2YzIzM2VmMDc2MTc2NmRmNDBmOTViMWNhMDliNDZiOWM1OTJhNzcwZGI5YTEyNjY1YWU4NDNjYmNhMTIxMjIwOGUwNzg2MGMzYzY4MWM1MjE1NjA3YWY4NzAzYTBhNTUzZWY2MmYyMDQ4Y2YwMDAzNTY2ZGRjNGRjZDM0ZGZiOBoXdXRpbGl0eS1yZWdpc3RyeS1hcHAtdjAieQpAMjcxNzQxMmYwMTE1ODRjNjAwMWVmMjIyOTk0OTY2MWRhNjliYmU0OTc5MGM5ZmMyYzJiN2QzNWE0NzkzMTFmZhImVXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuTW9kZWwuVHJhbnNmZXIaDVRyYW5zZmVyT2ZmZXIq9Qpy8goKeQpAMjcxNzQxMmYwMTE1ODRjNjAwMWVmMjIyOTk0OTY2MWRhNjliYmU0OTc5MGM5ZmMyYzJiN2QzNWE0NzkzMTFmZhImVXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuTW9kZWwuVHJhbnNmZXIaDVRyYW5zZmVyT2ZmZXISdgoIb3BlcmF0b3ISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdgoIcHJvdmlkZXISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkShAgKCHRyYW5zZmVyEvcHcvQHCnQKQDU1YmE0ZGViMGFkNDY2MmM0MTY4YjM5ODU5NzM4YTBlOTEzODhkMjUyMjg2NDgwYzczMzFiM2Y3MWE1MTcyODESJlNwbGljZS5BcGkuVG9rZW4uVHJhbnNmZXJJbnN0cnVjdGlvblYxGghUcmFuc2ZlchJjCgZzZW5kZXISWTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyElkKCHJlY2VpdmVyEk06SzEyMjBhOjoxMjIwYWY3ZWI5MDUxNTE4NDFlOTNiOWVmY2Y1Mjk5ODgwYmZhNTZkZTJkMDZlN2M3OWU2YjU3OGYyYzhiMDU4OWU4MhIYCgZhbW91bnQSDjIMOS4wMDAwMDAwMDAwEooCCgxpbnN0cnVtZW50SWQS+QFy9gEKbApANzE4YTBmNzdlNTA1YThkZTIyZjE4OGJkNGM4N2ZlNzQxMDEyNzRlOWQ0Y2IxYmZhYzdkMDlhZWM3MTU4ZDM1YhIaU3BsaWNlLkFwaS5Ub2tlbi5Ib2xkaW5nVjEaDEluc3RydW1lbnRJZBJzCgVhZG1pbhJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORIRCgJpZBILQglUZXN0VG9rZW4SGAoLcmVxdWVzdGVkQXQSCSmQkBdTcEkGABIaCg1leGVjdXRlQmVmb3JlEgkpkDSrKXFJBgASqAEKEGlucHV0SG9sZGluZ0NpZHMSkwFakAEKjQFKigEwMDdiOTg4NTRmMzEyOWQ2NGRhNmJlOGM3OTE3NDgxYWIxZjBhMTQ4YTdhOTg2MzljYjAwNDAzNDEzYzdmMDU0OGFjYTEyMTIyMGM1M2U4OTUwNjM5ZDliMjQ0ODAzMWU4NDNmN2NlMjQ0YWI2MmY2MWM3ZmRlMDFkMTJkMzNjOTBjMDBiZWYyMWISswEKBG1ldGESqgFypwEKaQpANGRlZDZiNjY4Y2IzYjY0ZjdhODhhMzA4NzRjZDQxYzc1ODI5ZjVlMDY0YjNmYmJhZGY0MWVjN2U4MzYzMzU0ZhIbU3BsaWNlLkFwaS5Ub2tlbi5NZXRhZGF0YVYxGghNZXRhZGF0YRI6CgZ2YWx1ZXMSMGIuCiwKJnNwbGljZS5sZmRlY2VudHJhbGl6ZWR0cnVzdC5vcmcvcmVhc29uEgJCADJoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpLMTIyMGE6OjEyMjBhZjdlYjkwNTE1MTg0MWU5M2I5ZWZjZjUyOTk4ODBiZmE1NmRlMmQwNmU3Yzc5ZTZiNTc4ZjJjOGIwNTg5ZTgyOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQywD7S/aKbha6SA9I+gAoKAzIuMRL4CQpFABhPzmNsIz7wdhdm30D5Wxygm0a5xZKncNuaEmZa6EPLyhISII4Hhgw8aBxSFWB6+HA6ClU+9i8gSM8AA1Zt3E3NNN+4Ehd1dGlsaXR5LXJlZ2lzdHJ5LWFwcC12MBp+CkAyNzE3NDEyZjAxMTU4NGM2MDAxZWYyMjI5OTQ5NjYxZGE2OWJiZTQ5NzkwYzlmYzJjMmI3ZDM1YTQ3OTMxMWZmEgdVdGlsaXR5EghSZWdpc3RyeRIDQXBwEgJWMBIFTW9kZWwSCFRyYW5zZmVyGg1UcmFuc2Zlck9mZmVyItAFas0FCmwKajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkKbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQruAwrrA2roAwpbClk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMgpPCk06SzEyMjBhOjoxMjIwYWY3ZWI5MDUxNTE4NDFlOTNiOWVmY2Y1Mjk5ODgwYmZhNTZkZTJkMDZlN2M3OWU2YjU3OGYyYzhiMDU4OWU4MgoQCg4yDDkuMDAwMDAwMDAwMAqBAQp/an0KbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQoNCgtCCVRlc3RUb2tlbgoLCgkpkJAXU3BJBgAKCwoJKZA0qylxSQYACk0KS1pJCkdKRQB7mIVPMSnWTaa+jHkXSBqx8KFIp6mGOcsAQDQTx/BUisoSEiDFPolQY52bJEgDHoQ/fOJEq2L2HH/eAdEtM8kMAL7yGwo5CjdqNQozCjGCAS4KLAomc3BsaWNlLmxmZGVjZW50cmFsaXplZHRydXN0Lm9yZy9yZWFzb24SAkIAKmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOSpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyMksxMjIwYTo6MTIyMGFmN2ViOTA1MTUxODQxZTkzYjllZmNmNTI5OTg4MGJmYTU2ZGUyZDA2ZTdjNzllNmI1NzhmMmM4YjA1ODllODI50r5oU3BJBgBCKgomCiQIARIgkI9qTngGxVOmU+HZKQzOpq16Xd8AtQxiFKDd8NicEroQHjqCHQrqEQoDMi4xEooBMDA3Yjk4ODU0ZjMxMjlkNjRkYTZiZThjNzkxNzQ4MWFiMWYwYTE0OGE3YTk4NjM5Y2IwMDQwMzQxM2M3ZjA1NDhhY2ExMjEyMjBjNTNlODk1MDYzOWQ5YjI0NDgwMzFlODQzZjdjZTI0NGFiNjJmNjFjN2ZkZTAxZDEyZDMzYzkwYzAwYmVmMjFiGht1dGlsaXR5LXJlZ2lzdHJ5LWhvbGRpbmctdjAicApAZGQzYTlmMmQ1MWNjNGM1MmQ5ZWMyZTFkN2ZmMjM1Mjk4ZGNmYjNhZmQxZDUwYWI0NDMyOGIxYWFhOWExODU4NxIjVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLkhvbGRpbmcaB0hvbGRpbmcq8wty8AsKcApAZGQzYTlmMmQ1MWNjNGM1MmQ5ZWMyZTFkN2ZmMjM1Mjk4ZGNmYjNhZmQxZDUwYWI0NDMyOGIxYWFhOWExODU4NxIjVXRpbGl0eS5SZWdpc3RyeS5Ib2xkaW5nLlYwLkhvbGRpbmcaB0hvbGRpbmcSdgoIb3BlcmF0b3ISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdgoIcHJvdmlkZXISajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkSdwoJcmVnaXN0cmFyEmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EmIKBW93bmVyElk6V3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhK9AgoKaW5zdHJ1bWVudBKuAnKrAgp7CkBkZDNhOWYyZDUxY2M0YzUyZDllYzJlMWQ3ZmYyMzUyOThkY2ZiM2FmZDFkNTBhYjQ0MzI4YjFhYWE5YTE4NTg3EiFVdGlsaXR5LlJlZ2lzdHJ5LkhvbGRpbmcuVjAuVHlwZXMaFEluc3RydW1lbnRJZGVudGlmaWVyEnQKBnNvdXJjZRJqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORIRCgJpZBILQglUZXN0VG9rZW4SIwoGc2NoZW1lEhlCF1JlZ2lzdHJhckludGVybmFsU2NoZW1lEgsKBWxhYmVsEgJCABIYCgZhbW91bnQSDjIMOS4wMDAwMDAwMDAwEscECgRsb2NrEr4EUrsECrgEcrUECm0KQGRkM2E5ZjJkNTFjYzRjNTJkOWVjMmUxZDdmZjIzNTI5OGRjZmIzYWZkMWQ1MGFiNDQzMjhiMWFhYTlhMTg1ODcSI1V0aWxpdHkuUmVnaXN0cnkuSG9sZGluZy5WMC5Ib2xkaW5nGgRMb2NrEuMBCgdsb2NrZXJzEtcBctQBClUKQGMzYmIwYzVkMDQ3OTliM2YxMWJhZDdjM2MxMDI5NjNlMTE1Y2Y1M2RhM2U0YWZjYmNmZDlmMDZlYmQ4MmI0ZmYSDERBLlNldC5UeXBlcxoDU2V0EnsKA21hcBJ0anIKcApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmORICCgASDQoHY29udGV4dBICQgASzgEKCW9ic2VydmVycxLAAVK9AQq6AXK3AQpVCkBjM2JiMGM1ZDA0Nzk5YjNmMTFiYWQ3YzNjMTAyOTYzZTExNWNmNTNkYTNlNGFmY2JjZmQ5ZjA2ZWJkODJiNGZmEgxEQS5TZXQuVHlwZXMaA1NldBJeCgNtYXASV2pVClMKTTpLMTIyMGE6OjEyMjBhZjdlYjkwNTE1MTg0MWU5M2I5ZWZjZjUyOTk4ODBiZmE1NmRlMmQwNmU3Yzc5ZTZiNTc4ZjJjOGIwNTg5ZTgyEgIKADJoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkyV3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMjpLMTIyMGE6OjEyMjBhZjdlYjkwNTE1MTg0MWU5M2I5ZWZjZjUyOTk4ODBiZmE1NmRlMmQwNmU3Yzc5ZTZiNTc4ZjJjOGIwNTg5ZTgyOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQywD7S/aKbha6SA9I+hwsKAzIuMRL/CgpFAHuYhU8xKdZNpr6MeRdIGrHwoUinqYY5ywBANBPH8FSKyhISIMU+iVBjnZskSAMehD984kSrYvYcf94B0S0zyQwAvvIbEht1dGlsaXR5LXJlZ2lzdHJ5LWhvbGRpbmctdjAadApAZGQzYTlmMmQ1MWNjNGM1MmQ5ZWMyZTFkN2ZmMjM1Mjk4ZGNmYjNhZmQxZDUwYWI0NDMyOGIxYWFhOWExODU4NxIHVXRpbGl0eRIIUmVnaXN0cnkSB0hvbGRpbmcSAlYwEgdIb2xkaW5nGgdIb2xkaW5nIt0GatoGCmwKajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkKbApqOmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOQpsCmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5ClsKWTpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyCqABCp0BapoBCmwKajpoYXV0aDBfMDA3YzY1Zjg1N2YxYzNkNTk5Y2I2ZGY3Mzc3NTo6MTIyMGQyZDczMmQwNDJjMjgxY2VlODBmNDgzYWI4MGYzY2JhYTQ3ODI4NjBlZDVmNGRjMjI4YWIwM2RlZGQyZWU4ZjkKDQoLQglUZXN0VG9rZW4KGwoZQhdSZWdpc3RyYXJJbnRlcm5hbFNjaGVtZQoECgJCAAoQCg4yDDkuMDAwMDAwMDAwMAr1AQryAVLvAQrsAWrpAQp8CnpqeAp2CnRicgpwCmo6aGF1dGgwXzAwN2M2NWY4NTdmMWMzZDU5OWNiNmRmNzM3NzU6OjEyMjBkMmQ3MzJkMDQyYzI4MWNlZTgwZjQ4M2FiODBmM2NiYWE0NzgyODYwZWQ1ZjRkYzIyOGFiMDNkZWRkMmVlOGY5EgIKAAoECgJCAApjCmFSXwpdalsKWQpXYlUKUwpNOksxMjIwYTo6MTIyMGFmN2ViOTA1MTUxODQxZTkzYjllZmNmNTI5OTg4MGJmYTU2ZGUyZDA2ZTdjNzllNmI1NzhmMmM4YjA1ODllODISAgoAKmhhdXRoMF8wMDdjNjVmODU3ZjFjM2Q1OTljYjZkZjczNzc1OjoxMjIwZDJkNzMyZDA0MmMyODFjZWU4MGY0ODNhYjgwZjNjYmFhNDc4Mjg2MGVkNWY0ZGMyMjhhYjAzZGVkZDJlZThmOSpXcmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyMksxMjIwYTo6MTIyMGFmN2ViOTA1MTUxODQxZTkzYjllZmNmNTI5OTg4MGJmYTU2ZGUyZDA2ZTdjNzllNmI1NzhmMmM4YjA1ODllODI50r5oU3BJBgBCKgomCiQIARIgaKzcKcIv62pJZ24NS1/q0hG5gSr3jEK86tBW/UPlrQgQHg==', + preparedTransactionHash: 'TVQ0tafaH+CA4vth+bxzfcihSjS6AfPRBjYKxQwtu/E=', + hashingSchemeVersion: 'HASHING_SCHEME_VERSION_V2', + hashingDetails: null, + costEstimation: { + estimationTimestamp: '2026-02-02T10:38:49.458751Z', + confirmationRequestTrafficCostEstimation: 4591, + confirmationResponseTrafficCostEstimation: 448, + totalTrafficCostEstimation: 5039, + }, +}; + export const CantonTokenTransferRawTxn = 'eyJwcmVwYXJlQ29tbWFuZFJlc3BvbnNlIjp7InByZXBhcmVkVHJhbnNhY3Rpb24iOiJDdHhnQ2dNeUxqRVNBVEFhNmdjS0FUUENQdU1IR3VBSENnTXlMakVTaWdFd01EazBPRGhoTVdOallqbGlOR001WmpFM09ERmtabVF6TlRKaE56RXpOelV3WXpRNU5HWmxZelV6WTJJNFpqUmtNbVV5TkRrMU1EaGpOV1ZtT1dZMU5XSmpZVEV5TVRJeU1ERTBaRE14TlRReFpXSmlNVGMyTjJRMU1EaGtNVGN3TUdZNE5EUmlZMlEwWVRRd1pqQTFNams1TkdSbU5XTmlOakEwTWpWa016TTVOell3T1dJMk5tWWFHM1YwYVd4cGRIa3RjbVZuYVhOMGNua3RhRzlzWkdsdVp5MTJNQ0p3Q2tCa1pETmhPV1l5WkRVeFkyTTBZelV5WkRsbFl6SmxNV1EzWm1ZeU16VXlPVGhrWTJaaU0yRm1aREZrTlRCaFlqUTBNekk0WWpGaFlXRTVZVEU0TlRnM0VpTlZkR2xzYVhSNUxsSmxaMmx6ZEhKNUxraHZiR1JwYm1jdVZqQXVTRzlzWkdsdVp4b0hTRzlzWkdsdVp5cG9ZWFYwYURCZk1EQTNZelkxWmpnMU4yWXhZek5rTlRrNVkySTJaR1kzTXpjM05UbzZNVEl5TUdReVpEY3pNbVF3TkRKak1qZ3hZMlZsT0RCbU5EZ3pZV0k0TUdZelkySmhZVFEzT0RJNE5qQmxaRFZtTkdSak1qSTRZV0l3TTJSbFpHUXlaV1U0WmprcVYzSmhkbWt0TWkxemRHVndMWEJoY25SNU9qb3hNakl3T1RKbE4yUXpNMkZqTVRCak1HWXpaRFUxT1RjMk16UXlaak0zTlRVMVpHWXdOV1JoTldJM05ESTVOVFprTlRaaE5qSmhaVEl6TmpjM05qa3dOemxrTWpKb1lYVjBhREJmTURBM1l6WTFaamcxTjJZeFl6TmtOVGs1WTJJMlpHWTNNemMzTlRvNk1USXlNR1F5WkRjek1tUXdOREpqTWpneFkyVmxPREJtTkRnellXSTRNR1l6WTJKaFlUUTNPREk0TmpCbFpEVm1OR1JqTWpJNFlXSXdNMlJsWkdReVpXVTRaamt5VjNKaGRta3RNaTF6ZEdWd0xYQmhjblI1T2pveE1qSXdPVEpsTjJRek0yRmpNVEJqTUdZelpEVTFPVGMyTXpReVpqTTNOVFUxWkdZd05XUmhOV0kzTkRJNU5UWmtOVFpoTmpKaFpUSXpOamMzTmprd056bGtNanBvWVhWMGFEQmZNREEzWXpZMVpqZzFOMll4WXpOa05UazVZMkkyWkdZM016YzNOVG82TVRJeU1HUXlaRGN6TW1Rd05ESmpNamd4WTJWbE9EQm1ORGd6WVdJNE1HWXpZMkpoWVRRM09ESTROakJsWkRWbU5HUmpNakk0WVdJd00yUmxaR1F5WldVNFpqazZWM0poZG1rdE1pMXpkR1Z3TFhCaGNuUjVPam94TWpJd09USmxOMlF6TTJGak1UQmpNR1l6WkRVMU9UYzJNelF5WmpNM05UVTFaR1l3TldSaE5XSTNOREk1TlRaa05UWmhOakpoWlRJek5qYzNOamt3Tnpsa01rb0hRWEpqYUdsMlpWSmxjbU1LWVFwQU9XVTNNR0U0WWpNMU1UQmtOakUzWmpoaE1UTTJNakV6WmpNelpEWmhPVEF6WVRFd1kyRXdaV1ZsWXpjMlltSXdObUpoTlRWa01XVmtPVFk0TUdZMk9SSVVSRUV1U1c1MFpYSnVZV3d1VkdWdGNHeGhkR1VhQjBGeVkyaHBkbVZZQVdvQ0NnQWErd1FLQVRIQ1B2UUVFdkVFQ2dNeUxqRVNpZ0V3TUdFM05HWmpZelJoWkdNeE1HWm1abVZqTURabVpETTBOVGd4TlRFMVlUWXpObVZsWkRsbU1EY3lNVEV4TVRneVltVTJNVGc1WTJNeE9HRmxPRFZqT0ROallURXhNVEl5TURJNE1UQTBZak0yTkdVME9UZ3lNRFEyWVdFeE1tVTFNamswTlRFME9HVXpaR1ZtTTJReU1UazRPVEZtTmpnM1lXTXpNVEpsT1RFNE5qVXpObU5qT0dJYUUzVjBhV3hwZEhrdGNtVm5hWE4wY25rdGRqQWlpUUVLUUdaak56SXhOR0ZpTVRBM09HVmlNV1V3WkRaalpUWTNNR1l5TURNME1qTmpOVFE0T0RKaVpEQTBNekl6TkRNMk5HWXpZMkl4T0RGak9ETXhaRGRrWW1RU0xGVjBhV3hwZEhrdVVtVm5hWE4wY25rdVZqQXVRMjl1Wm1sbmRYSmhkR2x2Ymk1SmJuTjBjblZ0Wlc1MEdoZEpibk4wY25WdFpXNTBRMjl1Wm1sbmRYSmhkR2x2Ymlwb1lYVjBhREJmTURBM1l6WTFaamcxTjJZeFl6TmtOVGs1WTJJMlpHWTNNemMzTlRvNk1USXlNR1F5WkRjek1tUXdOREpqTWpneFkyVmxPREJtTkRnellXSTRNR1l6WTJKaFlUUTNPREk0TmpCbFpEVm1OR1JqTWpJNFlXSXdNMlJsWkdReVpXVTRaamt5YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVPbWhoZFhSb01GOHdNRGRqTmpWbU9EVTNaakZqTTJRMU9UbGpZalprWmpjek56YzFPam94TWpJd1pESmtOek15WkRBME1tTXlPREZqWldVNE1HWTBPRE5oWWpnd1pqTmpZbUZoTkRjNE1qZzJNR1ZrTldZMFpHTXlNamhoWWpBelpHVmtaREpsWlRobU9ScXRFUW9CTk1JK3BoRUtveEVLQXpJdU1SSkNNREEyTURsbU9ESmhPR1poT1RNNE1qSmtNakF4T0dVek1UWTBORGxsT0Rnd01qWXdNRFJqWWpNelpUTmpOREV6WlRFNE5EQmxOR0V5TXpNeE9HTmxPR0l3R2h0MWRHbHNhWFI1TFhKbFoybHpkSEo1TFdodmJHUnBibWN0ZGpBaWNBcEFaR1F6WVRsbU1tUTFNV05qTkdNMU1tUTVaV015WlRGa04yWm1Nak0xTWprNFpHTm1Zak5oWm1ReFpEVXdZV0kwTkRNeU9HSXhZV0ZoT1dFeE9EVTROeElqVlhScGJHbDBlUzVTWldkcGMzUnllUzVJYjJ4a2FXNW5MbFl3TGtodmJHUnBibWNhQjBodmJHUnBibWNxOVF0eThnc0tjQXBBWkdRellUbG1NbVExTVdOak5HTTFNbVE1WldNeVpURmtOMlptTWpNMU1qazRaR05tWWpOaFptUXhaRFV3WVdJME5ETXlPR0l4WVdGaE9XRXhPRFU0TnhJalZYUnBiR2wwZVM1U1pXZHBjM1J5ZVM1SWIyeGthVzVuTGxZd0xraHZiR1JwYm1jYUIwaHZiR1JwYm1jU2Rnb0liM0JsY21GMGIzSVNhanBvWVhWMGFEQmZNREEzWXpZMVpqZzFOMll4WXpOa05UazVZMkkyWkdZM016YzNOVG82TVRJeU1HUXlaRGN6TW1Rd05ESmpNamd4WTJWbE9EQm1ORGd6WVdJNE1HWXpZMkpoWVRRM09ESTROakJsWkRWbU5HUmpNakk0WVdJd00yUmxaR1F5WldVNFpqa1NkZ29JY0hKdmRtbGtaWElTYWpwb1lYVjBhREJmTURBM1l6WTFaamcxTjJZeFl6TmtOVGs1WTJJMlpHWTNNemMzTlRvNk1USXlNR1F5WkRjek1tUXdOREpqTWpneFkyVmxPREJtTkRnellXSTRNR1l6WTJKaFlUUTNPREk0TmpCbFpEVm1OR1JqTWpJNFlXSXdNMlJsWkdReVpXVTRaamtTZHdvSmNtVm5hWE4wY21GeUVtbzZhR0YxZEdnd1h6QXdOMk0yTldZNE5UZG1NV016WkRVNU9XTmlObVJtTnpNM056VTZPakV5TWpCa01tUTNNekprTURReVl6STRNV05sWlRnd1pqUTRNMkZpT0RCbU0yTmlZV0UwTnpneU9EWXdaV1ExWmpSa1l6SXlPR0ZpTUROa1pXUmtNbVZsT0dZNUVtSUtCVzkzYm1WeUVsazZWM0poZG1rdE1pMXpkR1Z3TFhCaGNuUjVPam94TWpJd09USmxOMlF6TTJGak1UQmpNR1l6WkRVMU9UYzJNelF5WmpNM05UVTFaR1l3TldSaE5XSTNOREk1TlRaa05UWmhOakpoWlRJek5qYzNOamt3Tnpsa01oSzlBZ29LYVc1emRISjFiV1Z1ZEJLdUFuS3JBZ3A3Q2tCa1pETmhPV1l5WkRVeFkyTTBZelV5WkRsbFl6SmxNV1EzWm1ZeU16VXlPVGhrWTJaaU0yRm1aREZrTlRCaFlqUTBNekk0WWpGaFlXRTVZVEU0TlRnM0VpRlZkR2xzYVhSNUxsSmxaMmx6ZEhKNUxraHZiR1JwYm1jdVZqQXVWSGx3WlhNYUZFbHVjM1J5ZFcxbGJuUkpaR1Z1ZEdsbWFXVnlFblFLQm5OdmRYSmpaUkpxT21oaGRYUm9NRjh3TURkak5qVm1PRFUzWmpGak0yUTFPVGxqWWpaa1pqY3pOemMxT2pveE1qSXdaREprTnpNeVpEQTBNbU15T0RGalpXVTRNR1kwT0ROaFlqZ3daak5qWW1GaE5EYzRNamcyTUdWa05XWTBaR015TWpoaFlqQXpaR1ZrWkRKbFpUaG1PUklSQ2dKcFpCSUxRZ2xVWlhOMFZHOXJaVzRTSXdvR2MyTm9aVzFsRWhsQ0YxSmxaMmx6ZEhKaGNrbHVkR1Z5Ym1Gc1UyTm9aVzFsRWdzS0JXeGhZbVZzRWdKQ0FCSVlDZ1poYlc5MWJuUVNEaklNTVM0d01EQXdNREF3TURBd0Vza0VDZ1JzYjJOckVzQUVVcjBFQ3JvRWNyY0VDbTBLUUdSa00yRTVaakprTlRGall6UmpOVEprT1dWak1tVXhaRGRtWmpJek5USTVPR1JqWm1JellXWmtNV1ExTUdGaU5EUXpNamhpTVdGaFlUbGhNVGcxT0RjU0kxVjBhV3hwZEhrdVVtVm5hWE4wY25rdVNHOXNaR2x1Wnk1V01DNUliMnhrYVc1bkdnUk1iMk5yRXVNQkNnZHNiMk5yWlhKekV0Y0JjdFFCQ2xVS1FHTXpZbUl3WXpWa01EUTNPVGxpTTJZeE1XSmhaRGRqTTJNeE1ESTVOak5sTVRFMVkyWTFNMlJoTTJVMFlXWmpZbU5tWkRsbU1EWmxZbVE0TW1JMFptWVNERVJCTGxObGRDNVVlWEJsY3hvRFUyVjBFbnNLQTIxaGNCSjBhbklLY0FwcU9taGhkWFJvTUY4d01EZGpOalZtT0RVM1pqRmpNMlExT1RsallqWmtaamN6TnpjMU9qb3hNakl3WkRKa056TXlaREEwTW1NeU9ERmpaV1U0TUdZME9ETmhZamd3WmpOalltRmhORGM0TWpnMk1HVmtOV1kwWkdNeU1qaGhZakF6WkdWa1pESmxaVGhtT1JJQ0NnQVNEd29IWTI5dWRHVjRkQklFUWdKaE1STE9BUW9KYjJKelpYSjJaWEp6RXNBQlVyMEJDcm9CY3JjQkNsVUtRR016WW1Jd1l6VmtNRFEzT1RsaU0yWXhNV0poWkRkak0yTXhNREk1TmpObE1URTFZMlkxTTJSaE0yVTBZV1pqWW1ObVpEbG1NRFpsWW1RNE1tSTBabVlTREVSQkxsTmxkQzVVZVhCbGN4b0RVMlYwRWw0S0EyMWhjQkpYYWxVS1V3cE5Pa3N4TWpJd1lUbzZNVEl5TUdGbU4yVmlPVEExTVRVeE9EUXhaVGt6WWpsbFptTm1OVEk1T1RnNE1HSm1ZVFUyWkdVeVpEQTJaVGRqTnpsbE5tSTFOemhtTW1NNFlqQTFPRGxsT0RJU0Fnb0FNbWhoZFhSb01GOHdNRGRqTmpWbU9EVTNaakZqTTJRMU9UbGpZalprWmpjek56YzFPam94TWpJd1pESmtOek15WkRBME1tTXlPREZqWldVNE1HWTBPRE5oWWpnd1pqTmpZbUZoTkRjNE1qZzJNR1ZrTldZMFpHTXlNamhoWWpBelpHVmtaREpsWlRobU9USlhjbUYyYVMweUxYTjBaWEF0Y0dGeWRIazZPakV5TWpBNU1tVTNaRE16WVdNeE1HTXdaak5rTlRVNU56WXpOREptTXpjMU5UVmtaakExWkdFMVlqYzBNamsxTm1RMU5tRTJNbUZsTWpNMk56YzJPVEEzT1dReU9rc3hNakl3WVRvNk1USXlNR0ZtTjJWaU9UQTFNVFV4T0RReFpUa3pZamxsWm1ObU5USTVPVGc0TUdKbVlUVTJaR1V5WkRBMlpUZGpOemxsTm1JMU56aG1NbU00WWpBMU9EbGxPREk2YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVPbGR5WVhacExUSXRjM1JsY0Mxd1lYSjBlVG82TVRJeU1Ea3laVGRrTXpOaFl6RXdZekJtTTJRMU5UazNOak0wTW1Zek56VTFOV1JtTURWa1lUVmlOelF5T1RVMlpEVTJZVFl5WVdVeU16WTNOelk1TURjNVpESWE1dzhLQVRiQ1B1QVBDdDBQQ2dNeUxqRVNRakF3TldOa056WTROMlkyTVdFd05tTmlaVFl4TnpjelpUWTFZekF3Wm1VeFpUZzBNV1UwWldWaFltSmhNV1V5TkRSbE9EWm1NemhqTVRJeVpqZzJNVGcwT1JvWGRYUnBiR2wwZVMxeVpXZHBjM1J5ZVMxaGNIQXRkakFpZVFwQU1qY3hOelF4TW1Zd01URTFPRFJqTmpBd01XVm1Nakl5T1RrME9UWTJNV1JoTmpsaVltVTBPVGM1TUdNNVptTXlZekppTjJRek5XRTBOemt6TVRGbVpoSW1WWFJwYkdsMGVTNVNaV2RwYzNSeWVTNUJjSEF1VmpBdVRXOWtaV3d1VkhKaGJuTm1aWElhRFZSeVlXNXpabVZ5VDJabVpYSXFxZ3B5cHdvS2VRcEFNamN4TnpReE1tWXdNVEUxT0RSak5qQXdNV1ZtTWpJeU9UazBPVFkyTVdSaE5qbGlZbVUwT1RjNU1HTTVabU15WXpKaU4yUXpOV0UwTnprek1URm1aaEltVlhScGJHbDBlUzVTWldkcGMzUnllUzVCY0hBdVZqQXVUVzlrWld3dVZISmhibk5tWlhJYURWUnlZVzV6Wm1WeVQyWm1aWElTZGdvSWIzQmxjbUYwYjNJU2FqcG9ZWFYwYURCZk1EQTNZelkxWmpnMU4yWXhZek5rTlRrNVkySTJaR1kzTXpjM05UbzZNVEl5TUdReVpEY3pNbVF3TkRKak1qZ3hZMlZsT0RCbU5EZ3pZV0k0TUdZelkySmhZVFEzT0RJNE5qQmxaRFZtTkdSak1qSTRZV0l3TTJSbFpHUXlaV1U0WmprU2Rnb0ljSEp2ZG1sa1pYSVNhanBvWVhWMGFEQmZNREEzWXpZMVpqZzFOMll4WXpOa05UazVZMkkyWkdZM016YzNOVG82TVRJeU1HUXlaRGN6TW1Rd05ESmpNamd4WTJWbE9EQm1ORGd6WVdJNE1HWXpZMkpoWVRRM09ESTROakJsWkRWbU5HUmpNakk0WVdJd00yUmxaR1F5WldVNFpqa1N1UWNLQ0hSeVlXNXpabVZ5RXF3SGNxa0hDblFLUURVMVltRTBaR1ZpTUdGa05EWTJNbU0wTVRZNFlqTTVPRFU1TnpNNFlUQmxPVEV6T0Roa01qVXlNamcyTkRnd1l6Y3pNekZpTTJZM01XRTFNVGN5T0RFU0psTndiR2xqWlM1QmNHa3VWRzlyWlc0dVZISmhibk5tWlhKSmJuTjBjblZqZEdsdmJsWXhHZ2hVY21GdWMyWmxjaEpqQ2daelpXNWtaWElTV1RwWGNtRjJhUzB5TFhOMFpYQXRjR0Z5ZEhrNk9qRXlNakE1TW1VM1pETXpZV014TUdNd1pqTmtOVFU1TnpZek5ESm1NemMxTlRWa1pqQTFaR0UxWWpjME1qazFObVExTm1FMk1tRmxNak0yTnpjMk9UQTNPV1F5RWxrS0NISmxZMlZwZG1WeUVrMDZTekV5TWpCaE9qb3hNakl3WVdZM1pXSTVNRFV4TlRFNE5ERmxPVE5pT1dWbVkyWTFNams1T0Rnd1ltWmhOVFprWlRKa01EWmxOMk0zT1dVMllqVTNPR1l5WXpoaU1EVTRPV1U0TWhJWUNnWmhiVzkxYm5RU0RqSU1NUzR3TURBd01EQXdNREF3RW9vQ0NneHBibk4wY25WdFpXNTBTV1FTK1FGeTlnRUtiQXBBTnpFNFlUQm1OemRsTlRBMVlUaGtaVEl5WmpFNE9HSmtOR000TjJabE56UXhNREV5TnpSbE9XUTBZMkl4WW1aaFl6ZGtNRGxoWldNM01UVTRaRE0xWWhJYVUzQnNhV05sTGtGd2FTNVViMnRsYmk1SWIyeGthVzVuVmpFYURFbHVjM1J5ZFcxbGJuUkpaQkp6Q2dWaFpHMXBiaEpxT21oaGRYUm9NRjh3TURkak5qVm1PRFUzWmpGak0yUTFPVGxqWWpaa1pqY3pOemMxT2pveE1qSXdaREprTnpNeVpEQTBNbU15T0RGalpXVTRNR1kwT0ROaFlqZ3daak5qWW1GaE5EYzRNamcyTUdWa05XWTBaR015TWpoaFlqQXpaR1ZrWkRKbFpUaG1PUklSQ2dKcFpCSUxRZ2xVWlhOMFZHOXJaVzRTR0FvTGNtVnhkV1Z6ZEdWa1FYUVNDU2xRY2tyeitra0dBQklhQ2cxbGVHVmpkWFJsUW1WbWIzSmxFZ2twVUJiZXlmdEpCZ0FTWEFvUWFXNXdkWFJJYjJ4a2FXNW5RMmxrY3hKSVdrWUtSRXBDTURBMk1EbG1PREpoT0daaE9UTTRNakprTWpBeE9HVXpNVFkwTkRsbE9EZ3dNall3TURSallqTXpaVE5qTkRFelpURTROREJsTkdFeU16TXhPR05sT0dJd0VyVUJDZ1J0WlhSaEVxd0JjcWtCQ21rS1FEUmtaV1EyWWpZMk9HTmlNMkkyTkdZM1lUZzRZVE13T0RjMFkyUTBNV00zTlRneU9XWTFaVEEyTkdJelptSmlZV1JtTkRGbFl6ZGxPRE0yTXpNMU5HWVNHMU53YkdsalpTNUJjR2t1Vkc5clpXNHVUV1YwWVdSaGRHRldNUm9JVFdWMFlXUmhkR0VTUEFvR2RtRnNkV1Z6RWpKaU1Bb3VDaVp6Y0d4cFkyVXViR1prWldObGJuUnlZV3hwZW1Wa2RISjFjM1F1YjNKbkwzSmxZWE52YmhJRVFnSmhNVEpvWVhWMGFEQmZNREEzWXpZMVpqZzFOMll4WXpOa05UazVZMkkyWkdZM016YzNOVG82TVRJeU1HUXlaRGN6TW1Rd05ESmpNamd4WTJWbE9EQm1ORGd6WVdJNE1HWXpZMkpoWVRRM09ESTROakJsWkRWbU5HUmpNakk0WVdJd00yUmxaR1F5WldVNFpqa3lWM0poZG1rdE1pMXpkR1Z3TFhCaGNuUjVPam94TWpJd09USmxOMlF6TTJGak1UQmpNR1l6WkRVMU9UYzJNelF5WmpNM05UVTFaR1l3TldSaE5XSTNOREk1TlRaa05UWmhOakpoWlRJek5qYzNOamt3Tnpsa01qcExNVEl5TUdFNk9qRXlNakJoWmpkbFlqa3dOVEUxTVRnME1XVTVNMkk1WldaalpqVXlPVGs0T0RCaVptRTFObVJsTW1Rd05tVTNZemM1WlRaaU5UYzRaakpqT0dJd05UZzVaVGd5T21oaGRYUm9NRjh3TURkak5qVm1PRFUzWmpGak0yUTFPVGxqWWpaa1pqY3pOemMxT2pveE1qSXdaREprTnpNeVpEQTBNbU15T0RGalpXVTRNR1kwT0ROaFlqZ3daak5qWW1GaE5EYzRNamcyTUdWa05XWTBaR015TWpoaFlqQXpaR1ZrWkRKbFpUaG1PVHBYY21GMmFTMHlMWE4wWlhBdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXlHdlFHQ2dFeXdqN3RCaExxQmdvRE1pNHhFb29CTURBNU5EZzRZVEZqWTJJNVlqUmpPV1l4TnpneFpHWmtNelV5WVRjeE16YzFNR00wT1RSbVpXTTFNMk5pT0dZMFpESmxNalE1TlRBNFl6VmxaamxtTlRWaVkyRXhNakV5TWpBeE5HUXpNVFUwTVdWaVlqRTNOamRrTlRBNFpERTNNREJtT0RRMFltTmtOR0UwTUdZd05USTVPVFJrWmpWallqWXdOREkxWkRNek9UYzJNRGxpTmpabUdodDFkR2xzYVhSNUxYSmxaMmx6ZEhKNUxXaHZiR1JwYm1jdGRqQWljQXBBWkdRellUbG1NbVExTVdOak5HTTFNbVE1WldNeVpURmtOMlptTWpNMU1qazRaR05tWWpOaFptUXhaRFV3WVdJME5ETXlPR0l4WVdGaE9XRXhPRFU0TnhJalZYUnBiR2wwZVM1U1pXZHBjM1J5ZVM1SWIyeGthVzVuTGxZd0xraHZiR1JwYm1jYUIwaHZiR1JwYm1jcWFHRjFkR2d3WHpBd04yTTJOV1k0TlRkbU1XTXpaRFU1T1dOaU5tUm1Oek0zTnpVNk9qRXlNakJrTW1RM016SmtNRFF5WXpJNE1XTmxaVGd3WmpRNE0yRmlPREJtTTJOaVlXRTBOemd5T0RZd1pXUTFaalJrWXpJeU9HRmlNRE5rWldSa01tVmxPR1k1S2xkeVlYWnBMVEl0YzNSbGNDMXdZWEowZVRvNk1USXlNRGt5WlRka016TmhZekV3WXpCbU0yUTFOVGszTmpNME1tWXpOelUxTldSbU1EVmtZVFZpTnpReU9UVTJaRFUyWVRZeVlXVXlNelkzTnpZNU1EYzVaREl5YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVNbGR5WVhacExUSXRjM1JsY0Mxd1lYSjBlVG82TVRJeU1Ea3laVGRrTXpOaFl6RXdZekJtTTJRMU5UazNOak0wTW1Zek56VTFOV1JtTURWa1lUVmlOelF5T1RVMlpEVTJZVFl5WVdVeU16WTNOelk1TURjNVpESTZhR0YxZEdnd1h6QXdOMk0yTldZNE5UZG1NV016WkRVNU9XTmlObVJtTnpNM056VTZPakV5TWpCa01tUTNNekprTURReVl6STRNV05sWlRnd1pqUTRNMkZpT0RCbU0yTmlZV0UwTnpneU9EWXdaV1ExWmpSa1l6SXlPR0ZpTUROa1pXUmtNbVZsT0dZNU9sZHlZWFpwTFRJdGMzUmxjQzF3WVhKMGVUbzZNVEl5TURreVpUZGtNek5oWXpFd1l6Qm1NMlExTlRrM05qTTBNbVl6TnpVMU5XUm1NRFZrWVRWaU56UXlPVFUyWkRVMllUWXlZV1V5TXpZM056WTVNRGM1WkRJYWdCNEtBVERDUHZrZEd2WWRDZ015TGpFU2lnRXdNR1E1TW1Rd05UTTVZakZrTmpJNE5XSXpNalk1TUdRNU16SXlaR1k0TVdJeE5UazVNems0TTJZeVpUTm1ZV1JrWldKaU5ETTBPRGc1TmpreFlqSTVPV1JqWVRFeE1USXlNRGd4TnpNMVpESmxaRFZqTTJZek56YzBZamt3T0RRNE4yUmtPVEJtTnpKaVpHTTJaVFUyWTJNMk1HWmhZalZqT0dOa1pESXlPREkxT1RnMVpUTXdZemNhRjNWMGFXeHBkSGt0Y21WbmFYTjBjbmt0WVhCd0xYWXdJb2dCQ2tBeU56RTNOREV5WmpBeE1UVTROR00yTURBeFpXWXlNakk1T1RRNU5qWXhaR0UyT1dKaVpUUTVOemt3WXpsbVl6SmpNbUkzWkRNMVlUUTNPVE14TVdabUVqRlZkR2xzYVhSNUxsSmxaMmx6ZEhKNUxrRndjQzVXTUM1VFpYSjJhV05sTGtGc2JHOWpZWFJwYjI1R1lXTjBiM0o1R2hGQmJHeHZZMkYwYVc5dVJtRmpkRzl5ZVNwb1lYVjBhREJmTURBM1l6WTFaamcxTjJZeFl6TmtOVGs1WTJJMlpHWTNNemMzTlRvNk1USXlNR1F5WkRjek1tUXdOREpqTWpneFkyVmxPREJtTkRnellXSTRNR1l6WTJKaFlUUTNPREk0TmpCbFpEVm1OR1JqTWpJNFlXSXdNMlJsWkdReVpXVTRaamt5YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVPbGR5WVhacExUSXRjM1JsY0Mxd1lYSjBlVG82TVRJeU1Ea3laVGRrTXpOaFl6RXdZekJtTTJRMU5UazNOak0wTW1Zek56VTFOV1JtTURWa1lUVmlOelF5T1RVMlpEVTJZVFl5WVdVeU16WTNOelk1TURjNVpESkNld3BBTlRWaVlUUmtaV0l3WVdRME5qWXlZelF4TmpoaU16azROVGszTXpoaE1HVTVNVE00T0dReU5USXlPRFkwT0RCak56TXpNV0l6WmpjeFlUVXhOekk0TVJJbVUzQnNhV05sTGtGd2FTNVViMnRsYmk1VWNtRnVjMlpsY2tsdWMzUnlkV04wYVc5dVZqRWFEMVJ5WVc1elptVnlSbUZqZEc5eWVVb1lWSEpoYm5ObVpYSkdZV04wYjNKNVgxUnlZVzV6Wm1WeVVwc1JjcGdSQ29RQkNrQTFOV0poTkdSbFlqQmhaRFEyTmpKak5ERTJPR0l6T1RnMU9UY3pPR0V3WlRreE16ZzRaREkxTWpJNE5qUTRNR00zTXpNeFlqTm1OekZoTlRFM01qZ3hFaVpUY0d4cFkyVXVRWEJwTGxSdmEyVnVMbFJ5WVc1elptVnlTVzV6ZEhKMVkzUnBiMjVXTVJvWVZISmhibk5tWlhKR1lXTjBiM0o1WDFSeVlXNXpabVZ5RW5zS0RXVjRjR1ZqZEdWa1FXUnRhVzRTYWpwb1lYVjBhREJmTURBM1l6WTFaamcxTjJZeFl6TmtOVGs1WTJJMlpHWTNNemMzTlRvNk1USXlNR1F5WkRjek1tUXdOREpqTWpneFkyVmxPREJtTkRnellXSTRNR1l6WTJKaFlUUTNPREk0TmpCbFpEVm1OR1JqTWpJNFlXSXdNMlJsWkdReVpXVTRaamtTaGdnS0NIUnlZVzV6Wm1WeUV2a0hjdllIQ25RS1FEVTFZbUUwWkdWaU1HRmtORFkyTW1NME1UWTRZak01T0RVNU56TTRZVEJsT1RFek9EaGtNalV5TWpnMk5EZ3dZemN6TXpGaU0yWTNNV0UxTVRjeU9ERVNKbE53YkdsalpTNUJjR2t1Vkc5clpXNHVWSEpoYm5ObVpYSkpibk4wY25WamRHbHZibFl4R2doVWNtRnVjMlpsY2hKakNnWnpaVzVrWlhJU1dUcFhjbUYyYVMweUxYTjBaWEF0Y0dGeWRIazZPakV5TWpBNU1tVTNaRE16WVdNeE1HTXdaak5rTlRVNU56WXpOREptTXpjMU5UVmtaakExWkdFMVlqYzBNamsxTm1RMU5tRTJNbUZsTWpNMk56YzJPVEEzT1dReUVsa0tDSEpsWTJWcGRtVnlFazA2U3pFeU1qQmhPam94TWpJd1lXWTNaV0k1TURVeE5URTROREZsT1ROaU9XVm1ZMlkxTWprNU9EZ3dZbVpoTlRaa1pUSmtNRFpsTjJNM09XVTJZalUzT0dZeVl6aGlNRFU0T1dVNE1oSVlDZ1poYlc5MWJuUVNEaklNTVM0d01EQXdNREF3TURBd0Vvb0NDZ3hwYm5OMGNuVnRaVzUwU1dRUytRRnk5Z0VLYkFwQU56RTRZVEJtTnpkbE5UQTFZVGhrWlRJeVpqRTRPR0prTkdNNE4yWmxOelF4TURFeU56UmxPV1EwWTJJeFltWmhZemRrTURsaFpXTTNNVFU0WkRNMVloSWFVM0JzYVdObExrRndhUzVVYjJ0bGJpNUliMnhrYVc1blZqRWFERWx1YzNSeWRXMWxiblJKWkJKekNnVmhaRzFwYmhKcU9taGhkWFJvTUY4d01EZGpOalZtT0RVM1pqRmpNMlExT1RsallqWmtaamN6TnpjMU9qb3hNakl3WkRKa056TXlaREEwTW1NeU9ERmpaV1U0TUdZME9ETmhZamd3WmpOalltRmhORGM0TWpnMk1HVmtOV1kwWkdNeU1qaGhZakF6WkdWa1pESmxaVGhtT1JJUkNnSnBaQklMUWdsVVpYTjBWRzlyWlc0U0dBb0xjbVZ4ZFdWemRHVmtRWFFTQ1NsUWNrcnora2tHQUJJYUNnMWxlR1ZqZFhSbFFtVm1iM0psRWdrcFVCYmV5ZnRKQmdBU3FBRUtFR2x1Y0hWMFNHOXNaR2x1WjBOcFpITVNrd0Zha0FFS2pRRktpZ0V3TURrME9EaGhNV05qWWpsaU5HTTVaakUzT0RGa1ptUXpOVEpoTnpFek56VXdZelE1TkdabFl6VXpZMkk0WmpSa01tVXlORGsxTURoak5XVm1PV1kxTldKallURXlNVEl5TURFMFpETXhOVFF4WldKaU1UYzJOMlExTURoa01UY3dNR1k0TkRSaVkyUTBZVFF3WmpBMU1qazVOR1JtTldOaU5qQTBNalZrTXpNNU56WXdPV0kyTm1ZU3RRRUtCRzFsZEdFU3JBRnlxUUVLYVFwQU5HUmxaRFppTmpZNFkySXpZalkwWmpkaE9EaGhNekE0TnpSalpEUXhZemMxT0RJNVpqVmxNRFkwWWpObVltSmhaR1kwTVdWak4yVTRNell6TXpVMFpoSWJVM0JzYVdObExrRndhUzVVYjJ0bGJpNU5aWFJoWkdGMFlWWXhHZ2hOWlhSaFpHRjBZUkk4Q2daMllXeDFaWE1TTW1Jd0NpNEtKbk53YkdsalpTNXNabVJsWTJWdWRISmhiR2w2WldSMGNuVnpkQzV2Y21jdmNtVmhjMjl1RWdSQ0FtRXhFb2dIQ2dsbGVIUnlZVUZ5WjNNUytnWnk5d1lLYWdwQU5HUmxaRFppTmpZNFkySXpZalkwWmpkaE9EaGhNekE0TnpSalpEUXhZemMxT0RJNVpqVmxNRFkwWWpObVltSmhaR1kwTVdWak4yVTRNell6TXpVMFpoSWJVM0JzYVdObExrRndhUzVVYjJ0bGJpNU5aWFJoWkdGMFlWWXhHZ2xGZUhSeVlVRnlaM01TZ2dVS0IyTnZiblJsZUhRUzlnUnk4d1FLYmdwQU5HUmxaRFppTmpZNFkySXpZalkwWmpkaE9EaGhNekE0TnpSalpEUXhZemMxT0RJNVpqVmxNRFkwWWpObVltSmhaR1kwTVdWak4yVTRNell6TXpVMFpoSWJVM0JzYVdObExrRndhUzVVYjJ0bGJpNU5aWFJoWkdGMFlWWXhHZzFEYUc5cFkyVkRiMjUwWlhoMEVvQUVDZ1oyWVd4MVpYTVM5UU5pOGdNS3d3SUtNWFYwYVd4cGRIa3VaR2xuYVhSaGJHRnpjMlYwTG1OdmJTOXBibk4wY25WdFpXNTBMV052Ym1acFozVnlZWFJwYjI0U2pRSjZpZ0lLYVFwQU5HUmxaRFppTmpZNFkySXpZalkwWmpkaE9EaGhNekE0TnpSalpEUXhZemMxT0RJNVpqVmxNRFkwWWpObVltSmhaR1kwTVdWak4yVTRNell6TXpVMFpoSWJVM0JzYVdObExrRndhUzVVYjJ0bGJpNU5aWFJoWkdGMFlWWXhHZ2hCYm5sV1lXeDFaUklOUVZaZlEyOXVkSEpoWTNSSlpCcU5BVXFLQVRBd1lUYzBabU5qTkdGa1l6RXdabVptWldNd05tWmtNelExT0RFMU1UVmhOak0yWldWa09XWXdOekl4TVRFeE9ESmlaVFl4T0Rsall6RTRZV1U0TldNNE0yTmhNVEV4TWpJd01qZ3hNRFJpTXpZMFpUUTVPREl3TkRaaFlURXlaVFV5T1RRMU1UUTRaVE5rWldZelpESXhPVGc1TVdZMk9EZGhZek14TW1VNU1UZzJOVE0yWTJNNFlncXBBUW9yZFhScGJHbDBlUzVrYVdkcGRHRnNZWE56WlhRdVkyOXRMM05sYm1SbGNpMWpjbVZrWlc1MGFXRnNjeEo2ZW5nS2FRcEFOR1JsWkRaaU5qWTRZMkl6WWpZMFpqZGhPRGhoTXpBNE56UmpaRFF4WXpjMU9ESTVaalZsTURZMFlqTm1ZbUpoWkdZME1XVmpOMlU0TXpZek16VTBaaEliVTNCc2FXTmxMa0Z3YVM1VWIydGxiaTVOWlhSaFpHRjBZVll4R2doQmJubFdZV3gxWlJJSFFWWmZUR2x6ZEJvQ1dnQVNnd0VLQkcxbGRHRVNlM0o1Q21rS1FEUmtaV1EyWWpZMk9HTmlNMkkyTkdZM1lUZzRZVE13T0RjMFkyUTBNV00zTlRneU9XWTFaVEEyTkdJelptSmlZV1JtTkRGbFl6ZGxPRE0yTXpNMU5HWVNHMU53YkdsalpTNUJjR2t1Vkc5clpXNHVUV1YwWVdSaGRHRldNUm9JVFdWMFlXUmhkR0VTREFvR2RtRnNkV1Z6RWdKaUFHSUJNV0lCTW1JQk0ySUJOR0lCTldJQk5tckpCbkxHQmdxRkFRcEFOVFZpWVRSa1pXSXdZV1EwTmpZeVl6UXhOamhpTXprNE5UazNNemhoTUdVNU1UTTRPR1F5TlRJeU9EWTBPREJqTnpNek1XSXpaamN4WVRVeE56STRNUkltVTNCc2FXTmxMa0Z3YVM1VWIydGxiaTVVY21GdWMyWmxja2x1YzNSeWRXTjBhVzl1VmpFYUdWUnlZVzV6Wm1WeVNXNXpkSEoxWTNScGIyNVNaWE4xYkhRUzF3TUtCbTkxZEhCMWRCTE1BM3JKQXdxTUFRcEFOVFZpWVRSa1pXSXdZV1EwTmpZeVl6UXhOamhpTXprNE5UazNNemhoTUdVNU1UTTRPR1F5TlRJeU9EWTBPREJqTnpNek1XSXpaamN4WVRVeE56STRNUkltVTNCc2FXTmxMa0Z3YVM1VWIydGxiaTVVY21GdWMyWmxja2x1YzNSeWRXTjBhVzl1VmpFYUlGUnlZVzV6Wm1WeVNXNXpkSEoxWTNScGIyNVNaWE4xYkhSZlQzVjBjSFYwRWlGVWNtRnVjMlpsY2tsdWMzUnlkV04wYVc5dVVtVnpkV3gwWDFCbGJtUnBibWNhbEFKeWtRSUtyZ0VLUURVMVltRTBaR1ZpTUdGa05EWTJNbU0wTVRZNFlqTTVPRFU1TnpNNFlUQmxPVEV6T0Roa01qVXlNamcyTkRnd1l6Y3pNekZpTTJZM01XRTFNVGN5T0RFU0psTndiR2xqWlM1QmNHa3VWRzlyWlc0dVZISmhibk5tWlhKSmJuTjBjblZqZEdsdmJsWXhHa0pVY21GdWMyWmxja2x1YzNSeWRXTjBhVzl1VW1WemRXeDBYMDkxZEhCMWRDNVVjbUZ1YzJabGNrbHVjM1J5ZFdOMGFXOXVVbVZ6ZFd4MFgxQmxibVJwYm1jU1hnb1dkSEpoYm5ObVpYSkpibk4wY25WamRHbHZia05wWkJKRVNrSXdNRFZqWkRjMk9EZG1OakZoTURaalltVTJNVGMzTTJVMk5XTXdNR1psTVdVNE5ERmxOR1ZsWVdKaVlURmxNalEwWlRnMlpqTTRZekV5TW1ZNE5qRTRORGtTWEFvUWMyVnVaR1Z5UTJoaGJtZGxRMmxrY3hKSVdrWUtSRXBDTURBd1ptWTRZemxrTnpnMlpERTNZbUk1WVdJNVpUVTRPR1V3WVdNelpqWm1ZVGt6TUROaFltVTVNVEUwTlRRNVlqVm1NalU0WVRBMU16YzRNVEJoTjJNMkVvTUJDZ1J0WlhSaEVudHllUXBwQ2tBMFpHVmtObUkyTmpoallqTmlOalJtTjJFNE9HRXpNRGczTkdOa05ERmpOelU0TWpsbU5XVXdOalJpTTJaaVltRmtaalF4WldNM1pUZ3pOak16TlRSbUVodFRjR3hwWTJVdVFYQnBMbFJ2YTJWdUxrMWxkR0ZrWVhSaFZqRWFDRTFsZEdGa1lYUmhFZ3dLQm5aaGJIVmxjeElDWWdBYWxnd0tBVFhDUG84TUNvd01DZ015TGpFU1FqQXdNR1ptT0dNNVpEYzRObVF4TjJKaU9XRmlPV1UxT0RobE1HRmpNMlkyWm1FNU16QXpZV0psT1RFeE5EVTBPV0kxWmpJMU9HRXdOVE0zT0RFd1lUZGpOaG9iZFhScGJHbDBlUzF5WldkcGMzUnllUzFvYjJ4a2FXNW5MWFl3SW5BS1FHUmtNMkU1WmpKa05URmpZelJqTlRKa09XVmpNbVV4WkRkbVpqSXpOVEk1T0dSalptSXpZV1prTVdRMU1HRmlORFF6TWpoaU1XRmhZVGxoTVRnMU9EY1NJMVYwYVd4cGRIa3VVbVZuYVhOMGNua3VTRzlzWkdsdVp5NVdNQzVJYjJ4a2FXNW5HZ2RJYjJ4a2FXNW5LcXNIY3FnSENuQUtRR1JrTTJFNVpqSmtOVEZqWXpSak5USmtPV1ZqTW1VeFpEZG1aakl6TlRJNU9HUmpabUl6WVdaa01XUTFNR0ZpTkRRek1qaGlNV0ZoWVRsaE1UZzFPRGNTSTFWMGFXeHBkSGt1VW1WbmFYTjBjbmt1U0c5c1pHbHVaeTVXTUM1SWIyeGthVzVuR2dkSWIyeGthVzVuRW5ZS0NHOXdaWEpoZEc5eUVtbzZhR0YxZEdnd1h6QXdOMk0yTldZNE5UZG1NV016WkRVNU9XTmlObVJtTnpNM056VTZPakV5TWpCa01tUTNNekprTURReVl6STRNV05sWlRnd1pqUTRNMkZpT0RCbU0yTmlZV0UwTnpneU9EWXdaV1ExWmpSa1l6SXlPR0ZpTUROa1pXUmtNbVZsT0dZNUVuWUtDSEJ5YjNacFpHVnlFbW82YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVFbmNLQ1hKbFoybHpkSEpoY2hKcU9taGhkWFJvTUY4d01EZGpOalZtT0RVM1pqRmpNMlExT1RsallqWmtaamN6TnpjMU9qb3hNakl3WkRKa056TXlaREEwTW1NeU9ERmpaV1U0TUdZME9ETmhZamd3WmpOalltRmhORGM0TWpnMk1HVmtOV1kwWkdNeU1qaGhZakF6WkdWa1pESmxaVGhtT1JKaUNnVnZkMjVsY2hKWk9sZHlZWFpwTFRJdGMzUmxjQzF3WVhKMGVUbzZNVEl5TURreVpUZGtNek5oWXpFd1l6Qm1NMlExTlRrM05qTTBNbVl6TnpVMU5XUm1NRFZrWVRWaU56UXlPVFUyWkRVMllUWXlZV1V5TXpZM056WTVNRGM1WkRJU3ZRSUtDbWx1YzNSeWRXMWxiblFTcmdKeXF3SUtld3BBWkdRellUbG1NbVExTVdOak5HTTFNbVE1WldNeVpURmtOMlptTWpNMU1qazRaR05tWWpOaFptUXhaRFV3WVdJME5ETXlPR0l4WVdGaE9XRXhPRFU0TnhJaFZYUnBiR2wwZVM1U1pXZHBjM1J5ZVM1SWIyeGthVzVuTGxZd0xsUjVjR1Z6R2hSSmJuTjBjblZ0Wlc1MFNXUmxiblJwWm1sbGNoSjBDZ1p6YjNWeVkyVVNhanBvWVhWMGFEQmZNREEzWXpZMVpqZzFOMll4WXpOa05UazVZMkkyWkdZM016YzNOVG82TVRJeU1HUXlaRGN6TW1Rd05ESmpNamd4WTJWbE9EQm1ORGd6WVdJNE1HWXpZMkpoWVRRM09ESTROakJsWkRWbU5HUmpNakk0WVdJd00yUmxaR1F5WldVNFpqa1NFUW9DYVdRU0MwSUpWR1Z6ZEZSdmEyVnVFaU1LQm5OamFHVnRaUklaUWhkU1pXZHBjM1J5WVhKSmJuUmxjbTVoYkZOamFHVnRaUklMQ2dWc1lXSmxiQklDUWdBU0dnb0dZVzF2ZFc1MEVoQXlEalEzT0M0d01EQXdNREF3TURBd01taGhkWFJvTUY4d01EZGpOalZtT0RVM1pqRmpNMlExT1RsallqWmtaamN6TnpjMU9qb3hNakl3WkRKa056TXlaREEwTW1NeU9ERmpaV1U0TUdZME9ETmhZamd3WmpOalltRmhORGM0TWpnMk1HVmtOV1kwWkdNeU1qaGhZakF6WkdWa1pESmxaVGhtT1RKWGNtRjJhUzB5TFhOMFpYQXRjR0Z5ZEhrNk9qRXlNakE1TW1VM1pETXpZV014TUdNd1pqTmtOVFU1TnpZek5ESm1NemMxTlRWa1pqQTFaR0UxWWpjME1qazFObVExTm1FMk1tRmxNak0yTnpjMk9UQTNPV1F5T21oaGRYUm9NRjh3TURkak5qVm1PRFUzWmpGak0yUTFPVGxqWWpaa1pqY3pOemMxT2pveE1qSXdaREprTnpNeVpEQTBNbU15T0RGalpXVTRNR1kwT0ROaFlqZ3daak5qWW1GaE5EYzRNamcyTUdWa05XWTBaR015TWpoaFlqQXpaR1ZrWkRKbFpUaG1PVHBYY21GMmFTMHlMWE4wWlhBdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXlJaUlTSU52TFV5YTJFeTJPazVyejcyKzg2eC9oZEZmQWk4TStpcHlSLzQ3RkZSc1NJaVFJQXhJZ1FyZllzdEZxaGc1MGxhRFozblVDcXBEenV3aEQ4TTgxOHQzWXBOMmdYWllpSkFnRUVpQ09oWEowRlljRUZOeEdRTEVjOGMvYzFpOVF1TEczRkEyaDlaY2V5aDdHb0NJa0NBVVNJSGk0Z1hBbkp6cFE4YWhZR0tKYk9RUTBTNWsyWmdGVXJTRDNneEdOY1MzbklpUUlCaElnOFlDYVRleXl2MGlOc09yeVlraUhKeTduNVp5cDk1MEppbWdmMlNVa0xTVVNpVGdTZndwWGNtRjJhUzB5TFhOMFpYQXRjR0Z5ZEhrNk9qRXlNakE1TW1VM1pETXpZV014TUdNd1pqTmtOVFU1TnpZek5ESm1NemMxTlRWa1pqQTFaR0UxWWpjME1qazFObVExTm1FMk1tRmxNak0yTnpjMk9UQTNPV1F5RWlSa1lUWXlOVGczWlMxa1lXWXlMVFJoWXpNdE9XSmpZeTFoWkdJMFlUUTVPVGhpT0RBYVUyZHNiMkpoYkMxa2IyMWhhVzQ2T2pFeU1qQmlaVFU0WXpJNVpUWTFaR1UwTUdKbU1qY3pZbVV4WkdNeVlqSTJObVEwTTJFNVlUQXdNbVZoTldJeE9EazFOV0ZsWldZM1lXRmpPRGd4WW1JME56RmhLaVJqTURobU56WmtaaTFtTURoa0xUUXdZVE10T0RGaVpDMDNORGt3TlRVM1kySXpZelV3OWZQcG1xKy9rZ002cWhVSzFRd0tBekl1TVJLS0FUQXdPVFE0T0dFeFkyTmlPV0kwWXpsbU1UYzRNV1JtWkRNMU1tRTNNVE0zTlRCak5EazBabVZqTlROallqaG1OR1F5WlRJME9UVXdPR00xWldZNVpqVTFZbU5oTVRJeE1qSXdNVFJrTXpFMU5ERmxZbUl4TnpZM1pEVXdPR1F4TnpBd1pqZzBOR0pqWkRSaE5EQm1NRFV5T1RrMFpHWTFZMkkyTURReU5XUXpNemszTmpBNVlqWTJaaG9iZFhScGJHbDBlUzF5WldkcGMzUnllUzFvYjJ4a2FXNW5MWFl3SW5BS1FHUmtNMkU1WmpKa05URmpZelJqTlRKa09XVmpNbVV4WkRkbVpqSXpOVEk1T0dSalptSXpZV1prTVdRMU1HRmlORFF6TWpoaU1XRmhZVGxoTVRnMU9EY1NJMVYwYVd4cGRIa3VVbVZuYVhOMGNua3VTRzlzWkdsdVp5NVdNQzVJYjJ4a2FXNW5HZ2RJYjJ4a2FXNW5LcXNIY3FnSENuQUtRR1JrTTJFNVpqSmtOVEZqWXpSak5USmtPV1ZqTW1VeFpEZG1aakl6TlRJNU9HUmpabUl6WVdaa01XUTFNR0ZpTkRRek1qaGlNV0ZoWVRsaE1UZzFPRGNTSTFWMGFXeHBkSGt1VW1WbmFYTjBjbmt1U0c5c1pHbHVaeTVXTUM1SWIyeGthVzVuR2dkSWIyeGthVzVuRW5ZS0NHOXdaWEpoZEc5eUVtbzZhR0YxZEdnd1h6QXdOMk0yTldZNE5UZG1NV016WkRVNU9XTmlObVJtTnpNM056VTZPakV5TWpCa01tUTNNekprTURReVl6STRNV05sWlRnd1pqUTRNMkZpT0RCbU0yTmlZV0UwTnpneU9EWXdaV1ExWmpSa1l6SXlPR0ZpTUROa1pXUmtNbVZsT0dZNUVuWUtDSEJ5YjNacFpHVnlFbW82YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVFbmNLQ1hKbFoybHpkSEpoY2hKcU9taGhkWFJvTUY4d01EZGpOalZtT0RVM1pqRmpNMlExT1RsallqWmtaamN6TnpjMU9qb3hNakl3WkRKa056TXlaREEwTW1NeU9ERmpaV1U0TUdZME9ETmhZamd3WmpOalltRmhORGM0TWpnMk1HVmtOV1kwWkdNeU1qaGhZakF6WkdWa1pESmxaVGhtT1JKaUNnVnZkMjVsY2hKWk9sZHlZWFpwTFRJdGMzUmxjQzF3WVhKMGVUbzZNVEl5TURreVpUZGtNek5oWXpFd1l6Qm1NMlExTlRrM05qTTBNbVl6TnpVMU5XUm1NRFZrWVRWaU56UXlPVFUyWkRVMllUWXlZV1V5TXpZM056WTVNRGM1WkRJU3ZRSUtDbWx1YzNSeWRXMWxiblFTcmdKeXF3SUtld3BBWkdRellUbG1NbVExTVdOak5HTTFNbVE1WldNeVpURmtOMlptTWpNMU1qazRaR05tWWpOaFptUXhaRFV3WVdJME5ETXlPR0l4WVdGaE9XRXhPRFU0TnhJaFZYUnBiR2wwZVM1U1pXZHBjM1J5ZVM1SWIyeGthVzVuTGxZd0xsUjVjR1Z6R2hSSmJuTjBjblZ0Wlc1MFNXUmxiblJwWm1sbGNoSjBDZ1p6YjNWeVkyVVNhanBvWVhWMGFEQmZNREEzWXpZMVpqZzFOMll4WXpOa05UazVZMkkyWkdZM016YzNOVG82TVRJeU1HUXlaRGN6TW1Rd05ESmpNamd4WTJWbE9EQm1ORGd6WVdJNE1HWXpZMkpoWVRRM09ESTROakJsWkRWbU5HUmpNakk0WVdJd00yUmxaR1F5WldVNFpqa1NFUW9DYVdRU0MwSUpWR1Z6ZEZSdmEyVnVFaU1LQm5OamFHVnRaUklaUWhkU1pXZHBjM1J5WVhKSmJuUmxjbTVoYkZOamFHVnRaUklMQ2dWc1lXSmxiQklDUWdBU0dnb0dZVzF2ZFc1MEVoQXlEalEzT1M0d01EQXdNREF3TURBd01taGhkWFJvTUY4d01EZGpOalZtT0RVM1pqRmpNMlExT1RsallqWmtaamN6TnpjMU9qb3hNakl3WkRKa056TXlaREEwTW1NeU9ERmpaV1U0TUdZME9ETmhZamd3WmpOalltRmhORGM0TWpnMk1HVmtOV1kwWkdNeU1qaGhZakF6WkdWa1pESmxaVGhtT1RKWGNtRjJhUzB5TFhOMFpYQXRjR0Z5ZEhrNk9qRXlNakE1TW1VM1pETXpZV014TUdNd1pqTmtOVFU1TnpZek5ESm1NemMxTlRWa1pqQTFaR0UxWWpjME1qazFObVExTm1FMk1tRmxNak0yTnpjMk9UQTNPV1F5T21oaGRYUm9NRjh3TURkak5qVm1PRFUzWmpGak0yUTFPVGxqWWpaa1pqY3pOemMxT2pveE1qSXdaREprTnpNeVpEQTBNbU15T0RGalpXVTRNR1kwT0ROaFlqZ3daak5qWW1GaE5EYzRNamcyTUdWa05XWTBaR015TWpoaFlqQXpaR1ZrWkRKbFpUaG1PVHBYY21GMmFTMHlMWE4wWlhBdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXl3RDdqekttQ3JyK1NBOUkreEFnS0F6SXVNUks4Q0FwRkFKU0lvY3k1dE1ueGVCMzlOU3B4TjFERWxQN0ZQTGowMHVKSlVJeGUrZlZieWhJU0lCVFRGVUhyc1haOVVJMFhBUGhFdk5Ta0R3VXBsTjljdGdRbDB6bDJDYlp2RWh0MWRHbHNhWFI1TFhKbFoybHpkSEo1TFdodmJHUnBibWN0ZGpBYWRBcEFaR1F6WVRsbU1tUTFNV05qTkdNMU1tUTVaV015WlRGa04yWm1Nak0xTWprNFpHTm1Zak5oWm1ReFpEVXdZV0kwTkRNeU9HSXhZV0ZoT1dFeE9EVTROeElIVlhScGJHbDBlUklJVW1WbmFYTjBjbmtTQjBodmJHUnBibWNTQWxZd0VnZEliMnhrYVc1bkdnZEliMnhrYVc1bkl1Y0VhdVFFQ213S2FqcG9ZWFYwYURCZk1EQTNZelkxWmpnMU4yWXhZek5rTlRrNVkySTJaR1kzTXpjM05UbzZNVEl5TUdReVpEY3pNbVF3TkRKak1qZ3hZMlZsT0RCbU5EZ3pZV0k0TUdZelkySmhZVFEzT0RJNE5qQmxaRFZtTkdSak1qSTRZV0l3TTJSbFpHUXlaV1U0WmprS2JBcHFPbWhoZFhSb01GOHdNRGRqTmpWbU9EVTNaakZqTTJRMU9UbGpZalprWmpjek56YzFPam94TWpJd1pESmtOek15WkRBME1tTXlPREZqWldVNE1HWTBPRE5oWWpnd1pqTmpZbUZoTkRjNE1qZzJNR1ZrTldZMFpHTXlNamhoWWpBelpHVmtaREpsWlRobU9RcHNDbW82YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVDbHNLV1RwWGNtRjJhUzB5TFhOMFpYQXRjR0Z5ZEhrNk9qRXlNakE1TW1VM1pETXpZV014TUdNd1pqTmtOVFU1TnpZek5ESm1NemMxTlRWa1pqQTFaR0UxWWpjME1qazFObVExTm1FMk1tRmxNak0yTnpjMk9UQTNPV1F5Q3FBQkNwMEJhcG9CQ213S2FqcG9ZWFYwYURCZk1EQTNZelkxWmpnMU4yWXhZek5rTlRrNVkySTJaR1kzTXpjM05UbzZNVEl5TUdReVpEY3pNbVF3TkRKak1qZ3hZMlZsT0RCbU5EZ3pZV0k0TUdZelkySmhZVFEzT0RJNE5qQmxaRFZtTkdSak1qSTRZV0l3TTJSbFpHUXlaV1U0WmprS0RRb0xRZ2xVWlhOMFZHOXJaVzRLR3dvWlFoZFNaV2RwYzNSeVlYSkpiblJsY201aGJGTmphR1Z0WlFvRUNnSkNBQW9TQ2hBeURqUTNPUzR3TURBd01EQXdNREF3S21oaGRYUm9NRjh3TURkak5qVm1PRFUzWmpGak0yUTFPVGxqWWpaa1pqY3pOemMxT2pveE1qSXdaREprTnpNeVpEQTBNbU15T0RGalpXVTRNR1kwT0ROaFlqZ3daak5qWW1GaE5EYzRNamcyTUdWa05XWTBaR015TWpoaFlqQXpaR1ZrWkRKbFpUaG1PU3BYY21GMmFTMHlMWE4wWlhBdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXlPV05tU3VENlNRWUFRaW9LSmdva0NBRVNJS0hlU3JpS0lXNWZBRFQzL1g3bXhwZmpOTmdqNGxTaGQvT3hqVFBTakk4ekVCNDZ3eElLbWdzS0F6SXVNUktLQVRBd1lUYzBabU5qTkdGa1l6RXdabVptWldNd05tWmtNelExT0RFMU1UVmhOak0yWldWa09XWXdOekl4TVRFeE9ESmlaVFl4T0Rsall6RTRZV1U0TldNNE0yTmhNVEV4TWpJd01qZ3hNRFJpTXpZMFpUUTVPREl3TkRaaFlURXlaVFV5T1RRMU1UUTRaVE5rWldZelpESXhPVGc1TVdZMk9EZGhZek14TW1VNU1UZzJOVE0yWTJNNFlob1RkWFJwYkdsMGVTMXlaV2RwYzNSeWVTMTJNQ0tKQVFwQVpXUTNNMlExWWpsaFlqY3hOek16TTJZelpHSmtNVEl5WkdVM1ltVXpNVFUyWmpoaVpqSTJNVFJoTmpjek5qQmpNMlJrTmpGbVl6QXhNelV4TXpObVlSSXNWWFJwYkdsMGVTNVNaV2RwYzNSeWVTNVdNQzVEYjI1bWFXZDFjbUYwYVc5dUxrbHVjM1J5ZFcxbGJuUWFGMGx1YzNSeWRXMWxiblJEYjI1bWFXZDFjbUYwYVc5dUtwQUhjbzBIQ29rQkNrQm1ZemN5TVRSaFlqRXdOemhsWWpGbE1HUTJZMlUyTnpCbU1qQXpOREl6WXpVME9EZ3lZbVF3TkRNeU16UXpOalJtTTJOaU1UZ3hZemd6TVdRM1pHSmtFaXhWZEdsc2FYUjVMbEpsWjJsemRISjVMbFl3TGtOdmJtWnBaM1Z5WVhScGIyNHVTVzV6ZEhKMWJXVnVkQm9YU1c1emRISjFiV1Z1ZEVOdmJtWnBaM1Z5WVhScGIyNFNkZ29JYjNCbGNtRjBiM0lTYWpwb1lYVjBhREJmTURBM1l6WTFaamcxTjJZeFl6TmtOVGs1WTJJMlpHWTNNemMzTlRvNk1USXlNR1F5WkRjek1tUXdOREpqTWpneFkyVmxPREJtTkRnellXSTRNR1l6WTJKaFlUUTNPREk0TmpCbFpEVm1OR1JqTWpJNFlXSXdNMlJsWkdReVpXVTRaamtTZGdvSWNISnZkbWxrWlhJU2FqcG9ZWFYwYURCZk1EQTNZelkxWmpnMU4yWXhZek5rTlRrNVkySTJaR1kzTXpjM05UbzZNVEl5TUdReVpEY3pNbVF3TkRKak1qZ3hZMlZsT0RCbU5EZ3pZV0k0TUdZelkySmhZVFEzT0RJNE5qQmxaRFZtTkdSak1qSTRZV0l3TTJSbFpHUXlaV1U0WmprU2R3b0pjbVZuYVhOMGNtRnlFbW82YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVFc1FDQ2hGa1pXWmhkV3gwU1dSbGJuUnBabWxsY2hLdUFuS3JBZ3A3Q2tCa1pETmhPV1l5WkRVeFkyTTBZelV5WkRsbFl6SmxNV1EzWm1ZeU16VXlPVGhrWTJaaU0yRm1aREZrTlRCaFlqUTBNekk0WWpGaFlXRTVZVEU0TlRnM0VpRlZkR2xzYVhSNUxsSmxaMmx6ZEhKNUxraHZiR1JwYm1jdVZqQXVWSGx3WlhNYUZFbHVjM1J5ZFcxbGJuUkpaR1Z1ZEdsbWFXVnlFblFLQm5OdmRYSmpaUkpxT21oaGRYUm9NRjh3TURkak5qVm1PRFUzWmpGak0yUTFPVGxqWWpaa1pqY3pOemMxT2pveE1qSXdaREprTnpNeVpEQTBNbU15T0RGalpXVTRNR1kwT0ROaFlqZ3daak5qWW1GaE5EYzRNamcyTUdWa05XWTBaR015TWpoaFlqQXpaR1ZrWkRKbFpUaG1PUklSQ2dKcFpCSUxRZ2xVWlhOMFZHOXJaVzRTSXdvR2MyTm9aVzFsRWhsQ0YxSmxaMmx6ZEhKaGNrbHVkR1Z5Ym1Gc1UyTm9aVzFsRWhzS0ZXRmtaR2wwYVc5dVlXeEpaR1Z1ZEdsbWFXVnljeElDV2dBU0dBb1NhWE56ZFdWeVVtVnhkV2x5WlcxbGJuUnpFZ0phQUJJWUNoSm9iMnhrWlhKU1pYRjFhWEpsYldWdWRITVNBbG9BTW1oaGRYUm9NRjh3TURkak5qVm1PRFUzWmpGak0yUTFPVGxqWWpaa1pqY3pOemMxT2pveE1qSXdaREprTnpNeVpEQTBNbU15T0RGalpXVTRNR1kwT0ROaFlqZ3daak5qWW1GaE5EYzRNamcyTUdWa05XWTBaR015TWpoaFlqQXpaR1ZrWkRKbFpUaG1PVHBvWVhWMGFEQmZNREEzWXpZMVpqZzFOMll4WXpOa05UazVZMkkyWkdZM016YzNOVG82TVRJeU1HUXlaRGN6TW1Rd05ESmpNamd4WTJWbE9EQm1ORGd6WVdJNE1HWXpZMkpoWVRRM09ESTROakJsWkRWbU5HUmpNakk0WVdJd00yUmxaR1F5WldVNFpqbkFQdFdYaytEMjI1QUQwajZZQndvRE1pNHhFcEFIQ2tVQXAwL01TdHdRLy83QWI5TkZnVkZhWTI3dG53Y2hFUmdyNWhpY3dZcm9YSVBLRVJJZ0tCQkxOazVKZ2dScW9TNVNsRkZJNDk3ejBobUpIMmg2d3hMcEdHVTJ6SXNTRTNWMGFXeHBkSGt0Y21WbmFYTjBjbmt0ZGpBYWpRRUtRR1ZrTnpOa05XSTVZV0kzTVRjek16Tm1NMlJpWkRFeU1tUmxOMkpsTXpFMU5tWTRZbVl5TmpFMFlUWTNNell3WXpOa1pEWXhabU13TVRNMU1UTXpabUVTQjFWMGFXeHBkSGtTQ0ZKbFoybHpkSEo1RWdKV01CSU5RMjl1Wm1sbmRYSmhkR2x2YmhJS1NXNXpkSEoxYldWdWRCb1hTVzV6ZEhKMWJXVnVkRU52Ym1acFozVnlZWFJwYjI0aWdnUnEvd01LYkFwcU9taGhkWFJvTUY4d01EZGpOalZtT0RVM1pqRmpNMlExT1RsallqWmtaamN6TnpjMU9qb3hNakl3WkRKa056TXlaREEwTW1NeU9ERmpaV1U0TUdZME9ETmhZamd3WmpOalltRmhORGM0TWpnMk1HVmtOV1kwWkdNeU1qaGhZakF6WkdWa1pESmxaVGhtT1Fwc0NtbzZhR0YxZEdnd1h6QXdOMk0yTldZNE5UZG1NV016WkRVNU9XTmlObVJtTnpNM056VTZPakV5TWpCa01tUTNNekprTURReVl6STRNV05sWlRnd1pqUTRNMkZpT0RCbU0yTmlZV0UwTnpneU9EWXdaV1ExWmpSa1l6SXlPR0ZpTUROa1pXUmtNbVZsT0dZNUNtd0thanBvWVhWMGFEQmZNREEzWXpZMVpqZzFOMll4WXpOa05UazVZMkkyWkdZM016YzNOVG82TVRJeU1HUXlaRGN6TW1Rd05ESmpNamd4WTJWbE9EQm1ORGd6WVdJNE1HWXpZMkpoWVRRM09ESTROakJsWkRWbU5HUmpNakk0WVdJd00yUmxaR1F5WldVNFpqa0tvQUVLblFGcW1nRUtiQXBxT21oaGRYUm9NRjh3TURkak5qVm1PRFUzWmpGak0yUTFPVGxqWWpaa1pqY3pOemMxT2pveE1qSXdaREprTnpNeVpEQTBNbU15T0RGalpXVTRNR1kwT0ROaFlqZ3daak5qWW1GaE5EYzRNamcyTUdWa05XWTBaR015TWpoaFlqQXpaR1ZrWkRKbFpUaG1PUW9OQ2d0Q0NWUmxjM1JVYjJ0bGJnb2JDaGxDRjFKbFoybHpkSEpoY2tsdWRHVnlibUZzVTJOb1pXMWxDZ1FLQWxvQUNnUUtBbG9BQ2dRS0Fsb0FLbWhoZFhSb01GOHdNRGRqTmpWbU9EVTNaakZqTTJRMU9UbGpZalprWmpjek56YzFPam94TWpJd1pESmtOek15WkRBME1tTXlPREZqWldVNE1HWTBPRE5oWWpnd1pqTmpZbUZoTkRjNE1qZzJNR1ZrTldZMFpHTXlNamhoWWpBelpHVmtaREpsWlRobU9UblZ5d1JzMzBJR0FFSXFDaVlLSkFnQkVpQ2YrRkNSVUJPSE41OEZXbjB6L0c5Nzd0bm96VVE1RmhacFJCM29oclpwVGhBZU92d05Db1FJQ2dNeUxqRVNpZ0V3TUdRNU1tUXdOVE01WWpGa05qSTROV0l6TWpZNU1HUTVNekl5WkdZNE1XSXhOVGs1TXprNE0yWXlaVE5tWVdSa1pXSmlORE0wT0RnNU5qa3hZakk1T1dSallURXhNVEl5TURneE56TTFaREpsWkRWak0yWXpOemMwWWprd09EUTROMlJrT1RCbU56SmlaR00yWlRVMlkyTTJNR1poWWpWak9HTmtaREl5T0RJMU9UZzFaVE13WXpjYUYzVjBhV3hwZEhrdGNtVm5hWE4wY25rdFlYQndMWFl3SW9nQkNrQTRNamM1T0dSbU1ERTRNekF4T0RVeU56QTBaakl4TUdJNU4yRmtZV0ZpWmpjMlpETmxZMlF6TjJRNE9EbGxNV0ptT1RaaU5XWXpNV0V5TUdWbFlUTTBFakZWZEdsc2FYUjVMbEpsWjJsemRISjVMa0Z3Y0M1V01DNVRaWEoyYVdObExrRnNiRzlqWVhScGIyNUdZV04wYjNKNUdoRkJiR3h2WTJGMGFXOXVSbUZqZEc5eWVTcjNBM0wwQXdxSUFRcEFNamN4TnpReE1tWXdNVEUxT0RSak5qQXdNV1ZtTWpJeU9UazBPVFkyTVdSaE5qbGlZbVUwT1RjNU1HTTVabU15WXpKaU4yUXpOV0UwTnprek1URm1aaEl4VlhScGJHbDBlUzVTWldkcGMzUnllUzVCY0hBdVZqQXVVMlZ5ZG1salpTNUJiR3h2WTJGMGFXOXVSbUZqZEc5eWVSb1JRV3hzYjJOaGRHbHZia1poWTNSdmNua1NkZ29JY0hKdmRtbGtaWElTYWpwb1lYVjBhREJmTURBM1l6WTFaamcxTjJZeFl6TmtOVGs1WTJJMlpHWTNNemMzTlRvNk1USXlNR1F5WkRjek1tUXdOREpqTWpneFkyVmxPREJtTkRnellXSTRNR1l6WTJKaFlUUTNPREk0TmpCbFpEVm1OR1JqTWpJNFlXSXdNMlJsWkdReVpXVTRaamtTZHdvSmNtVm5hWE4wY21GeUVtbzZhR0YxZEdnd1h6QXdOMk0yTldZNE5UZG1NV016WkRVNU9XTmlObVJtTnpNM056VTZPakV5TWpCa01tUTNNekprTURReVl6STRNV05sWlRnd1pqUTRNMkZpT0RCbU0yTmlZV0UwTnpneU9EWXdaV1ExWmpSa1l6SXlPR0ZpTUROa1pXUmtNbVZsT0dZNUVuWUtDRzl3WlhKaGRHOXlFbW82YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVNbWhoZFhSb01GOHdNRGRqTmpWbU9EVTNaakZqTTJRMU9UbGpZalprWmpjek56YzFPam94TWpJd1pESmtOek15WkRBME1tTXlPREZqWldVNE1HWTBPRE5oWWpnd1pqTmpZbUZoTkRjNE1qZzJNR1ZrTldZMFpHTXlNamhoWWpBelpHVmtaREpsWlRobU9UcG9ZWFYwYURCZk1EQTNZelkxWmpnMU4yWXhZek5rTlRrNVkySTJaR1kzTXpjM05UbzZNVEl5TUdReVpEY3pNbVF3TkRKak1qZ3hZMlZsT0RCbU5EZ3pZV0k0TUdZelkySmhZVFEzT0RJNE5qQmxaRFZtTkdSak1qSTRZV0l3TTJSbFpHUXlaV1U0WmpuQVByZWEzSVRxbm80RDBqN25CUW9ETWk0eEV0OEZDa1VBMlMwRk9iSFdLRnN5YVEyVEl0K0JzVm1UbUQ4dVA2M2V1ME5JaVdrYktaM0tFUklnZ1hOZEx0WEQ4M2RMa0lTSDNaRDNLOXh1VnN4ZytyWEl6ZElvSlpoZU1NY1NGM1YwYVd4cGRIa3RjbVZuYVhOMGNua3RZWEJ3TFhZd0dvMEJDa0E0TWpjNU9HUm1NREU0TXpBeE9EVXlOekEwWmpJeE1HSTVOMkZrWVdGaVpqYzJaRE5sWTJRek4yUTRPRGxsTVdKbU9UWmlOV1l6TVdFeU1HVmxZVE0wRWdkVmRHbHNhWFI1RWdoU1pXZHBjM1J5ZVJJRFFYQndFZ0pXTUJJSFUyVnlkbWxqWlJJUlFXeHNiMk5oZEdsdmJrWmhZM1J2Y25rYUVVRnNiRzlqWVhScGIyNUdZV04wYjNKNUlzMENhc29DQ213S2FqcG9ZWFYwYURCZk1EQTNZelkxWmpnMU4yWXhZek5rTlRrNVkySTJaR1kzTXpjM05UbzZNVEl5TUdReVpEY3pNbVF3TkRKak1qZ3hZMlZsT0RCbU5EZ3pZV0k0TUdZelkySmhZVFEzT0RJNE5qQmxaRFZtTkdSak1qSTRZV0l3TTJSbFpHUXlaV1U0WmprS2JBcHFPbWhoZFhSb01GOHdNRGRqTmpWbU9EVTNaakZqTTJRMU9UbGpZalprWmpjek56YzFPam94TWpJd1pESmtOek15WkRBME1tTXlPREZqWldVNE1HWTBPRE5oWWpnd1pqTmpZbUZoTkRjNE1qZzJNR1ZrTldZMFpHTXlNamhoWWpBelpHVmtaREpsWlRobU9RcHNDbW82YUdGMWRHZ3dYekF3TjJNMk5XWTROVGRtTVdNelpEVTVPV05pTm1SbU56TTNOelU2T2pFeU1qQmtNbVEzTXpKa01EUXlZekk0TVdObFpUZ3daalE0TTJGaU9EQm1NMk5pWVdFME56Z3lPRFl3WldRMVpqUmtZekl5T0dGaU1ETmtaV1JrTW1WbE9HWTVLbWhoZFhSb01GOHdNRGRqTmpWbU9EVTNaakZqTTJRMU9UbGpZalprWmpjek56YzFPam94TWpJd1pESmtOek15WkRBME1tTXlPREZqWldVNE1HWTBPRE5oWWpnd1pqTmpZbUZoTkRjNE1qZzJNR1ZrTldZMFpHTXlNamhoWWpBelpHVmtaREpsWlRobU9UazNEWmVnOWpnR0FFSXFDaVlLSkFnQkVpQy9KR3ZwMXFYelRhcThBNGs2WGN0aVhvRzU1Z1p5TXdBczJ6VnlaOHBDVWhBZVNORGtxWnF2djVJRFVNK3MrTTY4djVJRCIsInByZXBhcmVkVHJhbnNhY3Rpb25IYXNoIjoibUxzWlpXc1paNWpsSEdkak9IalpGQmlXTGRTeTNsVGUrVGNEbEVUSGVWRT0iLCJoYXNoaW5nU2NoZW1lVmVyc2lvbiI6IkhBU0hJTkdfU0NIRU1FX1ZFUlNJT05fVjIiLCJoYXNoaW5nRGV0YWlscyI6bnVsbCwiY29zdEVzdGltYXRpb24iOnsiZXN0aW1hdGlvblRpbWVzdGFtcCI6IjIwMjYtMDItMDRUMDc6NDI6MzkuODkwMTQxWiIsImNvbmZpcm1hdGlvblJlcXVlc3RUcmFmZmljQ29zdEVzdGltYXRpb24iOjUzMzQsImNvbmZpcm1hdGlvblJlc3BvbnNlVHJhZmZpY0Nvc3RFc3RpbWF0aW9uIjo0NDgsInRvdGFsVHJhZmZpY0Nvc3RFc3RpbWF0aW9uIjo1NzgyfX0sInR4VHlwZSI6IlNlbmQiLCJwcmVwYXJlZFRyYW5zYWN0aW9uIjoiIiwicGFydHlTaWduYXR1cmVzIjp7InNpZ25hdHVyZXMiOltdfSwiZGVkdXBsaWNhdGlvblBlcmlvZCI6eyJFbXB0eSI6e319LCJzdWJtaXNzaW9uSWQiOiI5ZDRmYmIzOS05YmYwLTQ4NjQtYTIwOS02NmM1M2I0Mjk4MjgiLCJoYXNoaW5nU2NoZW1lVmVyc2lvbiI6IkhBU0hJTkdfU0NIRU1FX1ZFUlNJT05fVjIiLCJtaW5MZWRnZXJUaW1lIjp7InRpbWUiOnsiRW1wdHkiOnt9fX19'; diff --git a/modules/sdk-coin-canton/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.ts b/modules/sdk-coin-canton/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.ts new file mode 100644 index 0000000000..67a74d33f0 --- /dev/null +++ b/modules/sdk-coin-canton/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.ts @@ -0,0 +1,70 @@ +import assert from 'assert'; +import should from 'should'; + +import { coins } from '@bitgo/statics'; + +import { TransferAcceptanceBuilder, Transaction, TransferOfferWithdrawnBuilder } from '../../../../src'; +import { CantonTransferAcceptRejectRequest } from '../../../../src/lib/iface'; + +import { + CantonTokenTransferOfferWithdrawnPrepareResponse, + CantonTransferOfferWithdrawnPrepareResponse, + TransferAcceptance, +} from '../../../resources'; + +describe('Transfer Offer Withdrawn Builder', () => { + it('should get the transfer offer withdrawn request object', function () { + const txBuilder = new TransferOfferWithdrawnBuilder(coins.get('tcanton')); + const transferOfferWithdrawnTx = new Transaction(coins.get('tcanton')); + txBuilder.initBuilder(transferOfferWithdrawnTx); + txBuilder.setTransaction(CantonTransferOfferWithdrawnPrepareResponse); + const { commandId, contractId, partyId } = TransferAcceptance; + txBuilder.commandId(commandId).contractId(contractId).actAs(partyId); + const requestObj: CantonTransferAcceptRejectRequest = txBuilder.toRequestObject(); + should.exist(requestObj); + assert.equal(requestObj.commandId, commandId); + assert.equal(requestObj.contractId, contractId); + assert.equal(requestObj.actAs.length, 1); + const actAs = requestObj.actAs[0]; + assert.equal(actAs, partyId); + }); + + it('should validate raw canton transfer offer withdrawn transaction', function () { + const txBuilder = new TransferAcceptanceBuilder(coins.get('tcanton')); + const transferOfferWithdrawnTx = new Transaction(coins.get('tcanton')); + txBuilder.initBuilder(transferOfferWithdrawnTx); + txBuilder.setTransaction(CantonTransferOfferWithdrawnPrepareResponse); + txBuilder.validateRawTransaction(CantonTransferOfferWithdrawnPrepareResponse.preparedTransaction); + }); + + it('should validate raw canton token transfer offer withdrawn transaction', function () { + const txBuilder = new TransferAcceptanceBuilder(coins.get('tcanton')); + const transferOfferWithdrawnTx = new Transaction(coins.get('tcanton')); + txBuilder.initBuilder(transferOfferWithdrawnTx); + txBuilder.setTransaction(CantonTokenTransferOfferWithdrawnPrepareResponse); + txBuilder.validateRawTransaction(CantonTokenTransferOfferWithdrawnPrepareResponse.preparedTransaction); + }); + + it('should validate the transaction', function () { + const txBuilder = new TransferAcceptanceBuilder(coins.get('tcanton')); + const transferOfferWithdrawnTx = new Transaction(coins.get('tcanton')); + transferOfferWithdrawnTx.prepareCommand = CantonTransferOfferWithdrawnPrepareResponse; + txBuilder.initBuilder(transferOfferWithdrawnTx); + txBuilder.setTransaction(CantonTransferOfferWithdrawnPrepareResponse); + txBuilder.validateTransaction(transferOfferWithdrawnTx); + }); + + it('should throw error in validating raw transaction', function () { + const txBuilder = new TransferAcceptanceBuilder(coins.get('tcanton')); + const transferOfferWithdrawnTx = new Transaction(coins.get('tcanton')); + txBuilder.initBuilder(transferOfferWithdrawnTx); + const invalidPrepareResponse = CantonTransferOfferWithdrawnPrepareResponse; + invalidPrepareResponse.preparedTransactionHash = '+vlIXv6Vgd2ypPXD0mrdn7RlcSH4c2hCRj2/tXqqUVs='; + txBuilder.setTransaction(invalidPrepareResponse); + try { + txBuilder.validateRawTransaction(invalidPrepareResponse.preparedTransaction); + } catch (e) { + assert.equal(e.message, 'invalid raw transaction, hash not matching'); + } + }); +}); diff --git a/modules/sdk-core/src/account-lib/baseCoin/enum.ts b/modules/sdk-core/src/account-lib/baseCoin/enum.ts index 1c984d1a4a..9d7eb9afee 100644 --- a/modules/sdk-core/src/account-lib/baseCoin/enum.ts +++ b/modules/sdk-core/src/account-lib/baseCoin/enum.ts @@ -95,6 +95,8 @@ export enum TransactionType { TransferAcknowledge, // canton transfer reject, 2-step TransferReject, + // canton transfer offer withdrawn, 2-step + TransferOfferWithdrawn, // trx FREEZE,