From 1817931875d63bdbbf7f9a756a75da932c24b880 Mon Sep 17 00:00:00 2001
From: simplyoptimistic <111120814+simplyoptimistic@users.noreply.github.com>
Date: Fri, 23 Feb 2024 10:26:36 +1100
Subject: [PATCH] revert: "feat: update art (#139)"
This reverts commit d8097839980e2025df87c31b8108ae6c0422097c.
---
.../periphery/libraries/NFTDescriptor.sol | 43 +-
contracts/periphery/libraries/NFTSVG.sol | 392 +++++++++++++++---
.../periphery/test/NFTDescriptorTest.sol | 19 +
test/periphery/NFTDescriptor.spec.ts | 94 +++++
.../__snapshots__/NFTDescriptor.spec.ts.snap | 6 +-
.../periphery/__snapshots__/NFTDescriptor.svg | 2 +-
6 files changed, 496 insertions(+), 60 deletions(-)
diff --git a/contracts/periphery/libraries/NFTDescriptor.sol b/contracts/periphery/libraries/NFTDescriptor.sol
index bf39586..4d2f0be 100644
--- a/contracts/periphery/libraries/NFTDescriptor.sol
+++ b/contracts/periphery/libraries/NFTDescriptor.sol
@@ -403,9 +403,50 @@ library NFTDescriptor {
tickLower: params.tickLower,
tickUpper: params.tickUpper,
tickSpacing: params.tickSpacing,
- tokenId: params.tokenId
+ overRange: overRange(params.tickLower, params.tickUpper, params.tickCurrent),
+ tokenId: params.tokenId,
+ color0: tokenToColorHex(uint256(params.quoteTokenAddress), 136),
+ color1: tokenToColorHex(uint256(params.baseTokenAddress), 136),
+ color2: tokenToColorHex(uint256(params.quoteTokenAddress), 0),
+ color3: tokenToColorHex(uint256(params.baseTokenAddress), 0),
+ x1: scale(getCircleCoord(uint256(params.quoteTokenAddress), 16, params.tokenId), 0, 255, 16, 274),
+ y1: scale(getCircleCoord(uint256(params.baseTokenAddress), 16, params.tokenId), 0, 255, 100, 484),
+ x2: scale(getCircleCoord(uint256(params.quoteTokenAddress), 32, params.tokenId), 0, 255, 16, 274),
+ y2: scale(getCircleCoord(uint256(params.baseTokenAddress), 32, params.tokenId), 0, 255, 100, 484),
+ x3: scale(getCircleCoord(uint256(params.quoteTokenAddress), 48, params.tokenId), 0, 255, 16, 274),
+ y3: scale(getCircleCoord(uint256(params.baseTokenAddress), 48, params.tokenId), 0, 255, 100, 484)
});
return NFTSVG.generateSVG(svgParams);
}
+
+ function overRange(int24 tickLower, int24 tickUpper, int24 tickCurrent) private pure returns (int8) {
+ if (tickCurrent < tickLower) {
+ return -1;
+ } else if (tickCurrent > tickUpper) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+
+ function scale(uint256 n, uint256 inMn, uint256 inMx, uint256 outMn, uint256 outMx)
+ private
+ pure
+ returns (string memory)
+ {
+ return (n.sub(inMn).mul(outMx.sub(outMn)).div(inMx.sub(inMn)).add(outMn)).toString();
+ }
+
+ function tokenToColorHex(uint256 token, uint256 offset) internal pure returns (string memory str) {
+ return string((token >> offset).toHexStringNoPrefix(3));
+ }
+
+ function getCircleCoord(uint256 tokenAddress, uint256 offset, uint256 tokenId) internal pure returns (uint256) {
+ return (sliceTokenHex(tokenAddress, offset) * tokenId) % 255;
+ }
+
+ function sliceTokenHex(uint256 token, uint256 offset) internal pure returns (uint256) {
+ return uint256(uint8(token >> offset));
+ }
}
diff --git a/contracts/periphery/libraries/NFTSVG.sol b/contracts/periphery/libraries/NFTSVG.sol
index 1bb86c8..8394617 100644
--- a/contracts/periphery/libraries/NFTSVG.sol
+++ b/contracts/periphery/libraries/NFTSVG.sol
@@ -2,6 +2,7 @@
pragma solidity >=0.7.6;
import "@openzeppelin/contracts/utils/Strings.sol";
+import "contracts/core/libraries/BitMath.sol";
import "base64-sol/base64.sol";
/// @title NFTSVG
@@ -9,6 +10,15 @@ import "base64-sol/base64.sol";
library NFTSVG {
using Strings for uint256;
+ string constant curve1 = "M1 1C41 41 105 105 145 145";
+ string constant curve2 = "M1 1C33 49 97 113 145 145";
+ string constant curve3 = "M1 1C33 57 89 113 145 145";
+ string constant curve4 = "M1 1C25 65 81 121 145 145";
+ string constant curve5 = "M1 1C17 73 73 129 145 145";
+ string constant curve6 = "M1 1C9 81 65 137 145 145";
+ string constant curve7 = "M1 1C1 89 57.5 145 145 145";
+ string constant curve8 = "M1 1C1 97 49 145 145 145";
+
struct SVGParams {
string quoteToken;
string baseToken;
@@ -18,87 +28,313 @@ library NFTSVG {
int24 tickLower;
int24 tickUpper;
int24 tickSpacing;
+ int8 overRange;
uint256 tokenId;
+ string color0;
+ string color1;
+ string color2;
+ string color3;
+ string x1;
+ string y1;
+ string x2;
+ string y2;
+ string x3;
+ string y3;
}
function generateSVG(SVGParams memory params) internal pure returns (string memory svg) {
+ /*
+ address: "0xe8ab59d3bcde16a29912de83a90eb39628cfc163",
+ msg: "Forged in SVG for Uniswap in 2021 by 0xe8ab59d3bcde16a29912de83a90eb39628cfc163",
+ sig: "0x2df0e99d9cbfec33a705d83f75666d98b22dea7c1af412c584f7d626d83f02875993df740dc87563b9c73378f8462426da572d7989de88079a382ad96c57b68d1b",
+ version: "2"
+ */
return string(
abi.encodePacked(
- '"
)
);
}
- function generateArt() private pure returns (string memory svg) {
+ function generateSVGDefs(SVGParams memory params) private pure returns (string memory svg) {
svg = string(
abi.encodePacked(
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ""
+ '"
+ )
+ )
+ ),
+ '"/>"
+ )
+ )
+ ),
+ '"/>"
+ )
+ )
+ ),
+ '" />',
+ '"
+ )
+ )
+ ),
+ '" /> ',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ ' ',
+ '',
+ '',
+ ''
)
);
}
- function generateSVGDefs() private pure returns (string memory svg) {
+ function generateSVGBorderText(
+ string memory quoteToken,
+ string memory baseToken,
+ string memory quoteTokenSymbol,
+ string memory baseTokenSymbol
+ ) private pure returns (string memory svg) {
svg = string(
abi.encodePacked(
- '',
- '',
- '',
- ''
+ '',
+ '',
+ baseToken,
+ unicode" • ",
+ baseTokenSymbol,
+ ' ',
+ ' ',
+ baseToken,
+ unicode" • ",
+ baseTokenSymbol,
+ ' ',
+ '',
+ quoteToken,
+ unicode" • ",
+ quoteTokenSymbol,
+ ' ',
+ quoteToken,
+ unicode" • ",
+ quoteTokenSymbol,
+ ' '
)
);
}
- function generateGroupText(SVGParams memory params) private pure returns (string memory svg) {
- string memory symbol = string(abi.encodePacked(params.quoteTokenSymbol, "/", params.baseTokenSymbol));
- string memory id = string(abi.encodePacked("ID #", params.tokenId.toString()));
- string memory tickSpacings = string(
- abi.encodePacked(tickToString(params.tickLower), " MIN : ", tickToString(params.tickUpper), " MAX TICK")
- );
- string memory tickSpacing = string(abi.encodePacked("CL", tickToString(params.tickSpacing)));
+ function generateSVGCardMantle(
+ string memory quoteTokenSymbol,
+ string memory baseTokenSymbol,
+ string memory tickSpacing
+ ) private pure returns (string memory svg) {
svg = string(
abi.encodePacked(
- '',
- '',
- symbol,
- '',
- id,
- '',
- tickSpacings,
- ' ',
+ quoteTokenSymbol,
+ "/",
+ baseTokenSymbol,
+ '',
tickSpacing,
- '" fill="#231E33" xml:space="preserve" style="white-space: pre" font-family="Arial, sans-serif" font-size="28" font-weight="500" letter-spacing="0em">',
- tickSpacing,
- "",
- ""
+ "",
+ ''
+ )
+ );
+ }
+
+ function generageSvgCurve(int24 tickLower, int24 tickUpper, int24 tickSpacing, int8 overRange)
+ private
+ pure
+ returns (string memory svg)
+ {
+ string memory fade = overRange == 1 ? "#fade-up" : overRange == -1 ? "#fade-down" : "#none";
+ string memory curve = getCurve(tickLower, tickUpper, tickSpacing);
+ svg = string(
+ abi.encodePacked(
+ ''
+ '' '',
+ '',
+ '',
+ '',
+ generateSVGCurveCircle(overRange)
+ )
+ );
+ }
+
+ function getCurve(int24 tickLower, int24 tickUpper, int24 tickSpacing)
+ internal
+ pure
+ returns (string memory curve)
+ {
+ int24 tickRange = (tickUpper - tickLower) / tickSpacing;
+ if (tickRange <= 4) {
+ curve = curve1;
+ } else if (tickRange <= 8) {
+ curve = curve2;
+ } else if (tickRange <= 16) {
+ curve = curve3;
+ } else if (tickRange <= 32) {
+ curve = curve4;
+ } else if (tickRange <= 64) {
+ curve = curve5;
+ } else if (tickRange <= 128) {
+ curve = curve6;
+ } else if (tickRange <= 256) {
+ curve = curve7;
+ } else {
+ curve = curve8;
+ }
+ }
+
+ function generateSVGCurveCircle(int8 overRange) internal pure returns (string memory svg) {
+ string memory curvex1 = "73";
+ string memory curvey1 = "190";
+ string memory curvex2 = "217";
+ string memory curvey2 = "334";
+ if (overRange == 1 || overRange == -1) {
+ svg = string(
+ abi.encodePacked(
+ ''
+ )
+ );
+ } else {
+ svg = string(
+ abi.encodePacked(
+ '',
+ ''
+ )
+ );
+ }
+ }
+
+ function generateSVGPositionDataAndLocationCurve(string memory tokenId, int24 tickLower, int24 tickUpper)
+ private
+ pure
+ returns (string memory svg)
+ {
+ string memory tickLowerStr = tickToString(tickLower);
+ string memory tickUpperStr = tickToString(tickUpper);
+ uint256 str1length = bytes(tokenId).length + 4;
+ uint256 str2length = bytes(tickLowerStr).length + 10;
+ uint256 str3length = bytes(tickUpperStr).length + 10;
+ (string memory xCoord, string memory yCoord) = rangeLocation(tickLower, tickUpper);
+ svg = string(
+ abi.encodePacked(
+ ' ',
+ '',
+ 'ID: ',
+ tokenId,
+ "",
+ ' ',
+ '',
+ 'Min Tick: ',
+ tickLowerStr,
+ "",
+ ' ',
+ '',
+ 'Max Tick: ',
+ tickUpperStr,
+ "" '',
+ '',
+ '',
+ ''
)
);
}
@@ -111,4 +347,50 @@ library NFTSVG {
}
return string(abi.encodePacked(sign, uint256(tick).toString()));
}
+
+ function rangeLocation(int24 tickLower, int24 tickUpper) internal pure returns (string memory, string memory) {
+ int24 midPoint = (tickLower + tickUpper) / 2;
+ if (midPoint < -125_000) {
+ return ("8", "7");
+ } else if (midPoint < -75_000) {
+ return ("8", "10.5");
+ } else if (midPoint < -25_000) {
+ return ("8", "14.25");
+ } else if (midPoint < -5_000) {
+ return ("10", "18");
+ } else if (midPoint < 0) {
+ return ("11", "21");
+ } else if (midPoint < 5_000) {
+ return ("13", "23");
+ } else if (midPoint < 25_000) {
+ return ("15", "25");
+ } else if (midPoint < 75_000) {
+ return ("18", "26");
+ } else if (midPoint < 125_000) {
+ return ("21", "27");
+ } else {
+ return ("24", "27");
+ }
+ }
+
+ function generateSVGRareSparkle(uint256 tokenId, address poolAddress) private pure returns (string memory svg) {
+ if (isRare(tokenId, poolAddress)) {
+ svg = string(
+ abi.encodePacked(
+ '',
+ '',
+ ''
+ )
+ );
+ } else {
+ svg = "";
+ }
+ }
+
+ function isRare(uint256 tokenId, address poolAddress) internal pure returns (bool) {
+ bytes32 h = keccak256(abi.encodePacked(tokenId, poolAddress));
+ return uint256(h) < type(uint256).max / (1 + BitMath.mostSignificantBit(tokenId) * 2);
+ }
}
diff --git a/contracts/periphery/test/NFTDescriptorTest.sol b/contracts/periphery/test/NFTDescriptorTest.sol
index 6b75bf6..43a07c5 100644
--- a/contracts/periphery/test/NFTDescriptorTest.sol
+++ b/contracts/periphery/test/NFTDescriptorTest.sol
@@ -4,8 +4,11 @@ pragma abicoder v2;
import "../libraries/NFTDescriptor.sol";
import "../libraries/NFTSVG.sol";
+import "../libraries/HexStrings.sol";
contract NFTDescriptorTest {
+ using HexStrings for uint256;
+
function constructTokenURI(NFTDescriptor.ConstructTokenURIParams calldata params)
public
pure
@@ -53,4 +56,20 @@ contract NFTDescriptorTest {
{
return NFTDescriptor.generateSVGImage(params);
}
+
+ function tokenToColorHex(address token, uint256 offset) public pure returns (string memory) {
+ return NFTDescriptor.tokenToColorHex(uint256(token), offset);
+ }
+
+ function sliceTokenHex(address token, uint256 offset) public pure returns (uint256) {
+ return NFTDescriptor.sliceTokenHex(uint256(token), offset);
+ }
+
+ function rangeLocation(int24 tickLower, int24 tickUpper) public pure returns (string memory, string memory) {
+ return NFTSVG.rangeLocation(tickLower, tickUpper);
+ }
+
+ function isRare(uint256 tokenId, address poolAddress) public pure returns (bool) {
+ return NFTSVG.isRare(tokenId, poolAddress);
+ }
}
diff --git a/test/periphery/NFTDescriptor.spec.ts b/test/periphery/NFTDescriptor.spec.ts
index d136368..30e1dbe 100644
--- a/test/periphery/NFTDescriptor.spec.ts
+++ b/test/periphery/NFTDescriptor.spec.ts
@@ -633,6 +633,90 @@ describe('NFTDescriptor', () => {
})
})
+ describe('#tokenToColorHex', () => {
+ function tokenToColorHex(tokenAddress: string, startIndex: number): string {
+ return `${tokenAddress.slice(startIndex, startIndex + 6).toLowerCase()}`
+ }
+
+ it('returns the correct hash for the first 3 bytes of the token address', async () => {
+ expect(await nftDescriptor.tokenToColorHex(tokens[0].address, 136)).to.eq(tokenToColorHex(tokens[0].address, 2))
+ expect(await nftDescriptor.tokenToColorHex(tokens[1].address, 136)).to.eq(tokenToColorHex(tokens[1].address, 2))
+ })
+
+ it('returns the correct hash for the last 3 bytes of the address', async () => {
+ expect(await nftDescriptor.tokenToColorHex(tokens[0].address, 0)).to.eq(tokenToColorHex(tokens[0].address, 36))
+ expect(await nftDescriptor.tokenToColorHex(tokens[1].address, 0)).to.eq(tokenToColorHex(tokens[1].address, 36))
+ })
+ })
+
+ describe('#rangeLocation', () => {
+ it('returns the correct coordinates when range midpoint under -125_000', async () => {
+ const coords = await nftDescriptor.rangeLocation(-887_272, -887_100)
+ expect(coords[0]).to.eq('8')
+ expect(coords[1]).to.eq('7')
+ })
+
+ it('returns the correct coordinates when range midpoint is between -125_000 and -75_000', async () => {
+ const coords = await nftDescriptor.rangeLocation(-100_000, -90_000)
+ expect(coords[0]).to.eq('8')
+ expect(coords[1]).to.eq('10.5')
+ })
+
+ it('returns the correct coordinates when range midpoint is between -75_000 and -25_000', async () => {
+ const coords = await nftDescriptor.rangeLocation(-50_000, -20_000)
+ expect(coords[0]).to.eq('8')
+ expect(coords[1]).to.eq('14.25')
+ })
+
+ it('returns the correct coordinates when range midpoint is between -25_000 and -5_000', async () => {
+ const coords = await nftDescriptor.rangeLocation(-10_000, -5_000)
+ expect(coords[0]).to.eq('10')
+ expect(coords[1]).to.eq('18')
+ })
+
+ it('returns the correct coordinates when range midpoint is between -5_000 and 0', async () => {
+ const coords = await nftDescriptor.rangeLocation(-5_000, -4_000)
+ expect(coords[0]).to.eq('11')
+ expect(coords[1]).to.eq('21')
+ })
+
+ it('returns the correct coordinates when range midpoint is between 0 and 5_000', async () => {
+ const coords = await nftDescriptor.rangeLocation(4_000, 5_000)
+ expect(coords[0]).to.eq('13')
+ expect(coords[1]).to.eq('23')
+ })
+
+ it('returns the correct coordinates when range midpoint is between 5_000 and 25_000', async () => {
+ const coords = await nftDescriptor.rangeLocation(10_000, 15_000)
+ expect(coords[0]).to.eq('15')
+ expect(coords[1]).to.eq('25')
+ })
+
+ it('returns the correct coordinates when range midpoint is between 25_000 and 75_000', async () => {
+ const coords = await nftDescriptor.rangeLocation(25_000, 50_000)
+ expect(coords[0]).to.eq('18')
+ expect(coords[1]).to.eq('26')
+ })
+
+ it('returns the correct coordinates when range midpoint is between 75_000 and 125_000', async () => {
+ const coords = await nftDescriptor.rangeLocation(100_000, 125_000)
+ expect(coords[0]).to.eq('21')
+ expect(coords[1]).to.eq('27')
+ })
+
+ it('returns the correct coordinates when range midpoint is above 125_000', async () => {
+ const coords = await nftDescriptor.rangeLocation(200_000, 100_000)
+ expect(coords[0]).to.eq('24')
+ expect(coords[1]).to.eq('27')
+ })
+
+ it('math does not overflow on max value', async () => {
+ const coords = await nftDescriptor.rangeLocation(887_272, 887_272)
+ expect(coords[0]).to.eq('24')
+ expect(coords[1]).to.eq('27')
+ })
+ })
+
describe('#svgImage', () => {
let tokenId: number
let baseTokenAddress: string
@@ -705,6 +789,16 @@ describe('NFTDescriptor', () => {
})
})
+ describe('#isRare', () => {
+ it('returns true sometimes', async () => {
+ expect(await nftDescriptor.isRare(1, `0x${'b'.repeat(40)}`)).to.eq(true)
+ })
+
+ it('returns false sometimes', async () => {
+ expect(await nftDescriptor.isRare(2, `0x${'b'.repeat(40)}`)).to.eq(false)
+ })
+ })
+
function constructTokenMetadata(
tokenId: number,
quoteTokenAddress: string,
diff --git a/test/periphery/__snapshots__/NFTDescriptor.spec.ts.snap b/test/periphery/__snapshots__/NFTDescriptor.spec.ts.snap
index f4a92b8..3ee3541 100644
--- a/test/periphery/__snapshots__/NFTDescriptor.spec.ts.snap
+++ b/test/periphery/__snapshots__/NFTDescriptor.spec.ts.snap
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`NFTDescriptor #constructTokenURI gas 1`] = `4009329`;
+exports[`NFTDescriptor #constructTokenURI gas 1`] = `1510940`;
-exports[`NFTDescriptor #constructTokenURI snapshot matches 1`] = `"data:application/json;base64,eyJuYW1lIjoiQ0wgLSBVTkkvV0VUSCAtIDEuMDAwMDw+MS4xMDUyIiwgImRlc2NyaXB0aW9uIjoiVGhpcyBORlQgcmVwcmVzZW50cyBhIGxpcXVpZGl0eSBwb3NpdGlvbiBpbiBhIENMIFVOSS1XRVRIIHBvb2wuIFRoZSBvd25lciBvZiB0aGlzIE5GVCBjYW4gbW9kaWZ5IG9yIHJlZGVlbSB0aGUgcG9zaXRpb24uXG5cblBvb2wgQWRkcmVzczogMHhiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiXG5VTkkgQWRkcmVzczogMHhhYmNkZWFiY2RlZmFiY2RlZmFiY2RlZmFiY2RlZmFiY2RlZmFiY2RmXG5XRVRIIEFkZHJlc3M6IDB4MTIzNDU2Nzg5MDEyMzQ1Njc4OTEyMzQ1Njc4OTAxMjM0NTY3ODkwMVxuVGljayBTcGFjaW5nOiAxMFxuVG9rZW4gSUQ6IDFcblxu4pqg77iPIERJU0NMQUlNRVI6IER1ZSBkaWxpZ2VuY2UgaXMgaW1wZXJhdGl2ZSB3aGVuIGFzc2Vzc2luZyB0aGlzIE5GVC4gTWFrZSBzdXJlIHRva2VuIGFkZHJlc3NlcyBtYXRjaCB0aGUgZXhwZWN0ZWQgdG9rZW5zLCBhcyB0b2tlbiBzeW1ib2xzIG1heSBiZSBpbWl0YXRlZC4iLCAiaW1hZ2UiOiAiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpT0RBd0lpQm9aV2xuYUhROUlqZ3dNQ0lnZG1sbGQwSnZlRDBpTUNBd0lEZ3dNQ0E0TURBaUlHWnBiR3c5SW01dmJtVWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SStQR2NnYVdROUlrNUdWQ0JXWld4dklpQmpiR2x3TFhCaGRHZzlJblZ5YkNnalkyeHBjREJmTVRBNU9GODNOVFlwSWo0OGNtVmpkQ0JwWkQwaVVtVmpkR0Z1WjJ4bElERWlJSGRwWkhSb1BTSTRNREFpSUdobGFXZG9kRDBpT0RBd0lpQm1hV3hzUFNKMWNtd29JM0JoYVc1ME1GOXlZV1JwWVd4Zk1UQTVPRjgzTlRZcElpQXZQanh3WVhSb0lHbGtQU0pTWldOMFlXNW5iR1VnTWlJZ1pEMGlUVE01TkNBeU16Uk1NemswSURVMk5rd3ROUzQyTXpNMk9HVXRNRFVnTlRZMlRDMDJMakV3TXpVeVpTMHdOU0F5TXpSTU16azBJREl6TkZvaUlHWnBiR3c5SW5WeWJDZ2pjR0ZwYm5ReFgyeHBibVZoY2w4eE1EazRYemMxTmlraUlDOCtQR05wY21Oc1pTQnBaRDBpUld4c2FYQnpaU0lnWTNnOUlqTTVPUzQ0TXpjaUlHTjVQU0l6T1RrdU9ETTNJaUJ5UFNJeE5qVXVPRE0zSWlCbWFXeHNQU0lqTWpFeU9UTkJJaUF2UGp4d1lYUm9JR2xrUFNKV1pXTjBiM0lpSUdROUlrMHpPVFF1T1RRNUlESTBOaTQ1TnpSRE16azFMak15T0NBeU5Ea3VNREF5SURNNU5TNDJNaUF5TlRBdU9USTRJRE01Tmk0d09EUWdNalV5TGpnek5rTXpPVGd1T1RNNElESTJOQzQyTVRJZ05EQTBMamt5SURJM05DNDFNVFFnTkRFMExqQTRNeUF5T0RJdU5EVTJRelF4Tnk0d01EWWdNamcxSURReU1DNDBNRGtnTWpnMkxqVTJOU0EwTWpRdU5ERTFJREk0Tmk0ME5EVkROREk0TGpBeU5TQXlPRFl1TXpJMElEUXpNUzR3TXpRZ01qZzBMamM1TkNBME16TXVOalkwSURJNE1pNDBOVFpETkRNNExqQTJOU0F5TnpndU5UVTBJRFEwTUM0NE16TWdNamN6TGpZek55QTBOREl1TkRNeElESTJPQzR3TXpORE5EUXpMams1TmlBeU5qSXVOVE15SURRME5DNHlNVGtnTWpVMkxqZzNOaUEwTkRRdU5UZ2dNalV4TGpJeVF6UTBOQzQzTURFZ01qUTVMakkwTXlBME5EUXVPRE00SURJME55NHlOallnTkRRMExqazNOaUF5TkRVdU1qTTNRelExTVM0d01qY2dNalExTGpjNE55QTBOVFl1TURrNElESTBPQzR5TVRFZ05EWXdMalEwT0NBeU5USXVNak0wUXpRMk5TNDBNek1nTWpVMkxqZzBNU0EwTmpndU5USTNJREkyTWk0MklEUTNNQzQyTkRJZ01qWTRMamszT0VNME56SXVPREE0SURJM05TNDBPVFFnTkRjMExqQTRJREk0TWk0eE9UZ2dORGMwTGpVNU5pQXlPRGt1TURJelF6UTNOQzQ1TWpNZ01qa3pMalEwTVNBME56UXVPVFFnTWprM0xqZzVOQ0EwTnpRdU9UYzBJRE13TWk0ek1qbERORGMwTGprM05DQXpNRE11TURVeElEUTNOQzQwTkRFZ016QXpMamMzTXlBME56UXVNVFE1SURNd05DNDBPVFZETkRjMExqQTBOaUF6TURRdU56TTJJRFEzTXk0NE56UWdNekEwTGprNU5DQTBOek11T0RjMElETXdOUzR5TXpSRE5EYzBMakEyTXlBek1UUXVNREF5SURRM01pNDJNVGtnTXpJeUxqWTBPU0EwTnpJdU1USWdNek14TGpNMk5VTTBOeklnTXpNekxqTTFPU0EwTnpJdU1qa3lJRE16TlM0eE9Ua2dORGN6TGpFMk9TQXpNemN1TURNNFF6UTNOUzR4T1RnZ016UXhMak13TWlBME56VXVOREl4SURNME5TNDROQ0EwTnpRdU16QTBJRE0xTUM0ek5qRkRORGN6TGpJNE9TQXpOVFF1TlRBMElEUTNNaTR4TlRVZ016VTRMall4TXlBME56QXVPRFE0SURNMk1pNDJOME0wTmprdU56TXhJRE0yTmk0eE1EZ2dORFkzTGpFd01TQXpOamd1TVRjeElEUTJNeTQyT1RjZ016WTVMakl3TTBNME5qRXVPVEE1SURNMk9TNDNOVE1nTkRZd0xqZ3lOaUF6TmprdU1ETXhJRFEyTUM0ME1UTWdNelkzTGpFM05FTTBOakF1TVRNNElETTJOUzQ1TURJZ05EVTVMamt6TWlBek5qUXVOak1nTkRVNUxqWTFOeUF6TmpNdU16VTRRelExT0M0NU16VWdNell3TGpFM055QTBOVGd1TWpRM0lETTFOaTQ1T0NBME5UY3VORE01SURNMU15NDRNVGRETkRVMkxqYzJPU0F6TlRFdU1UZzJJRFExTmk0M0lETTBPQzQxTXprZ05EVTNMak16TmlBek5EVXVPVEkyUXpRMU9DNHdOelVnTXpReUxqZ3pNaUEwTlRndU1URWdNek01TGpjM01pQTBOVGN1TkRJeUlETXpOaTQyTnpkRE5EVTJMalEwTWlBek16SXVNakkxSURRMU5TNHpPVE1nTXpJM0xqYzRPU0EwTlRRdU5UTTBJRE15TXk0ek16ZERORFV6TGpnME5pQXpNVGt1TnpZeElEUTFNeTR6TmpVZ016RTJMakUxTVNBME5USXVOems0SURNeE1pNDFOVGhETkRVeUxqYzBOaUF6TVRJdU1qUTRJRFExTWk0Mk56Y2dNekV4TGprek9TQTBOVEl1TlRreElETXhNUzQwT1RKRE5EVXlMak0xTVNBek1URXVPREF4SURRMU1pNHhOemtnTXpFeExqazVNU0EwTlRJdU1ESTBJRE14TWk0eE9UZERORFE1TGpZZ016RTFMamd5TkNBME5EWXVNalkxSURNeE9DNHdOellnTkRReExqazJOeUF6TVRrdU1ETTVRelF6TkM0MU5UZ2dNekl3TGpZNE9TQTBNamN1TVRFMElETXlNUzQwT0NBME1Ua3VOVGcwSURNeU1DNHlOemRETkRFeExqWXdPQ0F6TVRrdU1EQTFJRFF3TkM0ek16WWdNekUyTGpFMk9DQXpPVGd1TkRJeUlETXhNQzQwTkRORE16azFMamswTmlBek1EZ3VNRE0zSURNNU15NDVNREVnTXpBMUxqTXdNeUF6T1RJdU1qRTJJRE13TWk0eU9UVkRNemt5TGpBeU55QXpNREV1T1RZNElETTVNUzQ0TXpnZ016QXhMalkxT1NBek9URXVORGswSURNd01TNHdPVEZETXprd0xqUTBOU0F6TURNdU1UVTBJRE00T1M0ME5qVWdNekExTGpBeU9DQXpPRGd1TlRJZ016QTJMamt3TWtNek9EY3VOVFUzSURNd09DNDNOVGtnTXpnMkxqWXhNaUF6TVRBdU5qTXlJRE00TlM0Mk5qWWdNekV5TGpVd05rTXpPRE11TVRJeUlETXhOeTQwT1RJZ016Z3hMamcxSURNeU1pNDRNRFFnTXpneUxqQTVJRE15T0M0ek9URkRNemd5TGpJMk1pQXpNekl1TkRNeElETTRNUzQwTXpjZ016TTJMakkwTnlBek56a3VPVFF4SURNek9TNDVORE5ETXpjNExqa3lOeUF6TkRJdU5EY3hJRE0zTnk0NE1TQXpORFF1T1RRMklETTNOaTQyTkRFZ016UTNMalkyTWtNek56VXVPVEF4SURNME5pNDNPRFVnTXpjMUxqSTJOU0F6TkRZdU1EazRJRE0zTkM0M01UVWdNelExTGpNMU9VTXpOek11TXpreUlETTBNeTQxT0RnZ016Y3lMak13T1NBek5ETXVNamsySURNM01DNHlPQ0F6TkRRdU1UY3lRek0yTnk0NE9TQXpORFV1TWpBMElETTJOaTQyTURFZ016UTNMakV4TWlBek5qVXVPVFE0SURNME9TNDFNVGxETXpZekxqYzVPU0F6TlRjdU5ERWdNell4TGpZNE5DQXpOalV1TXpFNElETTFPUzQxTVRnZ016Y3pMakU1TVVNek5UZ3VPVGcxSURNM05TNHdPVGtnTXpVNExqSTBOaUF6TnpZdU9UVTJJRE0xTnk0MU5ERWdNemM1TGpBek5rTXpOVFV1TlRRM0lETTNOaTR4TXpFZ016VTBMak0wTkNBek56TXVNamMzSURNMU5TNDBORFFnTXpZNUxqazVORU16TlRZdU1UWTJJRE0yTnk0NE1qY2dNelUzTGpBM055QXpOalV1TmpjNUlETTFPQzR4TkRNZ016WXpMalkxUXpNMk1TNDNOVE1nTXpVMkxqYzVNU0F6TmpNdU1UUTJJRE0wT1M0ME5TQXpOak11TVRRMklETTBNUzQ0UXpNMk15NHhORFlnTXpNMkxqQXdOeUF6TmpNdU16RTRJRE16TUM0eU5qVWdNelkxTGpBeE9TQXpNalF1TmpjNFF6TTJOUzQyTlRZZ016SXlMall4TlNBek5qWXVOREV5SURNeU1DNDFOamtnTXpZM0xqSTNNaUF6TVRndU5UYzFRek0yT0M0NE1Ua2dNekUwTGprMk5TQXpOamt1TWpRNUlETXhNUzR4TmpVZ016WTVMalF6T0NBek1EY3VNekUxUXpNMk9TNDJNU0F6TURNdU5qVXpJRE0yT1M0NE5qY2dNams1TGprNU1TQXpOamt1T1RBeUlESTVOaTR6TWpsRE16WTVMamt4T1NBeU9UTXVPRFUwSURNMk9TNDBNRE1nTWpreExqTTJNU0F6TmprdU5EY3lJREk0T0M0NU1ETkRNelk1TGpVM05TQXlPRFV1TmpjeElETTJPUzQ0TlNBeU9ESXVOREl5SURNM01DNHpORGtnTWpjNUxqSXlORU16TnpFdU1qYzNJREkzTXk0eU56WWdNemN6TGpBeE15QXlOamN1TlRVeElETTNOaTR4TlRrZ01qWXlMak0yUXpNNE1DNHpNRElnTWpVMUxqVWdNemcxTGprME1TQXlOVEF1TXpZZ016a3pMalUxTnlBeU5EY3VOVFU0UXpNNU15NDVOamtnTWpRM0xqUXdNeUF6T1RRdU16Z3lJREkwTnk0eU5Ea2dNemsxTGpBd01TQXlORGN1TURJMVRETTVOQzQ1TkRrZ01qUTJMamszTkZvaUlHWnBiR3c5SW5kb2FYUmxJaUF2UGp4d1lYUm9JR2xrUFNKV1pXTjBiM0pmTWlJZ1pEMGlUVE00TlM0eE9EVWdOREUyTGpnMFF6TTROQzR5TnpRZ05ERTRMamt3TWlBek9ETXVORFkySURReU1TNHdNelFnTXpneUxqUXhOeUEwTWpNdU1ESTRRek00TVM0MU1EWWdOREkwTGpjME55QXpPREF1TkRVM0lEUXlOaTQwTkRrZ016YzVMakU0TlNBME1qY3VPVEV4UXpNM05TNDBNRE1nTkRNeUxqSTJJRE0zTXk0ek56UWdORE0zTGpJeE1TQXpOek11TVRVeElEUTBNaTQ1T0RkRE16Y3lMamczTmlBME5UQXVORE14SURNM01DNDNPVFlnTkRVM0xqTTVNeUF6TmpjdU5USTVJRFEyTkM0d09UaERNelkwTGpJME5pQTBOekF1T0RVMElETTJNUzR4T0RZZ05EYzNMamMwT0NBek5UZ3VNekUxSURRNE5DNDJPVE5ETXpVM0xqSTBPU0EwT0RjdU1qTTNJRE0xTmk0M016TWdORGt3TGpBM05DQXpOVFl1TXpjeUlEUTVNaTQ0TWpSRE16VTFMalU1T1NBME9UZ3VOalk1SURNME9TNDRNak1nTkRrNUxqazFPU0F6TkRZdU1Ea3lJRFE1T0M0eE1UbERNelEwTGpVMk1pQTBPVGN1TXpnZ016UXpMamswTXlBME9UWXVNVGswSURNME5DNHlNREVnTkRrMExqVXdPVU16TkRVdU5ESXlJRFE0Tmk0Mk16WWdNelExTGpNM0lEUTNPQzQzTVRFZ016UTFMak14T0NBME56QXVOelk0UXpNME5TNHlPRFFnTkRZMExqQXlPU0F6TkRVdU5ESXlJRFExTnk0eU9TQXpORFV1TnpRNElEUTFNQzQxTlRGRE16UTFMamszTWlBME5EWXVNVEUySURNME55NDFNVGtnTkRReUxqQTBNaUF6TlRBdU1EazRJRFF6T0M0ek5EWkRNelUxTGpJMU5TQTBNekF1T1RNMklETTFOeTQyTVNBME1qSXVOVFEzSURNMU9DNHpPRFFnTkRFekxqWTFPVU16TlRndU9UVXhJRFF3Tnk0d01qTWdNelU1TGpVd01TQTBNREF1TXpjZ016VTVMamc1TnlBek9UTXVOekUzUXpNMk1DNHhNRE1nTXprd0xqSXlPQ0F6TmpFdU9EYzBJRE00T0M0eE5EY2dNelkwTGprMk9DQXpPRFl1T0RReFF6TTNNQzQyTnpVZ016ZzBMalExTVNBek56WXVNamdnTXpnMUxqQXpOaUF6T0RFdU56Z3hJRE00Tnk0ME1EaERNemcwTGpBMUlETTRPQzR6T0RnZ016ZzJMakkxTVNBek9Ea3VOVGMwSURNNE9DNDBNVGNnTXprd0xqYzVOVU16T1RBdU5qTTBJRE01TWk0d016TWdNemt3TGpreU55QXpPVEl1T0RBMklETTVNQzR6TkRJZ016azFMakkyTlVNek9Ea3VNell5SURNNU9TNDBNRGdnTXpnNExqTXhOQ0EwTURNdU5UVXhJRE00Tnk0ek1UWWdOREEzTGpZNU5FTXpPRFl1T0RNMUlEUXdPUzQyT0RnZ016ZzJMalEwSURReE1TNDJPVGtnTXpnMUxqazFPQ0EwTVRNdU9ETXhRek00Tmk0NE5USWdOREV6TGpJME55QXpPRGN1TlRreUlEUXhNaTQzTkRnZ016ZzRMak0wT0NBME1USXVNak15UXpNNE9TNHhPU0EwTVRNdU1UYzRJRE00T1M0Mk1ETWdOREUwTGpFeU15QXpPRGt1TlNBME1UVXVOREV6UXpNNE9DNDNNallnTkRJMExqTTFNaUF6T0RZdU9ERTRJRFF6TXk0d09EVWdNemcxTGpFek15QTBOREV1T0RkRE16Z3dMalF3TmlBME5qWXVOREU1SURNM05DNDJPREVnTkRrd0xqYzBOQ0F6TmpndU16TTNJRFV4TkM0NU1UVkRNelkwTGpZNU15QTFNamd1T0RRZ016WXdMalkzSURVME1pNDJOaklnTXpVMkxqZ3dNaUExTlRZdU5UTTFRek0xTmk0MU5EUWdOVFUzTGpRME5pQXpOVFl1TVRZMklEVTFPQzR6TURZZ016VTFMamczTkNBMU5Ua3VNakUzUXpNMU5TNDBNU0ExTmpBdU5qUTBJRE0xTkM0MU5qY2dOVFl4TGpZM05TQXpOVEl1T1RNMElEVTJNUzQ1T0RWRE16VXlMakl4TWlBMU5qRXVNalExSURNMU1TNDNNVFFnTlRZd0xqUXpOeUF6TlRFdU9EZzJJRFUxT1M0eVF6TTFNaTQwTlRNZ05UVTFMalFnTXpVeUxqa2dOVFV4TGpVNE5DQXpOVE11TXprNElEVTBOeTQzT0RWRE16VXpMalF6TXlBMU5EY3VORGMxSURNMU15NDFNVGtnTlRRM0xqRTBPU0F6TlRNdU5UZzNJRFUwTmk0NE16bERNelV6TGpjd09DQTFORFl1T0RNNUlETTFNeTQ0TkRVZ05UUTJMamczTXlBek5UTXVPVFkySURVME5pNDRPVEZNTXpVekxqUXpNeUExTlRRdU1UUTFRek0xTXk0ME16TWdOVFUwTGpFME5TQXpOVE11TlRVeklEVTFOQzR4T1RjZ016VXpMall5TWlBMU5UUXVNak14UXpNMU15NDRPVGNnTlRVekxqVTVOU0F6TlRRdU1qUXhJRFUxTWk0NU56WWdNelUwTGpRME55QTFOVEl1TXpJelF6TTFOaTQxTnprZ05UUTFMakk1TWlBek5UZ3VPVFk0SURVek9DNHpNamtnTXpZd0xqYzFOaUExTXpFdU1qTkRNelkxTGpZek9DQTFNVEV1T1RBM0lETTNNQzQwSURRNU1pNDFOamNnTXpjMExqa3pPU0EwTnpNdU1UYzFRek0zT0M0M016Z2dORFUyTGprNE1TQXpPREl1TWpRMUlEUTBNQzQzTVRnZ016ZzBMamcxT0NBME1qUXVNamd6UXpNNE5TNHhPRFVnTkRJeUxqRTROaUF6T0RVdU16VTNJRFF5TUM0d05UUWdNemcxTGpVNElEUXhOeTQ1TkVNek9EVXVOakUxSURReE55NDJNVE1nTXpnMUxqVTRJRFF4Tnk0eU5qa2dNemcxTGpVNElEUXhOaTQ1TWpWRE16ZzFMalEwTXlBME1UWXVPRGt4SURNNE5TNHpNRFVnTkRFMkxqZzNOQ0F6T0RVdU1UZzFJRFF4Tmk0NE5Gb2lJR1pwYkd3OUluZG9hWFJsSWlBdlBqeHdZWFJvSUdsa1BTSldaV04wYjNKZk15SWdaRDBpVFRRd01pNDFOalVnTkRFNUxqUXdNVU0wTURFdU16YzVJRFF5TUM0ME1UVWdOREF3TGpRek15QTBNakV1TWpJeklETTVPUzR5TmpRZ05ESXlMakl5UXpNNU9TNDROallnTkRFNUxqZ3pNU0EwTURBdU5qYzBJRFF4Tnk0NE5UUWdOREF5TGpVME9DQTBNVFl1TkRjNVF6UXdOQzQwTURRZ05ERTFMakV5TVNBME1EWXVOVGNnTkRFMUxqQXpOU0EwTURndU56TTNJRFF4TkM0NU5EbEROREE0TGpZNE5TQTBNVE11TXpZM0lEUXdOeTQxTXpNZ05ERXhMams1TWlBME1EVXVPRFkySURReE1TNDJORGhETkRBMExqZzROaUEwTVRFdU5EUXlJRFF3TXk0NE5UUWdOREV4TGpNM015QTBNREl1T0RRZ05ERXhMak0zTTBNME1ERXVNVEl4SURReE1TNHpOek1nTkRBd0xqQXlNU0EwTVRJdU1qTXlJRE01T1M0ek1UWWdOREV6TGpnek1VTXpPVFl1TURnMElEUXlNUzR4TWlBek9UTXVPVFV5SURReU9DNDNOVE1nTXpreUxqQXhJRFF6Tmk0ME56SkRNemczTGpnek1pQTBOVEl1T1RReElETTROQzQzTWlBME5qa3VOalV4SURNNE1TNDBPRGtnTkRnMkxqTXdPVU16T0RFdU5EZzVJRFE0Tmk0ek56Z2dNemd4TGpRNE9TQTBPRFl1TkRRM0lETTRNUzQwT0RrZ05EZzJMall4T1VNek9EUXVNalUySURRNE55NHpNRFlnTXpnM0xqQTFPQ0EwT0RndU1ERXhJRE00T1M0NU5EY2dORGc0TGpjek0wTXpPRGt1TlRnMklEUTVNQzR5TkRZZ016ZzVMakkwTWlBME9URXVOekEzSURNNE9DNDROalFnTkRrekxqSTNNa016T0RjdU1qRXpJRFE1TWk0NE9UTWdNemcxTGpZeE5DQTBPVEl1TlRNeUlETTROQzR3TXpNZ05Ea3lMakUzTVVNek9ESXVPVFVnTkRreExqa3pNU0F6T0RFdU9EVWdORGt4TGpZNUlETTRNQzQzTmpjZ05Ea3hMalF4TlVNek56Z3VPVGM1SURRNU1DNDVPRFVnTXpjNExqY3dOQ0EwT1RBdU5UY3pJRE0zT0M0NU56a2dORGc0TGpjMVF6TTNPUzQzTVRnZ05EZ3pMamcxTVNBek9EQXVNemN4SURRM09DNDVNelFnTXpneExqSXpNU0EwTnpRdU1ETTFRek00TkM0eE55QTBOVGN1TVRBeElETTROeTR4TnprZ05EUXdMakUyT0NBek9UQXVNakEwSURReU15NHlOVEpETXpreExqQXpJRFF4T0M0Mk1qY2dNemt5TGprNE9TQTBNVFF1TXpneElETTVOUzR5T1RNZ05ERXdMak15TkVNek9UY3VNREk1SURRd055NHlOalFnTXprNUxqTTFJRFF3TlM0NU9USWdOREF5TGpnM05DQTBNRFV1T1RSRE5EQXpMakF5T1NBME1EVXVNak0ySURRd015NHlNREVnTkRBMExqUTVOaUEwTURNdU16TTVJRFF3TXk0M05UZEROREExTGpNNE5DQXpPVE11TURRM0lEUXdOeTQwTXlBek9ESXVNek0zSURRd09TNDBOellnTXpjeExqWXlOME0wTURrdU5USTNJRE0zTVM0ek5USWdOREE1TGpVM09TQXpOekV1TURjM0lEUXdPUzQyTkRnZ016Y3dMamd3TWtNME1UQXVNVFEySURNMk9DNDROVGtnTkRFd0xqYzRNaUF6TmpndU16YzRJRFF4TWk0M05ESWdNelk0TGpZMU0wTTBNVE11T1RnZ016WTRMamd5TlNBME1UVXVNaUF6TmprdU1UVXhJRFF4Tmk0ME5UVWdNelk1TGpNMFF6UXhOeTR4T1RVZ016WTVMalEyTVNBME1UY3VNemcwSURNMk9TNDRNaklnTkRFM0xqSTBOaUF6TnpBdU5Ea3lRelF4Tmk0NU1pQXpOekl1TURreElEUXhOaTQyTkRRZ016Y3pMamN5TkNBME1UWXVNamd6SURNM05TNHpNRFpETkRFekxqazVOeUF6T0RVdU1ETTJJRFF4TVM0M01URWdNemswTGpjMk5pQTBNRGt1TkRBM0lEUXdOQzQwT1RaRE5EQTVMakF4TWlBME1EWXVNVGd4SURRd09TNHhPRE1nTkRBMkxqa3lJRFF4TUM0ME1qRWdOREEzTGpZNU5FTTBNVE11TkRRM0lEUXdPUzQxTlRFZ05ERTBMak01TWlBME1USXVNek0ySURReE5DNHhNelVnTkRFMUxqWTRPRU0wTVRJdU56YzJJRFF6TXk0eU5UY2dOREV3TGpVd055QTBOVEF1TnpBMklEUXdOeTR6TnpnZ05EWTRMakF6TlVNME1ETXVOelk0SURRNE9DNHdORFVnTXprNExqa3lJRFV3Tnk0M05EWWdNemt6TGpFeElEVXlOeTR5TWpSRE16a3dMalF5T0NBMU16WXVNVGs0SURNNE55NDNOak1nTlRRMUxqSXdOaUF6T0RRdU5qRTNJRFUxTkM0d01qVkRNemd5TGpRek5DQTFOakF1TVRRMUlETTNPUzQwT1RRZ05UWTFMams1SURNM05pNDNPVFVnTlRjeExqa3dORU16TnpVdU5EZzVJRFUzTkM0M056VWdNemN5TGpNeU5pQTFOell1TURZMElETTJPUzR6SURVM05TNHhPRGRETXpZM0xqTTVNaUExTnpRdU5qTTNJRE0yTmk0ek1Ea2dOVGN6TGpNME9DQXpOalV1T1RZMUlEVTNNUzQwTURWRE16WTFMakUxTnlBMU5qWXVPRE16SURNMk5TNDBOallnTlRZeUxqSTNOeUF6TmpVdU9UWTFJRFUxTnk0M01qRkRNelkyTGpBMU1TQTFOVFl1T0RrMklETTJOaTR4TWlBMU5UWXVNRFUwSURNMk5pNHlOVGNnTlRVMUxqSXlPRU16TmpZdU1qa3lJRFUxTkM0NU56RWdNelkyTGpRNU9DQTFOVFF1TnpNZ016WTJMamMxTmlBMU5UUXVOVEEyUXpNMk55NDBOemdnTlRVNExqTXdOaUF6TmpZdU56a2dOVFl5TGpNeU9DQXpOamt1TVRZeUlEVTJOaTR3TWpWRE16WTVMalk1TlNBMU5qUXVPVFU1SURNM01DNHlORFlnTlRZMExqRXhOaUF6TnpBdU5UVTFJRFUyTXk0eE9EaERNemMwTGprMU5pQTFORGt1TkRZNUlETTNPUzQwTkRNZ05UTTFMamMyT0NBek9ETXVOalUxSURVeU1TNDVPVGhETXpnM0xqQTFPQ0ExTVRBdU9EUXhJRE01TUM0eU9TQTBPVGt1TmpFMUlETTVNeTR5TmpRZ05EZzRMak15UXpNNU5pNDFNekVnTkRjMUxqa3dPQ0F6T1RndU9UVTFJRFEyTXk0ek1EY2dOREF3TGpnNU55QTBOVEF1TmpKRE5EQXhMamc1TkNBME5EUXVNVEExSURRd01pNDNNaUEwTXpjdU5UTTRJRFF3TXk0ME5Ua2dORE13TGprNE9FTTBNRE11TnpZNElEUXlPQzR5T0RrZ05EQXpMamMxTVNBME1qVXVOVE00SURRd015NDJOalVnTkRJeUxqZ3lNa00wTURNdU5qTXhJRFF5TVM0M01qSWdOREF6TGpBeE1pQTBNakF1TmpVMklEUXdNaTQxT0RJZ05ERTVMak00TkV3ME1ESXVOVFkxSURReE9TNDBNREZhSWlCbWFXeHNQU0ozYUdsMFpTSWdMejQ4Y0dGMGFDQnBaRDBpVm1WamRHOXlYelFpSUdROUlrMDBNVFl1TnpneUlETTFOeTQ1T1RSRE5ERTFMakE1TnlBek5UVXVOemswSURReE5TNHlNVGdnTXpVekxqTXpOU0EwTVRVdU1UZ3pJRE0xTUM0NE56ZEROREUxTGpFMk5pQXpORGt1TWpFZ05ERTFMakUwT1NBek5EY3VOVEE0SURReE5DNDRNemtnTXpRMUxqZzFOME0wTVRRdU5qRTJJRE0wTkM0Mk56RWdOREUwTGpFZ016UXpMalF4TmlBME1UTXVNemM0SURNME1pNDBOVE5ETkRFeExqY3lPQ0F6TkRBdU1qTTJJRFF3T0M0M05UUWdNelF3TGpVeE1TQTBNRGN1TWpreUlETTBNaTQ0T0RORE5EQTFMams0TmlBek5EVXVNREUxSURRd05TNHhOemdnTXpRM0xqTTNJRFF3TkM0Mk56a2dNelE1TGpneU9FTTBNRFF1TkRjeklETTFNQzQ0TkRNZ05EQTBMakU0TVNBek5URXVPRGMwSURRd015NDNPRFVnTXpVeUxqZ3lRelF3TXk0eU1UZ2dNelUwTGpFNU5TQTBNREl1TURZMklETTFOQzQ0TmpVZ05EQXdMalU0T0NBek5UUXVOamMyUXpNNU9TNHlNVE1nTXpVMExqVXdOQ0F6T1RjdU9ETTNJRE0xTkM0eU1USWdNemsyTGpRM09TQXpOVE11T0RZNFF6TTVNUzQ1TkRFZ016VXlMalk0TWlBek9EY3VOREU1SURNMU1TNDBORFFnTXpneUxqZzVPQ0F6TlRBdU1qUXhRek0zT1M0ek1EVWdNelE1TGpJM09DQXpOemd1TlRNeUlETTBOeTQzT0RNZ016YzVMamswTVNBek5EUXVNekZETXpneUxqVTNNaUF6TXpjdU56YzNJRE00TXk0NE1Ea2dNek13TGprM0lETTROQzR3TmpjZ016SXpMamszTTBNek9EUXVNamMwSURNeE9DNDBOeklnTXpnMkxqUTBJRE14TXk0NE1UTWdNemc1TGpreU9TQXpNRGt1TnpBMFF6TTVNUzQwTkRJZ016QTNMamc1T1NBek9USXVNVGd4SURNd055NDVNelFnTXprMExqQXpPQ0F6TURrdU5EWTBRek01Tmk0ek1EY2dNekV4TGpNek55QXpPVGd1TlRJMUlETXhNeTR5T0NBME1EQXVPVFE1SURNeE5DNDVNME0wTURrdU5qRXpJRE15TUM0NE1qY2dOREU1TGpFMU5DQXpNak11TmpneElEUXlPUzQyT1RNZ016SXpMakEwTlVNME16VXVNVEE0SURNeU1pNDNNVGdnTkRRd0xqTTFNU0F6TWpFdU5ERXhJRFEwTlM0MU56Y2dNekl3TGpBNE9FTTBORFl1TlRJeklETXhPUzQ0TkRjZ05EUTNMalE0TlNBek1Ua3VOakEySURRME9DNDBORGdnTXpFNUxqUXpORU0wTkRrdU5EazNJRE14T1M0eU5EVWdORFV3TGpFNE5DQXpNVGt1TmpJMElEUTFNQzQwTlRrZ016SXdMall6T0VNME5USXVOVFUzSURNeU9DNHhOamdnTkRVMExqWTNNU0F6TXpVdU5qZ2dORFUwTGpnMklETTBNeTQxTnpGRE5EVTBMamswTmlBek5EWXVPVEl6SURRMU5TNHhPRGNnTXpVd0xqSTNOU0EwTlRVdU1qTTVJRE0xTXk0Mk1qaERORFUxTGpJMU5pQXpOVFF1T0RNeElEUTFOQzQ1TWprZ016VTJMakF6TkNBME5UUXVOekl6SURNMU55NDBNamRETkRVekxqZ3lPU0F6TlRZdU56QTFJRFExTXk0eE1qUWdNelUyTGpFd015QTBOVEl1TkRBeUlETTFOUzQxTXpaRE5EUTNMak0wT0NBek5URXVOVEV6SURRME1TNDJNak1nTXpRNUxqSTVOU0EwTXpVdU1UQTRJRE0wT1M0eE1EWkRORE13TGpNeU9TQXpORGd1T1RZNUlEUXlOaTR6TkNBek5UQXVPRGMzSURReU1pNDJORFFnTXpVekxqWTBOVU0wTWpBdU9ESXlJRE0xTlM0d01ETWdOREU1TGpBek5DQXpOVFl1TXprMUlEUXhOeTR5TWprZ016VTNMamMxTkVNME1UY3VNRGt4SURNMU55NDROVGNnTkRFMkxqa3pOeUF6TlRjdU9UQTRJRFF4Tmk0M05EZ2dNelU0TGpBeE1VdzBNVFl1TnpneUlETTFOeTQ1T1RSYUlpQm1hV3hzUFNKM2FHbDBaU0lnTHo0OGNHRjBhQ0JwWkQwaVZtVmpkRzl5WHpVaUlHUTlJazAwTkRjdU16WTFJRE0zTnk0MU56VkRORFEzTGpJeU9DQXpOemd1TlRjeUlEUTBOeTR4TlRrZ016YzVMalU0TmlBME5EWXVPVEU0SURNNE1DNDFORGxETkRRMkxqWTBNeUF6T0RFdU5qWTJJRFEwTmk0eU9Ua2dNemd5TGpjNE5DQTBORFV1T0RNMUlETTRNeTQ0TXpORE5EUTBMakl4T1NBek9EY3VOVGszSURRME15NDROelVnTXpreExqVWdORFEwTGpNMElETTVOUzQxTkVNME5EUXVOalE1SURNNU9DNHpNRGdnTkRRMExqZ3dOQ0EwTURFdU1USTNJRFEwTkM0M09EY2dOREF6TGpreE1rTTBORFF1TnpZNUlEUXdPQzR4TkRFZ05EUXpMakE0TlNBME1URXVPRGN4SURRME1DNDRNVFVnTkRFMUxqTTJNVU0wTXpZdU5EZ3pJRFF5TWk0d016RWdORE14TGprNU5pQTBNamd1TlRneElEUXlOeTQ0TnlBME16VXVNemc1UXpReU5TNDNOek1nTkRNNExqZzBOQ0EwTVRrdU1qVTRJRFF6T1M0ME5EWWdOREUzTGpBd05pQTBNelF1TnpVelF6UXhOUzQxTnprZ05ETXhMamd4TXlBME1UVXVOVEkzSURReU9DNDVORElnTkRFMUxqYzFNU0EwTWpVdU9URTNRelF4Tmk0eE1qa2dOREl3TGpjMU9TQTBNVFV1TmpNZ05ERTFMalkxTXlBME1UUXVPVEkySURReE1DNDFORGhETkRFMExqUXlOeUEwTURZdU9UTTNJRFF4TkM0eE5USWdOREF6TGpNeElEUXhOUzR5TlRJZ016azVMamN6TkVNME1UVXVPRGc0SURNNU55NDJOVFFnTkRFMkxqZ3pOQ0F6T1RVdU56RXlJRFF4T0M0ME1UVWdNemswTGpJek0wTTBNakV1T1RreElETTVNQzQ1TXpNZ05ESXpMakUySURNNE5pNDRNRGNnTkRJekxqQXdOU0F6T0RJdU1EazJRelF5TWk0NU1ESWdNemM1TGpNME5pQTBNakl1T0RnMUlETTNOaTQxTnpnZ05ESXlMamszTVNBek56TXVPREZETkRJekxqQTBJRE0zTVM0M05EY2dOREkwTGpJME15QXpOekF1T0RBeUlEUXlOaTR5TlRVZ016Y3hMakU1TjBNME16SXVNVFV4SURNM01pNHpORGtnTkRNNExqQXpJRE0zTXk0MU5USWdORFF6TGpreU55QXpOelF1TnpjelF6UTBOQzQwT1RRZ016YzBMamc1TXlBME5EVXVNRFl5SURNM05TNHhNelFnTkRRMUxqVTVOU0F6TnpVdU16YzFRelEwTmk0MU1qTWdNemMxTGpjNE55QTBORGN1TURrZ016YzJMalE1TWlBME5EY3VNelkxSURNM055NDFOVGhXTXpjM0xqVTNOVm9pSUdacGJHdzlJbmRvYVhSbElpQXZQanh3WVhSb0lHbGtQU0pXWldOMGIzSmZOaUlnWkQwaVRUTTFPUzQwTXpJZ016Z3hMalEwTTBNek5Ua3VNRFUwSURNNE1DNDBNVEVnTXpVNExqZ3hNeUF6TnprdU5ETXhJRE0xT1M0eE5DQXpOemd1TWprM1F6TTJNUzQzTnlBek5qa3VNREUwSURNMk5DNHpNeklnTXpVNUxqY3hNeUF6TmpZdU9UWXlJRE0xTUM0ME0wTXpOamN1TXpJeklETTBPUzR4TnpVZ016WTNMamd6T1NBek5EY3VPVEF6SURNMk9DNDFNallnTXpRMkxqZ3dNME16TmprdU5EVTFJRE0wTlM0ek5ERWdNemN3TGprek15QXpORFF1TmpFNUlETTNNaTQyT0RjZ016UTFMakEwT1VNek56TXVNelUzSURNME5TNHlNRFFnTXpjMExqQTJNaUF6TkRVdU56TTNJRE0zTkM0ME5UY2dNelEyTGpNd05FTXpOelV1TnpFeUlETTBPQzR3T1RJZ016YzNMalEwT1NBek5Ea3VNRGc1SURNM09TNDBOaUF6TkRrdU56VTVRek00T1M0ek5qSWdNelV6TGpFeU9TQXpPVGt1TXpZM0lETTFOaTR4TURNZ05EQTVMalUyTWlBek5UZ3VORGt6UXpReU55NHpPRGtnTXpZeUxqWTFNeUEwTkRVdU1UazVJRE0yTmk0NU5URWdORFl6TGpBd09TQXpOekV1TVRoRE5EWTJMalEwTnlBek56SXVNREExSURRMk55NDJNVFlnTXpjeExqVTNOU0EwTmprdU5qazJJRE0yT0M0Mk4wTTBOekV1TVRJeklETTJOaTQyTnpZZ05EY3lMamczTnlBek5qVXVNakUwSURRM05TNDBOVFlnTXpZMUxqRTBOa00wTnpndU1qa3lJRE0yTlM0d056Y2dORGM1TGpRM09DQXpOall1TlRBMElEUTNPQzQ0TWpVZ016WTVMakkxTkVNME56Z3VNVFUxSURNM01pNHdOelFnTkRjM0xqTTRNU0F6TnpRdU9EYzJJRFEzTmk0Mk5Ua2dNemMzTGpZM09FTTBOelV1TVRnZ016Z3pMalUwSURRM015NDJNek1nTXpnNUxqTTROU0EwTnpJdU1qVTRJRE01TlM0eU5qVkRORGN4TGpZek9TQXpPVGN1T1RFeUlEUTNNUzR6TXlBME1EQXVOakk0SURRM01DNDVJRFF3TXk0ek1VTTBOekF1T0RNeElEUXdNeTQzTWpNZ05EY3dMamM1TnlBME1EUXVNVE0xSURRM01DNDNNamdnTkRBMExqVTBPRU0wTmpndU9EQXpJRFF3TkM0ek1EY2dORFkzTGpNNU15QTBNREl1TlRnNElEUTJOeTQwTWpjZ05EQXdMak14T1VNME5qY3VORGM1SURNNU5pNDFNVGtnTkRZM0xqWXhOaUF6T1RJdU56QXpJRFEyTnk0NE1qTWdNemc0TGprd05FTTBOamN1T1RjM0lETTROaTR4TlRNZ05EWTRMakk0TnlBek9ETXVOREF6SURRMk9DNDFNamNnTXpnd0xqWTJPVU0wTmpndU5qazVJRE0zT0M0Mk5UZ2dORFk0TGpNMU5pQXpOemd1TURVMklEUTJOaTR6TnprZ016YzNMall5TmtNME5Ua3VNakVnTXpjMkxqQTBOU0EwTlRJdU1EUXhJRE0zTkM0MU1UVWdORFEwTGpnM01pQXpOekl1T1RZNFF6UXlNUzQ1TWpJZ016WTNMams1T1NBek9UZ3VPVGN5SURNMk15NHdNekVnTXpjMkxqQXpPU0F6TlRndU1EWXpRek0zTlM0Mk5qRWdNelUzTGprM055QXpOelV1TWpneklETTFOeTQ0T1RFZ016YzBMamt3TkNBek5UY3VPREl5UXpNM01pNDBPQ0F6TlRjdU5ESTNJRE0zTVM0eE1EVWdNelU0TGpFeE5DQXpOekF1TVRReUlETTJNQzQwTURGRE16WTRMamcxTXlBek5qTXVORGsxSURNMk55NDJPRFFnTXpZMkxqWTFPQ0F6TmpZdU5ERXlJRE0yT1M0M05UTkRNelkxTGpBek55QXpOek11TVRJeUlETTJNeTQyTWpjZ016YzJMalEzTlNBek5qSXVNak0wSURNM09TNDRNamRETXpZeExqY3hPU0F6T0RFdU1EZ3lJRE0yTUM0Mk9EY2dNemd4TGpReU5pQXpOVGt1TkRFMUlETTRNUzQwTWpaTU16VTVMalF6TWlBek9ERXVORFF6V2lJZ1ptbHNiRDBpZDJocGRHVWlJQzgrUEhCaGRHZ2dhV1E5SWxabFkzUnZjbDgzSWlCa1BTSk5NelUyTGpJZ05USXlMamswTTBNek5UY3VNRFF6SURVeU55NDJNVGtnTXpVMkxqY3hOaUExTXpJdU1qUTBJRE0xTlM0Mk16TWdOVE0yTGpneE4wTXpOVFV1TVRnMklEVXpPQzQzTkRJZ016VTBMakV3TXlBMU16a3VOVGcwSURNMU1pNHlORFlnTlRNNUxqTTBORU16TkRZdU5qQTRJRFV6T0M0Mk1EUWdNelF3TGprMk9TQTFNemN1T0RFMElETXpOUzR6TXlBMU16WXVPVGN4UXpNek1pNHlOeUExTXpZdU5UQTNJRE16TUM0eU5ESWdOVE0wTGpReElETXlPQzQwTlRRZ05UTXlMakUwTVVNek1qY3VORFFnTlRNd0xqZzFNU0F6TWpjdU9UVTFJRFV5T1M0ek56TWdNekk0TGpnek1pQTFNamd1TVRVeVF6TXpNQzR6TVRFZ05USTJMakEzTWlBek16RXVPRGMxSURVeU5DNHdORFFnTXpNekxqTTRPQ0ExTWpFdU9UZ3hRek16TkM0Mk9UUWdOVEl3TGpJeElETXpOaTR4TWpFZ05URTRMalE1TVNBek16Y3VNalUySURVeE5pNDJNVGRETXpNNUxqQTBOQ0ExTVRNdU5qazBJRE0wTVM0M056Y2dOVEV5TGpFNE1pQXpORFF1T0RVMElEVXhNUzR5TVRsRE16UTJMalV3TlNBMU1UQXVOekF6SURNME9DNHlOVGdnTlRFd0xqUXhNU0F6TkRrdU9UYzNJRFV4TUM0eU16bERNelV4TGpVeU5DQTFNVEF1TURnMElETTFNaTQyT1RNZ05URXdMamsyTVNBek5UTXVNVFFnTlRFeUxqUTNORU16TlRRdU1UZzVJRFV4TlM0NU5qUWdNelUxTGpFMU1pQTFNVGt1TkRjeElETTFOaTR4TmpZZ05USXlMamsyVERNMU5pNHlJRFV5TWk0NU5ETmFJaUJtYVd4c1BTSjNhR2wwWlNJZ0x6NDhjR0YwYUNCcFpEMGlWbVZqZEc5eVh6Z2lJR1E5SWswek9UTXVNamd5SURNNE9TNDBOVFJETXpnMUxqa3dOeUF6T0RZdU9EYzFJRE0zT0M0Mk5USWdNemcwTGpNeE5DQXpOekV1TWpJMklETTRNUzQzTVRoRE16Y3hMall3TkNBek9ERXVNakF5SURNM01TNDVNeUF6T0RBdU56Y3pJRE0zTWk0eU5DQXpPREF1TXpRelF6TTNNeTQzTXpZZ016YzRMakl5T0NBek56VXVNeUF6TnpZdU1UWTFJRE0zTmk0M01qY2dNemN6TGprNU9VTXpOemd1TXprMElETTNNUzQwT0RrZ016YzRMak15TmlBek56QXVOamd4SURNM05pNHpOallnTXpZNExqUXlPVU16TnpVdU1URXhJRE0yTmk0NU9EVWdNemMwTGpBM09TQXpOalV1TkRJeElETTNNeTQyTlNBek5qTXVOVFEzUXpNM015NHhNVGNnTXpZeExqSTBNeUF6TnpRdU56WTNJRE0xT1M0ek1UZ2dNemMzTGpFeU1pQXpOVGt1TnpNeFF6TTRNQzR5TVRjZ016WXdMakkyTkNBek9ETXVNamMzSURNMk1TNHdNRE1nTXpnMkxqTTFOQ0F6TmpFdU5qY3pRek01TUM0MU1UUWdNell5TGpVMk55QXpPVFF1TmpreUlETTJNeTQwTnpnZ016azRMamcxTWlBek5qUXVNemN5UXpNNU9TNHdOVGdnTXpZMExqUXlOQ0F6T1RrdU1qWTBJRE0yTkM0ME5UZ2dNems1TGpRM01TQXpOalF1TlRGRE5EQXhMakkzTmlBek5qUXVPVFUzSURRd01TNDNOelFnTXpZMUxqWTVOaUEwTURFdU1qVTVJRE0yTnk0ME5qZEROREF3TGpNNU9TQXpOekF1TkRVNElETTVPUzQxTlRjZ016Y3pMalEwT1NBek9UZ3VOVEE0SURNM05pNHpOekpETXprM0xqQXpJRE00TUM0ME5EWWdNemsxTGpNM09TQXpPRFF1TkRVeElETTVNeTQzT1RnZ016ZzRMalEzTkVNek9UTXVOamMzSURNNE9DNDRNREVnTXprekxqUTRPQ0F6T0RrdU1Ea3pJRE01TXk0eU9Ua2dNemc1TGpRM01Vd3pPVE11TWpneUlETTRPUzQwTlRSYUlpQm1hV3hzUFNKM2FHbDBaU0lnTHo0OGNHRjBhQ0JwWkQwaVZtVmpkRzl5WHpraUlHUTlJazAwTWpZdU1UTTBJRFEwTnk0NE1ERkROREkyTGpZeE5TQTBORGt1TkRNMElEUXlOeTR4TVRRZ05EVXdMams1T1NBME1qY3VOVEkzSURRMU1pNDFPRU0wTWpndU56azVJRFExTnk0MU5qWWdOREk1TGpNME9TQTBOakl1TlRVeElEUXlOeTQxTWpjZ05EWTNMalUxTkVNME1qWXVORGM0SURRM01DNHpPU0EwTWpRdU9UUTRJRFEzTVM0ME1EUWdOREl4TGprMElEUTNNUzR3TnpoRE5ERTVMamcxT1NBME56QXVPRFUwSURReE55NDNOaklnTkRjd0xqY3pOQ0EwTVRVdU5qazVJRFEzTUM0ME1EZEROREV5TGpJd09TQTBOamt1T0RVM0lEUXhNQzQ0SURRMk9DNHpNamNnTkRFd0xqa3dNeUEwTmpRdU9ESkROREV4TGpBM05TQTBOVGt1TVRRM0lEUXhNUzQwTVRrZ05EVXpMalExTnlBME1URXVOemszSURRME55NDNPRFJETkRFeExqZzBPQ0EwTkRZdU9UVTVJRFF4TWk0eU1Ea2dORFExTGpnMU9DQTBNVEl1T0RJNElEUTBOUzQwTWpsRE5ERXpMalk0T0NBME5EUXVPREkzSURReE5DNDBOakVnTkRRMUxqYzVJRFF4TlM0eE5qWWdORFEyTGpNMFF6UXhPQzR5TmpFZ05EUTRMamN5T1NBME1qRXVOalEzSURRME9TNHpNVFFnTkRJMUxqTTBNeUEwTkRndU1EQTNRelF5TlM0MU16SWdORFEzTGprek9TQTBNalV1TnpNNUlEUTBOeTQ1TURRZ05ESTJMakUyT1NBME5EY3VOemcwVERReU5pNHhNelFnTkRRM0xqZ3dNVm9pSUdacGJHdzlJbmRvYVhSbElpQXZQanh3WVhSb0lHbGtQU0pXWldOMGIzSmZNVEFpSUdROUlrMDBOekl1T0RBNElETTVOeTQxTmpoRE5EY3pMakU0TmlBek9UZ3VOek0zSURRM015NDFOalVnTXprNUxqZzRPU0EwTnpNdU9USTJJRFF3TVM0d05UaERORGMwTGpVeU55QTBNRE11TURFNElEUTNNeTQ0T1RFZ05EQTBMall6TkNBME56SXVOVEUySURRd05pNHdORE5ETkRjeUxqQTFNaUEwTURZdU5USTFJRFEzTVM0MU1ESWdOREEyTGpreUlEUTNNUzR3TlRVZ05EQTNMalF3TWtNME5qa3VNek0ySURRd09TNHlNRGNnTkRZM0xqQTJOaUEwTURrdU1EVXlJRFEyTkM0NE9ETWdOREE1TGpFM01rTTBOakl1TWpBeElEUXdPUzR6TWpjZ05EVTVMalV3TWlBME1Ea3VNemsySURRMU5pNDRNaUEwTURrdU5EWTBRelExTkM0Mk1pQTBNRGt1TlRNeklEUTFNeTR3TnpNZ05EQTRMakUwTVNBME5UTXVNVEEzSURRd05TNDVOVGRETkRVekxqRTNOaUEwTURJdU5UQXlJRFExTXk0ME5URWdNems1TGpBME55QTBOVE11TlRJZ016azFMall3T0VNME5UTXVOVFUwSURNNU15NDNPRFlnTkRVMExqUXpNU0F6T1RJdU5UTXhJRFExTlM0NU5qRWdNemt4TGpreE1rTTBOVGd1T0RZMklETTVNQzQzTkRNZ05EVTVMalkwSURNNE9DNDRNelVnTkRVNExqazJPU0F6T0RVdU9EUTBRelExT0M0ME56RWdNemd6TGpZd09TQTBOVGd1TkRnNElETTRNUzR5TlRRZ05EVTRMak16TXlBek56Z3VPVFZETkRVNExqRTVOaUF6TnpjdU1ESTFJRFExT0M0NU5qa2dNemMyTGpNNE9TQTBOakF1T0RBNUlETTNOaTQ1TnpORE5EWXlMalUwTlNBek56Y3VOVEl6SURRMk5DNHlNeUF6TnpndU1qRXhJRFEyTlM0NU16SWdNemM0TGpnME4wTTBOall1T0RrMElETTNPUzR5TURnZ05EWTNMakF4TlNBek9EQXVNRFVnTkRZMkxqazVPQ0F6T0RBdU9USTNRelEyTmk0NU1USWdNemcxTGpNNU55QTBOall1T0RBNElETTRPUzQ0TmpjZ05EWTJMamN5TWlBek9UUXVNek0yUXpRMk5pNDJPRGdnTXprMkxqWXdOU0EwTmpZdU5qY3hJRE01T0M0NE56VWdORFkyTGpZNE9DQTBNREV1TVRRMFF6UTJOaTQzTURVZ05EQXpMalE0TWlBME5qZ3VNRGs0SURRd05TNHhPRFFnTkRjd0xqUXdNU0EwTURVdU56TTBRelEzTVM0Mk16a2dOREEyTGpBeU5pQTBOekV1T1RneklEUXdOUzQzTXpRZ05EY3lMakF4TnlBME1EUXVORFl5UXpRM01pNHdOVElnTkRBekxqQXdNU0EwTnpJdU1USXhJRFF3TVM0MU16a2dORGN5TGpJeU5DQTBNREF1TURjNFF6UTNNaTR5TnpVZ016azVMakkxTXlBME56SXVORFEzSURNNU9DNDBORFVnTkRjeUxqVTJOeUF6T1RjdU5qSkRORGN5TGpZMU15QXpPVGN1TmpBeklEUTNNaTQzTXprZ016azNMalU0TlNBME56SXVPREkxSURNNU55NDFOamhJTkRjeUxqZ3dPRm9pSUdacGJHdzlJbmRvYVhSbElpQXZQanh3WVhSb0lHbGtQU0pXWldOMGIzSmZNVEVpSUdROUlrMDBNVGd1TmpjeklETTFPQzQ0TVRsRE5ERTVMalE0TVNBek5UZ3VNVE15SURReU1DNHlNaUF6TlRjdU16QTNJRFF5TVM0eE16SWdNelUyTGpjNU1VTTBNalF1TVRVM0lETTFOUzR4TURZZ05ESTNMakl4TnlBek5UTXVOVEEzSURRek1DNHpNVElnTXpVeExqazJRelF6TXk0d09UY2dNelV3TGpVMk9DQTBNell1TURVeklETTFNQzQxTlRFZ05ETTVMakF5T0NBek5URXVNamN6UXpRME1pNDNNalFnTXpVeUxqRTJOaUEwTkRZdU1UazJJRE0xTXk0Mk56a2dORFE1TGpRNElETTFOUzQxT0RoRE5EVXpMak0wT0NBek5UY3VPREl5SURRMU5DNHpOaklnTXpZeExqZzNPU0EwTlRJdU1URWdNelkxTGpjNE1rTTBOVEV1TlRrMElETTJOaTQyTlRrZ05EVXdMamcxTlNBek5qY3VNRElnTkRRNUxqZ3lOQ0F6TmpZdU56YzVRelF6T1M0NE9EY2dNelkwTGpRME1TQTBNamt1T1RZNElETTJNaTR4TURNZ05ESXdMakF6TVNBek5Ua3VOelkxUXpReE9TNDJNVGtnTXpVNUxqWTJNaUEwTVRrdU1qSXpJRE0xT1M0ME1qRWdOREU0TGpneU9DQXpOVGt1TWpNeVF6UXhPQzQzTnpZZ016VTVMakE1TlNBME1UZ3VOelF5SURNMU9DNDVOVGNnTkRFNExqWTVJRE0xT0M0NE1UbElOREU0TGpZM00xb2lJR1pwYkd3OUluZG9hWFJsSWlBdlBqeHdZWFJvSUdsa1BTSldaV04wYjNKZk1USWlJR1E5SWswek5UUXVPVFl6SURRNU9TNDNNVGhETXpVMExqazRJRFV3TWk0eU5qSWdNelUwTGpZNE9DQTFNRFF1T0RreklETTFOQzR3TVRjZ05UQTNMalExTkVNek5UTXVOalUySURVd09DNDRNamtnTXpVeUxqUXpOaUExTURrdU16YzVJRE0xTVM0d05ETWdOVEE0TGprMVF6TTBPQzR3TVRjZ05UQTRMakF5TVNBek5EVXVNak15SURVd09DNDBPRFlnTXpReUxqUTJOU0ExTURrdU9UZ3hRek0wTVM0ek15QTFNVEF1TmlBek16a3VPVGc1SURVeE1DNDRNalFnTXpNNExqUTNOaUExTVRFdU16QTFRek16T0M0MU1URWdOVEExTGpnMU5TQXpNemt1TnpFMElEVXdNQzQ0TnlBek5EQXVOREU1SURRNU5TNDNPREZETXpReUxqZ3lOaUEwT1RjdU1UTTVJRE0wTkM0NU1qTWdORGs0TGpnM05pQXpORGN1TXpFeklEUTVPUzQxTWpsRE16UTVMalkyT0NBMU1EQXVNVFkxSURNMU1pNHpNeklnTkRrNUxqY3dNU0F6TlRRdU9UWXpJRFE1T1M0M01UaGFJaUJtYVd4c1BTSjNhR2wwWlNJZ0x6NDhjR0YwYUNCcFpEMGlWbVZqZEc5eVh6RXpJaUJrUFNKTk16WXhMalF3T1NBek9EUXVNalExUXpNMk5DNDRNeUF6TnpndU9UTXpJRE0yTmk0ME5qUWdNemN5TGpneklETTJPQzQ0TlRNZ016WTNMakExTkVNek5qa3VOekV6SURNMk5DNDVPVEVnTXpjd0xqYzJNU0F6TmpJdU9UazNJRE0zTVM0M01qUWdNell3TGprNE5rTXpOekV1T0RZeUlETTJNQzQyT1RNZ016Y3lMakEyT0NBek5qQXVOREU0SURNM01pNHpOemNnTXpVNUxqazFORU16TnpJdU16UXpJRE0yTVM0eE5UY2dNemN5TGpNd09TQXpOakl1TVRNM0lETTNNaTR5TnpRZ016WXpMakZETXpjeUxqSXdOU0F6TmpVdU1ESTFJRE0zTWk0NU1qY2dNelkyTGpZME1TQXpOelF1TWpVeElETTJPQzR3TVRkRE16YzJMalkwTVNBek56QXVORGt5SURNM05pNDNORFFnTXpjeExqSXhOQ0F6TnpRdU5qUTNJRE0zTXk0NU16RkRNemN4TGprME9DQXpOemN1TkRJZ016WTVMakUyTXlBek9EQXVPRFF4SURNMk5pNHpNallnTXpnMExqSXlPRU16TmpRdU5qQTNJRE00Tmk0eU56UWdNell6TGpNMU1pQXpPRFl1TWpJeUlETTJNUzQwTURrZ016ZzBMakl5T0ZZek9EUXVNalExV2lJZ1ptbHNiRDBpZDJocGRHVWlJQzgrUEhCaGRHZ2dhV1E5SWxabFkzUnZjbDh4TkNJZ1pEMGlUVFF5T0M0eE1URWdORE00TGpJNU5FTTBNamN1T0RjZ05EUXdMak0zTkNBME1qY3VOekUySURRME1pNHlORGdnTkRJM0xqUXdOaUEwTkRRdU1EZzNRelF5Tnk0eE9ETWdORFExTGpRNElEUXlOUzQ1TnprZ05EUTJMakF4TXlBME1qUXVPRFExSURRME5pNDBOemRETkRJd0xqY3hPU0EwTkRndU1UYzVJRFF4TlM0ME5ERWdORFEyTGpJek5pQTBNVE11TXprMklEUTBNaTR5TmpWRE5ERXpMakl3TmlBME5ERXVPRGczSURReE15NHdPRFlnTkRReExqUXdOaUEwTVRNdU1USWdORFF3TGprM05rTTBNVE11TXpJM0lEUXpPQzQ0TWpjZ05ERXpMall3TWlBME16WXVOamM0SURReE15NDROemNnTkRNMExqVXlPVU0wTVRNdU9URXhJRFF6TkM0eU5UUWdOREUwTGpFeE9DQTBNelF1TURFeklEUXhOQzR5TXpnZ05ETXpMamMxTmtNME1UUXVORGM1SURRek15NDVNU0EwTVRRdU56VTBJRFF6TkM0d016RWdOREUwTGprME15QTBNelF1TWpVMFF6UXhOUzQzT0RVZ05ETTFMakl4TnlBME1UWXVOVFF5SURRek5pNHpJRFF4Tnk0ME55QTBNemN1TVRrMFF6UXlNQzR6TkRFZ05ETTVMamswTkNBME1qTXVNelkySURRME1DNDBNRGtnTkRJM0xqQXhNU0EwTXpndU56YzFRelF5Tnk0ek1ETWdORE00TGpZMU5TQTBNamN1TlRjNElEUXpPQzQxTVRnZ05ESTRMakE1TkNBME16Z3VNamMzVERReU9DNHhNVEVnTkRNNExqSTVORm9pSUdacGJHdzlJbmRvYVhSbElpQXZQanh3WVhSb0lHbGtQU0pXWldOMGIzSmZNVFVpSUdROUlrMDBNVGd1TURBNElESXdNVU0wTVRFdU5qRTJJREl3TXk0MU1UVWdOREExTGpnME9TQXlNRFl1T0RZNUlEUXdNUzR3TlRVZ01qRXhMamxETXprMExqZ3dNaUF5TVRndU5EWTNJRE01TXk0ME9ESWdNakkxTGpnM015QXpPVFl1TmpjNElESXpOQzR3TkRoRE16azNMalV4TWlBeU16WXVNakUwSURNNU9TNDFNamNnTWpNM0xqZzVNU0EwTURFdU1qWTBJREl6T1M0Mk16aEROREF5TGpjNU1pQXlOREV1TVRjMUlEUXdOQzQxT1RrZ01qUXlMalV3TWlBME1EVXVOemdnTWpRMExqVTVPRU0wTURNdU1EY2dNalF5TGpjeE1pQTBNREF1TXpZeElESTBNQzQ0TWpVZ016azNMalkxTVNBeU16Z3VPVE01UXpNNU55NHpNRFFnTWpNNUxqQXdPU0F6T1RZdU9UVTJJREl6T1M0d056a2dNemsyTGpZM09DQXlNemt1TVRRNVF6TTVOeTR6TURRZ01qUXhMalV5TkNBek9UY3VPVGs0SURJME15NDVJRE01T0M0Mk1qUWdNalEyTGpJd05VTXpPVGt1TURRZ01qUTNMamMwTXlBek9Ua3VOek0xSURJME9TNHlNU0EwTURBdU1ERXpJREkxTUM0M05EZEROREF4TGpneUlESTJNUzQ1T1RZZ05EQTFMakF4TmlBeU56SXVOamcySURReE1pNDROallnTWpneExqUXhPVU0wTVRVdU9Ua3pJREk0TkM0NU1UTWdOREU1TGpVek5pQXlPRGN1TkRJNElEUXlOQzQyTURnZ01qZzJMamt6T1VNME1qZ3VNamtnTWpnMkxqVTVJRFF6TVM0eU1EZ2dNamcxTGpBMU15QTBNek11TWpJeklESTRNUzQ1TURsRE5ETTVMakExT1NBeU56SXVPREkySURRME1pNHhNVFlnTWpZeUxqZ3pOQ0EwTkRJdU16STFJREkxTWk0d056UkRORFF4TGpNMU1pQXlOVE11TVRreUlEUTBNQzR4TURFZ01qVTBMakUzSURRek9TNDBNRGNnTWpVMUxqUTVPRU0wTXpndU5qUXlJREkxTmk0NE1qWWdORE00TGpjeE1pQXlOVGd1TnpneUlEUXpOeTQzTXprZ01qVTVMamMyUXpRek5pNHhOREVnTWpZeExqSTVOeUEwTXpNdU9URTRJREkyTWk0eE16WWdORE15TGpFeE1pQXlOak11TlRNelF6UXlPUzR4TWpRZ01qWTFMamMyT1NBME1qWXVOVFV6SURJMk5pNHpPVGdnTkRJekxqa3hNeUF5TmpJdU9UYzBRelF5TWk0ek9EVWdNall4TGpBeE9DQTBNakF1T1RJMklESTJNaTQwT0RVZ05ESXdMakE1TWlBeU5qTXVPRGd5UXpReE9DNDNOeklnTWpZMkxqRTRPQ0EwTVRjdU1qUXpJREkyTmk0Mk1EY2dOREUxTGpBeUlESTJOUzR5TVVNME1UUXVNRFE0SURJMk5DNDJOVEVnTkRFeUxqa3pOaUF5TmpRdU1Ea3lJRFF4TVM0NE1qUWdNall6TGpnNE1rTTBNRGd1TURjeklESTJNeTR4TVRRZ05EQTFMamt4T1NBeU5qQXVPVFE0SURRd05DNDVORFlnTWpVM0xqRTNOVU0wTURRdU5USTVJREkxTlM0ME1qZ2dOREF5TGprek1TQXlOVFF1TURNeElEUXdNaTR3T1RjZ01qVXlMamMzTTBNME1EZ3VNRGN6SURJMU5DNDBOU0EwTVRNdU56Y2dNalUyTGpFNU55QTBNVGt1TmpBMklESTFOeTQyTmpSRE5ESXhMalF4TWlBeU5UZ3VNRGd6SURReU15NDFOallnTWpVNExqQTRNeUEwTWpVdU16Y3lJREkxTnk0MU1qUkRORE15TGpFeE1pQXlOVFV1TlRZNElEUXpPQzR5TWpZZ01qVXlMalF5TkNBME5ETXVNelkzSURJME55NDBOak5ETkRRMkxqa3hJREkwTkM0d016a2dORFEzTGpBME9TQXlORE11TWpjeElEUTBOaTR5T0RVZ01qTTNMamMxTVVNME5ESXVPVFVnTWpRd0xqSTJOaUEwTXprdU5qZzFJREkwTWk0M01USWdORE0yTGpReE9TQXlORFV1TVRVM1F6UXpOaTR5T0NBeU5EUXVPVFE0SURRek5pNHdOeklnTWpRMExqZ3dPQ0EwTXpVdU9UTXpJREkwTkM0MU9UaERORE00TGpBNE55QXlOREl1TnpFeUlEUTBNQzR4TnpFZ01qUXdMamMxTmlBME5ESXVNekkxSURJek9DNDVNemxETkRRNUxqUTRNU0F5TXpNZ05EUTVMamMxT1NBeU1qQXVOekF6SURRME15NDNPRFFnTWpFekxqYzROa00wTXpndU5ETTBJREl3Tnk0Mk16Z2dORE14TGprM015QXlNRE11TlRFMUlEUXlOQzQwSURJd01VTTBNakl1TVRjMklESXdNU0EwTWpBdU1Ea3lJREl3TVNBME1UZ3VNREE0SURJd01WcE5OREkwTGpJMk1TQXlNall1TWpJelF6UXlOQzR4T1RFZ01qTXlMakl6TWlBME1qUXVPREUySURJek9DNDBOU0EwTWpFdU9EazRJREkwTkM0ek9EbEROREU0TGpjM01pQXlNemd1TlRrZ05ERTVMakV4T1NBeU16SXVNak15SURReE9DNDJNek1nTWpJMkxqSXlNME0wTWpBdU5UYzRJREl5Tmk0eU1qTWdOREl5TGpJME5pQXlNall1TWpJeklEUXlOQzR5TmpFZ01qSTJMakl5TTFwTk5ETTBMakV5TmlBeU1qUXVOakUyUXpRek15NDVNVGdnTWpNeExqUTJNeUEwTXpJdU5EVTVJREl6Tnk0Mk1URWdOREkzTGprME15QXlOREl1TnpneVF6UXlPQzQwT1RrZ01qTTJMalF5TkNBME1qa3VNVEkwSURJek1DNHdOallnTkRJNUxqWTRJREl5TXk0Mk16aERORE13TGpnMk1TQXlNak11T1RFM0lEUXpNaTR6TWlBeU1qUXVNVGszSURRek5DNHhNallnTWpJMExqWXhObHBOTkRFeUxqQXpNeUF5TWpRdU5EYzJRelF4TXk0eU1UUWdNak13TGprM05DQTBNVFF1TXprMUlESXpOeTR5TmpJZ05ERTFMamN4TlNBeU5EUXVOVEk1UXpReE1DNHpOalVnTWpNNExqYzVPU0EwTURndU5qazRJREl6TWk0MU1URWdOREEzTGpjeU5TQXlNalV1T0RjelF6UXdPUzR6TWpNZ01qSTFMak14TkNBME1UQXVOemd5SURJeU5DNDRPVFVnTkRFeUxqQXpNeUF5TWpRdU5EYzJXazAwTWpBdU16Y2dNakEwTGpjd00wTTBNakF1T0RVMklESXdOQzQzTURNZ05ESXhMak0wTXlBeU1EUXVOak16SURReU1TNDRPVGdnTWpBMExqWXpNME0wTWpJdU5Ua3pJREl3T0M0M05UVWdOREl6TGpReU55QXlNVEl1T0RjNElEUXlNeTQzTnpRZ01qRTNMakEzUXpReU15NDRORFFnTWpFNExqRTRPQ0EwTWpJdU16ZzFJREl4T1M0ek56WWdOREl4TGpZNUlESXlNQzQxTmpORE5ESXdMamcxTmlBeU1Ua3VORFExSURReE9TNHpPVGNnTWpFNExqTTVOeUEwTVRrdU16azNJREl4Tnk0eU9FTTBNVGt1TXprM0lESXhNeTR3TVRnZ05ERTVMamsxTXlBeU1EZ3VPRGsxSURReU1DNHpOeUF5TURRdU56QXpXazAwTWpjdU56TTFJREl3Tmk0NU16bERORE14TGpRNE5pQXlNVEF1TVRVeklEUXpNaTR6T1NBeU1UTXVOemcySURRek1pNDFPVGdnTWpFM0xqazNPRU0wTWpndU56YzNJREl4Tnk0ek5Ea2dOREkzTGpZMk5TQXlNVFF1T0RNMElEUXlOeTQzTXpVZ01qQTJMamt6T1ZwTk5ERXlMamN5TnlBeU1EY3VOak00UXpReE15NDJNekVnTWpFMExqazNOQ0EwTVRJdU5URTVJREl4T0M0eU5UZ2dOREE0TGprd05pQXlNVGd1T0RnM1F6UXdPQzQyTWpnZ01qRTBMamd6TkNBME1Ea3VNekl6SURJeE1TNHlNREVnTkRFeUxqY3lOeUF5TURjdU5qTTRXazAwTURNdU1EY2dNakk1TGpnMU5rTTBNRFF1T0RBM0lESXpNeTQxTlRrZ05EQTJMakU1TnlBeU16WXVOekF6SURRd055NDNNalVnTWpNNUxqazROME0wTURJdU56SXpJREl6Tnk0NE1qRWdOREF5TGpBeU9DQXlNell1TkRJMElEUXdNeTR3TnlBeU1qa3VPRFUyV2swME16VXVNak00SURJek9TNHdOemxETkRNMkxqWXlPQ0F5TXpVdU1UWTJJRFF6Tnk0NE56Z2dNak14TGpnNE1pQTBNemt1TVRJNUlESXlPQzR6T0RsRE5EUXdMamN5TnlBeU16UXVPVFUySURRME1DNDFNVGdnTWpNMUxqWTFOU0EwTXpVdU1qTTRJREl6T1M0d056bGFUVFEwTXk0d09Ea2dNakkwTGpJMk5rTTBOREl1TkRZMElESXlOQzQwTURZZ05EUXhMamt3T0NBeU1qUXVORGMySURRME1TNHlPRE1nTWpJMExqWXhOa00wTkRBdU9EWTJJREl5TVM0NU5qRWdORFF3TGpRME9TQXlNVGt1TWpNMklEUTBNQzR3TXpJZ01qRTJMalU0TVVNME5EQXVOVEU0SURJeE5pNDFNVEVnTkRReExqQXdOU0F5TVRZdU16Y3hJRFEwTVM0ME9URWdNakUyTGpNd01VTTBOREl1TURRM0lESXhPQzQ1TlRZZ05EUXlMall3TXlBeU1qRXVOakV4SURRME15NHdPRGtnTWpJMExqSTJObHBOTXprNUxqZ3dOU0F5TVRndU1UZzRRelF3TUM0eU9URWdNakU0TGpJMU9DQTBNREF1TnpjM0lESXhPQzR6TWpnZ05EQXhMakkyTkNBeU1UZ3VNekk0UXpRd01TNHdOVFVnTWpJeExqQTFNaUEwTURBdU9EUTNJREl5TXk0M01EY2dOREF3TGpZek9DQXlNall1TkRNeVF6UXdNQzR3T0RNZ01qSTJMak0yTXlBek9Ua3VOVEkzSURJeU5pNHlPVE1nTXprNExqazNNU0F5TWpZdU1qSXpRek01T1M0eU5Ea2dNakl6TGpVMk9DQXpPVGt1TlRJM0lESXlNQzQ0TkRNZ016azVMamd3TlNBeU1UZ3VNVGc0V2lJZ1ptbHNiRDBpZDJocGRHVWlJQzgrUEM5blBqeGtaV1p6UGp4eVlXUnBZV3hIY21Ga2FXVnVkQ0JwWkQwaWNHRnBiblF3WDNKaFpHbGhiRjh4TURrNFh6YzFOaUlnWTNnOUlqQWlJR041UFNJd0lpQnlQU0l4SWlCbmNtRmthV1Z1ZEZWdWFYUnpQU0oxYzJWeVUzQmhZMlZQYmxWelpTSWdaM0poWkdsbGJuUlVjbUZ1YzJadmNtMDlJblJ5WVc1emJHRjBaU2c0TURBZ0xUVXVNRGN6T1RkbExUQTFLU0J5YjNSaGRHVW9NVE0xTGpVMktTQnpZMkZzWlNnMU9UWXVNVFFwSWo0OGMzUnZjQ0J6ZEc5d0xXTnZiRzl5UFNJak16VTBNRFV6SWlBdlBqeHpkRzl3SUc5bVpuTmxkRDBpTVNJZ2MzUnZjQzFqYjJ4dmNqMGlJekUzTVVZeVJDSWdMejQ4TDNKaFpHbGhiRWR5WVdScFpXNTBQanhzYVc1bFlYSkhjbUZrYVdWdWRDQnBaRDBpY0dGcGJuUXhYMnhwYm1WaGNsOHhNRGs0WHpjMU5pSWdlREU5SWpRNU1TSWdlVEU5SWpVMk5pSWdlREk5SWpJMkxqSXhNRElpSUhreVBTSTFOallpSUdkeVlXUnBaVzUwVlc1cGRITTlJblZ6WlhKVGNHRmpaVTl1VlhObElqNDhjM1J2Y0NCdlptWnpaWFE5SWpBdU1UUXlJaUJ6ZEc5d0xXTnZiRzl5UFNJak1qRXlPVE5CSWlBdlBqeHpkRzl3SUc5bVpuTmxkRDBpTVNJZ2MzUnZjQzFqYjJ4dmNqMGlJekl4TWprelFTSWdjM1J2Y0MxdmNHRmphWFI1UFNJd0lpQXZQand2YkdsdVpXRnlSM0poWkdsbGJuUStQQzlrWldaelBqeG5JR2xrUFNKSGNtOTFjQ0JVWlhoMElqNDhkR1Y0ZENCcFpEMGlWVTVKTDFkRlZFZ2lJR1pwYkd3OUlpTkdNMFkwUmpZaUlIaHRiRHB6Y0dGalpUMGljSEpsYzJWeWRtVWlJSE4wZVd4bFBTSjNhR2wwWlMxemNHRmpaVG9nY0hKbElpQm1iMjUwTFdaaGJXbHNlVDBpUVhKcFlXd3NJSE5oYm5NdGMyVnlhV1lpSUdadmJuUXRjMmw2WlQwaU5EZ2lJR1p2Ym5RdGQyVnBaMmgwUFNJNE1EQWlJR3hsZEhSbGNpMXpjR0ZqYVc1blBTSXdaVzBpUGp4MGMzQmhiaUI0UFNJMU5TSWdlVDBpTVRBeUlqNVZUa2t2VjBWVVNEd3ZkSE53WVc0K1BDOTBaWGgwUGp4MFpYaDBJR2xrUFNKSlJDQWpNU0lnWm1sc2JEMGlJMFl6UmpSR05pSWdlRzFzT25Od1lXTmxQU0p3Y21WelpYSjJaU0lnYzNSNWJHVTlJbmRvYVhSbExYTndZV05sT2lCd2NtVWlJR1p2Ym5RdFptRnRhV3g1UFNKQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmlJZ1ptOXVkQzF6YVhwbFBTSXlPQ0lnWm05dWRDMTNaV2xuYUhROUlqVXdNQ0lnYkdWMGRHVnlMWE53WVdOcGJtYzlJakJsYlNJK1BIUnpjR0Z1SUhnOUlqVTFJaUI1UFNJM05EQWlQa2xFSUNNeFBDOTBjM0JoYmo0OEwzUmxlSFErUEhSbGVIUWdhV1E5SWpBZ1RVbE9JQ0E2SUNBeE1EQXdJRTFCV0NCVVNVTkxJaUJtYVd4c1BTSWpSak5HTkVZMklpQjRiV3c2YzNCaFkyVTlJbkJ5WlhObGNuWmxJaUJ6ZEhsc1pUMGlkMmhwZEdVdGMzQmhZMlU2SUhCeVpTSWdabTl1ZEMxbVlXMXBiSGs5SWtGeWFXRnNMQ0J6WVc1ekxYTmxjbWxtSWlCbWIyNTBMWE5wZW1VOUlqSTRJaUJtYjI1MExYZGxhV2RvZEQwaU5UQXdJaUJzWlhSMFpYSXRjM0JoWTJsdVp6MGlNR1Z0SWo0OGRITndZVzRnZUQwaU16WXdJaUI1UFNJM05EQWlQakFnVFVsT0lDQTZJQ0F4TURBd0lFMUJXQ0JVU1VOTFBDOTBjM0JoYmo0OEwzUmxlSFErUEhKbFkzUWdhV1E5SWxKbFkzUmhibWRzWlNBeE56UWlJSGc5SWpVME9DSWdlVDBpTlRZaUlIZHBaSFJvUFNJeE9UWWlJR2hsYVdkb2REMGlOakVpSUhKNFBTSTRJaUJtYVd4c1BTSWpSak5HTkVZMklpQXZQangwWlhoMElHbGtQU0pEVERFd0lpQm1hV3hzUFNJak1qTXhSVE16SWlCNGJXdzZjM0JoWTJVOUluQnlaWE5sY25abElpQnpkSGxzWlQwaWQyaHBkR1V0YzNCaFkyVTZJSEJ5WlNJZ1ptOXVkQzFtWVcxcGJIazlJa0Z5YVdGc0xDQnpZVzV6TFhObGNtbG1JaUJtYjI1MExYTnBlbVU5SWpJNElpQm1iMjUwTFhkbGFXZG9kRDBpTlRBd0lpQnNaWFIwWlhJdGMzQmhZMmx1WnowaU1HVnRJajQ4ZEhOd1lXNGdlRDBpTlRrNElpQjVQU0k1TnlJK1Ewd3hNRHd2ZEhOd1lXNCtQQzkwWlhoMFBqd3ZaejQ4TDNOMlp6ND0ifQ=="`;
+exports[`NFTDescriptor #constructTokenURI snapshot matches 1`] = `"data:application/json;base64,eyJuYW1lIjoiQ0wgLSBVTkkvV0VUSCAtIDEuMDAwMDw+MS4xMDUyIiwgImRlc2NyaXB0aW9uIjoiVGhpcyBORlQgcmVwcmVzZW50cyBhIGxpcXVpZGl0eSBwb3NpdGlvbiBpbiBhIENMIFVOSS1XRVRIIHBvb2wuIFRoZSBvd25lciBvZiB0aGlzIE5GVCBjYW4gbW9kaWZ5IG9yIHJlZGVlbSB0aGUgcG9zaXRpb24uXG5cblBvb2wgQWRkcmVzczogMHhiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiXG5VTkkgQWRkcmVzczogMHhhYmNkZWFiY2RlZmFiY2RlZmFiY2RlZmFiY2RlZmFiY2RlZmFiY2RmXG5XRVRIIEFkZHJlc3M6IDB4MTIzNDU2Nzg5MDEyMzQ1Njc4OTEyMzQ1Njc4OTAxMjM0NTY3ODkwMVxuVGljayBTcGFjaW5nOiAxMFxuVG9rZW4gSUQ6IDFcblxu4pqg77iPIERJU0NMQUlNRVI6IER1ZSBkaWxpZ2VuY2UgaXMgaW1wZXJhdGl2ZSB3aGVuIGFzc2Vzc2luZyB0aGlzIE5GVC4gTWFrZSBzdXJlIHRva2VuIGFkZHJlc3NlcyBtYXRjaCB0aGUgZXhwZWN0ZWQgdG9rZW5zLCBhcyB0b2tlbiBzeW1ib2xzIG1heSBiZSBpbWl0YXRlZC4iLCAiaW1hZ2UiOiAiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWprd0lpQm9aV2xuYUhROUlqVXdNQ0lnZG1sbGQwSnZlRDBpTUNBd0lESTVNQ0ExTURBaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlKMmgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNuUGp4a1pXWnpQanhtYVd4MFpYSWdhV1E5SW1ZeElqNDhabVZKYldGblpTQnlaWE4xYkhROUluQXdJaUI0YkdsdWF6cG9jbVZtUFNKa1lYUmhPbWx0WVdkbEwzTjJaeXQ0Yld3N1ltRnpaVFkwTEZCSVRqSmFlVUl6WVZkU01HRkVNRzVOYW10M1NubENiMXBYYkc1aFNGRTVTbnBWZDAxRFkyZGtiV3hzWkRCS2RtVkVNRzVOUTBGM1NVUkpOVTFEUVRGTlJFRnVTVWhvZEdKSE5YcFFVMlJ2WkVoU2QwOXBPSFprTTJRelRHNWpla3h0T1hsYWVUaDVUVVJCZDB3elRqSmFlV01yVUVoS2JGa3pVV2RrTW14clpFZG5PVXA2U1RWTlNFSTBTbmxDYjFwWGJHNWhTRkU1U25wVmQwMUlRalJLZVVKdFlWZDRjMUJUWTJwWlYwcHFXa2RXYUVwNU9DdFFRemw2Wkcxakt5SXZQanhtWlVsdFlXZGxJSEpsYzNWc2REMGljREVpSUhoc2FXNXJPbWh5WldZOUltUmhkR0U2YVcxaFoyVXZjM1puSzNodGJEdGlZWE5sTmpRc1VFaE9NbHA1UWpOaFYxSXdZVVF3YmsxcWEzZEtlVUp2V2xkc2JtRklVVGxLZWxWM1RVTmpaMlJ0Ykd4a01FcDJaVVF3YmsxRFFYZEpSRWsxVFVOQk1VMUVRVzVKU0doMFlrYzFlbEJUWkc5a1NGSjNUMms0ZG1RelpETk1ibU42VEcwNWVWcDVPSGxOUkVGM1RETk9NbHA1WXl0UVIwNXdZMjFPYzFwVFFtcGxSREJ1VFdwWk5FcDVRbXBsVkRCdVRXcFZNVXA1UW5sUVUyTjRUV3BDZDJWRFkyZGFiV3h6WWtRd2JrbDZSWGxOZWxFeFRtbGpkbEJxZDNaak0xcHVVR2M5UFNJdlBqeG1aVWx0WVdkbElISmxjM1ZzZEQwaWNESWlJSGhzYVc1ck9taHlaV1k5SW1SaGRHRTZhVzFoWjJVdmMzWm5LM2h0YkR0aVlYTmxOalFzVUVoT01scDVRak5oVjFJd1lVUXdiazFxYTNkS2VVSnZXbGRzYm1GSVVUbEtlbFYzVFVOaloyUnRiR3hrTUVwMlpVUXdiazFEUVhkSlJFazFUVU5CTVUxRVFXNUpTR2gwWWtjMWVsQlRaRzlrU0ZKM1QyazRkbVF6WkROTWJtTjZURzA1ZVZwNU9IbE5SRUYzVEROT01scDVZeXRRUjA1d1kyMU9jMXBUUW1wbFJEQnVUV3BCTWtwNVFtcGxWREJ1VFZSVmVVcDVRbmxRVTJONFRXcENkMlZEWTJkYWJXeHpZa1F3YmtreVdtaFpiVTVyV21samRsQnFkM1pqTTFwdVVHYzlQU0lnTHo0OFptVkpiV0ZuWlNCeVpYTjFiSFE5SW5BeklpQjRiR2x1YXpwb2NtVm1QU0prWVhSaE9tbHRZV2RsTDNOMlp5dDRiV3c3WW1GelpUWTBMRkJJVGpKYWVVSXpZVmRTTUdGRU1HNU5hbXQzU25sQ2IxcFhiRzVoU0ZFNVNucFZkMDFEWTJka2JXeHNaREJLZG1WRU1HNU5RMEYzU1VSSk5VMURRVEZOUkVGdVNVaG9kR0pITlhwUVUyUnZaRWhTZDA5cE9IWmtNMlF6VEc1amVreHRPWGxhZVRoNVRVUkJkMHd6VGpKYWVXTXJVRWRPY0dOdFRuTmFVMEpxWlVRd2JrMXFVWGRLZVVKcVpWUXdiazE2UVRKS2VVSjVVRk5qZUUxRVFuZGxRMk5uV20xc2MySkVNRzVKZWxrelQwUnJkMDFUWTNaUWFuZDJZek5hYmxCblBUMGlJQzgrUEdabFFteGxibVFnYlc5a1pUMGliM1psY214aGVTSWdhVzQ5SW5Bd0lpQnBiakk5SW5BeElpQXZQanhtWlVKc1pXNWtJRzF2WkdVOUltVjRZMngxYzJsdmJpSWdhVzR5UFNKd01pSWdMejQ4Wm1WQ2JHVnVaQ0J0YjJSbFBTSnZkbVZ5YkdGNUlpQnBiakk5SW5BeklpQnlaWE4xYkhROUltSnNaVzVrVDNWMElpQXZQanhtWlVkaGRYTnphV0Z1UW14MWNpQnBiajBpWW14bGJtUlBkWFFpSUhOMFpFUmxkbWxoZEdsdmJqMGlORElpSUM4K1BDOW1hV3gwWlhJK0lEeGpiR2x3VUdGMGFDQnBaRDBpWTI5eWJtVnljeUkrUEhKbFkzUWdkMmxrZEdnOUlqSTVNQ0lnYUdWcFoyaDBQU0kxTURBaUlISjRQU0kwTWlJZ2NuazlJalF5SWlBdlBqd3ZZMnhwY0ZCaGRHZytQSEJoZEdnZ2FXUTlJblJsZUhRdGNHRjBhQzFoSWlCa1BTSk5OREFnTVRJZ1NESTFNQ0JCTWpnZ01qZ2dNQ0F3SURFZ01qYzRJRFF3SUZZME5qQWdRVEk0SURJNElEQWdNQ0F4SURJMU1DQTBPRGdnU0RRd0lFRXlPQ0F5T0NBd0lEQWdNU0F4TWlBME5qQWdWalF3SUVFeU9DQXlPQ0F3SURBZ01TQTBNQ0F4TWlCNklpQXZQanh3WVhSb0lHbGtQU0p0YVc1cGJXRndJaUJrUFNKTk1qTTBJRFEwTkVNeU16UWdORFUzTGprME9TQXlOREl1TWpFZ05EWXpJREkxTXlBME5qTWlJQzgrUEdacGJIUmxjaUJwWkQwaWRHOXdMWEpsWjJsdmJpMWliSFZ5SWo0OFptVkhZWFZ6YzJsaGJrSnNkWElnYVc0OUlsTnZkWEpqWlVkeVlYQm9hV01pSUhOMFpFUmxkbWxoZEdsdmJqMGlNalFpSUM4K1BDOW1hV3gwWlhJK1BHeHBibVZoY2tkeVlXUnBaVzUwSUdsa1BTSm5jbUZrTFhWd0lpQjRNVDBpTVNJZ2VESTlJakFpSUhreFBTSXhJaUI1TWowaU1DSStQSE4wYjNBZ2IyWm1jMlYwUFNJd0xqQWlJSE4wYjNBdFkyOXNiM0k5SW5kb2FYUmxJaUJ6ZEc5d0xXOXdZV05wZEhrOUlqRWlJQzgrUEhOMGIzQWdiMlptYzJWMFBTSXVPU0lnYzNSdmNDMWpiMnh2Y2owaWQyaHBkR1VpSUhOMGIzQXRiM0JoWTJsMGVUMGlNQ0lnTHo0OEwyeHBibVZoY2tkeVlXUnBaVzUwUGp4c2FXNWxZWEpIY21Ga2FXVnVkQ0JwWkQwaVozSmhaQzFrYjNkdUlpQjRNVDBpTUNJZ2VESTlJakVpSUhreFBTSXdJaUI1TWowaU1TSStQSE4wYjNBZ2IyWm1jMlYwUFNJd0xqQWlJSE4wYjNBdFkyOXNiM0k5SW5kb2FYUmxJaUJ6ZEc5d0xXOXdZV05wZEhrOUlqRWlJQzgrUEhOMGIzQWdiMlptYzJWMFBTSXdMamtpSUhOMGIzQXRZMjlzYjNJOUluZG9hWFJsSWlCemRHOXdMVzl3WVdOcGRIazlJakFpSUM4K1BDOXNhVzVsWVhKSGNtRmthV1Z1ZEQ0OGJXRnpheUJwWkQwaVptRmtaUzExY0NJZ2JXRnphME52Ym5SbGJuUlZibWwwY3owaWIySnFaV04wUW05MWJtUnBibWRDYjNnaVBqeHlaV04wSUhkcFpIUm9QU0l4SWlCb1pXbG5hSFE5SWpFaUlHWnBiR3c5SW5WeWJDZ2paM0poWkMxMWNDa2lJQzgrUEM5dFlYTnJQanh0WVhOcklHbGtQU0ptWVdSbExXUnZkMjRpSUcxaGMydERiMjUwWlc1MFZXNXBkSE05SW05aWFtVmpkRUp2ZFc1a2FXNW5RbTk0SWo0OGNtVmpkQ0IzYVdSMGFEMGlNU0lnYUdWcFoyaDBQU0l4SWlCbWFXeHNQU0oxY213b0kyZHlZV1F0Wkc5M2Jpa2lJQzgrUEM5dFlYTnJQanh0WVhOcklHbGtQU0p1YjI1bElpQnRZWE5yUTI5dWRHVnVkRlZ1YVhSelBTSnZZbXBsWTNSQ2IzVnVaR2x1WjBKdmVDSStQSEpsWTNRZ2QybGtkR2c5SWpFaUlHaGxhV2RvZEQwaU1TSWdabWxzYkQwaWQyaHBkR1VpSUM4K1BDOXRZWE5yUGp4c2FXNWxZWEpIY21Ga2FXVnVkQ0JwWkQwaVozSmhaQzF6ZVcxaWIyd2lQanh6ZEc5d0lHOW1abk5sZEQwaU1DNDNJaUJ6ZEc5d0xXTnZiRzl5UFNKM2FHbDBaU0lnYzNSdmNDMXZjR0ZqYVhSNVBTSXhJaUF2UGp4emRHOXdJRzltWm5ObGREMGlMamsxSWlCemRHOXdMV052Ykc5eVBTSjNhR2wwWlNJZ2MzUnZjQzF2Y0dGamFYUjVQU0l3SWlBdlBqd3ZiR2x1WldGeVIzSmhaR2xsYm5RK1BHMWhjMnNnYVdROUltWmhaR1V0YzNsdFltOXNJaUJ0WVhOclEyOXVkR1Z1ZEZWdWFYUnpQU0oxYzJWeVUzQmhZMlZQYmxWelpTSStQSEpsWTNRZ2QybGtkR2c5SWpJNU1IQjRJaUJvWldsbmFIUTlJakl3TUhCNElpQm1hV3hzUFNKMWNtd29JMmR5WVdRdGMzbHRZbTlzS1NJZ0x6NDhMMjFoYzJzK1BDOWtaV1p6UGp4bklHTnNhWEF0Y0dGMGFEMGlkWEpzS0NOamIzSnVaWEp6S1NJK1BISmxZM1FnWm1sc2JEMGlZV0pqWkdWaElpQjRQU0l3Y0hnaUlIazlJakJ3ZUNJZ2QybGtkR2c5SWpJNU1IQjRJaUJvWldsbmFIUTlJalV3TUhCNElpQXZQanh5WldOMElITjBlV3hsUFNKbWFXeDBaWEk2SUhWeWJDZ2paakVwSWlCNFBTSXdjSGdpSUhrOUlqQndlQ0lnZDJsa2RHZzlJakk1TUhCNElpQm9aV2xuYUhROUlqVXdNSEI0SWlBdlBpQThaeUJ6ZEhsc1pUMGlabWxzZEdWeU9uVnliQ2dqZEc5d0xYSmxaMmx2YmkxaWJIVnlLVHNnZEhKaGJuTm1iM0p0T25OallXeGxLREV1TlNrN0lIUnlZVzV6Wm05eWJTMXZjbWxuYVc0NlkyVnVkR1Z5SUhSdmNEc2lQanh5WldOMElHWnBiR3c5SW01dmJtVWlJSGc5SWpCd2VDSWdlVDBpTUhCNElpQjNhV1IwYUQwaU1qa3djSGdpSUdobGFXZG9kRDBpTlRBd2NIZ2lJQzgrUEdWc2JHbHdjMlVnWTNnOUlqVXdKU0lnWTNrOUlqQndlQ0lnY25nOUlqRTRNSEI0SWlCeWVUMGlNVEl3Y0hnaUlHWnBiR3c5SWlNd01EQWlJRzl3WVdOcGRIazlJakF1T0RVaUlDOCtQQzluUGp4eVpXTjBJSGc5SWpBaUlIazlJakFpSUhkcFpIUm9QU0l5T1RBaUlHaGxhV2RvZEQwaU5UQXdJaUJ5ZUQwaU5ESWlJSEo1UFNJME1pSWdabWxzYkQwaWNtZGlZU2d3TERBc01Dd3dLU0lnYzNSeWIydGxQU0p5WjJKaEtESTFOU3d5TlRVc01qVTFMREF1TWlraUlDOCtQQzluUGp4MFpYaDBJSFJsZUhRdGNtVnVaR1Z5YVc1blBTSnZjSFJwYldsNlpWTndaV1ZrSWo0OGRHVjRkRkJoZEdnZ2MzUmhjblJQWm1aelpYUTlJaTB4TURBbElpQm1hV3hzUFNKM2FHbDBaU0lnWm05dWRDMW1ZVzFwYkhrOUlpZERiM1Z5YVdWeUlFNWxkeWNzSUcxdmJtOXpjR0ZqWlNJZ1ptOXVkQzF6YVhwbFBTSXhNSEI0SWlCNGJHbHVhenBvY21WbVBTSWpkR1Y0ZEMxd1lYUm9MV0VpUGpCNE1USXpORFUyTnpnNU1ERXlNelExTmpjNE9URXlNelExTmpjNE9UQXhNak0wTlRZM09Ea3dNU0RpZ0tJZ1YwVlVTQ0E4WVc1cGJXRjBaU0JoWkdScGRHbDJaVDBpYzNWdElpQmhkSFJ5YVdKMWRHVk9ZVzFsUFNKemRHRnlkRTltWm5ObGRDSWdabkp2YlQwaU1DVWlJSFJ2UFNJeE1EQWxJaUJpWldkcGJqMGlNSE1pSUdSMWNqMGlNekJ6SWlCeVpYQmxZWFJEYjNWdWREMGlhVzVrWldacGJtbDBaU0lnTHo0OEwzUmxlSFJRWVhSb1BpQThkR1Y0ZEZCaGRHZ2djM1JoY25SUFptWnpaWFE5SWpBbElpQm1hV3hzUFNKM2FHbDBaU0lnWm05dWRDMW1ZVzFwYkhrOUlpZERiM1Z5YVdWeUlFNWxkeWNzSUcxdmJtOXpjR0ZqWlNJZ1ptOXVkQzF6YVhwbFBTSXhNSEI0SWlCNGJHbHVhenBvY21WbVBTSWpkR1Y0ZEMxd1lYUm9MV0VpUGpCNE1USXpORFUyTnpnNU1ERXlNelExTmpjNE9URXlNelExTmpjNE9UQXhNak0wTlRZM09Ea3dNU0RpZ0tJZ1YwVlVTQ0E4WVc1cGJXRjBaU0JoWkdScGRHbDJaVDBpYzNWdElpQmhkSFJ5YVdKMWRHVk9ZVzFsUFNKemRHRnlkRTltWm5ObGRDSWdabkp2YlQwaU1DVWlJSFJ2UFNJeE1EQWxJaUJpWldkcGJqMGlNSE1pSUdSMWNqMGlNekJ6SWlCeVpYQmxZWFJEYjNWdWREMGlhVzVrWldacGJtbDBaU0lnTHo0Z1BDOTBaWGgwVUdGMGFENDhkR1Y0ZEZCaGRHZ2djM1JoY25SUFptWnpaWFE5SWpVd0pTSWdabWxzYkQwaWQyaHBkR1VpSUdadmJuUXRabUZ0YVd4NVBTSW5RMjkxY21sbGNpQk9aWGNuTENCdGIyNXZjM0JoWTJVaUlHWnZiblF0YzJsNlpUMGlNVEJ3ZUNJZ2VHeHBibXM2YUhKbFpqMGlJM1JsZUhRdGNHRjBhQzFoSWo0d2VHRmlZMlJsWVdKalpHVm1ZV0pqWkdWbVlXSmpaR1ZtWVdKalpHVm1ZV0pqWkdWbVlXSmpaR1lnNG9DaUlGVk9TU0E4WVc1cGJXRjBaU0JoWkdScGRHbDJaVDBpYzNWdElpQmhkSFJ5YVdKMWRHVk9ZVzFsUFNKemRHRnlkRTltWm5ObGRDSWdabkp2YlQwaU1DVWlJSFJ2UFNJeE1EQWxJaUJpWldkcGJqMGlNSE1pSUdSMWNqMGlNekJ6SWlCeVpYQmxZWFJEYjNWdWREMGlhVzVrWldacGJtbDBaU0lnTHo0OEwzUmxlSFJRWVhSb1BqeDBaWGgwVUdGMGFDQnpkR0Z5ZEU5bVpuTmxkRDBpTFRVd0pTSWdabWxzYkQwaWQyaHBkR1VpSUdadmJuUXRabUZ0YVd4NVBTSW5RMjkxY21sbGNpQk9aWGNuTENCdGIyNXZjM0JoWTJVaUlHWnZiblF0YzJsNlpUMGlNVEJ3ZUNJZ2VHeHBibXM2YUhKbFpqMGlJM1JsZUhRdGNHRjBhQzFoSWo0d2VHRmlZMlJsWVdKalpHVm1ZV0pqWkdWbVlXSmpaR1ZtWVdKalpHVm1ZV0pqWkdWbVlXSmpaR1lnNG9DaUlGVk9TU0E4WVc1cGJXRjBaU0JoWkdScGRHbDJaVDBpYzNWdElpQmhkSFJ5YVdKMWRHVk9ZVzFsUFNKemRHRnlkRTltWm5ObGRDSWdabkp2YlQwaU1DVWlJSFJ2UFNJeE1EQWxJaUJpWldkcGJqMGlNSE1pSUdSMWNqMGlNekJ6SWlCeVpYQmxZWFJEYjNWdWREMGlhVzVrWldacGJtbDBaU0lnTHo0OEwzUmxlSFJRWVhSb1Bqd3ZkR1Y0ZEQ0OFp5QnRZWE5yUFNKMWNtd29JMlpoWkdVdGMzbHRZbTlzS1NJK1BISmxZM1FnWm1sc2JEMGlibTl1WlNJZ2VEMGlNSEI0SWlCNVBTSXdjSGdpSUhkcFpIUm9QU0l5T1RCd2VDSWdhR1ZwWjJoMFBTSXlNREJ3ZUNJZ0x6NGdQSFJsZUhRZ2VUMGlOekJ3ZUNJZ2VEMGlNekp3ZUNJZ1ptbHNiRDBpZDJocGRHVWlJR1p2Ym5RdFptRnRhV3g1UFNJblEyOTFjbWxsY2lCT1pYY25MQ0J0YjI1dmMzQmhZMlVpSUdadmJuUXRkMlZwWjJoMFBTSXlNREFpSUdadmJuUXRjMmw2WlQwaU16WndlQ0krVlU1SkwxZEZWRWc4TDNSbGVIUStQSFJsZUhRZ2VUMGlNVEUxY0hnaUlIZzlJak15Y0hnaUlHWnBiR3c5SW5kb2FYUmxJaUJtYjI1MExXWmhiV2xzZVQwaUowTnZkWEpwWlhJZ1RtVjNKeXdnYlc5dWIzTndZV05sSWlCbWIyNTBMWGRsYVdkb2REMGlNakF3SWlCbWIyNTBMWE5wZW1VOUlqTTJjSGdpUGpFd1BDOTBaWGgwUGp3dlp6NDhjbVZqZENCNFBTSXhOaUlnZVQwaU1UWWlJSGRwWkhSb1BTSXlOVGdpSUdobGFXZG9kRDBpTkRZNElpQnllRDBpTWpZaUlISjVQU0l5TmlJZ1ptbHNiRDBpY21kaVlTZ3dMREFzTUN3d0tTSWdjM1J5YjJ0bFBTSnlaMkpoS0RJMU5Td3lOVFVzTWpVMUxEQXVNaWtpSUM4K1BHY2diV0Z6YXowaWRYSnNLQ05tWVdSbExXUnZkMjRwSWlCemRIbHNaVDBpZEhKaGJuTm1iM0p0T25SeVlXNXpiR0YwWlNnM01uQjRMREU0T1hCNEtTSStQSEpsWTNRZ2VEMGlMVEUyY0hnaUlIazlJaTB4Tm5CNElpQjNhV1IwYUQwaU1UZ3djSGdpSUdobGFXZG9kRDBpTVRnd2NIZ2lJR1pwYkd3OUltNXZibVVpSUM4K1BIQmhkR2dnWkQwaVRURWdNVU01SURneElEWTFJREV6TnlBeE5EVWdNVFExSWlCemRISnZhMlU5SW5KblltRW9NQ3d3TERBc01DNHpLU0lnYzNSeWIydGxMWGRwWkhSb1BTSXpNbkI0SWlCbWFXeHNQU0p1YjI1bElpQnpkSEp2YTJVdGJHbHVaV05oY0QwaWNtOTFibVFpSUM4K1BDOW5QanhuSUcxaGMyczlJblZ5YkNnalptRmtaUzFrYjNkdUtTSWdjM1I1YkdVOUluUnlZVzV6Wm05eWJUcDBjbUZ1YzJ4aGRHVW9Oekp3ZUN3eE9EbHdlQ2tpUGp4eVpXTjBJSGc5SWkweE5uQjRJaUI1UFNJdE1UWndlQ0lnZDJsa2RHZzlJakU0TUhCNElpQm9aV2xuYUhROUlqRTRNSEI0SWlCbWFXeHNQU0p1YjI1bElpQXZQanh3WVhSb0lHUTlJazB4SURGRE9TQTRNU0EyTlNBeE16Y2dNVFExSURFME5TSWdjM1J5YjJ0bFBTSnlaMkpoS0RJMU5Td3lOVFVzTWpVMUxERXBJaUJtYVd4c1BTSnViMjVsSWlCemRISnZhMlV0YkdsdVpXTmhjRDBpY205MWJtUWlJQzgrUEM5blBqeGphWEpqYkdVZ1kzZzlJamN6Y0hnaUlHTjVQU0l4T1RCd2VDSWdjajBpTkhCNElpQm1hV3hzUFNKM2FHbDBaU0lnTHo0OFkybHlZMnhsSUdONFBTSTNNM0I0SWlCamVUMGlNVGt3Y0hnaUlISTlJakkwY0hnaUlHWnBiR3c5SW01dmJtVWlJSE4wY205clpUMGlkMmhwZEdVaUlDOCtJRHhuSUhOMGVXeGxQU0owY21GdWMyWnZjbTA2ZEhKaGJuTnNZWFJsS0RJNWNIZ3NJRE00TkhCNEtTSStQSEpsWTNRZ2QybGtkR2c5SWpZemNIZ2lJR2hsYVdkb2REMGlNalp3ZUNJZ2NuZzlJamh3ZUNJZ2NuazlJamh3ZUNJZ1ptbHNiRDBpY21kaVlTZ3dMREFzTUN3d0xqWXBJaUF2UGp4MFpYaDBJSGc5SWpFeWNIZ2lJSGs5SWpFM2NIZ2lJR1p2Ym5RdFptRnRhV3g1UFNJblEyOTFjbWxsY2lCT1pYY25MQ0J0YjI1dmMzQmhZMlVpSUdadmJuUXRjMmw2WlQwaU1USndlQ0lnWm1sc2JEMGlkMmhwZEdVaVBqeDBjM0JoYmlCbWFXeHNQU0p5WjJKaEtESTFOU3d5TlRVc01qVTFMREF1TmlraVBrbEVPaUE4TDNSemNHRnVQakU4TDNSbGVIUStQQzluUGlBOFp5QnpkSGxzWlQwaWRISmhibk5tYjNKdE9uUnlZVzV6YkdGMFpTZ3lPWEI0TENBME1UUndlQ2tpUGp4eVpXTjBJSGRwWkhSb1BTSXhNRFZ3ZUNJZ2FHVnBaMmgwUFNJeU5uQjRJaUJ5ZUQwaU9IQjRJaUJ5ZVQwaU9IQjRJaUJtYVd4c1BTSnlaMkpoS0RBc01Dd3dMREF1TmlraUlDOCtQSFJsZUhRZ2VEMGlNVEp3ZUNJZ2VUMGlNVGR3ZUNJZ1ptOXVkQzFtWVcxcGJIazlJaWREYjNWeWFXVnlJRTVsZHljc0lHMXZibTl6Y0dGalpTSWdabTl1ZEMxemFYcGxQU0l4TW5CNElpQm1hV3hzUFNKM2FHbDBaU0krUEhSemNHRnVJR1pwYkd3OUluSm5ZbUVvTWpVMUxESTFOU3d5TlRVc01DNDJLU0krVFdsdUlGUnBZMnM2SUR3dmRITndZVzQrTUR3dmRHVjRkRDQ4TDJjK0lEeG5JSE4wZVd4bFBTSjBjbUZ1YzJadmNtMDZkSEpoYm5Oc1lYUmxLREk1Y0hnc0lEUTBOSEI0S1NJK1BISmxZM1FnZDJsa2RHZzlJakV5Tm5CNElpQm9aV2xuYUhROUlqSTJjSGdpSUhKNFBTSTRjSGdpSUhKNVBTSTRjSGdpSUdacGJHdzlJbkpuWW1Fb01Dd3dMREFzTUM0MktTSWdMejQ4ZEdWNGRDQjRQU0l4TW5CNElpQjVQU0l4TjNCNElpQm1iMjUwTFdaaGJXbHNlVDBpSjBOdmRYSnBaWElnVG1WM0p5d2diVzl1YjNOd1lXTmxJaUJtYjI1MExYTnBlbVU5SWpFeWNIZ2lJR1pwYkd3OUluZG9hWFJsSWo0OGRITndZVzRnWm1sc2JEMGljbWRpWVNneU5UVXNNalUxTERJMU5Td3dMallwSWo1TllYZ2dWR2xqYXpvZ1BDOTBjM0JoYmo0eE1EQXdQQzkwWlhoMFBqd3ZaejQ4WnlCemRIbHNaVDBpZEhKaGJuTm1iM0p0T25SeVlXNXpiR0YwWlNneU1qWndlQ3dnTkRNemNIZ3BJajQ4Y21WamRDQjNhV1IwYUQwaU16WndlQ0lnYUdWcFoyaDBQU0l6Tm5CNElpQnllRDBpT0hCNElpQnllVDBpT0hCNElpQm1hV3hzUFNKdWIyNWxJaUJ6ZEhKdmEyVTlJbkpuWW1Fb01qVTFMREkxTlN3eU5UVXNNQzR5S1NJZ0x6NDhjR0YwYUNCemRISnZhMlV0YkdsdVpXTmhjRDBpY205MWJtUWlJR1E5SWswNElEbERPQzR3TURBd05DQXlNaTQ1TkRrMElERTJMakl3T1RrZ01qZ2dNamNnTWpnaUlHWnBiR3c5SW01dmJtVWlJSE4wY205clpUMGlkMmhwZEdVaUlDOCtQR05wY21Oc1pTQnpkSGxzWlQwaWRISmhibk5tYjNKdE9uUnlZVzV6YkdGMFpUTmtLREV6Y0hnc0lESXpjSGdzSURCd2VDa2lJR040UFNJd2NIZ2lJR041UFNJd2NIZ2lJSEk5SWpSd2VDSWdabWxzYkQwaWQyaHBkR1VpTHo0OEwyYytQR2NnYzNSNWJHVTlJblJ5WVc1elptOXliVHAwY21GdWMyeGhkR1VvTWpJMmNIZ3NJRE01TW5CNEtTSStQSEpsWTNRZ2QybGtkR2c5SWpNMmNIZ2lJR2hsYVdkb2REMGlNelp3ZUNJZ2NuZzlJamh3ZUNJZ2NuazlJamh3ZUNJZ1ptbHNiRDBpYm05dVpTSWdjM1J5YjJ0bFBTSnlaMkpoS0RJMU5Td3lOVFVzTWpVMUxEQXVNaWtpSUM4K1BHYytQSEJoZEdnZ2MzUjViR1U5SW5SeVlXNXpabTl5YlRwMGNtRnVjMnhoZEdVb05uQjRMRFp3ZUNraUlHUTlJazB4TWlBd1RERXlMalkxTWpJZ09TNDFOalU0TjB3eE9DQXhMall3TnpkTU1UTXVOemd4T1NBeE1DNHlNVGd4VERJeUxqTTVNak1nTmt3eE5DNDBNelF4SURFeExqTTBOemhNTWpRZ01USk1NVFF1TkRNME1TQXhNaTQyTlRJeVRESXlMak01TWpNZ01UaE1NVE11TnpneE9TQXhNeTQzT0RFNVRERTRJREl5TGpNNU1qTk1NVEl1TmpVeU1pQXhOQzQwTXpReFRERXlJREkwVERFeExqTTBOemdnTVRRdU5ETTBNVXcySURJeUxqTTVNak5NTVRBdU1qRTRNU0F4TXk0M09ERTVUREV1TmpBM055QXhPRXc1TGpVMk5UZzNJREV5TGpZMU1qSk1NQ0F4TWt3NUxqVTJOVGczSURFeExqTTBOemhNTVM0Mk1EYzNJRFpNTVRBdU1qRTRNU0F4TUM0eU1UZ3hURFlnTVM0Mk1EYzNUREV4TGpNME56Z2dPUzQxTmpVNE4wd3hNaUF3V2lJZ1ptbHNiRDBpZDJocGRHVWlJQzgrUEdGdWFXMWhkR1ZVY21GdWMyWnZjbTBnWVhSMGNtbGlkWFJsVG1GdFpUMGlkSEpoYm5ObWIzSnRJaUIwZVhCbFBTSnliM1JoZEdVaUlHWnliMjA5SWpBZ01UZ2dNVGdpSUhSdlBTSXpOakFnTVRnZ01UZ2lJR1IxY2owaU1UQnpJaUJ5WlhCbFlYUkRiM1Z1ZEQwaWFXNWtaV1pwYm1sMFpTSXZQand2Wno0OEwyYytQQzl6ZG1jKyJ9"`;
-exports[`NFTDescriptor #svgImage matches the current snapshot 1`] = `""`;
+exports[`NFTDescriptor #svgImage matches the current snapshot 1`] = `""`;
diff --git a/test/periphery/__snapshots__/NFTDescriptor.svg b/test/periphery/__snapshots__/NFTDescriptor.svg
index 9c03b5b..e053dec 100644
--- a/test/periphery/__snapshots__/NFTDescriptor.svg
+++ b/test/periphery/__snapshots__/NFTDescriptor.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file