From bba729f5d01f7790ec62cfb6c5742b558017d372 Mon Sep 17 00:00:00 2001
From: yujiankang <15535958281@163.com>
Date: Fri, 26 Sep 2025 01:13:02 +0800
Subject: [PATCH 1/3] =?UTF-8?q?1.=E5=AE=9A=E4=BD=8D=E7=9A=84=E9=97=AE?=
=?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../moduleutil/activity/BaseMvpActivity.java | 50 +----------
.../modulemain/activity/MainActivity.java | 89 ++++++++++++++++---
2 files changed, 78 insertions(+), 61 deletions(-)
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/activity/BaseMvpActivity.java b/moduleUtil/src/main/java/com/xscm/moduleutil/activity/BaseMvpActivity.java
index ce73fc6..7d6872f 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/activity/BaseMvpActivity.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/activity/BaseMvpActivity.java
@@ -43,13 +43,13 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public abstract class BaseMvpActivity
extends BaseAppCompatActivity implements
- IView, LocationProvider.LocationCallback {
+ IView {
protected P MvpPre;
protected abstract P bindPresenter();
- private String city1;
+
@Override
protected void initView() {
@@ -120,7 +120,7 @@ public abstract class BaseMvpActivity implements HomeContacts.View, View.OnClickListener {
+public class MainActivity extends BaseMvpActivity
+ implements HomeContacts.View, View.OnClickListener, LocationProvider.LocationCallback {
private static int index = -1;
public static boolean isShortsShowing() {
@@ -178,6 +185,7 @@ public class MainActivity extends BaseMvpActivity
Date: Fri, 26 Sep 2025 01:18:18 +0800
Subject: [PATCH 2/3] =?UTF-8?q?1.=E5=AE=9A=E4=BD=8D=E7=9A=84=E9=97=AE?=
=?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/deploymentTargetSelector.xml | 6 -
gradle/wrapper/gradle-wrapper.properties | 8 +-
.../moduleutil/view/AvatarWithDecoration.java | 119 ++++++
.../moduleutil/view/FashionAvatarView.java | 373 ++++++++++++++++++
.../src/main/res/drawable/bg_person.xml | 15 +
.../src/main/res/drawable/bg_round_corner.xml | 15 +
.../res/layout/fragment_tour_club_dialog.xml | 156 +++++++-
.../src/main/res/mipmap-hdpi/xlh_rk_bj.webp | Bin 15840 -> 0 bytes
.../main/res/mipmap-xxxhdpi/xlh_rk_bj.webp | Bin 0 -> 175108 bytes
moduleUtil/src/main/res/values/attrs.xml | 38 ++
.../src/main/res/layout/activity_room.xml | 28 +-
.../modulevoice/view/MarqueeTextView.java | 25 ++
.../res/layout/index_rv_item_room_hot0.xml | 1 -
13 files changed, 769 insertions(+), 15 deletions(-)
create mode 100644 moduleUtil/src/main/java/com/xscm/moduleutil/view/AvatarWithDecoration.java
create mode 100644 moduleUtil/src/main/java/com/xscm/moduleutil/view/FashionAvatarView.java
create mode 100644 moduleUtil/src/main/res/drawable/bg_person.xml
create mode 100644 moduleUtil/src/main/res/drawable/bg_round_corner.xml
delete mode 100644 moduleUtil/src/main/res/mipmap-hdpi/xlh_rk_bj.webp
create mode 100644 moduleUtil/src/main/res/mipmap-xxxhdpi/xlh_rk_bj.webp
create mode 100644 moduleUtil/src/main/res/values/attrs.xml
create mode 100644 modulevoice/src/main/java/com/example/modulevoice/view/MarqueeTextView.java
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index 974c9ae..f679fb3 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -13,12 +13,6 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 24e8552..8994e32 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,8 +1,6 @@
-#Wed May 07 09:31:48 CST 2025
+#Mon Sep 22 21:05:11 CST 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-#distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-#distributionUrl=file:///D:/Greadle/gradle-8.10.2-all.zip
-distributionUrl=file:///D:/Gradle/gradle-8.10.2-bin.zip
+zipStorePath=wrapper/distsl.
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/view/AvatarWithDecoration.java b/moduleUtil/src/main/java/com/xscm/moduleutil/view/AvatarWithDecoration.java
new file mode 100644
index 0000000..3112883
--- /dev/null
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/view/AvatarWithDecoration.java
@@ -0,0 +1,119 @@
+package com.xscm.moduleutil.view;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import androidx.appcompat.widget.AppCompatImageView;
+
+import com.xscm.moduleutil.R;
+
+public class AvatarWithDecoration extends AppCompatImageView {
+ // 挂件图片
+ private Drawable decoration;
+ // 挂件位置偏移量
+ private int decorationOffsetX = 0;
+ private int decorationOffsetY = 0;
+ // 挂件大小比例(相对于头像)
+ private float decorationScale = 0.3f;
+
+ public AvatarWithDecoration(Context context) {
+ super(context);
+ init();
+ }
+
+ public AvatarWithDecoration(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public AvatarWithDecoration(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init();
+
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AvatarWithDecoration);
+ decoration = a.getDrawable(R.styleable.AvatarWithDecoration_decoration);
+ decorationScale = a.getFloat(R.styleable.AvatarWithDecoration_decorationScale, 0.3f);
+ decorationOffsetX = a.getInt(R.styleable.AvatarWithDecoration_decorationOffsetX, 0);
+ decorationOffsetY = a.getInt(R.styleable.AvatarWithDecoration_decorationOffsetY, 0);
+ a.recycle();
+ }
+
+ private void init() {
+ // 可以在这里设置默认的挂件
+ decoration = getResources().getDrawable(R.mipmap.xlh_image);
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+
+ // 如果有挂件,则绘制挂件
+ if (decoration != null) {
+ drawDecoration(canvas);
+ }
+ }
+
+ private void drawDecoration(Canvas canvas) {
+ // 获取头像的宽高
+ int avatarWidth = getWidth();
+ int avatarHeight = getHeight();
+
+ // 计算挂件的大小
+ int decorationWidth = (int) (avatarWidth * decorationScale);
+ int decorationHeight = (int) (avatarHeight * decorationScale);
+
+ // 计算挂件的位置(右下角)
+ int left = avatarWidth - decorationWidth + decorationOffsetX;
+ int top = avatarHeight - decorationHeight + decorationOffsetY;
+ int right = left + decorationWidth;
+ int bottom = top + decorationHeight;
+
+ // 设置挂件的绘制边界
+ decoration.setBounds(left, top, right, bottom);
+
+ // 绘制挂件
+ decoration.draw(canvas);
+ }
+
+ /**
+ * 设置挂件图片
+ */
+ public void setDecoration(Drawable decoration) {
+ this.decoration = decoration;
+ invalidate();
+ }
+
+ /**
+ * 设置挂件图片(通过Bitmap)
+ */
+ public void setDecoration(Bitmap bitmap) {
+ if (bitmap != null) {
+ this.decoration = new BitmapDrawable(getResources(), bitmap);
+ invalidate();
+ }
+ }
+
+ /**
+ * 设置挂件位置偏移量
+ */
+ public void setDecorationOffset(int offsetX, int offsetY) {
+ this.decorationOffsetX = offsetX;
+ this.decorationOffsetY = offsetY;
+ invalidate();
+ }
+
+ /**
+ * 设置挂件大小比例
+ */
+ public void setDecorationScale(float scale) {
+ if (scale > 0 && scale <= 1) {
+ this.decorationScale = scale;
+ invalidate();
+ }
+ }
+}
+
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/view/FashionAvatarView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/view/FashionAvatarView.java
new file mode 100644
index 0000000..e0ab8c0
--- /dev/null
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/view/FashionAvatarView.java
@@ -0,0 +1,373 @@
+package com.xscm.moduleutil.view;
+
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.PointF;
+import android.graphics.RectF;
+import android.graphics.Shader;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.target.SimpleTarget;
+import com.bumptech.glide.request.transition.Transition;
+import com.xscm.moduleutil.R;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+public class FashionAvatarView extends View {
+ // 头像相关属性
+ private Bitmap mAvatarBitmap;
+ private String mAvatarUrl;
+ private Drawable mPlaceholderAvatar;
+ private int mAvatarRadius;
+ private int mAvatarBorderWidth;
+ private int mAvatarBorderColor;
+
+ // 顶部标签属性
+ private String mTagText;
+ private int mTagTextColor;
+ private float mTagTextSize;
+ private int mTagBackgroundColor;
+ private float mTagCornerRadius;
+ private int mTagPadding;
+ private int mTagOffsetY; // 标签Y轴偏移量
+
+ // 底部文字属性
+ private String mBottomText;
+ private int mBottomTextColor;
+ private float mBottomTextSize;
+ private int mBottomTextOffsetY; // 底部文字Y轴偏移量
+
+ // 爱心装饰属性
+ private Drawable mHeartIcon;
+ private int mHeartCount;
+ private int mHeartSize;
+ private List mHeartPositions = new ArrayList<>();
+ private Random mRandom = new Random();
+
+ // 画笔
+ private Paint mAvatarPaint;
+ private Paint mTextPaint;
+ private Paint mTagBgPaint;
+
+ public FashionAvatarView(Context context) {
+ this(context, null);
+ }
+
+ public FashionAvatarView(Context context, @Nullable AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public FashionAvatarView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ initAttrs(context, attrs);
+ initPaints();
+ }
+
+ private void initAttrs(Context context, AttributeSet attrs) {
+ TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.FashionAvatarView);
+
+ // 头像属性
+ mAvatarUrl = ta.getString(R.styleable.FashionAvatarView_avatarUrl);
+ mPlaceholderAvatar = ta.getDrawable(R.styleable.FashionAvatarView_placeholderAvatar);
+ mAvatarRadius = ta.getDimensionPixelSize(R.styleable.FashionAvatarView_avatarRadius, dp2px(60));
+ mAvatarBorderWidth = ta.getDimensionPixelSize(R.styleable.FashionAvatarView_avatarBorderWidth, dp2px(2));
+ mAvatarBorderColor = ta.getColor(R.styleable.FashionAvatarView_avatarBorderColor, Color.parseColor("#FFD700"));
+
+ // 顶部标签属性
+ mTagText = ta.getString(R.styleable.FashionAvatarView_tagText);
+ mTagTextColor = ta.getColor(R.styleable.FashionAvatarView_tagTextColor, Color.WHITE);
+ mTagTextSize = ta.getDimension(R.styleable.FashionAvatarView_tagTextSize, sp2px(12));
+ mTagBackgroundColor = ta.getColor(R.styleable.FashionAvatarView_tagBackgroundColor, Color.parseColor("#FFA500"));
+ mTagCornerRadius = ta.getDimension(R.styleable.FashionAvatarView_tagCornerRadius, dp2px(4));
+ mTagPadding = ta.getDimensionPixelSize(R.styleable.FashionAvatarView_tagPadding, dp2px(4));
+ mTagOffsetY = ta.getDimensionPixelSize(R.styleable.FashionAvatarView_tagOffsetY, 0);
+
+ // 底部文字属性
+ mBottomText = ta.getString(R.styleable.FashionAvatarView_bottomText);
+ mBottomTextColor = ta.getColor(R.styleable.FashionAvatarView_bottomTextColor, Color.WHITE);
+ mBottomTextSize = ta.getDimension(R.styleable.FashionAvatarView_bottomTextSize, sp2px(14));
+ mBottomTextOffsetY = ta.getDimensionPixelSize(R.styleable.FashionAvatarView_bottomTextOffsetY, dp2px(10));
+
+ // 爱心装饰属性
+ mHeartIcon = ta.getDrawable(R.styleable.FashionAvatarView_heartIcon);
+ if (mHeartIcon == null) {
+ try {
+ mHeartIcon = context.getResources().getDrawable(R.mipmap.xlh_image);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ mHeartCount = ta.getInt(R.styleable.FashionAvatarView_heartCount, 6);
+ mHeartSize = ta.getDimensionPixelSize(R.styleable.FashionAvatarView_heartSize, dp2px(16));
+
+ ta.recycle();
+
+ // 加载头像
+ if (mAvatarUrl != null && !mAvatarUrl.isEmpty()) {
+ loadAvatarFromNetwork();
+ } else if (mPlaceholderAvatar != null) {
+ mAvatarBitmap = drawableToBitmap(mPlaceholderAvatar);
+ }
+ }
+
+ private void initPaints() {
+ // 头像画笔
+ mAvatarPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ mAvatarPaint.setDither(true);
+
+ // 文字画笔
+ mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ mTextPaint.setTextAlign(Paint.Align.CENTER);
+
+ // 标签背景画笔
+ mTagBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ mTagBgPaint.setColor(mTagBackgroundColor);
+ }
+
+ private void loadAvatarFromNetwork() {
+ Glide.with(this)
+ .asBitmap()
+ .load(mAvatarUrl)
+ .into(new SimpleTarget() {
+ @Override
+ public void onResourceReady(Bitmap resource, Transition super Bitmap> transition) {
+ mAvatarBitmap = resource;
+ invalidate();
+ }
+
+ @Override
+ public void onLoadFailed(@Nullable Drawable errorDrawable) {
+ super.onLoadFailed(errorDrawable);
+ if (mPlaceholderAvatar != null) {
+ mAvatarBitmap = drawableToBitmap(mPlaceholderAvatar);
+ }
+ invalidate();
+ }
+ });
+ }
+
+ private Bitmap drawableToBitmap(Drawable drawable) {
+ if (drawable instanceof BitmapDrawable) {
+ return ((BitmapDrawable) drawable).getBitmap();
+ }
+
+ if (drawable == null) {
+ return null;
+ }
+
+ int width = drawable.getIntrinsicWidth();
+ int height = drawable.getIntrinsicHeight();
+
+ if (width <= 0) width = mAvatarRadius * 2;
+ if (height <= 0) height = mAvatarRadius * 2;
+
+ Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+ Canvas canvas = new Canvas(bitmap);
+ drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+ drawable.draw(canvas);
+ return bitmap;
+ }
+
+ private void initHeartPositions() {
+ mHeartPositions.clear();
+
+ if (mHeartIcon == null || mHeartCount <= 0 || mHeartSize <= 0) {
+ return;
+ }
+
+ int centerX = getWidth() / 2;
+ int centerY = getAvatarCenterY();
+ // 爱心围绕的半径,比头像大一些
+ int radius = mAvatarRadius + mAvatarBorderWidth + mHeartSize / 2;
+
+ for (int i = 0; i < mHeartCount; i++) {
+ // 随机分布在头像周围
+ double angle = 2 * Math.PI * mRandom.nextDouble();
+ // 稍微随机调整距离,让分布更自然
+ float distanceFactor = 0.8f + mRandom.nextFloat() * 0.4f;
+
+ float x = (float) (centerX + radius * distanceFactor * Math.cos(angle));
+ float y = (float) (centerY + radius * distanceFactor * Math.sin(angle));
+ mHeartPositions.add(new PointF(x, y));
+ }
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ // 计算宽度:直径 + 左右可能的爱心空间
+ int width = 2 * (mAvatarRadius + mAvatarBorderWidth + mHeartSize / 2);
+
+ // 计算高度:头像直径 + 标签高度 + 底部文字高度 + 间距
+ int tagHeight = (int) (mTagTextSize + mTagPadding * 2);
+ int bottomTextHeight = (int) mBottomTextSize;
+ int height = 2 * (mAvatarRadius + mAvatarBorderWidth)
+ + tagHeight / 2 // 标签一半在头像内
+ + bottomTextHeight + mBottomTextOffsetY
+ + dp2px(10);
+
+ setMeasuredDimension(resolveSize(width, widthMeasureSpec),
+ resolveSize(height, heightMeasureSpec));
+ }
+
+ @Override
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ super.onSizeChanged(w, h, oldw, oldh);
+ // 视图大小确定后计算爱心位置
+ initHeartPositions();
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+
+ if (getWidth() == 0 || getHeight() == 0) {
+ return;
+ }
+
+ int centerX = getWidth() / 2;
+ int avatarCenterY = getAvatarCenterY();
+
+ // 1. 绘制爱心装饰
+ drawHearts(canvas);
+
+ // 2. 绘制头像边框
+ mAvatarPaint.setColor(mAvatarBorderColor);
+ mAvatarPaint.setStyle(Paint.Style.FILL);
+ canvas.drawCircle(centerX, avatarCenterY, mAvatarRadius + mAvatarBorderWidth, mAvatarPaint);
+
+ // 3. 绘制头像
+ if (mAvatarBitmap != null) {
+ mAvatarPaint.setShader(new BitmapShader(mAvatarBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
+ canvas.drawCircle(centerX, avatarCenterY, mAvatarRadius, mAvatarPaint);
+ mAvatarPaint.setShader(null);
+ }
+
+ // 4. 绘制顶部标签
+ drawTag(canvas, centerX, avatarCenterY);
+
+ // 5. 绘制底部文字
+ drawBottomText(canvas, centerX);
+ }
+
+ private int getAvatarCenterY() {
+ // 计算头像中心Y坐标,考虑标签的高度
+ int tagHeight = (int) (mTagTextSize + mTagPadding * 2);
+ return mAvatarRadius + mAvatarBorderWidth + tagHeight / 2 + mTagOffsetY;
+ }
+
+ private void drawHearts(Canvas canvas) {
+ if (mHeartIcon == null || mHeartPositions.isEmpty()) {
+ return;
+ }
+
+ canvas.save();
+ for (PointF point : mHeartPositions) {
+ int left = (int) (point.x - mHeartSize / 2);
+ int top = (int) (point.y - mHeartSize / 2);
+ int right = left + mHeartSize;
+ int bottom = top + mHeartSize;
+
+ // 只绘制在视图范围内的爱心
+ if (right > 0 && bottom > 0 && left < getWidth() && top < getHeight()) {
+ mHeartIcon.setBounds(left, top, right, bottom);
+ mHeartIcon.draw(canvas);
+ }
+ }
+ canvas.restore();
+ }
+
+ private void drawTag(Canvas canvas, int centerX, int avatarCenterY) {
+ if (mTagText == null || mTagText.isEmpty()) {
+ return;
+ }
+
+ // 计算标签文字宽度
+ mTextPaint.setTextSize(mTagTextSize);
+ float textWidth = mTextPaint.measureText(mTagText);
+
+ // 计算标签背景矩形
+ float tagLeft = centerX - textWidth / 2 - mTagPadding;
+ float tagRight = centerX + textWidth / 2 + mTagPadding;
+ // 标签底部与头像顶部对齐
+ float tagBottom = avatarCenterY - mAvatarRadius - mAvatarBorderWidth;
+ float tagTop = tagBottom - mTagTextSize - mTagPadding * 2;
+
+ RectF tagRect = new RectF(tagLeft, tagTop, tagRight, tagBottom);
+
+ // 绘制标签背景
+ canvas.drawRoundRect(tagRect, mTagCornerRadius, mTagCornerRadius, mTagBgPaint);
+
+ // 绘制标签文字
+ mTextPaint.setColor(mTagTextColor);
+ Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics();
+ float baseLineY = tagBottom - mTagPadding - fontMetrics.bottom;
+ canvas.drawText(mTagText, centerX, baseLineY, mTextPaint);
+ }
+
+ private void drawBottomText(Canvas canvas, int centerX) {
+ if (mBottomText == null || mBottomText.isEmpty()) {
+ return;
+ }
+
+ // 计算文字位置:头像底部下方
+ int textY = getAvatarCenterY() + mAvatarRadius + mAvatarBorderWidth + mBottomTextOffsetY;
+
+ mTextPaint.setColor(mBottomTextColor);
+ mTextPaint.setTextSize(mBottomTextSize);
+
+ Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics();
+ float baseLineY = textY - fontMetrics.top;
+
+ canvas.drawText(mBottomText, centerX, baseLineY, mTextPaint);
+ }
+
+ // dp转px
+ private int dp2px(float dp) {
+ return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
+ getResources().getDisplayMetrics());
+ }
+
+ // sp转px
+ private float sp2px(float sp) {
+ return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp,
+ getResources().getDisplayMetrics());
+ }
+
+ // 设置器方法
+ public void setAvatarUrl(String url) {
+ this.mAvatarUrl = url;
+ loadAvatarFromNetwork();
+ }
+
+ public void setTagText(String text) {
+ this.mTagText = text;
+ invalidate();
+ }
+
+ public void setBottomText(String text) {
+ this.mBottomText = text;
+ invalidate();
+ }
+
+ public void setHeartIcon(Drawable heartIcon) {
+ this.mHeartIcon = heartIcon;
+ initHeartPositions();
+ invalidate();
+ }
+}
+
diff --git a/moduleUtil/src/main/res/drawable/bg_person.xml b/moduleUtil/src/main/res/drawable/bg_person.xml
new file mode 100644
index 0000000..a7b3cf2
--- /dev/null
+++ b/moduleUtil/src/main/res/drawable/bg_person.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/moduleUtil/src/main/res/drawable/bg_round_corner.xml b/moduleUtil/src/main/res/drawable/bg_round_corner.xml
new file mode 100644
index 0000000..298a617
--- /dev/null
+++ b/moduleUtil/src/main/res/drawable/bg_round_corner.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/moduleUtil/src/main/res/layout/fragment_tour_club_dialog.xml b/moduleUtil/src/main/res/layout/fragment_tour_club_dialog.xml
index 2ed1185..687dbf4 100644
--- a/moduleUtil/src/main/res/layout/fragment_tour_club_dialog.xml
+++ b/moduleUtil/src/main/res/layout/fragment_tour_club_dialog.xml
@@ -62,6 +62,7 @@
app:layout_constraintTop_toBottomOf="@+id/tv_gz" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -281,7 +432,7 @@
android:layout_marginBottom="@dimen/dp_15"
android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
- app:layout_constraintTop_toBottomOf="@+id/cl_gift"
+ app:layout_constraintTop_toBottomOf="@+id/gift_l5"
app:layout_constraintBottom_toTopOf="@+id/exchange_layout"
/>
@@ -325,6 +476,7 @@
app:layout_constraintEnd_toStartOf="@+id/tv_option"
app:layout_constraintTop_toTopOf="@+id/exchange_layout"
app:layout_constraintBottom_toBottomOf="@+id/exchange_layout"
+ android:visibility="gone"
/>
+8yhzo}OMsDRJ=?0RT`F6OmVy|Ei7%007HJmIZ*H03anQDnA18@d!YS
z{HKKesIswjc2txQAye1TB!k-qAU>}DN(M$w_WzCkkL3r~{nCH)&NKcWIsWfN1Y;8?
zqYsv=k4)kC@$ru~VSQjMv;W34|G|d;jrsqB-JI>6KX~N-gB_I>ML)3d2c|Lm->~8T
zhK=kU|HB{o!NYH3?ed>*{U`mWcSt6-DoP)B_>W8kI01@)1R(OC{(n4wB)dES_<9Eb
zP_h3*GfV}5=3oH8Tl*gxMGgR<1_40R^#9QQXH4u391Z^KbJ~6#qYMBm1Z#`e>Kk$7Kds1110&AO+Y0MgY?XV*8j>R)FhchGkCp0DxJx
z2NMn1<#XOUM9lJAwWH?yJM86oK7JTs5Sk={Mb2QQZ;5c`b6i!{*gqv5GZl~J&CSlj
zQh8B2`EcnOGf4SR^#M
z*7&!^Ul3-u&UM+?FL@`3Ox!c#GHV$*!U|Q(7v(pD;rR96yGJZu{iYvQrrJy>#YK?d
zb!jxi7jn0#Zr#uKT9&}*+bs*5ItguFfkikJv5B#0J9X_EnX9S99^Ebm>#mY@Hk%;Q
zxVW-01~n^pWG30^LYwubN%HmkEs60aoAiG1_5B}W-bfowQJ5T+?O;b1Fv9;@v;S*M
z{~zA{Vc0XVZ_;^9c|QRM+>HP*`c5hh7|tqNO-5btp1#FF)Dyp+dDdan63MtNGgL_S
z(D_4;WUIrV0Z)9C`oXDFBG@i>#?rfb>wNdAqXrw!Zf}8xHuyBk7@}2vb7qyLCY?<%
zlK#*Y0L6z4r*Ox-E4*Jja~kgMvO2Zl@foqY9$eo1{^r%V-KeAXB}mrswe*HS;OlaM
zpfeqkjVVq9d=kO@Rf1BwMau!dkE6_y#$2BCmd-llhjd`{2%YFsJpg>wVPzD~|QAm)dq45SB4)7oXKgi~AFNDc(G}k6LMIvgk)}TIRq{wxek{cW68F6Pt@%7
zdf3g6uHNn
zh{V{YQY$M)E|Zmy$Hw;mg-@0dMg
zXD4#owK8Dq=MGUmDKhdoJ?rXm)o^>c?OmI4e+Bndy$_=IyA)U9X+Jzrxk)rUrdFK6
zB$}?dsvK6k3fAS-9lfnTWIyGf##C;ghfgA}LyTL7l63>S)dBGF?D5*2upY+eV+8=_#8nH^)j8%PMM#^11m&(<@5Z5--+G@C@n1
zg%%cZ5Oa8qPS?#M>4vlCqEk9`vX43qmxN&zy;tt{`xVnUz>u@xDMY#U;*^)q&eO3B
zd!pBWPfoHuc_294TgRZNzU)!aPU+#Dn7*bS40AM`%~F3(*(|`O-_~wwAO>mtG~a%&
zB(6^jcTiG?+u8o|3d)31)^DNW_!0k%ODlQyy@E189NiLCYt3eEFg|Caita2+MuRio
z>x8=_Q4ef_f$hd=a;f!0vn)(Opys7FRFs;)@8Mo)+%F%{DdMpGmE)AlviwyCek=si
z8lD_VaTTJ-O3K>VpwbY5^b_o$|1`?z*x-ET!KvxG@h`o^iJA}|)j#B$%%%w3B<0ei
zs8I*bAx(nPm0lyoZG_3M=OX|}3Dcq6%59PmuQts|0Qp!10#84``sO(9du7;AVyVbv
zX-J=|W?T}I7ki%5X>W3
zNS0+WvdXzCBPuB5`meN8{22(1-x!|LenP8bel0j6rUnN}AKO~eJo1WoNE
zR+qeqD(!8-jUio&4-j-Rb8e~m>0SDcY6=IEarg2mLj#{b5fV%=hH`MLM9J#RZ8-*7
zAJ94V$GVzF7E-92hh-LhlZi}-N$by*2$T}Mtubafl*WWq(a1}aA$J`~#8z2j=)1Yv
zFdajirkG5V3}_TF_}s5appcuMP4K?r=6i(8sSsWqn%sat)&@DkqhHUEwsJiI$^
zhn)>xn~nJp`Gw?pYr!HnjWmpP5p70`<*pZr#RWKiLtGOVRWbiqcyQrfcheBOa~QvR
zkH}Dg7~sR1^j&yOWd$XKegq{+)FfA=I#bHjIDP5|S~+6uf{}u(?pkCM;A57jXD{5&
zwk0jJmFcF65@qX2li5Z~$b)bS#yU=NRf>{p^#>67bD65fOWkhqx&?a{pt<(HTQ_$p
z#(pWu^8Vc`jUGrY+na#dM|L0=oXy}>mn0$eg(0UVm;X{Bg+`#1W(cj&o;Du=&1bv7
z`S{E2LZt)st76A;cI+v6fOd@Kj=<#3P}pdzs4f56?xkPt%W($V=2Cgd19E7`H50!j
z3j2g8IozRVX`+B+@xFL?T_%CqlCmvo&QYdI)-Q38Z%^&!;~897^dMHaz)iX3baUgKixY+B_A7J6x|m@ETd=&5?p(Vs2d_ov~B
zva!(e1l;?tuK8Lw@`VQLVw5?wWqbAkLnF4GN?h@joBs$mj1cTI`=kUke`Kq#ka!zP
z7oF*lk5n1r53_|5L=fd>XVhOU_7cvUZP_SBr+0?A+w?eZ&cSbXS$RwkMjcM`r*eXe
z{|=?QWxp%4HP;h8yobg0nuV76lwDp%-(q|kDsP!0I7L`nzKgk37)5@9mj$b8Y;^_W_
zD5gR?z*~I@#?52DY}yI0(&gcIb||Oiqc#a(H;2sxUy&QkC;5o*J4$*f#j~tA2!fb{
z$)!?l!t^#)GaTP12n(OOS-L%5jKd;K!zMT*Sal`HKPz7rDv(~GwEgek)1ZrKV}XmN0?LS50;@lQ><
zyk$PRl_+Ft0jEUPRCU7<
z)6=t(WZYR=MCd0nJvVS-`2mSyQMQWd9u_-45;Sjl2AgoIRw~#`9J|&k-PaS>M8o9K
z)-(eqDo1n&L`=2(Ha+L%_np7)rux414SAhLGinezkBfWIS~vwzo;8}$+d5NRPX_k?
zqcLufNwqy)WZ-Xlaga&B)LQDs>ZUopuUSaW3U~CWplzb3DN+!{gGs!%Am{aCprAvt
zUX!sVhR7^ZRF9UfQ`vsak^wU;iWGF*TjIKSJ<}x-`D#AXp(bFA=|8A;TdvX1Y1^TuuFW#y63ym}IrW4RaQBExWRel{KL5j0`t>mi_ap!FV{mif26%{T%r6nVZzp^Y#`uf%l*&j~de20>c(3x6cRWh;$+mWcRmf
zeXw%W3ohfToIKJGtuZsyp`Ry$uS-nXEi*pB7J*uCs^5?L$_^rtPnsc;evAO{Kat{}k
zXliAIzI6x1kODzp12$78z4+ozuoTfB^;n<5KT>dknsW}Wy7Hf?7guxfc1^AqB;a=1
zaNqyDChFSE53bYBz{S_8aY>pfblD_sJxD-rt!9RG+emu~2os?yjX5OaTzjn0X$^#V
z%T3F~<+U43>g;fhp_&|`rO;BdyK$mo9H)05QHTZD)u6qO_edjM4JqNk1PB2}(-a;Np#&?QX%_aQ@7wb-tc
znrQDL=ZC?)rM4jftsP?A_;z7w@3y7;={Gx*2Qxn(*YhT(GXV^80@$*WoVlQB8ClZF
ze-d}mgI}aIo=Xcjv47KVy_EouFTqhd6WDAO3dOG_w96f?G?1t_*8~B*;T3~_iCPsD
zHwx3nnaDNMsEk601dOzupq|>WWRD%0+W9-9sAm|C7dgM5QZG*uWI#`s7Jm+@jc3_vE)*T%qQ6Njw_t$wL
z-@?qc>13@tZmci%l5+^rH+DZF^b!nR)8_U(2zp_{jKo5%5E^W6?8T;!iw~PZ3^8hd
ze9>e4QV9b92d-kH{8owXriy6^9~+`okFoe?UP&8P-99Wey5>;UDemwBT7YjTeGWN2
zf$(-E{`AnA)Y=%j5MIlcN4Hn)aM^{pHOF8%Ni36tk&9+~e(se0@SoT!-?d31X(pCQ
zTIvlP&Dc)3Ow|g-FOh#TV_~OxK};UIH^^0Q4}q3oMk?~TM6-tC%(u?`=x(3d7LC~X
zjNO}r@tcT$`7!^py!ZVTirfw{q8vvkYg=lN2XJ-De)$wU*t60xDJ(^GP
zZ+{Jyw3VXSr=~=n^HF_K|5yZa=^v^b-oG%OCJSteQ{YeQM3^!0w&5A%AUwRvuXBYwt25lq{F{$!PU5G3u`*|-vvmd_#LN#_Q<#uo4LBz-Sx>Fl
zkHvWLyBb9izO_kfC9^skes@5^_G9wxniF$e~ma<?5X`zVn
zV9d&e58LR&VP2yTo0#=yD&+7=k9w+;7h_)L=%V2lK@_L_9HDWaPMCxBSR6b}cnH(P
z?R|LbabF&u^9vRtWmMP*pUgO!>SH^MfbH)*Rz1D7?Fw!|)eZslqN?w+2I6v=<`s_D
z&6`7K2Qu0_D~Whgf$O2yoL?%HZ2A|v=4Ucd(r#G_SsV$$@UEHnJkR%iMBTF)e-jfg
zNW$2MWu;Tnx6#utp9ewJq-*IOD}1dM$MQLB)^|SluhBwS69EsnlF)x$)SNp_WPfU~W$dpEG+nBH
z8`$3`lIPmLHQ^7x$HH;IcT7Dmo|=YFqWt|w%**4oNeu`W5NFiO3(a9j@I2a$*H4<1
z)Pp=HWNUVP%CC}GR#6io7)yEQQY#=qq1toNn5EWjx2EGDC|bB|QRiJp&!h2H`l`UmvpEU)Zi5`dhtIM$!GVs
zg8uZ+-^^g7GI;p2aVpI%P%;cAM@UVru)X~n*vz;7k!1T-3ImB%g-iSDFt)XE-cZSl
z$#mvAwFzY8)v6&e_PIOs>*Z0tx8t^A6H~~KvpA+7N}r~lx<*y}d=$Snw9Z9$;};oc
zk?q-9U-Wb~
z=6MZ;z1ACo2x
z>{Qu0^n)z#GCO(=v*;sPzY@`1&}eOD`{CH-d(IBFDhO#x$l-LwHX;z@t}OB7clokY
z-3%CBF2BF*&g(v{&$owbZPD4CXQt8rr36gVp>nRresxXV)wZjx-3OfvBKY3V2LIhN
z8@~B9edgE?uB!vXRIW6h^=-ruS<-Sls6>UOcJHB)zs6G!YsI00MiFm{Wss8OC
z1%ZZ;C7?YK?bJ-{1Nl@7&LZ_C5)YH`YAar(qDed$JUl|Ev6O8wHVY%Aerj{c9ZcvV
z;f|hC{$azRp(JewF{Vno|n#eean>$?w;y%{hH6qT%Lkc%g>h16J0W}k4uhcYSPFVMP61%
zEH_cNPrAR7xcfKltSEtcj~4RTG5oW{vV!7bCW|Z>`EDPtx)^7s?0dPMH#16sPf_(t
z1tv7)c?RCisMX{VjoRLjcOa%43b?F+?UUhT^ordNFSen)md^TaCZiumFS!ayckzn^
zs`t}dCDyM@u%pkD+3&BHZQ#FmprK7lX#npp3RA=7<;L6N)2DVl$Zy^aX^pd-XB;C-
zP<%SmAw#(Qn<~E(GgJ-V`>!ti_4GbBPjWpdO4!LZ)e$9gj<@)LL7`FP>zCQvK^m2-
z+aO@zclxr+!~W2Da`gAe8#p`9bPcQz+wX#J%zh@RJl%Y!wN0s579$*#(%Pw)UVXn7k>VOZ
z#gwD|wFSSI#Y*zwh=VBARHW&kT#8^fa11?JX7dPpR(m$BJa#?JL>Qit)v#|3P+4I>
zY@PgfgonRlh0u4LH#yz&B$Q*_H;|F|jZYFYQr0?^F@{|2klir!qHbKFG=(E6UxZR&
zVlVS~>!;J1DZZNe#GAH1jG(uG*jy}!%1)_tzyI;=!M>A>UZyfhfucNJMQfjA@z=KO7ccpScmvl5gm{u}x1XQye^NauCUN?x=cemH$bCHNH`
zmYLR?GLHv)lmut{M;+Y>xhoP^4dtY1@!8|9`&+hZqcwp-E##Gk%YJ7>!q2P(o>CVD
zB5P+q7Ncfw7&LvfP;tfi>(|z$mK(QIYEw~Ciqa0>>ACi7*Y%`IcByz-vAD_L)jm6C
zlH+Va>lQYdJ?q->`E;!QM1J%WTEnq$JR1J%4U??L-u}P8rE`aqEyhE|7}YAg9i(A9
zWr!L#2vnaV9VHc9wYa>wR6XaaT-(d<##-Zq1Q{*28}4rW3BMO@HYGr{Vqh=&J=OZFxuM
z;z5#gt)(rjn0{S%QmyY}ib7~*wupM(6^i+EYo9ofW5UVKQs
zrm9;+BHukOXg?xPu)so9`x@T0P>HNOp(aJ_X
z8#U?(`%pnLQa(G<{TzWN%wW~xAr>|Ar1$tZNvXu7a~r7&-MfS_SrpKe2p6}pS`rc}
z=~h>+!8|+(cK6Zxf$J{7S%)&uAS>UH{rejqDd21?#S%uLeybkWfL*LyKtVWeeCUv-J>X%a4~6NwN;oV>sRcvWM;rP)6;8anBef1C$RdeGb9
z$poNU)@BN4I6DCI{5ywcVNf5DMq1L$0H<1owY%6w9Fm3i*n;7`8w0+!$N0teAd(R0
z=gexr(qGlh>^U+D8h}?|U0f^I@^(Q$W60HNcraJi>!_LO4@XI-)?QAnByxMs*p52f
zkGETH5tu^Ud%sX%3v-GOh=mZ=3(Y|%hCj;Jg(?#2=5PHH=$+_r6H
z1{wDY&yhD#w(d`Jl7p!A8ti2TOj1cmSyZ!al*tlVcxlUeLWZaW`Wfn2tod`gDGiL}Nb)vHrPIUD8(}
z(Mauz*(Pu|zEgkL_|u!;%*s*)G{8JCHbu$X)->Nz1d`+=4yUFi;v}Ws5zFuk~GRiF87JQd|C=8xhp)duxAc
z6;I*_kN?hQ?#1BYskE#a%`Ov_(i2s-gD@psPb--B(Rtd70y$gTwz^t1pFpr?jw4bb#p^}m#GNe
z73aJY5BOlCCXQF+%alb)Q_)ia_GBcFifpTJP3y|N(8L?ey4Lqi_v)CBn
z&AQB#O#j)POM580#Al?P|5^Loe%I*GC&!CS<3M()pqIKH?D(0jwk0vQM_TM>llJ5u
zfsL4ypPxkJTH#d2a)&lUDbiQr(&LnUUM0$@iWu_gxR?0LV^_UxBa1J*nzyEktsEx(
z7~$b8Sug~|b+t%&{DAo!+Zed25sLNa>KoTqxou)Tp|(QEnQ~W!d}XNcQk~da>FM&l
z&|7y(6X+7PK+jR!@jCLJv`gYpx%9J9p2S%X!K`5FYcjaJowbAi5OI2|15pi
z?CbW4%*vHn8#0!63p!`*FLaNZoAKy4A9y0?fNZUHA%n2_y#w;Y`j=Y2Fo!iuI=I4|
z>;lW6hTqLfgm(LA_`Y2psq%yy&T-MMS7#~-fB2YEwX9{yf{wc?O<4)-hi800NF#C~
z0&N;bm0pd9;4B!xKaatw12<#!xqQPI&A)DI8Q_03jy@fdTQi@IP-P^5BDOG6peUAOII9iCoq_t>=g5M5-{|R8H8u505_SGy!Tc$sD5y}B=95ua%29zR*y)S
zZsE9i*?ris0cTpPOaqQ6S!K(+Yxv(FbD&{Dsl&5SC;WW<58h;<s@oWIh(y?cysZc34VT(
zZgni^3z_`tdL@P6+4UMSSxn*@*e2}ViR9|2YiCtOa`AXcn@>xp@1CIzq8mM
zQBN9HWuEg>(ayPh`$cYTOMoVVAkGyj%AlK3R-Ni9;N5
zS+2|#P;vpgUf}a)HLvSYy28Kc52ymnvc_~~Sp@Dq+^N|kk;P)ApzDdoAePA+-F(NB
z<2Nwl^s9E5pR$ItJhhcEeL|?2SSsnqxpxHW`$^{9`;+sk*e{z1uU~v{dT!oe%H>Pl
z-Sfqg2st?*mdW!CANY^5VG@0crb~K6b&-gxwu@8oQ60wth`)UT$RMu2I^(cdQ;ao(
zrmRmsM1vyLrn&@0R9P9xV$dYdprG4eJe>?a4wVAeVc89*V){(HzN^^Uf)hw3yMg@Lm(V;UHkf0|^vNTGtJ=E~H4?>WD`%vn@Xw@<=LC9{!Ak0=A1LNg-+&
zd^lBTsGPfD^aCC$u^%Yo4FPTYlf+u#nC6>iPoqL%Teh9{Gm{Gf&tGH%bj@PFISH`u
zv>f!VRqltA6K!KZo4)Srrw|SaLT;z`+=(g-Z)6`6w;n>R-L&rC!R>qk*K3(B1PIh}DeuOU~0I|?L!-7YL$%=R1
z7uQLiM^e{UlP1pauslI(wCj8m)tBW)6&*-8bZcMBa*_z<8c2?q+E13Ze1-x9AalYn
zKFiX$d+a0mqd@}-Xtzo{cjlnX`{LwLM9eAPn@-)%jTiBDoeN%(KLET)$p$PuV8xEB
zp4mBIqt(sQlZPXhNk%JwlPW8OCTI}W1Q8#1a_1-iophTEn%<-b@
zFmo8hj!=F%cvJ@6BUE-N5k6vVQES(E!>rvqvg~@U(&f;y#PqnApFgt|ZZhk4rnRtL
zyKj(@s_IusXs=qKMSJ)xPxjzF>MXQt-XxR})rg?5^f_n>oi?f~J^hmbfM&>PZ2_q-
z6-waNsj-F2Rn%-gUuJ>e0)DQR>5k2VH$C3@Qa|-`J&|{KV`_Lq>c^iah(7{JiP@1S
z%XuFYNDB7*kfx;TC|k|
zs^+m6F`Qg1^qwDuxhZ1jCY`|{Wsub?0schlX6x(fISxUrXUVXL^!(hHi~~Pm=_3W7
zKsInz-w!!jvG|bIsn!x5TZGrq@#SOP=`0Z_b-r3#cobclN~=y?|J~7~&OC?cnV#=z
zX`eVbd#d7jtB`&mF_hed3np!MdhB-HieBwP;{dN#;Gmf<99ly5N5Y6&vVkivUui0IGhN=QH9r$Ff#F1>B#1`*gtlVmr1vfh2>wD%BIGGSFFoH%9m8>lw0R7qC
z`G$d}sm-2boIpZlxgU(i2be4V5NwXjIkSP1cN!1(YEy)Z@cLm&m)A6QiMaO0CFfIPQqn0F~TNNO`mv1pGzl&lH0zgc9A$mXloy%Hi4w
zoew8MR{$!Gk#`r~(Z>%D$YVOde}dTy{i9TJBb4e%t$q!5uL)S;XV&v1o157PSk!ZE
zs|jY6^_jXKKVZgv1JWAnG!sA+Cgj}@bC|>jTtbV6OP)ugq%s#I&^@YDfTc)jh9i}S
zG@{Vel4UuKLrtO7K9>K>Rid4c_9qy#j3;O^+m#o%BqiWuZ3d0e0zeQ;hTDk%T1&}&
z2OpQM5r**opfHX*XESaXYl;VM7tA-rMeuRWqon~CKT7ArppazV+5MM-DP11$w8d%X
zItfXeBUWO^i;U21XVXn~e0DyUL`?a8$j>f%4r?>{+|$E`1e)xS>VX=<6aIkHiMxJK
z34h~L#Ob7GyO4U`lm%D)4R*v8mWh>T@!YDCU76?eAD+zDrov!Hd8K#~Z5I5-8EEfU`DEP#kVdor^>J2(rX(=I%R37!UWi%?<){vkg9XXyDtZ+FQ-v
z#;6)up0O@Rzj=PYyBF%l3g`;gOf9yoc|1NOaQ>~zS;=~6v;H-tx*%EXQK}#T-;~q
zUe|(TJ$X+wvk~vae`IaN|5Kq}Eq!U?D==C|+?1{Ic?ez$mVMXDd!e|r?7nxy;k(&p
zBu!}=ZTIZkjCnsP+dRaAQL5VVol~Oc2FTz)(;}h)StM;!J13LSpXKEpkAGV=kuDi8
zx_jQm9FY2q4m$y}mMR{GC6i?@u$88T?9_VKgPWvi&|Br&7kbohgTtS;bS?885&bI}
z0RNTb99W&Hw)thZGurrqKU2k_>O7yor=#s9EzB>fC=;P_{5mG4TV>tM*}0HAjv0hD
z*D$K_lEYiljO17`1c>UdeZ3Sdz)LQp&S;M|xm(^+r`^r}NSBa>6cBet|`O9htz32tC1fHHc@K
z%6ApT!uto&L0Nbp7K#oW}6qL0j6N^c2RW*l;Tp#
z1~23+&*nmKA)S(t3c8SynveW3Xy1)Ua?YWBiHdQYJg2J1vm*HxnHPEi)hS+w?Ydp#
zp3{`3eCKo4VC?;eX=qySQ}Trp#?T?8V@2Dg47gR&S+Ey$7
zT*mgMoFKT3_qMuTX59!;Kpuv5fG1Z={w^HEVRqpLpfSsoQp@nk+@@p+?3Vbi)^qZ^
zm(N{lu`ug_?~TgoABtK%Mp|yg-i%MvlM)8o2ON_Di)_48+FOlaSBjc@#`_
zFwUB3#0iF6cD=u?eo65WMq{UV&79}o*50Km6##hVX-hWxtm1a{dbl|C;9
z9CnNCNQ$wteAn0S#qTDnL&?H(FyuIi%
zaaG{`_3LjL{3~7h!~TyNg_`Oea|Z!R6lpo~Ch1Celcyo>{Pq{}f5g
ziT<7z!0Ug{!u?<-Ft6t{0@rnut>h2b|65(BI-bYI4MlQbPrFgA8wyX-M=zs2OrH5E
zvqRL{F&7nl>AGowUw(c{_57M&8(2+$_fTiG76BTYu>s0h5W^$BSYBQ{P7Z=lENi2o
z;Xh^o;yQM|6X#cy$B4j7FXQVu!8gc6w~N=C#N!KsoI{gUO>fnSPtGf-f_}lZJ=sG*H4_d_|D&OqC(N%~fK-(nCDy#MxK)D$s
zU&qfAp;=Entv@Q{o1!X*=Oo%wSoX@fEv8Y&Slf4WK%l_>20K;f*x6%7%y+e
zIuQTx!jFwaQ(++bf0qw~prrZq;!#4b}Wku*nns&vrcGh=Zr{LjZy|?`*(%68g_CZb)*8FHYqgR*!!#
zlL1!nGx55DY*&7*Vrr5Xc+}kMg0DRrQB9X;$r!qxN3~GgCqs`4d8u&siY@D!(MQK?
zb$duH#b6%t?93Mq^MzWlO{|`AF|l6tIBh#e*gf0@hu9#{P&X(7M34^
zd3yw4hW<<8-->KNP7aFVLZs>%nxsgZ0LVE!z(azBQKT`a^
zXTCQ!aWr}(xqOS?9Nu33Rwt}CjAiz}Fy(*P@PA?6|FEl*ozokQ{D0U%SyA{68^2*n
zv;P}5{J&u%JBR=1quywEZLFRDd)I&Azt*9cfK-&;?(g0r5#R_Y0^)$sf9-#JehapL
z0D$uj0N~>Ocb;K705k;y0N(Qd&inQY0MLQ}pmFkl=l$Sg-2|x-+03g5!pnpTmZ%kzZ*xxuT
zjamu|FbMR>p`$vJ{ekuI~@aB?&0DoSfa6ri-M5Sv9L=&o0Zz83Y)db
zo6ZgJOR-*;v4$y6NL;Uky*zi?Quf%`n7oXssp+h7PTlUcwOHa*{70UzvfD$nAtVBB
zxd-#sD~*;bH8UO;Mq>?Nf2mf*ILe{1u~RwwD-zC=EZ=T-S?IOq`QGdEhN!w)a}y0lfu7yDUd-ti64VqPPzJjw@?ZCoj_S
zoI8bPOmM9sF+4EO%nS`HHA9(h3V93g|nW?LpnTcxcl?=O(A0>KzzXftos{*cO@f42K9gUYBm9wn?<-e3!drGpO
zm*{d~l_#eU&u3uIje~nJtCbp?*!pqjjo6*$N=PROIhvvbxrthX%}s+1Vb}U(qs@x>
z%G#WXmPBbU1)8n)f^*Jbr%=E*3CkTucA@GqUB~AUs|+)~P4f}j2r
zeEdVl75)*lL$o*C#^WxwzGIh`C2T7}Job&yqOTIbkTv(`57`6#SaLFAo;yr7Er
z1~}xvPl%cH@^!AkW`&uf(uwZ^;v=80_(7V{P_af+
zWVSKhb1owO_Tm}KpW^n3CR*|;)DN4%;&AuSveo7}Fu2HZA`2#ZXnyDyWg|z;UtRi=
zCC0?2)W_Dbs2pa;1@~>{ruhy7vE-Gt=HUS2swG`_;~qw$Cn!{40|LcQ*oAKFTt$VI
zA6v@Ay54GDblMOe+(Yt|R-TZax$3=*R~j1z#!f*-t!>mS+mBxS+C7b*I9N1M$@1H-
z)ia)sP*+?AWsR)b2Jlqa5(~ct1;wHFkcvkoTH9Igta8n8T{Nh@4YL}DkJ*kN2SKW*
zS?w8f1JP@Z)^I7P>WKc|g3w2lSd{1RCdpLBsbH*jx|ScHY8N62{9TR{8
za~hX85^k74yY#2b^MdPO5@w}QI5o>=(0xPY&iwbd!F1xVv0-~u;@hY>X|f^Awc%;Z
z?#aCURn%70;c@gsWex1iomW9_&h407!e$>97WM*<{{LIA{?GmY^uYh=f&XuN;N34M
z*oBVLYzG?
zt=dosH;*oF
zSM}#U0$>=wena(!zdg5pZLm%EV_oY`oJyzAB8{Qkz$*tkPXxEuuKo3!(=IsZ*70U=
zB&5m*oVprlb=kCl3e0F3?l|A*vun#-5dHn9298c27e*t>B8)mfjO?$r3wdARTm6KDtKa!`mv-9IR@Xo>;8}Q>7
zXi7HiYzR3^9PR(XLItSFeI%Ae%V-5qKBmN;+t2&YpzJ~`MkhbnL93YJ-&*Ed!jeO=
zz2Dl+hF1~BQ6q{#5)gLubuKVn46B6nbSCC2Q!u?R=1$)mXAH2
zX}qMKu;j99?cL7$5r6L{N)se2w4yT=W@`|ZSO
z(coqO_P^EPQ+wjkPOouJp$oqR`x$6GB0Y%p#-eUcb@1MyiOX6(A1~6P;Js6~{3Wvj
zo-M*W$Mkmoaq{EruXO3-)>*C5^VwgOqodg-_MpqlVVLez=Pi9X+ey1elX9XWn-P=L
zK-g1_h*!0i{f69^UQdC|*nczg(=61V%m`(nnb|I)@bmrSR*bFmh2HjejcIoxt}D0S
z_sdyTEI3UyIjE_&UuORflN!6{^Ls3dNcQ<1|SF^!2esgYJG|H
zI=n`S+Vw3vi+Bgvp^Bl;bS^Hj=at~Q^j|H`78LC<#+ydy{vKocnwWPj`}?1!t`py%
zhU+*}TF_j3C&j3NX~>I}1%gjfVe*&$yENC200BVxXf7vANp%(#LfG59$S=?Wdyh+T
zqZ>YxNS(}>!W!kdOUiJLsveeJJQ^cWd)nEF*)iN|GZ!jN*~@eb57x6UYsJRdrdcNnsvXWHNs#E?
zQc(RtygYJn-alEV%m}K`)^7#;^+{I!bKC3q^|Hf_8RNHx=(sGT`x2Z2C9MULCY%HS
z%0OZ%m8}5(qmyL~C-ct|FL#Blco-y4%~U-fE`8oSt#@&CwwH>;U0I^N*{ka&3q7AV
z8)0Fa0#{acMxZpw?<+mMP`TQ8yow@BHk!Gho1;4dj}3cnk$)`C_dQ0dVv}O|w5cIQ
z@!@LpTcC`^uiD(Dyr0P79Nl9{gkf&9ODTpi1?Bo50;*J^m
zg!tiKm?~b2O7!;T;mO43$nj^5V-A<$M$MVh-R7Sa2^{QC4lr?wOL|#jo+kf3^JYn#
zDk1wp#1W~mbBN?|Ki-ecd%i@;?&ky!3u-F>Q+;;4;OH)olwo!n+CEO5ESxAk?i_oUkA8}PQ;moLNUb5cW>
zq!^GayoKrZIJ)A%P+*m5lid&Yx@+X(#_Fn5?~(9D2YMA;#D~QZm<8m9;R_X>wKoiMOm=$nJPNY^4C-p)j;Ri8$|>?5BM(y5V*miB`cs
zurM#cXIWyV5y^qmSG>jU~wB5Z5)ww=>uR8!i=M>bqNY^BDi;QDmygA~{j4Lq67KGJ8_wy|>NFo2DkeU0PpQyFsM
zaVv7vT=7Hsbk13#UHIL;c{x;jUH3-#9Oatdz<
z*=Km&Bi0$75#_WWFLPkJ#R-G8a7q0FuDc{Le1mO$o)}Ixt|}s1Jo$V=+>LZ74I@>lq@R&riP&YHaAyTDhdeiWH|
zy(L-D*Uu~Ga<)8j$So|Q&lj5zs7bl|+P<3YGN)H(+TCTh6^V~SKJ5f9VxUw~^Z*XT
zL^st?TeR{NHnRjZXP17)c*fXZz-i-z0{qbiyG32Exr*z_=!N23n|Y(&1A2dw3GTF?
zEEv4-J&c8p^Pt&ec{>kwjM6K+4|o%2D0zK0FAM5>dPmGigM-kn0i%5%6jdPOfkn0E
z@f^k0en(zum`Vh2
zt=Q8I(u(Y?1GL`2Y!1)^PEx;Vg#Q`;`%Ei`dVk<`yz!KtsdiPdArHD;&Ve8;oXz=P
zv|LO?hgmQarM4}EELd5Ak<{>>c`m#xUb}p5LZObaSCb+afJ5=k%fBj;Kg$JmJ(
z`nP&DPch?&BFc(<*WIq>q-ORLUA@7O{aEPcg+RIu_kkLT_SJI{2imL_Q=mrlD(M_1
z{0*W}U{v#huzvXrzQy%7nKg*KT|;@9n!Cp%eyJNagDP>&h)H!Qznq$Z6+6qM`3-5|
zk5a_BlpjhA_Y{F9)V))iVk{CRV}&EVmUihtxZS=HD~a&Mnf+`1tqWlzX(Zs%jc
z!u9S&v8^*gWfMfFv;EDKfHyrJ`#@|CTrVw#k#5P@c^%UD~TBJ5)5
zn~eq9l+rK_X_!p9JKBm2gouBPU31Q~Y05J5VzxwMREcy@Bary&QDu6{&3+@L~{q$9rg#S(Rk{v+n_b
zw2;2+qX`!PSYvP1Qr%qb_PEv75HD^M+VVqVEK93V8vRVF5nja9T@Vw;|Ka+-mh0p$
z|C#Q5g;Z^LLrU)!e8Dw&e6cQT?d67Z9)H&F@uw3x;B)I$4oexA@J@3Hv#j-Wg3%b%
zeV^`%UT?vjUIX$^Bzg!hU!L!5z;-)Fx#plc?LW)BlxF3RioxvRcxxf;ij_2!?xmkMwCRy-dsT)P#T56J
z_mS4rAn6Fx8B9C@7FS8d_l^g_32i0Q?AN3!Y}T5Iq6ul$PY#nsj%ih8*LeyaXI
zHi(4o)2WeZ6u`K-JX_-NExdlp2f++#s^qs3i2#re+BNY3haA_HdfxY8Wj9q`x8oNt
z9{?Fo^a(k@^nfB$kW&EW-T1eC3E~hU_Hv$dNO^1}ch|F-!1FY6Ybf+`hJ#^|xYhGe
zS?JE=d3{6L_rL~3ykvklXShV$tD>_^T`$fu&jcv`+5ebr=H3z?9}GFr%9`e~qGppYyx>p(oYty-J!LX17Y*{2xB
z{8d4UWoDpVIx#pssUrxzJHdMIU%s>%IKv$6ZSof^oEsKl@!nCL=YYJS8V9ojWBjao
zpZ)9~uclT6AVtutYuql!o#l=?v%UTHGIs!tfC$z+@!G-Mb3x;D`m3H3YCpYc^FG!>
zd!rSo9c$zP+gVFNK*DoYVCT+UD)TzYqyg_Tf0nRbcErtSk?W{E=x(@G#jx#RKunEZ
zu?Qe)Km=5%Q-QZWcK`aOHAf+BSuT(4uS(JAlDxp%o77Gr39bchwppYs{;i
zyu4E0`nS_f4AqlfYyv%-8$zDz8zz>6(6LXaH1>3Q8WrAl)=jR?`-&HpJnJq^za2k`
zryiL#C)%|cY&{`{u(!upz>SBFQu6W
zi3(2YH}S&Mj_7%Z3QHbo0riHP-C@6fhYe(k5P2{pl>#vau3J2Y=UlH7}|s``@-
zxkI(-!<`15C~w4jxi8NW^q!YXvSSRLhsQ?E>h)>c>Ezm4iF9b77WZ9?r-Y>XegYc}
zoh;V5zRdnsZ^Z#Za{5*F?-}Ke5-LkWiO%#unM-)~Uqr>CU4yU#3NA#z&*0sBwlqhh
zuLpEaE*((Y>3#~L$Md5P`2JQ%0*dngB$N}RoSfJ)>MHOWf6@H2$QOdP-uZgfv*v9E
zuQ}$7^fcV+ZMVcz;Bc*4(ZbHrq+7BK_gA8gxV7M4&c{a)&ZSPA~oRr
zqqSTFy};s)3#}^_J|4--W$R-k$(rLMi33DZTkGXc>Vo9S0D4C)*p$vW;=h`}+dXHz
zKgN`3VUmAqGwj(PrW%rdRFkw|!Xj1&SIKpuVODu-AeCC=Ysnkz9WRP=tmO8IPoa>u>)M
z{Z_;-htVZ(8tOx}lJ>2BOILKxTwgaZ=t5W2P*3z8qrtXIW+5x8-)POOjTiZ@0x!<_
zE*=G;eN&(NX{=@ESE?wpZbk8;klIWD^(;aoXn(Yv>vK;if6b#U^eR*QwTHpyQ5x$2
z->a+0=H5g}P#&7K@qtocKOpnKZui{x?^)X=_-Ux6?IO2Tp(|RVf|9Uh?}N>3jdad_
z4D*QSY02J~Sr-hm#%3(p;XiSTrXt5U>hEhcbBj2>M!JvRA{``Ud{lT}0N+Db7Ni&u
zpyWbPrymxc^i2wBeEdViLaCjp?0h8t9k2u9Dt(KE)
zvqk5NKQ82SgVg#>Dz>_%2iqDHAw044JueBPs*KvxrOpfC{W>Y7WlDAK!FB&)L0;y1
z+kY@-q&+qgaWLg*J~!d0bZi+Y{Qc7y{Ry{+0uJQV62%1bQ$+)X@!Svwh=K`5C9z3D
z4-qVZ6U4VgS+N5>xaEOh=|uI={0bZx?lXDpTNxhvIS%x6Ugk&+ts6S8kT-mKq*drb
zBb@q*<8Suy)|w(;whe}noZs27{k#KsEWX3#@}%3MfRulyCxx2aH!!?zhjdK(_C|Dp
z{Zsc}>n?mf_V<`o&hb&JyLLY#6xZB6JAz1jhj~7nLcLZf(1?9@{`Q>Gvns`GXZ7W5
z#+Y0SdXn6Ki}_NTw(z|)f!*bUeJy2%V#U|L6E#W*<;&b!b^X%?znHs=h1o6l8P&Bb
zOjVI5{=t@~1dP)eoaY}FCaMM4e5~>tSq(k8Zr<4^cjc&<=yC@)fq1Xc(bT5V$vACG
z&vp^xiaN&h;g{2p?N}j7hMw&?
z_vLYKmWIaS*|wi%DW%EfAzI5x6dkywm>0Ci!(#6v+0Y$o=HY)uaUga?r;RRBki+|h
z5Y}%wUk;1S!D~`Ff2h0RQTae8-w?>*FIlS_-Z!r~eGdV@oWfPLSH8>&_?*73526tf
z@iy2|nJZsA{D^i~&x^ZHw}dcg%~;>^(>{@=1QNk+VTL45VPcq-
z*wT4MiYfo_hUXoY4jG01OE+pq8BUi#F*8j{*Y0~)PLv_Uw&8eiqX&8DiG;*OR$veH
zIC6qj19--*1M>+6L{nT!3@FB9zBYgCDNTyk;pqN+Y;tXYV6<@lH@U3Ad3TE~_WWhO
zF7~lv$-93}(hh|Mk%~u;h+p>fe8d}#zQ)$phtBEVZhT3p>Yx(W^-T9ccJNfRs8qG7
zlwO}BIDkSUstBXfy<0eE87$Vk;r0BW)%BX$*0l%rIe>JnDCv%#4Wy`KvuH%QT4wbv
z*4N`qNxet*>!ggDN;T0=V*6M08SsMv&hYp}0#MaFX{&xUs)X5weF)dg&8i>u)0pF+9>Uf}Z;ID>_{WiRi-y!$^v^2c%0
zKu(llnsrE{X3`qP+M}JXKu!VuYggCB(IfQlnO@lj-|KjXfLZ9L$@{XNGyfIjOMx7r
zJDrDym)$+r^;~zRt{ZAK^E^tHU{Mu|b4rK<)me$d@9jU?1ESi^B|{A?gX;I+K-S+Y
zjW`fWYdJ3)S3M4%miE=UAa#@84+m9V3suj11-P%Cxy!E3@k)(sJ$B}%(Itf|OLZ7M
zHws|1fcDUePE(caRdf}r19ejz7L-+sOixHpuq#JpD!+@dC%6%EUNAVd0*QG&X<)MJ
zAOMI;>hpHm>l`@}153ecop#x)OAi0o(cGDP?7kPcYo8y-dK?H7kG8S)9b~t9rm7kI
zOeezW?S1H(Xxn(q6u5=6Z>s5w+!H?el-!d;lcTZ5MP(uN_i3WF;oVMQuk8Dp`fkcI
z5!>I{hl*ra1(rfJ{{#)#-g%d^WjWo|8?+44M3*OAdl5;0J$AgFm%hxFV
z6iF=ObU4@cNMM(xS(G6nT8msOGRhGkLB2YhafYb9zHBE#jpMbvfwhaG;nO6p^DPDE
z3Q4-XT_&mXs^>`k8p|Q49^2ceEe;V`rCb#TmGXq;5JwS$9;~ZjFGI({>~Z#5<^G*r
zW6%xPMS)B69vSEhDyE{AHPOsWdheTq!1LHy_?1&^{=KKl?fjomhJy|PmZcA>vq*?L
z7ze|7tK0o!^a>!*w)RF+3Qg1U!Hin_hrOi&$MH-<(WsA_S{l^2J+4BliF0;vZz@n<
zLWcwa$e1KZT~SgKj5qhZEbwr);WhgDyQvE@alDp0+HkO
zn5@#Upz#F@qg86gu6J5*b=I4Q%kLr^l$01QW}n#Yhss^WgrC_@rn5b2rlE?v%4cIC
zlLyTbL?QlW_&ea?)(L_4dl_P)ors=bV0aw%Z#svvoxIMIcw3*6bRI?ebyvIzx&Ce4
z6?)q@5!|a9AyYbzU
zvzVAYd>0EY+F>|tdKp%F|SI$H@;&^7^=dDbOqoPTjbo6uHmx|y5P<Y)VC?r}MX#`_X`N12csCglBLur7+!m{6xsrE;+WDPPC8lJSnI}};q=?mawGE^kItT8P#n6vJZ
z&EIw#%3&?=bfWfRt=!Gr7JM8GW6|^S8@cYwI59K6}X(DT1RjP2UGJf+?Xa$7eQjY)F%r;EVz{&J)1;8gB8
z?)5HuYvOpksLWAQF*|=n%Hj0Pp$PJ?wjBYGa-dpO4$cyyRg*ZEJX6+tx=R&!y6i`L
zb|QUrzZZcXsPJ58eg{91Fz|CflLa+rnROR7F>1@+oaenT`0SKl)y|y+ng?H-!of-~)d5O(VSyXn9iu$eWe!$XlbpEaUcP
zqQD0n`Wg;7SfBVPt0qf6RO}qBskyAww5RVfb8IoaT5`?=E}U!}{d4>A3no<54IH{`
zKrJ`>xngZ8dT7?R!%aNi$+ht($Mt*H^~<&7xoaHP@d`&2lI>&j(VHfpr(iXovqy2L
z?h45J<;+&scY;HSqB#CwtVx+^<#XtYi)$S#!0DEC^E_m}Fejt@EVg<6!B!QWm?YDBDHr-c
z*woYkNdU9e>yEbj408MKD`gR{c}C){GLUWRs*t>Ef+y~b5cgY%vxARN;=9<}dz$*}
zD#wfUiAvpFhwZZ}5*h39_xCE!qyq`tyBzcjnBA69uS?T3fU$YuBbx5hp?@aW=S~hf
zl=0(rzHQxWf7#Wpr^H()f`LliFIc(zL*W><_Hi$g
zQGx0x+&Vq74%!cw`3$(^S+wkk5K&HE!k7c(!FZRHq^CXs@6lM$^BTCTX7BL4s?3-7
zrsc?EYuBf9&*P!{x;wcMw~#RLr3I$jPWf$3CSLsn@FNh9g@_}K^v`Vdo?P~eait>z
zkjOm>HF!S(kxiFpjB=7&QJ9nt%v>H{Zd|OqgBKg#AW_lyAVd?I$VG)YWxt3mv8?*i
z5sXh+E&Kj##w*;T0$FxmTnqKki4uXQU>H9g5TZ=h7L3_estMxM~mtWPJ2g;m+lyy2Zj#?6Y
zyx`tvAD=WQ+zrUgy3@LQp-6uy`E*B&Y=Mrqz!BayoYFtRR{UZ&UN=Yrol5kDcoWuN
zWfHge9(q0R7mR90uMA^IH~c04E2N&LDu}J-k8EI|9Z-tU=0^v=q9l1WBCfhp{RycD
zsRJ!vf)+7K4v_qx*=fg`rW!apvv+9?Eb0&tE$qF?0(mBbVJ6G*^^Qgl;wdeSdkmYh3xCU&ZDsu(^G7d9MsS80KY-
z1;6yezByy~uUv^Yt(-YhUcQHRF%2PqbZPG{K++R8EdZ`Stn7to8QTVK4U^}aeWcd{eUp5i-@h5^w{xv=0k%T>&c8=
zrG8US(>$=Z%>ml4!m)yrFG#>JcS!}-)TeVx&Q{CBY@toftt5@TWfNc11nB75-7Olc
zoEkrgP}t@VeuP{{6|-?M9zy4a=&^;O5u*YBA7z#IErm@;-POIBrinYu*McYr_4)7haTw0(UwS#bU;AU*w{|N9nwJ)QW^z_iZ{KWfs-PN$
z4WfPOL)IID^7m4aRp|2F2?4HwhaZsBbeoX|Fzm1pwC5
z+JD|`w4HATG0emf_oFZc6Y8}j15N4yqCID&6h7333NDpGYf5bZJ>kT}@gT{Y0P#%x
z%A?uNX7elMWIiFuj>_FwU>>10!!9d;L1il4acte-TU|DgIB6pN@S#N
z+MsPC{i$tUR5~g$EHfUE_x;FZ=ko|dme)0!&Gf#l_x5?uU0<}68o~A_wK>NQ``}*@
zWu}^8QV|3JI0M1ecFLC~wdCe7slAa)F(+ZF7QL(zT<|2S?jrqfI%um3Scn#}>`Ef$
zcNr3S7D^)nPD?oll0|F2HoYT$6vah762$=k{KHMxIQ7o;==?e}*{Q8j)t(Vuv~X*D
zQsAh=YXXNC<*HbuTw%9w68
z9YvP47XeDz{Z{=BHVc;(Hf6n&{I~Zck4@XR#9$;ADY{+&l!uvmiwClIEnzrRxXz~a|MgoVF>meN-rs&d2t0($1(FXKn1ufebsh6UPj$f
zBqBDbm*Xad^Ul{APM)-Q$WC9*jQs)_(I50Bl-%7?v+#m?QU0i}_Nmyn&DL*tOhrQY
zud_SKy8KQB8`Dn*Hlw*g?N?t0){@%~YMM3wi6-6uI>zcHs}w~e3r2M(B@H;qR2N}2
zq8!JHU5L5M(X;b-xR=ZEx^}H#81+5uu0U=B?+2GzndBv;CVq@qpk)X$)La)N8bv{F
zMp4lj6~vH}9_=$!*R02ygGIA7m_*#GC}+v7$EpK7p*Ol9PQd-54fWonw=*Emaft8=5b-tKP-P6&NEM4;m!Tj0*<9qc7GEIJb5
z7jYN>c#+;M0RWviuQ)G#mITz(kE|tS6St~)mT?$}97zfVg;{BSBZ?+y?wSheEq(22
zvTv$OPT%!_P#T$GhQZIF73(=}hddpN=fUtiP@`SRsh
z!n}F=tw*JGJntL*@6rDvwpt!=bbi2nzpOJ~fuP-gjiF5YA9GuhTTB;hasyt0LJ)Pjff?a}Bje`9<
z#L}+hfIz$3B!obHTRp4@pZXAsG9D*HClVx&VTd7>()=()pp(c;Y;maj-o1KX0vopk
zpY}AL9to1y!<;Hwm0yrh_@UeG&FQW{vEbSiqtZ;O>l6EYZ#75p6CWqnEipy+>lfMm
z>Ml2w{^%953KG!tiWg;Q0oHI$<@WU4{#q
z0c=SqN%e`GjXBrxdv>L1WyKp;4KK>CE{hQUfy(q{Ry6}N)%wjvS6dFbh9h!yF@Rhj
z4mW}MM$4c3G8oy*k~kTb--@lx
z&X~T56v*fhe1rKp{Q1Xf28SLc`5emmSiw$g=&$H><`yR2WZ!9bJn-I7Tnhz+S=D
zq|iF)D|md&Pf=7w^La`$M}rLBR}FIBN1Fqaf82uN&ULnkzYz0shPyOp#kNNjQRt5U
zEt&qR#2NnqX1^z!TVHZI+RSt-WQRYOtCJ6__?>CPH0=
z_1i0fspGVkTqCru0NwUyysyB8c!7~njKVB{I3x1`7}CLRK(MvNMT@I8)!>)MymDwD
zwo-QZ#hxPZaN|$l*(G||UJonXewOqCaOOH)+P{RtV+nUX8u?D~Cv++kx8M*LR+z)>r~w*z~aM
ze?F!*K+M(Z>=0{2*5v=fqNr55xQj>%d&;SL$TjKER&{wiF+gWCOrK9k+;;vEtgI@~
z761AC`===P>?ZY9=>h^R@S{iF}y<^oHJ`sO6Y$Qz|36Vs%41z>)z
z{Ux{-`>FKCbKqKg5f*X3jHaCloc
zN-GmSdwMnqQLgnp4?WD^!N2aE_xHWXgEpP+@)MGT{Qkb}S8s{KMX_3YBic5GrRAL6UV^vs&BJ`fd
zk5{Alc9GNc<`m|*k6U@DqHP?fJ#OY#FzB#>g7RZ{fwkzSyBfs8-Vu4~$%B2(t~U`B
zdXShEkTy6`g4j0AkV=dQ^ZNS-C8A86&v;c9D%n_ZaiIFpVyUd6=)a9^*?N!3wy%)3
zb*?r@E{~HVH1Ev~sny{R<-s^3A`mIh!q_aR{5D}}i@(qRYu$a!;}~pmttcpL8v4^4IGaGo1}3rBZckXmeeU6qp0UBLi~+ac;l2UP23hIE
zBt!$pX*mW%dK-FxDK$+>+JryYgSl8M@Qhc(WyF&C=i0P1V%adD&x&&Uz1LwX7a92P
zRGyy%jFH}J0POTvpAtUrzB+31Y(g5>J&2#gFLyce%O2$A>
z#QaF5!Ona}v$x9gnKR2O6HjszUvsX?&%3`q1v%i`^t+H@S=KSr{cTJ*pf?;Jl!;^(
zQs?j9@^)}>GqDKCuYe?Xb>7)EgIU+|I7b{uzhNvWEm9RNvFvvJP8`B9ml)XfGQ|LW
z!vB?H77&OEBbb;u?hWTBR%4y{6i>BMSUgtBt{K6|oPeM7d#A8ik=|6LzAnfUJ7>GR
z!lya7dNxB+
zCe70BjH~rfkQ?E%sd_Vqx_Y={hSKb;e*~%wzq{^KO2#%fqO&5a!!>W_%>Hy$(CON0}vXksI0^-
zBU8G6*C?F+A(BoJal$mCSxB77Uj
z0*7eQcpNQ?E!1F+FSWiNZkivoo?mz9E^B5VO^KB_9Vkwbco^Lb#JB@)+NfJ&^18&j
zArHGcqMu_i5<_Y_s!*NGmes;|*myx{3m1AEYweH+2I!IRfEHsjeq3ZA<=@~fsqUVT
zAq7@X)3o=1lO76ld|vTEp$1zvX~an1YLGD_s$s}loNKydo+^eAc^S<&<=R$hb>e*O
z{HO%-n&AAt^57*?+C{?Df?Yxd@tM2dm>~F5SQqRVbd9@qDt;F00u}QH+mN4(u=4H!
z8p5RLaB*QY{9?)I;3Wz0eK14UmCnX`>#12Bg8O(c)?+O?MJ*Lf=Fd^VFByb%QC~MC
zt*q`;9HCp{zBd;*6c3BwE^nnJ*k_aIa}XNoxg59Pva!YJtP-vPf!yAh3qyO}N0
zmzb3UDJnCTn0Ki9X*SUxOAhT~BICY8$HjHI-1&Q0r$c8Tp}thSQA)0OpxLB)@846J}cc8V~23
z(yyJ!8$*`@s!>VUt-jPy3R*Cw0~OJ=$^C+kR#G%4cLvtqhhZy>{S60j_N~c6gU2#y
zv`h<4u)R&hedf2u7CKc=y$By)Gk!}4)zdu3HY3=3>R1!GZA_q65z`e&f<5pcQ?1&V
zH?2vA6F!G(8SrMfde$p{01F
zn6nDIBYRb?fjdHN&3R6GqwDG+n_=T+UGG({9l^0$p*$KEP!FESL;%zg)-V$gqYdpy
zfgy!i#~G|b%pjr=>ae&dV=-pTKvLVG&)Tk2h57mKkxkf-O6jDQv`Q?Tu?F^nRV5pP
zmW0ej>k8Oas_6|FklBM-vw2Y3{KzWx1MI~(<9Ed@4Phy&-eZK1gaaaefE8uL&v(}H
zrVzs`4iS}Ra6t>UJ@*1ib(&s(^NxDj+c}wCs+j4J(9aZQkC!u0D1*!e$o*vtlFETh
zuEq-^hMvsw6~l7ionf40pGf2v`DN5jb=*|Ye_hHOTNM4AQ<(mIQ?K=lBo<{QW+Vh6Dr%4)%0)FqP!REOveU@u@Qp
z?yiQ?wBgS?^$3bIY%zPXS*CRkoKyVsGw)Sv|-_f!Bz{#&9bmWn0pcp*B@4@wA{8
z{f5*n+#P-97mbuO93mzwJ}LzbX$m=Zpkh%qzhg7=YPdT}PSx0b_4psO6ECc`9{oA?
z%}95Mp7+BJ$?Gdk*E=Ikiz(c*7-1>3%w)Wk5+0gwsHh=~f1h2xW~x-a6uq=+6YLul
zrktdwF6FNXQr(E`>D1PUTT2v`?T@k+fja12eQ?pMzrTs`dDu*=SKCjVpQW-_+c3*2
zc9vD%h1Rh0i!7B)>a_d5grBpxVvZik@WrCV*h#v#is9Vc@(eO0C8v*%*LJWFW*S`?
z*O&n;oWHt&AZ?JbwQd+bqf>d!6?MsRSi-qiE$MRYU_RBj#rt9E@+18u_XlY8=zr$~`&67yf#dNI4Iw@L6(=sQ*Vs2pHbv~l`rYyG
z7e2PA=0BqE5s$<0OV9x(1wr)qupdE~@GSs>unO0AMG*|RF>~{p@Avi;;*Nh#wHO7p
zLn5lj+#;O9>RUEr1(l4Jl`ZOu>8SF)qR#bKoQx0J?dKg!D&$QxwI`+awUD3mq{L`O
z^3rpqL=e(3-X=uGbn-XJ5#8y@&%t!JMb=^fh6;Ez^cmk+LvcO_-!0eYE0~{1SO~$1
zTuj_qK<|ruUo%zrw?=W;3`dnBaiT0rR9&%XVpP;CRxVPCe@prmB-zS!N-yAK~dr_D;9_K`ZcO1_5EZt8lH@JK>
z21;1&R;6)5*e$J`PyS5}6F7OG?OA>Tw+A7rWyZu#kTk!lz0y^6xPJrTzECQ<7%Xor
zt>SWiqzYSK+@*A)^-#cC`^7T#-cbMdhc9YhzRehfIV+HwmwwujZLtWGRZT5%PNKaj
zET@yg(N6a=V?2>Dp-uFx
z4;ZA~?RYyFU~v^yI;9Lmnm<+z
zObXofZ#0@DYzkc1#oCPI>gImZF+&mI+bD{|
z+vcVGjEdUbr0A@orQvK!*!0M}V-G{_bvz5zeI@!c0d!ZxIrD3gYMeSe>%n#r+bw6O
z!yJvdpF3YBn)Du)M&_n-`YkcqCDf#lvZv>Mres&e`kFPA@m-#$tcFK+~4-Tv#(@yCp&B#Z*GU;ihVtF*RYDJ
zz3t$=?WX+Btto4BIz0a7H~;mk_sQA2cl4h5@sW7x3*k83G%+cPoyr^)J8My-0}ZRR
z000%1vC1}GZ#vq(dhX$s|I6*`M}{cM%FHgDh&I&ouxy*@!+;^^Sk#s2M4>^{LBs=-
zqX?NPD-r7=HU-U_uB2F&1<{44q^7QbMsu^YtTxlCHCbs$(Tqw~FNn)5EhUuYriBnQ
zYuFp{HkC4X!BXN_0)&WN#A!j(nQ!U}#!*n33Im`xkz%HbDJE6~7!W{A1dkajrZ_o|
z2|>&(5ghHh>P1(lzw-x^13yMUFx2IIh-^632^M9!di!5Ld+)zIakTBtqkDUbgBXcJ
z5~#uID2C94zw
znwqb_m6xJh4_By3yeq
zqZM)EWoW;V!}}kc-pOu#Px!y@{iyxSdn2o=GFh##*7eh!L&;?e#|%TeCQmJY_1w39
zQBS%rD@zKC%DL<4RAO11vNCBb>bZN^I}nnxwp*oHle7AIz{~%0=HT%#I4nYU;Keif
zP~<28=m$}^j7~*an>varh$fkkOh`sD6YC6saR35SO~OLXEJ5(gIpWC?JJ#Bk%|TQEWp_h0&Mm+cX7=
zXcPi!Mg$N83n0P}JOBhx6aW)Mq+}shga}jtW1wC8+9GL7jRE774{=6<$9r-4=a2v8
zH}_5X`u=T+GOf%m^b#hGl)r^`86u@ObQvLlpx|kOjN}iA!o8On_85
z00xi}^JemRjC};hMC~CP8O6bx)DbJhjfK
zG`q-8ib@I1n{okACMATHm&2JgtsdW>`tbJeT>5=GUX8!$*FXCDZ~e>%dw;B3sym{E
z;>9gdO1EZqiKNZd%?5zy09eY&V|Oi$rY@%Z5P7}%rkF`r%YxOZ*~nfkT4gr3ES1aF
zMYY~%l?9m@Tf|tUK5x#l8r8rU0FCqAl0_Z+&b*ZjN_lqM@;N5}Jh=!iwZy>+*=uq~
z?*wabb6t#9#QkkE?<&vS^>&m0%^!TV)ef%TV(&k@$=-R?O;x&_N;n2+PmSmOXNTYQ
zqF%Hwt=0RW8W5I52auz{0sv4}X5Jk`U3HP8RkM1t`c}03`4hA6*tvA)i0OqVJ|Yo?xuQi9d1#3WGWl;%NHcuEScFjmTqjjUChR<}~OQb#FL
z)S4DTU~CFT%-X2wlq^DsWouzXSR?Qf_oXDQ?hPd3vPj&_Y!-5T&a~z
z3NF{2oXTU62m}p4#Z-e4yc7mNP{ja2>?t{+7?seBBVO8=*Is+N+4iB!X{az&m}Xo*
z`^{Ir=Fz#mT^NOc;GiZF
zGBMF0CNP1@1sTB;EL2?#Fe8zOzyN~`5;>r_uaBtDo1}VKuno_Rx@Nb4Yp{6rskkQn
zWcLBf^`kv5dF2VG53Pl`ii_c%H{~LD@f?ab>NYp30tpW8#a}#L#}B^!U%mUEeb?{&
z!vE=5)xE|_D{gb*JbBb@il@c0v8O2{S=69l$zv&`xE}9_+mUhqUfuUXySaf4g&YxcS&BN>8xcoie4{Iyj6lIiWI;_&@>aJI+#hrF#ryG?~
zm$}r)e17PTCqI2E{EF|h_x2Ui8k%CKZkg^>t
zI8-xma%K|Y6=S<~)#_?9(_7nEFitL*0Y!}>IS=^|2!Mf@1X)$iL!t=|<4$Q*lko=@WX
z04x;ceD}QrpL_Y={Eh!>2c3m7IO5{X22~Wh4S~bQuov3N4j^WAt9nAz+31}~H@SIw
zvh)3TNNa+H+S;Rb&~b7}xDJn#Di;@RRR$
zxjKAe@Z|Z6AH8)e5w#Fo`Ng07`1gMLAO6qRf9dN_e)uZ~-}Q@$Q--;7A7xZGO+4tH
zK94<{Yq?t93EdgVo(!q!qy0WL{;~he&h|CMaL40?vM_ljn%dM+Xb@~6B*PxcvJf*R
zf>$YZR)|$%v?R!;&Jyxcl@ik~vXPX0t8hB<1RLetOo0`n$Q?luk)VhPuoxnE
zgp5d1oB$?LIRuD;z@U;is;WOxQjT+<3T8_C`5*rJ!@qm{X#Tc7?ukl<2p}p65{IXo
zimFm9Sc6#z03uQaP$Au_ur%&bc`+sgBXSBVhy-s?h~P1-xCo$l0#-pR5CQ-(l%R+J
z^C1FrtVokx;Z$)`^C6Dns^+{2JT+<~`_kfv(40QRC0VC7(aO}*aL!*22b_^Q|g~&7V`tUI<*YXSnXPVNsg_VsTc*f}+K^v_?)HXQ%+$_LNi{`qUSkFG!UYE~BZ
zpL^v8e)Q${-g@-aM_>QOV{7MMAHazpM54)2(H?oVUcHc`pp><4uf`^m!zy3;x%01P
z2dW^JHmm_AfI5hxFjXmX6d{?aEF?1(0?isnNL;e)ZK8
zaps<4UiAFluiEabpLpPdt2q|~AwVHdXc6aGMAE3cTmUs6W~>E3pyYrUWC21993F#I
z9v?z65J1GJL;wW{B!~s82{2N3W+bizvnnW31Xh3`t%$ruKA9ner5Sq&JV8s{XGmdb
zPMZ%_Ro;=WxJyTfegaM@Uc}{Wvb(;iU?q4ZTaz-{aE~RAV0H4eo2ds9B+JRJq|K>0
zw8s|rx*>RR3qaCOMxLU`nwx!-Z7*hGC+EC8`qCSpJ^b~*`@@(0gmzlu%?cr`U}359
z85-W$WFuIWCUQz}(k%1=<2RZdYgN{~_1TydH3W)$)h}hLMI#?syDevP(Xm#4I?DlB
z`xtiQqYaz6wvy~@kUbC>K-zI^+*;##3yt6!006-3j##$jxuf}wi@fdhD~~>>^Y9yg
z@!YrnbY;mNZ)R6HkxRL^KQ_Fe_h0)+f7avsA3vkrpMG@h;umYNeJ7+dGAotIE2^ky
zTOQR?E7F>t?Nw(!JLZ&qd7$$hZ#lPh#1<~pL9A+{L9m683=r4@JV<6@T~yxXa#lsI
zJ7P+r)KOq7SCf@o6z~9`ZUw7Un}~2rx!M965ieCn+)H6emLkq7Qh6|>0$M^Wg}0dp
z@>Z8tw^Bn9SVC-dl!B$?QO8n8EZ7h*)U-KiILpIg93|6@N_Fl)1XKVqRf0i)7%^k!
za1bLW)euD--e5*eg4oDB&Sdj?<*R=@zT~G|PW{EFU;H%(ZttxbsdCJ$&U0chf%OVQ3VkYktoh%aX1s|%@9D9W3c9o$*K|z6$B{&
zB2ipwd~hZ064Gwqny2cN=v%N@!LI?HW^rP<;`s;(3$s%^FL5ly6+&39O!$f`>ahT%
zG{vk0ZU%%F_ky1&tcH&SyA`EfLRz>L0Dxdep`;stJ9c)z
z-@jOSGBuvlSiyX`9%nE}n{gfJ={~YT_2c$LV
zTvS0+L4;(QWJ(npL=gl}444v=g``SeE+{%^-o3?SQ&daAz#?r^h$3q%D~rQXL2d=3
z1Y=z4UgGZ3n#Qb@8Q97Ut(F>*7PFY6)x8mkI!hga*&>XYmjIQrErMEHB4*Q!Gcw;X
zj~b`CMkV8jN{XPUXX+k>6$EoA#NiDnB8zixFmmpalBH&lL@wekHwqRK5mNK<>%n4P
z^YY%07aKlVnoLo7MGz?|s&3>tT3qZIK$4rpB{z>jwI8)U>T*gEsQ?HZkRghys2+=R$jyQQa1c-lVueJY5`#4(3!;NjsY7>&$l@ys__7
z=bxUMm*uCwaZldywo`p0L3@<3L*fc)Uk?I91WA|=?;d!Xtn0_b09m8bG{B0qR6H%<
zG_w^FPt$S=UTRgCSY+Iov)lrWl((!wi>U}HRaLdFJ{TdR$XB+MqqsDlkE~smGxtH1
z3`#j5YmZ^$k6WDnc0;@YTQ55dFQ5KOYE3QY_pWkDGdpz_lfBJ)8B{F*AlH(jztbeAJXy>A;mg%B
z?u2AC2x1@x0G1w#T8J4{p;ZB{(kH91vQnNk5&ZJM{l`Cie62h0z4n3sr(zZGU@D1e
zv+Po3g55#E2D7-AfF;D3HErrGY!PRvvqhMctYL3;M!}`<5|>u?sIi1u5KEy6R)6um
z+aKS*f9AyyxBbF0?*FHd}z%lTH6_CP#UX$vt{EFUhbK5$94UGV0$ZAtI((U%160McU-
zaSL#&-}-YSua@399pdB$K(U=08O;HR&PXhJu?uFoES{jdGzzdy3repIwo!%;zEHMiwP0hIvD)HY>{5R-B$g10Hlv@UTe
zgr)Ejpp@*O?ybZYVyjD;SqpoF8Fh`oTSx=bw_iU08GF0uI(OpYO5*UU=M=lz`r}iw6wu
zBgGk3F##Z;Djygt2m%Cxs2q+sxq2w>;?nGxnkBm$ak=8VkKwGXRv(Xz7JfV`lO1E7
z`Hi_wSJE!gOIB6dEXFPN@d(1gtj@-vaFJA3GNGv!Wx;HIN>}}#)tZrX^-a|4))l`|
z`HeFj002>LhB}6Z94AZ(KAbW&688!$u9EB&X{o0bLb+T{XK+H+AYwv_!s~0LO;M*z
z;dLh2%10ha=9(8da__5TS&NPISZHr9I(4ZmM`JazcDI~9l)2|z*_E~V%;z_A{BeuZ
z4_0$$6>hDG+gHVCMS~wp25SHS)&;HsUWMuF;yPg27C6Jj;R@5sO>=sPYc1hsbc(%=
zoy%G;JFCaWWzBi-wL7+q;@om?7qY3VFl{+F12CvaB=?}3P4GMb6lR*=K5<4Xfi`F@
z01z{4DpqA8dzbAvQMM9AT3%;cqEQFKFMV+H;~)CzkN=;xl>3Rvqvy%2vjjpIO=eR=
zl!inhnjo2JE;CCMXft0zY;(4PQMXc{mBa#;5X#&O)(EMU
zyv4<8w3tmZCYB$0EQc0l#d>gL7DUPvBpB)>5t(zZ8RFdIP$+6JAXsqJ;S2yql`AkJ
zuLcPMhhUZ)uTK8<#<)u)Vu;8^WX_#)5jnxDB}XNzE|>Tedh%#z@@P#;!KmbK7Fc_k!A|=2&PYo7eB&L{KkZQ7u!~hH;&+4K5LX>t3xW;|n
zvnHN6IIp*g*ZT*4{Ovy|=DP?BR2)KNovS_;%ifoCn)N&f-L`7)w{pKt`c;<9+p5xX@5-SzkW1{YbhlxecnxYAQbjy+_4VTRL
zVi$R>&AX)*DONkR9BHm|p@`HT-?H)jb2hTQo0H>j*ZTQ(O3SS^ar>$O0H8TDa|`g+
zy0{7W>FZ+J7pu0I-4OsRcf}9@5V;UjAd-zz9G#YXv)L|hL&}wHNvwuyKdCuP6SIp@
z8sRi+MU-$HTAwJBs`e;@!6KWU+&?a_^&UF&qZ(9;0MJ>L!DY6@{5c
z6MN>=NJF3|i9Cv81^|&Kxe-D|nTiYm5P_nIqZkuROlX9nMgw_#(;Rk0p5i2`%t=&E
ze2#reCO67x^9~OAEU}w^e_be5sN;mW4_64_UX)2C}7z=6$SRvYh
z6ry?04}at@H-^1uX10IqPyhO#-@00U{Y8KCP5+b9dUHgjj=B@&g{va05ZTBzBWrFX
z_(2tKqCQ7GiF1m8IMU`E(OfS5P?ev8SHQw>BAsH8RuLKzzEfWIFg_?+
zJ2jeohR>Wan&9Df!*Tv0iFuE=P004kxTQoajt0kI3
zbNv&VSnXP6c{;1ztZ_DVueG-tE^2mJi^X{@bWek#h-BRX7aHwokkbVONXYA_ifN0H_v|qAUoZy|k6I>C~`H($>j`S4!-1RUHZ0QJsg<
z>Z`g8Z`SJ8OSQ(qp;D@oStaatiB)*hfJ;b9$(Aq=0*`tsCA7jzk=o2l7;R>4#D=w$
zyiC2-QOb;vR5A;qmDB@CRA6-p46BP(NQgyBuDu%q6;!?6R3etEAck>r1vM0h6qT5X
zpa>{JfYss=LlGh_V&nnC8Vq$fjYve6rywd>?3q(8C{7|c0Owxu9CZ~z2&S|eYmPh3
zV@L>WfU&>=67{*_jqadL<#i<|OGP)oJlTout=dgHDo-%0E8+n&s|azPG+i({$zoyZm|zLy{Q&SWit*Hh-FlnOKY?aq04q0OhpMu*}(2_
z6G0V)B)J!&n$WE$As&pAi?HXiHB~#mb@9u>`oj0c(5g%zCN*wViJ3*fQutayODQvED07cMN(m7bn
zH9IL(iqco=4U;%$5)j2DmQybE5J@l+6D=+PPR?T#7`j^R;$$kono*D?7zN13P$!6x
zgcQRhp2Q_VB8UKjSEPtUUDTZbT0BYDw6q+iJ7_gefsY~1JqC@Qo=s)G;pvAL3ubll
zMx}{!&m~_xmixbZRn09b2^a+xxk%n1i99u!QK2R=EaF~)BF{?eO|wn6f{rNr5x@$G
z7jvtx%k7%eM?Uqy!R4P5=YgzPE)GN%05K}Xq7MsJQ6As9bM5Cu8jk!V%IS!GxM`U@
zHMgsvQ{4fm=V5iYCFw@YZe8{Pux7sW>P*vr8hf4+J!&=`iX$b?UX36|YB&W{!HM|^
zcB=eDWSZzhA#bjS`^Cy}u*vp_S$9f{Gipf{lQ*g!xB_Y
z1u>|a&OIy(N;d%zLYM9AxU#WySGG+kKxk!(oVv)tRN+C0sz|eVX+5>tdZ#Y4OJCIh1lRxg3TFWl{q6si7|#HHf$wNTOO>{T#rJjMI|9JDrKM_
zij-=Qp{M{!bp$dkA2K*pem>C)N_1{B_JjM
z!7M5eM?g_IgABr)y3qS&q3JCr-vV~AkWY2SQXB=1pImeH^fy@2q0S}lMJzY~0%&Oh
z#v%uhMUA+h+zMXxa8vU1Re2n}qro3*>lYCgQURQ6x`-zh!-#TzBp_Nm)8m;-Wd11f
zJS8y-X6!kVBrYB`)=5iERr#sLh2gYd%Q>zBhk+shZ|1ZHbGcsjytijp?#^Xv9NNTu
zn^U)5mpg%no9pKP-xzLR6#xJ*9*S{WoZHfTb>Y0BH|dMO1GowR%yO~3FZKa#A=XBs
zpDFTO(ai;V0I=F!p_66?K-x5Z?Fc~uO=_wln6N?sO!&^z-g5u>LcRDo3N*Q4Q8276qb42X4rqc;qP>w-nfT6g8Q3y<$qDX4M
zOz&({>?h2u-k1PtAxdMUlGt-1_w=>vi99hu-*O{K-!vH08g=*>2RN{&YAyiyZyoz%8b|KUh}7~%B6u5mY>
zh{Y5D1ehVDh;dMmypC2ahF={jzLrOSrX-?pqvnqdo>6uLfUqU_t7#RUf!)R>4aJ8#
zXux#jM4qN5i^E4!Ttu!jMZwa5<;<5lPBC01*iy%7aiLbaS`(wqc%_xAne!_ju%v=1
zO}t7CuUztrST&LI#j0xwwk54-RVH1;4?$Je3yV(_xmZs~Yc@@49%OVb*NdA8EBeY>
zP(TQ2{RE?p>W5`4u#E*nifP13J+>x24VskP0X0;?R?Oij-Jowg?U!=b(^C7^9_wrr|qT{b*CjKV1gMZ
z)nlCJ1d$gj@*p%|oM$4`Ad`qQQAx?%?h1Kw#L9;cej;8IHT$oB^@U&i-XGrf-LB8m
zj4PORyb#^Qh}AsGui2Unwy7TiAB9`Zue2+DU+_FKt*s_a&T5Xj6)
zhVXlk(ZjCsrt}N
z`hk$>uHXM^{qwsIUe^szW#C?^=s_@-DwYgPHJ?pou9q~}$%|eRY|Ff>K3Bs8E=FZd
zS}wuHwmg{jWKqOwzl>YX?&ih8Y_zY;d;T(u@y9Jrf4d