From a1d1fb7c44e33c4baeb52964a027932018bc1325 Mon Sep 17 00:00:00 2001
From: Linjiajia <319408893@qq.com>
Date: 星期二, 04 四月 2023 16:35:39 +0800
Subject: [PATCH] 家大事记添加接口、家庭资产、家庭设备

---
 app/src/main/res/drawable-xxhdpi/function_notes.png                                                          |    0 
 app/src/main/res/layout/activity_family_assets.xml                                                           |  144 
 app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java                                  |    2 
 app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java                      |   27 
 app/src/main/res/drawable-xxhdpi/function_home_devices.png                                                   |    0 
 app/src/main/res/drawable-xxhdpi/ic_image_delete.png                                                         |    0 
 app/src/main/res/layout/fragment_function.xml                                                                |   28 
 app_base/src/main/java/com/android/app_base/utils/GlideUtil.java                                             |   96 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivityViewModel.java  |   42 
 app/src/main/res/drawable-xhdpi/ic_image_delete.png                                                          |    0 
 app/src/main/res/layout/activity_family_assets_detail.xml                                                    |  192 
 app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java                           |    4 
 app_base/src/main/java/com/android/app_base/widget/WrapRecyclerView.java                                     |  485 ++
 app_base/src/main/java/com/android/app_base/base/dialog/WaitDialog.java                                      |   40 
 app/src/main/res/drawable-xhdpi/function_notes.png                                                           |    0 
 app/src/main/java/com/application/zhangshi_app_android/other/MyTitleBarStyle.java                            |   82 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java            |  103 
 app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java                               |   10 
 app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsResponseBean.java                    |   27 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java           |  103 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java                 |  105 
 app/src/main/res/layout/layout_drawer.xml                                                                    |  608 ++
 app_base/src/main/res/raw/welcome.json                                                                       |    1 
 app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java                    |  147 
 app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java                              |   33 
 app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java                                |  126 
 app_base/src/main/java/com/android/app_base/utils/GlideEngine.java                                           |  106 
 app/src/main/res/layout/item_image_footer.xml                                                                |   22 
 app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java                |   33 
 app_base/src/main/res/raw/province.json                                                                      | 5537 +++++++++++++++++++++++++++
 app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java |   72 
 app_base/src/main/java/com/android/app_base/widget/GridSpaceItemDecoration.java                              |   48 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivityViewModel.java        |  137 
 app/src/main/res/drawable-xhdpi/function_home_devices.png                                                    |    0 
 app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java              |   33 
 app/src/main/res/layout/activity_family_memorabilia_create.xml                                               |   51 
 app_base/src/main/res/layout/wait_dialog.xml                                                                 |   43 
 app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java               |   30 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java   |  106 
 app_base/src/main/res/raw/progress.json                                                                      |    1 
 app_base/build.gradle                                                                                        |   18 
 app/src/main/res/drawable-xhdpi/img_data_null.png                                                            |    0 
 app/src/main/res/drawable-xxhdpi/ic_clear.png                                                                |    0 
 app/src/main/res/layout/item_home_devices.xml                                                                |  204 +
 app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java                             |   93 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java   |   41 
 app/src/main/res/layout/pop_operate.xml                                                                      |   89 
 app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java                           |   69 
 app/src/main/res/drawable-xhdpi/ic_clear.png                                                                 |    0 
 app/src/main/res/layout/activity_family_memorabilia.xml                                                      |  865 ---
 app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java                       |   21 
 app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java                             |    4 
 app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java                       |   68 
 app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsBean.java                            |   47 
 app_base/src/main/res/raw/loading.json                                                                       |    1 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java          |  132 
 app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java                     |  134 
 app/src/main/res/layout/item_family_assets.xml                                                               |  226 +
 app/src/main/java/com/application/zhangshi_app_android/MyApplication.java                                    |    4 
 app/src/main/res/layout/item_family_memorabilia.xml                                                          |   89 
 app/src/main/AndroidManifest.xml                                                                             |   64 
 app/src/main/res/drawable-xxhdpi/img_data_null.png                                                           |    0 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java                  |   99 
 app/src/main/res/drawable/shape_73fab4cd_solid.xml                                                           |    4 
 app/src/main/res/layout/activity_home_devices.xml                                                            |  144 
 .idea/deploymentTargetDropDown.xml                                                                           |   13 
 app_base/src/main/java/com/android/app_base/manager/UserManager.java                                         |   62 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java         |  138 
 app/src/main/res/layout/activity_home_devices_detail.xml                                                     |  175 
 app_base/src/main/java/com/android/app_base/manager/OnPermissionsInterceptListenerImpl.java                  |   51 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java                     |   18 
 app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java                                      |   23 
 app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java            |  247 
 app/src/main/res/layout/pop_search.xml                                                                       |  256 
 app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java                                       |   58 
 app/src/main/java/com/application/zhangshi_app_android/bean/UploadFileResponseBean.java                      |   52 
 app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesResponseBean.java                     |   27 
 app/src/main/res/layout/item_image.xml                                                                       |   34 
 78 files changed, 10,965 insertions(+), 1,229 deletions(-)

diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 7bb4a8e..a74e86f 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -12,17 +12,6 @@
         </deviceKey>
       </Target>
     </runningDeviceTargetSelectedWithDropDown>
-    <targetSelectedWithDropDown>
-      <Target>
-        <type value="QUICK_BOOT_TARGET" />
-        <deviceKey>
-          <Key>
-            <type value="VIRTUAL_DEVICE_PATH" />
-            <value value="D:\software\Android\.android\avd\Pixel_API_30.avd" />
-          </Key>
-        </deviceKey>
-      </Target>
-    </targetSelectedWithDropDown>
-    <timeTargetWasSelectedWithDropDown value="2023-03-28T11:22:31.926040400Z" />
+    <timeTargetWasSelectedWithDropDown value="2023-04-03T09:11:44.626235900Z" />
   </component>
 </project>
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 67cf41c..41a2a8b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,11 +2,57 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools">
 
+    <!-- 缃戠粶鐩稿叧 -->
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+
+    <uses-permission android:name="android.permission.READ_CONTACTS"/>
+
+    <!-- 澶栭儴瀛樺偍 -->
+    <!-- Android 13寮�濮嬶紝濡傛灉浣犵殑搴旂敤targetSdk鎸囧畾鍒颁簡33鎴栦互涓�,READ_EXTERNAL_STORAGE鏉冮檺灏卞畬鍏ㄥけ鍘讳簡浣滅敤,闇�瑕佺粏鍖�-->
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <!--Android 13鐗堟湰閫傞厤锛岀粏鍖栧瓨鍌ㄦ潈闄�,READ_EXTERNAL_STORAGE鏃犳硶鍐嶄娇鐢�-->
+    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
+    <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
+    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
+
+    <!-- 闇囧姩鏉冮檺 -->
+    <uses-permission android:name="android.permission.VIBRATE" />
+
+    <!-- 钃濈墮鏉冮檺 -->
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+
+
+    <!-- 鎷嶇収鏉冮檺 -->
+    <uses-permission android:name="android.permission.CAMERA" />
+
+    <!-- 瀹夎鏉冮檺 -->
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
+
+    <!-- 瀹氫綅鏉冮檺锛堢敤浜� WebView 瀹氫綅锛�-->
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+
+
+    <queries package="${applicationId}">
+        <intent>
+            <action android:name="android.media.action.IMAGE_CAPTURE">
+
+            </action>
+        </intent>
+        <intent>
+            <action android:name="android.media.action.ACTION_VIDEO_CAPTURE">
+
+            </action>
+        </intent>
+    </queries>
+
     <application
         android:name=".MyApplication"
         android:allowBackup="true"
@@ -60,6 +106,18 @@
         <activity
             android:name=".ui.function.CreateFamilyProjectActivity"
             android:exported="false" />
+        <activity
+            android:name=".ui.function.FamilyAssetsActivity"
+            android:exported="false" />
+        <activity
+            android:name=".ui.function.FamilyAssetsDetailActivity"
+            android:exported="false" />
+        <activity
+            android:name=".ui.function.HomeDevicesActivity"
+            android:exported="false" />
+        <activity
+            android:name=".ui.function.HomeDevicesDetailActivity"
+            android:exported="false" />
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/application/zhangshi_app_android/MyApplication.java b/app/src/main/java/com/application/zhangshi_app_android/MyApplication.java
index 8a03b1c..f19306e 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/MyApplication.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/MyApplication.java
@@ -1,8 +1,8 @@
 package com.application.zhangshi_app_android;
 
 import com.android.app_base.base.BaseApplication;
+import com.application.zhangshi_app_android.other.MyTitleBarStyle;
 import com.hjq.bar.TitleBar;
-import com.hjq.bar.style.TransparentBarStyle;
 
 //import me.jessyan.autosize.AutoSizeConfig;
 
@@ -16,6 +16,6 @@
     public void onCreate() {
         super.onCreate();
         // 鍒濆鍖� TitleBar 榛樿鏍峰紡
-//        TitleBar.setDefaultStyle(new TransparentBarStyle());
+        TitleBar.setDefaultStyle(new MyTitleBarStyle());
     }
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java
new file mode 100644
index 0000000..3e2717a
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java
@@ -0,0 +1,147 @@
+package com.application.zhangshi_app_android.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.Transformation;
+import android.widget.CompoundButton;
+import android.widget.FrameLayout;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.android.app_base.base.BaseConfig;
+import com.android.app_base.base.adapter.BaseRVAdapter;
+import com.android.app_base.manager.AppManager;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.databinding.ItemFamilyAssetsBinding;
+import com.application.zhangshi_app_android.ui.function.CreateFamilyProjectActivity;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivity;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivityViewModel;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 19:52
+ * @desc 瀹跺涵璧勪骇 recyclerView 鐨� adapter
+ */
+public class FamilyAssetsRvAdapter extends BaseRVAdapter<FamilyAssetsBean, ItemFamilyAssetsBinding, FamilyAssetsRvAdapter.ViewHolder> {
+
+    private FamilyAssetsActivityViewModel viewModel;
+
+    public FamilyAssetsRvAdapter(Context context) {
+        super(context);
+    }
+
+    public FamilyAssetsRvAdapter(Context context, FamilyAssetsActivityViewModel viewModel) {
+        super(context);
+        this.viewModel = viewModel;
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.item_family_assets;
+    }
+
+    @Override
+    protected ViewHolder getViewHolder(ItemFamilyAssetsBinding itemBind) {
+        return new ViewHolder(itemBind);
+    }
+
+    @Override
+    protected void onBind(ViewHolder holder, int position) {
+        holder.getBinding().setBean(mDataList.get(position));
+        if (position % 2 != 0){
+            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
+        }else {
+            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
+        }
+        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (holder.isExpended){
+                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
+                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
+                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
+
+                    Animation a = new Animation() {
+                        @Override
+                        protected void applyTransformation(float interpolatedTime, Transformation t) {
+                            if (interpolatedTime == 1){
+                            }
+                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
+                            holder.getBinding().cardView.requestLayout();
+                        }
+
+                        @Override
+                        public boolean willChangeBounds() {
+                            return true;
+                        }
+                    };
+                    a.setDuration(500);
+                    holder.getBinding().cardView.startAnimation(a);
+                    holder.isExpended = false;
+                }else{
+                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
+                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
+                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
+                    int distanceToExpand = targetHeight - initialHeight;
+                    Animation a = new Animation() {
+                        @Override
+                        protected void applyTransformation(float interpolatedTime, Transformation t) {
+                            if (interpolatedTime == 1){
+                            }
+                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
+                            holder.getBinding().cardView.requestLayout();
+                        }
+
+                        @Override
+                        public boolean willChangeBounds() {
+                            return true;
+                        }
+                    };
+                    a.setDuration(500);
+                    holder.getBinding().cardView.startAnimation(a);
+                    holder.isExpended = true;
+                }
+            }
+        });
+        holder.getBinding().layoutContent.setOnClickListener(v -> {
+            AppManager.getAppManager().startActivity(
+                    new Intent(getRecyclerView().getContext(), FamilyAssetsDetailActivity.class)
+                            .putExtra("bean",mDataList.get(position)));
+        });
+        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
+        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
+        holder.getBinding().rvImage.setAdapter(adapter);
+        String url = mDataList.get(position).getUrl();
+        if (url == null||url.isEmpty()){
+            return;
+        }
+        List<String> list;
+        if (url.contains(",")){
+            String[] split = url.split(",");
+            list = new ArrayList<>(Arrays.asList(split));
+        }else {
+            list = new ArrayList<>();
+            list.add(url);
+        }
+        adapter.setData(list);
+    }
+
+    public static class ViewHolder extends BaseViewHolder<ItemFamilyAssetsBinding>{
+        private boolean isExpended;
+
+        public ViewHolder(ItemFamilyAssetsBinding binding) {
+            super(binding);
+        }
+    }
+
+}
+
diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java
index 3c84a4b..84c2b42 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java
@@ -10,6 +10,7 @@
 
 import androidx.lifecycle.LiveData;
 import androidx.lifecycle.MutableLiveData;
+import androidx.recyclerview.widget.GridLayoutManager;
 
 import com.android.app_base.base.BaseConfig;
 import com.android.app_base.base.adapter.BaseRVAdapter;
@@ -130,17 +131,28 @@
                     holder.getBinding().cardView.startAnimation(a);
                     holder.isExpended = true;
                 }
-                holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        AppManager.getAppManager().startActivity(
-                                new Intent(getRecyclerView().getContext(), CreateFamilyProjectActivity.class)
-                                        .putExtra(BaseConfig.EXTRA_TYPE,0)
-                                        .putExtra("bean",mDataList.get(position)));
-                    }
-                });
             }
         });
+        holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                AppManager.getAppManager().startActivity(
+                        new Intent(getRecyclerView().getContext(), CreateFamilyProjectActivity.class)
+                                .putExtra(BaseConfig.EXTRA_TYPE,0)
+                                .putExtra("bean",mDataList.get(position)));
+            }
+        });
+        holder.getBinding().layoutDelete.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+
+            }
+        });
+        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
+        mDataList.get(position).setUrl(mDataList.get(position).getUrl());
+        adapter.setData(mDataList.get(position).getUrlList());
+        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
+        holder.getBinding().rvImage.setAdapter(adapter);
     }
 
     public void setCheckable(boolean b) {
diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java
new file mode 100644
index 0000000..1b718b0
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java
@@ -0,0 +1,134 @@
+package com.application.zhangshi_app_android.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.Transformation;
+import android.widget.FrameLayout;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.android.app_base.base.adapter.BaseRVAdapter;
+import com.android.app_base.manager.AppManager;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.databinding.ItemFamilyAssetsBinding;
+import com.application.zhangshi_app_android.databinding.ItemHomeDevicesBinding;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivity;
+import com.application.zhangshi_app_android.ui.function.HomeDevicesDetailActivity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 0:20
+ * @desc 瀹跺涵璁惧 recyclerView 鐨� adapter
+ */
+public class HomeDevicesRvAdapter extends BaseRVAdapter<HomeDevicesBean, ItemHomeDevicesBinding, HomeDevicesRvAdapter.ViewHolder>{
+    public HomeDevicesRvAdapter(Context context) {
+        super(context);
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.item_home_devices;
+    }
+
+    @Override
+    protected void onBind(ViewHolder holder, int position) {
+        holder.getBinding().setBean(mDataList.get(position));
+        if (position % 2 != 0){
+            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
+        }else {
+            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
+        }
+        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (holder.isExpended){
+                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
+                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
+                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
+
+                    Animation a = new Animation() {
+                        @Override
+                        protected void applyTransformation(float interpolatedTime, Transformation t) {
+                            if (interpolatedTime == 1){
+                            }
+                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
+                            holder.getBinding().cardView.requestLayout();
+                        }
+
+                        @Override
+                        public boolean willChangeBounds() {
+                            return true;
+                        }
+                    };
+                    a.setDuration(500);
+                    holder.getBinding().cardView.startAnimation(a);
+                    holder.isExpended = false;
+                }else{
+                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
+                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
+                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
+                    int distanceToExpand = targetHeight - initialHeight;
+                    Animation a = new Animation() {
+                        @Override
+                        protected void applyTransformation(float interpolatedTime, Transformation t) {
+                            if (interpolatedTime == 1){
+                            }
+                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
+                            holder.getBinding().cardView.requestLayout();
+                        }
+
+                        @Override
+                        public boolean willChangeBounds() {
+                            return true;
+                        }
+                    };
+                    a.setDuration(500);
+                    holder.getBinding().cardView.startAnimation(a);
+                    holder.isExpended = true;
+                }
+            }
+        });
+        holder.getBinding().layoutContent.setOnClickListener(v -> {
+            AppManager.getAppManager().startActivity(
+                    new Intent(getRecyclerView().getContext(), HomeDevicesDetailActivity.class)
+                            .putExtra("bean",mDataList.get(position)));
+        });
+        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
+        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
+        holder.getBinding().rvImage.setAdapter(adapter);
+        String url = mDataList.get(position).getUrl();
+        if (url == null||url.isEmpty()){
+            return;
+        }
+        List<String> list;
+        if (url.contains(",")){
+            String[] split = url.split(",");
+            list = new ArrayList<>(Arrays.asList(split));
+        }else {
+            list = new ArrayList<>();
+            list.add(url);
+        }
+        adapter.setData(list);
+    }
+
+    @Override
+    protected ViewHolder getViewHolder(ItemHomeDevicesBinding itemBind) {
+        return new ViewHolder(itemBind);
+    }
+
+    public static class ViewHolder extends BaseViewHolder<ItemHomeDevicesBinding>{
+        private boolean isExpended;
+
+        public ViewHolder(ItemHomeDevicesBinding binding) {
+            super(binding);
+        }
+    }
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java
new file mode 100644
index 0000000..0893e9f
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java
@@ -0,0 +1,69 @@
+package com.application.zhangshi_app_android.adapter;
+
+import android.content.Context;
+import android.media.Image;
+import android.view.View;
+
+import com.android.app_base.base.adapter.BaseRVAdapter;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.databinding.ItemImageBinding;
+import com.application.zhangshi_app_android.ui.function.CreateFamilyProjectActivityViewModel;
+
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.01. 22:42
+ * @desc
+ */
+public class ImageRvAdapter extends BaseRVAdapter<String, ItemImageBinding, BaseRVAdapter.BaseViewHolder<ItemImageBinding>> {
+
+    private boolean isEdited = false;
+    private CreateFamilyProjectActivityViewModel viewModel;
+    public ImageRvAdapter(Context context) {
+        super(context);
+    }
+
+    public ImageRvAdapter(Context context, CreateFamilyProjectActivityViewModel viewModel) {
+        super(context);
+        this.viewModel = viewModel;
+    }
+    @Override
+    protected int getLayoutId() {
+        return R.layout.item_image;
+    }
+
+    @Override
+    protected void onBind(BaseViewHolder<ItemImageBinding> holder, int position) {
+        holder.getBinding().setUrl(mDataList.get(position));
+        if (isEdited) {
+            holder.getBinding().ivDelete.setVisibility(View.VISIBLE);
+        } else {
+            holder.getBinding().ivDelete.setVisibility(View.GONE);
+        }
+        holder.getBinding().ivDelete.setOnClickListener(v -> {
+            FamilyMemorabiliaBean bean = viewModel.getBeanMutableLiveData().getValue();
+            if (bean!=null){
+                List<String> list = bean.getUrlList();
+                list.remove(position);
+                bean.setUrlList(list);
+                viewModel.getBeanMutableLiveData().postValue(bean);
+            }
+        });
+    }
+
+    @Override
+    protected BaseViewHolder<ItemImageBinding> getViewHolder(ItemImageBinding itemBind) {
+        return new BaseViewHolder<>(itemBind);
+    }
+
+    public boolean isEdited() {
+        return isEdited;
+    }
+
+    public void setIsEdited(boolean edited) {
+        isEdited = edited;
+        notifyItemRangeChanged(0,getItemCount());
+    }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsBean.java
new file mode 100644
index 0000000..afdddcb
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsBean.java
@@ -0,0 +1,47 @@
+package com.application.zhangshi_app_android.bean;
+
+import java.io.Serializable;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 19:54
+ * @desc 瀹舵棌璧勪骇
+ */
+public class FamilyAssetsBean implements Serializable {
+    private String address;
+    private String createTime;
+    private String holder;
+    private long id;
+    private String location;
+    private String remark;
+    private String title;
+    private String type;
+    private String url;
+
+    public String getAddress() { return address; }
+    public void setAddress(String value) { this.address = value; }
+
+    public String getCreateTime() { return createTime; }
+    public void setCreateTime(String value) { this.createTime = value; }
+
+    public String getHolder() { return holder; }
+    public void setHolder(String value) { this.holder = value; }
+
+    public long getId() { return id; }
+    public void setId(long value) { this.id = value; }
+
+    public String getLocation() { return location; }
+    public void setLocation(String value) { this.location = value; }
+
+    public String getRemark() { return remark; }
+    public void setRemark(String value) { this.remark = value; }
+
+    public String getTitle() { return title; }
+    public void setTitle(String value) { this.title = value; }
+
+    public String getType() { return type; }
+    public void setType(String value) { this.type = value; }
+
+    public String getUrl() { return url; }
+    public void setUrl(String value) { this.url = value; }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsResponseBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsResponseBean.java
new file mode 100644
index 0000000..2da7ad3
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsResponseBean.java
@@ -0,0 +1,27 @@
+package com.application.zhangshi_app_android.bean;
+
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 21:31
+ * @desc
+ */
+public class FamilyAssetsResponseBean {
+    private List<FamilyAssetsBean> data;
+    private long pageNum;
+    private long pageSize;
+    private long total;
+
+    public List<FamilyAssetsBean> getData() { return data; }
+    public void setData(List<FamilyAssetsBean> value) { this.data = value; }
+
+    public long getPageNum() { return pageNum; }
+    public void setPageNum(long value) { this.pageNum = value; }
+
+    public long getPageSize() { return pageSize; }
+    public void setPageSize(long value) { this.pageSize = value; }
+
+    public long getTotal() { return total; }
+    public void setTotal(long value) { this.total = value; }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java
index 0d37834..adae770 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java
@@ -1,6 +1,10 @@
 package com.application.zhangshi_app_android.bean;
 
+import android.net.Uri;
+
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -15,13 +19,58 @@
     private String people;
     private String remark;
     private String title;
-    private List<String> url;
+    private String url;
+    private List<String> urlList;
 
     public String getAddress() { return address; }
     public void setAddress(String value) { this.address = value; }
 
     public String getCreateTime() { return createTime; }
     public void setCreateTime(String value) { this.createTime = value; }
+
+    public void setUrl(String url) {
+        this.url = url;
+        if (url == null){
+            return;
+        }
+        if (url.contains(",")){
+            String[] split = url.split(",");
+            if (urlList == null){
+                urlList = new ArrayList<>(Arrays.asList(split));
+            }else {
+                urlList.clear();
+                urlList.addAll(Arrays.asList(split));
+            }
+        }else {
+            if (urlList == null){
+                urlList = new ArrayList<>();
+            }else {
+                urlList.clear();
+            }
+            urlList.add(url);
+        }
+    }
+
+    public List<String> getUrlList() {
+        return urlList;
+    }
+
+    public void setUrlList(List<String> urlList) {
+        this.urlList = urlList;
+        StringBuilder sb = new StringBuilder();
+        for (String s : urlList) {
+            sb.append(s).append(",");
+        }
+        //鍘绘帀鏈�鍚庝竴涓�楀彿
+        if (sb.length() > 0) {
+            sb.deleteCharAt(sb.length() - 1);
+        }
+        this.url = sb.toString();
+    }
+
+    public String getUrl() {
+        return url;
+    }
 
     public long getId() { return id; }
     public void setId(long value) {
@@ -37,8 +86,17 @@
     public String getTitle() { return title; }
     public void setTitle(String value) { this.title = value; }
 
-    public List<String> getUrl() { return url; }
-    public void setUrl(List<String> value) { this.url = value; }
-
-
+    @Override
+    public String toString() {
+        return "FamilyMemorabiliaBean{" +
+                "id=" + id +
+                ", address='" + address + '\'' +
+                ", createTime='" + createTime + '\'' +
+                ", people='" + people + '\'' +
+                ", remark='" + remark + '\'' +
+                ", title='" + title + '\'' +
+                ", url='" + url + '\'' +
+                ", urlList=" + urlList +
+                '}';
+    }
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java
index 0033fc2..3440681 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java
@@ -1,5 +1,8 @@
 package com.application.zhangshi_app_android.bean;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @author Ljj
  * @date 2023.03.28. 15:57
@@ -12,8 +15,8 @@
     private String title;
 
     private String createTime;
-    private int pageNum;
-    private int pageSize;
+    private int pageNum = 1;
+    private int pageSize = 20;
 
     public String getPeople() {
         return people;
@@ -70,4 +73,30 @@
         this.createTime = createTime;
     }
 
+    public Map<String, Object> getMap() {
+        Map<String, Object> map = new HashMap<>();
+        if (people == null) {
+            people = "";
+        }
+        if (address == null) {
+            address = "";
+        }
+        if (remark == null) {
+            remark = "";
+        }
+        if (title == null) {
+            title = "";
+        }
+        if (createTime == null) {
+            createTime = "";
+        }
+        map.put("people", people);
+        map.put("address", address);
+        map.put("remark", remark);
+        map.put("title", title);
+        map.put("createTime", createTime);
+        map.put("pageNum", pageNum);
+        map.put("pageSize", pageSize);
+        return map;
+    }
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java
new file mode 100644
index 0000000..a3cafb3
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java
@@ -0,0 +1,93 @@
+package com.application.zhangshi_app_android.bean;
+
+import java.io.Serializable;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 0:22
+ * @desc 瀹跺涵璁惧 bean
+ */
+public class HomeDevicesBean implements Serializable {
+    private long id;
+    private String name;
+    private String createTime;
+    private String people;
+    private String content;
+    private String address;
+    private String remark;
+    private String url;
+
+    public HomeDevicesBean(long id, String name, String createTime, String people, String content, String address, String remark, String url) {
+        this.id = id;
+        this.name = name;
+        this.createTime = createTime;
+        this.people = people;
+        this.content = content;
+        this.address = address;
+        this.remark = remark;
+        this.url = url;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getPeople() {
+        return people;
+    }
+
+    public void setPeople(String people) {
+        this.people = people;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesResponseBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesResponseBean.java
new file mode 100644
index 0000000..23b7cff
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesResponseBean.java
@@ -0,0 +1,27 @@
+package com.application.zhangshi_app_android.bean;
+
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 15:03
+ * @desc
+ */
+public class HomeDevicesResponseBean {
+    private List<HomeDevicesBean> data;
+    private long pageNum;
+    private long pageSize;
+    private long total;
+
+    public List<HomeDevicesBean> getData() { return data; }
+    public void setData(List<HomeDevicesBean> value) { this.data = value; }
+
+    public long getPageNum() { return pageNum; }
+    public void setPageNum(long value) { this.pageNum = value; }
+
+    public long getPageSize() { return pageSize; }
+    public void setPageSize(long value) { this.pageSize = value; }
+
+    public long getTotal() { return total; }
+    public void setTotal(long value) { this.total = value; }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/UploadFileResponseBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/UploadFileResponseBean.java
new file mode 100644
index 0000000..5e412ae
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/UploadFileResponseBean.java
@@ -0,0 +1,52 @@
+package com.application.zhangshi_app_android.bean;
+
+/**
+ * @author Ljj
+ * @date 2023.04.02. 22:57
+ * @desc 涓婁紶鏂囦欢杩斿洖瀹炰綋绫�
+ */
+public class UploadFileResponseBean {
+    String fileName;
+    String newFileName;
+    String url;
+    String originalFilename;
+
+    public UploadFileResponseBean(String fileName, String newFileName, String url, String originalFilename) {
+        this.fileName = fileName;
+        this.newFileName = newFileName;
+        this.url = url;
+        this.originalFilename = originalFilename;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public String getNewFileName() {
+        return newFileName;
+    }
+
+    public void setNewFileName(String newFileName) {
+        this.newFileName = newFileName;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getOriginalFilename() {
+        return originalFilename;
+    }
+
+    public void setOriginalFilename(String originalFilename) {
+        this.originalFilename = originalFilename;
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java b/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java
index e78ebea..cff6cf6 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java
@@ -5,21 +5,29 @@
 import com.android.app_base.base.model.BaseModel;
 import com.android.app_base.http.ResultData;
 import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
 import com.application.zhangshi_app_android.bean.LoginRequestBean;
 import com.application.zhangshi_app_android.bean.LoginResponseBean;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
 import com.application.zhangshi_app_android.data.source.HttpDataSource;
 import com.application.zhangshi_app_android.data.source.LocalDataSource;
 import com.application.zhangshi_app_android.data.source.http.HttpDataSourceImpl;
 import com.application.zhangshi_app_android.data.source.local.LocalDataSourceImpl;
 
+import java.io.File;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.DoubleUnaryOperator;
 
+import io.reactivex.Completable;
 import io.reactivex.Observable;
 import io.reactivex.Observer;
+import okhttp3.MultipartBody;
 
 /**
  * @author Ljj
@@ -83,8 +91,8 @@
      * 鑾峰彇瀹跺ぇ浜嬭
      */
     @Override
-    public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String, Object> queryMap) {
-        return mHttpDataSource.getFamilyMemorabilia(queryMap);
+    public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String,Object> paramsMap) {
+        return mHttpDataSource.getFamilyMemorabilia(paramsMap);
     }
     /**
      * 澧炲姞瀹跺ぇ浜嬭
@@ -109,6 +117,27 @@
     }
 
     /**
+     * 涓婁紶鏂囦欢
+     */
+    public Observable<ResultData<UploadFileResponseBean>> uploadFile(MultipartBody.Part file) {
+        return mHttpDataSource.uploadFile(file);
+    }
+
+    /**
+     * 鑾峰彇瀹跺涵璧勪骇
+     */
+    public Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(Map<String,Object> paramsMap) {
+        return mHttpDataSource.getFamilyAssets(paramsMap);
+    }
+
+    /**
+     * 鑾峰彇瀹跺涵璁惧
+     */
+    public Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap) {
+        return mHttpDataSource.getHomeDevices(paramsMap);
+    }
+
+    /**
      * @see LocalDataSourceImpl
      */
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java b/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java
index fd8ab36..734bf19 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java
@@ -2,17 +2,22 @@
 
 import com.android.app_base.http.ResultData;
 import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
 import com.application.zhangshi_app_android.bean.LoginRequestBean;
 import com.application.zhangshi_app_android.bean.LoginResponseBean;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
 
+import java.io.File;
 import java.util.List;
 import java.util.Map;
 
 import io.reactivex.Observable;
 import io.reactivex.Observer;
+import okhttp3.MultipartBody;
 
 /**
  * @author Ljj
@@ -37,7 +42,7 @@
     /**
      * 鑾峰彇瀹跺ぇ浜嬭
      */
-    Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String, Object> queryMap);
+    Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String,Object> paramsMap);
 
     /**
      * 澧炲姞瀹跺ぇ浜嬭
@@ -52,4 +57,18 @@
      * 淇敼
      */
     Observable<ResultData<String>> updateFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean);
+
+    /**
+     * 涓婁紶鏂囦欢
+     */
+    Observable<ResultData<UploadFileResponseBean>> uploadFile(MultipartBody.Part file);
+
+    /**
+     * 鑾峰彇瀹跺涵璧勪骇
+     */
+    Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(Map<String, Object> paramsMap);
+    /**
+     * 鑾峰彇瀹跺涵璁惧
+     */
+    Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap);
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java
index 9815ad6..d2b9d0a 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java
@@ -2,21 +2,28 @@
 
 import com.android.app_base.http.ResultData;
 import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
 import com.application.zhangshi_app_android.bean.LoginRequestBean;
 import com.application.zhangshi_app_android.bean.LoginResponseBean;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
 
+import java.io.File;
 import java.util.List;
 import java.util.Map;
 
 import io.reactivex.Observable;
+import okhttp3.MultipartBody;
 import retrofit2.http.Body;
 import retrofit2.http.DELETE;
 import retrofit2.http.GET;
+import retrofit2.http.Multipart;
 import retrofit2.http.POST;
 import retrofit2.http.PUT;
+import retrofit2.http.Part;
 import retrofit2.http.Path;
 import retrofit2.http.Query;
 import retrofit2.http.QueryMap;
@@ -48,7 +55,7 @@
      * 鑾峰彇瀹跺ぇ浜嬩欢
      */
     @GET("family/zfEvent/all")
-    Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(@QueryMap Map<String,Object> queryMap);
+    Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(@QueryMap Map<String,Object> paramsMap);
     /**
      * 澧炲姞瀹跺ぇ浜嬭
      */
@@ -66,4 +73,22 @@
     Observable<ResultData<String>> updateFamilyMemorabilia(@Body FamilyMemorabiliaBean familyMemorabiliaBean);
 
 
+    /**
+     * 涓婁紶鏂囦欢
+     */
+    @Multipart
+    @POST("/common/upload")
+    Observable<ResultData<UploadFileResponseBean>> uploadFile(@Part MultipartBody.Part file);
+
+    /**
+     * 鑾峰彇瀹跺涵璧勪骇
+     */
+    @GET("/family/property/all")
+    Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(@QueryMap Map<String, Object> paramsMap);
+
+    /**
+     * 鑾峰彇瀹跺涵璁惧
+     */
+    @GET("")//TODO 鑾峰彇瀹跺涵璁惧
+    Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(@QueryMap Map<String, Object> paramsMap);
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java
index 811264d..fc81677 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java
@@ -3,16 +3,21 @@
 import com.android.app_base.http.ResultData;
 import com.android.app_base.http.RetrofitManager;
 import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
 import com.application.zhangshi_app_android.bean.LoginRequestBean;
 import com.application.zhangshi_app_android.bean.LoginResponseBean;
 import com.android.app_base.base.BaseConfig;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
 import com.application.zhangshi_app_android.data.source.HttpDataSource;
 
 import java.util.Map;
 
 import io.reactivex.Observable;
+import okhttp3.MultipartBody;
 
 /**
  * @author Ljj
@@ -71,8 +76,8 @@
      * 鑾峰彇瀹跺ぇ浜嬭
      */
     @Override
-    public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String, Object> queryMap) {
-        return apiService.getFamilyMemorabilia(queryMap);
+    public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String,Object> paramsMap) {
+        return apiService.getFamilyMemorabilia(paramsMap);
     }
     /**
      * 澧炲姞瀹跺ぇ浜嬭
@@ -96,4 +101,28 @@
     public Observable<ResultData<String>> updateFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean) {
         return apiService.updateFamilyMemorabilia(familyMemorabiliaBean);
     }
+
+    /**
+     * 涓婁紶鏂囦欢
+     */
+    @Override
+    public Observable<ResultData<UploadFileResponseBean>> uploadFile(MultipartBody.Part file) {
+        return apiService.uploadFile(file);
+    }
+
+    /**
+     * 鑾峰彇瀹跺涵璧勪骇
+     */
+    @Override
+    public Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(Map<String, Object> paramsMap) {
+        return apiService.getFamilyAssets(paramsMap);
+    }
+
+    /**
+     * 鑾峰彇瀹跺涵璁惧
+     */
+    @Override
+    public Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap) {
+        return apiService.getHomeDevices(paramsMap);
+    }
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/other/MyTitleBarStyle.java b/app/src/main/java/com/application/zhangshi_app_android/other/MyTitleBarStyle.java
new file mode 100644
index 0000000..a5246a7
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/other/MyTitleBarStyle.java
@@ -0,0 +1,82 @@
+package com.application.zhangshi_app_android.other;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.TypedValue;
+import android.widget.TextView;
+
+import androidx.appcompat.content.res.AppCompatResources;
+
+import com.android.app_base.utils.ScreenSizeUtils;
+import com.application.zhangshi_app_android.R;
+import com.hjq.bar.style.CommonBarStyle;
+
+/**
+ * @author Ljj
+ * @date 2023.03.30. 20:11
+ * @desc TitleBar缁熶竴鏍峰紡
+ */
+public class MyTitleBarStyle extends CommonBarStyle {
+    @Override
+    public TextView createLeftView(Context context) {
+        return super.createLeftView(context);
+    }
+
+    @Override
+    public Drawable getTitleBarBackground(Context context) {
+        return new ColorDrawable(context.getColor(R.color.color_title_bar_background));
+    }
+
+    @Override
+    public Drawable getLeftTitleBackground(Context context) {
+        return null;
+    }
+
+    @Override
+    public Drawable getRightTitleBackground(Context context) {
+        return null;
+    }
+
+    @Override
+    public Drawable getBackButtonDrawable(Context context) {
+        return AppCompatResources.getDrawable(context,R.drawable.ic_menu);
+    }
+
+    @Override
+    public ColorStateList getTitleColor(Context context) {
+        return ColorStateList.valueOf(0xFFFFFFFF);
+    }
+
+    @Override
+    public ColorStateList getLeftTitleColor(Context context) {
+        return null;
+    }
+
+    @Override
+    public ColorStateList getRightTitleColor(Context context) {
+        return null;
+    }
+
+    @Override
+    public Drawable getLineDrawable(Context context) {
+        return null;
+    }
+
+    @Override
+    public int getLeftHorizontalPadding(Context context) {
+        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, context.getResources().getDisplayMetrics());
+    }
+
+    @Override
+    public float getTitleSize(Context context) {
+        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, context.getResources().getDisplayMetrics());
+    }
+
+    @Override
+    public int getLeftIconPadding(Context context) {
+        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, context.getResources().getDisplayMetrics());
+    }
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java
new file mode 100644
index 0000000..5579045
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java
@@ -0,0 +1,126 @@
+package com.application.zhangshi_app_android.ui;
+
+import android.graphics.Color;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ViewDataBinding;
+import androidx.drawerlayout.widget.DrawerLayout;
+
+import com.android.app_base.base.view.BaseActivity;
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.android.app_base.manager.AppManager;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivity;
+import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivity;
+import com.application.zhangshi_app_android.ui.function.HomeDevicesActivity;
+import com.hjq.bar.TitleBar;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Ljj
+ * @date 2023.04.01. 18:21
+ * @desc 璇PP閲岀粺涓�渚ф媺鏍忕殑Activity鍩虹被
+ */
+public abstract class DLBaseActivity<VDB extends ViewDataBinding,VM extends BaseViewModel> extends BaseActivity<VDB,VM> {
+    /**
+     * 渚ф媺鏍�
+     */
+    private DrawerLayout mDrawerLayout;
+    private Map<Class,LinearLayout> classMap = new HashMap<>();
+    @Override
+    protected VDB initViewBinding() {
+        if (isDrawerLayoutEnabled()){
+            mDrawerLayout = new DrawerLayout(this);
+            mDrawerLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+            VDB mBinding = DataBindingUtil.inflate(getLayoutInflater(), getLayoutId(), mDrawerLayout, true);
+            if (getDrawerLayoutId() > 0){
+                getLayoutInflater().inflate(getDrawerLayoutId(), mDrawerLayout, true);
+            }else {
+                throw new IllegalArgumentException("娌$粰渚ф媺鏍忓竷灞�灏变笉瑕佸紑鍚晶鎷夋爮鍟�");
+            }
+            setContentView(mDrawerLayout);
+            return mBinding;
+        }
+        return super.initViewBinding();
+    }
+
+
+    /**
+     * 鏄惁寮�鍚晶鎷夋爮
+     */
+    protected boolean isDrawerLayoutEnabled() {
+        return true;
+    }
+    /**
+     * 鑾峰彇渚ф媺鏍忕殑id
+     * @return layout鐨刬d
+     */
+    protected int getDrawerLayoutId(){
+        return R.layout.layout_drawer;
+    };
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+        if (mDrawerLayout != null) {
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_home_root_net));
+            classMap.put(FamilyMemorabiliaActivity.class,(LinearLayout) findViewById(R.id.dl_family_memorabilia));
+            classMap.put(FamilyAssetsActivity.class,(LinearLayout) findViewById(R.id.dl_family_assets));
+            classMap.put(HomeDevicesActivity.class,(LinearLayout) findViewById(R.id.dl_home_devices));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_honor_collection));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_little_doctor));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_clean_storage));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_contacts));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_pet));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_income_and_expenses));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_growing_up));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_marriage));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_property));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_hundred_wish));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_health_care));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_certificate_of_honor));
+            classMap.put(null,(LinearLayout) findViewById(R.id.dl_privacy));
+            setSelectItem(classMap.get(getClass()));
+            for (Map.Entry<Class, LinearLayout> set : classMap.entrySet()) {
+                set.getValue().setOnClickListener(v -> {
+                    if (set.getKey() != null){
+                        AppManager.getAppManager().startActivity(set.getKey());
+                    }
+                });
+            }
+            mDrawerLayout.setScrimColor(getResources().getColor(R.color.color_shadow));
+        }
+    }
+    private void setSelectItem(LinearLayout linearLayout) {
+        if (linearLayout == null){
+            return;
+        }
+        TextView textView = (TextView) linearLayout.getChildAt(1);
+        ImageView imageView = (ImageView) linearLayout.getChildAt(2);
+        textView.setTextColor(Color.parseColor("#FFF6739F"));
+        imageView.setBackgroundResource(R.drawable.ic_vector_pink);
+    }
+
+
+    /**
+     * 鑾峰彇DrawerLayout
+     */
+    @Nullable
+    public DrawerLayout getDrawerLayout() {
+        return mDrawerLayout;
+    }
+
+    @Override
+    public void onLeftClick(TitleBar titleBar) {
+        super.onRightClick(titleBar);
+        mDrawerLayout.open();
+    }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java
index 4c9fced..40ecd10 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java
@@ -1,39 +1,47 @@
 package com.application.zhangshi_app_android.ui.function;
 
 import android.graphics.drawable.ColorDrawable;
-import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.EditText;
 import android.widget.PopupWindow;
 
-import androidx.annotation.Nullable;
-import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.GridLayoutManager;
 
 import com.android.app_base.base.BaseConfig;
 import com.android.app_base.base.dialog.BaseDialog;
 import com.android.app_base.base.dialog.UIDialog;
 import com.android.app_base.base.view.BaseActivity;
+import com.android.app_base.manager.UserManager;
 import com.android.app_base.utils.ScreenSizeUtils;
-import com.android.app_base.utils.ToastUtils;
-import com.android.app_base.widget.LinearItemDecoration;
 import com.application.zhangshi_app_android.BR;
 import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
-import com.application.zhangshi_app_android.databinding.ItemFamilyCreateBinding;
+import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaCreateBinding;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.luck.picture.lib.interfaces.OnResultCallbackListener;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.function.Consumer;
+
 
 /**
  * @author Gss
  * @date 2023.03.25. 16:00
  * @desc 瀹跺ぇ浜嬭 CreateFamilyProjectActivity
  */
-public class CreateFamilyProjectActivity extends BaseActivity<ItemFamilyCreateBinding,CreateFamilyProjectActivityViewModel> {
+public class CreateFamilyProjectActivity extends BaseActivity<ActivityFamilyMemorabiliaCreateBinding,CreateFamilyProjectActivityViewModel> {
     private int type;
-    private int operateType;
     private PopupWindow popupWindow;
+    private FamilyMemorabiliaBean bean;
+    private ImageRvAdapter adapter;
+
     @Override
     public int getLayoutId() {
-        return R.layout.item_family_create;
+        return R.layout.activity_family_memorabilia_create;
     }
 
     @Override
@@ -45,7 +53,7 @@
     public void initParam() {
         type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0);
         if (type == 0){
-            FamilyMemorabiliaBean bean = (FamilyMemorabiliaBean) getIntent().getSerializableExtra("bean");
+            bean = (FamilyMemorabiliaBean) getIntent().getSerializableExtra("bean");
             if (bean!=null){
                 viewModel.getBeanMutableLiveData().postValue(bean);
             }
@@ -54,13 +62,43 @@
 
     @Override
     public void initView() {
+        adapter = new ImageRvAdapter(this);
+        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
+        binding.rvImage.setLayoutManager(gridLayoutManager);
+        binding.rvImage.setNestedScrollingEnabled(false);
+        View footerView = View.inflate(this,R.layout.item_image_footer,null);
+        binding.rvImage.addFooterView(footerView);
+        footerView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                UserManager.getInstance().selectImage(getSelfActivity(), 9, new OnResultCallbackListener<LocalMedia>() {
+                    @Override
+                    public void onResult(ArrayList<LocalMedia> result) {
+                        if (result.size() == 0) return;
+                        for (LocalMedia media : result) {
+                            String path = media.getRealPath();
+                            File file = new File(path);
+                            if (file.exists()) {
+                                viewModel.uploadFile(file);
+                            }
+                        }
+                    }
+
+                    @Override
+                    public void onCancel() {
+
+                    }
+                });
+            }
+        });
+        binding.rvImage.setAdapter(adapter);
+
         if (type == 1){
-            binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
+            viewModel.getTypeLiveData().postValue(true);
             binding.ivOperate.setOnClickListener(v -> {
                 viewModel.add();
             });
         }else {
-            binding.ivOperate.setBackgroundResource(R.drawable.ic_operate);
             popupWindow = new PopupWindow(this);
             // 璁剧疆甯冨眬鏂囦欢
             popupWindow.setContentView(LayoutInflater.from(this).inflate(R.layout.pop_operate_delete, null));
@@ -78,18 +116,10 @@
             // 璁剧疆鐐瑰嚮pop澶栦晶娑堝け锛岄粯璁や负false锛涘湪focusable涓簍rue鏃剁偣鍑诲渚у缁堟秷澶�
             popupWindow.setOutsideTouchable(true);
 
-            binding.ivOperate.setOnClickListener(v -> {
-                if (operateType == 0){
-                    popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
-                }else{
-                    viewModel.update();
-                }
-            });
             popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
-                    operateType = 1;
+                    viewModel.getTypeLiveData().postValue(true);
                     popupWindow.dismiss();
                 }
             });
@@ -111,7 +141,9 @@
                             .show();
                 }
             });
+            viewModel.getTypeLiveData().postValue(false);
         }
+
     }
 
     @Override
@@ -122,8 +154,62 @@
 
     @Override
     public void initLiveDataObserve() {
-
+        viewModel.getBeanMutableLiveData().observe(this,bean -> {
+            if (bean!=null){
+                bean.setUrl(bean.getUrl());
+                adapter.setData(bean.getUrlList());
+            }
+        });
+        viewModel.getTypeLiveData().observe(this,operateType -> {
+            if (operateType){
+                if (type == 1) {
+                    binding.ivOperate.setOnClickListener(v -> {
+                        viewModel.add();
+                    });
+                }else {
+                    binding.ivOperate.setOnClickListener(v -> {
+                        viewModel.update();
+                    });
+                }
+                binding.rvImage.getFooterViews().forEach(new Consumer<View>() {
+                    @Override
+                    public void accept(View view) {
+                        view.setVisibility(View.VISIBLE);
+                    }
+                });
+                setIsEdited(true);
+            }else {
+                binding.ivOperate.setOnClickListener(v -> {
+                    popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
+                });
+                binding.rvImage.getFooterViews().forEach(new Consumer<View>() {
+                    @Override
+                    public void accept(View view) {
+                        view.setVisibility(View.GONE);
+                    }
+                });
+                setIsEdited(false);
+            }
+        });
     }
 
-
+    public void setIsEdited(boolean isEdited){
+        disableAllEditText(getContentView(),isEdited);
+        adapter.setIsEdited(isEdited);
+    }
+    public void disableAllEditText(ViewGroup viewGroup,boolean isEdited) {
+        for (int i = 0; i < viewGroup.getChildCount(); i++) {
+            View child = viewGroup.getChildAt(i);
+            if (child instanceof ViewGroup) {
+                disableAllEditText((ViewGroup) child,isEdited);
+            } else if (child instanceof EditText) {
+                child.setEnabled(isEdited);
+                child.setFocusable(isEdited);
+                child.setFocusableInTouchMode(isEdited);
+                if (!isEdited){
+                    child.clearFocus();
+                }
+            }
+        }
+    }
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java
index 75c5aef..e37573d 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java
@@ -11,19 +11,22 @@
 import com.android.app_base.http.ResultData;
 import com.android.app_base.manager.AppManager;
 import com.android.app_base.utils.RxUtils;
-import com.android.app_base.utils.ToastUtils;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
 import com.application.zhangshi_app_android.data.DataRepository;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.io.File;
 
 import io.reactivex.Observer;
 import io.reactivex.disposables.Disposable;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
 
 public class CreateFamilyProjectActivityViewModel extends BaseViewModel<DataRepository> {
 
     private MutableLiveData<FamilyMemorabiliaBean> beanMutableLiveData;
+    private MutableLiveData<Boolean> typeLiveData;//true 缂栬緫鐘舵�� false 灞曠ず鐘舵��
     public CreateFamilyProjectActivityViewModel(@NonNull Application application) {
         super(application);
     }
@@ -49,6 +52,7 @@
                     public void onNext(ResultData<String> stringResultData) {
                         if (stringResultData.getCode() == CODE_SUCCESS){
                             messageLiveData.postValue("娣诲姞鎴愬姛");
+                            AppManager.getAppManager().finishCurrentActivity();
                         }else {
                             messageLiveData.postValue(stringResultData.getMsg());
                         }
@@ -136,10 +140,72 @@
         if (beanMutableLiveData == null){
             beanMutableLiveData = new MutableLiveData<>();
         }
+        if (beanMutableLiveData.getValue() == null){
+            beanMutableLiveData.setValue(new FamilyMemorabiliaBean());
+        }
         return beanMutableLiveData;
     }
 
     public void setBeanMutableLiveData(MutableLiveData<FamilyMemorabiliaBean> beanMutableLiveData) {
         this.beanMutableLiveData = beanMutableLiveData;
     }
+
+    public MutableLiveData<Boolean> getTypeLiveData() {
+        if (typeLiveData == null){
+            typeLiveData = new MutableLiveData<>();
+        }
+        return typeLiveData;
+    }
+
+    public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) {
+        this.typeLiveData = typeLiveData;
+    }
+
+    /**
+     * 涓婁紶鐢靛瓙鏂囦欢
+     */
+    public void uploadFile(File file) {
+        RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
+        MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody);
+        model.uploadFile(body)
+                .compose(RxUtils.schedulersTransformer())
+                .subscribe(new Observer<ResultData<UploadFileResponseBean>>() {
+                    @Override
+                    public void onSubscribe(Disposable d) {
+                        addSubscribe(d);
+                    }
+
+                    @Override
+                    public void onNext(ResultData<UploadFileResponseBean> resultData) {
+                        if (resultData.getCode() == CODE_SUCCESS){
+                            FamilyMemorabiliaBean bean = getBeanMutableLiveData().getValue();
+                            String url;
+                            if (bean != null){
+                                url = bean.getUrl();
+                                if (url == null){
+                                    url = resultData.getData().getUrl();
+                                }else {
+                                    url = url + "," + resultData.getData().getUrl();
+                                }
+                                bean.setUrl(url);
+                                beanMutableLiveData.postValue(bean);
+                            }
+                        }else {
+                            messageLiveData.postValue(resultData.getMsg());
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        messageLiveData.postValue(e.getMessage());
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java
new file mode 100644
index 0000000..18ea31e
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java
@@ -0,0 +1,105 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.graphics.drawable.ColorDrawable;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.PopupWindow;
+
+import androidx.databinding.library.baseAdapters.BR;
+import androidx.lifecycle.Observer;
+
+import com.android.app_base.utils.ScreenSizeUtils;
+import com.android.app_base.widget.LinearItemDecoration;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.FamilyAssetsRvAdapter;
+import com.application.zhangshi_app_android.adapter.FamilyMemorabiliaRvAdapter;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.databinding.ActivityFamilyAssetsBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 19:40
+ * @desc
+ */
+public class FamilyAssetsActivity extends DLBaseActivity<ActivityFamilyAssetsBinding,FamilyAssetsActivityViewModel> {
+
+
+    private FamilyAssetsRvAdapter adapter;
+    private PopupWindow mOperatePopupWindow;
+
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.activity_family_assets;
+    }
+
+    @Override
+    public int getVariableId() {
+        return BR.viewModel;
+    }
+
+    @Override
+    public void initParam() {
+
+    }
+
+    @Override
+    public void initView() {
+        adapter = new FamilyAssetsRvAdapter(this);
+        LinearItemDecoration itemDecoration = new LinearItemDecoration();
+        itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12));
+        itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
+        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
+        binding.recyclerView.addItemDecoration(itemDecoration);
+        binding.recyclerView.setAdapter(adapter);
+
+        mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null));
+        mOperatePopupWindow.getContentView().findViewById(R.id.layout_add).setVisibility(View.GONE);
+        mOperatePopupWindow.getContentView().findViewById(R.id.layout_select).setVisibility(View.GONE);
+        mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> {
+            viewModel.sortDataList(0);
+            mOperatePopupWindow.dismiss();
+        });
+        mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> {
+            viewModel.sortDataList(1);
+            mOperatePopupWindow.dismiss();
+        });
+        binding.ivOperate.setOnClickListener(v -> {
+            mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
+        });
+    }
+
+    @Override
+    public void initData() {
+        viewModel.getFamilyAssets();
+    }
+
+    @Override
+    public void initLiveDataObserve() {
+        viewModel.getDataListLiveData().observe(this, familyAssetsBeans -> {
+            adapter.setData(familyAssetsBeans);
+        });
+    }
+    private PopupWindow initPopUpWindow(View view){
+        PopupWindow popupWindow = new PopupWindow(this);
+        // 璁剧疆甯冨眬鏂囦欢
+        popupWindow.setContentView(view);
+        // 涓轰簡閬垮厤閮ㄥ垎鏈哄瀷涓嶆樉绀猴紝闇�瑕侀噸鏂拌缃竴涓嬪楂�
+        popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
+        popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+        // 璁剧疆pop閫忔槑鏁堟灉
+        popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
+        // 璁剧疆pop鍑哄叆鍔ㄧ敾
+        popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add);
+        // 璁剧疆pop鑾峰彇鐒︾偣锛屽鏋滀负false鐐瑰嚮杩斿洖鎸夐挳浼氶��鍑哄綋鍓岮ctivity锛屽鏋減op涓湁Editor鐨勮瘽锛宖ocusable蹇呴』瑕佷负true
+        popupWindow.setFocusable(true);
+        // 璁剧疆pop鍙偣鍑伙紝涓篺alse鐐瑰嚮浜嬩欢鏃犳晥锛岄粯璁や负true
+        popupWindow.setTouchable(true);
+        // 璁剧疆鐐瑰嚮pop澶栦晶娑堝け锛岄粯璁や负false锛涘湪focusable涓簍rue鏃剁偣鍑诲渚у缁堟秷澶�
+        popupWindow.setOutsideTouchable(false);
+        return popupWindow;
+    }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivityViewModel.java
new file mode 100644
index 0000000..9dfd101
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivityViewModel.java
@@ -0,0 +1,137 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import static com.android.app_base.base.BaseConfig.CODE_SUCCESS;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MutableLiveData;
+
+import com.android.app_base.base.BaseConfig;
+import com.android.app_base.base.StateViewEnum;
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.android.app_base.http.ResultData;
+import com.android.app_base.utils.RxUtils;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.data.DataRepository;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+import io.reactivex.Observer;
+import io.reactivex.disposables.Disposable;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 19:41
+ * @desc
+ */
+public class FamilyAssetsActivityViewModel extends BaseViewModel<DataRepository> {
+
+    private MutableLiveData<List<FamilyAssetsBean>> checkListLiveData;//閫変腑鐨勬暟鎹�
+    private MutableLiveData<List<FamilyAssetsBean>> dataListLiveData;//鎵�鏈夋暟鎹�
+
+
+    public FamilyAssetsActivityViewModel(@NonNull Application application) {
+        super(application);
+    }
+
+    @Override
+    protected DataRepository initModel() {
+        return DataRepository.getInstance();
+    }
+
+
+    public void getFamilyAssets(){
+        model.getFamilyAssets(new HashMap<>())
+                .compose(RxUtils.schedulersTransformer())
+                .subscribe(new Observer<ResultData<FamilyAssetsResponseBean>>() {
+                    @Override
+                    public void onSubscribe(Disposable d) {
+                        addSubscribe(d);
+                    }
+
+                    @Override
+                    public void onNext(ResultData<FamilyAssetsResponseBean> data) {
+                        if (data.getCode() == CODE_SUCCESS){
+                            if (data.getData().getData().isEmpty()){
+                                changeStateView(StateViewEnum.DATA_NULL);
+                            }else {
+                                changeStateView(StateViewEnum.HIDE);
+                                dataListLiveData.postValue(data.getData().getData());
+                            }
+                        }else {
+                            messageLiveData.postValue(data.getMsg());
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        messageLiveData.postValue(e.getMessage());
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    public MutableLiveData<List<FamilyAssetsBean>> getCheckListLiveData() {
+        return checkListLiveData;
+    }
+
+    public void setCheckListLiveData(MutableLiveData<List<FamilyAssetsBean>> checkListLiveData) {
+        this.checkListLiveData = checkListLiveData;
+    }
+
+    public MutableLiveData<List<FamilyAssetsBean>> getDataListLiveData() {
+        if (dataListLiveData == null){
+            dataListLiveData = new MutableLiveData<>();
+        }
+        return dataListLiveData;
+    }
+
+    public void setDataListLiveData(MutableLiveData<List<FamilyAssetsBean>> dataListLiveData) {
+        this.dataListLiveData = dataListLiveData;
+    }
+
+    public void sortDataList(int type){
+        List<FamilyAssetsBean> list = dataListLiveData.getValue();
+        if (list == null || list.isEmpty()){
+            return;
+        }
+
+        list.sort(new Comparator<FamilyAssetsBean>() {
+            @Override
+            public int compare(FamilyAssetsBean o1, FamilyAssetsBean o2) {
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", java.util.Locale.getDefault());
+                Date date1 = null;
+                Date date2 = null;
+                try {
+                    date1 = format.parse(o1.getCreateTime());
+                    date2 = format.parse(o2.getCreateTime());
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+                if (date1 != null && date2 != null) {
+                    if (type == 0){
+                        return date2.compareTo(date1);
+                    }else {
+                        return date1.compareTo(date2);
+                    }
+                }
+                return 0;
+            }
+        });
+        dataListLiveData.postValue(list);
+    }
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java
new file mode 100644
index 0000000..cf1c034
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java
@@ -0,0 +1,103 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.EditText;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.application.zhangshi_app_android.BR;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.databinding.ActivityFamilyAssetsDetailBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 21:46
+ * @desc
+ */
+public class FamilyAssetsDetailActivity extends DLBaseActivity<ActivityFamilyAssetsDetailBinding,FamilyAssetsDetailActivityViewModel> {
+    private ImageRvAdapter adapter;
+
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.activity_family_assets_detail;
+    }
+
+    @Override
+    public int getVariableId() {
+        return BR.viewModel;
+    }
+
+    @Override
+    public void initParam() {
+        if (getIntent().hasExtra("bean")){
+            viewModel.getBeanLiveData().setValue((FamilyAssetsBean) getIntent().getSerializableExtra("bean"));
+        }
+    }
+
+    @Override
+    public void initView() {
+        adapter = new ImageRvAdapter(this);
+        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
+        binding.rvImage.setLayoutManager(gridLayoutManager);
+        binding.rvImage.setNestedScrollingEnabled(false);
+        setIsEdited(false);
+    }
+
+    @Override
+    public void initData() {
+
+    }
+
+    @Override
+    public void initLiveDataObserve() {
+        viewModel.getBeanLiveData().observe(this,bean -> {
+            if (bean!=null){
+                if (getTitleBar() != null){
+                    getTitleBar().setTitle(bean.getHolder() + "鐨�" + bean.getType());
+                }
+                String url = bean.getUrl();
+                if (url == null||url.isEmpty()){
+                    return;
+                }
+                List<String> list;
+                if (url.contains(",")){
+                    String[] split = url.split(",");
+                    list = new ArrayList<>(Arrays.asList(split));
+                }else {
+                    list = new ArrayList<>();
+                    list.add(url);
+                }
+                adapter.setData(list);
+            }
+        });
+    }
+
+    public void setIsEdited(boolean isEdited){
+        disableAllEditText(getContentView(),isEdited);
+        adapter.setIsEdited(isEdited);
+    }
+    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
+        for (int i = 0; i < viewGroup.getChildCount(); i++) {
+            View child = viewGroup.getChildAt(i);
+            if (child instanceof ViewGroup) {
+                disableAllEditText((ViewGroup) child,isEdited);
+            } else if (child instanceof EditText) {
+                child.setEnabled(isEdited);
+                child.setFocusable(isEdited);
+                child.setFocusableInTouchMode(isEdited);
+                if (!isEdited){
+                    child.clearFocus();
+                }
+            }
+        }
+    }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivityViewModel.java
new file mode 100644
index 0000000..9eded93
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivityViewModel.java
@@ -0,0 +1,42 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MutableLiveData;
+
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.data.DataRepository;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 21:47
+ * @desc
+ */
+public class FamilyAssetsDetailActivityViewModel extends BaseViewModel<DataRepository> {
+    private MutableLiveData<FamilyAssetsBean> beanLiveData;
+
+    public MutableLiveData<FamilyAssetsBean> getBeanLiveData() {
+        if (beanLiveData == null){
+            beanLiveData = new MutableLiveData<>();
+        }
+        return beanLiveData;
+    }
+
+    public void setBeanLiveData(MutableLiveData<FamilyAssetsBean> beanLiveData) {
+        this.beanLiveData = beanLiveData;
+    }
+
+    public FamilyAssetsDetailActivityViewModel(@NonNull Application application) {
+        super(application);
+    }
+
+    @Override
+    protected DataRepository initModel() {
+        return DataRepository.getInstance();
+    }
+
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java
index 56f247e..e920c93 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java
@@ -15,6 +15,8 @@
 import androidx.annotation.IdRes;
 import androidx.annotation.LayoutRes;
 import androidx.appcompat.app.AlertDialog;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ViewDataBinding;
 import androidx.drawerlayout.widget.DrawerLayout;
 import androidx.lifecycle.Observer;
 
@@ -30,6 +32,9 @@
 import com.application.zhangshi_app_android.adapter.FamilyMemorabiliaRvAdapter;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
 import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaBinding;
+import com.application.zhangshi_app_android.databinding.PopSearchBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+import com.hjq.bar.TitleBar;
 
 import java.util.List;
 
@@ -38,13 +43,12 @@
  * @date 2023.03.18. 10:00
  * @desc 瀹跺ぇ浜嬭 Activity
  */
-public class FamilyMemorabiliaActivity extends BaseActivity<ActivityFamilyMemorabiliaBinding,FamilyMemorabiliaActivityViewModel> {
+public class FamilyMemorabiliaActivity extends DLBaseActivity<ActivityFamilyMemorabiliaBinding,FamilyMemorabiliaActivityViewModel> {
 
     FamilyMemorabiliaRvAdapter adapter;
     private PopupWindow mOperatePopupWindow;
     private PopupWindow mSearchPopupWindow;
-    private int operateType = 0;
-    private int searchType = 0;
+    private PopSearchBinding mSearchPopBinding;
 
     @Override
     public int getLayoutId() {
@@ -71,33 +75,106 @@
         binding.recyclerView.addItemDecoration(itemDecoration);
         binding.recyclerView.setAdapter(adapter);
 
+        mSearchPopBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.pop_search, null, false);
+        mSearchPopBinding.setViewModel(viewModel);
+        mSearchPopupWindow = initPopUpWindow(mSearchPopBinding.getRoot());
 
-        mOperatePopupWindow = initPopUpWindow(R.layout.pop_operate);
-        mOperatePopupWindow.getContentView().findViewById(R.id.tv_add).setOnClickListener(v -> {
-            AppManager.getAppManager().startActivity(new Intent(this,CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
+        mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null));
+
+        binding.ivSearchDefault.setOnClickListener(v -> {
+            binding.layoutSearch.setVisibility(View.VISIBLE);
+            binding.layoutDefault.setVisibility(View.GONE);
         });
-        mOperatePopupWindow.getContentView().findViewById(R.id.tv_select).setOnClickListener(v -> {
-            binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
-            operateType = 1;
-            adapter.setCheckable(true);
-            mOperatePopupWindow.dismiss();
+
+        binding.ivSearchType.setOnClickListener(v -> {
+            mSearchPopupWindow.setWidth(binding.layoutSearch.getMeasuredWidth());
+            mSearchPopupWindow.showAsDropDown(binding.layoutSearch,0,0);
         });
-        mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> {
-            viewModel.changeOrder(true);
-            mOperatePopupWindow.dismiss();
+
+        binding.etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+                if ((actionId == EditorInfo.IME_ACTION_UNSPECIFIED || actionId == EditorInfo.IME_ACTION_SEARCH)
+                        && event != null) {
+                    viewModel.getFamilyMemorabilia();
+                    binding.layoutSearch.setVisibility(View.GONE);
+                    binding.layoutDefault.setVisibility(View.VISIBLE);
+                    binding.tvTitle.setText("鎼滅储缁撴灉");
+                    hideSoftKeyboard();
+                    return true;
+                }
+                return false;
+            }
         });
-        mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> {
-            viewModel.changeOrder(false);
-            mOperatePopupWindow.dismiss();
+        binding.ivSearch.setOnClickListener(v -> {
+            viewModel.getFamilyMemorabilia();
+            binding.layoutSearch.setVisibility(View.GONE);
+            binding.layoutDefault.setVisibility(View.VISIBLE);
+            binding.tvTitle.setText("鎼滅储缁撴灉");
+            mSearchPopupWindow.dismiss();
+            hideSoftKeyboard();
         });
-        binding.ivOperate.setOnClickListener(v -> {
-            if (operateType == 0){
-                mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
-            } else if (operateType == 1) {
+        binding.fabAdd.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
+            }
+        });
+
+        setOnClickListener(
+                mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_person),
+                mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_place),
+                mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_time),
+                mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_title),
+                mOperatePopupWindow.getContentView().findViewById(R.id.tv_add),
+                mOperatePopupWindow.getContentView().findViewById(R.id.tv_select),
+                mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old),
+                mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new)
+                );
+
+    }
+
+    @Override
+    public void initData() {
+        viewModel.getFamilyMemorabilia();
+    }
+
+    @Override
+    public void initLiveDataObserve() {
+        viewModel.getCheckListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() {
+            @Override
+            public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
+                if (viewModel.getOperateTypeLiveData().getValue() == 0){
+                    return;
+                }
+                if (familyMemorabiliaBeans.isEmpty()){
+                    viewModel.getOperateTypeLiveData().postValue(1);
+                }else{
+                    viewModel.getOperateTypeLiveData().postValue(2);
+                }
+            }
+        });
+        viewModel.getDataListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() {
+            @Override
+            public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
+                adapter.setData(familyMemorabiliaBeans);
+            }
+        });
+        viewModel.getOperateTypeLiveData().observe(this, integer -> {
+            if (integer == 0){
                 binding.ivOperate.setBackgroundResource(R.drawable.ic_operate);
-                operateType = 0;
+                binding.ivOperate.setOnClickListener(v -> {
+                    mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
+                });
                 adapter.setCheckable(false);
-            } else {
+            }else if (integer == 1){
+                binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
+                binding.ivOperate.setOnClickListener(v -> {
+                    viewModel.getOperateTypeLiveData().postValue(0);
+                });
+                adapter.setCheckable(true);
+            }else if (integer == 2){
+                binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white);
                 new UIDialog.Builder(this)
                         .setTitle("鎮ㄧ‘瀹氳鍒犻櫎椤圭洰鍚�")
                         .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠")
@@ -110,90 +187,16 @@
                             }
                         })
                         .show();
-            }
-        });
-
-        mSearchPopupWindow = initPopUpWindow(R.layout.pop_search);
-        binding.ivSearchType.setOnClickListener(v -> {
-            mSearchPopupWindow.showAsDropDown(binding.etSearch,0,0);
-        });
-        binding.ivSearchDefault.setOnClickListener(v -> {
-            binding.layoutSearch.setVisibility(View.VISIBLE);
-            binding.layoutDefault.setVisibility(View.GONE);
-        });
-        binding.fabAdd.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
-            }
-        });
-
-        setOnClickListener(
-                mSearchPopupWindow.getContentView().findViewById(R.id.tv_global_search),
-                mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_in_family_memorabilia),
-                mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_title),
-                mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_people),
-                mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_time),
-                mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_place));
-
-
-        binding.etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
-            @Override
-            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-                if ((actionId == EditorInfo.IME_ACTION_UNSPECIFIED || actionId == EditorInfo.IME_ACTION_SEARCH)
-                        && event != null) {
-                    viewModel.getFamilyMemorabilia(searchType);
-                    hideSoftKeyboard();
-                    return true;
-                }
-                return false;
-            }
-        });
-
-        binding.ivMenu.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                binding.drawerLayout.open();
-            }
-        });
-        binding.drawerLayout.setScrimColor(getResources().getColor(R.color.color_shadow));
-    }
-
-    @Override
-    public void initData() {
-        viewModel.getFamilyMemorabilia(searchType);
-    }
-
-    @Override
-    public void initLiveDataObserve() {
-        viewModel.getCheckListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() {
-            @Override
-            public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
-                if (operateType == 0){
-                    return;
-                }
-                if (familyMemorabiliaBeans.isEmpty()){
-                    binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
-                    operateType = 1;
-                }else{
-                    binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white);
-                    operateType = 2;
-                }
-            }
-        });
-        viewModel.getDataListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() {
-            @Override
-            public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
-                adapter.setData(familyMemorabiliaBeans);
+                adapter.setCheckable(true);
             }
         });
     }
 
 
-    private PopupWindow initPopUpWindow(@LayoutRes int layoutId){
+    private PopupWindow initPopUpWindow(View view){
         PopupWindow popupWindow = new PopupWindow(this);
         // 璁剧疆甯冨眬鏂囦欢
-        popupWindow.setContentView(LayoutInflater.from(this).inflate(layoutId, null));
+        popupWindow.setContentView(view);
         // 涓轰簡閬垮厤閮ㄥ垎鏈哄瀷涓嶆樉绀猴紝闇�瑕侀噸鏂拌缃竴涓嬪楂�
         popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
         popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
@@ -206,7 +209,7 @@
         // 璁剧疆pop鍙偣鍑伙紝涓篺alse鐐瑰嚮浜嬩欢鏃犳晥锛岄粯璁や负true
         popupWindow.setTouchable(true);
         // 璁剧疆鐐瑰嚮pop澶栦晶娑堝け锛岄粯璁や负false锛涘湪focusable涓簍rue鏃剁偣鍑诲渚у缁堟秷澶�
-        popupWindow.setOutsideTouchable(true);
+        popupWindow.setOutsideTouchable(false);
         return popupWindow;
     }
 
@@ -218,32 +221,26 @@
     }
 
     @Override
+    protected void hide() {
+        super.hide();
+        binding.layoutDataNull.setVisibility(View.GONE);
+        binding.recyclerView.setVisibility(View.VISIBLE);
+    }
+
+    @Override
     public void onClick(View v) {
         int id = v.getId();
-        if (id == R.id.tv_global_search){
-            searchType = 0;
-            binding.etSearch.setHint("鍏ㄥ眬鎼滅储");
-            mSearchPopupWindow.dismiss();
-        }else if (id == R.id.tv_search_in_family_memorabilia) {
-            searchType = 1;
-            mSearchPopupWindow.dismiss();
-            binding.etSearch.setHint("鍦ㄢ�滃澶т簨璁扳�濆唴鎼滅储");
-        }else if (id == R.id.tv_search_by_title) {
-            searchType = 2;
-            mSearchPopupWindow.dismiss();
-            binding.etSearch.setHint("鎸夆�滃ぇ浜嬭鏍囬鈥濇悳绱�");
-        }else if (id == R.id.tv_search_by_people) {
-            searchType = 3;
-            mSearchPopupWindow.dismiss();
-            binding.etSearch.setHint("鎸夆�滀汉鐗┾�濇悳绱�");
-        }else if (id == R.id.tv_search_by_time) {
-            searchType = 4;
-            mSearchPopupWindow.dismiss();
-            binding.etSearch.setHint("鎸夆�滄椂闂粹�濇悳绱�");
-        }else if (id == R.id.tv_search_by_place) {
-            searchType = 5;
-            mSearchPopupWindow.dismiss();
-            binding.etSearch.setHint("鎸夆�滃湴鐐光�濇悳绱�");
+        if (id == R.id.tv_add){
+            AppManager.getAppManager().startActivity(new Intent(this,CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
+        }else if (id == R.id.tv_select){
+            viewModel.getOperateTypeLiveData().postValue(1);
+            mOperatePopupWindow.dismiss();
+        } else if (id == R.id.tv_from_new_to_old) {
+            viewModel.changeOrder(true);
+            mOperatePopupWindow.dismiss();
+        } else if (id == R.id.tv_from_old_to_new) {
+            viewModel.changeOrder(false);
+            mOperatePopupWindow.dismiss();
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java
index c8c606b..dbaa710 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java
@@ -11,13 +11,18 @@
 import com.android.app_base.base.viewmodel.BaseViewModel;
 import com.android.app_base.http.ResultData;
 import com.android.app_base.utils.RxUtils;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
 import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
 import com.application.zhangshi_app_android.data.DataRepository;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,9 +37,11 @@
  */
 public class FamilyMemorabiliaActivityViewModel extends BaseViewModel<DataRepository> {
 
-    private MutableLiveData<List<FamilyMemorabiliaBean>> checkListLiveData;
-    private MutableLiveData<List<FamilyMemorabiliaBean>> dataListLiveData;
-    private MutableLiveData<String> stringMutableLiveData;
+    private MutableLiveData<List<FamilyMemorabiliaBean>> checkListLiveData;//閫変腑鐨勬暟鎹�
+    private MutableLiveData<List<FamilyMemorabiliaBean>> dataListLiveData;//鎵�鏈夋暟鎹�
+    private MutableLiveData<Integer> operateTypeLiveData;//鎿嶄綔绫诲瀷 0 閫夋嫨鎿嶄綔 1.瀹屾垚 2.鍒犻櫎
+
+    private MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData;
     public FamilyMemorabiliaActivityViewModel(@NonNull Application application) {
         super(application);
     }
@@ -46,24 +53,11 @@
     /**
      * 鑾峰彇瀹跺ぇ浜嬭
      */
-    public void getFamilyMemorabilia(int searchType) {
-        Map<String, Object> queryMap = new HashMap<>();
-        queryMap.put("pageNum",1);
-        queryMap.put("pageSize",20);
-        if (searchType == 1){
-            queryMap.put("remark",stringMutableLiveData.getValue());
-        } else if (searchType == 2) {
-            queryMap.put("title",stringMutableLiveData.getValue());
-        }else if (searchType == 3) {
-            queryMap.put("people",stringMutableLiveData.getValue());
+    public void getFamilyMemorabilia() {
+        if (getRequestBeanMutableLiveData().getValue() == null){
+            getRequestBeanMutableLiveData().setValue(new FamilyMemorabiliaRequestBean());
         }
-        else if (searchType == 4) {
-            queryMap.put("createTime",stringMutableLiveData.getValue());
-        }
-        else if (searchType == 5) {
-            queryMap.put("address",stringMutableLiveData.getValue());
-        }
-        model.getFamilyMemorabilia(queryMap)
+        model.getFamilyMemorabilia(getRequestBeanMutableLiveData().getValue().getMap())
                 .compose(RxUtils.schedulersTransformer())
                 .subscribe(new Observer<ResultData<FamilyMemorabiliaResponseBean>>() {
                     @Override
@@ -77,6 +71,7 @@
                             if (data.getData().getData().isEmpty()){
                                 changeStateView(StateViewEnum.DATA_NULL);
                             }else {
+                                changeStateView(StateViewEnum.HIDE);
                                 dataListLiveData.postValue(data.getData().getData());
                             }
                         }else {
@@ -168,35 +163,60 @@
         this.dataListLiveData = dataListLiveData;
     }
 
-    public MutableLiveData<String> getStringMutableLiveData() {
-        if (stringMutableLiveData == null){
-            stringMutableLiveData = new MutableLiveData<>();
+    @NonNull
+    public MutableLiveData<FamilyMemorabiliaRequestBean> getRequestBeanMutableLiveData() {
+        if (requestBeanMutableLiveData == null){
+            requestBeanMutableLiveData = new MutableLiveData<>();
         }
-        return stringMutableLiveData;
+        if (requestBeanMutableLiveData.getValue()==null){
+            requestBeanMutableLiveData.postValue(new FamilyMemorabiliaRequestBean());
+        }
+        return requestBeanMutableLiveData;
     }
 
-    public void setStringMutableLiveData(MutableLiveData<String> stringMutableLiveData) {
-        this.stringMutableLiveData = stringMutableLiveData;
+    public void setRequestBeanMutableLiveData(MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData) {
+        this.requestBeanMutableLiveData = requestBeanMutableLiveData;
+    }
+
+    public MutableLiveData<Integer> getOperateTypeLiveData() {
+        if (operateTypeLiveData == null){
+            operateTypeLiveData = new MutableLiveData<>();
+            operateTypeLiveData.setValue(0);
+        }
+        return operateTypeLiveData;
+    }
+
+    public void setOperateTypeLiveData(MutableLiveData<Integer> operateTypeLiveData) {
+        this.operateTypeLiveData = operateTypeLiveData;
     }
 
     public void changeOrder(boolean b) {
-        List<FamilyMemorabiliaBean> dataList = getDataListLiveData().getValue();
-        if (dataList == null) return;
-        if (b){
-            dataList.sort(new Comparator<FamilyMemorabiliaBean>() {
-                @Override
-                public int compare(FamilyMemorabiliaBean o1, FamilyMemorabiliaBean o2) {
-                    return (int) (o1.getId() - o2.getId());
-                }
-            });
-        }else {
-            dataList.sort(new Comparator<FamilyMemorabiliaBean>() {
-                @Override
-                public int compare(FamilyMemorabiliaBean o1, FamilyMemorabiliaBean o2) {
-                    return (int) (o2.getId() - o1.getId());
-                }
-            });
+        List<FamilyMemorabiliaBean> list = getDataListLiveData().getValue();
+        if (list == null || list.isEmpty()){
+            return;
         }
-        getDataListLiveData().postValue(dataList);
+        list.sort(new Comparator<FamilyMemorabiliaBean>() {
+            @Override
+            public int compare(FamilyMemorabiliaBean o1, FamilyMemorabiliaBean o2) {
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", java.util.Locale.getDefault());
+                Date date1 = null;
+                Date date2 = null;
+                try {
+                    date1 = format.parse(o1.getCreateTime());
+                    date2 = format.parse(o2.getCreateTime());
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+                if (date1 != null && date2 != null) {
+                    if (b){
+                        return date2.compareTo(date1);
+                    }else {
+                        return date1.compareTo(date2);
+                    }
+                }
+                return 0;
+            }
+        });
+        getDataListLiveData().postValue(list);
     }
 }
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java
index 6c08b27..721915d 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java
@@ -47,6 +47,24 @@
                 AppManager.getAppManager().startActivity(FamilyMemorabiliaActivity.class);
             }
         });
+        binding.layoutGrowingUp.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                AppManager.getAppManager().startActivity(GrowthExperienceActivity.class);
+            }
+        });
+        binding.layoutFamilyAssets.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                AppManager.getAppManager().startActivity(FamilyAssetsActivity.class);
+            }
+        });
+        binding.layoutHomeDevices.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                AppManager.getAppManager().startActivity(HomeDevicesActivity.class);
+            }
+        });
     }
 
     @Override
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java
new file mode 100644
index 0000000..9a32a27
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java
@@ -0,0 +1,99 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.graphics.drawable.ColorDrawable;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.PopupWindow;
+
+import com.android.app_base.utils.ScreenSizeUtils;
+import com.android.app_base.widget.LinearItemDecoration;
+import com.application.zhangshi_app_android.BR;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.FamilyAssetsRvAdapter;
+import com.application.zhangshi_app_android.adapter.HomeDevicesRvAdapter;
+import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 0:00
+ * @desc 瀹跺涵璁惧
+ */
+public class HomeDevicesActivity extends DLBaseActivity<ActivityHomeDevicesBinding,HomeDevicesActivityViewModel> {
+
+    private HomeDevicesRvAdapter adapter;
+    private PopupWindow mOperatePopupWindow;
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.activity_home_devices;
+    }
+
+    @Override
+    public int getVariableId() {
+        return BR.viewModel;
+    }
+
+    @Override
+    public void initParam() {
+
+    }
+
+    @Override
+    public void initView() {
+        adapter = new HomeDevicesRvAdapter(this);
+        LinearItemDecoration itemDecoration = new LinearItemDecoration();
+        itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12));
+        itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
+        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
+        binding.recyclerView.addItemDecoration(itemDecoration);
+        binding.recyclerView.setAdapter(adapter);
+
+        mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null));
+        mOperatePopupWindow.getContentView().findViewById(R.id.layout_add).setVisibility(View.GONE);
+        mOperatePopupWindow.getContentView().findViewById(R.id.layout_select).setVisibility(View.GONE);
+        mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> {
+            viewModel.sortDataList(0);
+            mOperatePopupWindow.dismiss();
+        });
+        mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> {
+            viewModel.sortDataList(1);
+            mOperatePopupWindow.dismiss();
+        });
+        binding.ivOperate.setOnClickListener(v -> {
+            mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
+        });
+    }
+
+    @Override
+    public void initData() {
+        viewModel.getHomeDevices();
+    }
+
+    @Override
+    public void initLiveDataObserve() {
+        viewModel.getDataListLiveData().observe(this, homeDevices -> {
+            adapter.setData(homeDevices);
+        });
+    }
+    private PopupWindow initPopUpWindow(View view){
+        PopupWindow popupWindow = new PopupWindow(this);
+        // 璁剧疆甯冨眬鏂囦欢
+        popupWindow.setContentView(view);
+        // 涓轰簡閬垮厤閮ㄥ垎鏈哄瀷涓嶆樉绀猴紝闇�瑕侀噸鏂拌缃竴涓嬪楂�
+        popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
+        popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+        // 璁剧疆pop閫忔槑鏁堟灉
+        popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
+        // 璁剧疆pop鍑哄叆鍔ㄧ敾
+        popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add);
+        // 璁剧疆pop鑾峰彇鐒︾偣锛屽鏋滀负false鐐瑰嚮杩斿洖鎸夐挳浼氶��鍑哄綋鍓岮ctivity锛屽鏋減op涓湁Editor鐨勮瘽锛宖ocusable蹇呴』瑕佷负true
+        popupWindow.setFocusable(true);
+        // 璁剧疆pop鍙偣鍑伙紝涓篺alse鐐瑰嚮浜嬩欢鏃犳晥锛岄粯璁や负true
+        popupWindow.setTouchable(true);
+        // 璁剧疆鐐瑰嚮pop澶栦晶娑堝け锛岄粯璁や负false锛涘湪focusable涓簍rue鏃剁偣鍑诲渚у缁堟秷澶�
+        popupWindow.setOutsideTouchable(false);
+        return popupWindow;
+    }
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java
new file mode 100644
index 0000000..8fa8936
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java
@@ -0,0 +1,138 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import static com.android.app_base.base.BaseConfig.CODE_SUCCESS;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+
+import com.android.app_base.base.StateViewEnum;
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.android.app_base.http.ResultData;
+import com.android.app_base.utils.RxUtils;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
+import com.application.zhangshi_app_android.data.DataRepository;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+import io.reactivex.Observer;
+import io.reactivex.disposables.Disposable;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 0:01
+ * @desc 瀹跺涵璁惧 ViewModel
+ */
+public class HomeDevicesActivityViewModel extends BaseViewModel<DataRepository> {
+    private MutableLiveData<List<HomeDevicesBean>> dataListLiveData;//鏁版嵁
+
+
+    public HomeDevicesActivityViewModel(@NonNull Application application) {
+        super(application);
+    }
+
+    @Override
+    protected DataRepository initModel() {
+        return DataRepository.getInstance();
+    }
+
+    public void getHomeDevices(){
+        List<HomeDevicesBean> list = new ArrayList<>();
+        list.add(new HomeDevicesBean(1,"鐢佃","2023-04-03","寮犱笁","澶忔櫘娑叉櫠鐢佃","瀹㈠巺","4k瓒呴珮娓�",""));
+        list.add(new HomeDevicesBean(1,"鐢佃","2023-04-02","寮犱笁","澶忔櫘娑叉櫠鐢佃","瀹㈠巺","4k瓒呴珮娓�",""));
+        list.add(new HomeDevicesBean(1,"鐢佃","2023-04-01","寮犱笁","澶忔櫘娑叉櫠鐢佃","瀹㈠巺","4k瓒呴珮娓�",""));
+        if (list != null && !list.isEmpty()){
+            dataListLiveData.postValue(list);
+            return;
+        }
+        model.getHomeDevices(new HashMap<>())
+                .compose(RxUtils.schedulersTransformer())
+                .subscribe(new Observer<ResultData<HomeDevicesResponseBean>>() {
+                    @Override
+                    public void onSubscribe(Disposable d) {
+                        addSubscribe(d);
+                    }
+
+                    @Override
+                    public void onNext(ResultData<HomeDevicesResponseBean> data) {
+                        if (data.getCode() == CODE_SUCCESS){
+                            if (data.getData().getData().isEmpty()){
+                                changeStateView(StateViewEnum.DATA_NULL);
+                            }else {
+                                changeStateView(StateViewEnum.HIDE);
+                                dataListLiveData.postValue(data.getData().getData());
+                            }
+                        }else {
+                            messageLiveData.postValue(data.getMsg());
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        messageLiveData.postValue(e.getMessage());
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    public MutableLiveData<List<HomeDevicesBean>> getDataListLiveData() {
+        if (dataListLiveData == null){
+            dataListLiveData = new MutableLiveData<>();
+        }
+        return dataListLiveData;
+    }
+
+    public void setDataListLiveData(MutableLiveData<List<HomeDevicesBean>> dataListLiveData) {
+        this.dataListLiveData = dataListLiveData;
+    }
+
+    /**
+     * 鎸夋椂闂存帓搴�
+     * @param type 0 浠庢柊鍒版棫 1 浠庢棫鍒版柊
+     */
+    public void sortDataList(int type){
+        List<HomeDevicesBean> list = dataListLiveData.getValue();
+        if (list == null || list.isEmpty()){
+            return;
+        }
+
+        list.sort(new Comparator<HomeDevicesBean>() {
+            @Override
+            public int compare(HomeDevicesBean o1, HomeDevicesBean o2) {
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", java.util.Locale.getDefault());
+                Date date1 = null;
+                Date date2 = null;
+                try {
+                    date1 = format.parse(o1.getCreateTime());
+                    date2 = format.parse(o2.getCreateTime());
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+                if (date1 != null && date2 != null) {
+                    if (type == 0){
+                        return date2.compareTo(date1);
+                    }else {
+                        return date1.compareTo(date2);
+                    }
+                }
+                return 0;
+            }
+        });
+        dataListLiveData.postValue(list);
+    }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java
new file mode 100644
index 0000000..a78bb0c
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java
@@ -0,0 +1,103 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.EditText;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.application.zhangshi_app_android.BR;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesDetailBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 15:19
+ * @desc
+ */
+public class HomeDevicesDetailActivity extends DLBaseActivity<ActivityHomeDevicesDetailBinding,HomeDevicesDetailActivityViewModel> {
+
+    private ImageRvAdapter adapter;
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.activity_home_devices_detail;
+    }
+
+    @Override
+    public int getVariableId() {
+        return BR.viewModel;
+    }
+
+    @Override
+    public void initParam() {
+        if (getIntent().hasExtra("bean")){
+            viewModel.getBeanLiveData().setValue((HomeDevicesBean) getIntent().getSerializableExtra("bean"));
+        }
+    }
+
+    @Override
+    public void initView() {
+        adapter = new ImageRvAdapter(this);
+        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
+        binding.rvImage.setLayoutManager(gridLayoutManager);
+        binding.rvImage.setNestedScrollingEnabled(false);
+        setIsEdited(false);
+    }
+
+    @Override
+    public void initData() {
+
+    }
+
+    @Override
+    public void initLiveDataObserve() {
+        viewModel.getBeanLiveData().observe(this,bean -> {
+            if (bean!=null){
+                if (getTitleBar() != null){
+                    getTitleBar().setTitle(bean.getName());
+                }
+                String url = bean.getUrl();
+                if (url == null||url.isEmpty()){
+                    return;
+                }
+                List<String> list;
+                if (url.contains(",")){
+                    String[] split = url.split(",");
+                    list = new ArrayList<>(Arrays.asList(split));
+                }else {
+                    list = new ArrayList<>();
+                    list.add(url);
+                }
+                adapter.setData(list);
+            }
+        });
+    }
+    public void setIsEdited(boolean isEdited){
+        disableAllEditText(getContentView(),isEdited);
+        adapter.setIsEdited(isEdited);
+    }
+    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
+        for (int i = 0; i < viewGroup.getChildCount(); i++) {
+            View child = viewGroup.getChildAt(i);
+            if (child instanceof ViewGroup) {
+                disableAllEditText((ViewGroup) child,isEdited);
+            } else if (child instanceof EditText) {
+                child.setEnabled(isEdited);
+                child.setFocusable(isEdited);
+                child.setFocusableInTouchMode(isEdited);
+                if (!isEdited){
+                    child.clearFocus();
+                }
+            }
+        }
+    }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java
new file mode 100644
index 0000000..d79aff7
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java
@@ -0,0 +1,41 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MutableLiveData;
+
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.data.DataRepository;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 15:35
+ * @desc 瀹跺涵璁惧璇︽儏 ViewModel
+ */
+public class HomeDevicesDetailActivityViewModel extends BaseViewModel<DataRepository> {
+    private MutableLiveData<HomeDevicesBean> beanLiveData;
+
+
+    public HomeDevicesDetailActivityViewModel(@NonNull Application application) {
+        super(application);
+    }
+
+    @Override
+    protected DataRepository initModel() {
+        return DataRepository.getInstance();
+    }
+
+    public MutableLiveData<HomeDevicesBean> getBeanLiveData() {
+        if (beanLiveData == null){
+            beanLiveData = new MutableLiveData<>();
+        }
+        return beanLiveData;
+    }
+
+    public void setBeanLiveData(MutableLiveData<HomeDevicesBean> beanLiveData) {
+        this.beanLiveData = beanLiveData;
+    }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java
index f04b9bb..cf36ae4 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java
@@ -2,6 +2,7 @@
 
 import static com.android.app_base.base.BaseConfig.EXTRA_TYPE;
 
+import android.Manifest;
 import android.content.Intent;
 import android.view.View;
 
@@ -10,10 +11,12 @@
 import com.android.app_base.base.view.BaseActivity;
 import com.android.app_base.manager.AppManager;
 import com.android.app_base.manager.UserManager;
+import com.android.app_base.utils.ToastUtils;
 import com.application.zhangshi_app_android.BR;
 import com.application.zhangshi_app_android.R;
 import com.application.zhangshi_app_android.databinding.ActivityLoginBinding;
 import com.application.zhangshi_app_android.ui.main.MainActivity;
+import com.blankj.utilcode.util.PermissionUtils;
 import com.gyf.immersionbar.ImmersionBar;
 
 /**
@@ -35,7 +38,6 @@
 
     @Override
     public void initParam() {
-        System.out.println("token"+UserManager.getInstance().getToken());
         if (!UserManager.getInstance().getToken().isEmpty()){
             AppManager.getAppManager().startActivity(MainActivity.class);
             finish();
diff --git a/app/src/main/res/drawable-xhdpi/function_home_devices.png b/app/src/main/res/drawable-xhdpi/function_home_devices.png
new file mode 100644
index 0000000..3f911ec
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/function_home_devices.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/function_notes.png b/app/src/main/res/drawable-xhdpi/function_notes.png
index e5a6f62..b4f50ba 100644
--- a/app/src/main/res/drawable-xhdpi/function_notes.png
+++ b/app/src/main/res/drawable-xhdpi/function_notes.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_clear.png b/app/src/main/res/drawable-xhdpi/ic_clear.png
new file mode 100644
index 0000000..d3ccddf
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_clear.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_image_delete.png b/app/src/main/res/drawable-xhdpi/ic_image_delete.png
new file mode 100644
index 0000000..da7d576
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_image_delete.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/img_data_null.png b/app/src/main/res/drawable-xhdpi/img_data_null.png
new file mode 100644
index 0000000..9efc642
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/img_data_null.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/function_home_devices.png b/app/src/main/res/drawable-xxhdpi/function_home_devices.png
new file mode 100644
index 0000000..cf80c9a
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/function_home_devices.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/function_notes.png b/app/src/main/res/drawable-xxhdpi/function_notes.png
index e5a6f62..594f81c 100644
--- a/app/src/main/res/drawable-xxhdpi/function_notes.png
+++ b/app/src/main/res/drawable-xxhdpi/function_notes.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_clear.png b/app/src/main/res/drawable-xxhdpi/ic_clear.png
new file mode 100644
index 0000000..2d3197e
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_clear.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_image_delete.png b/app/src/main/res/drawable-xxhdpi/ic_image_delete.png
new file mode 100644
index 0000000..b00f2e6
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_image_delete.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_data_null.png b/app/src/main/res/drawable-xxhdpi/img_data_null.png
new file mode 100644
index 0000000..f779ae1
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/img_data_null.png
Binary files differ
diff --git a/app/src/main/res/drawable/shape_73fab4cd_solid.xml b/app/src/main/res/drawable/shape_73fab4cd_solid.xml
index 7c318ce..302267a 100644
--- a/app/src/main/res/drawable/shape_73fab4cd_solid.xml
+++ b/app/src/main/res/drawable/shape_73fab4cd_solid.xml
@@ -2,7 +2,7 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:shape="rectangle">
-    <solid android:color="#73fab4cd" />
-    <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp" />
+    <solid android:color="#73FAB4CD" />
+    <corners android:radius="10dp" />
 
 </shape>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_family_assets.xml b/app/src/main/res/layout/activity_family_assets.xml
new file mode 100644
index 0000000..3af418b
--- /dev/null
+++ b/app/src/main/res/layout/activity_family_assets.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <data>
+        <variable
+            name="viewModel"
+            type="com.application.zhangshi_app_android.ui.function.FamilyAssetsActivityViewModel" />
+    </data>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <com.android.app_base.widget.ExtendTitleBar
+            android:id="@+id/titleBar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:layout_constraintTop_toTopOf="parent"
+            >
+            <FrameLayout
+                android:layout_width="24dp"
+                android:layout_height="24dp"
+                android:layout_marginHorizontal="16dp"
+                android:layout_gravity="center_vertical|end"
+                >
+                <ImageView
+                    android:id="@+id/iv_operate"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:background="@drawable/ic_operate"
+                    />
+            </FrameLayout>
+
+            <LinearLayout
+                android:id="@+id/layout_default"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginHorizontal="56dp"
+                android:gravity="center_vertical"
+                >
+                <TextView
+                    android:id="@+id/tv_title"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="16dp"
+                    android:text="瀹跺涵璧勪骇"
+                    android:layout_weight="1"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/sp_20"
+                    />
+                <ImageView
+                    android:id="@+id/iv_search_default"
+                    android:layout_width="@dimen/dp_24"
+                    android:layout_height="@dimen/dp_24"
+                    android:background="@drawable/ic_search"
+                    />
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/layout_search"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginVertical="4dp"
+                android:layout_marginHorizontal="56dp"
+                android:gravity="center_vertical"
+                android:background="@color/white"
+                android:paddingHorizontal="5dp"
+                android:visibility="gone"
+                >
+                <ImageView
+                    android:id="@+id/iv_search"
+                    android:layout_width="24dp"
+                    android:layout_height="24dp"
+                    android:background="@drawable/ic_search_gray"
+                    />
+                <EditText
+                    android:id="@+id/et_search"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:layout_marginStart="5dp"
+                    android:textSize="14sp"
+                    android:textColor="#61000000"
+                    android:background="@null"
+                    android:imeOptions="actionSearch"
+                    android:text=""
+                    android:singleLine="true"
+                    android:hint="鍦ㄢ�滃澶т簨璁板唴鎼滅储鈥�"
+                    />
+                <ImageView
+                    android:id="@+id/iv_search_type"
+                    android:layout_width="24dp"
+                    android:layout_height="24dp"
+                    android:background="@drawable/ic_search_by"
+                    />
+            </LinearLayout>
+
+        </com.android.app_base.widget.ExtendTitleBar>
+
+        <LinearLayout
+            android:id="@+id/layout_data_null"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:gravity="center"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/titleBar">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@drawable/img_data_null"
+                />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="18dp"
+                android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�"
+                android:textSize="14sp"
+                android:textColor="#73000000"
+                />
+        </LinearLayout>
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:background="@color/color_normal_background"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/titleBar"
+            app:layout_constraintVertical_bias="1.0"
+            tools:itemCount="20"
+            tools:layout_editor_absoluteX="-81dp"
+            tools:listitem="@layout/item_family_memorabilia" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_family_assets_detail.xml b/app/src/main/res/layout/activity_family_assets_detail.xml
new file mode 100644
index 0000000..63f1c2a
--- /dev/null
+++ b/app/src/main/res/layout/activity_family_assets_detail.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <data>
+        <variable
+            name="viewModel"
+            type="com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivityViewModel" />
+    </data>
+
+    <LinearLayout
+        tools:context=".ui.function.CreateFamilyProjectActivity"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/color_normal_background"
+        android:orientation="vertical">
+
+        <com.android.app_base.widget.ExtendTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:title="鍝堝搱鍝�"
+            app:titleGravity="left"
+            />
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:layout_constraintTop_toBottomOf="@id/titleBar"
+            >
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical"
+                android:paddingHorizontal="20dp"
+                >
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="@dimen/dp_10"
+                    android:layout_height="@dimen/dp_20"
+                    android:text="绫诲埆"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:inputType="text"
+                    android:autofillHints="creditCardNumber"
+                    android:textColorHint="#6b000000"
+                    android:textColor="#DE000000"
+                    android:textSize="16sp"
+                    android:text="@={viewModel.beanLiveData.type}"
+                    />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="鏃堕棿"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColor="#DE000000"
+                    android:text="@={viewModel.beanLiveData.createTime}"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="璇佷欢鍗″彿"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColorHint="#6b000000"
+                    android:text="@={viewModel.beanLiveData.title}"
+                    android:textColor="#DE000000"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="寮�鎴疯"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColorHint="#6b000000"
+                    android:textColor="#DE000000"
+                    android:text="@={viewModel.beanLiveData.location}"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="鎸佹湁浜�"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColorHint="#6b000000"
+                    android:textColor="#DE000000"
+                    android:text="@={viewModel.beanLiveData.holder}"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="瀛樻斁鍦扮偣"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColorHint="#6b000000"
+                    android:textColor="#DE000000"
+                    android:text="@={viewModel.beanLiveData.address}"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="澶囨敞"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColorHint="#6b000000"
+                    android:textColor="#DE000000"
+                    android:text="@={viewModel.beanLiveData.remark}"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="鐢靛瓙鏂囦欢"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="@drawable/shape_6b0000_stroke"
+                    >
+                    <com.android.app_base.widget.WrapRecyclerView
+                        android:id="@+id/rv_image"
+                        android:orientation="vertical"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="10dp"
+                        android:layout_marginTop="2sp"
+                        android:paddingStart="10dp"
+                        android:paddingEnd="5dp"
+                        android:paddingVertical="10dp"
+                        />
+
+                </RelativeLayout>
+
+
+            </LinearLayout>
+        </ScrollView>
+
+
+    </LinearLayout>
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_family_memorabilia.xml b/app/src/main/res/layout/activity_family_memorabilia.xml
index 6dd883b..60fe133 100644
--- a/app/src/main/res/layout/activity_family_memorabilia.xml
+++ b/app/src/main/res/layout/activity_family_memorabilia.xml
@@ -1,759 +1,156 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools">
-
+    xmlns:tools="http://schemas.android.com/tools"
+    >
     <data>
         <variable
             name="viewModel"
             type="com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivityViewModel"/>
     </data>
-    <androidx.drawerlayout.widget.DrawerLayout
-        android:id="@+id/drawerLayout"
+
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        tools:openDrawer="start"
-        >
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            tools:context=".ui.function.FamilyMemorabiliaActivity"
-            android:orientation="vertical">
+        tools:context=".ui.function.FamilyMemorabiliaActivity"
+        android:orientation="vertical">
 
-            <com.hjq.bar.TitleBar
-                android:id="@+id/titleBar"
-                android:layout_width="match_parent"
-                android:layout_height="?attr/actionBarSize"
-                app:layout_constraintTop_toTopOf="parent"
-                android:paddingHorizontal="0dp"
-                android:background="@color/color_title_bar_background"
-                app:leftIcon="@null"
-                app:rightIcon="@null"
+        <com.android.app_base.widget.ExtendTitleBar
+            android:id="@+id/titleBar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:layout_constraintTop_toTopOf="parent"
+            >
+            <FrameLayout
+                android:layout_width="24dp"
+                android:layout_height="24dp"
+                android:layout_marginHorizontal="16dp"
+                android:layout_gravity="center_vertical|end"
                 >
                 <ImageView
-                    android:id="@+id/iv_menu"
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_marginHorizontal="16dp"
-                    android:background="@drawable/ic_menu"
-                    android:layout_gravity="center_vertical"
-                    />
-                <FrameLayout
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_marginHorizontal="16dp"
-                    android:layout_gravity="center_vertical|end"
-                    >
-                    <ImageView
-                        android:id="@+id/iv_operate"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_gravity="center"
-                        android:background="@drawable/ic_operate"
-                        />
-                </FrameLayout>
-
-                <LinearLayout
-                    android:id="@+id/layout_default"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:layout_marginHorizontal="56dp"
-                    android:gravity="center_vertical"
-                    >
-                    <TextView
-                        android:layout_width="0dp"
-                        android:layout_height="wrap_content"
-                        android:layout_marginStart="16dp"
-                        android:text="瀹跺ぇ浜嬭"
-                        android:layout_weight="1"
-                        android:textColor="@color/white"
-                        android:textSize="@dimen/sp_20"
-                        />
-                    <ImageView
-                        android:id="@+id/iv_search_default"
-                        android:layout_width="@dimen/dp_24"
-                        android:layout_height="@dimen/dp_24"
-                        android:background="@drawable/ic_search"
-                        />
-                </LinearLayout>
-
-                <LinearLayout
-                    android:id="@+id/layout_search"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:layout_marginVertical="4dp"
-                    android:layout_marginHorizontal="56dp"
-                    android:gravity="center_vertical"
-                    android:background="@color/white"
-                    android:paddingHorizontal="5dp"
-                    android:visibility="gone"
-                    >
-                    <ImageView
-                        android:layout_width="24dp"
-                        android:layout_height="24dp"
-                        android:background="@drawable/ic_search_gray"
-                        />
-                    <EditText
-                        android:id="@+id/et_search"
-                        android:layout_width="0dp"
-                        android:layout_height="wrap_content"
-                        android:layout_weight="1"
-                        android:layout_marginStart="5dp"
-                        android:textSize="14sp"
-                        android:textColor="#61000000"
-                        android:background="@null"
-                        android:imeOptions="actionSearch"
-                        android:text="@={viewModel.stringMutableLiveData}"
-                        android:singleLine="true"
-                        android:hint="鍏ㄥ眬鎼滅储"
-                        />
-                    <ImageView
-                        android:id="@+id/iv_search_type"
-                        android:layout_width="24dp"
-                        android:layout_height="24dp"
-                        android:background="@drawable/ic_search_by"
-                        />
-                </LinearLayout>
-
-            </com.hjq.bar.TitleBar>
-
-            <LinearLayout
-                android:id="@+id/layout_data_null"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:gravity="center"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/titleBar">
-
-                <ImageView
+                    android:id="@+id/iv_operate"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:background="@drawable/img_sakura"
+                    android:layout_gravity="center"
+                    android:background="@drawable/ic_operate"
                     />
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="18dp"
-                    android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�"
-                    android:textSize="14sp"
-                    android:textColor="#73000000"
-                    />
-            </LinearLayout>
+            </FrameLayout>
 
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/recyclerView"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:background="@color/color_normal_background"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/titleBar"
-                app:layout_constraintVertical_bias="1.0"
-                tools:itemCount="20"
-                tools:layout_editor_absoluteX="-81dp"
-                tools:listitem="@layout/item_family_memorabilia" />
-
-            <com.google.android.material.floatingactionbutton.FloatingActionButton
-                android:id="@+id/fab_add"
-                android:layout_width="@dimen/dp_56"
-                android:layout_height="@dimen/dp_56"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                android:layout_marginEnd="@dimen/dp_25"
-                android:layout_marginBottom="@dimen/dp_44"
-                android:src="@drawable/ic_add"
-                app:fabCustomSize="@dimen/dp_56"
-                />
-        </androidx.constraintlayout.widget.ConstraintLayout>
-        <androidx.core.widget.NestedScrollView
-            android:layout_width="211dp"
-            android:layout_height="match_parent"
-            android:layout_gravity="start"
-            android:background="@color/color_card_pink"
-            android:paddingTop="25dp"
-            >
             <LinearLayout
+                android:id="@+id/layout_default"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:orientation="vertical"
-                android:paddingHorizontal="12dp"
+                android:layout_marginHorizontal="56dp"
+                android:gravity="center_vertical"
                 >
-                <LinearLayout
-                    android:layout_width="wrap_content"
+                <TextView
+                    android:id="@+id/tv_title"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
-                    android:layout_gravity="center_horizontal"
-                    android:layout_marginTop="33dp"
-                    android:layout_marginBottom="20dp"
-                    android:gravity="center"
-                    >
-                    <androidx.constraintlayout.utils.widget.ImageFilterView
-                        android:layout_width="50dp"
-                        android:layout_height="50dp"
-                        app:roundPercent="1"
-                        android:background="@drawable/img_sakura"
-                        />
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="寮犲柕"
-                        android:textSize="18sp"
-                        android:textColor="@color/black"
-                        android:layout_marginStart="16dp"
-                        />
-                </LinearLayout>
-                <androidx.cardview.widget.CardView
-                    android:layout_width="match_parent"
-                    android:layout_height="304dp"
-                    app:cardBackgroundColor="@color/white"
-                    app:cardCornerRadius="10dp"
-                    app:cardElevation="0dp"
-                    >
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:orientation="vertical"
-                        android:paddingVertical="8dp"
-                        >
-                        <TextView
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:text="鏍稿績鏉垮潡"
-                            android:textColor="@color/black"
-                            android:textSize="12sp"
-                            android:layout_marginStart="14dp"
-                            />
-                        <View
-                            android:layout_width="match_parent"
-                            android:layout_height="1dp"
-                            android:background="#FFF3F3F3"
-                            />
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_family_root_net"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="瀹舵牴缃�"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_notes"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="瀹跺ぇ浜嬭"
-                                android:textColor="#FFF6739F"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_pink"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_asset"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="瀹跺涵璧勪骇"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_home_devices"
-                                />
-
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="瀹跺涵璁惧"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_honor"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="鏀惰棌銆佽崳瑾�"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_little_doctor"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="灏忓尰鐢�"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_cleaning"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="淇濇磥銆佹敹绾�"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_mail_list"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="閫氳褰�"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_pet"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="榄呭疇"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_income_expense"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="瀹跺涵鏀舵敮鍙拌处"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                    </LinearLayout>
-
-
-                </androidx.cardview.widget.CardView>
-                <androidx.cardview.widget.CardView
-                    android:layout_width="match_parent"
-                    android:layout_height="240dp"
-                    app:cardBackgroundColor="@color/white"
-                    app:cardCornerRadius="10dp"
-                    app:cardElevation="0dp"
-                    android:layout_marginTop="26dp"
-                    android:layout_marginBottom="14dp"
-                    >
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:orientation="vertical"
-                        >
-                        <TextView
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:text="涓汉鏉垮潡"
-                            android:textColor="@color/black"
-                            android:textSize="12sp"
-                            android:layout_marginVertical="8dp"
-                            android:layout_marginStart="14dp"
-                            />
-                        <View
-                            android:layout_width="match_parent"
-                            android:layout_height="1dp"
-                            android:background="#FFF3F3F3"
-                            />
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_growth"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="鎴愰暱缁忓巻闃呭巻"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_marriage"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="濠氬Щ"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_property"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="璐骇"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_wish"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="鐧惧勾蹇冩効"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_tour"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="鏃呮父"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_health" />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="鍋ュ悍淇濆仴"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_certificate"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="鑽h獕銆佽瘉涔﹀椤�"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="0dp"
-                            android:layout_weight="1"
-                            android:paddingHorizontal="15dp"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_privacy"
-                                />
-                            <TextView
-                                android:layout_width="0dp"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:text="闅愮"
-                                android:textColor="@color/black"
-                                android:textSize="14sp"
-                                android:layout_marginStart="15dp"
-                                />
-                            <ImageView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:background="@drawable/ic_vector_gray"
-                                />
-                        </LinearLayout>
-                    </LinearLayout>
-
-
-                </androidx.cardview.widget.CardView>
+                    android:layout_marginStart="16dp"
+                    android:text="瀹跺ぇ浜嬭"
+                    android:layout_weight="1"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/sp_20"
+                    />
+                <ImageView
+                    android:id="@+id/iv_search_default"
+                    android:layout_width="@dimen/dp_24"
+                    android:layout_height="@dimen/dp_24"
+                    android:background="@drawable/ic_search"
+                    />
             </LinearLayout>
 
-        </androidx.core.widget.NestedScrollView>
-    </androidx.drawerlayout.widget.DrawerLayout>
+            <LinearLayout
+                android:id="@+id/layout_search"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginVertical="4dp"
+                android:layout_marginHorizontal="56dp"
+                android:gravity="center_vertical"
+                android:background="@color/white"
+                android:paddingHorizontal="5dp"
+                android:visibility="gone"
+                >
+                <ImageView
+                    android:id="@+id/iv_search"
+                    android:layout_width="24dp"
+                    android:layout_height="24dp"
+                    android:background="@drawable/ic_search_gray"
+                    />
+                <EditText
+                    android:id="@+id/et_search"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:layout_marginStart="5dp"
+                    android:textSize="14sp"
+                    android:textColor="#61000000"
+                    android:background="@null"
+                    android:imeOptions="actionSearch"
+                    android:text=""
+                    android:singleLine="true"
+                    android:hint="鍦ㄢ�滃澶т簨璁板唴鎼滅储鈥�"
+                    />
+                <ImageView
+                    android:id="@+id/iv_search_type"
+                    android:layout_width="24dp"
+                    android:layout_height="24dp"
+                    android:background="@drawable/ic_search_by"
+                    />
+            </LinearLayout>
+
+        </com.android.app_base.widget.ExtendTitleBar>
+
+        <LinearLayout
+            android:id="@+id/layout_data_null"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:gravity="center"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/titleBar">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@drawable/img_data_null"
+                />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="18dp"
+                android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�"
+                android:textSize="14sp"
+                android:textColor="#73000000"
+                />
+        </LinearLayout>
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:background="@color/color_normal_background"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/titleBar"
+            app:layout_constraintVertical_bias="1.0"
+            tools:itemCount="20"
+            tools:layout_editor_absoluteX="-81dp"
+            tools:listitem="@layout/item_family_memorabilia" />
+
+        <com.google.android.material.floatingactionbutton.FloatingActionButton
+            android:id="@+id/fab_add"
+            android:layout_width="@dimen/dp_56"
+            android:layout_height="@dimen/dp_56"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:layout_marginEnd="@dimen/dp_25"
+            android:layout_marginBottom="@dimen/dp_44"
+            android:src="@drawable/ic_add"
+            app:fabCustomSize="@dimen/dp_56"
+            />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
 </layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_family_create.xml b/app/src/main/res/layout/activity_family_memorabilia_create.xml
similarity index 84%
rename from app/src/main/res/layout/item_family_create.xml
rename to app/src/main/res/layout/activity_family_memorabilia_create.xml
index e43ff34..16cc68c 100644
--- a/app/src/main/res/layout/item_family_create.xml
+++ b/app/src/main/res/layout/activity_family_memorabilia_create.xml
@@ -13,6 +13,7 @@
         tools:context=".ui.function.CreateFamilyProjectActivity"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:background="@color/color_normal_background"
         android:orientation="vertical">
 
         <com.hjq.bar.TitleBar
@@ -44,7 +45,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center"
-                    android:background="@drawable/ic_operate"
+                    android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}"
                     />
             </FrameLayout>
 
@@ -95,7 +96,7 @@
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:hint="璇疯緭鍏ユ爣棰�"
-                    android:inputType="number"
+                    android:inputType="text"
                     android:autofillHints="creditCardNumber"
                     android:textColorHint="#6b000000"
                     android:textColor="#DE000000"
@@ -119,7 +120,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/dp_2"
                     android:hint="璇疯緭鍏ユ椂闂�"
-                    android:inputType="number"
+                    android:inputType="text"
                     android:textColorHint="#6b000000"
                     android:textColor="#DE000000"
                     android:text="@={viewModel.beanMutableLiveData.createTime}"
@@ -141,7 +142,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/dp_2"
                     android:hint="璇疯緭鍏ヤ汉鐗�"
-                    android:inputType="number"
+                    android:inputType="text"
                     android:textColorHint="#6b000000"
                     android:text="@={viewModel.beanMutableLiveData.people}"
                     android:textColor="#DE000000"
@@ -163,7 +164,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/dp_2"
                     android:hint="璇疯緭鍏ュ湴鐐�"
-                    android:inputType="number"
+                    android:inputType="text"
                     android:textColorHint="#6b000000"
                     android:textColor="#DE000000"
                     android:text="@={viewModel.beanMutableLiveData.address}"
@@ -185,7 +186,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/dp_2"
                     android:hint="璇疯緭鍏ュ娉�"
-                    android:inputType="number"
+                    android:inputType="text"
                     android:textColorHint="#6b000000"
                     android:textColor="#DE000000"
                     android:text="@={viewModel.beanMutableLiveData.remark}"
@@ -199,39 +200,19 @@
                     android:textColor="#ff000000"
                     android:textSize="@dimen/sp_12"
                     />
-                <LinearLayout
+                <com.android.app_base.widget.WrapRecyclerView
+                    android:id="@+id/rv_image"
                     android:orientation="vertical"
                     android:layout_width="match_parent"
-                    android:layout_height="@dimen/dp_180"
-                    android:layout_marginTop="@dimen/dp_2"
+                    android:layout_height="wrap_content"
                     android:background="@drawable/shape_6b0000_stroke"
-                    android:layout_marginBottom="10dp"
-                    >
+                    android:layout_marginBottom="20dp"
+                    android:layout_marginTop="@dimen/dp_2"
+                    android:paddingStart="10dp"
+                    android:paddingEnd="5dp"
+                    android:paddingVertical="10dp"
+                    />
 
-                    <Button
-                        android:id="@+id/button_add"
-                        android:layout_width="@dimen/dp_85"
-                        android:layout_height="@dimen/dp_85"
-                        android:text="+"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/dp_35"
-                        android:gravity="center"
-                        android:layout_marginLeft="@dimen/dp_10"
-                        android:layout_marginTop="@dimen/dp_10"
-                        android:background="@drawable/shape_73fab4cd_solid"
-                        />
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="瀵煎叆"
-                        android:textColorHint="#6b000000"
-                    android:textColor="#DE000000"
-                        android:textSize="@dimen/sp_12"
-                        android:layout_marginLeft="@dimen/dp_40"
-                        />
-
-                </LinearLayout>
             </LinearLayout>
         </ScrollView>
 
diff --git a/app/src/main/res/layout/activity_home_devices.xml b/app/src/main/res/layout/activity_home_devices.xml
new file mode 100644
index 0000000..d1078b6
--- /dev/null
+++ b/app/src/main/res/layout/activity_home_devices.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <data>
+        <variable
+            name="viewModel"
+            type="com.application.zhangshi_app_android.ui.function.HomeDevicesActivityViewModel" />
+    </data>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <com.android.app_base.widget.ExtendTitleBar
+            android:id="@+id/titleBar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:layout_constraintTop_toTopOf="parent"
+            >
+            <FrameLayout
+                android:layout_width="24dp"
+                android:layout_height="24dp"
+                android:layout_marginHorizontal="16dp"
+                android:layout_gravity="center_vertical|end"
+                >
+                <ImageView
+                    android:id="@+id/iv_operate"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:background="@drawable/ic_operate"
+                    />
+            </FrameLayout>
+
+            <LinearLayout
+                android:id="@+id/layout_default"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginHorizontal="56dp"
+                android:gravity="center_vertical"
+                >
+                <TextView
+                    android:id="@+id/tv_title"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="16dp"
+                    android:text="瀹跺涵璁惧"
+                    android:layout_weight="1"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/sp_20"
+                    />
+                <ImageView
+                    android:id="@+id/iv_search_default"
+                    android:layout_width="@dimen/dp_24"
+                    android:layout_height="@dimen/dp_24"
+                    android:background="@drawable/ic_search"
+                    />
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/layout_search"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginVertical="4dp"
+                android:layout_marginHorizontal="56dp"
+                android:gravity="center_vertical"
+                android:background="@color/white"
+                android:paddingHorizontal="5dp"
+                android:visibility="gone"
+                >
+                <ImageView
+                    android:id="@+id/iv_search"
+                    android:layout_width="24dp"
+                    android:layout_height="24dp"
+                    android:background="@drawable/ic_search_gray"
+                    />
+                <EditText
+                    android:id="@+id/et_search"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:layout_marginStart="5dp"
+                    android:textSize="14sp"
+                    android:textColor="#61000000"
+                    android:background="@null"
+                    android:imeOptions="actionSearch"
+                    android:text=""
+                    android:singleLine="true"
+                    android:hint="鍦ㄢ�滃澶т簨璁板唴鎼滅储鈥�"
+                    />
+                <ImageView
+                    android:id="@+id/iv_search_type"
+                    android:layout_width="24dp"
+                    android:layout_height="24dp"
+                    android:background="@drawable/ic_search_by"
+                    />
+            </LinearLayout>
+
+        </com.android.app_base.widget.ExtendTitleBar>
+
+        <LinearLayout
+            android:id="@+id/layout_data_null"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:gravity="center"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/titleBar">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@drawable/img_data_null"
+                />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="18dp"
+                android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�"
+                android:textSize="14sp"
+                android:textColor="#73000000"
+                />
+        </LinearLayout>
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:background="@color/color_normal_background"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/titleBar"
+            app:layout_constraintVertical_bias="1.0"
+            tools:itemCount="20"
+            tools:layout_editor_absoluteX="-81dp"
+            tools:listitem="@layout/item_family_memorabilia" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_home_devices_detail.xml b/app/src/main/res/layout/activity_home_devices_detail.xml
new file mode 100644
index 0000000..aef2274
--- /dev/null
+++ b/app/src/main/res/layout/activity_home_devices_detail.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    >
+
+    <data>
+        <variable
+            name="viewModel"
+            type="com.application.zhangshi_app_android.ui.function.HomeDevicesDetailActivityViewModel" />
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/color_normal_background"
+        android:orientation="vertical">
+
+        <com.android.app_base.widget.ExtendTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:titleGravity="left"
+            />
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:layout_constraintTop_toBottomOf="@id/titleBar"
+            >
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical"
+                android:paddingHorizontal="20dp"
+                >
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="@dimen/dp_10"
+                    android:layout_height="@dimen/dp_20"
+                    android:text="璁惧鍚嶇О"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:inputType="text"
+                    android:autofillHints="creditCardNumber"
+                    android:textColorHint="#6b000000"
+                    android:textColor="#DE000000"
+                    android:textSize="16sp"
+                    android:text="@={viewModel.beanLiveData.name}"
+                    />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="鏃堕棿"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColor="#DE000000"
+                    android:text="@={viewModel.beanLiveData.createTime}"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="璐拱浜�"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColorHint="#6b000000"
+                    android:text="@={viewModel.beanLiveData.people}"
+                    android:textColor="#DE000000"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="浜嬮」鍐呭"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColorHint="#6b000000"
+                    android:textColor="#DE000000"
+                    android:text="@={viewModel.beanLiveData.content}"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="瀛樻斁鍦扮偣"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColorHint="#6b000000"
+                    android:textColor="#DE000000"
+                    android:text="@={viewModel.beanLiveData.address}"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="澶囨敞"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:inputType="text"
+                    android:textColorHint="#6b000000"
+                    android:textColor="#DE000000"
+                    android:text="@={viewModel.beanLiveData.remark}"
+                    android:textSize="16sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:layout_height="wrap_content"
+                    android:text="鐢靛瓙鏂囦欢"
+                    android:textColor="#767375"
+                    android:textSize="12sp"
+                    />
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="@drawable/shape_6b0000_stroke"
+                    >
+                    <com.android.app_base.widget.WrapRecyclerView
+                        android:id="@+id/rv_image"
+                        android:orientation="vertical"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="10dp"
+                        android:layout_marginTop="2sp"
+                        android:paddingStart="10dp"
+                        android:paddingEnd="5dp"
+                        android:paddingVertical="10dp"
+                        />
+
+                </RelativeLayout>
+
+
+            </LinearLayout>
+        </ScrollView>
+
+
+    </LinearLayout>
+
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_function.xml b/app/src/main/res/layout/fragment_function.xml
index a73a4df..58f109f 100644
--- a/app/src/main/res/layout/fragment_function.xml
+++ b/app/src/main/res/layout/fragment_function.xml
@@ -175,8 +175,8 @@
                         app:layout_constraintTop_toTopOf="@id/layout_home_root_net">
 
                         <ImageView
-                            android:layout_width="@dimen/dp_24"
-                            android:layout_height="@dimen/dp_24"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
                             android:background="@drawable/function_notes" />
 
                         <TextView
@@ -357,6 +357,30 @@
                             android:textSize="@dimen/sp_14" />
                     </LinearLayout>
 
+                    <LinearLayout
+                        android:id="@+id/layout_home_devices"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:gravity="center"
+                        android:orientation="vertical"
+                        app:layout_constraintEnd_toEndOf="@id/layout_family_memorabilia"
+                        app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia"
+                        app:layout_constraintTop_toTopOf="@+id/layout_income_and_expenses">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:background="@drawable/function_home_devices" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="@dimen/dp_4"
+                            android:text="瀹跺涵璁惧"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_14" />
+                    </LinearLayout>
+
                     <TextView
                         android:id="@+id/tv_personal_module"
                         android:layout_width="wrap_content"
diff --git a/app/src/main/res/layout/item_family_assets.xml b/app/src/main/res/layout/item_family_assets.xml
new file mode 100644
index 0000000..a345209
--- /dev/null
+++ b/app/src/main/res/layout/item_family_assets.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <data>
+        <variable
+            name="bean"
+            type="com.application.zhangshi_app_android.bean.FamilyAssetsBean" />
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        >
+        <androidx.cardview.widget.CardView
+            android:id="@+id/cardView"
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:layout_margin="@dimen/dp_2"
+            app:cardCornerRadius="@dimen/dp_10"
+            app:cardBackgroundColor="@color/color_card_pink"
+            >
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                >
+                <RelativeLayout
+                    android:id="@+id/layout_title"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/dp_40"
+                    android:gravity="center_vertical"
+                    >
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_marginStart="24dp"
+                        android:textSize="@dimen/sp_16"
+                        android:textColor="@color/black"
+                        android:text="@{bean.type}"
+                        android:textStyle="bold"
+                        tools:text="鎴夸骇璇�"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerInParent="true"
+                        android:layout_centerHorizontal="true"
+                        android:layout_marginStart="24dp"
+                        android:text="@{bean.holder}"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/sp_16"
+                        android:textStyle="bold"
+                        tools:text="寮犱笁" />
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="@dimen/sp_16"
+                        android:textColor="@color/black"
+                        android:text="@{bean.createTime}"
+                        android:textStyle="bold"
+                        android:layout_marginEnd="24dp"
+                        android:layout_alignParentEnd="true"
+                        android:layout_centerVertical="true"
+                        tools:text="2019-01-12"
+                        />
+
+                </RelativeLayout>
+                <LinearLayout
+                    android:id="@+id/layout_content"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:paddingHorizontal="@dimen/dp_24"
+                    >
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        >
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="搴忓彿锛�"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@{String.valueOf(bean.id)}"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        >
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="璇佷欢鍗″彿锛�"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@{bean.title}"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        >
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="寮�鎴疯锛�"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@{bean.location}"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        >
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="瀛樻斁鍦扮偣锛�"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@{bean.address}"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        >
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="澶囨敞锛�"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@{bean.remark}"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                    </LinearLayout>
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        android:text="鐢靛瓙鏂囦欢锛�"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/sp_12"
+                        android:textStyle="bold"
+                        />
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_15"
+                        >
+                        <androidx.recyclerview.widget.RecyclerView
+                            android:id="@+id/rv_image"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            tools:listitem="@layout/item_image"
+                            tools:itemCount="3"
+                            />
+
+                    </LinearLayout>
+
+                </LinearLayout>
+            </LinearLayout>
+
+        </androidx.cardview.widget.CardView>
+
+    </LinearLayout>
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_family_memorabilia.xml b/app/src/main/res/layout/item_family_memorabilia.xml
index abcf773..0a3b18f 100644
--- a/app/src/main/res/layout/item_family_memorabilia.xml
+++ b/app/src/main/res/layout/item_family_memorabilia.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
 
     <data>
         <variable
@@ -154,86 +155,13 @@
                         android:orientation="horizontal"
                         android:layout_marginBottom="@dimen/dp_15"
                         >
-
-                        <LinearLayout
-                            android:layout_width="wrap_content"
+                        <androidx.recyclerview.widget.RecyclerView
+                            android:id="@+id/rv_image"
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:orientation="vertical"
-                            android:gravity="center"
-                            >
-                            <ImageView
-                                android:layout_width="@dimen/dp_70"
-                                android:layout_height="@dimen/dp_45"
-                                android:background="@drawable/img_sakura"
-                                android:layout_marginBottom="@dimen/dp_6"
-                                />
-                            <TextView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:text="sakura.jpg"
-                                android:textSize="@dimen/sp_10"
-                                android:textColor="@color/black"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:orientation="vertical"
-                            android:gravity="center"
-                            android:layout_marginStart="@dimen/dp_10"
-                            >
-                            <ImageView
-                                android:layout_width="@dimen/dp_70"
-                                android:layout_height="@dimen/dp_45"
-                                android:background="@drawable/img_lotus"
-                                android:layout_marginBottom="@dimen/dp_6"
-                                />
-                            <TextView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:text="lotus.jpg"
-                                android:textSize="@dimen/sp_10"
-                                android:textColor="@color/black"
-                                />
-                        </LinearLayout>
-                        <LinearLayout
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:orientation="vertical"
-                            android:gravity="center"
-                            android:layout_marginStart="@dimen/dp_10"
-                            >
-                            <androidx.cardview.widget.CardView
-                                android:layout_width="@dimen/dp_70"
-                                android:layout_height="@dimen/dp_45"
-                                android:layout_marginBottom="@dimen/dp_6"
-                                app:cardCornerRadius="@dimen/dp_5"
-                                >
-                                <ImageView
-                                    android:layout_width="@dimen/dp_70"
-                                    android:layout_height="@dimen/dp_45"
-                                    android:background="@drawable/img_sakura"
-                                    />
-                                <View
-                                    android:layout_width="match_parent"
-                                    android:layout_height="match_parent"
-                                    android:background="#52000000"
-                                    />
-                                <ImageView
-                                    android:layout_width="wrap_content"
-                                    android:layout_height="wrap_content"
-                                    android:background="@drawable/ic_play"
-                                    android:layout_gravity="center"
-                                    />
-                            </androidx.cardview.widget.CardView>
-                            <TextView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:text="sakura.mp4"
-                                android:textSize="@dimen/sp_10"
-                                android:textColor="@color/black"
-                                />
-                        </LinearLayout>
+                            tools:listitem="@layout/item_image"
+                            tools:itemCount="3"
+                            />
 
                     </LinearLayout>
                     <LinearLayout
@@ -264,6 +192,7 @@
                                 />
                         </LinearLayout>
                         <LinearLayout
+                            android:id="@+id/layout_delete"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
                             android:layout_alignParentEnd="true"
diff --git a/app/src/main/res/layout/item_home_devices.xml b/app/src/main/res/layout/item_home_devices.xml
new file mode 100644
index 0000000..1901386
--- /dev/null
+++ b/app/src/main/res/layout/item_home_devices.xml
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <data>
+        <variable
+            name="bean"
+            type="com.application.zhangshi_app_android.bean.HomeDevicesBean" />
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        >
+        <androidx.cardview.widget.CardView
+            android:id="@+id/cardView"
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:layout_margin="@dimen/dp_2"
+            app:cardCornerRadius="@dimen/dp_10"
+            app:cardBackgroundColor="@color/color_card_pink"
+            >
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                >
+                <LinearLayout
+                    android:id="@+id/layout_title"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/dp_40"
+                    android:gravity="center_vertical"
+                    >
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_marginStart="24dp"
+                        android:textSize="@dimen/sp_16"
+                        android:textColor="@color/black"
+                        android:text="@{bean.name}"
+                        android:textStyle="bold"
+                        tools:text="鐢佃"
+                        />
+
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_weight="1"
+                        android:layout_height="wrap_content"
+                        android:layout_centerInParent="true"
+                        android:layout_marginStart="24dp"
+                        android:text="@{bean.address}"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/sp_16"
+                        android:textStyle="bold"
+                        android:gravity="center"
+                        tools:text="寮犱笁" />
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="@dimen/sp_16"
+                        android:textColor="@color/black"
+                        android:text="@{bean.createTime}"
+                        android:textStyle="bold"
+                        android:layout_marginEnd="24dp"
+                        android:layout_alignParentEnd="true"
+                        android:layout_centerVertical="true"
+                        tools:text="2019-01-12"
+                        />
+
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/layout_content"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:paddingHorizontal="@dimen/dp_24"
+                    >
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        >
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="搴忓彿锛�"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@{String.valueOf(bean.id)}"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        >
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="璐拱浜猴細"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@{bean.people}"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        >
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="浜嬮」鍐呭锛�"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@{bean.content}"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        >
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="澶囨敞锛�"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@{bean.remark}"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/sp_12"
+                            android:textStyle="bold"
+                            />
+                    </LinearLayout>
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/dp_6"
+                        android:text="鐢靛瓙鏂囦欢锛�"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/sp_12"
+                        android:textStyle="bold"
+                        />
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_marginBottom="@dimen/dp_15"
+                        >
+                        <androidx.recyclerview.widget.RecyclerView
+                            android:id="@+id/rv_image"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            tools:listitem="@layout/item_image"
+                            tools:itemCount="3"
+                            />
+
+                    </LinearLayout>
+
+                </LinearLayout>
+            </LinearLayout>
+
+        </androidx.cardview.widget.CardView>
+
+    </LinearLayout>
+
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_image.xml b/app/src/main/res/layout/item_image.xml
new file mode 100644
index 0000000..8d7e93e
--- /dev/null
+++ b/app/src/main/res/layout/item_image.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <data>
+        <variable
+            name="url"
+            type="String" />
+    </data>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+        <ImageView
+            android:id="@+id/iv_image"
+            android:layout_width="87dp"
+            android:layout_height="87dp"
+            android:layout_marginTop="7.5dp"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:imageUrl="@{url}"
+            />
+        <ImageView
+            android:id="@+id/iv_delete"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:background="@drawable/ic_image_delete"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintStart_toEndOf="@id/iv_image"
+            android:layout_marginStart="-7.5dp"
+            />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_image_footer.xml b/app/src/main/res/layout/item_image_footer.xml
new file mode 100644
index 0000000..07e1f3b
--- /dev/null
+++ b/app/src/main/res/layout/item_image_footer.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:layout_gravity="center"
+    >
+    <TextView
+        android:id="@+id/button_add"
+        android:layout_width="@dimen/dp_85"
+        android:layout_height="@dimen/dp_85"
+        android:text="+"
+        android:textColor="@color/black"
+        android:textSize="60sp"
+        android:gravity="center"
+        android:background="@drawable/shape_73fab4cd_solid"
+        android:layout_marginTop="8dp"
+        android:layout_marginStart="2dp"
+        />
+
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_drawer.xml b/app/src/main/res/layout/layout_drawer.xml
new file mode 100644
index 0000000..7c1f52b
--- /dev/null
+++ b/app/src/main/res/layout/layout_drawer.xml
@@ -0,0 +1,608 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.core.widget.NestedScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="211dp"
+    android:layout_height="match_parent"
+    android:layout_gravity="start"
+    android:background="@color/color_card_pink"
+    android:paddingTop="25dp"
+    >
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:paddingHorizontal="12dp"
+        >
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="33dp"
+            android:layout_marginBottom="20dp"
+            android:gravity="center"
+            >
+            <androidx.constraintlayout.utils.widget.ImageFilterView
+                android:layout_width="50dp"
+                android:layout_height="50dp"
+                app:roundPercent="1"
+                android:background="@drawable/img_sakura"
+                />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="寮犲柕"
+                android:textSize="18sp"
+                android:textColor="@color/black"
+                android:layout_marginStart="16dp"
+                />
+        </LinearLayout>
+        <androidx.cardview.widget.CardView
+            android:layout_width="match_parent"
+            android:layout_height="304dp"
+            app:cardBackgroundColor="@color/white"
+            app:cardCornerRadius="10dp"
+            app:cardElevation="0dp"
+            >
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical"
+                android:paddingVertical="8dp"
+                >
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="鏍稿績鏉垮潡"
+                    android:textColor="@color/black"
+                    android:textSize="12sp"
+                    android:layout_marginStart="14dp"
+                    />
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:background="#FFF3F3F3"
+                    />
+                <LinearLayout
+                    android:id="@+id/dl_home_root_net"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_family_root_net"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="瀹舵牴缃�"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_family_memorabilia"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_notes"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="瀹跺ぇ浜嬭"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_family_assets"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_asset"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="瀹跺涵璧勪骇"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_home_devices"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_home_devices"
+                        />
+
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="瀹跺涵璁惧"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_honor_collection"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_honor"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="鏀惰棌銆佽崳瑾�"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_little_doctor"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_little_doctor"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="灏忓尰鐢�"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_clean_storage"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_cleaning"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="淇濇磥銆佹敹绾�"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_contacts"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_mail_list"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="閫氳褰�"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_pet"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_pet"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="榄呭疇"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_income_and_expenses"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_income_expense"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="瀹跺涵鏀舵敮鍙拌处"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+            </LinearLayout>
+
+
+        </androidx.cardview.widget.CardView>
+        <androidx.cardview.widget.CardView
+            android:layout_width="match_parent"
+            android:layout_height="240dp"
+            app:cardBackgroundColor="@color/white"
+            app:cardCornerRadius="10dp"
+            app:cardElevation="0dp"
+            android:layout_marginTop="26dp"
+            android:layout_marginBottom="14dp"
+            >
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical"
+                >
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="涓汉鏉垮潡"
+                    android:textColor="@color/black"
+                    android:textSize="12sp"
+                    android:layout_marginVertical="8dp"
+                    android:layout_marginStart="14dp"
+                    />
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:background="#FFF3F3F3"
+                    />
+                <LinearLayout
+                    android:id="@+id/dl_growing_up"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_growth"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="鎴愰暱缁忓巻闃呭巻"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_marriage"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_marriage"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="濠氬Щ"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_property"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_property"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="璐骇"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_wish"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="鐧惧勾蹇冩効"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_hundred_wish"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_tour"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="鏃呮父"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_health_care"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_health" />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="鍋ュ悍淇濆仴"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_certificate_of_honor"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_certificate"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="鑽h獕銆佽瘉涔﹀椤�"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/dl_privacy"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:paddingHorizontal="15dp"
+                    android:gravity="center"
+                    >
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_privacy"
+                        />
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:text="闅愮"
+                        android:textColor="@color/black"
+                        android:textSize="14sp"
+                        android:layout_marginStart="15dp"
+                        />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/ic_vector_gray"
+                        />
+                </LinearLayout>
+            </LinearLayout>
+
+
+        </androidx.cardview.widget.CardView>
+    </LinearLayout>
+
+</androidx.core.widget.NestedScrollView>
\ No newline at end of file
diff --git a/app/src/main/res/layout/pop_operate.xml b/app/src/main/res/layout/pop_operate.xml
index dc64b5a..219d4fc 100644
--- a/app/src/main/res/layout/pop_operate.xml
+++ b/app/src/main/res/layout/pop_operate.xml
@@ -10,55 +10,69 @@
     >
     <LinearLayout
         android:layout_width="85dp"
-        android:layout_height="122dp"
+        android:layout_height="wrap_content"
         android:orientation="vertical"
         android:gravity="center_horizontal"
         >
-        <TextView
-            android:id="@+id/tv_add"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:gravity="center"
-            android:text="鏂板缓"
-            android:textColor="#FF333333"
-            android:textSize="12sp"
-            app:drawableStartCompat="@drawable/ic_operate_add"
-            android:drawablePadding="5dp"
-            android:layout_weight="1"
-            />
-        <View
+        <LinearLayout
+            android:id="@+id/layout_add"
             android:layout_width="match_parent"
-            android:layout_height="0.3dp"
-            android:background="#FF939393"
-            />
-        <TextView
-            android:id="@+id/tv_select"
-            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="閫夋嫨"
-            android:gravity="center"
-            android:textColor="#FF333333"
-            android:textSize="12sp"
-            app:drawableStartCompat="@drawable/ic_operate_select"
-            android:drawablePadding="5dp"
-            android:layout_weight="1"
-            />
-        <View
+            android:orientation="vertical"
+            android:gravity="center_horizontal"
+            >
+            <TextView
+                android:id="@+id/tv_add"
+                android:layout_width="wrap_content"
+                android:layout_height="32dp"
+                android:gravity="center"
+                android:text="鏂板缓"
+                android:textColor="#FF333333"
+                android:textSize="12sp"
+                app:drawableStartCompat="@drawable/ic_operate_add"
+                android:drawablePadding="5dp"
+                />
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="0.3dp"
+                android:background="#FF939393"
+                />
+        </LinearLayout>
+        <LinearLayout
+            android:id="@+id/layout_select"
             android:layout_width="match_parent"
-            android:layout_height="0.3dp"
-            android:background="#FF939393"
-            />
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:gravity="center_horizontal"
+            >
+            <TextView
+                android:id="@+id/tv_select"
+                android:layout_width="wrap_content"
+                android:layout_height="32dp"
+                android:text="閫夋嫨"
+                android:gravity="center"
+                android:textColor="#FF333333"
+                android:textSize="12sp"
+                app:drawableStartCompat="@drawable/ic_operate_select"
+                android:drawablePadding="5dp"
+                />
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="0.3dp"
+                android:background="#FF939393"
+                />
+        </LinearLayout>
+
         <TextView
             android:id="@+id/tv_from_new_to_old"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_height="32dp"
             android:text="鐢辨柊鍒版棫"
             android:gravity="center"
             android:textColor="#FF333333"
             android:textSize="12sp"
             app:drawableStartCompat="@drawable/ic_operate_order"
-            android:drawablePadding="5dp"
-            android:layout_weight="1"
+            android:drawablePadding="3dp"
             />
         <View
             android:layout_width="match_parent"
@@ -68,14 +82,13 @@
         <TextView
             android:id="@+id/tv_from_old_to_new"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_height="32dp"
             android:text="鐢辨棫鍒版柊"
             android:gravity="center"
             android:textColor="#FF333333"
             android:textSize="12sp"
             app:drawableStartCompat="@drawable/ic_operate_order"
-            android:drawablePadding="5dp"
-            android:layout_weight="1"
+            android:drawablePadding="3dp"
             />
     </LinearLayout>
 
diff --git a/app/src/main/res/layout/pop_search.xml b/app/src/main/res/layout/pop_search.xml
index d2a11ee..404d525 100644
--- a/app/src/main/res/layout/pop_search.xml
+++ b/app/src/main/res/layout/pop_search.xml
@@ -1,106 +1,184 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:orientation="vertical"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    app:cardBackgroundColor="#FFFAD1E0"
-    app:cardCornerRadius="10dp"
-    app:cardElevation="0dp"
-    >
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <data>
+        <import type="android.text.TextUtils" />
+        <import type="android.view.View" />
+        <variable
+            name="viewModel"
+            type="com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivityViewModel" />
+    </data>
+
     <LinearLayout
-        android:layout_width="200dp"
-        android:layout_height="180dp"
         android:orientation="vertical"
-        android:gravity="center_horizontal"
-        >
-        <TextView
-            android:id="@+id/tv_global_search"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:gravity="center"
-            android:text="鍏ㄥ眬鎼滅储"
-            android:textColor="#FF333333"
-            android:textSize="12sp"
-            android:layout_weight="1"
-            />
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="0.3dp"
-            android:background="#FF939393"
-            />
-        <TextView
-            android:id="@+id/tv_search_in_family_memorabilia"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:gravity="center"
-            android:text="鍦ㄢ�滃澶т簨璁扳�濆唴鎼滅储"
-            android:textColor="#FF333333"
-            android:textSize="12sp"
-            android:layout_weight="1"
-            />
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="0.3dp"
-            android:background="#FF939393"
-            />
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@color/white">
 
-        <TextView
-            android:id="@+id/tv_search_by_title"
+        <View
             android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:text="鎸夆�滃ぇ浜嬭鏍囬鈥濇悳绱�"
-            android:textColor="#FF333333"
-            android:textSize="12sp" />
+            android:layout_height="0.5dp"
+            android:background="#FF939393" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:layout_marginHorizontal="12dp"
+            android:gravity="center">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="鏍囬"
+                android:textColor="#FF333333"
+                android:textSize="14sp" />
+
+            <EditText
+                android:id="@+id/et_title"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:layout_height="wrap_content"
+                android:background="@null"
+                android:inputType="text"
+                android:layout_marginStart="6dp"
+                android:text="@={viewModel.requestBeanMutableLiveData.title}"
+                android:hint="璇疯緭鍏ユ爣棰�"
+                android:textColorHint="#61000000"
+                android:textColor="#FF333333"
+                android:textSize="14sp" />
+
+            <ImageView
+                android:id="@+id/iv_clear_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:visibility="@{viewModel.requestBeanMutableLiveData.title != null  &amp;&amp; viewModel.requestBeanMutableLiveData.title.length() > 0 ? View.VISIBLE : View.GONE}"
+                android:background="@drawable/ic_clear" />
+        </LinearLayout>
 
         <View
             android:layout_width="match_parent"
             android:layout_height="0.3dp"
-            android:background="#FF939393"
-            />
-        <TextView
-            android:id="@+id/tv_search_by_people"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:gravity="center"
-            android:text="鎸夆�滀汉鐗┾�濇悳绱�"
-            android:textColor="#FF333333"
-            android:textSize="12sp"
-            android:layout_weight="1"
-            />
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="0.3dp"
-            android:background="#FF939393"
-            />
+            android:background="#FF939393" />
 
-        <TextView
-            android:id="@+id/tv_search_by_time"
+        <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:text="鎸夆�滄椂闂粹�濇悳绱�"
-            android:textColor="#FF333333"
-            android:textSize="12sp" />
+            android:layout_height="40dp"
+            android:layout_marginHorizontal="12dp"
+            android:gravity="center">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="浜虹墿"
+                android:textColor="#FF333333"
+                android:textSize="14sp" />
+
+            <EditText
+                android:id="@+id/et_person"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:inputType="text"
+                android:layout_height="wrap_content"
+                android:background="@null"
+                android:layout_marginStart="6dp"
+                android:text="@={viewModel.requestBeanMutableLiveData.people}"
+                android:hint="璇疯緭鍏ヤ汉鐗�"
+                android:textColorHint="#61000000"
+                android:textColor="#FF333333"
+                android:textSize="14sp" />
+
+            <ImageView
+                android:id="@+id/iv_clear_person"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@drawable/ic_clear"
+                android:visibility="@{TextUtils.isEmpty(viewModel.requestBeanMutableLiveData.people)?View.GONE:View.VISIBLE}"
+                />
+        </LinearLayout>
+
         <View
             android:layout_width="match_parent"
             android:layout_height="0.3dp"
-            android:background="#FF939393"
-            />
-        <TextView
-            android:id="@+id/tv_search_by_place"
+            android:background="#FF939393" />
+
+        <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:gravity="center"
-            android:text="鎸夆�滃湴鐐光�濇悳绱�"
-            android:textColor="#FF333333"
-            android:textSize="12sp"
-            android:layout_weight="1"
-            />
+            android:layout_height="40dp"
+            android:layout_marginHorizontal="12dp"
+            android:gravity="center">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="鏃堕棿"
+                android:textColor="#FF333333"
+                android:textSize="14sp" />
+
+            <EditText
+                android:id="@+id/et_time"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:layout_height="wrap_content"
+                android:background="@null"
+                android:inputType="text"
+                android:layout_marginStart="6dp"
+                android:text="@={viewModel.requestBeanMutableLiveData.createTime}"
+                android:hint="璇疯緭鍏ユ椂闂�"
+                android:textColorHint="#61000000"
+                android:textColor="#FF333333"
+                android:textSize="14sp" />
+
+            <ImageView
+                android:id="@+id/iv_clear_time"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@drawable/ic_clear"
+                android:visibility="@{TextUtils.isEmpty(viewModel.requestBeanMutableLiveData.createTime)?View.GONE:View.VISIBLE}"
+                />
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0.3dp"
+            android:background="#FF939393" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:layout_marginHorizontal="12dp"
+            android:gravity="center">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="鍦扮偣"
+                android:textColor="#FF333333"
+                android:textSize="14sp" />
+
+            <EditText
+                android:id="@+id/et_place"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:layout_height="wrap_content"
+                android:background="@null"
+                android:layout_marginStart="6dp"
+                android:text="@={viewModel.requestBeanMutableLiveData.address}"
+                android:inputType="text"
+                android:hint="璇疯緭鍏ュ湴鐐�"
+                android:textColorHint="#61000000"
+                android:textColor="#FF333333"
+                android:textSize="14sp" />
+
+            <ImageView
+                android:id="@+id/iv_clear_place"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@drawable/ic_clear"
+                android:visibility="@{TextUtils.isEmpty(viewModel.requestBeanMutableLiveData.address)?View.GONE:View.VISIBLE}"
+                />
+        </LinearLayout>
+
 
     </LinearLayout>
-
-</androidx.cardview.widget.CardView>
\ No newline at end of file
+</layout>
\ No newline at end of file
diff --git a/app_base/build.gradle b/app_base/build.gradle
index 82d4362..dc0253e 100644
--- a/app_base/build.gradle
+++ b/app_base/build.gradle
@@ -66,9 +66,23 @@
     // kotlin鎵╁睍锛堝彲閫夛級
 //    implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2'
     //鍥剧墖鐩稿叧
-    api 'com.github.bumptech.glide:glide:4.11.0'
-    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
+    api 'com.github.bumptech.glide:glide:4.12.0'
+    annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
     //鍐呭瓨娉勯湶宸ュ叿
     debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
 
+    //鍥剧墖閫夋嫨鍣�
+    // PictureSelector 鍩虹 (蹇呴』)
+    api 'io.github.lucksiege:pictureselector:v3.10.8'
+    // 鍥剧墖鍘嬬缉 (鎸夐渶寮曞叆)
+    api 'io.github.lucksiege:compress:v3.10.8'
+    // 鍥剧墖瑁佸壀 (鎸夐渶寮曞叆)
+    api 'io.github.lucksiege:ucrop:v3.10.8'
+    // 鑷畾涔夌浉鏈� (鎸夐渶寮曞叆)
+    api 'io.github.lucksiege:camerax:v3.10.8'
+
+    // 鍔ㄧ敾瑙f瀽搴擄細https://github.com/airbnb/lottie-android
+    // 鍔ㄧ敾璧勬簮锛歨ttps://lottiefiles.com銆乭ttps://icons8.com/animated-icons
+    api 'com.airbnb.android:lottie:4.1.0'
+
 }
\ No newline at end of file
diff --git a/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java b/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
index d7df1a6..f60803f 100644
--- a/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
+++ b/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
@@ -21,7 +21,7 @@
 /**
  * @author Ljj
  * @date 2023.03.02. 17:09
- * @desc
+ * @desc RecyclerView 閫傞厤鍣ㄥ熀绫�
  */
 public abstract class BaseRVAdapter<T,VDB extends ViewDataBinding,VH extends BaseRVAdapter.BaseViewHolder<VDB>> extends RecyclerView.Adapter<VH> {
 
diff --git a/app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java b/app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java
index 433c3ff..a7a1671 100644
--- a/app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java
+++ b/app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java
@@ -2,10 +2,13 @@
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.net.Uri;
 import android.util.Base64;
 import android.widget.ImageView;
 
 import androidx.databinding.BindingAdapter;
+
+import com.android.app_base.utils.GlideUtil;
 
 /**
  * @author Ljj
@@ -14,7 +17,12 @@
  */
 public class ImageViewAdapter {
     @BindingAdapter({"imageUrl"})
-    public static void loadImage(ImageView imageView, String url) {
+    public static void loadUrlImage(ImageView imageView, String url) {
+        GlideUtil.loadImage(url, imageView);
+    }
+    @BindingAdapter({"imageUri"})
+    public static void loadUriImage(ImageView imageView, String uri) {
+        imageView.setImageURI(Uri.parse(uri));
 
     }
     @BindingAdapter({"imageBase64"})
diff --git a/app_base/src/main/java/com/android/app_base/base/dialog/WaitDialog.java b/app_base/src/main/java/com/android/app_base/base/dialog/WaitDialog.java
new file mode 100644
index 0000000..a259a74
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/base/dialog/WaitDialog.java
@@ -0,0 +1,40 @@
+package com.android.app_base.base.dialog;
+
+import static com.blankj.utilcode.util.StringUtils.getString;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.StringRes;
+
+import com.android.app_base.R;
+
+public final class WaitDialog {
+
+    public static final class Builder
+            extends BaseDialog.Builder<Builder> {
+
+        private final TextView mMessageView;
+
+        public Builder(Context context) {
+            super(context);
+            setContentView(R.layout.wait_dialog);
+            setAnimStyle(BaseDialog.ANIM_TOAST);
+            setBackgroundDimEnabled(false);
+            setCancelable(false);
+
+            mMessageView = findViewById(R.id.tv_wait_message);
+        }
+
+        public Builder setMessage(@StringRes int id) {
+            return setMessage(getString(id));
+        }
+
+        public Builder setMessage(CharSequence text) {
+            mMessageView.setText(text);
+            mMessageView.setVisibility(text == null ? View.GONE : View.VISIBLE);
+            return this;
+        }
+    }
+}
\ No newline at end of file
diff --git a/app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java b/app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java
index 300fbaa..73f922c 100644
--- a/app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java
+++ b/app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java
@@ -15,15 +15,14 @@
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.databinding.DataBindingUtil;
 import androidx.databinding.ViewDataBinding;
+import androidx.drawerlayout.widget.DrawerLayout;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
 
 import com.android.app_base.action.TitleBarAction;
-import com.android.app_base.base.BaseApplication;
 import com.android.app_base.base.action.ClickAction;
 import com.android.app_base.base.viewmodel.BaseViewModel;
 import com.android.app_base.base.StateViewEnum;
-import com.android.app_base.utils.ScreenSizeUtils;
 import com.blankj.utilcode.util.ToastUtils;
 import com.gyf.immersionbar.ImmersionBar;
 import com.hjq.bar.TitleBar;
@@ -34,11 +33,10 @@
 /**
  *  Activity鍩虹被,鎵�鏈夌殑 Activity 閮借缁ф壙姝ょ被
  */
-public abstract class BaseActivity<V extends ViewDataBinding,VM extends BaseViewModel> extends AppCompatActivity implements TitleBarAction, ClickAction {
-    protected V binding;
+public abstract class BaseActivity<VDB extends ViewDataBinding,VM extends BaseViewModel> extends AppCompatActivity implements TitleBarAction, ClickAction {
+    protected VDB binding;
     protected VM viewModel;
     private int viewModelId;
-
     /**
      * 鏍囬鏍忓璞�
      */
@@ -47,8 +45,6 @@
      * 鐘舵�佹爮娌夋蹈
      */
     private ImmersionBar mImmersionBar;
-
-
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -61,6 +57,7 @@
         initView();
         //椤甸潰浜嬩欢鐩戝惉鐨勬柟娉曪紝鐢ㄤ簬ViewModel灞傝浆鍒癡iew灞傜殑浜嬩欢娉ㄥ唽
         initLiveDataObserve();
+
     }
     @Override
     protected void onResume() {
@@ -91,6 +88,7 @@
         initStateView();
         //鍒濆鍖栨矇娴稿紡鐘舵�佹爮鍜� titleBar
         initStatusBar();
+        initSoftKeyboard();
     }
 
     /**
@@ -98,8 +96,7 @@
      */
     protected void initViewDataBindingAndViewModel() {
         if (getLayoutId() > 0) {
-            binding = DataBindingUtil.setContentView(this, getLayoutId());
-            initSoftKeyboard();
+            binding = initViewBinding();
         }
         viewModelId = getVariableId();
         viewModel = initViewModel();
@@ -113,6 +110,13 @@
             //璁¬iewModel鎷ユ湁View鐨勭敓鍛藉懆鏈熸劅搴�
             getLifecycle().addObserver(viewModel);
         }
+    }
+
+    /**
+     * 鍒濆鍖朧iewBinding
+     */
+    protected VDB initViewBinding() {
+        return DataBindingUtil.setContentView(this, getLayoutId());
     }
     /**
      * 鍒濆鍖朧iewModel
@@ -130,6 +134,7 @@
         return new ViewModelProvider(this, (ViewModelProvider.Factory) ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication())).get(vmClass);
     }
 
+
     /**
      * 瀵圭姸鎬佽鍥緇iveData杩涜瑙傚療鐩戝惉
      */
diff --git a/app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java b/app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java
index a3b602c..a5e68c5 100644
--- a/app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java
+++ b/app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java
@@ -39,7 +39,7 @@
         //閲嶅畾鍚慤RL
         @SuppressLint("MissingPermission") HttpUrl modifiedUrl = request.url().newBuilder()
                 //娣诲姞鐨勫叕鍏卞弬鏁�
-                .addQueryParameter("deviceId", PhoneUtils.getDeviceId())
+//                .addQueryParameter("deviceId", PhoneUtils.getDeviceId())
                 .addQueryParameter("udid", "")
                 .addQueryParameter("channel", "")
                 .addQueryParameter("version", "")
@@ -51,7 +51,7 @@
                 .addQueryParameter("os", "android")
                 .addQueryParameter("osVersion", DeviceUtils.getSDKVersionName())
                 .addQueryParameter("isSimulator", DeviceUtils.isEmulator() ? "1" : "0")
-                .addQueryParameter("imei", PhoneUtils.getIMEI())
+//                .addQueryParameter("imei", PhoneUtils.getIMEI())
                 .addQueryParameter("oaid", "android")
                 .addQueryParameter("androidId", DeviceUtils.getAndroidID())
 //                .addQueryParameter("networkType", NetworkUtils.getNetworkType().name())
diff --git a/app_base/src/main/java/com/android/app_base/manager/OnPermissionsInterceptListenerImpl.java b/app_base/src/main/java/com/android/app_base/manager/OnPermissionsInterceptListenerImpl.java
new file mode 100644
index 0000000..3afd9f1
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/manager/OnPermissionsInterceptListenerImpl.java
@@ -0,0 +1,51 @@
+package com.android.app_base.manager;
+
+import android.Manifest;
+import android.os.Build;
+
+import androidx.fragment.app.Fragment;
+
+import com.blankj.utilcode.util.PermissionUtils;
+import com.luck.picture.lib.interfaces.OnRequestPermissionListener;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.02. 18:45
+ * @desc 瑙e喅Android 13 浠ヤ笂鐗堟湰浣跨敤PictureSelector 閫夋嫨鍥剧墖鏃舵姤閿欑殑闂
+ *       'io.github.lucksiege:pictureselector:v3.10.9'鍒欎笉闇�瑕�
+ *       //TODO 寰呭垹
+ */
+public class OnPermissionsInterceptListenerImpl implements com.luck.picture.lib.interfaces.OnPermissionsInterceptListener {
+    @Override
+    public void requestPermission(Fragment fragment, String[] permissionArray, OnRequestPermissionListener call) {
+        if (permissionArray == null || fragment == null || fragment.getContext() == null) return;
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+            //鎶婃潈闄愭暟缁勮浆鎹㈡垚List
+            List<String> result = new ArrayList<>(Arrays.asList(permissionArray));
+            result.remove(Manifest.permission.READ_EXTERNAL_STORAGE);
+            //鎶妑esult杞崲鎴愭暟缁�
+            permissionArray = result.toArray(new String[result.size()]);
+            call.onCall(permissionArray, true);
+        } else {
+            call.onCall(permissionArray, true);
+        }
+    }
+
+    @Override
+    public boolean hasPermissions(Fragment fragment, String[] permissionArray) {
+        if (permissionArray == null || fragment == null) return false;
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+            List<String> result = Arrays.asList(permissionArray);
+            if (result.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) {
+                result.remove(Manifest.permission.READ_EXTERNAL_STORAGE);
+            }
+        } else {
+            return PermissionUtils.isGranted(permissionArray);
+        }
+        return false;
+    }
+}
diff --git a/app_base/src/main/java/com/android/app_base/manager/UserManager.java b/app_base/src/main/java/com/android/app_base/manager/UserManager.java
index e66d819..8228746 100644
--- a/app_base/src/main/java/com/android/app_base/manager/UserManager.java
+++ b/app_base/src/main/java/com/android/app_base/manager/UserManager.java
@@ -1,6 +1,22 @@
 package com.android.app_base.manager;
 
+import android.Manifest;
+import android.app.Activity;
+import android.os.Build;
+
+import androidx.annotation.NonNull;
+
+import com.android.app_base.utils.GlideEngine;
 import com.android.app_base.utils.SPUtils;
+import com.android.app_base.utils.ToastUtils;
+import com.blankj.utilcode.util.PermissionUtils;
+import com.luck.picture.lib.basic.PictureSelector;
+import com.luck.picture.lib.config.SelectMimeType;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.luck.picture.lib.interfaces.OnResultCallbackListener;
+
+import java.io.File;
+import java.util.ArrayList;
 
 /**
  * @author Ljj
@@ -20,6 +36,52 @@
         }
         return instance;
     }
+    /**
+     * 鏄惁鏈夋潈闄�
+     */
+    public boolean isGranted(@NonNull String... permissions) {
+        return PermissionUtils.isGranted(permissions);
+    }
+    /**
+     * 鑾峰彇鏉冮檺
+     */
+    public void getPermissions(PermissionUtils.SimpleCallback simpleCallback, @NonNull String... permissions) {
+        if (isGranted(permissions)){
+            simpleCallback.onGranted();
+            return;
+        }
+        PermissionUtils.permission(permissions).callback(simpleCallback).request();
+    }
+
+    /**
+     * 閫夋嫨鍥剧墖
+     */
+    public void selectImage(Activity activity,int maxSelectNum,OnResultCallbackListener<LocalMedia> onResultCallbackListener){
+        String[] permissions;
+        if (Build.VERSION.SDK_INT >= 33) {
+            permissions = new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.READ_MEDIA_VIDEO, Manifest.permission.READ_MEDIA_AUDIO, Manifest.permission.CAMERA};
+        }else {
+            permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA};
+        }
+        getPermissions(new PermissionUtils.SimpleCallback() {
+            @Override
+            public void onGranted() {
+                PictureSelector.create(activity)
+                        .openGallery(SelectMimeType.ofImage())
+                        .setImageEngine(GlideEngine.createGlideEngine())
+                        .setPermissionsInterceptListener(new OnPermissionsInterceptListenerImpl())
+                        .isMaxSelectEnabledMask(true)// 杈惧埌鏈�澶ч�夋嫨鏁版槸鍚﹀紑鍚閫夎挋灞�
+                        .setMaxSelectNum(maxSelectNum)
+                        .forResult(onResultCallbackListener);
+            }
+            //
+            @Override
+            public void onDenied() {
+                ToastUtils.showShort("璇峰紑鍚浉鍏虫潈闄�");
+            }
+        }, permissions);
+    }
+
 
     public void setToken(String token){
         SPUtils.getInstance("tokenInfo").put("token",token);
diff --git a/app_base/src/main/java/com/android/app_base/utils/GlideEngine.java b/app_base/src/main/java/com/android/app_base/utils/GlideEngine.java
new file mode 100644
index 0000000..983309b
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/utils/GlideEngine.java
@@ -0,0 +1,106 @@
+package com.android.app_base.utils;
+
+import android.content.Context;
+import android.widget.ImageView;
+
+import com.android.app_base.R;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.luck.picture.lib.engine.ImageEngine;
+import com.luck.picture.lib.utils.ActivityCompatHelper;
+
+public class GlideEngine implements ImageEngine {
+
+    /**
+     * 鍔犺浇鍥剧墖
+     *
+     * @param context   涓婁笅鏂�
+     * @param url       璧勬簮url
+     * @param imageView 鍥剧墖鎵胯浇鎺т欢
+     */
+    @Override
+    public void loadImage(Context context, String url, ImageView imageView) {
+        if (!ActivityCompatHelper.assertValidRequest(context)) {
+            return;
+        }
+        Glide.with(context)
+                .load(url)
+                .into(imageView);
+    }
+
+    @Override
+    public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) {
+        if (!ActivityCompatHelper.assertValidRequest(context)) {
+            return;
+        }
+        Glide.with(context)
+                .load(url)
+                .override(maxWidth, maxHeight)
+                .into(imageView);
+    }
+
+    /**
+     * 鍔犺浇鐩稿唽鐩綍灏侀潰
+     *
+     * @param context   涓婁笅鏂�
+     * @param url       鍥剧墖璺緞
+     * @param imageView 鎵胯浇鍥剧墖ImageView
+     */
+    @Override
+    public void loadAlbumCover(Context context, String url, ImageView imageView) {
+        if (!ActivityCompatHelper.assertValidRequest(context)) {
+            return;
+        }
+        Glide.with(context)
+                .asBitmap()
+                .load(url)
+                .override(180, 180)
+                .sizeMultiplier(0.5f)
+                .transform(new CenterCrop(), new RoundedCorners(8))
+                .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+                .into(imageView);
+    }
+
+
+    /**
+     * 鍔犺浇鍥剧墖鍒楄〃鍥剧墖
+     *
+     * @param context   涓婁笅鏂�
+     * @param url       鍥剧墖璺緞
+     * @param imageView 鎵胯浇鍥剧墖ImageView
+     */
+    @Override
+    public void loadGridImage(Context context, String url, ImageView imageView) {
+        if (!ActivityCompatHelper.assertValidRequest(context)) {
+            return;
+        }
+        Glide.with(context)
+                .load(url)
+                .override(200, 200)
+                .centerCrop()
+                .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+                .into(imageView);
+    }
+
+    @Override
+    public void pauseRequests(Context context) {
+        Glide.with(context).pauseRequests();
+    }
+
+    @Override
+    public void resumeRequests(Context context) {
+        Glide.with(context).resumeRequests();
+    }
+
+    private GlideEngine() {
+    }
+
+    private static final class InstanceHolder {
+        static final GlideEngine instance = new GlideEngine();
+    }
+
+    public static GlideEngine createGlideEngine() {
+        return InstanceHolder.instance;
+    }
+}
\ No newline at end of file
diff --git a/app_base/src/main/java/com/android/app_base/utils/GlideUtil.java b/app_base/src/main/java/com/android/app_base/utils/GlideUtil.java
new file mode 100644
index 0000000..55a132c
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/utils/GlideUtil.java
@@ -0,0 +1,96 @@
+package com.android.app_base.utils;
+
+import android.content.Context;
+import android.widget.ImageView;
+
+import com.android.app_base.R;
+import com.android.app_base.base.BaseApplication;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.bumptech.glide.request.RequestOptions;
+
+/**
+ * @author Ljj
+ * @date 2023.04.02. 23:16
+ * @desc Glide宸ュ叿绫�
+ */
+public class GlideUtil {
+
+    /**
+     * 鍔犺浇鍥剧墖鍒� ImageView 涓�
+     *
+     * @param imageUrl  鍥剧墖 URL
+     * @param imageView ImageView 瀵硅薄
+     */
+    public static void loadImage(String imageUrl, ImageView imageView) {
+        Glide.with(BaseApplication.getInstance())
+                .load(imageUrl)
+                .into(imageView);
+    }
+    //鍦嗗舰
+    public static <T> void loadCircleImage(T t, ImageView img) {
+        RequestOptions options = new RequestOptions()
+                .circleCrop()
+                .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+                .error(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+                .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate();
+        Glide.with(BaseApplication.getInstance())
+                .load(t)
+                .apply(options)
+                .into(img);
+    }
+
+    //鍦嗚
+    public static <T> void loadCornersImage(T t, ImageView img,int radius) {
+        Glide.with(BaseApplication.getInstance())
+                .load(t)
+                .diskCacheStrategy(DiskCacheStrategy.ALL)
+                .dontAnimate()
+                .transform(new CenterCrop(),new RoundedCorners(radius))
+                .into (img);
+    }
+    //閫忔槑搴�
+    public static <T> void loadAlphaImage(T t, ImageView img,float alpha) {
+        img.setAlpha(alpha);
+        RequestOptions options = new RequestOptions().centerCrop().placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+                .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate();
+        Glide.with(BaseApplication.getInstance())
+                .load(t)
+                .apply(options)
+                .into (img);
+    }
+
+    /**
+     * 鍔犺浇瑙嗛鏌愭椂闂寸殑甯у浘鐗�
+     * @param t 瑙嗛鍦板潃
+     * @param img 鍔犺浇鐨勬帶浠�
+     * @param radius 鍦嗚锛屼笉闇�瑕佷紶璐熸暟
+     * @param frame 闇�瑕佸姞杞界殑甯ф椂闂达紝鍗曚綅寰
+     * @param <T>
+     */
+    public static <T> void loadVideoCover(T t, ImageView img,int radius,int frame) {
+        RequestOptions options = new RequestOptions().centerCrop()
+                .frame(frame)
+                .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate();
+        if (radius > 0){
+            RoundedCorners roundedCorners = new RoundedCorners(radius);
+            options.bitmapTransform(roundedCorners);
+        }
+        Glide.with(BaseApplication.getInstance())
+                .load(t)
+                .apply(options)
+                .into (img);
+    }
+
+    /**
+     * 娓呴櫎 Glide 缂撳瓨
+     *
+     * @param context Context 瀵硅薄
+     */
+    public static void clearCache(Context context) {
+        Glide.get(context).clearMemory();
+        new Thread(() -> Glide.get(context).clearDiskCache()).start();
+    }
+}
\ No newline at end of file
diff --git a/app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java b/app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java
new file mode 100644
index 0000000..d57bf25
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java
@@ -0,0 +1,58 @@
+package com.android.app_base.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.Gravity;
+
+import androidx.databinding.BindingAdapter;
+import androidx.databinding.BindingMethod;
+
+import com.hjq.bar.TitleBar;
+import com.hjq.bar.TitleBarSupport;
+
+/**
+ * @author Ljj
+ * @date 2023.03.30. 20:47
+ * @desc 鎵╁睍鏍囬鏍忥紝鍦ㄥ師鏈夋爣棰樻爮澧炲姞鏍囬闈犲乏鎴栭潬鍙崇殑鍔熻兘
+ */
+public class ExtendTitleBar extends TitleBar {
+
+    private int titleGravity;
+    public ExtendTitleBar(Context context) {
+        super(context);
+    }
+
+    public ExtendTitleBar(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ExtendTitleBar(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        setTitleGravity(titleGravity);
+    }
+
+    @Override
+    public TitleBar setTitleGravity(int gravity) {
+        titleGravity = gravity;
+        gravity = TitleBarSupport.getAbsoluteGravity(this, gravity);
+        LayoutParams params = (LayoutParams) getTitleView().getLayoutParams();
+        params.gravity = gravity;
+        // 濡傛灉鏍囬鐨勯噸蹇冧负宸︼紝閭d箞宸﹁竟灏变笉鑳芥湁鍐呭
+        if (gravity == Gravity.LEFT || gravity == Gravity.START){
+            params.setMargins(getLeftView().getMeasuredWidth(),0,0,0);
+        }
+
+        // 濡傛灉鏍囬鐨勯噸蹇冧负鍙筹紝閭d箞鍙宠竟灏变笉鑳芥湁鍐呭
+        if (gravity == Gravity.RIGHT && gravity == Gravity.END){
+            params.setMargins(0,0,0, getRightView().getMeasuredWidth());
+        }
+        getTitleView().setLayoutParams(params);
+        return this;
+    }
+
+}
diff --git a/app_base/src/main/java/com/android/app_base/widget/GridSpaceItemDecoration.java b/app_base/src/main/java/com/android/app_base/widget/GridSpaceItemDecoration.java
new file mode 100644
index 0000000..db9313a
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/widget/GridSpaceItemDecoration.java
@@ -0,0 +1,48 @@
+package com.android.app_base.widget;
+
+import android.graphics.Rect;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * RecyclerView 缃戞牸item绛夊垎闂磋窛
+ */
+public class GridSpaceItemDecoration extends RecyclerView.ItemDecoration {
+    private int mSpanCount;//妯潯鐩暟閲�
+    private int mRowSpacing;//琛岄棿璺�
+    private int mColumnSpacing;// 鍒楅棿璺�
+
+    /**
+     * @param spanCount     鍒楁暟
+     * @param rowSpacing    琛岄棿璺�
+     * @param columnSpacing 鍒楅棿璺�
+     */
+    public GridSpaceItemDecoration(int spanCount, int rowSpacing, int columnSpacing) {
+        this.mSpanCount = spanCount;
+        this.mRowSpacing = rowSpacing;
+        this.mColumnSpacing = columnSpacing;
+    }
+
+    @Override
+    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
+        int position = parent.getChildAdapterPosition(view); // 鑾峰彇view 鍦╝dapter涓殑浣嶇疆銆�
+        int column = position % mSpanCount; // view 鎵�鍦ㄧ殑鍒�
+
+        //鍒楅棿绛夐棿璺濓紙鍒楁暟浠�0寮�濮嬶級
+        //鍒楀乏杈� = 鎵�鍦ㄥ垪 * 鍒楅棿璺� / 鎬诲垪鏁�
+        //鍒楀彸杈� = 鍒楅棿璺� - 涓嬩竴鍒楃殑鍒楀乏杈�
+        outRect.left = column * mColumnSpacing / mSpanCount;
+        outRect.right = mColumnSpacing - (column + 1) * mColumnSpacing / mSpanCount;
+
+
+        if (mRowSpacing == -1) {
+            return;
+        }
+        // 濡傛灉position > 琛屾暟锛岃鏄庝笉鏄湪绗竴琛岋紝鍒欎笉鎸囧畾琛岄珮锛屽叾浠栬鐨勪笂闂磋窛涓� top=mRowSpacing
+        if (position >= mSpanCount) {
+            outRect.top = mRowSpacing; // item top
+        }
+    }
+}
diff --git a/app_base/src/main/java/com/android/app_base/widget/WrapRecyclerView.java b/app_base/src/main/java/com/android/app_base/widget/WrapRecyclerView.java
new file mode 100644
index 0000000..edc9e97
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/widget/WrapRecyclerView.java
@@ -0,0 +1,485 @@
+package com.android.app_base.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鏀寔娣诲姞搴曢儴鍜屽ご閮ㄧ殑 RecyclerView
+ */
+public final class WrapRecyclerView extends RecyclerView {
+
+    /**
+     * 鍘熸湁鐨勯�傞厤鍣�
+     */
+    private Adapter mRealAdapter;
+
+    /**
+     * 鏀寔娣诲姞澶撮儴鍜屽簳閮ㄧ殑閫傞厤鍣�
+     */
+    private final WrapRecyclerAdapter mWrapAdapter = new WrapRecyclerAdapter();
+
+    public WrapRecyclerView(Context context) {
+        super(context);
+    }
+
+    public WrapRecyclerView(Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public WrapRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    public void setAdapter(Adapter adapter) {
+        mRealAdapter = adapter;
+        // 鍋锋鎹㈡煴
+        mWrapAdapter.setRealAdapter(mRealAdapter);
+        // 绂佺敤鏉$洰鍔ㄧ敾
+        setItemAnimator(null);
+        super.setAdapter(mWrapAdapter);
+    }
+
+    @Override
+    public Adapter getAdapter() {
+        return mRealAdapter;
+    }
+
+    /**
+     * 娣诲姞澶撮儴View
+     */
+    public void addHeaderView(View view) {
+        mWrapAdapter.addHeaderView(view);
+    }
+
+    @SuppressWarnings("unchecked")
+    public <V extends View> V addHeaderView(@LayoutRes int id) {
+        View headerView = LayoutInflater.from(getContext()).inflate(id, this, false);
+        addHeaderView(headerView);
+        return (V) headerView;
+    }
+
+    /**
+     * 绉婚櫎澶撮儴View
+     */
+    public void removeHeaderView(View view) {
+        mWrapAdapter.removeHeaderView(view);
+    }
+
+    /**
+     * 娣诲姞搴曢儴View
+     */
+    public void addFooterView(View view) {
+        mWrapAdapter.addFooterView(view);
+    }
+
+    @SuppressWarnings("unchecked")
+    public <V extends View> V addFooterView(@LayoutRes int id) {
+        View footerView = LayoutInflater.from(getContext()).inflate(id, this, false);
+        addFooterView(footerView);
+        return (V) footerView;
+    }
+
+    /**
+     * 绉婚櫎搴曢儴View
+     */
+    public void removeFooterView(View view) {
+        mWrapAdapter.removeFooterView(view);
+    }
+
+    /**
+     * 鑾峰彇澶撮儴View鎬绘暟
+     */
+    public int getHeaderViewsCount() {
+        return mWrapAdapter.getHeaderViewsCount();
+    }
+
+    /**
+     * 鑾峰彇搴曢儴View鎬绘暟
+     */
+    public int getFooterViewsCount() {
+        return mWrapAdapter.getFooterViewsCount();
+    }
+
+    /**
+     * 鑾峰彇澶撮儴View闆嗗悎
+     */
+    public List<View> getHeaderViews() {
+        return mWrapAdapter.getHeaderViews();
+    }
+
+    /**
+     * 鑾峰彇搴曢儴View闆嗗悎
+     */
+    public List<View> getFooterViews() {
+        return mWrapAdapter.getFooterViews();
+    }
+
+    /**
+     * 鍒锋柊澶撮儴鍜屽簳閮ㄥ竷灞�鎵�鏈夌殑 View 鐨勭姸鎬�
+     */
+    public void refreshHeaderFooterViews() {
+        mWrapAdapter.notifyDataSetChanged();
+    }
+
+    /**
+     * 璁剧疆鍦� GridLayoutManager 妯″紡涓嬪ご閮ㄥ拰灏鹃儴閮芥槸鐙崰涓�琛岀殑鏁堟灉
+     */
+    public void adjustSpanSize() {
+
+        final LayoutManager layoutManager = getLayoutManager();
+        if (layoutManager instanceof GridLayoutManager) {
+            ((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
+
+                @Override
+                public int getSpanSize(int position) {
+                    return (position < mWrapAdapter.getHeaderViewsCount()
+                            || position >= mWrapAdapter.getHeaderViewsCount() + (mRealAdapter == null ? 0 : mRealAdapter.getItemCount()))
+                            ? ((GridLayoutManager) layoutManager).getSpanCount() : 1;
+                }
+            });
+        }
+    }
+
+    /**
+     * 閲囩敤瑁呴グ璁捐妯″紡锛屽皢鍘熸湁鐨勯�傞厤鍣ㄥ寘瑁呰捣鏉�
+     */
+    private static final class WrapRecyclerAdapter extends Adapter<ViewHolder> {
+
+        /**
+         * 澶撮儴鏉$洰绫诲瀷
+         */
+        private static final int HEADER_VIEW_TYPE = Integer.MIN_VALUE >> 1;
+        /**
+         * 搴曢儴鏉$洰绫诲瀷
+         */
+        private static final int FOOTER_VIEW_TYPE = Integer.MAX_VALUE >> 1;
+
+        /**
+         * 鍘熸湁鐨勯�傞厤鍣�
+         */
+        private Adapter mRealAdapter;
+        /**
+         * 澶撮儴View闆嗗悎
+         */
+        private final List<View> mHeaderViews = new ArrayList<>();
+        /**
+         * 搴曢儴View闆嗗悎
+         */
+        private final List<View> mFooterViews = new ArrayList<>();
+        /**
+         * 褰撳墠璋冪敤鐨勪綅缃�
+         */
+        private int mCurrentPosition;
+
+        /**
+         * RecyclerView瀵硅薄
+         */
+        private RecyclerView mRecyclerView;
+
+        /**
+         * 鏁版嵁瑙傚療鑰呭璞�
+         */
+        private WrapAdapterDataObserver mObserver;
+
+        private void setRealAdapter(Adapter adapter) {
+            if (mRealAdapter != adapter) {
+
+                if (mRealAdapter != null) {
+                    if (mObserver != null) {
+                        // 涓哄師鏈夌殑RecyclerAdapter绉婚櫎鏁版嵁鐩戝惉瀵硅薄
+                        mRealAdapter.unregisterAdapterDataObserver(mObserver);
+                    }
+                }
+
+                mRealAdapter = adapter;
+                if (mRealAdapter != null) {
+                    if (mObserver == null) {
+                        mObserver = new WrapAdapterDataObserver(this);
+                    }
+                    // 涓哄師鏈夌殑RecyclerAdapter娣诲姞鏁版嵁鐩戝惉瀵硅薄
+                    mRealAdapter.registerAdapterDataObserver(mObserver);
+                    // 閫傞厤鍣ㄤ笉鏄涓�娆¤缁戝畾鍒癛ecyclerView涓婇渶瑕佸彂閫侀�氱煡锛屽洜涓虹涓�娆$粦瀹氫細鑷姩閫氱煡
+                    if (mRecyclerView != null) {
+                        notifyDataSetChanged();
+                    }
+                }
+            }
+        }
+
+        @Override
+        public int getItemCount() {
+            if (mRealAdapter != null) {
+                return getHeaderViewsCount() + mRealAdapter.getItemCount() + getFooterViewsCount();
+            } else {
+                return getHeaderViewsCount() + getFooterViewsCount();
+            }
+        }
+
+        @SuppressWarnings("all")
+        @Override
+        public int getItemViewType(int position) {
+            mCurrentPosition = position;
+            // 鑾峰彇澶撮儴甯冨眬鐨勬�绘暟
+            int headerCount = getHeaderViewsCount();
+            // 鑾峰彇鍘熸湁閫傞厤鍣ㄧ殑鎬绘暟
+            int adapterCount = mRealAdapter != null ? mRealAdapter.getItemCount() : 0;
+            // 鑾峰彇鍦ㄥ師鏈夐�傞厤鍣ㄤ笂鐨勪綅缃�
+            int adjPosition = position - headerCount;
+            if (position < headerCount) {
+                return HEADER_VIEW_TYPE;
+            } else if (adjPosition < adapterCount) {
+                return mRealAdapter.getItemViewType(adjPosition);
+            } else {
+                return FOOTER_VIEW_TYPE;
+            }
+        }
+
+        public int getPosition() {
+            return mCurrentPosition;
+        }
+
+        @SuppressWarnings("all")
+        @Override
+        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+            switch (viewType) {
+                case HEADER_VIEW_TYPE:
+                    return newWrapViewHolder(mHeaderViews.get(getPosition()));
+                case FOOTER_VIEW_TYPE:
+                    return newWrapViewHolder(mFooterViews.get(getPosition() - getHeaderViewsCount() - (mRealAdapter != null ? mRealAdapter.getItemCount() : 0)));
+                default:
+                    int itemViewType = mRealAdapter.getItemViewType(getPosition() - getHeaderViewsCount());
+                    if (itemViewType == HEADER_VIEW_TYPE || itemViewType == FOOTER_VIEW_TYPE) {
+                        throw new IllegalStateException("Please do not use this type as itemType");
+                    }
+                    if (mRealAdapter != null) {
+                        return mRealAdapter.onCreateViewHolder(parent, itemViewType);
+                    } else {
+                        return null;
+                    }
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+            int viewType = getItemViewType(position);
+            switch (viewType) {
+                case HEADER_VIEW_TYPE:
+                case FOOTER_VIEW_TYPE:
+                    break;
+                default:
+                    if (mRealAdapter != null) {
+                        mRealAdapter.onBindViewHolder(holder, getPosition() - getHeaderViewsCount());
+                    }
+                    break;
+            }
+        }
+
+        private WrapViewHolder newWrapViewHolder(View view) {
+            ViewParent parent = view.getParent();
+            if (parent instanceof ViewGroup) {
+                // IllegalStateException: ViewHolder views must not be attached when created.
+                // Ensure that you are not passing 'true' to the attachToRoot parameter of LayoutInflater.inflate(..., boolean attachToRoot)
+                ((ViewGroup) parent).removeView(view);
+            }
+            return new WrapViewHolder(view);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            if (mRealAdapter != null && position > getHeaderViewsCount() - 1 && position < getHeaderViewsCount() + mRealAdapter.getItemCount()) {
+                return mRealAdapter.getItemId(position - getHeaderViewsCount());
+            } else {
+                return super.getItemId(position);
+            }
+        }
+
+        @Override
+        public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
+            mRecyclerView = recyclerView;
+            if (mRealAdapter != null) {
+                mRealAdapter.onAttachedToRecyclerView(recyclerView);
+            }
+        }
+
+        @Override
+        public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) {
+            mRecyclerView = null;
+            if (mRealAdapter != null) {
+                mRealAdapter.onDetachedFromRecyclerView(recyclerView);
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public void onViewRecycled(@NonNull ViewHolder holder) {
+            if (holder instanceof WrapViewHolder) {
+                // 闃叉杩欎釜 ViewHolder 琚� RecyclerView 鎷垮幓澶嶇敤
+                holder.setIsRecyclable(false);
+                return;
+            }
+            if (mRealAdapter != null) {
+                mRealAdapter.onViewRecycled(holder);
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public boolean onFailedToRecycleView(@NonNull ViewHolder holder) {
+            if (mRealAdapter != null) {
+                return mRealAdapter.onFailedToRecycleView(holder);
+            }
+            return super.onFailedToRecycleView(holder);
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public void onViewAttachedToWindow(@NonNull ViewHolder holder) {
+            if (mRealAdapter != null) {
+                mRealAdapter.onViewAttachedToWindow(holder);
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public void onViewDetachedFromWindow(@NonNull ViewHolder holder) {
+            if (mRealAdapter != null) {
+                mRealAdapter.onViewDetachedFromWindow(holder);
+            }
+        }
+
+        /**
+         * 娣诲姞澶撮儴View
+         */
+        private void addHeaderView(View view) {
+            // 涓嶈兘娣诲姞鍚屼竴涓猇iew瀵硅薄锛屽惁鍒欎細瀵艰嚧RecyclerView澶嶇敤寮傚父
+            if (!mHeaderViews.contains(view) && !mFooterViews.contains(view)) {
+                mHeaderViews.add(view);
+                notifyDataSetChanged();
+            }
+        }
+
+        /**
+         * 绉婚櫎澶撮儴View
+         */
+        private void removeHeaderView(View view) {
+            if (mHeaderViews.remove(view)) {
+                notifyDataSetChanged();
+            }
+        }
+
+        /**
+         * 娣诲姞搴曢儴View
+         */
+        private void addFooterView(View view) {
+            // 涓嶈兘娣诲姞鍚屼竴涓猇iew瀵硅薄锛屽惁鍒欎細瀵艰嚧RecyclerView澶嶇敤寮傚父
+            if (!mFooterViews.contains(view) && !mHeaderViews.contains(view)) {
+                mFooterViews.add(view);
+                notifyDataSetChanged();
+            }
+        }
+
+        /**
+         * 绉婚櫎搴曢儴View
+         */
+        private void removeFooterView(View view) {
+            if (mFooterViews.remove(view)) {
+                notifyDataSetChanged();
+            }
+        }
+
+        /**
+         * 鑾峰彇澶撮儴View鎬绘暟
+         */
+        private int getHeaderViewsCount() {
+            return mHeaderViews.size();
+        }
+
+        /**
+         * 鑾峰彇搴曢儴View鎬绘暟
+         */
+        private int getFooterViewsCount() {
+            return mFooterViews.size();
+        }
+
+        /**
+         * 鑾峰彇澶撮儴View闆嗗悎
+         */
+        private List<View> getHeaderViews() {
+            return mHeaderViews;
+        }
+
+        /**
+         * 鑾峰彇搴曢儴View闆嗗悎
+         */
+        private List<View> getFooterViews() {
+            return mFooterViews;
+        }
+    }
+
+    /**
+     * 澶撮儴鍜屽簳閮ㄩ�氱敤鐨刅iewHolder瀵硅薄
+     */
+    private static final class WrapViewHolder extends ViewHolder {
+
+        private WrapViewHolder(View itemView) {
+            super(itemView);
+        }
+    }
+
+    /**
+     * 鏁版嵁鏀瑰彉鐩戝惉鍣�
+     */
+    private static final class WrapAdapterDataObserver extends AdapterDataObserver {
+
+        private final WrapRecyclerAdapter mWrapAdapter;
+
+        private WrapAdapterDataObserver(WrapRecyclerAdapter adapter) {
+            mWrapAdapter = adapter;
+        }
+
+        @Override
+        public void onChanged() {
+            mWrapAdapter.notifyDataSetChanged();
+        }
+
+        @Override
+        public void onItemRangeChanged(int positionStart, int itemCount, Object payload) {
+            onItemRangeChanged(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount);
+        }
+
+        @Override
+        public void onItemRangeChanged(int positionStart, int itemCount) {
+            mWrapAdapter.notifyItemRangeChanged(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount);
+        }
+
+        @Override
+        public void onItemRangeInserted(int positionStart, int itemCount) {
+            mWrapAdapter.notifyItemRangeInserted(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount);
+        }
+
+        @Override
+        public void onItemRangeRemoved(int positionStart, int itemCount) {
+            mWrapAdapter.notifyItemRangeRemoved(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount);
+        }
+
+        @Override
+        public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
+            mWrapAdapter.notifyItemMoved(mWrapAdapter.getHeaderViewsCount() + fromPosition, toPosition);
+        }
+    }
+}
\ No newline at end of file
diff --git a/app_base/src/main/res/layout/wait_dialog.xml b/app_base/src/main/res/layout/wait_dialog.xml
new file mode 100644
index 0000000..31ecfdd
--- /dev/null
+++ b/app_base/src/main/res/layout/wait_dialog.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:gravity="center"
+    android:orientation="vertical"
+    app:cardBackgroundColor="#D9000000"
+    app:cardCornerRadius="@dimen/dp_15"
+    app:cardElevation="0px"
+    >
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:minWidth="@dimen/dp_110"
+        android:minHeight="@dimen/dp_110"
+        android:orientation="vertical"
+        android:padding="@dimen/dp_10">
+
+        <com.airbnb.lottie.LottieAnimationView
+            android:layout_width="@dimen/dp_70"
+            android:layout_height="@dimen/dp_70"
+            app:lottie_autoPlay="true"
+            app:lottie_loop="true"
+            app:lottie_rawRes="@raw/progress" />
+
+        <TextView
+            android:id="@+id/tv_wait_message"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginHorizontal="@dimen/dp_15"
+            android:layout_marginTop="@dimen/dp_5"
+            android:maxLines="3"
+            android:text="鍔犺浇涓�.."
+            android:textColor="#FFFFFF"
+            android:textSize="@dimen/sp_14" />
+    </LinearLayout>
+
+</androidx.cardview.widget.CardView>
\ No newline at end of file
diff --git a/app_base/src/main/res/raw/loading.json b/app_base/src/main/res/raw/loading.json
new file mode 100644
index 0000000..925ed2f
--- /dev/null
+++ b/app_base/src/main/res/raw/loading.json
@@ -0,0 +1 @@
+{"v":"5.5.8","fr":50,"ip":0,"op":147,"w":800,"h":600,"nm":"Paperplane","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"planete Outlines - Group 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":88,"s":[50]},{"t":120,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[468.336,323.378,0],"to":[-29,0,0],"ti":[29,0,0]},{"t":102,"s":[294.336,323.378,0]}],"ix":2},"a":{"a":0,"k":[453.672,304.756,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.742,0],[0.741,-0.14],[0,0.074],[13.484,0],[1.669,-0.361],[19.79,0],[3.317,-19.082],[2.691,0],[0,-13.484],[-0.048,-0.629],[2.405,0],[0,-6.742],[-6.742,0],[0,0],[0,6.743]],"o":[[-0.781,0],[0.001,-0.074],[0,-13.484],[-1.778,0],[-3.594,-18.742],[-20.03,0],[-2.421,-0.804],[-13.485,0],[0,0.642],[-1.89,-1.199],[-6.742,0],[0,6.743],[0,0],[6.742,0],[0,-6.742]],"v":[[75.134,16.175],[72.85,16.396],[72.856,16.175],[48.44,-8.241],[43.262,-7.685],[3.406,-40.591],[-36.571,-6.995],[-44.269,-8.241],[-68.685,16.175],[-68.604,18.079],[-75.133,16.175],[-87.341,28.383],[-75.133,40.592],[75.134,40.592],[87.342,28.383]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.815686334348,0.823529471603,0.827451040231,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[453.672,304.756],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Merged Shape Layer","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.547],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.845],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":77,"s":[35]},{"t":150,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[390.319,298.2,0],"to":[0,-2.583,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":44,"s":[390.319,282.7,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[390.319,319.25,0],"to":[0,0,0],"ti":[0,0,0]},{"t":150,"s":[390.319,298.2,0]}],"ix":2},"a":{"a":0,"k":[664.319,256.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[18.967,-3.189],[-18.967,19.935],[-0.949,-19.935]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.223528981209,0.192156970501,0.674510002136,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.879,292.737],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[633.939,275.369],"ix":2},"a":{"a":0,"k":[236.879,292.737],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-98.335,64.79],[-105.619,4.984],[105.619,-64.79],[-80.316,24.919]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278430998325,0.294117987156,0.847059011459,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.247,247.882],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[673.623,252.941],"ix":2},"a":{"a":0,"k":[316.247,247.882],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 2","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-133.812,-42.171],[133.812,-75.141],[5.765,75.141],[-61.708,18.402],[124.227,-71.307],[-87.011,-1.534]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.365000009537,0.407999992371,0.976000010967,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[297.638,254.4],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[664.319,256.2],"ix":2},"a":{"a":0,"k":[297.638,254.4],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 3","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"planete Outlines - Group 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":102,"s":[100]},{"t":150,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[327.38,267.583,0],"to":[25.833,0,0],"ti":[-25.833,0,0]},{"t":150,"s":[482.38,267.583,0]}],"ix":2},"a":{"a":0,"k":[171.76,193.166,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.485,0],[4.38,-4.171],[21.913,0],[3.575,-18.765],[1.851,0],[0,-13.484],[-0.011,-0.291],[1.599,0],[0,-6.743],[-6.742,0],[0,0],[0,13.485]],"o":[[-6.526,0],[-0.793,-21.719],[-19.806,0],[-1.734,-0.391],[-13.485,0],[0,0.293],[-1.4,-0.559],[-6.742,0],[0,6.742],[0,0],[13.485,0],[0,-13.484]],"v":[[59.669,-8.242],[42.84,-1.506],[2.287,-40.592],[-37.576,-7.638],[-42.962,-8.242],[-67.378,16.174],[-67.356,17.049],[-71.878,16.174],[-84.086,28.383],[-71.878,40.591],[59.669,40.591],[84.086,16.174]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.823999980852,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[171.76,193.166],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[406,306,0],"ix":2},"a":{"a":0,"k":[400,300,0],"ix":1},"s":{"a":0,"k":[179,179,100],"ix":6}},"ao":0,"w":800,"h":600,"ip":0,"op":147,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/app_base/src/main/res/raw/progress.json b/app_base/src/main/res/raw/progress.json
new file mode 100644
index 0000000..c1ed963
--- /dev/null
+++ b/app_base/src/main/res/raw/progress.json
@@ -0,0 +1 @@
+{"v":"4.6.9","fr":30,"ip":0,"op":45,"w":200,"h":200,"nm":"Composition 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"LFCalque de forme 2","ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[1],"y":[0]},"n":["0p833_0p833_1_0"],"t":0,"s":[0],"e":[360]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0_1_0p167_0p167"],"t":15,"s":[360],"e":[510]},{"t":34}]},"p":{"a":0,"k":[100,100,0]},"a":{"a":0,"k":[-93.098,-93.098,0]},"s":{"a":0,"k":[80,80,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.228,0],[0,-55.228],[-55.228,0],[0,55.228]],"o":[[-55.228,0],[0,55.228],[55.228,0],[0,-55.228]],"v":[[0,-100],[-100,0],[0,100],[100,0]],"c":true}},"nm":"Trac茅 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0_1_0p167_0p167"],"t":23,"s":[100],"e":[42]},{"t":45}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[98],"e":[98]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[98],"e":[60]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[60],"e":[40]},{"t":23}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Raccorder les trac茅s 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":2,"lj":2,"nm":"Contour 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[-93.098,-93.098],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":45,"st":0,"bm":0,"sr":1}],"chars":[],"markers":[]}
\ No newline at end of file
diff --git a/app_base/src/main/res/raw/province.json b/app_base/src/main/res/raw/province.json
new file mode 100644
index 0000000..7c0a55b
--- /dev/null
+++ b/app_base/src/main/res/raw/province.json
@@ -0,0 +1,5537 @@
+[
+  {
+    "name": "鍖椾含甯�",
+    "city": [
+      {
+        "name": "鍖椾含甯�",
+        "area": [
+          "涓滃煄鍖�",
+          "瑗垮煄鍖�",
+          "娴锋穩鍖�",
+          "鏈濋槼鍖�",
+          "涓板彴鍖�",
+          "鐭虫櫙灞卞尯",
+          "闂ㄥご娌熷尯",
+          "閫氬窞鍖�",
+          "椤轰箟鍖�",
+          "鎴垮北鍖�",
+          "澶у叴鍖�",
+          "鏄屽钩鍖�",
+          "鎬�鏌斿尯",
+          "骞宠胺鍖�",
+          "瀵嗕簯鍖�",
+          "寤跺簡鍖�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "涓婃捣甯�",
+    "city": [
+      {
+        "name": "涓婃捣甯�",
+        "area": [
+          "榛勬郸鍖�",
+          "娴︿笢鍖�",
+          "寰愭眹鍖�",
+          "闀垮畞鍖�",
+          "闈欏畨鍖�",
+          "鏅檧鍖�",
+          "铏瑰彛鍖�",
+          "鏉ㄦ郸鍖�",
+          "闂佃鍖�",
+          "瀹濆北鍖�",
+          "鍢夊畾鍖�",
+          "閲戝北鍖�",
+          "鏉炬睙鍖�",
+          "闈掓郸鍖�",
+          "濂夎搐鍖�",
+          "宕囨槑鍖�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "澶╂触甯�",
+    "city": [
+      {
+        "name": "澶╂触甯�",
+        "area": [
+          "鍜屽钩鍖�",
+          "娌宠タ鍖�",
+          "鍗楀紑鍖�",
+          "娌充笢鍖�",
+          "娌冲寳鍖�",
+          "绾㈡ˉ鍖�",
+          "婊ㄦ捣鍖�",
+          "涓滀附鍖�",
+          "瑗块潚鍖�",
+          "娲ュ崡鍖�",
+          "鍖楄景鍖�",
+          "姝︽竻鍖�",
+          "瀹濆澔鍖�",
+          "瀹佹渤鍖�",
+          "闈欐捣鍖�",
+          "钃熷窞鍖�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "閲嶅簡甯�",
+    "city": [
+      {
+        "name": "閲嶅簡甯�",
+        "area": [
+          "娓濅腑鍖�",
+          "澶ф浮鍙e尯",
+          "姹熷寳鍖�",
+          "娌欏潽鍧濆尯",
+          "涔濋緳鍧″尯",
+          "鍗楀哺鍖�",
+          "鍖楃鍖�",
+          "娓濆寳鍖�",
+          "宸村崡鍖�",
+          "娑櫟鍖�",
+          "缍︽睙鍖�",
+          "澶ц冻鍖�",
+          "闀垮鍖�",
+          "姹熸触鍖�",
+          "鍚堝窛鍖�",
+          "姘稿窛鍖�",
+          "鍗楀窛鍖�",
+          "鐠у北鍖�",
+          "閾滄鍖�",
+          "娼煎崡鍖�",
+          "鑽f槍鍖�",
+          "涓囧窞鍖�",
+          "姊佸钩鍖�",
+          "鍩庡彛鍘�",
+          "涓伴兘鍘�",
+          "鍨睙鍘�",
+          "蹇犲幙",
+          "寮�宸炲尯",
+          "浜戦槼鍘�",
+          "濂夎妭鍘�",
+          "宸北鍘�",
+          "宸邯鍘�",
+          "榛旀睙鍖�",
+          "姝﹂殕鍖�",
+          "鐭虫煴鍦熷鏃忚嚜娌诲幙",
+          "绉�灞卞湡瀹舵棌鑻楁棌鑷不鍘�",
+          "閰夐槼鍦熷鏃忚嫍鏃忚嚜娌诲幙",
+          "褰按鑻楁棌鍦熷鏃忚嚜娌诲幙"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "骞夸笢鐪�",
+    "city": [
+      {
+        "name": "骞垮窞甯�",
+        "area": [
+          "瓒婄鍖�",
+          "鑽旀咕鍖�",
+          "娴风彔鍖�",
+          "澶╂渤鍖�",
+          "鐧戒簯鍖�",
+          "榛勫煍鍖�",
+          "鐣鍖�",
+          "鑺遍兘鍖�",
+          "鍗楁矙鍖�",
+          "澧炲煄鍖�",
+          "浠庡寲鍖�"
+        ]
+      },
+      {
+        "name": "娣卞湷甯�",
+        "area": [
+          "绂忕敯鍖�",
+          "缃楁箹鍖�",
+          "鍗楀北鍖�",
+          "鐩愮敯鍖�",
+          "瀹濆畨鍖�",
+          "榫欏矖鍖�",
+          "鍧北鍖�",
+          "鍏夋槑鍖�",
+          "榫欏崕鍖�",
+          "澶ч箯鍖�"
+        ]
+      },
+      {
+        "name": "涓滆帪甯�",
+        "area": [
+          "鑾炲煄鍖�",
+          "鍗楀煄鍖�",
+          "涓滃煄鍖�",
+          "涓囨睙鍖�",
+          "鐭崇ⅲ闀�",
+          "鐭抽緳闀�",
+          "鑼跺北闀�",
+          "鐭虫帓闀�",
+          "浼佺煶闀�",
+          "妯播闀�",
+          "妗ュご闀�",
+          "璋㈠矖闀�",
+          "涓滃潙闀�",
+          "甯稿钩闀�",
+          "瀵闀�",
+          "澶ф湕闀�",
+          "楹绘秾闀�",
+          "涓爞闀�",
+          "楂樺煑闀�",
+          "妯熸湪澶撮晣",
+          "澶у箔灞遍晣",
+          "鏈涚墰澧╅晣",
+          "榛勬睙闀�",
+          "娲闀�",
+          "娓呮邯闀�",
+          "娌欑敯闀�",
+          "閬撴粯闀�",
+          "濉樺帵闀�",
+          "铏庨棬闀�",
+          "鍘氳闀�",
+          "鍑ゅ矖闀�",
+          "闀垮畨闀�"
+        ]
+      },
+      {
+        "name": "鎯犲窞甯�",
+        "area": [
+          "鎯犲煄鍖�",
+          "鎯犻槼鍖�",
+          "鎯犱笢鍘�",
+          "鍗氱綏鍘�",
+          "榫欓棬鍘�"
+        ]
+      },
+      {
+        "name": "鐝犳捣甯�",
+        "area": [
+          "棣欐床鍖�",
+          "閲戞咕鍖�",
+          "鏂楅棬鍖�"
+        ]
+      },
+      {
+        "name": "浣涘北甯�",
+        "area": [
+          "绂呭煄鍖�",
+          "鍗楁捣鍖�",
+          "椤哄痉鍖�",
+          "涓夋按鍖�",
+          "楂樻槑鍖�"
+        ]
+      },
+      {
+        "name": "涓北甯�",
+        "area": [
+          "鐭冲矏鍖�",
+          "涓滃尯",
+          "瑗垮尯",
+          "鍗楀尯",
+          "浜旀灞卞尯",
+          "鐏偓寮�鍙戝尯",
+          "榛勫渻闀�",
+          "鍗楀ご闀�",
+          "涓滃嚖闀�",
+          "闃滄矙闀�",
+          "灏忔闀�",
+          "涓滃崌闀�",
+          "鍙ら晣闀�",
+          "妯爮闀�",
+          "涓夎闀�",
+          "姘戜紬闀�",
+          "鍗楁湕闀�",
+          "娓彛闀�",
+          "澶ф秾闀�",
+          "娌欐邯闀�",
+          "涓変埂闀�",
+          "鏉胯姍闀�",
+          "绁炴咕闀�",
+          "鍧︽床闀�"
+        ]
+      },
+      {
+        "name": "娼窞甯�",
+        "area": [
+          "婀樻ˉ鍖�",
+          "娼畨鍖�",
+          "楗跺钩鍘�"
+        ]
+      },
+      {
+        "name": "鎻槼甯�",
+        "area": [
+          "姒曞煄鍖�",
+          "鎻笢鍘�",
+          "鎻タ鍘�",
+          "鎯犳潵鍘�",
+          "鏅畞甯�"
+        ]
+      },
+      {
+        "name": "姹曞ご甯�",
+        "area": [
+          "閲戝钩鍖�",
+          "榫欐箹鍖�",
+          "婢勬捣鍖�",
+          "婵犳睙鍖�",
+          "婵犳睙鍖�",
+          "娼崡鍖�",
+          "鍗楁境鍘�"
+        ]
+      },
+      {
+        "name": "姹曞熬甯�",
+        "area": [
+          "鍩庡尯",
+          "闄嗕赴甯�",
+          "娴蜂赴鍘�",
+          "闄嗘渤鍘�"
+        ]
+      },
+      {
+        "name": "娓呰繙甯�",
+        "area": [
+          "娓呭煄鍖�",
+          "娓呮柊鍖�",
+          "鑻卞痉甯�",
+          "杩炲窞甯�",
+          "浣涘唸鍘�",
+          "闃冲北鍘�",
+          "杩炲崡鐟舵棌鑷不鍘�",
+          "杩炲北澹棌鐟舵棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "浜戞诞甯�",
+        "area": [
+          "浜戝煄鍖�",
+          "浜戝畨鍘�",
+          "鏂板叴鍘�",
+          "閮佸崡鍘�",
+          "缃楀畾甯�"
+        ]
+      },
+      {
+        "name": "闊跺叧甯�",
+        "area": [
+          "娴堟睙鍖�",
+          "姝︽睙鍖�",
+          "鏇叉睙鍖�",
+          "涔愭槍甯�",
+          "鍗楅泟甯�",
+          "濮嬪叴鍘�",
+          "浠佸寲鍘�",
+          "缈佹簮鍘�",
+          "鏂颁赴鍘�",
+          "涔虫簮鐟舵棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "姹熼棬甯�",
+        "area": [
+          "钃睙鍖�",
+          "姹熸捣鍖�",
+          "鏂颁細鍖�",
+          "鍙板北甯�",
+          "寮�骞冲競",
+          "楣ゅ北甯�",
+          "鎭╁钩甯�"
+        ]
+      },
+      {
+        "name": "婀涙睙甯�",
+        "area": [
+          "璧ゅ潕鍖�",
+          "闇炲北鍖�",
+          "鍧″ご鍖�",
+          "楹荤珷鍖�",
+          "鍚村窛甯�",
+          "闆峰窞甯�",
+          "寤夋睙甯�",
+          "閬傛邯鍘�",
+          "寰愰椈鍘�"
+        ]
+      },
+      {
+        "name": "鑼傚悕甯�",
+        "area": [
+          "鑼傚崡鍖�",
+          "鐢电櫧鍖�",
+          "楂樺窞甯�",
+          "鑼傛腐鍖�",
+          "鍖栧窞甯�",
+          "淇″疁甯�"
+        ]
+      },
+      {
+        "name": "鑲囧簡甯�",
+        "area": [
+          "绔窞鍖�",
+          "榧庢箹鍖�",
+          "骞垮畞鍘�",
+          "鎬�闆嗗幙",
+          "灏佸紑鍘�",
+          "寰峰簡鍘�",
+          "楂樿鍖�",
+          "鍥涗細甯�"
+        ]
+      },
+      {
+        "name": "娌虫簮甯�",
+        "area": [
+          "婧愬煄鍖�",
+          "绱噾鍘�",
+          "榫欏窛鍘�",
+          "杩炲钩鍘�",
+          "鍜屽钩鍘�",
+          "涓滄簮鍘�"
+        ]
+      },
+      {
+        "name": "姊呭窞甯�",
+        "area": [
+          "姊呮睙鍖�",
+          "姊呭幙鍖�",
+          "鍏村畞甯�",
+          "骞宠繙鍘�",
+          "钑夊箔鍘�",
+          "澶у煍鍘�",
+          "涓伴『鍘�",
+          "浜斿崕鍘�"
+        ]
+      },
+      {
+        "name": "闃虫睙甯�",
+        "area": [
+          "姹熷煄鍖�",
+          "闃虫槬甯�",
+          "闃充笢鍖�",
+          "闃宠タ鍘�",
+          "娴烽櫟宀涚粡娴庡紑鍙戣瘯楠屽尯",
+          "闃虫睙楂樻柊鎶�鏈骇涓氬紑鍙戝尯"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "姹熻嫃鐪�",
+    "city": [
+      {
+        "name": "鍗椾含甯�",
+        "area": [
+          "鐜勬鍖�",
+          "绉︽樊鍖�",
+          "榧撴ゼ鍖�",
+          "寤洪偤鍖�",
+          "闆ㄨ姳鍙板尯",
+          "娴﹀彛鍖�",
+          "鍏悎鍖�",
+          "鏍栭湠鍖�",
+          "姹熷畞鍖�",
+          "婧ф按鍖�",
+          "楂樻烦鍘�"
+        ]
+      },
+      {
+        "name": "鏃犻敗甯�",
+        "area": [
+          "姊佹邯鍖�",
+          "婊ㄦ箹鍖�",
+          "鎯犲北鍖�",
+          "閿″北鍖�",
+          "鏂板惔鍖�",
+          "姹熼槾甯�",
+          "瀹滃叴甯�"
+        ]
+      },
+      {
+        "name": "鑻忓窞甯�",
+        "area": [
+          "濮戣嫃鍖�",
+          "鐩稿煄鍖�",
+          "鍚翠腑鍖�",
+          "铏庝笜鍖�",
+          "鍚存睙鍖�",
+          "甯哥啛甯�",
+          "鏄嗗北甯�",
+          "寮犲娓競",
+          "澶粨甯�"
+        ]
+      },
+      {
+        "name": "甯稿窞甯�",
+        "area": [
+          "閲戝潧鍖�",
+          "姝﹁繘鍖�",
+          "鏂板寳鍖�",
+          "澶╁畞鍖�",
+          "閽熸ゼ鍖�",
+          "婧ч槼甯�"
+        ]
+      },
+      {
+        "name": "闀囨睙甯�",
+        "area": [
+          "浜彛鍖�",
+          "娑﹀窞鍖�",
+          "涓瑰緬鍖�",
+          "闀囨睙鍖�",
+          "闀囨睙楂樻柊鍖�"
+        ]
+      },
+      {
+        "name": "鍗楅�氬競",
+        "area": [
+          "宕囧窛鍖�",
+          "娓椄鍖�",
+          "閫氬窞鍖�",
+          "娴峰畨鍘�",
+          "濡備笢鍘�",
+          "鍚笢甯�",
+          "濡傜殝甯�",
+          "娴烽棬甯�"
+        ]
+      },
+      {
+        "name": "娉板窞甯�",
+        "area": [
+          "娴烽櫟鍖�",
+          "楂樻腐鍖�",
+          "濮滃牥甯�",
+          "鍏村寲甯�",
+          "娉板叴甯�",
+          "闈栨睙甯�"
+        ]
+      },
+      {
+        "name": "鎵窞甯�",
+        "area": [
+          "骞块櫟鍖�",
+          "閭楁睙鍖�",
+          "姹熼兘鍖�",
+          "寮�鍙戝尯",
+          "瀹濆簲鍘�",
+          "浠緛甯�",
+          "楂橀偖甯�"
+        ]
+      },
+      {
+        "name": "鐩愬煄甯�",
+        "area": [
+          "浜箹鍖�",
+          "鐩愰兘鍖�",
+          "澶т赴鍖�",
+          "寤烘箹鍘�",
+          "灏勯槼鍘�",
+          "闃滃畞鍘�",
+          "婊ㄦ捣鍘�",
+          "鍝嶆按鍘�",
+          "涓滃彴甯�"
+        ]
+      },
+      {
+        "name": "杩炰簯娓競",
+        "area": [
+          "娴峰窞鍖�",
+          "杩炰簯鍖�",
+          "璧f鍖�",
+          "鐏屼簯鍘�",
+          "涓滄捣鍘�",
+          "鐏屽崡鍘�"
+        ]
+      },
+      {
+        "name": "寰愬窞甯�",
+        "area": [
+          "浜戦緳鍖�",
+          "榧撴ゼ鍖�",
+          "璐炬豹鍖�",
+          "娉夊北鍖�",
+          "閾滃北鍖�",
+          "閭冲窞甯�",
+          "鏂版矀甯�",
+          "鐫㈠畞鍘�",
+          "娌涘幙",
+          "涓板幙"
+        ]
+      },
+      {
+        "name": "娣畨甯�",
+        "area": [
+          "娓呮睙娴﹀尯",
+          "娣槾鍖�",
+          "娣畨鍖�",
+          "娲辰鍖�",
+          "娑熸按鍘�",
+          "鐩辩湙鍘�",
+          "閲戞箹鍘�"
+        ]
+      },
+      {
+        "name": "瀹胯縼甯�",
+        "area": [
+          "瀹垮煄鍖�",
+          "瀹胯鲍鍖�",
+          "娌槼鍘�",
+          "娉楅槼鍘�",
+          "娉楁椽鍘�",
+          "娲嬫渤鍖�",
+          "婀栨花鍖�",
+          "鑻忓宸ヤ笟鍥尯",
+          "缁忔祹寮�鍙戝尯"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "灞变笢鐪�",
+    "city": [
+      {
+        "name": "娴庡崡甯�",
+        "area": [
+          "鍘嗕笅鍖�",
+          "甯備腑鍖�",
+          "妲愯崼鍖�",
+          "澶╂ˉ鍖�",
+          "鍘嗗煄鍖�",
+          "闀挎竻鍖�",
+          "绔犱笜鍖�",
+          "娴庨槼鍖�",
+          "鑾辫姕鍖�",
+          "閽㈠煄鍖�",
+          "骞抽槾鍘�",
+          "鍟嗘渤鍘�",
+          "楂樻柊鎶�鏈骇涓氬紑鍙戝尯"
+        ]
+      },
+      {
+        "name": "闈掑矝甯�",
+        "area": [
+          "甯傚崡鍖�",
+          "甯傚寳鍖�",
+          "榛勫矝鍖�",
+          "宕傚北鍖�",
+          "鏉庢钵鍖�",
+          "鍩庨槼鍖�",
+          "鑳跺窞甯�",
+          "鍗冲ⅷ鍖�",
+          "骞冲害甯�",
+          "鑾辫タ甯�"
+        ]
+      },
+      {
+        "name": "娣勫崥甯�",
+        "area": [
+          "寮犲簵鍖�",
+          "娣勫窛鍖�",
+          "鍗氬北鍖�",
+          "涓存穭鍖�",
+          "妗撳彴鍘�",
+          "楂橀潚鍘�",
+          "娌傛簮鍘�"
+        ]
+      },
+      {
+        "name": "鏋e簞甯�",
+        "area": [
+          "甯備腑鍖�",
+          "灞变涵鍖�",
+          "鍙板効搴勫尯",
+          "宄勫煄鍖�",
+          "钖涘煄鍖�",
+          "婊曞窞甯�"
+        ]
+      },
+      {
+        "name": "涓滆惀甯�",
+        "area": [
+          "涓滆惀鍖�",
+          "娌冲彛鍖�",
+          "鍨﹀埄鍖�",
+          "鍒╂触鍘�",
+          "骞块ザ鍘�"
+        ]
+      },
+      {
+        "name": "鐑熷彴甯�",
+        "area": [
+          "鑺濈綐鍖�",
+          "绂忓北鍖�",
+          "鐗熷钩鍖�",
+          "鑾卞北鍖�",
+          "榫欏彛甯�",
+          "鑾遍槼甯�",
+          "鑾卞窞甯�",
+          "钃幈鍖�",
+          "鎷涜繙甯�",
+          "鏍栭湠甯�",
+          "娴烽槼甯�",
+          "鐑熷彴缁忔祹鎶�鏈紑鍙戝尯",
+          "鐑熷彴楂樻柊鎶�鏈骇涓氬紑鍙戝尯"
+        ]
+      },
+      {
+        "name": "娼嶅潑甯�",
+        "area": [
+          "娼嶅煄鍖�",
+          "瀵掍涵鍖�",
+          "鍧婂瓙鍖�",
+          "濂庢枃鍖�",
+          "涓存湊鍘�",
+          "鏄屼箰鍘�",
+          "闈掑窞甯�",
+          "璇稿煄甯�",
+          "瀵垮厜甯�",
+          "瀹変笜甯�",
+          "楂樺瘑甯�",
+          "鏄岄倯甯�"
+        ]
+      },
+      {
+        "name": "娴庡畞甯�",
+        "area": [
+          "浠诲煄鍖�",
+          "鍏栧窞鍖�",
+          "寰北鍘�",
+          "楸煎彴鍘�",
+          "閲戜埂鍘�",
+          "鍢夌ゥ鍘�",
+          "姹朵笂鍘�",
+          "娉楁按鍘�",
+          "姊佸北鍘�",
+          "鏇查槣甯�",
+          "閭瑰煄甯�"
+        ]
+      },
+      {
+        "name": "娉板畨甯�",
+        "area": [
+          "娉板北鍖�",
+          "宀卞渤鍖�",
+          "鏂版嘲甯�",
+          "鑲ュ煄甯�",
+          "瀹侀槼鍘�",
+          "涓滃钩鍘�"
+        ]
+      },
+      {
+        "name": "濞佹捣甯�",
+        "area": [
+          "鐜繝鍖�",
+          "鏂囩櫥鍖�",
+          "鑽f垚甯�",
+          "涔冲北甯�",
+          "鍗楁捣鍖�",
+          "缁忔祹鎶�鏈紑鍙戝尯",
+          "鐏偓楂樻妧鏈骇涓氬紑鍙戝尯",
+          "杩涘嚭鍙e姞宸ヤ繚绋庡尯",
+          "涓存腐缁忔祹鎶�鏈紑鍙戝尯"
+        ]
+      },
+      {
+        "name": "鏃ョ収甯�",
+        "area": [
+          "涓滄腐鍖�",
+          "宀氬北鍖�",
+          "浜旇幉鍘�",
+          "鑾掑幙"
+        ]
+      },
+      {
+        "name": "鑾辫姕甯�",
+        "area": [
+          "鑾卞煄鍖�",
+          "閽㈠煄鍖�"
+        ]
+      },
+      {
+        "name": "涓存矀甯�",
+        "area": [
+          "鍏板北鍖�",
+          "缃楀簞鍖�",
+          "娌充笢鍖�",
+          "閮煄鍘�",
+          "鍏伴櫟鍘�",
+          "鑾掑崡鍘�",
+          "娌傛按鍘�",
+          "钂欓槾鍘�",
+          "骞抽倯鍘�",
+          "璐瑰幙",
+          "娌傚崡鍘�",
+          "涓存箔鍘�"
+        ]
+      },
+      {
+        "name": "寰峰窞甯�",
+        "area": [
+          "寰峰煄鍖�",
+          "闄靛煄鍖�",
+          "瀹佹触鍘�",
+          "搴嗕簯鍘�",
+          "涓撮倯鍘�",
+          "榻愭渤鍘�",
+          "骞冲師鍘�",
+          "澶忔触鍘�",
+          "姝﹀煄鍘�",
+          "涔愰櫟甯�",
+          "绂瑰煄甯�"
+        ]
+      },
+      {
+        "name": "鑱婂煄甯�",
+        "area": [
+          "涓滄槍搴滃尯",
+          "鑼屽钩鍖�",
+          "涓存竻甯�",
+          "涓滈樋鍘�",
+          "鍐犲幙",
+          "楂樺攼鍘�",
+          "闃宠胺鍘�",
+          "鑾樺幙"
+        ]
+      },
+      {
+        "name": "婊ㄥ窞甯�",
+        "area": [
+          "婊ㄥ煄鍖�",
+          "娌惧寲鍖�",
+          "鎯犳皯鍘�",
+          "闃充俊鍘�",
+          "鏃犳#鍘�",
+          "鍗氬叴鍘�",
+          "閭瑰钩甯�"
+        ]
+      },
+      {
+        "name": "鑿忔辰甯�",
+        "area": [
+          "鐗′腹鍖�",
+          "瀹氶櫠鍘�",
+          "宸ㄩ噹鍘�",
+          "鏇瑰幙",
+          "鎴愭鍘�",
+          "鍗曞幙",
+          "閮撳煄鍘�",
+          "閯勫煄鍘�",
+          "涓滄槑鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "娴欐睙鐪�",
+    "city": [
+      {
+        "name": "鏉窞甯�",
+        "area": [
+          "涓婂煄鍖�",
+          "涓嬪煄鍖�",
+          "姹熷共鍖�",
+          "鎷卞鍖�",
+          "瑗挎箹鍖�",
+          "婊ㄦ睙鍖�",
+          "钀у北鍖�",
+          "浣欐澀鍖�",
+          "瀵岄槼鍖�",
+          "涓村畨鍖�",
+          "妗愬簮鍘�",
+          "娣冲畨鍘�",
+          "寤哄痉甯�"
+        ]
+      },
+      {
+        "name": "瀹佹尝甯�",
+        "area": [
+          "娴锋洐鍖�",
+          "姹熷寳鍖�",
+          "鍖椾粦鍖�",
+          "闀囨捣鍖�",
+          "閯炲窞鍖�",
+          "濂夊寲甯�",
+          "浣欏甯�",
+          "鎱堟邯甯�",
+          "璞″北鍘�",
+          "瀹佹捣鍘�"
+        ]
+      },
+      {
+        "name": "娓╁窞甯�",
+        "area": [
+          "楣垮煄鍖�",
+          "榫欐咕鍖�",
+          "鐡捣鍖�",
+          "娲炲ご鍖�",
+          "姘稿槈鍘�",
+          "骞抽槼鍘�",
+          "鑻嶅崡鍘�",
+          "鏂囨垚鍘�",
+          "娉伴『鍘�",
+          "鐟炲畨甯�",
+          "涔愭竻甯�",
+          "榫欐腐甯�"
+        ]
+      },
+      {
+        "name": "鍢夊叴甯�",
+        "area": [
+          "鍗楁箹鍖�",
+          "绉�娲插尯",
+          "鍢夊杽鍘�",
+          "娴风洂鍘�",
+          "娴峰畞甯�",
+          "骞虫箹甯�",
+          "妗愪埂甯�"
+        ]
+      },
+      {
+        "name": "婀栧窞甯�",
+        "area": [
+          "鍚村叴鍖�",
+          "鍗楁禂鍖�",
+          "寰锋竻鍘�",
+          "闀垮叴鍘�",
+          "瀹夊悏鍘�"
+        ]
+      },
+      {
+        "name": "缁嶅叴甯�",
+        "area": [
+          "瓒婂煄鍖�",
+          "鏌ˉ鍖�",
+          "涓婅櫈鍖�",
+          "鏂版槍鍘�",
+          "宓婂窞甯�",
+          "璇告毃甯�"
+        ]
+      },
+      {
+        "name": "閲戝崕甯�",
+        "area": [
+          "濠哄煄鍖�",
+          "閲戜笢鍖�",
+          "鍏版邯甯�",
+          "涔変箤甯�",
+          "涓滈槼甯�",
+          "姘稿悍甯�",
+          "娴︽睙鍘�",
+          "姝︿箟鍘�",
+          "纾愬畨鍘�"
+        ]
+      },
+      {
+        "name": "琛㈠窞甯�",
+        "area": [
+          "鏌煄鍖�",
+          "琛㈡睙鍖�",
+          "榫欐父鍘�",
+          "姹熷北甯�",
+          "甯稿北鍘�",
+          "寮�鍖栧幙"
+        ]
+      },
+      {
+        "name": "鑸熷北甯�",
+        "area": [
+          "瀹氭捣鍖�",
+          "鏅檧鍖�",
+          "宀卞北鍘�",
+          "宓婃硹鍘�"
+        ]
+      },
+      {
+        "name": "鍙板窞甯�",
+        "area": [
+          "妞掓睙鍖�",
+          "榛勫博鍖�",
+          "璺ˉ鍖�",
+          "涓存捣甯�",
+          "娓╁箔甯�",
+          "鐜夌幆甯�",
+          "澶╁彴鍘�",
+          "浠欏眳鍘�",
+          "涓夐棬鍘�"
+        ]
+      },
+      {
+        "name": "涓芥按甯�",
+        "area": [
+          "鑾查兘鍖�",
+          "榫欐硥甯�",
+          "闈掔敯鍘�",
+          "浜戝拰鍘�",
+          "搴嗗厓鍘�",
+          "缂欎簯鍘�",
+          "閬傛槍鍘�",
+          "鏉鹃槼鍘�",
+          "鏅畞鐣叉棌鑷不鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "娌冲崡鐪�",
+    "city": [
+      {
+        "name": "閮戝窞甯�",
+        "area": [
+          "涓師鍖�",
+          "浜屼竷鍖�",
+          "绠″煄鍥炴棌鍖�",
+          "閲戞按鍖�",
+          "涓婅鍖�",
+          "鎯犳祹鍖�",
+          "涓墴鍘�",
+          "宸╀箟甯�",
+          "鑽ラ槼甯�",
+          "鏂板瘑甯�",
+          "鏂伴儜甯�",
+          "鐧诲皝甯�"
+        ]
+      },
+      {
+        "name": "寮�灏佸競",
+        "area": [
+          "榫欎涵鍖�",
+          "椤烘渤鍥炴棌鍖�",
+          "榧撴ゼ鍖�",
+          "绂圭帇鍙板尯",
+          "绁ョ鍖�",
+          "鏉炲幙",
+          "閫氳鍘�",
+          "灏夋皬鍘�",
+          "鍏拌�冨幙"
+        ]
+      },
+      {
+        "name": "娲涢槼甯�",
+        "area": [
+          "鑰佸煄鍖�",
+          "瑗垮伐鍖�",
+          "鐎嶆渤鍥炴棌鍖�",
+          "娑цタ鍖�",
+          "鍚夊埄鍖�",
+          "娲涢緳鍖�",
+          "瀛熸触鍘�",
+          "鏂板畨鍘�",
+          "鏍惧窛鍘�",
+          "宓╁幙",
+          "姹濋槼鍘�",
+          "瀹滈槼鍘�",
+          "娲涘畞鍘�",
+          "浼婂窛鍘�",
+          "鍋冨笀甯�"
+        ]
+      },
+      {
+        "name": "骞抽《灞卞競",
+        "area": [
+          "鏂板崕鍖�",
+          "鍗笢鍖�",
+          "鐭抽緳鍖�",
+          "婀涙渤鍖�",
+          "瀹濅赴鍘�",
+          "鍙跺幙",
+          "椴佸北鍘�",
+          "閮忓幙",
+          "鑸為挗甯�",
+          "姹濆窞甯�"
+        ]
+      },
+      {
+        "name": "瀹夐槼甯�",
+        "area": [
+          "鏂囧嘲鍖�",
+          "鍖楀叧鍖�",
+          "娈烽兘鍖�",
+          "榫欏畨鍖�",
+          "瀹夐槼鍘�",
+          "姹ら槾鍘�",
+          "婊戝幙",
+          "鍐呴粍鍘�",
+          "鏋楀窞甯�"
+        ]
+      },
+      {
+        "name": "楣ゅ甯�",
+        "area": [
+          "楣ゅ北鍖�",
+          "灞卞煄鍖�",
+          "娣囨花鍖�",
+          "娴氬幙",
+          "娣囧幙"
+        ]
+      },
+      {
+        "name": "鏂颁埂甯�",
+        "area": [
+          "绾㈡棗鍖�",
+          "鍗花鍖�",
+          "鍑ゆ硥鍖�",
+          "鐗ч噹鍖�",
+          "鏂颁埂鍘�",
+          "鑾峰槈鍘�",
+          "鍘熼槼鍘�",
+          "寤舵触鍘�",
+          "灏佷笜鍘�",
+          "鍗緣甯�",
+          "杈夊幙甯�",
+          "闀垮灒甯�"
+        ]
+      },
+      {
+        "name": "鐒︿綔甯�",
+        "area": [
+          "瑙f斁鍖�",
+          "涓珯鍖�",
+          "椹潙鍖�",
+          "灞遍槼鍖�",
+          "淇鍘�",
+          "鍗氱埍鍘�",
+          "姝﹂櫉鍘�",
+          "娓╁幙",
+          "娌侀槼甯�",
+          "瀛熷窞甯�"
+        ]
+      },
+      {
+        "name": "婵槼甯�",
+        "area": [
+          "鍗庨緳鍖�",
+          "娓呬赴鍘�",
+          "鍗椾箰鍘�",
+          "鑼冨幙",
+          "鍙板墠鍘�",
+          "婵槼鍘�"
+        ]
+      },
+      {
+        "name": "璁告槍甯�",
+        "area": [
+          "榄忛兘鍖�",
+          "寤哄畨鍖�",
+          "閯㈤櫟鍘�",
+          "瑗勫煄鍘�",
+          "绂瑰窞甯�",
+          "闀胯憶甯�"
+        ]
+      },
+      {
+        "name": "婕渤甯�",
+        "area": [
+          "婧愭眹鍖�",
+          "閮惧煄鍖�",
+          "鍙櫟鍖�",
+          "鑸為槼鍘�",
+          "涓撮鍘�"
+        ]
+      },
+      {
+        "name": "涓夐棬宄″競",
+        "area": [
+          "婀栨花鍖�",
+          "闄曞窞鍖�",
+          "娓戞睜鍘�",
+          "鍗㈡皬鍘�",
+          "涔夐┈甯�",
+          "鐏靛疂甯�"
+        ]
+      },
+      {
+        "name": "鍗楅槼甯�",
+        "area": [
+          "瀹涘煄鍖�",
+          "鍗ч緳鍖�",
+          "鍗楀彫鍘�",
+          "鏂瑰煄鍘�",
+          "瑗垮场鍘�",
+          "闀囧钩鍘�",
+          "鍐呬埂鍘�",
+          "娣呭窛鍘�",
+          "绀炬棗鍘�",
+          "鍞愭渤鍘�",
+          "鏂伴噹鍘�",
+          "妗愭煆鍘�",
+          "閭撳窞甯�"
+        ]
+      },
+      {
+        "name": "鍟嗕笜甯�",
+        "area": [
+          "姊佸洯鍖�",
+          "鐫㈤槼鍖�",
+          "姘戞潈鍘�",
+          "鐫㈠幙",
+          "瀹侀櫟鍘�",
+          "鏌樺煄鍘�",
+          "铏炲煄鍘�",
+          "澶忛倯鍘�",
+          "姘稿煄甯�"
+        ]
+      },
+      {
+        "name": "淇¢槼甯�",
+        "area": [
+          "娴夋渤鍖�",
+          "骞虫ˉ鍖�",
+          "缃楀北鍘�",
+          "鍏夊北鍘�",
+          "鏂板幙",
+          "鍟嗗煄鍘�",
+          "鍥哄鍘�",
+          "娼㈠窛鍘�",
+          "娣花鍘�",
+          "鎭幙"
+        ]
+      },
+      {
+        "name": "鍛ㄥ彛甯�",
+        "area": [
+          "宸濇眹鍖�",
+          "鎵舵矡鍘�",
+          "娣槼鍖�",
+          "瑗垮崕鍘�",
+          "鍟嗘按鍘�",
+          "娌堜笜鍘�",
+          "閮稿煄鍘�",
+          "澶悍鍘�",
+          "楣块倯鍘�",
+          "椤瑰煄甯�"
+        ]
+      },
+      {
+        "name": "椹婚┈搴楀競",
+        "area": [
+          "椹垮煄鍖�",
+          "瑗垮钩鍘�",
+          "涓婅敗鍘�",
+          "骞宠垎鍘�",
+          "姝i槼鍘�",
+          "纭北鍘�",
+          "娉岄槼鍘�",
+          "姹濆崡鍘�",
+          "閬傚钩鍘�",
+          "鏂拌敗鍘�"
+        ]
+      },
+      {
+        "name": "娴庢簮甯�",
+        "area": [
+          "娴庢按琛楅亾",
+          "娌佸洯琛楅亾",
+          "鍖楁捣琛楅亾",
+          "澶╁潧琛楅亾",
+          "鐜夋硥琛楅亾",
+          "鍏嬩簳闀�",
+          "浜旈緳鍙i晣",
+          "姊ㄦ灄闀�",
+          "杞靛煄闀�",
+          "鎵跨暀闀�",
+          "鍧″ご闀�",
+          "澶у唱闀�",
+          "閭靛師闀�",
+          "鎬濈ぜ闀�",
+          "鐜嬪眿闀�",
+          "涓嬪喍闀�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "鍥涘窛鐪�",
+    "city": [
+      {
+        "name": "鎴愰兘甯�",
+        "area": [
+          "閿︽睙鍖�",
+          "闈掔緤鍖�",
+          "閲戠墰鍖�",
+          "姝︿警鍖�",
+          "鎴愬崕鍖�",
+          "榫欐硥椹垮尯",
+          "闈掔櫧姹熷尯",
+          "鏂伴兘鍖�",
+          "娓╂睙鍖�",
+          "鍙屾祦鍖�",
+          "閮兘鍖�",
+          "鏂版触鍖�",
+          "閲戝爞鍘�",
+          "澶ч倯鍘�",
+          "钂叉睙鍘�",
+          "閮芥睙鍫板競",
+          "褰窞甯�",
+          "閭涘磧甯�",
+          "宕囧窞甯�",
+          "绠�闃冲競",
+          "澶╁簻鍖�"
+        ]
+      },
+      {
+        "name": "鑷础甯�",
+        "area": [
+          "鑷祦浜曞尯",
+          "璐′簳鍖�",
+          "澶у畨鍖�",
+          "娌挎哗鍖�",
+          "鑽e幙",
+          "瀵岄『鍘�"
+        ]
+      },
+      {
+        "name": "鏀�鏋濊姳甯�",
+        "area": [
+          "涓滃尯",
+          "瑗垮尯",
+          "浠佸拰鍖�",
+          "绫虫槗鍘�",
+          "鐩愯竟鍘�"
+        ]
+      },
+      {
+        "name": "娉稿窞甯�",
+        "area": [
+          "姹熼槼鍖�",
+          "绾虫邯鍖�",
+          "榫欓┈娼尯",
+          "娉稿幙",
+          "鍚堟睙鍘�",
+          "鍙欐案鍘�",
+          "鍙よ敽鍘�"
+        ]
+      },
+      {
+        "name": "寰烽槼甯�",
+        "area": [
+          "鏃岄槼鍖�",
+          "缃楁睙鍖�",
+          "涓睙鍘�",
+          "骞挎眽甯�",
+          "浠�閭″競",
+          "缁电甯�"
+        ]
+      },
+      {
+        "name": "缁甸槼甯�",
+        "area": [
+          "娑煄鍖�",
+          "娓镐粰鍖�",
+          "瀹夊窞鍖�",
+          "涓夊彴鍘�",
+          "鐩愪涵鍘�",
+          "姊撴郊鍘�",
+          "鍖楀窛缇屾棌鑷不鍘�",
+          "骞虫鍘�",
+          "姹熸补甯�"
+        ]
+      },
+      {
+        "name": "骞垮厓甯�",
+        "area": [
+          "鍒╁窞鍖�",
+          "鏄寲鍖�",
+          "鏈濆ぉ鍖�",
+          "鏃鸿媿鍘�",
+          "闈掑窛鍘�",
+          "鍓戦榿鍘�",
+          "鑻嶆邯鍘�"
+        ]
+      },
+      {
+        "name": "閬傚畞甯�",
+        "area": [
+          "鑸瑰北鍖�",
+          "瀹夊眳鍖�",
+          "钃邯鍘�",
+          "澶ц嫳鍘�",
+          "灏勬椽甯�"
+        ]
+      },
+      {
+        "name": "鍐呮睙甯�",
+        "area": [
+          "甯備腑鍖�",
+          "涓滃叴鍖�",
+          "濞佽繙鍘�",
+          "璧勪腑鍘�",
+          "闅嗘槍甯�"
+        ]
+      },
+      {
+        "name": "涔愬北甯�",
+        "area": [
+          "甯備腑鍖�",
+          "娌欐咕鍖�",
+          "浜旈�氭ˉ鍖�",
+          "閲戝彛娌冲尯",
+          "鐘嶄负鍘�",
+          "浜曠爺鍘�",
+          "澶规睙鍘�",
+          "娌愬窛鍘�",
+          "宄ㄨ竟褰濇棌鑷不鍘�",
+          "椹竟褰濇棌鑷不鍘�",
+          "宄ㄧ湁灞卞競"
+        ]
+      },
+      {
+        "name": "鍗楀厖甯�",
+        "area": [
+          "椤哄簡鍖�",
+          "楂樺潽鍖�",
+          "鍢夐櫟鍖�",
+          "鍗楅儴鍘�",
+          "钀ュ北鍘�",
+          "钃畨鍘�",
+          "浠檱鍘�",
+          "瑗垮厖鍘�",
+          "闃嗕腑甯�"
+        ]
+      },
+      {
+        "name": "鐪夊北甯�",
+        "area": [
+          "涓滃潯鍖�",
+          "褰北鍖�",
+          "浠佸鍘�",
+          "娲泤鍘�",
+          "涓规1鍘�",
+          "闈掔鍘�"
+        ]
+      },
+      {
+        "name": "瀹滃甯�",
+        "area": [
+          "缈犲睆鍖�",
+          "鍗楁邯鍖�",
+          "鍙欏窞鍖�",
+          "姹熷畨鍘�",
+          "闀垮畞鍘�",
+          "楂樺幙",
+          "鐝欏幙",
+          "绛犺繛鍘�",
+          "鍏存枃鍘�",
+          "灞忓北鍘�"
+        ]
+      },
+      {
+        "name": "骞垮畨甯�",
+        "area": [
+          "骞垮畨鍖�",
+          "鍓嶉攱鍖�",
+          "宀虫睜鍘�",
+          "姝﹁儨鍘�",
+          "閭绘按鍘�",
+          "鍗庤摜甯�"
+        ]
+      },
+      {
+        "name": "杈惧窞甯�",
+        "area": [
+          "閫氬窛鍖�",
+          "杈惧窛鍖�",
+          "瀹f眽鍘�",
+          "寮�姹熷幙",
+          "澶х鍘�",
+          "娓犲幙",
+          "涓囨簮甯�"
+        ]
+      },
+      {
+        "name": "闆呭畨甯�",
+        "area": [
+          "闆ㄥ煄鍖�",
+          "鍚嶅北鍖�",
+          "鑽ョ粡鍘�",
+          "姹夋簮鍘�",
+          "鐭虫鍘�",
+          "澶╁叏鍘�",
+          "鑺﹀北鍘�",
+          "瀹濆叴鍘�"
+        ]
+      },
+      {
+        "name": "宸翠腑甯�",
+        "area": [
+          "宸村窞鍖�",
+          "鎭╅槼鍖�",
+          "閫氭睙鍘�",
+          "鍗楁睙鍘�",
+          "骞虫槍鍘�"
+        ]
+      },
+      {
+        "name": "璧勯槼甯�",
+        "area": [
+          "闆佹睙鍖�",
+          "瀹夊渤鍘�",
+          "涔愯嚦鍘�"
+        ]
+      },
+      {
+        "name": "闃垮潩钘忔棌缇屾棌鑷不宸�",
+        "area": [
+          "椹皵搴峰競",
+          "姹跺窛鍘�",
+          "鐞嗗幙",
+          "鑼傚幙",
+          "鏉炬綐鍘�",
+          "涔濆娌熷幙",
+          "閲戝窛鍘�",
+          "灏忛噾鍘�",
+          "榛戞按鍘�",
+          "澹ゅ鍘�",
+          "闃垮潩鍘�",
+          "鑻ュ皵鐩栧幙",
+          "绾㈠師鍘�"
+        ]
+      },
+      {
+        "name": "鐢樺瓬钘忔棌鑷不宸�",
+        "area": [
+          "搴峰畾甯�",
+          "娉稿畾鍘�",
+          "涓瑰反鍘�",
+          "涔濋緳鍘�",
+          "闆呮睙鍘�",
+          "閬撳瓪鍘�",
+          "鐐夐湇鍘�",
+          "鐢樺瓬鍘�",
+          "鏂伴緳鍘�",
+          "寰锋牸鍘�",
+          "鐧界帀鍘�",
+          "鐭虫笭鍘�",
+          "鑹茶揪鍘�",
+          "鐞嗗鍘�",
+          "宸村鍘�",
+          "涔″煄鍘�",
+          "绋诲煄鍘�",
+          "寰楄崳鍘�"
+        ]
+      },
+      {
+        "name": "鍑夊北褰濇棌鑷不宸�",
+        "area": [
+          "瑗挎槍甯�",
+          "鏈ㄩ噷钘忔棌鑷不鍘�",
+          "鐩愭簮鍘�",
+          "寰锋槍鍘�",
+          "浼氱悊鍘�",
+          "浼氫笢鍘�",
+          "瀹佸崡鍘�",
+          "鏅牸鍘�",
+          "甯冩嫋鍘�",
+          "閲戦槼鍘�",
+          "鏄鍘�",
+          "鍠滃痉鍘�",
+          "鍐曞畞鍘�",
+          "瓒婅タ鍘�",
+          "鐢樻礇鍘�",
+          "缇庡鍘�",
+          "闆锋尝鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "婀栧寳鐪�",
+    "city": [
+      {
+        "name": "姝︽眽甯�",
+        "area": [
+          "姹熷哺鍖�",
+          "姹熸眽鍖�",
+          "纭氬彛鍖�",
+          "姹夐槼鍖�",
+          "姝︽槍鍖�",
+          "闈掑北鍖�",
+          "娲北鍖�",
+          "涓滆タ婀栧尯",
+          "姹夊崡鍖�",
+          "钄$敻鍖�",
+          "姹熷鍖�",
+          "榛勯檪鍖�",
+          "鏂版床鍖�"
+        ]
+      },
+      {
+        "name": "榛勭煶甯�",
+        "area": [
+          "榛勭煶娓尯",
+          "瑗垮灞卞尯",
+          "涓嬮檰鍖�",
+          "閾佸北鍖�",
+          "闃虫柊鍘�",
+          "澶у喍甯�"
+        ]
+      },
+      {
+        "name": "鍗佸牥甯�",
+        "area": [
+          "鑼呯鍖�",
+          "寮犳咕鍖�",
+          "閮ч槼鍖�",
+          "閮цタ鍘�",
+          "绔瑰北鍘�",
+          "绔规邯鍘�",
+          "鎴垮幙",
+          "涓规睙鍙e競"
+        ]
+      },
+      {
+        "name": "瀹滄槍甯�",
+        "area": [
+          "瑗块櫟鍖�",
+          "浼嶅宀楀尯",
+          "鐐瑰啗鍖�",
+          "鐚囦涵鍖�",
+          "澶烽櫟鍖�",
+          "杩滃畨鍘�",
+          "鍏村北鍘�",
+          "绉綊鍘�",
+          "闀块槼鍦熷鏃忚嚜娌诲幙",
+          "浜斿嘲鍦熷鏃忚嚜娌诲幙",
+          "瀹滈兘甯�",
+          "褰撻槼甯�",
+          "鏋濇睙甯�"
+        ]
+      },
+      {
+        "name": "瑗勯槼甯�",
+        "area": [
+          "瑗勫煄鍖�",
+          "妯婂煄鍖�",
+          "瑗勫窞鍖�",
+          "鍗楁汲鍘�",
+          "璋峰煄鍘�",
+          "淇濆悍鍘�",
+          "鑰佹渤鍙e競",
+          "鏋i槼甯�",
+          "瀹滃煄甯�"
+        ]
+      },
+      {
+        "name": "閯傚窞甯�",
+        "area": [
+          "姊佸瓙婀栧尯",
+          "鍗庡鍖�",
+          "閯傚煄鍖�"
+        ]
+      },
+      {
+        "name": "鑽嗛棬甯�",
+        "area": [
+          "涓滃疂鍖�",
+          "鎺囧垁鍖�",
+          "娌欐磱鍘�",
+          "閽熺ゥ甯�",
+          "浜北甯�"
+        ]
+      },
+      {
+        "name": "瀛濇劅甯�",
+        "area": [
+          "瀛濆崡鍖�",
+          "瀛濇槍鍘�",
+          "澶ф偀鍘�",
+          "浜戞ⅵ鍘�",
+          "搴斿煄甯�",
+          "瀹夐檰甯�",
+          "姹夊窛甯�"
+        ]
+      },
+      {
+        "name": "鑽嗗窞甯�",
+        "area": [
+          "娌欏競鍖�",
+          "鑽嗗窞鍖�",
+          "鍏畨鍘�",
+          "鐩戝埄鍘�",
+          "姹熼櫟鍘�",
+          "鐭抽甯�",
+          "娲箹甯�",
+          "鏉炬粙甯�"
+        ]
+      },
+      {
+        "name": "榛勫唸甯�",
+        "area": [
+          "榛勫窞鍖�",
+          "鍥㈤鍘�",
+          "绾㈠畨鍘�",
+          "缃楃敯鍘�",
+          "鑻卞北鍘�",
+          "娴犳按鍘�",
+          "钑叉槬鍘�",
+          "榛勬鍘�",
+          "楹诲煄甯�",
+          "姝︾┐甯�"
+        ]
+      },
+      {
+        "name": "鍜稿畞甯�",
+        "area": [
+          "鍜稿畨鍖�",
+          "鍢夐奔鍘�",
+          "閫氬煄鍘�",
+          "宕囬槼鍘�",
+          "閫氬北鍘�",
+          "璧ゅ甯�"
+        ]
+      },
+      {
+        "name": "闅忓窞甯�",
+        "area": [
+          "鏇鹃兘鍖�",
+          "闅忓幙",
+          "骞挎按甯�"
+        ]
+      },
+      {
+        "name": "鎭╂柦鍦熷鏃忚嫍鏃忚嚜娌诲窞",
+        "area": [
+          "鎭╂柦甯�",
+          "鍒╁窛甯�",
+          "寤哄鍘�",
+          "宸翠笢鍘�",
+          "瀹f仼鍘�",
+          "鍜镐赴鍘�",
+          "鏉ュ嚖鍘�",
+          "楣ゅ嘲鍘�"
+        ]
+      },
+      {
+        "name": "浠欐甯�",
+        "area": [
+          "骞叉渤琛楅亾",
+          "榫欏崕灞辫閬�",
+          "娌欏槾琛楅亾",
+          "閮戝満闀�",
+          "姣涘槾闀�",
+          "鍓呮渤闀�",
+          "涓変紡娼晣",
+          "鑳″満闀�",
+          "闀垮煫鍙i晣",
+          "瑗挎祦娌抽晣",
+          "褰満闀�",
+          "娌欐箹闀�",
+          "鏉ㄦ灄灏鹃晣",
+          "寮犳矡闀�",
+          "閮渤闀�",
+          "娌斿煄鍥炴棌闀�",
+          "閫氭捣鍙i晣",
+          "闄堝満闀�",
+          "浠欐缁忔祹寮�鍙戝尯",
+          "浠欐宸ヤ笟鍥�",
+          "娌欐箹鍘熺鍦�",
+          "涔濆悎鍨稿師绉嶅満",
+          "鎺掓箹椋庢櫙鍖�"
+        ]
+      },
+      {
+        "name": "娼滄睙甯�",
+        "area": [
+          "鍥灄鍔炰簨澶�",
+          "骞垮崕鍔炰簨澶�",
+          "鏉ㄥ競鍔炰簨澶�",
+          "鍛ㄧ煻鍔炰簨澶�",
+          "娉颁赴鍔炰簨澶�",
+          "楂樺満鍔炰簨澶�",
+          "鐔婂彛闀�",
+          "楂樼煶纰戦晣",
+          "鑰佹柊闀�",
+          "鐜嬪満闀�",
+          "娓旀磱闀�",
+          "榫欐咕闀�",
+          "娴╁彛闀�",
+          "绉帀鍙i晣",
+          "寮犻噾闀�",
+          "鐧介弓婀栫鐞嗗尯",
+          "鎬诲彛绠$悊鍖�",
+          "鐔婂彛鍐滃満绠$悊鍖�",
+          "杩愮伯婀栫鐞嗗尯",
+          "鍚庢箹绠$悊鍖�",
+          "鍛ㄧ煻绠$悊鍖�",
+          "绔规牴婊╅晣"
+        ]
+      },
+      {
+        "name": "澶╅棬甯�",
+        "area": [
+          "绔熼櫟琛楅亾",
+          "鍊欏彛琛楅亾",
+          "鏉ㄦ灄琛楅亾",
+          "澶氬疂闀�",
+          "鎷栧競闀�",
+          "寮犳腐闀�",
+          "钂嬪満闀�",
+          "姹満闀�",
+          "娓旇柂闀�",
+          "榛勬江闀�",
+          "宀冲彛闀�",
+          "妯灄闀�",
+          "褰競闀�",
+          "楹绘磱闀�",
+          "澶氱ゥ闀�",
+          "骞查┛闀�",
+          "椹咕闀�",
+          "鍗㈠競闀�",
+          "灏忔澘闀�",
+          "涔濈湡闀�",
+          "鐨傚競闀�",
+          "鑳″競闀�",
+          "鐭冲娌抽晣",
+          "浣涘瓙灞遍晣",
+          "鍑�娼埂"
+        ]
+      },
+      {
+        "name": "绁炲啘鏋舵灄鍖�",
+        "area": [
+          "鏉炬煆闀�",
+          "闃虫棩闀�",
+          "鏈ㄩ奔闀�",
+          "绾㈠潽闀�",
+          "鏂板崕闀�",
+          "澶т節婀栭晣",
+          "瀹嬫礇涔�",
+          "涓嬭胺鍧湡瀹舵棌涔�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "婀栧崡鐪�",
+    "city": [
+      {
+        "name": "闀挎矙甯�",
+        "area": [
+          "鑺欒搲鍖�",
+          "澶╁績鍖�",
+          "宀抽簱鍖�",
+          "寮�绂忓尯",
+          "闆ㄨ姳鍖�",
+          "鏈涘煄鍖�",
+          "闀挎矙鍘�",
+          "娴忛槼甯�",
+          "瀹佷埂甯�"
+        ]
+      },
+      {
+        "name": "鏍床甯�",
+        "area": [
+          "鑽峰鍖�",
+          "鑺︽窞鍖�",
+          "鐭冲嘲鍖�",
+          "澶╁厓鍖�",
+          "娓屽彛鍖�",
+          "鏀稿幙",
+          "鑼堕櫟鍘�",
+          "鐐庨櫟鍘�",
+          "閱撮櫟甯�",
+          "浜戦緳绀鸿寖鍖�"
+        ]
+      },
+      {
+        "name": "婀樻江甯�",
+        "area": [
+          "闆ㄦ箹鍖�",
+          "宀冲鍖�",
+          "婀樻江鍘�",
+          "婀樹埂甯�",
+          "闊跺北甯�"
+        ]
+      },
+      {
+        "name": "琛¢槼甯�",
+        "area": [
+          "鐝犳櫀鍖�",
+          "闆佸嘲鍖�",
+          "鐭抽紦鍖�",
+          "钂告箻鍖�",
+          "鍗楀渤鍖�",
+          "琛¢槼鍘�",
+          "琛″崡鍘�",
+          "琛″北鍘�",
+          "琛′笢鍘�",
+          "绁佷笢鍘�",
+          "鑰掗槼甯�",
+          "甯稿畞甯�"
+        ]
+      },
+      {
+        "name": "閭甸槼甯�",
+        "area": [
+          "鍙屾竻鍖�",
+          "澶хゥ鍖�",
+          "鍖楀鍖�",
+          "鏂伴偟鍘�",
+          "閭甸槼鍘�",
+          "闅嗗洖鍘�",
+          "娲炲彛鍘�",
+          "缁ュ畞鍘�",
+          "鏂板畞鍘�",
+          "鍩庢鑻楁棌鑷不鍘�",
+          "姝﹀唸甯�",
+          "閭典笢甯�"
+        ]
+      },
+      {
+        "name": "宀抽槼甯�",
+        "area": [
+          "宀抽槼妤煎尯",
+          "浜戞邯鍖�",
+          "鍚涘北鍖�",
+          "宀抽槼鍘�",
+          "鍗庡鍘�",
+          "婀橀槾鍘�",
+          "骞虫睙鍘�",
+          "姹ㄧ綏甯�",
+          "涓存箻甯�"
+        ]
+      },
+      {
+        "name": "甯稿痉甯�",
+        "area": [
+          "姝﹂櫟鍖�",
+          "榧庡煄鍖�",
+          "瀹変埂鍘�",
+          "姹夊鍘�",
+          "婢у幙",
+          "涓存晶鍘�",
+          "妗冩簮鍘�",
+          "鐭抽棬鍘�",
+          "娲ュ競甯�"
+        ]
+      },
+      {
+        "name": "寮犲鐣屽競",
+        "area": [
+          "姘稿畾鍖�",
+          "姝﹂櫟婧愬尯",
+          "鎱堝埄鍘�",
+          "妗戞鍘�"
+        ]
+      },
+      {
+        "name": "鐩婇槼甯�",
+        "area": [
+          "璧勯槼鍖�",
+          "璧北鍖�",
+          "鍗楀幙",
+          "妗冩睙鍘�",
+          "瀹夊寲鍘�",
+          "娌呮睙甯�"
+        ]
+      },
+      {
+        "name": "閮村窞甯�",
+        "area": [
+          "鍖楁箹鍖�",
+          "鑻忎粰鍖�",
+          "妗傞槼鍘�",
+          "瀹滅珷鍘�",
+          "姘稿叴鍘�",
+          "鍢夌鍘�",
+          "涓存鍘�",
+          "姹濆煄鍘�",
+          "妗備笢鍘�",
+          "瀹変粊鍘�",
+          "璧勫叴甯�"
+        ]
+      },
+      {
+        "name": "姘稿窞甯�",
+        "area": [
+          "闆堕櫟鍖�",
+          "鍐锋按婊╁尯",
+          "绁侀槼鍘�",
+          "涓滃畨鍘�",
+          "鍙岀墝鍘�",
+          "閬撳幙",
+          "姹熸案鍘�",
+          "瀹佽繙鍘�",
+          "钃濆北鍘�",
+          "鏂扮敯鍘�",
+          "姹熷崕鐟舵棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "鎬�鍖栧競",
+        "area": [
+          "楣ゅ煄鍖�",
+          "涓柟鍘�",
+          "娌呴櫟鍘�",
+          "杈版邯鍘�",
+          "婧嗘郸鍘�",
+          "浼氬悓鍘�",
+          "楹婚槼鑻楁棌鑷不鍘�",
+          "鏂版檭渚楁棌鑷不鍘�",
+          "鑺锋睙渚楁棌鑷不鍘�",
+          "闈栧窞鑻楁棌渚楁棌鑷不鍘�",
+          "閫氶亾渚楁棌鑷不鍘�",
+          "娲睙甯�"
+        ]
+      },
+      {
+        "name": "濞勫簳甯�",
+        "area": [
+          "濞勬槦鍖�",
+          "鍙屽嘲鍘�",
+          "鏂板寲鍘�",
+          "鍐锋按姹熷競",
+          "娑熸簮甯�"
+        ]
+      },
+      {
+        "name": "婀樿タ鍦熷鏃忚嫍鏃忚嚜娌诲窞",
+        "area": [
+          "鍚夐甯�",
+          "娉告邯鍘�",
+          "鍑ゅ嚢鍘�",
+          "鑺卞灒鍘�",
+          "淇濋潠鍘�",
+          "鍙や笀鍘�",
+          "姘搁『鍘�",
+          "榫欏北鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "娌冲寳鐪�",
+    "city": [
+      {
+        "name": "鐭冲搴勫競",
+        "area": [
+          "闀垮畨鍖�",
+          "妗ヨタ鍖�",
+          "鏂板崕鍖�",
+          "浜曢檳鐭垮尯",
+          "瑁曞崕鍖�",
+          "钘佸煄鍖�",
+          "楣挎硥鍖�",
+          "鏍惧煄鍖�",
+          "浜曢檳鍘�",
+          "姝e畾鍘�",
+          "琛屽攼鍘�",
+          "鐏靛鍘�",
+          "楂橀倯鍘�",
+          "娣辨辰鍘�",
+          "璧炵殗鍘�",
+          "鏃犳瀬鍘�",
+          "骞冲北鍘�",
+          "鍏冩皬鍘�",
+          "璧靛幙",
+          "杈涢泦甯�",
+          "鏅嬪窞甯�",
+          "鏂颁箰甯�"
+        ]
+      },
+      {
+        "name": "鍞愬北甯�",
+        "area": [
+          "璺崡鍖�",
+          "璺寳鍖�",
+          "鍙ゅ喍鍖�",
+          "寮�骞冲尯",
+          "涓板崡鍖�",
+          "涓版鼎鍖�",
+          "鏇瑰鐢稿尯",
+          "婊﹀窞甯�",
+          "婊﹀崡鍘�",
+          "涔愪涵鍘�",
+          "杩佽タ鍘�",
+          "鐜夌敯鍘�",
+          "閬靛寲甯�",
+          "杩佸畨甯�"
+        ]
+      },
+      {
+        "name": "绉︾殗宀涘競",
+        "area": [
+          "娴锋腐鍖�",
+          "灞辨捣鍏冲尯",
+          "鍖楁埓娌冲尯",
+          "鎶氬畞鍖�",
+          "闈掗緳婊℃棌鑷不鍘�",
+          "鏄岄粠鍘�",
+          "鍗㈤緳鍘�"
+        ]
+      },
+      {
+        "name": "閭兏甯�",
+        "area": [
+          "閭北鍖�",
+          "涓涘彴鍖�",
+          "澶嶅叴鍖�",
+          "宄板嘲鐭垮尯",
+          "鑲ヤ埂鍖�",
+          "姘稿勾鍖�",
+          "涓存汲鍘�",
+          "鎴愬畨鍘�",
+          "澶у悕鍘�",
+          "娑夊幙",
+          "纾佸幙",
+          "閭卞幙",
+          "楦℃辰鍘�",
+          "骞垮钩鍘�",
+          "棣嗛櫠鍘�",
+          "榄忓幙",
+          "鏇插懆鍘�",
+          "姝﹀畨甯�"
+        ]
+      },
+      {
+        "name": "閭㈠彴甯�",
+        "area": [
+          "瑗勯兘鍖�",
+          "淇¢兘鍖�",
+          "浠绘辰鍖�",
+          "鍗楀拰鍖�",
+          "涓村煄鍘�",
+          "鍐呬笜鍘�",
+          "鏌忎埂鍘�",
+          "闅嗗哀鍘�",
+          "瀹佹檵鍘�",
+          "宸ㄩ箍鍘�",
+          "鏂版渤鍘�",
+          "骞垮畻鍘�",
+          "骞充埂鍘�",
+          "濞佸幙",
+          "娓呮渤鍘�",
+          "涓磋タ鍘�",
+          "鍗楀甯�",
+          "娌欐渤甯�"
+        ]
+      },
+      {
+        "name": "淇濆畾甯�",
+        "area": [
+          "绔炵鍖�",
+          "鑾叉睜鍖�",
+          "婊″煄鍖�",
+          "娓呰嫅鍖�",
+          "寰愭按鍖�",
+          "娑炴按鍘�",
+          "闃滃钩鍘�",
+          "瀹氬叴鍘�",
+          "鍞愬幙",
+          "楂橀槼鍘�",
+          "瀹瑰煄鍘�",
+          "娑炴簮鍘�",
+          "鏈涢兘鍘�",
+          "瀹夋柊鍘�",
+          "鏄撳幙",
+          "鏇查槼鍘�",
+          "锠″幙",
+          "椤哄钩鍘�",
+          "鍗氶噹鍘�",
+          "闆勫幙",
+          "娑垮窞甯�",
+          "瀹氬窞甯�",
+          "瀹夊浗甯�",
+          "楂樼搴楀競"
+        ]
+      },
+      {
+        "name": "寮犲鍙e競",
+        "area": [
+          "妗ヤ笢鍖�",
+          "妗ヨタ鍖�",
+          "瀹e寲鍖�",
+          "涓嬭姳鍥尯",
+          "涓囧叏鍖�",
+          "宕囩ぜ鍖�",
+          "寮犲寳鍘�",
+          "搴蜂繚鍘�",
+          "娌芥簮鍘�",
+          "灏氫箟鍘�",
+          "钄氬幙",
+          "闃冲師鍘�",
+          "鎬�瀹夊幙",
+          "鎬�鏉ュ幙",
+          "娑块箍鍘�",
+          "璧ゅ煄鍘�"
+        ]
+      },
+      {
+        "name": "鎵垮痉甯�",
+        "area": [
+          "鍙屾ˉ鍖�",
+          "鍙屾沪鍖�",
+          "楣版墜钀ュ瓙鐭垮尯",
+          "鎵垮痉鍘�",
+          "鍏撮殕鍘�",
+          "婊﹀钩鍘�",
+          "闅嗗寲鍘�",
+          "涓板畞婊℃棌鑷不鍘�",
+          "瀹藉煄婊℃棌鑷不鍘�",
+          "鍥村満婊℃棌钂欏彜鏃忚嚜娌诲幙",
+          "骞虫硥甯�"
+        ]
+      },
+      {
+        "name": "娌у窞甯�",
+        "area": [
+          "鏂板崕鍖�",
+          "杩愭渤鍖�",
+          "娌у幙",
+          "闈掑幙",
+          "涓滃厜鍘�",
+          "娴峰叴鍘�",
+          "鐩愬北鍘�",
+          "鑲冨畞鍘�",
+          "鍗楃毊鍘�",
+          "鍚存ˉ鍘�",
+          "鐚幙",
+          "瀛熸潙鍥炴棌鑷不鍘�",
+          "娉婂ご甯�",
+          "浠讳笜甯�",
+          "榛勯獏甯�",
+          "娌抽棿甯�"
+        ]
+      },
+      {
+        "name": "寤婂潑甯�",
+        "area": [
+          "瀹夋鍖�",
+          "骞块槼鍖�",
+          "鍥哄畨鍘�",
+          "姘告竻鍘�",
+          "棣欐渤鍘�",
+          "澶у煄鍘�",
+          "鏂囧畨鍘�",
+          "澶у巶鍥炴棌鑷不鍘�",
+          "闇稿窞甯�",
+          "涓夋渤甯�"
+        ]
+      },
+      {
+        "name": "琛℃按甯�",
+        "area": [
+          "妗冨煄鍖�",
+          "鍐�宸炲尯",
+          "鏋e己鍘�",
+          "姝﹂倯鍘�",
+          "姝﹀己鍘�",
+          "楗堕槼鍘�",
+          "瀹夊钩鍘�",
+          "鏁呭煄鍘�",
+          "鏅幙",
+          "闃滃煄鍘�",
+          "娣卞窞甯�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "绂忓缓鐪�",
+    "city": [
+      {
+        "name": "绂忓窞甯�",
+        "area": [
+          "榧撴ゼ鍖�",
+          "鍙版睙鍖�",
+          "浠撳北鍖�",
+          "椹熬鍖�",
+          "鏅嬪畨鍖�",
+          "闀夸箰鍖�",
+          "闂戒警鍘�",
+          "杩炴睙鍘�",
+          "缃楁簮鍘�",
+          "闂芥竻鍘�",
+          "姘告嘲鍘�",
+          "骞虫江鍘�",
+          "绂忔竻甯�",
+          "楂樻柊鎶�鏈骇涓氬紑鍙戝尯"
+        ]
+      },
+      {
+        "name": "鍘﹂棬甯�",
+        "area": [
+          "鎬濇槑鍖�",
+          "娴锋钵鍖�",
+          "婀栭噷鍖�",
+          "闆嗙編鍖�",
+          "鍚屽畨鍖�",
+          "缈斿畨鍖�"
+        ]
+      },
+      {
+        "name": "鑾嗙敯甯�",
+        "area": [
+          "鍩庡帰鍖�",
+          "娑垫睙鍖�",
+          "鑽斿煄鍖�",
+          "绉�灞垮尯",
+          "浠欐父鍘�"
+        ]
+      },
+      {
+        "name": "涓夋槑甯�",
+        "area": [
+          "姊呭垪鍖�",
+          "涓夊厓鍖�",
+          "鏄庢邯鍘�",
+          "娓呮祦鍘�",
+          "瀹佸寲鍘�",
+          "澶х敯鍘�",
+          "灏ゆ邯鍘�",
+          "娌欏幙",
+          "灏嗕箰鍘�",
+          "娉板畞鍘�",
+          "寤哄畞鍘�",
+          "姘稿畨甯�"
+        ]
+      },
+      {
+        "name": "娉夊窞甯�",
+        "area": [
+          "椴ゅ煄鍖�",
+          "涓版辰鍖�",
+          "娲涙睙鍖�",
+          "娉夋腐鍖�",
+          "鎯犲畨鍘�",
+          "瀹夋邯鍘�",
+          "姘告槬鍘�",
+          "寰峰寲鍘�",
+          "閲戦棬鍘�",
+          "鐭崇嫯甯�",
+          "鏅嬫睙甯�",
+          "鍗楀畨甯�"
+        ]
+      },
+      {
+        "name": "婕冲窞甯�",
+        "area": [
+          "鑺楀煄鍖�",
+          "榫欐枃鍖�",
+          "浜戦渼鍘�",
+          "婕虫郸鍘�",
+          "璇忓畨鍘�",
+          "闀挎嘲鍘�",
+          "涓滃北鍘�",
+          "鍗楅潠鍘�",
+          "骞冲拰鍘�",
+          "鍗庡畨鍘�",
+          "榫欐捣甯�"
+        ]
+      },
+      {
+        "name": "鍗楀钩甯�",
+        "area": [
+          "寤跺钩鍖�",
+          "寤洪槼鍖�",
+          "椤烘槍鍘�",
+          "娴﹀煄鍘�",
+          "鍏夋辰鍘�",
+          "鏉炬邯鍘�",
+          "鏀垮拰鍘�",
+          "閭垫甯�",
+          "姝﹀し灞卞競",
+          "寤虹摨甯�"
+        ]
+      },
+      {
+        "name": "榫欏博甯�",
+        "area": [
+          "鏂扮綏鍖�",
+          "姘稿畾鍖�",
+          "闀挎眬鍘�",
+          "涓婃澀鍘�",
+          "姝﹀钩鍘�",
+          "杩炲煄鍘�",
+          "婕冲钩甯�"
+        ]
+      },
+      {
+        "name": "瀹佸痉甯�",
+        "area": [
+          "钑夊煄鍖�",
+          "闇炴郸鍘�",
+          "鍙ょ敯鍘�",
+          "灞忓崡鍘�",
+          "瀵垮畞鍘�",
+          "鍛ㄥ畞鍘�",
+          "鏌樿崳鍘�",
+          "绂忓畨甯�",
+          "绂忛紟甯�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "瀹夊窘鐪�",
+    "city": [
+      {
+        "name": "鍚堣偉甯�",
+        "area": [
+          "鐟舵捣鍖�",
+          "搴愰槼鍖�",
+          "铚�灞卞尯",
+          "鍖呮渤鍖�",
+          "闀夸赴鍘�",
+          "鑲ヤ笢鍘�",
+          "鑲ヨタ鍘�",
+          "搴愭睙鍘�",
+          "宸㈡箹甯�"
+        ]
+      },
+      {
+        "name": "鑺滄箹甯�",
+        "area": [
+          "闀滄箹鍖�",
+          "寮嬫睙鍖�",
+          "楦犳睙鍖�",
+          "涓夊北鍖�",
+          "鑺滄箹鍘�",
+          "绻佹槍鍘�",
+          "鍗楅櫟鍘�",
+          "鏃犱负甯�"
+        ]
+      },
+      {
+        "name": "铓屽煚甯�",
+        "area": [
+          "榫欏瓙婀栧尯",
+          "铓屽北鍖�",
+          "绂逛細鍖�",
+          "娣笂鍖�",
+          "鎬�杩滃幙",
+          "浜旀渤鍘�",
+          "鍥洪晣鍘�"
+        ]
+      },
+      {
+        "name": "娣崡甯�",
+        "area": [
+          "澶ч�氬尯",
+          "鐢板搴靛尯",
+          "璋㈠闆嗗尯",
+          "鍏叕灞卞尯",
+          "娼橀泦鍖�",
+          "鍑ゅ彴鍘�",
+          "瀵垮幙"
+        ]
+      },
+      {
+        "name": "椹瀺灞卞競",
+        "area": [
+          "鑺卞北鍖�",
+          "闆ㄥ北鍖�",
+          "鍗氭湜鍖�",
+          "褰撴秱鍘�",
+          "鍚北鍘�",
+          "鍜屽幙"
+        ]
+      },
+      {
+        "name": "娣寳甯�",
+        "area": [
+          "鏉滈泦鍖�",
+          "鐩稿北鍖�",
+          "鐑堝北鍖�",
+          "婵夋邯鍘�"
+        ]
+      },
+      {
+        "name": "閾滈櫟甯�",
+        "area": [
+          "閾滃畼鍖�",
+          "涔夊畨鍖�",
+          "閮婂尯",
+          "鏋為槼鍘�"
+        ]
+      },
+      {
+        "name": "瀹夊簡甯�",
+        "area": [
+          "杩庢睙鍖�",
+          "澶ц鍖�",
+          "瀹滅鍖�",
+          "鎬�瀹佸幙",
+          "澶箹鍘�",
+          "瀹挎澗鍘�",
+          "鏈涙睙鍘�",
+          "宀宠タ鍘�",
+          "妗愬煄甯�",
+          "娼滃北甯�"
+        ]
+      },
+      {
+        "name": "榛勫北甯�",
+        "area": [
+          "灞邯鍖�",
+          "榛勫北鍖�",
+          "寰藉窞鍖�",
+          "姝欏幙",
+          "浼戝畞鍘�",
+          "榛熷幙",
+          "绁侀棬鍘�"
+        ]
+      },
+      {
+        "name": "婊佸窞甯�",
+        "area": [
+          "鐞呯悐鍖�",
+          "鍗楄隘鍖�",
+          "鏉ュ畨鍘�",
+          "鍏ㄦ鍘�",
+          "瀹氳繙鍘�",
+          "鍑ら槼鍘�",
+          "澶╅暱甯�",
+          "鏄庡厜甯�"
+        ]
+      },
+      {
+        "name": "闃滈槼甯�",
+        "area": [
+          "棰嶅窞鍖�",
+          "棰嶄笢鍖�",
+          "棰嶆硥鍖�",
+          "涓存硥鍘�",
+          "澶拰鍘�",
+          "闃滃崡鍘�",
+          "棰嶄笂鍘�",
+          "鐣岄甯�"
+        ]
+      },
+      {
+        "name": "瀹垮窞甯�",
+        "area": [
+          "鍩囨ˉ鍖�",
+          "鐮�灞卞幙",
+          "钀у幙",
+          "鐏电挧鍘�",
+          "娉楀幙"
+        ]
+      },
+      {
+        "name": "鍏畨甯�",
+        "area": [
+          "閲戝畨鍖�",
+          "瑁曞畨鍖�",
+          "鍙堕泦鍖�",
+          "闇嶉偙鍘�",
+          "鑸掑煄鍘�",
+          "閲戝鍘�",
+          "闇嶅北鍘�"
+        ]
+      },
+      {
+        "name": "浜冲窞甯�",
+        "area": [
+          "璋煄鍖�",
+          "娑¢槼鍘�",
+          "钂欏煄鍘�",
+          "鍒╄緵鍘�"
+        ]
+      },
+      {
+        "name": "姹犲窞甯�",
+        "area": [
+          "璐垫睜鍖�",
+          "涓滆嚦鍘�",
+          "鐭冲彴鍘�",
+          "闈掗槼鍘�"
+        ]
+      },
+      {
+        "name": "瀹e煄甯�",
+        "area": [
+          "瀹e窞鍖�",
+          "閮庢邯鍘�",
+          "娉惧幙",
+          "缁╂邯鍘�",
+          "鏃屽痉鍘�",
+          "瀹佸浗甯�",
+          "骞垮痉甯�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "杈藉畞鐪�",
+    "city": [
+      {
+        "name": "娌堥槼甯�",
+        "area": [
+          "鍜屽钩鍖�",
+          "娌堟渤鍖�",
+          "澶т笢鍖�",
+          "鐨囧鍖�",
+          "閾佽タ鍖�",
+          "鑻忓灞尯",
+          "娴戝崡鍖�",
+          "娌堝寳鍖�",
+          "浜庢椽鍖�",
+          "杈戒腑鍖�",
+          "搴峰钩鍘�",
+          "娉曞簱鍘�",
+          "鏂版皯甯�"
+        ]
+      },
+      {
+        "name": "澶ц繛甯�",
+        "area": [
+          "涓北鍖�",
+          "瑗垮矖鍖�",
+          "娌欐渤鍙e尯",
+          "鐢樹簳瀛愬尯",
+          "鏃呴『鍙e尯",
+          "閲戝窞鍖�",
+          "鏅叞搴楀尯",
+          "闀挎捣鍘�",
+          "鐡︽埧搴楀競",
+          "搴勬渤甯�"
+        ]
+      },
+      {
+        "name": "闉嶅北甯�",
+        "area": [
+          "閾佷笢鍖�",
+          "閾佽タ鍖�",
+          "绔嬪北鍖�",
+          "鍗冨北鍖�",
+          "鍙板畨鍘�",
+          "宀博婊℃棌鑷不鍘�",
+          "娴峰煄甯�"
+        ]
+      },
+      {
+        "name": "鎶氶『甯�",
+        "area": [
+          "鏂版姎鍖�",
+          "涓滄床鍖�",
+          "鏈涜姳鍖�",
+          "椤哄煄鍖�",
+          "鎶氶『鍘�",
+          "鏂板婊℃棌鑷不鍘�",
+          "娓呭師婊℃棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "鏈邯甯�",
+        "area": [
+          "骞冲北鍖�",
+          "婧箹鍖�",
+          "鏄庡北鍖�",
+          "鍗楄姮鍖�",
+          "鏈邯婊℃棌鑷不鍘�",
+          "妗撲粊婊℃棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "涓逛笢甯�",
+        "area": [
+          "鍏冨疂鍖�",
+          "鎸叴鍖�",
+          "鎸畨鍖�",
+          "瀹界敻婊℃棌鑷不鍘�",
+          "涓滄腐甯�",
+          "鍑ゅ煄甯�"
+        ]
+      },
+      {
+        "name": "閿﹀窞甯�",
+        "area": [
+          "鍙ゅ鍖�",
+          "鍑屾渤鍖�",
+          "澶拰鍖�",
+          "榛戝北鍘�",
+          "涔夊幙",
+          "鍑屾捣甯�",
+          "鍖楅晣甯�"
+        ]
+      },
+      {
+        "name": "钀ュ彛甯�",
+        "area": [
+          "绔欏墠鍖�",
+          "瑗垮競鍖�",
+          "椴呴奔鍦堝尯",
+          "鑰佽竟鍖�",
+          "鐩栧窞甯�",
+          "澶х煶妗ュ競"
+        ]
+      },
+      {
+        "name": "闃滄柊甯�",
+        "area": [
+          "娴峰窞鍖�",
+          "鏂伴偙鍖�",
+          "澶钩鍖�",
+          "娓呮渤闂ㄥ尯",
+          "缁嗘渤鍖�",
+          "闃滄柊钂欏彜鏃忚嚜娌诲幙",
+          "褰版鍘�"
+        ]
+      },
+      {
+        "name": "杈介槼甯�",
+        "area": [
+          "鐧藉鍖�",
+          "鏂囧湥鍖�",
+          "瀹忎紵鍖�",
+          "寮撻暱宀尯",
+          "澶瓙娌冲尯",
+          "杈介槼鍘�",
+          "鐏甯�"
+        ]
+      },
+      {
+        "name": "鐩橀敠甯�",
+        "area": [
+          "鍙屽彴瀛愬尯",
+          "鍏撮殕鍙板尯",
+          "澶ф醇鍖�",
+          "鐩樺北鍘�"
+        ]
+      },
+      {
+        "name": "閾佸箔甯�",
+        "area": [
+          "閾跺窞鍖�",
+          "娓呮渤鍖�",
+          "閾佸箔鍘�",
+          "瑗夸赴鍘�",
+          "鏄屽浘鍘�",
+          "璋冨叺灞卞競",
+          "寮�鍘熷競"
+        ]
+      },
+      {
+        "name": "鏈濋槼甯�",
+        "area": [
+          "鍙屽鍖�",
+          "榫欏煄鍖�",
+          "鏈濋槼鍘�",
+          "寤哄钩鍘�",
+          "鍠�鍠囨瞾宸︾考钂欏彜鏃忚嚜娌诲幙",
+          "鍖楃エ甯�",
+          "鍑屾簮甯�"
+        ]
+      },
+      {
+        "name": "钁姦宀涘競",
+        "area": [
+          "杩炲北鍖�",
+          "榫欐腐鍖�",
+          "鍗楃エ鍖�",
+          "缁ヤ腑鍘�",
+          "寤烘槍鍘�",
+          "鍏村煄甯�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "闄曡タ鐪�",
+    "city": [
+      {
+        "name": "瑗垮畨甯�",
+        "area": [
+          "鏂板煄鍖�",
+          "纰戞灄鍖�",
+          "鑾叉箹鍖�",
+          "鐏炴ˉ鍖�",
+          "鏈ぎ鍖�",
+          "闆佸鍖�",
+          "闃庤壇鍖�",
+          "涓存郊鍖�",
+          "闀垮畨鍖�",
+          "楂橀櫟鍖�",
+          "閯犻倯鍖�",
+          "钃濈敯鍘�",
+          "鍛ㄨ嚦鍘�",
+          "瑗垮捀鍖�"
+        ]
+      },
+      {
+        "name": "閾滃窛甯�",
+        "area": [
+          "鐜嬬泭鍖�",
+          "鍗板彴鍖�",
+          "鑰�宸炲尯",
+          "瀹滃悰鍘�"
+        ]
+      },
+      {
+        "name": "瀹濋浮甯�",
+        "area": [
+          "娓花鍖�",
+          "閲戝彴鍖�",
+          "闄堜粨鍖�",
+          "鍑ょ繑鍘�",
+          "宀愬北鍘�",
+          "鎵堕鍘�",
+          "鐪夊幙",
+          "闄囧幙",
+          "鍗冮槼鍘�",
+          "楹熸父鍘�",
+          "鍑ゅ幙",
+          "澶櫧鍘�"
+        ]
+      },
+      {
+        "name": "鍜搁槼甯�",
+        "area": [
+          "绉﹂兘鍖�",
+          "鏉ㄩ櫟鍖�",
+          "娓煄鍖�",
+          "涓夊師鍘�",
+          "娉鹃槼鍘�",
+          "涔惧幙",
+          "绀兼硥鍘�",
+          "姘稿鍘�",
+          "闀挎鍘�",
+          "鏃倯鍘�",
+          "娣冲寲鍘�",
+          "姝﹀姛鍘�",
+          "鍏村钩甯�",
+          "褰窞甯�"
+        ]
+      },
+      {
+        "name": "娓崡甯�",
+        "area": [
+          "涓存腑鍖�",
+          "鍗庡窞鍖�",
+          "娼煎叧鍘�",
+          "澶ц崝鍘�",
+          "鍚堥槼鍘�",
+          "婢勫煄鍘�",
+          "钂插煄鍘�",
+          "鐧芥按鍘�",
+          "瀵屽钩鍘�",
+          "闊╁煄甯�",
+          "鍗庨槾甯�"
+        ]
+      },
+      {
+        "name": "寤跺畨甯�",
+        "area": [
+          "瀹濆鍖�",
+          "瀹夊鍖�",
+          "寤堕暱鍘�",
+          "寤跺窛鍘�",
+          "蹇椾腹鍘�",
+          "鍚磋捣鍘�",
+          "鐢樻硥鍘�",
+          "瀵屽幙",
+          "娲涘窛鍘�",
+          "瀹滃窛鍘�",
+          "榛勯緳鍘�",
+          "榛勯櫟鍘�",
+          "瀛愰暱甯�"
+        ]
+      },
+      {
+        "name": "姹変腑甯�",
+        "area": [
+          "姹夊彴鍖�",
+          "鍗楅儜鍖�",
+          "鍩庡浐鍘�",
+          "娲嬪幙",
+          "瑗夸埂鍘�",
+          "鍕夊幙",
+          "瀹佸己鍘�",
+          "鐣ラ槼鍘�",
+          "闀囧反鍘�",
+          "鐣欏潩鍘�",
+          "浣涘潽鍘�"
+        ]
+      },
+      {
+        "name": "姒嗘灄甯�",
+        "area": [
+          "姒嗛槼鍖�",
+          "妯北鍖�",
+          "搴滆胺鍘�",
+          "闈栬竟鍘�",
+          "瀹氳竟鍘�",
+          "缁ュ痉鍘�",
+          "绫宠剛鍘�",
+          "浣冲幙",
+          "鍚村牎鍘�",
+          "娓呮锭鍘�",
+          "瀛愭床鍘�",
+          "绁炴湪甯�"
+        ]
+      },
+      {
+        "name": "瀹夊悍甯�",
+        "area": [
+          "姹夋花鍖�",
+          "姹夐槾鍘�",
+          "鐭虫硥鍘�",
+          "瀹侀檿鍘�",
+          "绱槼鍘�",
+          "宀氱殝鍘�",
+          "骞冲埄鍘�",
+          "闀囧潽鍘�",
+          "鏃槼鍘�",
+          "鐧芥渤鍘�"
+        ]
+      },
+      {
+        "name": "鍟嗘礇甯�",
+        "area": [
+          "鍟嗗窞鍖�",
+          "娲涘崡鍘�",
+          "涓瑰嚖鍘�",
+          "鍟嗗崡鍘�",
+          "灞遍槼鍘�",
+          "闀囧畨鍘�",
+          "鏌炴按鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "姹熻タ鐪�",
+    "city": [
+      {
+        "name": "鍗楁槍甯�",
+        "area": [
+          "涓滄箹鍖�",
+          "瑗挎箹鍖�",
+          "闈掍簯璋卞尯",
+          "闈掑北婀栧尯",
+          "鏂板缓鍖�",
+          "绾㈣胺婊╁尯",
+          "鍗楁槍鍘�",
+          "瀹変箟鍘�",
+          "杩涜搐鍘�"
+        ]
+      },
+      {
+        "name": "鏅痉闀囧競",
+        "area": [
+          "鏄屾睙鍖�",
+          "鐝犲北鍖�",
+          "娴鍘�",
+          "涔愬钩甯�"
+        ]
+      },
+      {
+        "name": "钀嶄埂甯�",
+        "area": [
+          "瀹夋簮鍖�",
+          "婀樹笢鍖�",
+          "鑾茶姳鍘�",
+          "涓婃牀鍘�",
+          "鑺︽邯鍘�"
+        ]
+      },
+      {
+        "name": "涔濇睙甯�",
+        "area": [
+          "婵傛邯鍖�",
+          "娴旈槼鍖�",
+          "鏌存鍖�",
+          "姝﹀畞鍘�",
+          "淇按鍘�",
+          "姘镐慨鍘�",
+          "寰峰畨鍘�",
+          "閮芥槍鍘�",
+          "婀栧彛鍘�",
+          "褰辰鍘�",
+          "鐟炴槍甯�",
+          "鍏遍潚鍩庡競",
+          "搴愬北甯�"
+        ]
+      },
+      {
+        "name": "鏂颁綑甯�",
+        "area": [
+          "娓濇按鍖�",
+          "鍒嗗疁鍘�"
+        ]
+      },
+      {
+        "name": "楣版江甯�",
+        "area": [
+          "鏈堟箹鍖�",
+          "浣欐睙鍖�",
+          "璐垫邯甯�"
+        ]
+      },
+      {
+        "name": "璧e窞甯�",
+        "area": [
+          "绔犺础鍖�",
+          "鍗楀悍鍖�",
+          "璧e幙鍖�",
+          "淇′赴鍘�",
+          "澶т綑鍘�",
+          "涓婄姽鍘�",
+          "宕囦箟鍘�",
+          "瀹夎繙鍘�",
+          "瀹氬崡鍘�",
+          "鍏ㄥ崡鍘�",
+          "瀹侀兘鍘�",
+          "浜庨兘鍘�",
+          "鍏村浗鍘�",
+          "浼氭槍鍘�",
+          "瀵讳箤鍘�",
+          "鐭冲煄鍘�",
+          "鐟為噾甯�",
+          "榫欏崡甯�"
+        ]
+      },
+      {
+        "name": "鍚夊畨甯�",
+        "area": [
+          "鍚夊窞鍖�",
+          "闈掑師鍖�",
+          "鍚夊畨鍘�",
+          "鍚夋按鍘�",
+          "宄℃睙鍘�",
+          "鏂板共鍘�",
+          "姘镐赴鍘�",
+          "娉板拰鍘�",
+          "閬傚窛鍘�",
+          "涓囧畨鍘�",
+          "瀹夌鍘�",
+          "姘告柊鍘�",
+          "浜曞唸灞卞競"
+        ]
+      },
+      {
+        "name": "瀹滄槬甯�",
+        "area": [
+          "琚佸窞鍖�",
+          "濂夋柊鍘�",
+          "涓囪浇鍘�",
+          "涓婇珮鍘�",
+          "瀹滀赴鍘�",
+          "闈栧畨鍘�",
+          "閾滈紦鍘�",
+          "涓板煄甯�",
+          "妯熸爲甯�",
+          "楂樺畨甯�"
+        ]
+      },
+      {
+        "name": "鎶氬窞甯�",
+        "area": [
+          "涓村窛鍖�",
+          "涓滀埂鍖�",
+          "鍗楀煄鍘�",
+          "榛庡窛鍘�",
+          "鍗椾赴鍘�",
+          "宕囦粊鍘�",
+          "涔愬畨鍘�",
+          "瀹滈粍鍘�",
+          "閲戞邯鍘�",
+          "璧勬邯鍘�",
+          "骞挎槍鍘�"
+        ]
+      },
+      {
+        "name": "涓婇ザ甯�",
+        "area": [
+          "淇″窞鍖�",
+          "骞夸赴鍖�",
+          "骞夸俊鍖�",
+          "鐜夊北鍘�",
+          "閾呭北鍘�",
+          "妯嘲鍘�",
+          "寮嬮槼鍘�",
+          "浣欏共鍘�",
+          "閯遍槼鍘�",
+          "涓囧勾鍘�",
+          "濠烘簮鍘�",
+          "寰峰叴甯�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "浜戝崡鐪�",
+    "city": [
+      {
+        "name": "鏄嗘槑甯�",
+        "area": [
+          "浜斿崕鍖�",
+          "鐩橀緳鍖�",
+          "瀹樻浮鍖�",
+          "瑗垮北鍖�",
+          "涓滃窛鍖�",
+          "鍛堣础鍖�",
+          "鏅嬪畞鍖�",
+          "瀵屾皯鍘�",
+          "瀹滆壇鍘�",
+          "鐭虫灄褰濇棌鑷不鍘�",
+          "宓╂槑鍘�",
+          "绂勫姖褰濇棌鑻楁棌鑷不鍘�",
+          "瀵荤敻鍥炴棌褰濇棌鑷不鍘�",
+          "瀹夊畞甯�"
+        ]
+      },
+      {
+        "name": "鏇查潠甯�",
+        "area": [
+          "楹掗簾鍖�",
+          "娌剧泭鍖�",
+          "椹緳鍖�",
+          "闄嗚壇鍘�",
+          "甯堝畻鍘�",
+          "缃楀钩鍘�",
+          "瀵屾簮鍘�",
+          "浼氭辰鍘�",
+          "瀹e▉甯�"
+        ]
+      },
+      {
+        "name": "鐜夋邯甯�",
+        "area": [
+          "绾㈠鍖�",
+          "姹熷窛鍖�",
+          "閫氭捣鍘�",
+          "鍗庡畞鍘�",
+          "鏄撻棬鍘�",
+          "宄ㄥ北褰濇棌鑷不鍘�",
+          "鏂板钩褰濇棌鍌f棌鑷不鍘�",
+          "鍏冩睙鍝堝凹鏃忓綕鏃忓偅鏃忚嚜娌诲幙",
+          "婢勬睙甯�"
+        ]
+      },
+      {
+        "name": "淇濆北甯�",
+        "area": [
+          "闅嗛槼鍖�",
+          "鏂界敻鍘�",
+          "榫欓櫟鍘�",
+          "鏄屽畞鍘�",
+          "鑵惧啿甯�"
+        ]
+      },
+      {
+        "name": "鏄�氬競",
+        "area": [
+          "鏄槼鍖�",
+          "椴佺敻鍘�",
+          "宸у鍘�",
+          "鐩愭触鍘�",
+          "澶у叧鍘�",
+          "姘稿杽鍘�",
+          "缁ユ睙鍘�",
+          "闀囬泟鍘�",
+          "褰濊壇鍘�",
+          "濞佷俊鍘�",
+          "姘村瘜甯�"
+        ]
+      },
+      {
+        "name": "涓芥睙甯�",
+        "area": [
+          "鍙ゅ煄鍖�",
+          "鐜夐緳绾宠タ鏃忚嚜娌诲幙",
+          "姘歌儨鍘�",
+          "鍗庡潽鍘�",
+          "瀹佽挆褰濇棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "鏅幢甯�",
+        "area": [
+          "鎬濊寘鍖�",
+          "瀹佹幢鍝堝凹鏃忓綕鏃忚嚜娌诲幙",
+          "澧ㄦ睙鍝堝凹鏃忚嚜娌诲幙",
+          "鏅笢褰濇棌鑷不鍘�",
+          "鏅胺鍌f棌褰濇棌鑷不鍘�",
+          "闀囨矃褰濇棌鍝堝凹鏃忔媺绁滄棌鑷不鍘�",
+          "姹熷煄鍝堝凹鏃忓綕鏃忚嚜娌诲幙",
+          "瀛熻繛鍌f棌鎷夌鏃忎饯鏃忚嚜娌诲幙",
+          "婢滄钵鎷夌鏃忚嚜娌诲幙",
+          "瑗跨洘浣ゆ棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "涓存钵甯�",
+        "area": [
+          "涓寸繑鍖�",
+          "鍑ゅ簡鍘�",
+          "浜戝幙",
+          "姘稿痉鍘�",
+          "闀囧悍鍘�",
+          "鍙屾睙鎷夌鏃忎饯鏃忓竷鏈楁棌鍌f棌鑷不鍘�",
+          "鑰块┈鍌f棌浣ゆ棌鑷不鍘�",
+          "娌ф簮浣ゆ棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "妤氶泟褰濇棌鑷不宸�",
+        "area": [
+          "妤氶泟甯�",
+          "鍙屾煆鍘�",
+          "鐗熷畾鍘�",
+          "鍗楀崕鍘�",
+          "濮氬畨鍘�",
+          "澶у鍘�",
+          "姘镐粊鍘�",
+          "鍏冭皨鍘�",
+          "姝﹀畾鍘�",
+          "绂勪赴鍘�"
+        ]
+      },
+      {
+        "name": "绾㈡渤鍝堝凹鏃忓綕鏃忚嚜娌诲窞",
+        "area": [
+          "涓棫甯�",
+          "寮�杩滃競",
+          "钂欒嚜甯�",
+          "寮ュ嫆甯�",
+          "灞忚竟鑻楁棌鑷不鍘�",
+          "寤烘按鍘�",
+          "鐭冲睆鍘�",
+          "娉歌タ鍘�",
+          "鍏冮槼鍘�",
+          "绾㈡渤鍘�",
+          "閲戝钩鑻楁棌鐟舵棌鍌f棌鑷不鍘�",
+          "缁挎槬鍘�",
+          "娌冲彛鐟舵棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "鏂囧北澹棌鑻楁棌鑷不宸�",
+        "area": [
+          "鏂囧北甯�",
+          "鐮氬北鍘�",
+          "瑗跨暣鍘�",
+          "楹绘牀鍧″幙",
+          "椹叧鍘�",
+          "涓樺寳鍘�",
+          "骞垮崡鍘�",
+          "瀵屽畞鍘�"
+        ]
+      },
+      {
+        "name": "瑗垮弻鐗堢撼鍌f棌鑷不宸�",
+        "area": [
+          "鏅椽甯�",
+          "鍕愭捣鍘�",
+          "鍕愯厞鍘�"
+        ]
+      },
+      {
+        "name": "澶х悊鐧芥棌鑷不宸�",
+        "area": [
+          "澶х悊甯�",
+          "婕炬繛褰濇棌鑷不鍘�",
+          "绁ヤ簯鍘�",
+          "瀹惧窛鍘�",
+          "寮ユ浮鍘�",
+          "鍗楁锭褰濇棌鑷不鍘�",
+          "宸嶅北褰濇棌鍥炴棌鑷不鍘�",
+          "姘稿钩鍘�",
+          "浜戦緳鍘�",
+          "娲辨簮鍘�",
+          "鍓戝窛鍘�",
+          "楣ゅ簡鍘�"
+        ]
+      },
+      {
+        "name": "寰峰畯鍌f棌鏅鏃忚嚜娌诲窞",
+        "area": [
+          "鐟炰附甯�",
+          "鑺掑競",
+          "姊佹渤鍘�",
+          "鐩堟睙鍘�",
+          "闄囧窛鍘�"
+        ]
+      },
+      {
+        "name": "鎬掓睙鍌堝兂鏃忚嚜娌诲窞",
+        "area": [
+          "娉告按甯�",
+          "绂忚础鍘�",
+          "璐″北鐙緳鏃忔�掓棌鑷不鍘�",
+          "鍏板潽鐧芥棌鏅背鏃忚嚜娌诲幙"
+        ]
+      },
+      {
+        "name": "杩簡钘忔棌鑷不宸�",
+        "area": [
+          "棣欐牸閲屾媺甯�",
+          "寰烽挦鍘�",
+          "缁磋タ鍌堝兂鏃忚嚜娌诲幙"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "灞辫タ鐪�",
+    "city": [
+      {
+        "name": "澶師甯�",
+        "area": [
+          "灏忓簵鍖�",
+          "杩庢辰鍖�",
+          "鏉忚姳宀尯",
+          "灏栬崏鍧尯",
+          "涓囨煆鏋楀尯",
+          "鏅嬫簮鍖�",
+          "娓呭緪鍘�",
+          "闃虫洸鍘�",
+          "濞勭儲鍘�",
+          "鍙や氦甯�"
+        ]
+      },
+      {
+        "name": "澶у悓甯�",
+        "area": [
+          "鏂拌崳鍖�",
+          "骞冲煄鍖�",
+          "浜戝唸鍖�",
+          "浜戝窞鍖�",
+          "闃抽珮鍘�",
+          "澶╅晣鍘�",
+          "骞跨伒鍘�",
+          "鐏典笜鍘�",
+          "娴戞簮鍘�",
+          "宸︿簯鍘�"
+        ]
+      },
+      {
+        "name": "闃虫硥甯�",
+        "area": [
+          "鍩庡尯",
+          "鐭垮尯",
+          "閮婂尯",
+          "骞冲畾鍘�",
+          "鐩傚幙"
+        ]
+      },
+      {
+        "name": "闀挎不甯�",
+        "area": [
+          "娼炲窞鍖�",
+          "涓婂厷鍖�",
+          "灞暀鍖�",
+          "娼炲煄鍖�",
+          "瑗勫灒鍘�",
+          "骞抽『鍘�",
+          "榛庡煄鍘�",
+          "澹跺叧鍘�",
+          "闀垮瓙鍘�",
+          "姝︿埂鍘�",
+          "娌佸幙",
+          "娌佹簮鍘�"
+        ]
+      },
+      {
+        "name": "鏅嬪煄甯�",
+        "area": [
+          "鍩庡尯",
+          "娌佹按鍘�",
+          "闃冲煄鍘�",
+          "闄靛窛鍘�",
+          "娉藉窞鍘�",
+          "楂樺钩甯�"
+        ]
+      },
+      {
+        "name": "鏈斿窞甯�",
+        "area": [
+          "鏈斿煄鍖�",
+          "骞抽瞾鍖�",
+          "灞遍槾鍘�",
+          "搴斿幙",
+          "鍙崇帀鍘�",
+          "鎬�浠佸競"
+        ]
+      },
+      {
+        "name": "鏅嬩腑甯�",
+        "area": [
+          "姒嗘鍖�",
+          "澶胺鍖�",
+          "姒嗙ぞ鍘�",
+          "宸︽潈鍘�",
+          "鍜岄『鍘�",
+          "鏄旈槼鍘�",
+          "瀵块槼鍘�",
+          "绁佸幙",
+          "骞抽仴鍘�",
+          "鐏电煶鍘�",
+          "浠嬩紤甯�"
+        ]
+      },
+      {
+        "name": "杩愬煄甯�",
+        "area": [
+          "鐩愭箹鍖�",
+          "涓寸寳鍘�",
+          "涓囪崳鍘�",
+          "闂诲枩鍘�",
+          "绋峰北鍘�",
+          "鏂扮粵鍘�",
+          "缁涘幙",
+          "鍨f洸鍘�",
+          "澶忓幙",
+          "骞抽檰鍘�",
+          "鑺煄鍘�",
+          "姘告祹甯�",
+          "娌虫触甯�"
+        ]
+      },
+      {
+        "name": "蹇诲窞甯�",
+        "area": [
+          "蹇诲簻鍖�",
+          "瀹氳鍘�",
+          "浜斿彴鍘�",
+          "浠e幙",
+          "绻佸硻鍘�",
+          "瀹佹鍘�",
+          "闈欎箰鍘�",
+          "绁炴睜鍘�",
+          "浜斿鍘�",
+          "宀㈠矚鍘�",
+          "娌虫洸鍘�",
+          "淇濆痉鍘�",
+          "鍋忓叧鍘�",
+          "鍘熷钩甯�"
+        ]
+      },
+      {
+        "name": "涓存本甯�",
+        "area": [
+          "灏ч兘鍖�",
+          "鏇叉矁鍘�",
+          "缈煎煄鍘�",
+          "瑗勬本鍘�",
+          "娲礊鍘�",
+          "鍙ゅ幙",
+          "瀹夋辰鍘�",
+          "娴北鍘�",
+          "鍚夊幙",
+          "涔″畞鍘�",
+          "澶у畞鍘�",
+          "闅板幙",
+          "姘稿拰鍘�",
+          "钂插幙",
+          "姹捐タ鍘�",
+          "渚┈甯�",
+          "闇嶅窞甯�"
+        ]
+      },
+      {
+        "name": "鍚曟甯�",
+        "area": [
+          "绂荤煶鍖�",
+          "鏂囨按鍘�",
+          "浜ゅ煄鍘�",
+          "鍏村幙",
+          "涓村幙",
+          "鏌虫灄鍘�",
+          "鐭虫ゼ鍘�",
+          "宀氬幙",
+          "鏂瑰北鍘�",
+          "涓槼鍘�",
+          "浜ゅ彛鍘�",
+          "瀛濅箟甯�",
+          "姹鹃槼甯�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "鍚夋灄鐪�",
+    "city": [
+      {
+        "name": "闀挎槬甯�",
+        "area": [
+          "鍗楀叧鍖�",
+          "瀹藉煄鍖�",
+          "鏈濋槼鍖�",
+          "浜岄亾鍖�",
+          "缁垮洯鍖�",
+          "鍙岄槼鍖�",
+          "涔濆彴鍖�",
+          "鍐滃畨鍘�",
+          "姒嗘爲甯�",
+          "寰锋儬甯�",
+          "鍏富宀競",
+          "闀垮痉鍖�",
+          "鍖楁箹鍖�",
+          "绌烘腐鍖�",
+          "鍖楀尯",
+          "鍗楀尯",
+          "楂樻柊鍖�",
+          "姹藉紑鍖�",
+          "鍑�鏈堝尯",
+          "鑾茶姳灞辨梾娓稿害鍋囧尯"
+        ]
+      },
+      {
+        "name": "鍚夋灄甯�",
+        "area": [
+          "鏄岄倯鍖�",
+          "榫欐江鍖�",
+          "鑸硅惀鍖�",
+          "涓版弧鍖�",
+          "姘稿悏鍘�",
+          "铔熸渤甯�",
+          "妗︾敻甯�",
+          "鑸掑叞甯�",
+          "纾愮煶甯�"
+        ]
+      },
+      {
+        "name": "鍥涘钩甯�",
+        "area": [
+          "閾佽タ鍖�",
+          "閾佷笢鍖�",
+          "姊ㄦ爲鍘�",
+          "浼婇�氭弧鏃忚嚜娌诲幙",
+          "鍙岃窘甯�"
+        ]
+      },
+      {
+        "name": "杈芥簮甯�",
+        "area": [
+          "榫欏北鍖�",
+          "瑗垮畨鍖�",
+          "涓滀赴鍘�",
+          "涓滆窘鍘�"
+        ]
+      },
+      {
+        "name": "閫氬寲甯�",
+        "area": [
+          "涓滄槍鍖�",
+          "浜岄亾姹熷尯",
+          "閫氬寲鍘�",
+          "杈夊崡鍘�",
+          "鏌虫渤鍘�",
+          "姊呮渤鍙e競",
+          "闆嗗畨甯�"
+        ]
+      },
+      {
+        "name": "鐧藉北甯�",
+        "area": [
+          "娴戞睙鍖�",
+          "姹熸簮鍖�",
+          "鎶氭澗鍘�",
+          "闈栧畤鍘�",
+          "闀跨櫧鏈濋矞鏃忚嚜娌诲幙",
+          "涓存睙甯�"
+        ]
+      },
+      {
+        "name": "鏉惧師甯�",
+        "area": [
+          "瀹佹睙鍖�",
+          "鍓嶉儹灏旂綏鏂挋鍙ゆ棌鑷不鍘�",
+          "闀垮箔鍘�",
+          "涔惧畨鍘�",
+          "鎵朵綑甯�"
+        ]
+      },
+      {
+        "name": "鐧藉煄甯�",
+        "area": [
+          "娲寳鍖�",
+          "闀囪祲鍘�",
+          "閫氭鍘�",
+          "娲崡甯�",
+          "澶у畨甯�"
+        ]
+      },
+      {
+        "name": "寤惰竟鏈濋矞鏃忚嚜娌诲窞",
+        "area": [
+          "寤跺悏甯�",
+          "鍥句滑甯�",
+          "鏁﹀寲甯�",
+          "鐝叉槬甯�",
+          "榫欎簳甯�",
+          "鍜岄緳甯�",
+          "姹竻鍘�",
+          "瀹夊浘鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "璐靛窞鐪�",
+    "city": [
+      {
+        "name": "璐甸槼甯�",
+        "area": [
+          "鍗楁槑鍖�",
+          "浜戝博鍖�",
+          "鑺辨邯鍖�",
+          "涔屽綋鍖�",
+          "鐧戒簯鍖�",
+          "瑙傚北婀栧尯",
+          "寮�闃冲幙",
+          "鎭兘鍘�",
+          "淇枃鍘�",
+          "娓呴晣甯�"
+        ]
+      },
+      {
+        "name": "鍏洏姘村競",
+        "area": [
+          "閽熷北鍖�",
+          "鍏灊鐗瑰尯",
+          "姘村煄鍘�",
+          "鐩樺窞甯�"
+        ]
+      },
+      {
+        "name": "閬典箟甯�",
+        "area": [
+          "绾㈣姳宀楀尯",
+          "姹囧窛鍖�",
+          "鎾窞鍖�",
+          "妗愭鍘�",
+          "缁ラ槼鍘�",
+          "姝e畨鍘�",
+          "閬撶湡浠′浆鏃忚嫍鏃忚嚜娌诲幙",
+          "鍔″窛浠′浆鏃忚嫍鏃忚嚜娌诲幙",
+          "鍑ゅ唸鍘�",
+          "婀勬江鍘�",
+          "浣欏簡鍘�",
+          "涔犳按鍘�",
+          "璧ゆ按甯�",
+          "浠佹��甯�"
+        ]
+      },
+      {
+        "name": "瀹夐『甯�",
+        "area": [
+          "瑗跨鍖�",
+          "骞冲潩鍖�",
+          "鏅畾鍘�",
+          "闀囧畞甯冧緷鏃忚嫍鏃忚嚜娌诲幙",
+          "鍏冲箔甯冧緷鏃忚嫍鏃忚嚜娌诲幙",
+          "绱簯鑻楁棌甯冧緷鏃忚嚜娌诲幙"
+        ]
+      },
+      {
+        "name": "姣曡妭甯�",
+        "area": [
+          "涓冩槦鍏冲尯",
+          "澶ф柟鍘�",
+          "榛旇タ鍘�",
+          "閲戞矙鍘�",
+          "缁囬噾鍘�",
+          "绾抽泹鍘�",
+          "濞佸畞褰濇棌鍥炴棌鑻楁棌鑷不鍘�",
+          "璧珷鍘�"
+        ]
+      },
+      {
+        "name": "閾滀粊甯�",
+        "area": [
+          "纰ф睙鍖�",
+          "涓囧北鍖�",
+          "姹熷彛鍘�",
+          "鐜夊睆渚楁棌鑷不鍘�",
+          "鐭抽槨鍘�",
+          "鎬濆崡鍘�",
+          "鍗版睙鍦熷鏃忚嫍鏃忚嚜娌诲幙",
+          "寰锋睙鍘�",
+          "娌挎渤鍦熷鏃忚嚜娌诲幙",
+          "鏉炬鑻楁棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "榛旇タ鍗楀竷渚濇棌鑻楁棌鑷不宸�",
+        "area": [
+          "鍏翠箟甯�",
+          "鍏翠粊甯�",
+          "鏅畨鍘�",
+          "鏅撮殕鍘�",
+          "璐炰赴鍘�",
+          "鏈涜盁鍘�",
+          "鍐屼酣鍘�",
+          "瀹夐緳鍘�"
+        ]
+      },
+      {
+        "name": "榛斾笢鍗楄嫍鏃忎緱鏃忚嚜娌诲窞",
+        "area": [
+          "鍑噷甯�",
+          "榛勫钩鍘�",
+          "鏂界鍘�",
+          "涓夌鍘�",
+          "闀囪繙鍘�",
+          "宀戝珐鍘�",
+          "澶╂煴鍘�",
+          "閿﹀睆鍘�",
+          "鍓戞渤鍘�",
+          "鍙版睙鍘�",
+          "榛庡钩鍘�",
+          "姒曟睙鍘�",
+          "浠庢睙鍘�",
+          "闆峰北鍘�",
+          "楹绘睙鍘�",
+          "涓瑰鍘�"
+        ]
+      },
+      {
+        "name": "榛斿崡甯冧緷鏃忚嫍鏃忚嚜娌诲窞",
+        "area": [
+          "閮藉寑甯�",
+          "绂忔硥甯�",
+          "鑽旀尝鍘�",
+          "璐靛畾鍘�",
+          "鐡畨鍘�",
+          "鐙北鍘�",
+          "骞冲鍘�",
+          "缃楃敻鍘�",
+          "闀块『鍘�",
+          "榫欓噷鍘�",
+          "鎯犳按鍘�",
+          "涓夐兘姘存棌鑷不鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "鐢樿們鐪�",
+    "city": [
+      {
+        "name": "鍏板窞甯�",
+        "area": [
+          "鍩庡叧鍖�",
+          "涓冮噷娌冲尯",
+          "瑗垮浐鍖�",
+          "瀹夊畞鍖�",
+          "绾㈠彜鍖�",
+          "姘哥櫥鍘�",
+          "鐨嬪叞鍘�",
+          "姒嗕腑鍘�"
+        ]
+      },
+      {
+        "name": "鍢夊唱鍏冲競",
+        "area": [
+          "鑳滃埄琛楅亾",
+          "浜斾竴琛楅亾",
+          "鐭垮北琛楅亾",
+          "鏂板崕琛楅亾",
+          "寤鸿琛楅亾",
+          "鍓嶈繘琛楅亾",
+          "宄嫅琛楅亾",
+          "鏈濋槼琛楅亾",
+          "宄硥闀�",
+          "鏂囨畩闀�",
+          "鏂板煄闀�",
+          "闆勫叧鍖�",
+          "闀垮煄鍖�",
+          "闀滈搧鍖�"
+        ]
+      },
+      {
+        "name": "閲戞槍甯�",
+        "area": [
+          "閲戝窛鍖�",
+          "姘告槍鍘�"
+        ]
+      },
+      {
+        "name": "鐧介摱甯�",
+        "area": [
+          "鐧介摱鍖�",
+          "骞冲窛鍖�",
+          "闈栬繙鍘�",
+          "浼氬畞鍘�",
+          "鏅嘲鍘�"
+        ]
+      },
+      {
+        "name": "澶╂按甯�",
+        "area": [
+          "绉﹀窞鍖�",
+          "楹︾Н鍖�",
+          "娓呮按鍘�",
+          "绉﹀畨鍘�",
+          "鐢樿胺鍘�",
+          "姝﹀北鍘�",
+          "寮犲宸濆洖鏃忚嚜娌诲幙"
+        ]
+      },
+      {
+        "name": "姝﹀▉甯�",
+        "area": [
+          "鍑夊窞鍖�",
+          "姘戝嫟鍘�",
+          "鍙ゆ氮鍘�",
+          "澶╃钘忔棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "寮犳帠甯�",
+        "area": [
+          "鐢樺窞鍖�",
+          "鑲冨崡瑁曞浐鏃忚嚜娌诲幙",
+          "姘戜箰鍘�",
+          "涓存辰鍘�",
+          "楂樺彴鍘�",
+          "灞变腹鍘�"
+        ]
+      },
+      {
+        "name": "骞冲噳甯�",
+        "area": [
+          "宕嗗硳鍖�",
+          "娉惧窛鍘�",
+          "鐏靛彴鍘�",
+          "宕囦俊鍘�",
+          "搴勬氮鍘�",
+          "闈欏畞鍘�",
+          "鍗庝涵甯�"
+        ]
+      },
+      {
+        "name": "閰掓硥甯�",
+        "area": [
+          "鑲冨窞鍖�",
+          "閲戝鍘�",
+          "鐡滃窞鍘�",
+          "鑲冨寳钂欏彜鏃忚嚜娌诲幙",
+          "闃垮厠濉炲搱钀ㄥ厠鏃忚嚜娌诲幙",
+          "鐜夐棬甯�",
+          "鏁︾厡甯�"
+        ]
+      },
+      {
+        "name": "搴嗛槼甯�",
+        "area": [
+          "瑗垮嘲鍖�",
+          "搴嗗煄鍘�",
+          "鐜幙",
+          "鍗庢睜鍘�",
+          "鍚堟按鍘�",
+          "姝e畞鍘�",
+          "瀹佸幙",
+          "闀囧師鍘�"
+        ]
+      },
+      {
+        "name": "瀹氳タ甯�",
+        "area": [
+          "瀹夊畾鍖�",
+          "閫氭腑鍘�",
+          "闄囪タ鍘�",
+          "娓簮鍘�",
+          "涓存串鍘�",
+          "婕冲幙",
+          "宀峰幙"
+        ]
+      },
+      {
+        "name": "闄囧崡甯�",
+        "area": [
+          "姝﹂兘鍖�",
+          "鎴愬幙",
+          "鏂囧幙",
+          "瀹曟槍鍘�",
+          "搴峰幙",
+          "瑗垮拰鍘�",
+          "绀煎幙",
+          "寰藉幙",
+          "涓ゅ綋鍘�"
+        ]
+      },
+      {
+        "name": "涓村鍥炴棌鑷不宸�",
+        "area": [
+          "涓村甯�",
+          "涓村鍘�",
+          "搴蜂箰鍘�",
+          "姘搁潠鍘�",
+          "骞挎渤鍘�",
+          "鍜屾斂鍘�",
+          "涓滀埂鏃忚嚜娌诲幙",
+          "绉煶灞变繚瀹夋棌涓滀埂鏃忔拻鎷夋棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "鐢樺崡钘忔棌鑷不宸�",
+        "area": [
+          "鍚堜綔甯�",
+          "涓存江鍘�",
+          "鍗撳凹鍘�",
+          "鑸熸洸鍘�",
+          "杩儴鍘�",
+          "鐜涙洸鍘�",
+          "纰屾洸鍘�",
+          "澶忔渤鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "娴峰崡鐪�",
+    "city": [
+      {
+        "name": "娴峰彛甯�",
+        "area": [
+          "绉�鑻卞尯",
+          "榫欏崕鍖�",
+          "鐞煎北鍖�",
+          "缇庡叞鍖�"
+        ]
+      },
+      {
+        "name": "涓変簹甯�",
+        "area": [
+          "娴锋鍖�",
+          "鍚夐槼鍖�",
+          "澶╂动鍖�",
+          "宕栧窞鍖�"
+        ]
+      },
+      {
+        "name": "涓夋矙甯�",
+        "area": [
+          "瑗挎矙缇ゅ矝",
+          "涓矙缇ゅ矝",
+          "鍗楁矙缇ゅ矝"
+        ]
+      },
+      {
+        "name": "鍎嬪窞甯�",
+        "area": [
+          "閭eぇ闀�",
+          "鍜屽簡闀�",
+          "鍗椾赴闀�",
+          "澶ф垚闀�",
+          "闆呮槦闀�",
+          "鍏版磱闀�",
+          "鍏夋潙闀�",
+          "鏈ㄦ闀�",
+          "娴峰ご闀�",
+          "宄ㄨ敁闀�",
+          "鐜嬩簲闀�",
+          "鐧介┈浜曢晣",
+          "涓拰闀�",
+          "鎺掓郸闀�",
+          "涓滄垚闀�",
+          "鏂板窞闀�",
+          "鍥借惀鍏竴鎬诲満",
+          "鍥借惀钃濇磱鍐滃満",
+          "鍥借惀瑗胯仈鍐滃満",
+          "鍥借惀瑗垮煿鍐滃満"
+        ]
+      },
+      {
+        "name": "浜旀寚灞卞競",
+        "area": [
+          "閫氫粈闀�",
+          "鍗楀湥闀�",
+          "姣涢槼闀�",
+          "鐣槼闀�",
+          "鐣呭ソ涔�",
+          "姣涢亾涔�",
+          "姘存弧涔�"
+        ]
+      },
+      {
+        "name": "鐞兼捣甯�",
+        "area": [
+          "鍢夌Н闀�",
+          "鍗氶硨闀�",
+          "涓囨硥闀�",
+          "娼棬闀�",
+          "闀垮潯闀�",
+          "濉旀磱闀�",
+          "澶ц矾闀�",
+          "涓師闀�",
+          "闃虫睙闀�",
+          "榫欐睙闀�",
+          "鐭冲闀�",
+          "浼氬北闀�"
+        ]
+      },
+      {
+        "name": "鏂囨槍甯�",
+        "area": [
+          "鏂囧煄闀�",
+          "閲嶅叴闀�",
+          "钃幈闀�",
+          "浼氭枃闀�",
+          "涓滆矾闀�",
+          "娼墰闀�",
+          "涓滈榿闀�",
+          "鏂囨暀闀�",
+          "涓滈儕闀�",
+          "榫欐ゼ闀�",
+          "鏄屾磼闀�",
+          "缈佺敯闀�",
+          "鎶辩綏闀�",
+          "鍐潯闀�",
+          "閿﹀北闀�",
+          "閾哄墠闀�",
+          "鍏潯闀�"
+        ]
+      },
+      {
+        "name": "涓囧畞甯�",
+        "area": [
+          "涓囧煄闀�",
+          "榫欐粴闀�",
+          "鍜屼箰闀�",
+          "鍚庡畨闀�",
+          "澶ц寕闀�",
+          "涓滄境闀�",
+          "绀肩邯闀�",
+          "闀夸赴闀�",
+          "灞辨牴闀�",
+          "鍖楀ぇ闀�",
+          "鍗楁ˉ闀�",
+          "涓夋洿缃楅晣",
+          "鍏撮殕鍗庝鲸鍐滃満",
+          "鍦版柟鍥借惀鍏繛鏋楀満"
+        ]
+      },
+      {
+        "name": "涓滄柟甯�",
+        "area": [
+          "鍏墍闀�",
+          "涓滄渤闀�",
+          "澶х敯闀�",
+          "鎰熷煄闀�",
+          "鏉挎ˉ闀�",
+          "涓夊闀�",
+          "鍥涙洿闀�",
+          "鏂伴緳闀�",
+          "澶╁畨涔�",
+          "姹熻竟涔�"
+        ]
+      },
+      {
+        "name": "瀹氬畨鍘�",
+        "area": [
+          "瀹氬煄闀�",
+          "鏂扮闀�",
+          "榫欐箹闀�",
+          "榛勭闀�",
+          "闆烽福闀�",
+          "榫欓棬闀�",
+          "榫欐渤闀�",
+          "宀彛闀�",
+          "缈版灄闀�",
+          "瀵屾枃闀�"
+        ]
+      },
+      {
+        "name": "灞槍鍘�",
+        "area": [
+          "灞煄闀�",
+          "鏂板叴闀�",
+          "鏋湪闀�",
+          "涔屽潯闀�",
+          "鍗楀悤闀�",
+          "鍗楀潳闀�",
+          "鍧″績闀�",
+          "瑗挎槍闀�"
+        ]
+      },
+      {
+        "name": "婢勮繄鍘�",
+        "area": [
+          "閲戞睙闀�",
+          "鐟炴邯闀�",
+          "姘稿彂闀�",
+          "鑰佸煄闀�",
+          "鍔犱箰闀�",
+          "鏂囧剴闀�",
+          "绂忓北闀�",
+          "妗ュご闀�",
+          "涓叴闀�",
+          "浠佸叴闀�",
+          "澶т赴闀�",
+          "閲戝畨鍐滃満",
+          "绾㈠厜鍐滃満",
+          "瑗胯揪鍐滃満",
+          "婢勮繄鏋楀満",
+          "娴峰崡鑰佸煄缁忔祹寮�鍙戝尯",
+          "娴峰彛缁煎悎淇濈◣鍖�",
+          "椹潙涓績娓尯"
+        ]
+      },
+      {
+        "name": "涓撮珮鍘�",
+        "area": [
+          "涓村煄闀�",
+          "涓滆嫳闀�",
+          "娉㈣幉闀�",
+          "璋冩ゼ闀�",
+          "鏂扮泩闀�",
+          "鍗楀疂闀�",
+          "鍜岃垗闀�",
+          "澶氭枃闀�",
+          "鍗氬帤闀�",
+          "鐨囨闀�",
+          "鍔犳潵鍐滃満",
+          "閲戠墝娓粡娴庡紑鍙戝尯",
+          "涓撮珮瑙掓梾娓稿害鍋囧紑鍙戝尯"
+        ]
+      },
+      {
+        "name": "鐧芥矙榛庢棌鑷不鍘�",
+        "area": [
+          "鐗欏弶闀�",
+          "涓冨潑闀�",
+          "閭︽邯闀�",
+          "鎵撳畨闀�",
+          "缁嗘按涔�",
+          "鍏冮棬涔�",
+          "鍗楀紑涔�",
+          "闃滈緳涔�",
+          "闈掓澗涔�",
+          "閲戞尝涔�",
+          "鑽i偊涔�"
+        ]
+      },
+      {
+        "name": "鏄屾睙榛庢棌鑷不鍘�",
+        "area": [
+          "鐭崇闀�",
+          "鍙夋渤闀�",
+          "鍗佹湀鐢伴晣",
+          "涔岀儓闀�",
+          "鏄屽寲闀�",
+          "娴峰熬闀�",
+          "涓冨弶闀�",
+          "鐜嬩笅涔�"
+        ]
+      },
+      {
+        "name": "涔愪笢榛庢棌鑷不鍘�",
+        "area": [
+          "鎶辩敱闀�",
+          "涓囧啿闀�",
+          "澶у畨闀�",
+          "蹇椾徊闀�",
+          "鍗冨闀�",
+          "涔濇墍闀�",
+          "鍒╁浗闀�",
+          "榛勬祦闀�",
+          "浣涚綏闀�",
+          "灏栧嘲闀�",
+          "鑾烘瓕娴烽晣"
+        ]
+      },
+      {
+        "name": "闄垫按榛庢棌鑷不鍘�",
+        "area": [
+          "妞版灄闀�",
+          "鏂版潙闀�",
+          "鑻卞窞闀�",
+          "鏈彿闀�",
+          "鍏夊潯闀�",
+          "涓夋墠闀�",
+          "榛庡畨闀�",
+          "闅嗗箍闀�",
+          "鏂囩綏闀�",
+          "鎻愯挋涔�",
+          "缇よ嫳涔�"
+        ]
+      },
+      {
+        "name": "淇濅涵榛庢棌鑻楁棌鑷不鍘�",
+        "area": [
+          "淇濆煄闀�",
+          "浠�鐜查晣",
+          "鍔犺寕闀�",
+          "鍝嶆按闀�",
+          "鏂版斂闀�",
+          "涓夐亾闀�",
+          "鍏紦涔�",
+          "鍗楁灄涔�",
+          "姣涙劅涔�"
+        ]
+      },
+      {
+        "name": "鐞间腑榛庢棌鑻楁棌鑷不鍘�",
+        "area": [
+          "钀ユ牴闀�",
+          "婀惧箔闀�",
+          "榛庢瘝灞遍晣",
+          "绾㈡瘺闀�",
+          "闀垮緛闀�",
+          "涓钩闀�",
+          "鍜屽钩闀�",
+          "浠�杩愪埂",
+          "涓婂畨涔�",
+          "鍚婄綏灞变埂",
+          "闃虫睙鍐滃満",
+          "澶т赴鍐滃満",
+          "鏂拌繘鍐滃満",
+          "涔岀煶鍐滃満",
+          "宀ご鍐滃満",
+          "鍗楁柟鍐滃満",
+          "鏂颁紵鍐滃満",
+          "鍔犻挆鍐滃満",
+          "闀垮緛鍐滃満",
+          "涔樺潯鍐滃満",
+          "澶钩鍐滃満"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "闈掓捣鐪�",
+    "city": [
+      {
+        "name": "瑗垮畞甯�",
+        "area": [
+          "鍩庝笢鍖�",
+          "鍩庝腑鍖�",
+          "鍩庤タ鍖�",
+          "鍩庡寳鍖�",
+          "婀熶腑鍖�",
+          "澶ч�氬洖鏃忓湡鏃忚嚜娌诲幙",
+          "婀熸簮鍘�"
+        ]
+      },
+      {
+        "name": "娴蜂笢甯�",
+        "area": [
+          "涔愰兘鍖�",
+          "骞冲畨鍖�",
+          "姘戝拰鍥炴棌鍦熸棌鑷不鍘�",
+          "浜掑姪鍦熸棌鑷不鍘�",
+          "鍖栭殕鍥炴棌鑷不鍘�",
+          "寰寲鎾掓媺鏃忚嚜娌诲幙"
+        ]
+      },
+      {
+        "name": "娴峰寳钘忔棌鑷不宸�",
+        "area": [
+          "闂ㄦ簮鍥炴棌鑷不鍘�",
+          "绁佽繛鍘�",
+          "娴锋檹鍘�",
+          "鍒氬療鍘�"
+        ]
+      },
+      {
+        "name": "榛勫崡钘忔棌鑷不宸�",
+        "area": [
+          "鍚屼粊甯�",
+          "灏栨墡鍘�",
+          "娉藉簱鍘�",
+          "娌冲崡钂欏彜鏃忚嚜娌诲幙"
+        ]
+      },
+      {
+        "name": "娴峰崡钘忔棌鑷不宸�",
+        "area": [
+          "鍏卞拰鍘�",
+          "鍚屽痉鍘�",
+          "璐靛痉鍘�",
+          "鍏存捣鍘�",
+          "璐靛崡鍘�"
+        ]
+      },
+      {
+        "name": "鏋滄礇钘忔棌鑷不宸�",
+        "area": [
+          "鐜涙瞾鍘�",
+          "鐝帥鍘�",
+          "鐢樺痉鍘�",
+          "杈炬棩鍘�",
+          "涔呮不鍘�",
+          "鐜涘鍘�"
+        ]
+      },
+      {
+        "name": "鐜夋爲钘忔棌鑷不宸�",
+        "area": [
+          "鐜夋爲甯�",
+          "鏉傚鍘�",
+          "绉板鍘�",
+          "娌诲鍘�",
+          "鍥婅唉鍘�",
+          "鏇查夯鑾卞幙"
+        ]
+      },
+      {
+        "name": "娴疯タ钂欏彜鏃忚棌鏃忚嚜娌诲窞",
+        "area": [
+          "鏍煎皵鏈ㄥ競",
+          "寰蜂护鍝堝競",
+          "鑼礀甯�",
+          "涔屽叞鍘�",
+          "閮藉叞鍘�",
+          "澶╁郴鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "榛戦緳姹熺渷",
+    "city": [
+      {
+        "name": "鍝堝皵婊ㄥ競",
+        "area": [
+          "閬撻噷鍖�",
+          "鍗楀矖鍖�",
+          "閬撳鍖�",
+          "骞虫埧鍖�",
+          "鏉惧寳鍖�",
+          "棣欏潑鍖�",
+          "鍛煎叞鍖�",
+          "闃垮煄鍖�",
+          "鍙屽煄鍖�",
+          "渚濆叞鍘�",
+          "鏂规鍘�",
+          "瀹惧幙",
+          "宸村溅鍘�",
+          "鏈ㄥ叞鍘�",
+          "閫氭渤鍘�",
+          "寤跺鍘�",
+          "灏氬織甯�",
+          "浜斿父甯�"
+        ]
+      },
+      {
+        "name": "榻愰綈鍝堝皵甯�",
+        "area": [
+          "榫欐矙鍖�",
+          "寤哄崕鍖�",
+          "閾侀攱鍖�",
+          "鏄傛槀婧尯",
+          "瀵屾媺灏斿熀鍖�",
+          "纰惧瓙灞卞尯",
+          "姊呴噷鏂揪鏂″皵鏃忓尯",
+          "榫欐睙鍘�",
+          "渚濆畨鍘�",
+          "娉版潵鍘�",
+          "鐢樺崡鍘�",
+          "瀵岃鍘�",
+          "鍏嬪北鍘�",
+          "鍏嬩笢鍘�",
+          "鎷滄硥鍘�",
+          "璁锋渤甯�"
+        ]
+      },
+      {
+        "name": "楦¤タ甯�",
+        "area": [
+          "楦″啝鍖�",
+          "鎭掑北鍖�",
+          "婊撮亾鍖�",
+          "姊ㄦ爲鍖�",
+          "鍩庡瓙娌冲尯",
+          "楹诲北鍖�",
+          "楦′笢鍘�",
+          "铏庢灄甯�",
+          "瀵嗗北甯�"
+        ]
+      },
+      {
+        "name": "楣ゅ矖甯�",
+        "area": [
+          "鍚戦槼鍖�",
+          "宸ュ啘鍖�",
+          "鍗楀北鍖�",
+          "鍏村畨鍖�",
+          "涓滃北鍖�",
+          "鍏村北鍖�",
+          "钀濆寳鍘�",
+          "缁ユ花鍘�"
+        ]
+      },
+      {
+        "name": "鍙岄腑灞卞競",
+        "area": [
+          "灏栧北鍖�",
+          "宀笢鍖�",
+          "鍥涙柟鍙板尯",
+          "瀹濆北鍖�",
+          "闆嗚搐鍘�",
+          "鍙嬭皧鍘�",
+          "瀹濇竻鍘�",
+          "楗舵渤鍘�"
+        ]
+      },
+      {
+        "name": "澶у簡甯�",
+        "area": [
+          "钀ㄥ皵鍥惧尯",
+          "榫欏嚖鍖�",
+          "璁╄儭璺尯",
+          "绾㈠矖鍖�",
+          "澶у悓鍖�",
+          "鑲囧窞鍘�",
+          "鑲囨簮鍘�",
+          "鏋楃敻鍘�",
+          "鏉滃皵浼壒钂欏彜鏃忚嚜娌诲幙"
+        ]
+      },
+      {
+        "name": "浼婃槬甯�",
+        "area": [
+          "浼婄編鍖�",
+          "涔岀繝鍖�",
+          "鍙嬪ソ鍖�",
+          "鍢夎崼鍘�",
+          "姹ゆ椇鍘�",
+          "涓版灄鍘�",
+          "澶х異灞卞幙",
+          "鍗楀矓鍘�",
+          "閲戞灄鍖�",
+          "閾佸姏甯�"
+        ]
+      },
+      {
+        "name": "浣虫湪鏂競",
+        "area": [
+          "鍚戦槼鍖�",
+          "鍓嶈繘鍖�",
+          "涓滈鍖�",
+          "閮婂尯",
+          "妗﹀崡鍘�",
+          "妗﹀窛鍘�",
+          "姹ゅ師鍘�",
+          "鍚屾睙甯�",
+          "瀵岄敠甯�",
+          "鎶氳繙甯�"
+        ]
+      },
+      {
+        "name": "涓冨彴娌冲競",
+        "area": [
+          "鏂板叴鍖�",
+          "妗冨北鍖�",
+          "鑼勫瓙娌冲尯",
+          "鍕冨埄鍘�"
+        ]
+      },
+      {
+        "name": "鐗′腹姹熷競",
+        "area": [
+          "涓滃畨鍖�",
+          "闃虫槑鍖�",
+          "鐖辨皯鍖�",
+          "瑗垮畨鍖�",
+          "鏋楀彛鍘�",
+          "缁ヨ姮娌冲競",
+          "娴锋灄甯�",
+          "瀹佸畨甯�",
+          "绌嗘1甯�",
+          "涓滃畞甯�"
+        ]
+      },
+      {
+        "name": "榛戞渤甯�",
+        "area": [
+          "鐖辫緣鍖�",
+          "閫婂厠鍘�",
+          "瀛欏惔鍘�",
+          "鍖楀畨甯�",
+          "浜斿ぇ杩炴睜甯�",
+          "瀚╂睙甯�"
+        ]
+      },
+      {
+        "name": "缁ュ寲甯�",
+        "area": [
+          "鍖楁灄鍖�",
+          "鏈涘鍘�",
+          "鍏拌タ鍘�",
+          "闈掑唸鍘�",
+          "搴嗗畨鍘�",
+          "鏄庢按鍘�",
+          "缁ユ1鍘�",
+          "瀹夎揪甯�",
+          "鑲囦笢甯�",
+          "娴蜂鸡甯�"
+        ]
+      },
+      {
+        "name": "澶у叴瀹夊箔鍦板尯",
+        "area": [
+          "婕犳渤甯�",
+          "鍛肩帥鍘�",
+          "濉旀渤鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "瑗胯棌鑷不鍖�",
+    "city": [
+      {
+        "name": "鎷夎惃甯�",
+        "area": [
+          "鍩庡叧鍖�",
+          "鍫嗛緳寰峰簡鍖�",
+          "杈惧瓬鍖�",
+          "鏋楀懆鍘�",
+          "褰撻泟鍘�",
+          "灏兼湪鍘�",
+          "鏇叉按鍘�",
+          "澧ㄧ宸ュ崱鍘�"
+        ]
+      },
+      {
+        "name": "鏃ュ杸鍒欏競",
+        "area": [
+          "妗戠彔瀛滃尯",
+          "鍗楁湪鏋楀幙",
+          "姹熷瓬鍘�",
+          "瀹氭棩鍘�",
+          "钀ㄨ喀鍘�",
+          "鎷夊瓬鍘�",
+          "鏄備粊鍘�",
+          "璋㈤�氶棬鍘�",
+          "鐧芥湕鍘�",
+          "浠佸竷鍘�",
+          "搴烽┈鍘�",
+          "瀹氱粨鍘�",
+          "浠插反鍘�",
+          "浜氫笢鍘�",
+          "鍚夐殕鍘�",
+          "鑱傛媺鏈ㄥ幙",
+          "钀ㄥ槑鍘�",
+          "宀楀反鍘�"
+        ]
+      },
+      {
+        "name": "鏄岄兘甯�",
+        "area": [
+          "鍗¤嫢鍖�",
+          "姹熻揪鍘�",
+          "璐¤鍘�",
+          "绫讳箤榻愬幙",
+          "涓侀潚鍘�",
+          "瀵熼泤鍘�",
+          "鍏鍘�",
+          "宸﹁础鍘�",
+          "鑺掑悍鍘�",
+          "娲涢殕鍘�",
+          "杈瑰潩鍘�"
+        ]
+      },
+      {
+        "name": "鏋楄姖甯�",
+        "area": [
+          "宸村疁鍖�",
+          "宸ュ竷姹熻揪鍘�",
+          "绫虫灄鍘�",
+          "澧ㄨ劚鍘�",
+          "娉㈠瘑鍘�",
+          "瀵熼殔鍘�",
+          "鏈楀幙"
+        ]
+      },
+      {
+        "name": "灞卞崡甯�",
+        "area": [
+          "涔冧笢鍖�",
+          "鎵庡泭鍘�",
+          "璐″槑鍘�",
+          "妗戞棩鍘�",
+          "鐞肩粨鍘�",
+          "鏇叉澗鍘�",
+          "鎺編鍘�",
+          "娲涙墡鍘�",
+          "鍔犳煡鍘�",
+          "闅嗗瓙鍘�",
+          "閿欓偅鍘�",
+          "娴崱瀛愬幙"
+        ]
+      },
+      {
+        "name": "閭f洸甯�",
+        "area": [
+          "鑹插凹鍖�",
+          "鍢夐粠鍘�",
+          "姣斿鍘�",
+          "鑱傝崳鍘�",
+          "瀹夊鍘�",
+          "鐢虫墡鍘�",
+          "绱㈠幙",
+          "鐝垐鍘�",
+          "宸撮潚鍘�",
+          "灏肩帥鍘�",
+          "鍙屾箹鍘�"
+        ]
+      },
+      {
+        "name": "闃块噷鍦板尯",
+        "area": [
+          "鏅叞鍘�",
+          "鏈揪鍘�",
+          "鍣跺皵鍘�",
+          "鏃ュ湡鍘�",
+          "闈╁悏鍘�",
+          "鏀瑰垯鍘�",
+          "鎺嫟鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "鍐呰挋鍙よ嚜娌诲尯",
+    "city": [
+      {
+        "name": "鍛煎拰娴╃壒甯�",
+        "area": [
+          "鏂板煄鍖�",
+          "鍥炴皯鍖�",
+          "鐜夋硥鍖�",
+          "璧涚綍鍖�",
+          "鍦熼粯鐗瑰乏鏃�",
+          "鎵樺厠鎵樺幙",
+          "鍜屾灄鏍煎皵鍘�",
+          "娓呮按娌冲幙",
+          "姝﹀窛鍘�"
+        ]
+      },
+      {
+        "name": "鍖呭ご甯�",
+        "area": [
+          "涓滄渤鍖�",
+          "鏄嗛兘浠戝尯",
+          "闈掑北鍖�",
+          "鐭虫嫄鍖�",
+          "鐧戒簯閯傚崥鐭垮尯",
+          "涔濆師鍖�",
+          "鍦熼粯鐗瑰彸鏃�",
+          "鍥洪槼鍘�",
+          "杈惧皵缃曡寕鏄庡畨鑱斿悎鏃�"
+        ]
+      },
+      {
+        "name": "涔屾捣甯�",
+        "area": [
+          "娴峰媰婀惧尯",
+          "娴峰崡鍖�",
+          "涔岃揪鍖�"
+        ]
+      },
+      {
+        "name": "璧ゅ嘲甯�",
+        "area": [
+          "绾㈠北鍖�",
+          "鍏冨疂灞卞尯",
+          "鏉惧北鍖�",
+          "闃块瞾绉戝皵娌佹棗",
+          "宸存灄宸︽棗",
+          "宸存灄鍙虫棗",
+          "鏋楄タ鍘�",
+          "鍏嬩粈鍏嬭吘鏃�",
+          "缈佺墰鐗规棗",
+          "鍠�鍠囨瞾鏃�",
+          "瀹佸煄鍘�",
+          "鏁栨眽鏃�",
+          "鏂板煄鍖�"
+        ]
+      },
+      {
+        "name": "閫氳窘甯�",
+        "area": [
+          "绉戝皵娌佸尯",
+          "绉戝皵娌佸乏缈间腑鏃�",
+          "绉戝皵娌佸乏缈煎悗鏃�",
+          "寮�椴佸幙",
+          "搴撲鸡鏃�",
+          "濂堟浖鏃�",
+          "鎵庨瞾鐗规棗",
+          "闇嶆灄閮嫆甯�"
+        ]
+      },
+      {
+        "name": "閯傚皵澶氭柉甯�",
+        "area": [
+          "涓滆儨鍖�",
+          "搴峰反浠�鍖�",
+          "杈炬媺鐗规棗",
+          "鍑嗘牸灏旀棗",
+          "閯傛墭鍏嬪墠鏃�",
+          "閯傛墭鍏嬫棗",
+          "鏉敠鏃�",
+          "涔屽鏃�",
+          "浼婇噾闇嶆礇鏃�"
+        ]
+      },
+      {
+        "name": "鍛间鸡璐濆皵甯�",
+        "area": [
+          "娴锋媺灏斿尯",
+          "鎵庤祲璇哄皵鍖�",
+          "闃胯崳鏃�",
+          "鑾姏杈剧摝杈炬枴灏旀棌鑷不鏃�",
+          "閯備鸡鏄ヨ嚜娌绘棗",
+          "閯傛俯鍏嬫棌鑷不鏃�",
+          "闄堝反灏旇檸鏃�",
+          "鏂板反灏旇檸宸︽棗",
+          "鏂板反灏旇檸鍙虫棗",
+          "婊℃床閲屽競",
+          "鐗欏厠鐭冲競",
+          "鎵庡叞灞競",
+          "棰濆皵鍙ょ撼甯�",
+          "鏍规渤甯�"
+        ]
+      },
+      {
+        "name": "宸村溅娣栧皵甯�",
+        "area": [
+          "涓存渤鍖�",
+          "浜斿師鍘�",
+          "纾村彛鍘�",
+          "涔屾媺鐗瑰墠鏃�",
+          "涔屾媺鐗逛腑鏃�",
+          "涔屾媺鐗瑰悗鏃�",
+          "鏉敠鍚庢棗"
+        ]
+      },
+      {
+        "name": "涔屽叞瀵熷竷甯�",
+        "area": [
+          "闆嗗畞鍖�",
+          "鍗撹祫鍘�",
+          "鍖栧痉鍘�",
+          "鍟嗛兘鍘�",
+          "鍏村拰鍘�",
+          "鍑夊煄鍘�",
+          "瀵熷搱灏斿彸缈煎墠鏃�",
+          "瀵熷搱灏斿彸缈间腑鏃�",
+          "瀵熷搱灏斿彸缈煎悗鏃�",
+          "鍥涘瓙鐜嬫棗",
+          "涓伴晣甯�"
+        ]
+      },
+      {
+        "name": "鍏村畨鐩�",
+        "area": [
+          "涔屽叞娴╃壒甯�",
+          "闃垮皵灞卞競",
+          "绉戝皵娌佸彸缈煎墠鏃�",
+          "绉戝皵娌佸彸缈间腑鏃�",
+          "鎵庤祲鐗规棗",
+          "绐佹硥鍘�"
+        ]
+      },
+      {
+        "name": "閿℃灄閮嫆鐩�",
+        "area": [
+          "浜岃繛娴╃壒甯�",
+          "閿℃灄娴╃壒甯�",
+          "闃垮反鍢庢棗",
+          "鑻忓凹鐗瑰乏鏃�",
+          "鑻忓凹鐗瑰彸鏃�",
+          "涓滀箤鐝犵﹩娌佹棗",
+          "瑗夸箤鐝犵﹩娌佹棗",
+          "澶粏瀵烘棗",
+          "闀堕粍鏃�",
+          "姝i暥鐧芥棗",
+          "姝h摑鏃�",
+          "澶氫鸡鍘�"
+        ]
+      },
+      {
+        "name": "闃挎媺鍠勭洘",
+        "area": [
+          "闃挎媺鍠勫乏鏃�",
+          "闃挎媺鍠勫彸鏃�",
+          "棰濇祹绾虫棗"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "骞胯タ澹棌鑷不鍖�",
+    "city": [
+      {
+        "name": "鍗楀畞甯�",
+        "area": [
+          "鍏村畞鍖�",
+          "闈掔鍖�",
+          "姹熷崡鍖�",
+          "瑗夸埂濉樺尯",
+          "鑹簡鍖�",
+          "閭曞畞鍖�",
+          "姝﹂福鍖�",
+          "闅嗗畨鍘�",
+          "椹北鍘�",
+          "涓婃灄鍘�",
+          "瀹鹃槼鍘�",
+          "妯幙"
+        ]
+      },
+      {
+        "name": "鏌冲窞甯�",
+        "area": [
+          "鍩庝腑鍖�",
+          "楸煎嘲鍖�",
+          "鏌冲崡鍖�",
+          "鏌冲寳鍖�",
+          "鏌虫睙鍖�",
+          "鏌冲煄鍘�",
+          "楣垮鍘�",
+          "铻嶅畨鍘�",
+          "铻嶆按鑻楁棌鑷不鍘�",
+          "涓夋睙渚楁棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "妗傛灄甯�",
+        "area": [
+          "绉�宄板尯",
+          "鍙犲僵鍖�",
+          "璞″北鍖�",
+          "涓冩槦鍖�",
+          "闆佸北鍖�",
+          "涓存鍖�",
+          "闃虫湐鍘�",
+          "鐏靛窛鍘�",
+          "鍏ㄥ窞鍘�",
+          "鍏村畨鍘�",
+          "姘哥鍘�",
+          "鐏岄槼鍘�",
+          "榫欒儨鍚勬棌鑷不鍘�",
+          "璧勬簮鍘�",
+          "骞充箰鍘�",
+          "鑽旀郸甯�",
+          "鎭煄鐟舵棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "姊у窞甯�",
+        "area": [
+          "涓囩鍖�",
+          "闀挎床鍖�",
+          "榫欏湬鍖�",
+          "鑻嶆ⅶ鍘�",
+          "钘ゅ幙",
+          "钂欏北鍘�",
+          "宀戞邯甯�"
+        ]
+      },
+      {
+        "name": "鍖楁捣甯�",
+        "area": [
+          "娴峰煄鍖�",
+          "閾舵捣鍖�",
+          "閾佸北娓尯",
+          "鍚堟郸鍘�"
+        ]
+      },
+      {
+        "name": "闃插煄娓競",
+        "area": [
+          "娓彛鍖�",
+          "闃插煄鍖�",
+          "涓婃�濆幙",
+          "涓滃叴甯�"
+        ]
+      },
+      {
+        "name": "閽﹀窞甯�",
+        "area": [
+          "閽﹀崡鍖�",
+          "閽﹀寳鍖�",
+          "鐏靛北鍘�",
+          "娴﹀寳鍘�"
+        ]
+      },
+      {
+        "name": "璐垫腐甯�",
+        "area": [
+          "娓寳鍖�",
+          "娓崡鍖�",
+          "瑕冨鍖�",
+          "骞冲崡鍘�",
+          "妗傚钩甯�"
+        ]
+      },
+      {
+        "name": "鐜夋灄甯�",
+        "area": [
+          "鐜夊窞鍖�",
+          "绂忕坏鍖�",
+          "瀹瑰幙",
+          "闄嗗窛鍘�",
+          "鍗氱櫧鍘�",
+          "鍏翠笟鍘�",
+          "鍖楁祦甯�"
+        ]
+      },
+      {
+        "name": "鐧捐壊甯�",
+        "area": [
+          "鍙虫睙鍖�",
+          "鐢伴槼鍖�",
+          "鐢颁笢鍘�",
+          "寰蜂繚鍘�",
+          "閭e潯鍘�",
+          "鍑屼簯鍘�",
+          "涔愪笟鍘�",
+          "鐢版灄鍘�",
+          "瑗挎灄鍘�",
+          "闅嗘灄鍚勬棌鑷不鍘�",
+          "闈栬タ甯�",
+          "骞虫灉甯�"
+        ]
+      },
+      {
+        "name": "璐哄窞甯�",
+        "area": [
+          "鍏鍖�",
+          "骞虫鍖�",
+          "鏄钩鍘�",
+          "閽熷北鍘�",
+          "瀵屽窛鐟舵棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "娌虫睜甯�",
+        "area": [
+          "閲戝煄姹熷尯",
+          "瀹滃窞鍖�",
+          "鍗椾腹鍘�",
+          "澶╁敞鍘�",
+          "鍑ゅ北鍘�",
+          "涓滃叞鍘�",
+          "缃楀煄浠浆鏃忚嚜娌诲幙",
+          "鐜睙姣涘崡鏃忚嚜娌诲幙",
+          "宸撮┈鐟舵棌鑷不鍘�",
+          "閮藉畨鐟舵棌鑷不鍘�",
+          "澶у寲鐟舵棌鑷不鍘�"
+        ]
+      },
+      {
+        "name": "鏉ュ甯�",
+        "area": [
+          "鍏村鍖�",
+          "蹇诲煄鍘�",
+          "璞″窞鍘�",
+          "姝﹀鍘�",
+          "閲戠鐟舵棌鑷不鍘�",
+          "鍚堝北甯�"
+        ]
+      },
+      {
+        "name": "宕囧乏甯�",
+        "area": [
+          "姹熷窞鍖�",
+          "鎵剁互鍘�",
+          "瀹佹槑鍘�",
+          "榫欏窞鍘�",
+          "澶ф柊鍘�",
+          "澶╃瓑鍘�",
+          "鍑ゥ甯�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "瀹佸鍥炴棌鑷不鍖�",
+    "city": [
+      {
+        "name": "閾跺窛甯�",
+        "area": [
+          "鍏村簡鍖�",
+          "瑗垮鍖�",
+          "閲戝嚖鍖�",
+          "姘稿畞鍘�",
+          "璐哄叞鍘�",
+          "鐏垫甯�"
+        ]
+      },
+      {
+        "name": "鐭冲槾灞卞競",
+        "area": [
+          "澶ф鍙e尯",
+          "鎯犲啘鍖�",
+          "骞崇綏鍘�"
+        ]
+      },
+      {
+        "name": "鍚村繝甯�",
+        "area": [
+          "鍒╅�氬尯",
+          "绾㈠鍫″尯",
+          "鐩愭睜鍘�",
+          "鍚屽績鍘�",
+          "闈掗摐宄″競"
+        ]
+      },
+      {
+        "name": "鍥哄師甯�",
+        "area": [
+          "鍘熷窞鍖�",
+          "瑗垮悏鍘�",
+          "闅嗗痉鍘�",
+          "娉炬簮鍘�",
+          "褰槼鍘�"
+        ]
+      },
+      {
+        "name": "涓崼甯�",
+        "area": [
+          "娌欏潯澶村尯",
+          "涓畞鍘�",
+          "娴峰師鍘�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "鏂扮枂缁村惥灏旇嚜娌诲尯",
+    "city": [
+      {
+        "name": "涔岄瞾鏈ㄩ綈甯�",
+        "area": [
+          "澶╁北鍖�",
+          "娌欎緷宸村厠鍖�",
+          "鏂板競鍖�",
+          "姘寸(娌熷尯",
+          "澶村悲娌冲尯",
+          "杈惧潅鍩庡尯",
+          "绫充笢鍖�",
+          "涔岄瞾鏈ㄩ綈鍘�"
+        ]
+      },
+      {
+        "name": "鍏嬫媺鐜涗緷甯�",
+        "area": [
+          "鐙北瀛愬尯",
+          "鍏嬫媺鐜涗緷鍖�",
+          "鐧界⒈婊╁尯",
+          "涔屽皵绂惧尯"
+        ]
+      },
+      {
+        "name": "鍚愰瞾鐣競",
+        "area": [
+          "楂樻槍鍖�",
+          "閯杽鍘�",
+          "鎵樺厠閫婂幙"
+        ]
+      },
+      {
+        "name": "鍝堝瘑甯�",
+        "area": [
+          "浼婂窞鍖�",
+          "宸撮噷鍧ゅ搱钀ㄥ厠鑷不鍘�",
+          "浼婂惥鍘�"
+        ]
+      },
+      {
+        "name": "鏄屽悏鍥炴棌鑷不宸�",
+        "area": [
+          "鏄屽悏甯�",
+          "闃滃悍甯�",
+          "鍛煎浘澹佸幙",
+          "鐜涚撼鏂幙",
+          "濂囧彴鍘�",
+          "鍚夋湪钀ㄥ皵鍘�",
+          "鏈ㄥ瀿鍝堣惃鍏嬭嚜娌诲幙"
+        ]
+      },
+      {
+        "name": "鍗氬皵濉旀媺钂欏彜鑷不宸�",
+        "area": [
+          "鍗氫箰甯�",
+          "闃挎媺灞卞彛甯�",
+          "绮炬渤鍘�",
+          "娓╂硥鍘�"
+        ]
+      },
+      {
+        "name": "宸撮煶閮钂欏彜鑷不宸�",
+        "area": [
+          "搴撳皵鍕掑競",
+          "杞彴鍘�",
+          "灏夌妬鍘�",
+          "鑻ョ緦鍘�",
+          "涓旀湯鍘�",
+          "鐒夎�嗗洖鏃忚嚜娌诲幙",
+          "鍜岄潤鍘�",
+          "鍜岀鍘�",
+          "鍗氭箹鍘�"
+        ]
+      },
+      {
+        "name": "闃垮厠鑻忓湴鍖�",
+        "area": [
+          "闃垮厠鑻忓競",
+          "搴撹溅甯�",
+          "娓╁鍘�",
+          "娌欓泤鍘�",
+          "鏂板拰鍘�",
+          "鎷滃煄鍘�",
+          "涔屼粈鍘�",
+          "闃跨摝鎻愬幙",
+          "鏌潽鍘�"
+        ]
+      },
+      {
+        "name": "鍏嬪瓬鍕掕嫃鏌皵鍏嬪瓬鑷不宸�",
+        "area": [
+          "闃垮浘浠�甯�",
+          "闃垮厠闄跺幙",
+          "闃垮悎濂囧幙",
+          "涔屾伆鍘�"
+        ]
+      },
+      {
+        "name": "鍠�浠�鍦板尯",
+        "area": [
+          "鍠�浠�甯�",
+          "鐤忛檮鍘�",
+          "鐤忓嫆鍘�",
+          "鑻卞悏娌欏幙",
+          "娉芥櫘鍘�",
+          "鑾庤溅鍘�",
+          "鍙跺煄鍘�",
+          "楹︾洊鎻愬幙",
+          "宀虫櫘婀栧幙",
+          "浼藉笀鍘�",
+          "宸存鍘�",
+          "濉斾粈搴撳皵骞插鍚夊厠鑷不鍘�"
+        ]
+      },
+      {
+        "name": "鍜岀敯鍦板尯",
+        "area": [
+          "鍜岀敯甯�",
+          "鍜岀敯鍘�",
+          "澧ㄧ帀鍘�",
+          "鐨北鍘�",
+          "娲涙郸鍘�",
+          "绛栧嫆鍘�",
+          "浜庣敯鍘�",
+          "姘戜赴鍘�"
+        ]
+      },
+      {
+        "name": "浼婄妬鍝堣惃鍏嬭嚜娌诲窞",
+        "area": [
+          "浼婂畞甯�",
+          "濂庡悲甯�",
+          "闇嶅皵鏋滄柉甯�",
+          "浼婂畞鍘�",
+          "瀵熷竷鏌ュ皵閿′集鑷不鍘�",
+          "闇嶅煄鍘�",
+          "宸╃暀鍘�",
+          "鏂版簮鍘�",
+          "鏄嫃鍘�",
+          "鐗瑰厠鏂幙",
+          "灏煎嫆鍏嬪幙"
+        ]
+      },
+      {
+        "name": "濉斿煄鍦板尯",
+        "area": [
+          "濉斿煄甯�",
+          "涔岃嫃甯�",
+          "棰濇晱鍘�",
+          "娌欐咕鍘�",
+          "鎵橀噷鍘�",
+          "瑁曟皯鍘�",
+          "鍜屽竷鍏嬭禌灏旇挋鍙よ嚜娌诲幙"
+        ]
+      },
+      {
+        "name": "闃垮嫆娉板湴鍖�",
+        "area": [
+          "闃垮嫆娉板競",
+          "甯冨皵娲ュ幙",
+          "瀵岃暣鍘�",
+          "绂忔捣鍘�",
+          "鍝堝反娌冲幙",
+          "闈掓渤鍘�",
+          "鍚夋湪涔冨幙"
+        ]
+      },
+      {
+        "name": "鐭虫渤瀛愬競",
+        "area": [
+          "鏂板煄琛楅亾",
+          "鍚戦槼琛楅亾",
+          "绾㈠北琛楅亾",
+          "鑰佽琛楅亾",
+          "涓滃煄琛楅亾",
+          "鍖楁硥闀�",
+          "鐭虫渤瀛愰晣"
+        ]
+      },
+      {
+        "name": "闃挎媺灏斿競",
+        "area": [
+          "骞哥璺閬�",
+          "閲戦摱宸濊矾琛楅亾",
+          "闈掓澗璺閬�",
+          "鍗楀彛琛楅亾",
+          "鎵樺杸渚濅埂",
+          "涓�鍥㈤噾閾跺窛闀�",
+          "浜屽洟鏂颁簳瀛愰晣",
+          "涓夊洟鐢樻硥闀�",
+          "鍥涘洟姘稿畞闀�",
+          "浜斿洟娌欐渤闀�",
+          "鍏洟鍙屽煄闀�",
+          "涓冨洟鐜涙哗闀�",
+          "鍏洟濉旈棬闀�",
+          "涔濆洟姊ㄨ姳闀�",
+          "鍗佸洟鏄屽畨闀�",
+          "鍗佷竴鍥㈣姳妗ラ晣",
+          "鍗佷簩鍥㈠鍗楅晣",
+          "鍗佷笁鍥㈠垢绂忛晣",
+          "鍗佸洓鍥㈤噾鏉ㄩ晣",
+          "鍗佷簲鍥�",
+          "鍗佸叚鍥㈡柊寮�宀晣"
+        ]
+      },
+      {
+        "name": "鍥炬湪鑸掑厠甯�",
+        "area": [
+          "閿︾唬琛楅亾",
+          "鍓嶆捣琛楅亾",
+          "姘稿畨鍧濊閬�",
+          "鍥涘崄涓�鍥㈣崏婀栭晣",
+          "鍥涘崄浜屽洟榫欏彛闀�",
+          "鍥涘崄鍥涘洟姘稿畨闀�",
+          "鍥涘崄浜斿洟鍓嶆捣闀�",
+          "鍥涘崄鍏洟姘稿叴闀�",
+          "鍥涘崄鍏洟娌充笢闀�",
+          "鍥涘崄涔濆洟娴峰畨闀�",
+          "浜斿崄鍥㈠娌抽晣",
+          "浜斿崄涓�鍥㈠攼椹块晣",
+          "浜斿崄涓夊洟閲戣儭鏉ㄩ晣",
+          "浜斿崄鍥涘洟鍏村畨闀�",
+          "浼藉笀鎬诲満鍢夊拰闀�"
+        ]
+      },
+      {
+        "name": "浜斿娓犲競",
+        "area": [
+          "鍐涘灕璺閬�",
+          "闈掓箹璺閬�",
+          "浜烘皯璺閬�",
+          "涓�闆朵簩鍥㈡ⅶ妗愰晣",
+          "涓�闆朵笁鍥㈣敗瀹舵箹闀�"
+        ]
+      },
+      {
+        "name": "鍖楀悲甯�",
+        "area": [
+          "澶╅獎琛楅亾",
+          "榫欑枂琛楅亾",
+          "鍐涘灕琛楅亾",
+          "鍖楀悲闀�",
+          "涓�鍏笁鍥㈠弻娓犻晣",
+          "涓�鍏竷鍥赴搴嗛晣",
+          "涓�鍏叓鍥㈡捣宸濋晣"
+        ]
+      },
+      {
+        "name": "閾侀棬鍏冲競",
+        "area": [
+          "杩庡琛楅亾",
+          "浜屽崄浜屽洟娌崇晹闀�",
+          "浜屽崄鍥涘洟楂樻ˉ闀�",
+          "浜屽崄涓冨洟澶╂箹闀�",
+          "浜屽崄鍏洟鍗氬彜鍏堕晣",
+          "涓夊崄鍥㈠弻涓伴晣",
+          "涓夊崄鍏洟绫冲叞闀�",
+          "涓夊崄涓冨洟閲戝北闀�",
+          "涓夊崄鍏洟鍗楀悲闀�",
+          "浜屼簩涓夊洟寮�娉介晣"
+        ]
+      },
+      {
+        "name": "鍙屾渤甯�",
+        "area": [
+          "鍏崄涓�鍥㈠弻妗ラ晣",
+          "鍏崄鍥涘洟鐭冲唱闀�",
+          "鍏崄浜斿洟",
+          "鍏崄鍏洟鍗氭渤闀�",
+          "鍏崄涔濆洟",
+          "涔濆崄鍥㈠弻涔愰晣"
+        ]
+      },
+      {
+        "name": "鍙厠杈炬媺甯�",
+        "area": [
+          "鍏崄涓夊洟姒嗘爲搴勯晣",
+          "鍏崄鍥涘洟鑻囨箹闀�",
+          "鍏崄鍏洟",
+          "鍏崄涓冨洟",
+          "鍏崄鍏洟闀夸赴闀�"
+        ]
+      },
+      {
+        "name": "鏄嗙帀甯�",
+        "area": [
+          "鍥涘崄涓冨洟鑰佸叺闀�",
+          "鐨北鍐滃満鏄嗘硥闀�",
+          "涓�鐗у満鏄嗙墽闀�",
+          "浜屼簩鍥涘洟",
+          "浜屼簩浜斿洟鐜夋硥闀�"
+        ]
+      },
+      {
+        "name": "鑳℃潹娌冲競",
+        "area": [
+          "涓�浜屼笁鍥�",
+          "涓�浜屽洓鍥�",
+          "涓�浜屼簲鍥�",
+          "涓�浜屽叚鍥�",
+          "涓�浜屼竷鍥�",
+          "涓�浜屽叓鍥�",
+          "涓�浜屼節鍥�",
+          "涓�涓夐浂鍥�",
+          "涓�涓変竴鍥�",
+          "涓�涓変竷鍥�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "棣欐腐鐗瑰埆琛屾斂鍖�",
+    "city": [
+      {
+        "name": "棣欐腐鐗瑰埆琛屾斂鍖�",
+        "area": [
+          "涓タ鍖�",
+          "婀句粩鍖�",
+          "涓滃尯",
+          "鍗楀尯",
+          "娌瑰皷鏃哄尯",
+          "娣辨按鍩楀尯",
+          "涔濋緳鍩庡尯",
+          "榛勫ぇ浠欏尯",
+          "瑙傚鍖�",
+          "鍖楀尯",
+          "澶у煍鍖�",
+          "娌欑敯鍖�",
+          "瑗胯础鍖�",
+          "鑽冩咕鍖�",
+          "灞棬鍖�",
+          "鍏冩湕鍖�",
+          "钁甸潚鍖�",
+          "绂诲矝鍖�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "婢抽棬鐗瑰埆琛屾斂鍖�",
+    "city": [
+      {
+        "name": "婢抽棬鐗瑰埆琛屾斂鍖�",
+        "area": [
+          "鑺卞湴鐜涘爞鍖�",
+          "鍦e畨澶氬凹鍫傚尯",
+          "澶у爞鍖�",
+          "鏈涘痉鍫傚尯",
+          "椋庨『鍫傚尯",
+          "鍢夋ā鍫傚尯",
+          "鍦f柟娴庡悇鍫傚尯",
+          "璺肮鍩�"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "鍙版咕鐪�",
+    "city": [
+      {
+        "name": "鍙板寳甯�",
+        "area": [
+          "涓鍖�",
+          "澶у悓鍖�",
+          "涓北鍖�",
+          "涓囧崕鍖�",
+          "淇′箟鍖�",
+          "鏉惧北鍖�",
+          "澶у畨鍖�",
+          "鍗楁腐鍖�",
+          "鍖楁姇鍖�",
+          "鍐呮箹鍖�",
+          "澹灄鍖�",
+          "鏂囧北鍖�"
+        ]
+      },
+      {
+        "name": "鏂板寳甯�",
+        "area": [
+          "鏉挎ˉ鍖�",
+          "鍦熷煄鍖�",
+          "鏂板簞鍖�",
+          "鏂板簵鍖�",
+          "娣卞潙鍖�",
+          "鐭崇鍖�",
+          "鍧灄鍖�",
+          "涔屾潵鍖�",
+          "浜旇偂鍖�",
+          "鍏噷鍖�",
+          "鏋楀彛鍖�",
+          "娣℃按鍖�",
+          "涓拰鍖�",
+          "姘稿拰鍖�",
+          "涓夐噸鍖�",
+          "鑺︽床鍖�",
+          "娉板北鍖�",
+          "鏍戞灄鍖�",
+          "鑾烘瓕鍖�",
+          "涓夊场鍖�",
+          "姹愭鍖�",
+          "閲戝北鍖�",
+          "涓囬噷鍖�",
+          "涓夎姖鍖�",
+          "鐭抽棬鍖�",
+          "鐟炶姵鍖�",
+          "璐″鍖�",
+          "鍙屾邯鍖�",
+          "骞虫邯鍖�"
+        ]
+      },
+      {
+        "name": "妗冨洯甯�",
+        "area": [
+          "妗冨洯鍖�",
+          "涓潨鍖�",
+          "骞抽晣鍖�",
+          "鍏痉鍖�",
+          "鏉ㄦ鍖�",
+          "鑺︾鍖�",
+          "澶ф邯鍖�",
+          "榫欐江鍖�",
+          "榫熷北鍖�",
+          "澶у洯鍖�",
+          "瑙傞煶鍖�",
+          "鏂板眿鍖�",
+          "澶嶅叴鍖�"
+        ]
+      },
+      {
+        "name": "鍙颁腑甯�",
+        "area": [
+          "涓尯",
+          "涓滃尯",
+          "瑗垮尯",
+          "鍗楀尯",
+          "鍖楀尯",
+          "瑗垮悲鍖�",
+          "鍗楀悲鍖�",
+          "鍖楀悲鍖�",
+          "涓板師鍖�",
+          "澶ч噷鍖�",
+          "澶钩鍖�",
+          "涓滃娍鍖�",
+          "澶х敳鍖�",
+          "娓呮按鍖�",
+          "娌欓箍鍖�",
+          "姊ф爾鍖�",
+          "鍚庨噷鍖�",
+          "绁炲唸鍖�",
+          "娼瓙鍖�",
+          "澶ч泤鍖�",
+          "鏂扮ぞ鍖�",
+          "鐭冲唸鍖�",
+          "澶栧煍鍖�",
+          "澶у畨鍖�",
+          "涔屾棩鍖�",
+          "澶ц倸鍖�",
+          "榫欎簳鍖�",
+          "闆惧嘲鍖�",
+          "鍜屽钩鍖�"
+        ]
+      },
+      {
+        "name": "鍙板崡甯�",
+        "area": [
+          "涓タ鍖�",
+          "涓滃尯",
+          "鍗楀尯",
+          "鍖楀尯",
+          "瀹夊钩鍖�",
+          "瀹夊崡鍖�",
+          "姘稿悍鍖�",
+          "褰掍粊鍖�",
+          "鏂板寲鍖�",
+          "宸﹂晣鍖�",
+          "鐜変簳鍖�",
+          "妤犺タ鍖�",
+          "鍗楀寲鍖�",
+          "浠佸痉鍖�",
+          "鍏冲簷鍖�",
+          "榫欏磶鍖�",
+          "瀹樼敯鍖�",
+          "楹昏眴鍖�",
+          "浣抽噷鍖�",
+          "瑗挎腐鍖�",
+          "涓冭偂鍖�",
+          "灏嗗啗鍖�",
+          "瀛︾敳鍖�",
+          "鍖楅棬鍖�",
+          "鏂拌惀鍖�",
+          "鍚庡鍖�",
+          "鐧芥渤鍖�",
+          "涓滃北鍖�",
+          "鍏敳鍖�",
+          "涓嬭惀鍖�",
+          "鏌宠惀鍖�",
+          "鐩愭按鍖�",
+          "鍠勫寲鍖�",
+          "澶у唴鍖�",
+          "灞变笂鍖�",
+          "鏂板競鍖�",
+          "瀹夊畾鍖�"
+        ]
+      },
+      {
+        "name": "楂橀泟甯�",
+        "area": [
+          "妤犳鍖�",
+          "宸﹁惀鍖�",
+          "榧撳北鍖�",
+          "涓夋皯鍖�",
+          "鐩愬煏鍖�",
+          "鍓嶉噾鍖�",
+          "鏂板叴鍖鸿嫇闆呭尯",
+          "鍓嶉晣鍖�",
+          "鏃楁触鍖�",
+          "灏忔腐鍖�",
+          "鍑ゅ北鍖�",
+          "澶у鍖�",
+          "楦熸澗鍖�",
+          "鏋楀洯鍖�",
+          "浠佹鍖�",
+          "澶ф爲鍖�",
+          "澶хぞ鍖�",
+          "鍐堝北鍖�",
+          "璺鍖�",
+          "妗ュご鍖�",
+          "姊撳畼鍖�",
+          "寮ラ檧鍖�",
+          "姘稿畨鍖�",
+          "鐕曞发鍖�",
+          "闃胯幉鍖�",
+          "鑼勮悾鍖�",
+          "婀栧唴鍖�",
+          "鏃楀北鍖�",
+          "缇庢祿鍖�",
+          "鍐呴棬鍖�",
+          "鏉夋灄鍖�",
+          "鐢蹭粰鍖�",
+          "鍏緹鍖�",
+          "鑼傛灄鍖�",
+          "妗冩簮鍖�",
+          "閭g帥澶忓尯"
+        ]
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/app_base/src/main/res/raw/welcome.json b/app_base/src/main/res/raw/welcome.json
new file mode 100644
index 0000000..0347258
--- /dev/null
+++ b/app_base/src/main/res/raw/welcome.json
@@ -0,0 +1 @@
+{"v":"5.5.2","fr":30,"ip":0,"op":136,"w":976,"h":671,"nm":"Hi Animation","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"h path 2 Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[987.04,469.648,0],"ix":2},"a":{"a":0,"k":[154.5,299.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,54.658]],"v":[[-99.143,-243.983],[-99.574,119.373],[-98.794,145.015]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.207843137255,0.517647058824,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":22,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[154.325,299.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[96]},{"i":{"x":[0.36],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":41,"s":[0]},{"i":{"x":[0.627],"y":[-2.176]},"o":{"x":[0.289],"y":[0]},"t":60,"s":[32]},{"i":{"x":[0.693],"y":[0.768]},"o":{"x":[0.281],"y":[-0.012]},"t":97,"s":[32.748]},{"t":105,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[98]},{"i":{"x":[0.36],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":41,"s":[55.4]},{"i":{"x":[0.627],"y":[-2.176]},"o":{"x":[0.289],"y":[0]},"t":60,"s":[94.4]},{"i":{"x":[0.693],"y":[0.768]},"o":{"x":[0.281],"y":[-0.012]},"t":97,"s":[96.608]},{"t":105,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1950,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"h path 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[749.5,449.5,0],"ix":2},"a":{"a":0,"k":[154.5,299.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-54.658,0],[0,54.658]],"o":[[0,0],[0,0],[0,54.658],[54.66,0],[0,0]],"v":[[-99.143,-243.983],[-99.143,142.703],[-98.794,145.015],[0.174,243.983],[99.143,145.015]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.733333333333,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":22,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[154.325,299.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[96]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.64],"y":[0]},"t":60,"s":[0]},{"t":97,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[98]},{"i":{"x":[0.675],"y":[-2.679]},"o":{"x":[0.342],"y":[0]},"t":60,"s":[55.4]},{"i":{"x":[0.675],"y":[0.696]},"o":{"x":[0.37],"y":[-0.022]},"t":97,"s":[56.806]},{"t":105,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1950,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"h path 1 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[749.5,447.5,0],"ix":2},"a":{"a":0,"k":[154.5,202.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[54.659,0],[0,-54.658],[0,0]],"o":[[0,0],[0,0],[0,-54.658],[-54.658,0],[0,0],[0,0]],"v":[[98.969,147.132],[98.969,51.627],[98.969,51.868],[-0.001,-47.101],[-98.969,51.868],[-98.969,-147.132]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.733333333333,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":22,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[154.5,202.632],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.74],"y":[1]},"o":{"x":[0.4],"y":[0.8]},"t":0,"s":[68]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.114],"y":[0.292]},"t":15,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.26],"y":[0]},"t":64,"s":[0]},{"t":97,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.74],"y":[1]},"o":{"x":[0.4],"y":[0.8]},"t":0,"s":[65]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.114],"y":[0.399]},"t":15,"s":[100]},{"i":{"x":[0.657],"y":[-9.391]},"o":{"x":[0.323],"y":[0]},"t":64,"s":[67.4]},{"i":{"x":[0.683],"y":[0.716]},"o":{"x":[0.281],"y":[-0.009]},"t":97,"s":[67.703]},{"t":105,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1950,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Hi files","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[473.436,364,0],"ix":2},"a":{"a":0,"k":[750,500,0],"ix":1},"s":{"a":0,"k":[108,108,100],"ix":6}},"ao":0,"w":1500,"h":1000,"ip":29,"op":136,"st":29,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.46,"y":1},"o":{"x":0.001,"y":0.504},"t":3,"s":[498.378,416.11,0],"to":[0,7.167,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":0.609},"o":{"x":0.54,"y":0},"t":12,"s":[498.378,459.11,0],"to":[0,0,0],"ti":[1.844,44.19,0]},{"i":{"x":0.16,"y":1},"o":{"x":0.54,"y":0},"t":19,"s":[498.378,416.11,0],"to":[19.917,-49.917,0],"ti":[-20.594,42.719,0]},{"t":35,"s":[621.94,159.798,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.335,1.335,0]},"t":21,"s":[55.407,55.407,100]},{"t":35,"s":[10.1,10.1,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.845751594095,0.012161032359,0.012161032359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":130,"st":3,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.46,"y":1},"o":{"x":0.001,"y":0.504},"t":4,"s":[521.864,548.108,0],"to":[0,9,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":0.608},"o":{"x":0.54,"y":0},"t":13,"s":[521.864,602.108,0],"to":[0,0,0],"ti":[2.053,34.822,0]},{"i":{"x":0.16,"y":1},"o":{"x":0.301,"y":1},"t":20,"s":[521.864,548.108,0],"to":[9.4,-19.933,0],"ti":[-9.4,10.933,0]},{"t":35,"s":[578.264,482.508,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.16,0.16,0.16],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.4,1.4,0]},"t":21,"s":[53,53,100]},{"t":35,"s":[11,11,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078431373,0.733333333333,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":36,"st":4,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.999,"y":0.496},"o":{"x":0.001,"y":0.504},"t":6,"s":[575.274,318.062,0],"to":[0,6.833,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":0.619},"o":{"x":0.54,"y":0},"t":15,"s":[575.274,359.062,0],"to":[0,0,0],"ti":[-9.167,15.167,0]},{"i":{"x":0.16,"y":1},"o":{"x":0.27,"y":1},"t":22,"s":[575.274,318.062,0],"to":[9.167,-15.167,0],"ti":[-9.167,8.333,0]},{"t":35,"s":[630.274,268.062,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.16,0.16,0.16],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.4,1.4,0]},"t":21,"s":[35,35,100]},{"t":35,"s":[12.2,12.2,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.182193397073,0.579084927428,0.000757008265,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":36,"st":6,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.46,"y":1},"o":{"x":0.001,"y":0.56},"t":0,"s":[324.44,338.069,0],"to":[0,5.167,0],"ti":[-0.191,0.573,0]},{"i":{"x":0.999,"y":0.496},"o":{"x":0.54,"y":0},"t":10,"s":[324.44,369.069,0],"to":[0.191,-0.573,0],"ti":[-1.576,28.726,0]},{"i":{"x":0.999,"y":0.953},"o":{"x":0.54,"y":0},"t":20,"s":[325.585,334.633,0],"to":[49.678,18.231,0],"ti":[-49.487,-23.97,0]},{"t":29,"s":[622.507,478.452,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.16,0.16,0.16],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.4,1.4,0]},"t":21,"s":[100,100,100]},{"t":35,"s":[10.5,10.5,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.207843137255,0.517647058824,0.964705882353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":36,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file

--
Gitblit v1.9.1