From ec9c8e7ab7a7f6f9179011a25a616700aff1b9b8 Mon Sep 17 00:00:00 2001
From: linG <3137168214@qq.com>
Date: Fri, 3 Dec 2021 00:28:40 +0800
Subject: [PATCH] =?UTF-8?q?:tada:=20=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9?=
 =?UTF-8?q?=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .github/workflows/maven-publish.yml           |  43 ++++
 .gitignore                                    |  35 +++
 LICENSE                                       | 201 ++++++++++++++++
 README.md                                     | 166 +++++++++++++
 images/logo.png                               | Bin 0 -> 2761698 bytes
 jetgeo-core/pom.xml                           |  47 ++++
 .../main/java/com/ling5821/jetgeo/JetGeo.java | 163 +++++++++++++
 .../jetgeo/cache/RegionCacheLoader.java       |  32 +++
 .../jetgeo/config/JetGeoProperties.java       |  55 +++++
 .../com/ling5821/jetgeo/enums/LevelEnum.java  |  32 +++
 .../com/ling5821/jetgeo/model/GeoInfo.java    |  47 ++++
 .../com/ling5821/jetgeo/model/JsonPoint.java  |  26 ++
 .../ling5821/jetgeo/model/RegionCache.java    |  40 ++++
 .../com/ling5821/jetgeo/model/RegionInfo.java |  22 ++
 .../com/ling5821/jetgeo/model/Tuple2.java     |  35 +++
 .../com/ling5821/jetgeo/model/WGS84Point.java |  29 +++
 .../com/ling5821/jetgeo/utils/S2Util.java     | 226 ++++++++++++++++++
 .../java/com/ling5821/jetgeo/utils/Utils.java | 109 +++++++++
 .../com/ling5821/jetgeo/JetGeoExample.java    |  37 +++
 .../java/com/ling5821/jetgeo/JetGeoTests.java | 133 +++++++++++
 jetgeo-spring-boot-starter/pom.xml            |  59 +++++
 .../starter/JetGeoAutoConfiguration.java      |  32 +++
 .../jetgeo/starter/JetGeoProperties.java      |  54 +++++
 .../main/resources/META-INF/spring.factories  |   2 +
 .../JetGeoStarterApplicationTests.java        |  44 ++++
 .../jetgeo/starter/cmq/CmqTcpHandler.java     | 102 ++++++++
 .../jetgeo/starter/model/GpsInfo.java         |  14 ++
 .../src/test/resources/application.yml        |   3 +
 pom.xml                                       | 192 +++++++++++++++
 29 files changed, 1980 insertions(+)
 create mode 100644 .github/workflows/maven-publish.yml
 create mode 100644 .gitignore
 create mode 100644 LICENSE
 create mode 100644 README.md
 create mode 100644 images/logo.png
 create mode 100644 jetgeo-core/pom.xml
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/JetGeo.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/cache/RegionCacheLoader.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/config/JetGeoProperties.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/enums/LevelEnum.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/model/GeoInfo.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/model/JsonPoint.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/model/RegionCache.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/model/RegionInfo.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/model/Tuple2.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/model/WGS84Point.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/utils/S2Util.java
 create mode 100644 jetgeo-core/src/main/java/com/ling5821/jetgeo/utils/Utils.java
 create mode 100644 jetgeo-core/src/test/java/com/ling5821/jetgeo/JetGeoExample.java
 create mode 100644 jetgeo-core/src/test/java/com/ling5821/jetgeo/JetGeoTests.java
 create mode 100644 jetgeo-spring-boot-starter/pom.xml
 create mode 100644 jetgeo-spring-boot-starter/src/main/java/com/ling5821/jetgeo/starter/JetGeoAutoConfiguration.java
 create mode 100644 jetgeo-spring-boot-starter/src/main/java/com/ling5821/jetgeo/starter/JetGeoProperties.java
 create mode 100644 jetgeo-spring-boot-starter/src/main/resources/META-INF/spring.factories
 create mode 100644 jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/JetGeoStarterApplicationTests.java
 create mode 100644 jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/cmq/CmqTcpHandler.java
 create mode 100644 jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/model/GpsInfo.java
 create mode 100644 jetgeo-spring-boot-starter/src/test/resources/application.yml
 create mode 100644 pom.xml

diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml
new file mode 100644
index 0000000..b605b33
--- /dev/null
+++ b/.github/workflows/maven-publish.yml
@@ -0,0 +1,43 @@
+# This workflow will build a Java project with Maven
+# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
+
+name: jetgeo
+
+on:
+  push:
+    tags:
+      - "*"
+    branches:
+      - "*"
+
+jobs:
+  build:
+
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v2
+      # 缓存放在 actions/setup-java@v2 之后会导致缓存内容覆盖已经生成好的settings.xml
+      - name: Cache Maven packages
+        uses: actions/cache@v2
+        with:
+          path: ~/.m2
+          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+          restore-keys: ${{ runner.os }}-m2
+      - name: Set up JDK 1.8
+        uses: actions/setup-java@v2
+        with:
+          # v2版本必须制定分发类型
+          distribution: adopt
+          java-version: 8
+          overwrite-settings: true
+          server-id: ossrh
+          server-username: MAVEN_USERNAME
+          server-password: MAVEN_PASSWORD
+          gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
+          gpg-passphrase: MAVEN_GPG_PASSPHRASE
+      - run: mvn -B deploy
+        env:
+          MAVEN_USERNAME: ${{ secrets.MAVEN_CENTER_USER_NAME }}
+          MAVEN_PASSWORD: ${{ secrets.MAVEN_CENTER_PASSWORD }}
+          MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..13fe6f6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,35 @@
+### Java template
+# Compiled class file
+*.class
+target
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+## IDEA
+.idea
+*.iml
+
+## Data
+city
+province
+district
+source_data
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3721f48
--- /dev/null
+++ b/README.md
@@ -0,0 +1,166 @@
+<img align="center" src="./images/logo.png" width="1134" alt="jetgeo Logo" />
+
+<p align="center">
+   <a href="https://github.com/linG5821/jetgeo/blob/main/.github/workflows/maven-publish.yml"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/linG5821/jetgeo/jetgeo"></a>
+   <a href="https://github.com/linG5821/jetgeo/releases"><img alt="GitHub release (latest SemVer)" src="https://img.shields.io/github/v/release/linG5821/jetgeo?sort=semver"></a>
+   <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/linG5821/jetgeo">
+   <a href="https://github.com/linG5821/jetgeo/blob/main/LICENSE"><img alt="GitHub" src="https://img.shields.io/github/license/linG5821/jetgeo"></a>
+</p>
+
+<p>
+   jetgeo 是一个用于离线逆地理编码的库,支持转换位置到县/地区级别, 
+通过它你可以消耗一定的内存以换取一个内存级别的转换。主要适用于精度要求不高的一些服务端场景。
+如果你需要一个精确定位的场景,那么它可能并不合适,此时你可能需要适用地理位置信息提供商的一些服务, 
+但他们往往有次数限制或者需要支付更多的费用。
+</p>
+
+## 目录
+
+- [快速开始](#快速开始)
+- [核心依赖](#核心依赖)
+- [贡献者](#贡献者)
+- [如何参与开源项目](#如何参与开源项目)
+- [作者](#作者)
+- [鸣谢](#鸣谢)
+
+### 快速开始
+
+1. 导入依赖
+
+   ```xml
+   <dependency>
+       <groupId>com.ling5821</groupId>
+       <artifactId>jetgeo</artifactId>
+       <version>${jetgeo.version}</version>
+   </dependency>
+   ```
+
+2. 下载项目目录地理位置资源包 [geodata.7z](https://github.com/linG5821/jetgeo/blob/main/data/geodata.7z)
+
+3. 解压数据到你的目录 例如 `/data/geodata`
+
+> 注意: 解压后目录结构
+>
+> geodata
+>
+> ├── province
+>
+> ├── city
+>
+> ├── district
+
+5. 一个例子
+
+   ```java
+   public class JetGeoExample {
+       public static final JetGeo jetGeo;
+       static {
+           JetGeoProperties properties = new JetGeoProperties();
+           //填写你的geodata的目录
+           properties.setGeoDataParentPath("/data/geodata");
+           //设置逆地理编码的级别
+           //properties.setLevel(LevelEnum.province);
+           //properties.setLevel(LevelEnum.city);
+           properties.setLevel(LevelEnum.district);
+           jetGeo = new JetGeo(properties);
+       }
+   
+       public static void main(String[] args) {
+           //这里的经纬度坐标需要使用 wgs84 坐标系
+           GeoInfo geoInfo = jetGeo.getGeoInfo(32.053197915979325,118.85999259252777);
+           System.out.println(geoInfo);
+       }
+   }
+   ```
+
+   ```shell
+   GeoInfo(formatAddress=江苏省南京市玄武区, province=江苏省, city=南京市, district=玄武区, street=, adcode=320102, level=null)
+   ```
+
+### 核心依赖
+
+- [google-s2](https://github.com/google/s2-geometry-library-java.git)
+- [hutool](https://github.com/dromara/hutool.git)
+- [lombok](https://github.com/projectlombok/lombok.git)
+- [spring-boot](https://github.com/spring-projects/spring-boot.git)
+- [junit5](https://github.com/junit-team/junit5.git)
+
+### 贡献者
+
+请阅读**CONTRIBUTING.md** 查阅为该项目做出贡献的开发者。
+
+### 如何参与开源项目
+
+贡献使开源社区成为一个学习、激励和创造的绝佳场所。你所作的任何贡献都是**非常感谢**的。
+
+1. Fork the Project
+2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
+3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
+4. Push to the Branch (`git push origin feature/AmazingFeature`)
+5. Open a Pull Request
+
+### 作者
+
+<table>
+  <tbody>
+    <tr>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/linG5821.png?s=150">
+            <br>
+            <strong>linG5821</strong>
+            <br>
+            <a href="https://github.com/linG5821">@linG5821</a>
+        </td>
+     </tr>
+  </tbody>
+</table>
+
+*您也可以在贡献者名单中参看所有[参与该项目的开发者](https://github.com/linG5821/jetgeo/graphs/contributors).*
+
+### 版权说明
+
+Apache License 2.0, see [LICENSE](https://github.com/linG5821/jetgeo/blob/master/LICENSE).
+
+### 鸣谢
+
+<table>
+  <tbody>
+    <tr>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/Tangchaoyue.png?s=150">
+            <br>
+            <strong>Tangchaoyue</strong>
+            <br>
+            <a href="https://github.com/Tangchaoyue">@Tangchaoyue</a>
+            <p>感谢 @Tangchaoyue(lfr) 的陪伴, 支持以及给项目起的名字,给我极大的信心与鼓励,并且在我编码的时候耐心的照顾我的生活</p>
+        </td>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/halfrost.png?s=150">
+            <br>
+            <strong>halfrost</strong>
+            <br>
+            <a href="https://github.com/halfrost">@halfrost</a>
+            <p>感谢 @halfrost 大佬的文章</p>
+            <a href="https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_spatial_search.md">高效的多维空间点索引算法 — Geohash 和 Google S2</a>
+            <a href="https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_s2_regionCoverer.md">Google S2 是如何解决空间覆盖最优解问题的</a>
+        </td>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://profile.csdnimg.cn/4/E/A/3_qq_43777978?s=150">
+            <br>
+            <strong>跳舞D猴子</strong>
+            <br>
+            <a href="https://blog.csdn.net/qq_43777978">@跳舞D猴子</a>
+            <p>感谢 @跳舞D猴子 的文章</p>
+            <a href="https://blog.csdn.net/qq_43777978/article/details/116800460?ivk_sa=1024320u">Google的S2算法原理以及使用Java版本</a>
+        </td>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/lssaidong.png?s=150">
+            <br>
+            <strong>lss</strong>
+            <br>
+            <a href="https://github.com/lssaidong">@lssaidong</a>
+            <p>感谢 @lssaidong 贡献的项目 Logo</p>
+        </td>
+     </tr>
+  </tbody>
+</table>
\ No newline at end of file
diff --git a/images/logo.png b/images/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..2edf29744aa3299a643211037c568aad0556e785
GIT binary patch
literal 2761698
zcmeF43!DyR`^O*TPhM;!(ni}#N=hQH5^W^%iX0M&7C9t`MA(FlL~@KA5^W@h91^cX
z!oCiXL)wxYN+Nla+LY9$?Em*$GreP)nP(om>^{4{>+|{U%-r`ir|--Y_tpKZ7w&IZ
zw@`sA3IqayLig6YyGbB$QTIR~cWnOuL(9GrWuvgT_=$Qgdj$eFl_9zM&APKsAW-1G
z$7<KU|NhQBdiUtnxyKVx_tvf*^~94sIzHC5Lm<#^@3f|UTa5p;c+D?=?GVwt*6tq{
zPwM(?AiB)_{F^UnIpdO-0&SnWq-e~>p~DL_FLqgxSL;2nVeqE~>P;JdFyXoto$eYj
z{Gk^gc(~dRSA9PF-vgdb{{H(@pPhQ|$g4;G_%LoqM0}B=*N*#UMwh^CO@`ia`|hj8
zG^)4ZgVpi5FRORpqNq#0*}AS%-i?94k9p$y4eb5)oqyz7)FY5P@WiJ#T~l<^SE)nZ
zz5m(=15x7w2cnA}`A4p?O#+*5YPPvpVDsgHx0^0`v_N1&Aka1LnOf0-d4&SUPTX5F
zZ(#S_@t>Cn?4EJu-28!2xdKzJt9woEm{oz;2cB(GA$Q`sK*Ic(=$kG|T$n4q<+5Aq
z=8j*TH_&Hvi?I<gv4Qw0wJK~2L{-Zjs9pNf?Rlaa<Vm>s<FyCoKJvuS74>oj61Tp*
zebT=^u3T)z%O73Q_op8Z9K8DAx~_|BwJmY|B^@vRI{MW~Q_Eah??|2o9~KM*u1HDx
z&*^G+jy>|t*I#|p@krO?6B}ooe*DKC(KW9={^jZSM&`aKa7n`*$$K9;e0W!$CpP7J
z`>C~$&utah+dR<u%aqoY_g$RuP=Sx0PI)n|+8;5cr@wyx<~vGVS>PZ4_`Ynr*H_<s
z=*60;mA~q7;KhL_(R+H|(?14!z7jKKLE_9IfA(zKz0blXqmOL8s8*%!zaA-bdehKB
ze~!LB>0p(`4_CNs#PJp{thhh=zD;o}n~b~r>JMH%SoGULw;aD};-43f?^`G^|M^CV
z4VUHn_tvh71AoYs`^Ca7KJF8U8Tj*!Bd_?!xWFZys@xLyYalRwZOWLK8*&A<PkQ4}
zAn@LQFMoK>gc1$j&mRcfo$ze=x9`eV@IS@oCl-G7Kc(JFERnnI|J@x^@S4OsE~)i@
zU&mir;PuNV-c_<$;_bUH`uE#;u1F~I%2$^x{ZFN8g^nC3`tY;gJyGKSVlSV*?(+AZ
zzxblNHs`;z?bWvrFVb%G?&uHmmzXm8qUg5us=O5cM%1^%i#3kkxcSL9a?h>RWnAle
zWq!Kx$zr#SdN}6yvHLbh-7?~j5%1NlG~wBI8t2)W`>B|fbFR8##QO=ol6qH(XdORs
z#^Xs>EG=Cle%XxKN&ouqQ@sNNMvQJBpH!)E$B}#5K0I<*o!A#zTygED;_VN&xV8D1
zTicgv@y|Y&MJ7&fo1Fie+%LvodMtmN=Pp^-b@14+bz3xOQF~6=V`Y{WeK-Gu7Y})^
z(z<fd<L5M5TK4IpDI5B=yM6K47Wd4*_J^xWUp>8Sn{tIOePn#SYYKnx($@_OTwQkT
zE%*N8-pA|ht9RoYP2Z^b@g<MF+Thyn#&-K)|JV87iJu=eY25O$5n~&@bn1ikUoS6q
z`^Mo18(ci&nkH{dC|dv44tE~DXx3}D)S8koukrS|(|6{dH~jY39=f+%LZAC9HXSzi
z(kf5AQg-{);<dNFapTNSKYHb{PLKWCx#G9I-@W*YA*Jg~`e@R}kN-E{w@1Dma-wg+
zLeCc(vZ-FX>q<UevVY0hmoG0_aY}<X^L{dE%I0P_e|AgclunZ)Cii%tMfsEEpSf(@
zmZC4;{&Mq|2fln{Ub6>!J#gozar6Gs?5zhP-fGi)z?=6xu;l(jb1&Xm{H;&tmU>{-
z+^P#dY|^*MnEQ7$eq`pFNB$iAd;3D~JU{fFgy-wcY}S7H`z1$RUHtu9Ivj6NYuA&_
z^L$s~@yYkKYxPdbu?Bteo{H>Kv44Z6wR_F$IKSh#j?=#Bxjk3m_ZJ`d@wPp$*8lM8
z4-0+R|HeEw-g)EVU0oJ*TrhCKKleVpcg@~*-#__%@$bLeoBY%h(_*GonD)!<-ERN&
zsf*vO`flTQhrYY-sU1gae$xKCxNk51Wy>#xzx^Vq?l0X=%>1Rq(d1ppNmu>z<|_HC
zjxE`>QnmI!ZX4VFzmHFTY(>(K&wVwg$kxv9j@!_AX41Vg%dNQfhhd!#-P*52&5rYX
zT-k1ZmHiz)fBcTN?H;>j-y0j=*!cCD>$gvM{FRRHCN2G>_qJ`DD||kG_xulzjlS*E
zS0A6=cFmsm_Wdzx=&U-gZmj=e)fYES+&l4^t$8QjH}Ti`lbhFU9@qSr=AX^Kch|$;
zRrs#kt_Qo`ANk<af>Upwx^>x{1ydJn=rgt3m&Fbi8*}}~*Z<PA``${&{y0|P*el2W
z@B7<Mwmn()WVe$$N^QHcXsKP*dslzv$=*+G>(lj#_r81Mt19c~ZkW6N+Xp*Ec6z<n
zw4ZM+@#eqAZY?^g&!iGfyUiXkyZdWTZ+-dj6+gWD@xMR$W#-gXQ$Js@r`ygiw$<1;
z;H^{l-841wgVyV7B;R%7$6s3<?78jGwAoW<ulsrIk&12lv}xJq)aufWmb`lH^j$Z1
z+q`c>s{^aI_K&^2W{nQNfB0>ln(x=l{o2#74O{c(n&>ZUtSK{a*T5+Q^ZhaXRQ2Dt
z{yFBiwO_^kRQ!0uys^3dlk0G<)z4n>?2<f>=eg>lDHqMkcWd5Jc~|{k#ey|2t5xvg
zLM^X)a(s`(5<f+zw6FYmrwXqmUA86vw96if{Qc%_*ET4<tH|i*cjW)_l7T(mOlk1#
zwq^N;AE?`P_=>9@D><b^%79|mm%nA+O-CCqZQ8qM?_VqIn*VjnQ=L|iK0apd$d%Ri
zby@agpHB0;bZyeL{jsSl;#bUD@oc|gztuTDsc7#@uetd97rx%Gdqa&E4)w}?r0Xk{
zU;X-(W)pk2UwHWQ87oVC^X-RQr}w?1<*hBpK2vSz<f4<_x%2Rls9N_|yu8uj+1>9e
zb?HyfO&!{(&YBscW;9;Bd`0~`UixNQ^OsLn`=a`Q+P`;xzR^8Ty<hp_Mon&r8&~qB
zm1Tauule1(_Rrt3r{|s<Z=3MygjZ)aDfHOHr8j(b^YZJKH|lu94dV-a9rsPQEs^7g
zZTa=<GAX@&-gjBop$(E|E^V^#{=&r@RGf1|zgCyG>bIia>Ut0Dto&ui(??Uv{9|zO
zXI77W`~DSgFWJ4KU(4eMqSw}0RlLlLO-uB>sZ#4E?>^e^u^&Gku(k8ncP9RM|G^eb
z9{8zC+~+@yZZhQKS+i>2F!;eLFVCIu!Pf2zPdv1;{bg-me)NIlE|WfO)qGI-5-&e8
z|B3l?7XJ43JuALB_+Z0FK7HnwxNdv*?ytXm%lF^a`|geJy3hZ$<=RE{S9iJV(~qA2
zvCx9Z<D(8oKGLoJ{@$-Y-Q}0j+m~+NvOUkOZEyX))wX5x_x<#G)tM)so;IlU*5-dM
zcx(BZJ=gBtwf2j?{eLbzq|{~A_a{#{_TIm5==b2`tLqH-rTfP}4E|!w740J5UHi?z
zFILp;+i2tTG5u%t&v&v;@^@W&_vrfhqP1(^xwu=Cs-sHRyZwp7Q{#K=o%;PNegFN$
zL*)yvyX)|O%6<9fGyM<U|KHa?T>ts{?O#qAwEUO+-_?t|;p5xaJ~jWwncWg<yuLd5
zzawW(E7hh{-8IWo2PRiK)c&bWw~l#mdcw5pY8+4bdhqx|vmc#3eOkjiYwVozdEBoJ
z{+RN3>&C5DcdET(`kf_u|IlFhBfoy|^Zp}aTL1Xo6DOj7ZMU!N@_#L;v9LznflvJT
zRlP;6dVJU6*R9__c*nxtC+_>MdQ$QygMROl_-U`te*5gE*005_PJaJb<nr#<esSfB
zvhV)#Tc4BPm*`vIhX$XwetJy5MSrZ>`{&VozegM$wDk1i4vF0k{1%%SyJLOJh~&Z-
z51W2^Lh2{OzWTWCwz{8|xu?viG1IQPDzeZOtABd*!|`9uerNWjJGKmLo*MUEueXkT
z`RBn?|Ju>wkKI51Bjv>%YZu1N{rSn{x8^RoeN&lDSH1UPT#e&z{;}Z0eFKtLB)|LR
zrqx$Xx$cjc)A#?J^n3eFvp;I|Yt19ioc^QYuh0E_s_e(FRmR^oquSSNa$g|ublE^4
zen=pYl8WWGfxuHY2LeZ91A*Ho2LdH}y!6P%djjQ4M%;V%UCsLC3Zx<_S1NxhWIzUF
zKn7$$24p}6WIzUFKn7$$24p}6vYdh3S?-E-K{6l%G9UvoAOkWW12P~3G9UvoAOkWW
z18D|SxY3Is12P~3G9UvoAOkWW12P~3G9UvoAOl&{fC@KR^ug$|WIzUFKn7$$24p}6
zWIzUFKn7$$24p~m8@&TEAOkWW12P~3G9UvoAOkWW12P~3GLS_LsBn`-AB-+b24p}6
zWIzUFKn7$$24p}6WIzUFKn7H}(K{dmG9UvoAOkWW12P~3G9UvoAOkWW16kC73O8Bw
z!RWGNKn7$$24p}6WIzUFKn7$$24p}6WI%-*y#q2J12P~3G9UvoAOkWW12P~3G9Uvo
zkVOrsaFazJj4n$CWIzUFKn7$$24p}6WIzUFKn7$$22{AwJ0JrxAOkWW12P~3G9Uvo
zAOkWW12P~3S=4|EH(B(-=(1!$24p}6WIzUFKn7$$24p}6WIzUFK!qE<12P~3G9Uvo
zAOkWW12P~3G9UvoAOkXxMGdHMlSLnlE=vYvKn7$$24p}6WIzUFKn7$$24p}6RJhSQ
zAOkWW12P~3+0j6*_|t>3<9+F#WIzUFKn7$$24o;78c_8nCq8xEvkb_949I{C$bbyU
zfDFih49I{C$Us;aP~j#l9+NIo24p}6WIzUFKn7$$24p}6WIzUFASW77;U*_Ob=|WJ
z$bbyUfDFih49I{C$bbyUfDFh$SQt>@CM+J4E>Z?$Kn7$$24p}6WIzUFKn7$$24o;7
z8c^XTCq8xEvkb_949I{C$bbyUfDFih49I{C$Us;aP~j#l9+NIo24p}6WIzUFKn7$$
z24p}6WIzUFASW77;U*_Ob=|WJ$bbyUfDFih49GyXG7z6SC|li+Zbk-VKn7&MW<b>&
zn-FcvfDFih49I{C$bbyUfDFih49I{C$Us&xpu$a7c@nw~8IS=PkO3Kx0U3}18IS=P
zkO3Kx0U59vP~pZVM4K`o12P~3G9UvoAOkWW12P~3G9UvokW~z*aFbP@gswvdWIzUF
zKn7$$24p}6WIzUFKn7$$25bgYxUmV*rVPk{49I{C$bbyUfDFih49I{C$bbxF6$2{V
zWR)kO>yQB%kO3Kx0U3}18IS=PkO3Kx0U3}1n*kMWY(lgt12P~3G9UvoAOkWW12P~3
zG9Uw4)<Asfpe%cBy0G(SK-HV`=T=9S0U3}18IS=PkO3Kx0U3}18IS=Pkb!g=P~j$B
z`n0nQ$bbyUfDFih49I{C$bbyUfDFih44gj$D%_kuw>q*6$bbyUfDFih49I{C$bbyU
zfDFih45Z6|3ODJ}r=4X$24p}6WIzUFKn7$$24p}6WIzUF;QSd-;pY6g)sbaD24p}6
zWIzUFKn7$$24p}6WIzUFAYBGjxJj2j?JNT_AOkWW12P~3G9UvoAOkWW12P~3=g)u&
zH|Ni-jw}N*AOkWW12P~3G9UvoAOkWW12P~3=`x_gO}g}j`OfjFgTnj{bonwM12P~3
zG9UvoAOkWW12P~3GLZcZsCtwApRw*x24p}6WIzUFKn7$$24p}6WIzUFAWRLYa1*8v
zPM0kMG9UvoAOkWW12P~3G9UvoAOkXx{SByall`Bu?ob9~Kn7$$24p}6WIzUFKn7$$
z24o;i4XAJvrVmb+Edw$j12P~3G9UvoAOkWW12P~3GLZcZsBn}0pRw*x24p}6WIzUF
zKn7$$24p}6WIzUFAWRLYa1*8vPM0kMG9UvoAOkWW12P~3G9UvoAOkXx{SByall`Bu
z?ob9~Kn7qSK6Q{h$bbyUfDFih49I{C$bbxlrvX)O!t=T5s%1b1WIzUFKn7$$24p}6
zWIzUFKn8Mv0Tpg?z(dw8%76^WfDFih49I{C$bbyUfDFih41}iv6>h@wx#_B9Kn7$$
z24p}6WIzUFKn7$$24p}6a)1F9ZgRjw)-B3_49I{C$bbyUfDFih49I{C$bbxlrvVji
z!t=T5s%1b1WIzUFKn7$$24p}6WIzUFKn8Mv0Tpg?z(dw8%76^WfDFih49I{C$bbyU
zfDFih41}iv6>h@wx#_B9Kn7$$24p}6WWdcpeCi;#F15>m49I{C$bbxlr2$oM!t$}{
zqGdn^WIzUFKn7$$24p}6WIzUFKn8Mx0Tpg?!c*2g%76^WfDFih49I{C$bbyUfDFih
z41}ct6>h@vvFV~^Kn7$$24p}6WIzUFKn7$$24p}6a)JRBZgRp?);-FA49I{C$bbyU
zfDFih49I{C$bbxlr2!Rg!t$}{qGdn^WIzUFKn7$$24p}6WIzUFKn8Mx0Tpg?!c*2g
z%76^WfDFih49I{C$bbyUfDFih41}ct6>h@vvFV~^Kn7$$24p}6WIzUFKn7$W5QtA5
zBn>hk13AHfsy8{|DeE3(Kn7$$24p}6WIzUFKn7$$24p}6!qR{WH(~kMbkQ;(12P~3
zG9UvoAOkWW12P~3G9Uvv!GH=kIpHbm9%VoVWIzUFKn7$$24p}6WIzUFKnB9nfC@KZ
z`Pg*PG9UvoAOkWW12P~3G9UvoAOkWW13AHf3O707DeE3(Kn7$$24p}6WIzUFKn7$$
z24p}6!qR{WH(~kMbkQ;(12P~3G9UvoAOkWW12P~3G9Uvv!GH=kIpHbm9%VoVWIzUF
zKn7$$24p}6WIzUFKnB9nz+Z)%_|!pRc>}s=8IS=PkO3Kx0U3}18IS=PkO3Kx0U5~F
z2L7tvWb3=s&B=fa$bbyUfDFih49I{C$bbyUfDFh$7#dLFCJY~%E?EX-Kn7$$24p}6
zWIzUFKn7$$24o;-7*OFRXFO-!r3}b`49I{C$bbyUfDFih49I{C$UqnxP~j#FADS*%
z24p}6WIzUFKn7$$24p}6WIzUFAZHj*;U;H1XWgX?$bbyUfDFih49I{C$bbyUfDFh$
z7#dLFCJY~%E?EX-Kn7$$24p}6WIzUFKn7$$24o;-7*OFRXFO-!r3{>HAU<`_*$vu~
z0U3}18IS=PkO3Kx0U3}18OX8*RK3Zvk46_J12P~3G9UvoAOkWW12P~3G9UvokkbvQ
zaFf&D0NuX~$bbyUfDFih49I{C$bbyUfDFh$mNlTlO_qH$x-c1#0U3}18IS=PkO3Kx
z0U3}18IXaTZa{^boc;#r{$)T0WIzUFKn7$$24p}6WIzUFKnAj`0Tpht?4!|z$$$*V
zfDFih49I{C$bbyUfDFih4CHhJD%|AsH$e9<12P~3G9UvoAOkWW12P~3G9UvokYx?1
zaFb;pjV??EWIzUFKn60xKz!<;j5v&rAp<fX12P~3G9Uvoka-4Fy~#ZHI<pMOfDFih
z49I{C$bbyUfDFih49I{Ccp6aQ##4_vWk3dGKn7$$24p}6WIzUFKn7$$24o=f45)CE
zdG2*)8IS=PkO3Kx0U3}18IS=PkO3Kx0U7W#pu&x(9(Brq49I{C$bbyUfDFih49I{C
z$bbyUK;{`x;U@Fk>&!AB12P~3G9UvoAOkWW12P~3G9Uvo;AudG8&5szlmQu#0U3}1
z8IS=PkO3Kx0U3}18IXa@GoZpv=DF9IWk3dGKn7$$24p}6WFR9A#HS9*$iwMaG9Uvo
zAOl&(fT}lH=27TEWIzUFKn7$$24p}6WIzUFKn7$$24vuD11j8{?L%8KAOkWW12P~3
zG9UvoAOkWW12P~3GLU5qsBn{I9)&JM24p}6WIzUFKn7$$24p}6WIzUFKnBh>pu)}B
zKC~qRG9UvoAOkWW12P~3G9UvoAOkWW16js^3O8BiQRqTsKn7$$24p}6WIzUFKn7$$
z24p}6WZ-NAD%_myLt8Q+12P~3G9UvoAOkWW12P~3G9UvokYx<0aFb;og)T$}WIzUF
zKn7$$24p}6WIzUFKnDC7h)*5lFHu?9!+@$c+2c9tE@VIkWIzUFKn7$$24p}6WIzUF
zKnAj*0Tpht;X~Ce$$$*VfDFih49I{C$bbyUfDFih3}g=jD%@m`=cv1o0U3}18IS=P
zkO3Kx0U3}18IS=P$c6?~xXFeORktJqG9UvoAOkWW12P~3G9UvoAOkXxJq)ODlRciJ
z?m`A+Kn7$$24p}6WIzUFKn7$$24o-`8c^XT8$MLsk_^az49I{C$bbyUfDFih49I{C
z$Uycmpu$b|c#gUY8IS=PkO3Kx0U3}18IS=PkO3Kxfoy0%g_~^nP(!_?_|!q6?xK7d
zkO3Kx0U3}18IS=PkO3Kx0U3~i3uQpnn+s)H=aB&!kO3Kx0U3}18IS=PkO3Kx0U3~i
z5Dlns6QVGs%YY2XfDFih49I{C$bbyUfDFih49LKRGN8iEg)*)4$bbyUfDFih49I{C
z$bbyUfDFih49Gx;22{8SQJB(YKn7$$24p}6WIzUFKn7$$24p}6WZ*&>P~ql6nbvt^
zKn7$$24p}6WIzUFKn7$$24p}6WFSNXD%^x9OzAQp12P~3G9UvoAOkWW12P~3G9Uvo
zaG?xbbfHe9^T>b<$bbyE8z|g$fqQ30_Qa<S%E-g%STYc<2J+#;Q^NJ)b=@*>Aq@O9
zq3MM<jm{whG9Uvo;M0JrH$FuvO$KB@24p}6WZ=9Sh``Y~9XQ!IO9d>ef>NLaIBpPy
zB{75hU2JURF_wQC%R*R20v2md0`_yA=Qs>lz+vtwa2hb@DEJMWFxJ`kU%-5>v+odK
zo<as>Kn7$$24p}6&bt8>ZqB=6oj?X;Kn7$$24ui6z`_g*DN)9f#hH4bGBAS$6h=mW
zr@O$J!>0W#f}bQk!RtH*Sm0qH=paY}JHdXyLJ#}R`@yP024p}6WIzUFKn6lLpu$b)
z&a{UN$bbyUfDFihw}FD_E(^@rGS#qN$JoZgGcvkh<9V`lbn-fj8}KkJJ~ifwN3fu?
z6zm3^vBM(I9-xo`8IS=PkO3Kx0apVm+_<VyhYZMo49I{C$UqPSEL^ZaQwgw0!*v#E
zN&>~-4Md}<``?=bThO){u#oeKu{?pLLIz|&24p}6WIzT2D%|KLkO3Kx0U3}183<;8
zUn{BsIBTXfU;%<(b2?wa*(fXuF*r-*3&6IYKw-e5#ty()FDw%61IIxW;MbP;J87-~
z1;7Ci0r<OZ4g-Ewi^u*I@OR@B1?*!kX9_WwMJVRv2kblFQ57d3*4U1XM6kwKp2Sii
z12P~3G9UvokOK{<aFYWcx^7tpWIzUFKn8*sV4;Quj>e!JhyocA{GBiV0W7rem;ACY
zk{7U@g&58_IRZ`t7G+pWIoFvdtFUiI1PeEGVgBM{x`{GiafkgZ_Hd>VXB=fz@T*s(
zmvKOP*ant^l^_WyWIzUFKn7$$26BJ_6>f6CL)I<IfDFih49Gwb1Le@)4Ae3Rk{-01
zGh4O*&X!@3h8zIg_8TnToNLj>?>YSBr69?E-MlxaD27JP)?uNC#T*u%>Vl>qy}{W)
zF$OOf2iu6{dcfr>z-zTceCi;}mR4mz24p}6WIzVO*np}xVf^rP=`tV#G9UvoaE=Dd
zY7M7#R0PrIa2!@>b^=yrtn10xJ_>STaQcurg~+`BsaRPEIE9HZ<;)^b9m@*F`nfK6
z3}VJIth@s_E$0AG$bbyUfDFih3}gcXD%@m)hp1bS0U3}18IXY>1~>)eUQh?{7pjC>
zFgS#LR)EjI8ldm$Ktc#%e%ERd_UUZdj|DVNb*co)0B%QubB+4gkuVN`M8F~rVL?qH
z12P~3G9Uvo5QYYFrKYBa;brTRWk3dGAbS}o+;u_rx*^?7RxrTXG&Mm(5CcL9&ZOA{
zz5?3-2mXq4Gf)z{ePis(?|}6I{J<XoPQjvDbHD-&pJ7JDW*lf1;JJ@v)IoKe>}lYq
z2^sMfzwGHocO?TdAOo3UK!uyku&#5;fDFih&43CwHX+(P7Xt;bllk?Vu2>J{>rY3K
z&w)K>gz)P&+*V|afx$S;0Ea`ZLK}bEFbiY+XQWO7dlW|l3pnO%sUr4-bKKs7{pJBa
zZ~HItImbh4x9ns<g`4d3G<7dBAOqRKfC@L+;VJ4KWIzVO-hc`>VgCp->jpTRgI~3|
z8^i*?aSVw&z)Zjy7*0h4G%M0+fM0w10HgqZMe0w`0<geV8WaQ!evK*7U=5a>@#GZc
z(8%AF(+p(PY@GEt)@;C8RVv~@f+7%5;YM$P49I{CWGw?K++?lip{tPr8OWgqRJh5Z
z5B}V4y9RdSEQ}bye}~#{upq!f4F~A@s*GQ2>B}>JDRDdw^Q`Sq{3oay0nVnW4e|jq
zSX7$==78g7qiq?1ZGH`og&dL*!Sjv*d`}cP*nkQ*Ir!o0)@48jvZMhOZnETK(M8FC
z4CFKeD%|9>Cm!<svOv=kJOE0Dus4e}Q^6vT62g8;O}_!_SEN?raD73N%V9b5hQ${a
z<n9F4XUu2F0?tz4RdD0XE6&7e4a}K5SUu;MfIay;arhNFMGiBd!cAB{@c7h0VR_xU
zXc>?JzXnvj@oP$XG9Uvoa2^e)dUGD-hVP+^;L<r7e-u;=;WmaMm;WyG9&kK_{gj$<
z23U!i3-VeHc>?R3z(&Aoj#pKr4*DMhJdQOIvB63Xt8qtxTU0~`t3cd82BatW9V%7;
zmx7(?Igs`Z9|Nl1gwM0mmCAq&<O~BU+~kbsth<x}8OY)WRJh6F59q>P9;aSB1X_h~
zS`Oxy0TygjtO-Hfc}Qi^<u$;f4ZnNDX)_f7+gX5%1`HN%<^!*PW-1c>{7zJJP!r?^
z3>Ja7@0(y1@QSkN<Ww9M0Ikz`y!LVH<8M+P0p__Ss6BfaP~j$fJV)Jy49GzCF`&Xt
z_IZ}N6B&?!FgBpVO&CACjJfm(9EQKSb^zdD-A^PU={>-L%?_Z*d;|Q>(rV)}`28pr
zIjq6L$>X3MFpDTDSZDEt1)Rko88`*M1I6RFG?vAUqyt#8U^fG>u;LZf(aD)St-O+a
z^znOJqrj^`g+d>~!YxIGn{az#x?UNOf$VNTg`4dDgmr&1AOm4xK!uyIcueQxBJ1Ly
zT>xiQ_z4c~SAun5kDncsbHNPoS+200Z7SCJYbRLbut#n*)C2tO#7#j-z&Hi??}SeS
zEXKG+K6Eq#oJA7@%;49WI2&d<*k?96EQ_FxGk`dghv!dE@II%2U`3<!oJ0FwU;`@L
zTwvikoeao;3<NQt!c7oC>Xrc+kbw(fK!uwNVL3~kg9GO00KdlKC-_hO@M|}kS>wmn
zh0kHphO=c@P_YJQ&&&cWxFrIo;7poWz;~hsFk=^1CIHTAVL`_&s-lAhoDQ}Getm8t
zSZ`~$Z?b5_SwQ{m9U*S>t6!X9v?#>=l%53*sBn`7ABrwX24o;d8{q%(QOJM{$bbyU
zfDD{}100}t0$%|B;@V(E8xH!1gEF8EP|*ewvS9G5NBp<HS+wEThpq;<0T$ahv!yFo
z3qAr3fIay8YFMD*@31Ki27+UtJYeDFYcLoT2TrjCjU7P=&<&V{8h-U|9ryrn-7Suw
z;~9_#aQ{Q#T%sCwqK9t*i$Hwe6*3?LG9UvoAOjg-Kr?PKK%x#I12P~3={2AkH|aH)
zrS~s|tK&eHMH@engd`5$y}l~r=QzqazXn*Cm<`Ng42vgIZKq^$?h(LeU(D#^%oKjL
zD8blvTJYE{0Shj*jD*uz&H&SaS)4Jt{<erj3%>#t3n~G|F2H>Wi-KNJADz7J=3YrY
z`i3Bf#mAFAa+Q*W3~0tp7J3-E6d8~K8GwP@HVg5o{5G~i24p}6WIzUFAVUmrn#4G8
z5csLw#3S!!166JyA`3@lTpO!wX61&L`U8L1Vjs3SrR6fv8?cJO=_#*)-GJY5vj2q)
zO=<sh6e~fsK~1m}FfSIY1Dk+XW#usXUjny)2LUTaoW?T}@O>N)Dgw7yh7Rt>>mCYt
z-RBYmu+uM~|GDg}ePloeWIzUFKnBhjaQe%F+{l0o$bbyUfDD|wf$G@x6~OO}boX%>
z4$!Xz&jJ<$6j|FqFI*lAC(*XcoR4jOUx<Ynr!c=uH3FT-KsmtogoTtoz%ACJ<34Z$
zU@_(d;5p`kZ@@4R3EW~HI{5u97J%k}f}ktl_qUdS7~mGXP8Obug0|pXzq7|*>cqm<
zV?clRgam~Q$bbyUfDD9UK!13KVoSL)AOkWW12W)lfWKXKE!Y4!lOkB~dnBa+zh}c4
z5{j&CfCagC!AOt?@cHqV%kUYp7{h`}W5A-$G*A}U<0u;X0{$`_&S+T)Saf*->;?Tn
zao`lY(AWd8$oC{*5v3&P2RM6&#Sw111q(neK@~6s@SSS__|E<t)CX>nf{p~h89Y43
zb`WY5!44C_&tNccyH9i}WIzUFKn7$$2CN43i*Bqov@QcOAOo3XK)>iFlf-AtY3txH
z96Z<Zc{mR8hX4-r6<Oav0bC*r4V-DiNCwTo8g5vEg@~Sjvq~b2cFvF)2#y=uP7A&_
zEXXu8I+^=C7zbD|@e0no=?$71Nz7+qX)NGu8L!BT&PM_Fk2VrFVmSeDW=^nZjD$|0
zZm>j`{?llW17pA`mmD=`k^%jqn@kd~)5?Gh$bgH1+%D~EmH`=%0U3}18Spm1nG!Pq
zXJK&g9V|FNy$*23#ff0a>d$lo{5ulA>b4b_MH^lepB-n;*n@2>MBE6b8lBvqGif>)
z+fEA>fEt0?fa?)}GjP5HeSlYNMrSi{2UrU70nXatzJrWyEF6Qyl1ZQ};B_a1>R>kb
z1enDjtUAUbwAKUv1hX77yc_A4_xUYo?wzV$8IS=PkO3LU*#`KBra}f}Kn7$$24uj$
zfg(s94Za4geeTAAHNW1n$7jCMGS>hLE&TcsXT7kn!9vU!a0rwFEY@+hiBm9#Uw^v`
ztOuNl^9tAoyk@7cXv5;oJzyCq30T<p6tn|ge`ni>e*PYunt%nBf*>C79$5V0JL?vw
z(J>s91}rM>0~Nr0!24_kykZMF9|kN~P4`N4>EpG{1?xZ^mmD?AfDFih49Gx^HsJM_
zfE+DGH!lM+AOkWW12zK@*d7Lc06lGe!8Y~hZ7@Tb-=7zkz*#E%SCCj}VZnw)5Ek87
zh+*N4#SIoYSX7w|SloyNPLYVlnxF|_F{CnB0TzOCz%5px<6q!5z*#iq0e@%CK@hBn
z!a@<x$0AAshypDB90U9vI0b=Qa3;|Ra4ldFh}XeF${XMd5Nrm{PUN%){Fl*Yf>5Id
zc3`1sHQ+rfWIzUFKn7$$1`GrGi=<u!8OXr~;!`<BQOJM{_%*;O7C(Z1K6ZEqIh=CA
zQS1&Qe-@U-jCC!to`J5oq;EhxC;%8^04pI|xM7JnthWS504o}t+QRq4Em#3!MI_!x
zXpANI3HD!Meiw>W6uwKWq(lN%Qdj}14!nYul(vB1Wm*aNm%jdh*UWb~*k1ydBIh2!
z??dre(SVgI{wCuX;1x;eYy<dDVa@SMbm^;wc1|_oGf~KZ49I{C$bbyMK(If!B}oQk
zKn7$$26D222Dtf8z+@j1_#Kxjpb<y}6+k7xC<R^v`M9CT5(Zd|cn*9G#)D!Y8JNLm
z$u_58LE?JA;!Z)p_k%?hemBZ3o<#?z?MyKe;<5Y^v^KWg7K!L!5ryAL+5_r>4PXhV
z2)u$tCl+7$JuJSTyw+iW_uLf(3l@Dig@@<nvFd}hfW@O2;1#>j*%CAZJ8X%Yv3=Cm
zX5Zv9`5DC8JG3nWG9UvoAOktgfC@J`?TPDtWk3dGKnDC6;EaY300+k`z<9+}bd~}9
zj>~pX4e&cL93XSRIvjAu4ZnNB<FSaN$UFlql(6{l1>h`{l7O?MSg0uq8i6CA2H<Ze
z=5uq3<7j*mu&Bc4+zNaGczm}wgpSUD`>+ra1!e#iLdpWK;5&33=nYap1Mm^xd&Yu{
zSFAxN-%qk0@Sewm-JmH57Cbj+@3aT|KwUtGoPkpnc*O#A-U3*_;pc-<8SDWGfF9j~
z_w^d!_o#w>4&9ESb{UWX8IS=P2zvu6+=Trj)D6gh49I{CWS{{K6ej}CXb3hS<p7w2
z*^Xd8U<?3>pfOkq_%)X}z`;5PymbI)BE$g2g)<P1Q}qKZRIpGI0~m8adB9?gSyW&V
zhtHMIFAA_|&>gtNDs-?gF%%RBJpO3l72JpC;Cpcbun@wcPfrjmMj?R(oJmF^?~D7!
z8rxorW$3I4cwWwUDF^0*6(HFAj+C_DK+JQqV3iE&0~R<Z13LB!7I3P7wqPe<VT|5c
zgbEh?-0&WI1xr-F49I{C$bbxFM+3RD<4x(FWIzUFKn7&s91JwYKKu&FV?p*kfPM}*
zIRNIY2?htS+rVIO5O8Kf7hujNsD<_NfWhL>YA_xY0gCfuAR33|?3cxWgMQ9TDGRK@
zVj5?D*y9iy?gK26FvbBEC%obrbaF<^0nih0MhXifUNHrod@p8#e1HWX{(hH+z$*@*
zlkXP`A@e{K;LH>j9Qm#V3!b+$=nD>mx_||kiGal?uQ-j)F`$gGWNs(03-sqkkVrs3
zf9rER;Ag>lzD3w(A<HdBqT@@zLXJWPWIzUFKn8M*f!sOfPIaR)AOkWW12W)jfCFdF
zIG7J2oKya4eF<w<1J24Yg9CbgWu!7l0Jnnaz>GmyVex=}<}L#)1{?uh0SC*?fg)oJ
zl)_=?bsP8s%m6Hcun;p4aJI;0z%0lNz<Oig7QNBY44eckPAmlZfLrkS)&_|n27Cy5
z0k7b-wE--`tO0x<`M&VI@;Vo~(`E@hh-FQ%15^jA!CX)hctr|2M}R9q7r=LtMa$iQ
zUJ3%QNJb}T-rN9Y0bc8KfbN66)Aac)V4=$z<*+dm?6fx8)}ye^Sx|fyrGP>PWIzUF
zKnAkCfn2GnsoDM}b%Qb>12T}+4HWLWAgf<ucD+6hPzU?Cx&6rL064HVqY_p)xULG0
z0S;n0=rki5E7L#>I0e{00Wc~64)V=`=XR_Q19}l4A;gG8J_`jbz|^qq%VNeru+-Mh
zO%@r<86qrx%wwZVu$aPUSq*FiEddKIUeO1ge5Sd<O2A+6%l9N$@S1pS3>GlDfkY52
z3LxPH(A7vhj^z^|!PpMAD2@bPZ#yILD3)D--*=LQ%b}nyVDO%MfIZysh;8WOzSh``
zjgz33wb5n05!$VVRF^b0hhpHT2~9&uSFQ}mfDFjMc{aemOekbP24p}6WFV&*;DGQG
zFxbb94@XWJU@h8k77b@pR0SL~-UO^gn}*ol1!6!F_$M%nHdqau1}x^7!GY_1umN-e
z5g=nDK9$#;ZK5RZqy=E*jMDak(SVg3R!6n~GnQe+sdB@9e!r<VR}h@0;x%051HBE*
z0oB1Kz!$(PMxc}XumZ!1249*wAXu;hatlZV6~J0B5(JBrNMNOh(_rQSzDTcu)qs`8
zU~v=)?E$~b#Og_Lz!&okP!<G>?MSExSh3-?@Sb;rai9Qj3!aC;=P@a5?M#*IdaPSN
zct+RX7K_m`1LXT#j~Zk^24p}6WFVUu(6pOu@*s5^G9UxtZ9vm*F6i?chO_naamEA4
zX$d%pHKQC>rUG+%M_;USfNl-z@mbM{1+3PX(Eux)!odM+0(cda0<oYjFoXMYQ2HNm
z%xuho%P8D4t79yfu<&6oLaayIK9C4lut)*z03EX!aTnMH+=A}{pBaONhm~n-?ms4?
zi{C3c4B7xc#RX1>=>r%;z`(S%;6JR_#sW|WV0|CGj!+++ENJnaWw0<ZG;Ph_k65G)
z0MSPJOIY%{j~m-wi(=^H)S*sB(jF{X(6PJadw&q{`LN)`s0HFd4Zz^O1wkY?JmMt!
z9tMj%a@6J1fTrE}6s0s7kO3LEKn7H}xj>?I8X1rQ8SpZo!i|@m4C~`SFaekYQLh6J
zM`xTZAr{+X0cSF70iD4PU`7F~%mxjOhAvo|GYE{Pw81+E@eKPp@}g}8;K0=yDcD#F
zmVs5^5Xi1Ux5WXcA+-d2W<`Kov`5Eum(Fo$?+!Q<q>4+9**pL%gTWENb93nxJnjha
zCwLM}0l}gL5@rBC=S0A3-w%QX3sx+G#2ATA#X_UYaWM?7EC4ZB{Net5m;6L-Bys;f
zMl!FrC*V{wKT!!uJa=;=IRQ%+uFU(UM?NP$L;A1=&%@6OeH{lZSd{|hfmh5zCubfd
zdnKvQ+kgr;-hR|812P~37utXdHy7Ht&L;yhAOj8tRJd`FlCe$J84q4Z-iXeQV3#E+
z3hUzmXUZ@*^MHfO)7&tkB9{D0Nd<5iv;k{?H6~)?F{7a^mI=nXxnPlkgH8@k=Kx+y
zHBbwb1ZJ=hkpwshXCa5na173%C<m$n7FM`k7UTog*oO_eSPAw37RKTMgTLW+S=yTO
zj}OsY3GkWqa8CKFl?4hG8Tj0qfnWpw7RcfAVsT>>=naAe@AVbH_vJ8Pv4Z#IC-}~>
zfWrbI@0kS{zt5iU)=0qfGw7oaNa2Q$;Co0vF-C3zmQR9Uj*RrQ&(2_M@L3!O0|7lJ
z0JBKPcitW>(u@XmjgIwLo&@|%<Tcuy7QC-m;B-u<e6`sOsBmKwqD>i)0U5|-11j8P
z@&nN6Wk3dGfCf~!IdAU)2YxK5aKIQWoCf!GuoL$$4mi-}|H)qjtieI#R1gg~2<O)|
zjsa`1@Y5BX0xSx=1FTUU8#4gU(*sNgW|YLrTYx!E!RtB%_JJKB32;Dv6l7+w022X<
zfhfRda6RDtTn-`u``v;Adlna1sItdGG&Baw0E;(n!J@!6qw_v2m%1ey?X$6DL59zf
z&*=p43SI-Rg)suKm=Y}LWip6068TO|FxG=D${}GG;CW91p3m>TNKN~V%q;#e=(Q(c
zF~o0lN8%We8}OZr1G9kN7>vXLwq(Ay*V@|bo7TcB-|NNTG-wC%0=J+W`c;HzK!uwS
zg(+PIWIzVavjG)u&a+@0UIt`92K*RM;l_`pkaPGOdE<TTwI4Yh01E}y;GmZOx1YfR
z!K2^^H!RT)>l{ckh64T`5o>Tz$)ZgskOVlJXA7_fiwi8;u#n;OPXXmaJBtq$0Iy>v
zVDY1tK>;kCViy`e2frDeyq4pD=idW3@MmxUY({QlB@dR&KV|SImds;6+s*zctltER
z0rnL#mYg+I7BH9l@gD5KYv47q0B`{C9$Cnl28x50z-`6^kNqj&@v8t9A>5)DIz|GX
z=N51bxCQTlMS%uj6<|?_4!nYep4mnMiyEAX;wSj-3<W$V@3TEHp9xky!}@M7KxSv)
zbzjzlRmTS3$x24!a4ZLcVE1XHr+rn4g%mnsgnIsl*k=*oeKU>#7WDXTdPOaCjsX0;
zFz9R@;C0joZo&7A@6ryp1hxO&fC@K%ccK;<kO3LUOam(1WTt(cTLxr61`Go#++^sh
z5RIeF1LgqF>)=z+$w99*SPYm9+8K?bu<UKDn~U67VNM65frE7p+O5HXG5=McieM#Z
z1C9b~l*h(Gz(U94AOYB81{zue4tAT^I=Mf8?@k?~eLa?iL0OOoI2BCLeBOhD@ciHh
z@EO<%_&iuNU~s0$NWh|wJqDm*FklgEsJ+v&&6y+p0SE9Ln0v)ybh2Q;_u@gXMD!H|
z8vvi%JD?E=7S`g;OeFJJ`-vJznhQz-7N44f{lHJ~ofrp-0KQjzkNJ-H4Z33iC@<Ip
zx_~vnZ?r<<Fi;8{0DOO!0Y71#LBssbpabB05-j>4f#>CCkj{9{rhuOXuL$-&dF`9y
z`c$~dagSU#ECVu-#SN%%lf@s9E>8wzAZHj*;U>eLGY4?<eID&$<ju0>a`5*S;PMpU
z0Gx#ZYZS-EyMP1xUEnFe!J{?Uw-#_v&7utl|0%#4<*>0DM1nXl9N2>c^X_0DxD^}+
z)+mV$UJH-K85=Abn89<$g3(3;uXP@X05t&z+ywv&6=s~k%2B{UF$eU7_iGIvhckJO
zfWv_IRSh%-j1k~Pz-y&LGk86_0gqP#@H|ez0?#(E1^m+~!D!=kCxK{i2iOSQf}Y+7
zQGi7_7UR6a`fO$)k?%^dh(Q7ibx~j$;6BM9SVSRV2B-m;-x90@eu6G10>1YQry}E-
z9_ODG(adYEWOT=2>GU2N-G5u~UE=TTX>Rnqgk?`~+Sqnm@SL%>PQEM8f}yr{r%hfj
zi$8UoIz8Ixm4&<G9y!^hD?W8ldhbNloAesg{xTo~GLW$b__s5K49I{C$bbxF2LmH<
z6Z3uC$a>`P7i(}-ZjHv+;0V7wNCGzkd*vnyZLGL()XVC^U4SEXYm~*td!PtN1oc1)
zum*G10#<Go0jCi&N93&BFggOK5hthIQ~=!HTDieyS|wl=maNEdI>ViSqhn4HssdO+
z;k|AI437K@fimD~a3x?4uiuOwSh)c-0-eDSFamHyd=xNV1;>E3a>MpyFvnO%u)!s^
zqn+1V6;yZ0VKeV*oYDWZv2<Io(nN<0z9*H^*4%&WK^O0v*W3#90>L5?3AX^gU-iKU
zfPRC;0VJ@RwgB**SpnJsKSAfsKwl%7*U9&j@0XuQLK3fexRE>z%T2(~b#s^FfX|+8
z>5A{`E>H)!1+R@&Q3gLhSAY>9FW^)v-ajjHUa<q6_W-`jUcvX1j?Acwl`jFSjS3l%
z0U3}183-E#D%^z4qtb=SfDFih47eDmi1xj}&)|9}@;FG|2dvQ(8w)`M7z1tw9K2g2
z1{?ndER@UwJdSlxh|RPC=et-I1DgQ{|MuYi9MqQt%;EG5dvI_&*=THnWumceU2t&E
z=?*M%477Gw*1KZ8Aeab_S=!Cj|6+xMWEPfKxN!>86^kD)IVGU&6gXfkld*J*gXmy!
zf&*x;m}hi8;+2HH3E&W@4`P5<tU{+*;4r5mdF9h<Gb3RnmSz#nYaiY_uO$)i8EyqE
zK=}!t>lq_)8kYV2>}2GOz_JQR1hoLq+W`2DI3(Ty_|CJa@jhq_{KixyUI+NOC<pi%
z;ItU0V0&&b2_yo(S9~tFfgOPFMiPhx!GfPv^BLK5_o0EGi;`f9rIYX9CJ@T~S$5Z|
z49I{C$bbx7cmw={Qy~K~AOkWW1L0~Q78m{z;2=3zumEBXjLqD9Sa}1O1Nm-Pcly8h
z9JF(WOnJ})u-K9UtWgmgob3<=ID4Wxu;;LkGYU9(TmxdjNnnrH&`=C;;JL`&iEUoT
zIHTPxM%dHpprI4k1*`*CYaR#rB|#!M0-S>9VtjUH;rf#<^Mb;z8UHJE@w{F^e~jjU
z$90R-=$K%14suJfw6nmm3d8`@A68w1&&YfqnBUqp^M4&Du*!lRXWkS5EMoY1KarO9
zT_Nt93^@D5EZ$)?XlzFYXRy#m1Xu#v0l%>kiG0>9&T;>RfS(I5|LFcJj$)0Ui?)F4
zeZVGA6_~+$Y7F=cdYg^Lax<1y01G-SHu5tt5x51fu?DE<l0fIYcD^H>K^(9K?=KWT
z)_t`u12P~3G9UvN)IjbFdN!R*24p}6WIzTo#sL5P;-HR$yI{c?85|HUvL%+nb|Pp6
zm~#){pw}LQ(O?epIf&=L)*cnmFc(CDnV=cqfYBO}*mxUoxfIj}_QDRD(*D_>>R8SJ
zL)hRD{E8F@x1+!^hkiD7GTNDIzZRqGuUQ#(H)cPVm5q&U)<%c*{6<?Ihd#4uhp|%H
zY;albLi>IY0jj#>n9Y0-PJ$TF5CjXec-I|?b%G_Me+(F5<c-8K%2@YW@VV9lEQatN
zSVSof{KQHm@%=dl_zYS2aoV>C+MR+03SKi~8Zh78w1yx*_@49tZNPER6C?q?kA5Qo
ziB-Tdz}Y)2-t+?<3=U!04e*)SgXix8cz&)w1~z~gPz>;Ryq|Buk6;}b0Nmm>OUH1m
z(~ULg=M`&%)@48jWIzUFAS)WkofR)i*CYcnAOkWW10Dug_}BtCs0$XekZ>K~Yy@jG
zz{ZDw1Hm<*CRhdR!9gMih9>}L5|{&Gto{|{v6cWhxaQ!nJ#dQIXsif$zD7<7Xd4E)
z0$xii;1n&;SO?HSZ>I#bRRvAK4lorsMLsk(HaZfW5{x#wVQf6JaQ(@FI0xllxMrOB
zjmGT0+#|>AT5PP;Hyd1*d^Rj#G2DEd={@t4-V%%k`t}o?)x?4wpYaS(5CjYQU@?%-
zyBt^zN&-K@eeMEDfX|u*3Le7@UN?&ue1}H@zB7DJ&G$7K>xqED0@Wv=0ylidOyu1T
z_#X1SES~uJydf<u_#XTV3<31O>t%t2{>Fekz$<uuzIQu8b+8tE2Q~rT50B#~^4gO4
z`5b6#>ws<gDQj!jrVPk{49I{CWElf0++>+Yp$m}#8IS=P@L`|^ayZDU>?4<j7JhYu
z14nB##l{j)4Df3iwZQ>k4gUE!A8?R(0C4b}0PMk{&0KIj;Q!4hr+_^sqJh`G5!?q(
z1AD}xp&vK~Is>Pif@mKB7(LD`9DnvVTBkbpo@s1^MI=}Syav)y=x6LWvvB=+96c;F
zI9<27Q!-W#0J<k$F~{hv>y>2mu|TjN&@l-X9g(me@IB(!cl-o>F9JONVm~_|hwok!
zuo<v$!U9MX@DnUr+yRz?a)8gN7KjF|L0(V^^aA6-V8HjakFg$ur5QZ;C!m$t;A6Q9
zIV?Px?;GFYHvr#3zcCPr?QO|LY};;|{H*x(>~stkYu7n+@LjQg2I*%nsN;~YCK-?c
z8IS=P$aDj_GyMv50Wu&1G9Uvo;LiXDog9b-8~Cv}a3e?n_Ta36`9>oLa9!*P*p39-
zKvTeiMm@lRw>>zRUIIAidlpOqPVoX7d0rM49snH7+oK{HUN#z^!jid8F%pfXzy#oQ
zP27jYq=taUU}4HFICF<F=gh+KCtdS=$H5`TjQ=&B!m87~{V(Ip8VBV0z%}*`+x8Z0
z?*Nqm9eV}O9d9HI@JclLnBN)jdi#SKz)!FUL9ev{izR-7?&<^HPc&F<EU^e0Cy>D+
z!x+Hlun_Qi*=`NqkDp-SWf}<O?|+<aR1fgJTY(QiHQ+bw=Nf<=SzrnleUQL=^&5Ow
zc#Z2pH*gzB0ZzeU*mdBrt@B-M_p-HVQwC%}2C}+=_*6f?<t?k<g|08S0sEh*!S_&x
z49I{C$bbx7cmrK=N{&2(1uFxr-0XBnG=JkMN9>%EGteQ2)e8ReQLGs77_|W_IQHNu
zoRu3c<G~2v6db8?6nYx80Y`v6_-8S{OHu$#013b;IAZPucnqg&H}|0{1}i;o5rK|I
zfY-I$EeY-AL0<5aM~>N*2P?dXV6opws1hs@{mYCTUTd(Ji3E<u>lg&f--U!BMiMI;
zej*u3&A|yk&wRFig8T7ZS_AmbYycI3-*^&<y+H(M2l&pI!M;L((|fj?jUG$xp9CU3
za_n6z(ZJ_55AdDX1pM54N#u<NjCVi+V5Mms;OB?^PQlMQtDb&>*Hi-B0?L4zU;^NI
zykZ|ZuLa9&N&MVQw6$qd24p}6WIzTo)qwR6{!G0Pom>WFKn7$$23!nq5anlz!*t~F
z`z0K_+hZ{rV!<(R7f1m1D2N8;aX`Ha{1Z4Gs~p-n=qw93C4p0JoPyI@1{)oXu-xdB
zgf<QotAeF~(*@jOn9;%ixt8pbQ~~Xe0uD+ix#Y092H@WTcugz>xkZ%GvBNFF(*7sb
zgAJCMZk~_V8Z0>2XWV^e5%lM9Bcor?%rgnhXCaBtlEpJW!Qx1JBay|0)_!(E&I!Qc
z&3eFs#e0B75Wg`Bi7YrWc)cgVOu!;Y3RnbKT*(jkj(a_Sy59u+JOiYq1>d;`L60+=
zX@!+_Sm(7kML{%jnh@`m*WL*5`fmffKm))6R&`*FPS|K=X`r_efZyHvCujqPfWF2y
zujwc_m!L!bLLL@>tifq=v#kwUmjM}&0U3~i%rv0FO=jBHxn)2GWIzVI3~=DL0&ox&
zEP5lMy+cxQv~dPaL%;z#3jkYyJve~nxmeJc0ys$Ipw1r5<6yKr;5kPCr{JJ80q_`{
z39%G7MRPRv1T1EBaY``S24EQj)_|$NEqb9NFL>20!Dz2$ESCkzyUFO^7$lF~c>o95
z!QwL`p?I)F^z&IIffx`4f(6~Mz)%bD8TbkMXLJB{)7FCjn1_@&BaMZVO2K#eE2B2n
z5<xM*@8^^Qej@>i4;#q^uw>DQg$!$?U?UOmePSWg9!HIaQdoWfTG$hUY`=tl-os(Q
z&kKt${9IUr?;wkte9u+_epbw2;fu3l_^hG<_kRwU5oN9zOMb73MVeJ$3z!K8f)U0x
z7U>QafB3n#2EFjV9SRwc0U3}18OU@4xikF=bOACT12P~3GVpf;Rnhb%@H3ERVTAuj
z-yU_)unyD*93<WdSOl;~3>sL#xDCXC&cG=+IGqp50}dpe&WYx<-+KE7miYh&*^7Wv
zaKJvz=;(&!A*Up?u_!PAoCekbFgDK$9xoQ01iW9bXpT-E&+XdGea(WzZnME-c`5q*
z{Jr7}<gvgL1^mQzBZ=1>EK-m#!AR;9EZOLP2g~Wk`eZEm-24P*>#&GX1k3;tz)ze)
zQa!K{M1sY@@4iS4%mVGXVg$be*w5UsEqRXGfbRsO2Pg?x3|R>ZfZ2dEheC-pNM>=9
z$0!c?xu^;l^!GN10eq*OK2Lm39f5ft{jtvbs0jW9X6(btVRPd=FL|Bj^_ZvPe>?cT
zmNOf)lmQu#0U3~i%rM~RFIbszT{@=>$bbyUK+ZML7`M)u0L6SL;MW`$Ipj4(n>m|d
z2-Z1BGzYKN^jg?>3zPyJ)D8zu!D3AUhz4<B1aJxtggLN|00V*3wV^pJCgNv7FbOP3
zYjOU;L3v&<66|nJNo(z7^i9Ds*&~l`%7Rb89*;bBv9Q3{e`ewOllQ^r#rqEy9Lyg9
zbjd+~uvldzJQOU^=;yOJ02+Ymz)x_%z8ORTdiEPVkjVWifH(c_ggh25Sol~ESQOwp
z$O4exV4;bH1~Z0Xg$0kV0cV8O1!k~FW<EcDwoU^+_j<s5@A_cft7ygNS_3d|G#CJ)
zKpdcN-UB~xv%w}%AMhMC!2#eFypQ|9Q4kA01pR>-d`}yi8y8^7>nQ<P%rk@U>2Bcn
zT{8F6QU+u|24p}6GR#2k3_FqzBm*)a12P~3={L|7hv2|7Sa6_M1uSz&Y>u}1Mmq<U
z108bM)B>yqEI9NA6M$22P`(6I1{|mk2X4Vx102N814G=B&^{8>0=odu?G_xg@_u-~
zUgwQKe=K0Q-N%{UGrwzu>ns*{MJaS%2Tp=RUWw>C1yT%xq^5Q6$4_1}&k-y*h&~P~
zf=a=X(SHJ%u2}T)8y$>9zJs9*(%T?E8Po^EfZw23?z0Ni0qa00#hWR}=ef<`-{~R&
zi!&=gssW3je1{n^U=UY~Xolq|W4#lWzX2A1egFpz*!BzH^>JoSPcRtpYec=kazNjF
zo-Kg+jCgGafLHMO^SxPYB;|HUW?z&;`}u0(XRQ%nLDd=?uu;p}pmiCL0U3}18Msge
zoc@5kQ0LZpWIzUFKn7&MYG6DzNU%sm!VO@%Lm~%`bB%TuF#0;=u&EuGZS)Pq(j2@R
zO@A%QVQmSB2GfCC9=g&7?JTnF0Os!@VY@wAp@9Ql#uI=8c&Ff>(Jb&Vc#SL$xCLjU
z6afpsezzo}{cdBqC`evu^z#}HgX2MRIru*2BhNexkI7(RC|J<XdLzm2?2DPm=Q$bx
z7DfETP9&M{%X5BqFmm=`*~VD!hh?m>?q|UwQxm}ZV{v6N2qk!*EkoG>x$&TwWgoN1
zWj3++!*_{A6_O9Q1>faYz~v4Jd>@>m02*V#r{EyqOq~wED_AhP(9s1aTxmP$YHU}x
zwP{lZWIzUFKnBjc0se(dAp<lJpKASoaB?C8G9Uw)VBig$v#XEuCLrf7;50I1<;1MW
zjKF#~;1u1_IL+vI2FoE%NoXq$R)8q53bY4q!E<xuehP3T%B543MdJ*kV<?t9u3N;R
zgZa#v;+ABzo7XlyNM3dHmjs+zuq#OJrAGgjAbDnYUaSy5!Sges&n$xeG{3*X=@5S6
zB$CW&6MQaygYQiehyk5|-&l&o-bV7vSXT7ABl1|msRI%L-=mQrl$e9$+Q4+`XJ1xl
z%<x+gGxP0BzN4}BMr_Xml`ZY80*wcp!o%rl<$>Rz7r*b8-(&j8>+F!U0d3VB+SMcj
zG9UvoAOq*kfT}m=O|1?r12P~3GT_qyizBUk<g$3t)+H|%?JUNmfG)tCK7rM<f`jpK
zM$14fho04Y_6CbUQD8mz7jTOj=-^=eIJh5d2X4VU{@J?{uxR8K#nJJU(fO=flF{B2
zOAe6tfMrIT+akv3NN`KAv~xht*m-8*`ICi!%Yn5Z;I+dRqqCS-lBLg_B2)=&e)nMk
zgay7@fX~Qpn9pSxc8K)56Y@AEYYZp=7J^d1Z}7e4)E&M<y#UW0N~}Thm4HP)d+^w1
za6Jy}GaIn97m9YFjm02)oI*naV3Cl=I1TK<=fuwnuZQpCHqaW-<6_VioNGj!>yGKz
z?*R67`ftf5w5xcN4zb!*24p}6WFRyHD%^zTOW86Y12P~38Eb%pxw<|M`4V!R{_i(;
z<#${7fABfztq;tZ7FaziIDnjNw8UdM#8`J)j6)*_{2M_Xz(K21M4^%2&tfrw13a(7
zNgwp{Scd@z>0ZHsI|r(~7hZ!`uu#RAdS>DI^G>68xo6gy&I(4(2_Lz6j2x%IywmPU
zXrxoWgWqGwWl?}}_nAe|pDa>LH?o=q&Hi7)QmoQt5fJM4be_aMEZjwdL{Jd;jYCN6
zXe9T;GSngmee$;+Ti+L6Pa%*CTmtfg;lPYYtnfaq@gO!@0`AApTs)`;{tvKlN~b(V
z8ITOD(HI;2yJZhx&XSse^-qBPbIyHP0J2^WHeKTf*Pip+F#?A_>Tn7cZz?&ot4RiA
zKn7$$1~S|L|8P~vfDFih49Gxc7+}G}&(}0K2qaFyLQH?affWawYk*U<KqCi`3=YJ+
zX0Z%Le|NwEFbAwG0Jz08bd&@$!4$V7w3h_~jD8jooCbnMciJz~Xon3B#D|)VF3VbI
zC&z(Vq;N?MM4_XO(V66yWVG{o&D`=qa@qYG_zC>X4IlA6a#-xC0*d&^XUaSyuaVDu
zrm^rvH+=qn&x6#oBHUptTY<)G2q8KcxzSjT4q-p0@*Y_nVT=bXHijB}XV)7$b;2^r
zSf>Yj<hD0pyR^}E0!zNr{H&}r+N_HM*yv(yFxHn~Ne4$PeNOKAez9m12lyU%#YS|V
z_DVR<eSKYy{~_9|y7Z}824p}6WIzTo%z)D$*co<k9Y_XbKn7$$23!m*M0<0WK5KJJ
zY`kP`u&i@n%Yo@pV4rDVNlPn0%rY9{v2+`RF@?YKiv<=Qljr8()h$@GVbNqMXycY-
zwDY)}eK87bHrm`4EJiWrfWv8P?mx_e*6T<~c27&|scZD}dab!-vCUaa9E5%iz5#my
zXJarP1D^msGZx7z1A9cEp)kmA?{L{>5n&(T-$S^spJ4Ie6fkEE`Pt_Hk`{sDfHR)_
z2K@{)k_Y?U$;jJ*<$cC_2P{J^{3KwXj>i5o&S8JPvvoisC<j&>ODudvD6@<fxE!%N
z+WFaZ3x2+~TROR3&$4Y_4fdI_=V$bG0uE@sUhDBcz(yr&gVtq024p}6WFVsr@GndX
z8IS=PkO3LEPzLya-uX|-_!-Qy7{cO(Q}AmfBn319Nx&&8qLD=n{&~mWUBcM|ZqXDS
z@kS?S5*#wtofe!4(GDB|%=L;|=xhb{gP|UY<<a+VP{GKF!jeT5w}?VVL!)!5Tau;S
zEV!_6!zcx20~Tre0}ehTK}lc_UK5`g3q0GvIADz;*eC`HS{s9`?=$)@4U%VevzW3R
z@cQbSjXsvsjhud1vVh|^xZfJUduQP-l%Qj4@rB0-CHOo?7(2X%C7(?w!OsN?A*%qN
zGnY=+a2oCQU|uVGqs#Uww7V5FTy{xo-tW-45^Z;ZlMa0>hGlll@VJ0&=yUSxv5UH7
zKn7$$24uj$0sci+Ap<fX12P~37s5bZoMZ{$Yyhv|i~$y7`1K>FXpY8VfO(C;M&K0X
z(8yUL9Ow@LLxEdVM~68uV<BdNTO!&yKpSuLKZ>PSfu|t)d956b_5>_Gn888{3m}~3
zk_tWr^??~Ru)?AW`}kF)wV)a>qlK}u2+N&jqsP+pUJ*Ggz#IhTF+6s2?Ba}yiI$%4
zvCeyQ8gyII&RRWcY?VE$)q8^l2u9O03tvCiBP-F!<TD5*`WVUaSepL)?mrcYQvlzA
zX?}OI<Z))$ED!-!1HLbz1dBKKfkeRK%@SaDT?}nb5sKdxP6r6mW`5S}X^CjK4w%oG
z{fEIku4Lih-={hArhFE@MqQc=$bbyUKo}d~A2bRXkO3KxfgENaK6Oy0+%ZS6tUj<x
z;uReIKL}WnaEe}NoC{bf;Isn%uX?A5M&mNT<tQ)^xCN^*9N88C6Tl?k7W~7LBXN$X
z;{ea$730xa6>t>)j*(a&%WVd%f<zkaUW<I_i~*ZKUBLV50vOZJEIfa5pC}{aF)aHV
z>*-nWIDL!*9K({ZqUJYt7>T9*?tr|FMsDp8_F?L9BflS(e0F|gI}*+B>rKWwpMNOP
z8Ogk6z5^3O+0n>-7)!q6MZhxP=UqYCUy*_}eolA|QGit-zVBw-Zm!stp`3@;7c4l<
zW**?@fS+%#&lszr_kc!#&y7=YPJzsfvN(CWAQ!;@ey{>tEl8faWk3dGKn7$WWCOWU
zQ~7`M6fz(KG9Uw)X`pb|1(|vJ3vq51Dk}Rp5vSWMa>;9sb{1_oh~vLIyb3r)aWrlK
z9Bff+GvF2+h$jIKX4il^;52ZH+308i=75%NNk)5hEO{L)XgmOpfT5r%NN*g)0eGLh
z_M3eijNikm?<0>X9AxhT^qj|7UW#Q5aEgDR@lUV`uo%-G_=&1W;y&{M2lIa83nWH^
zDu9I*zwsp!qrj734DcHqkaJ)9X2GEg2qnrRnFD$T3leVcZCZlEkGyDG2UrmB^WHfe
zB5mpqk5LI62DbqgNS1&Gz#gN}(A(bVvK@i;A6@!V&>jnT-QgH?-UIM6?>BhQrNL3Z
zJ7mSYpC)9)f2OkHo#~onKn7$WJPqUy&&$?T%YY2XfDD9@0S*o;2f1DjcD#x<EU1hJ
zEP`;5?>6|&hd!RKEMNhm4e*Mo=&S&?fcwB{;1>PR!2#Sp5DS9EFe8D*jEBH((9~#4
z?}9}H#+ow=*Pry@r)YBkc^s%;3CaMv;PYq%Soq?s2RE0zr(%GArzimY#t|fP9~Kcp
ziH$~b{ZMv7E{hQir$WV<9_ODY(LBWH;w&S+FQLRPB%4JL^PLD~|5Hfj`_Ffj?;pSG
z7HXWp4z&RbeUV@l=n0%$97X$3;5S&ba|#}Z?^3uHZK81Pn*g1M68Vt)MkqTdR|aH2
z24p}6f*DZZCYT}h%YY2XfDEL^z(nlqG&r;$vjZ9y*&B`RT3B)*!~r6UHg0+73M7E4
z;4r8MIOui@4x-xu4y;+E@XD=$esj>>8S5-GdBq@favw$=!29!xq3FB;6atq4&Z6PH
za&`y{4!lOEVDX}q(UI3!uZU%9umbQG<uJ!7II!li?*LaD>xZ#)i<#))S9k2u0}Yiy
z1Snwd^w|C$eJm(k3_|()2#XGkPzTf#u+Kig_o*5PCAjY%V~19u>}cfD^K?K@FBom1
zEa<5{I0gEHP9W4s#twIb?VubO4eY_fPEEkv^akHwulFgv$3NfuS53zW>R?|LZ_*)9
zyUKtJ$bbx-Z6K7tD4o5hwq!sCWIzUFz}o-^hMb|`6xNv{aY$fMz$vPuaWN<ko&whW
zuz6PW!WIYf2LK13`+!^UcgyrMIyoQ?HozQV<Z|hC4NPNUAf78ef&==Z;2FT;3<v1P
z00+?Xz!=aQu&85R16KbE4!{qBAHeU%`bSvK0Cj;|@K_}PkG;_?$)SA~+Bhp`hoz6j
zi1L6%g_D-{V5`jKGl~G$1xvQ{FULC1#dB7*wEJ0o-AL-=C)t+6f*qqPh)i1x?FWl+
zhXBv*r<iF!`c5=FZZwX^(ku+x^SrkCZn2=r_sbsp(eO`T7O3p~Zrglk*V{VzP9@sf
z!fn&d1K&MA(F#eg_(@cb49I{C$bbw4GoZpvFhlB>0U3}188{aMBe7FYmmOE3or8VG
zP%u1g?e9Ng(8RC#6a-TMiw17Nq7Bb^1aS5Y2cd3J5gj})qb=B+w&wnW$K?!-m7uSC
zT3Qc_5DSCkoJKzjHdg=^PLhG2;JG<l!YPV4HM+F%o`c<o%dTn7hw+o1tx+EvyoTSb
zjXu^nIL-^I`^Ys@j$tLy*a)?FF%kP62aN&WgHR$7$#VeT$H5@f;CapWj@MB<)B_-Y
zDu@GgHXl>~p$7f22x^abG^E%YeQw7hZw%N7_<3THD%>LpH?Y*<CRn(2YIjIYn`y`Y
zHYsF424p}6WFTDzRJci(KJ6?6G9Uvo;9!7X1#ug!yo0`)fCY}10B4#w1q&ss0rRGV
z&cH1=t7oLq*$vAbZi#3w2Hpe(0SA`}z$-eSllQ`z5}cV6EI7-E*X$Jg(8%k{4_L6V
z7eCMxG|puo>p|;bBf;8m4(oKyLX9<8K%rZ+fMf0RTIb-H!6H^D@t%=fCzPF#n+#?e
z`#cijzDyqoPJ(tI280?@utOp!1z5Z}ml%$ncn>W6@as6|@^`ts*v}sPY@TcE$Bz6w
z-2rX`TR?V*c!!&)i#8T+_$>VdKQB%FBq~P+WIzUFKnC0loXa2fZpTu)49I{C$bbxt
zgMvOD8u&Xl@__`<12_eXD$@Y}jN%LfuYyT=^p5}x7DX1Mt-1er4PD%ad1Ktu(t0BC
zbG(t$6U)QKx_!Zd1&{j$XlL)lHV1ed&|V8BfK%XHqCa+Oa4tI<`_#sAWjgjZca1Su
z9F{C5tOc!sTLH_u8wdQ1l4lmae{$f=hyi?GoFWR1tw1Nx0<aj!cP|kzngc)An3in(
z*oWn_#`?MZt{U#j_w+R2VBYC{L37aHXJQqo2>6-vj`-9;_5_M}-qyGi+sAEf+B`GO
zZMuVqhG=6IZKy+^Q`3Aj)^+Mon+(W+49I{C_%Xo087pK!24p}6WFR99bjLx6R}?_!
zEWq#VxWx=~m=%_eZb@k8sGZdn{#nNV<<H89S8xQ&>c<|?*(=fL8-^tZxvajpRfY1R
z?_CfJqJcFQVdHARb8WPCgt%S~`Rl-Qmi<mx)`P9?KtdI;CRn1+{uM#;SW)0J<i8U=
z0ML<J95Xt&Pbjeq$$XA{K6M>-WHs$ez-cLy!ECSz>;`nfs!=3hl_}I1gB^~5svy|=
z?sV*(XzXBg#A8{^SPx}!3ds)uKHILqZzZWda+84FH`^4>2D+d*+15pm{JakYTWo!9
zoBZ6^{~O_!t9BWX0U3}1892*8?z6VEAp<fX12P~3=VpKf5x4*SzsPdP6s()SW!2LB
z*D43vjR6ZK&Hifr`wIX3S^{bT4xYvUuizAmcyI!=1ZKeitB%0|IS2I|l(`joIN;t2
zDgkS7kk<$_0S7>OqB3@7v7v@>5W2h(6ar;HJXi`?7-C_D>tq(-chNZA=N7OXWK@(7
z;Xs3tOGiaq_F)0#v`4?oZfVWDU&d``7JvOT3u%8fSXQF2-Vfw6+RmkL!=i~f^=1Ip
z-R{jeh2vs6S|@-~V60=t{~D`fbtGu@zoxXc<M_z}5dHN5oq${L{aFY2i=)apB=K{p
za5g|U_c?TRK^xtB6_@S1&9*maTLxr624p}6{20iUnwsh-PdPFm12P~3=g~mnt_#lN
z(a-y#Ik4Q|a+aBBj|R+P90euP*8cuuGMYH}+zF}xufZf|+Hj`9JAg$Juc&~|4?qFX
z2Jo7^!g@b<Au-V*xj5SRPdJry=wrc#1(x(iSsdUKkk2^KKrDwC>zTFStflxMC*OsB
zdvWJsw6U1v6r0c(30R0a<&@yk))ejY!AejMuz<1(u-Fw!+=k@Mq3mGfvOrV^3<q&W
zTPTaXNaph`2f6_ka_rFp4YMtcEFw;^Y;(0CSZuW2gC!l9L9cvf9gGGRd)9!)#<scG
zgO%&d4J{oF@V(k*>nV!uWY7RCvGuua@;~;?+&Z&L`%e>^W|d3Pb;y7W$bbyMKyF!(
z0U3}18IXZ=7~r7Ot!T3Yeb%B4Ps4%-X9w7$9U3};Bj7=h0^EXmT|p9v1zr(>&e?!P
zn=v3*(T0C6z6==r=a&+>;t(9Pmvm@n69>v1NUsCT<A9Fa{5nf9;3p~|i8EF58Oa>%
zWp>eqvs2=Y>#;9bkYiD-5Mc3OJ+MX*>xOOp3v6@d2?xfZ#D9>?^HvAX0nSWvItB|#
zEUwfB@xUHE?F~M+Iircu3q)}x#5jfg9>zZ7vE(zi2HzFFyViKjx?!xdcxe`W-oiS4
zL;=2U2Z33%nS}K#0gGsdfHlftg9RXkyMgWK+Gp#IHMW;xIl|WGw%HUNgWWpSE(0<k
z12P~3P6qfFRD}%4fDFih44jJr78O>w?8w3kXB2P{c^tF{LjZ#V%1UW#XMQxtVl?2O
z=wE;XZMWbclrwXVfrmgc@QOFl$pP^)@T6Cw(Kigsiok0iw$R8ic1inpqFGomgZpz3
z%&(`^0S%1pK3H}K!6Ft3pMVG>aSoQvjP=Z1#M@5J!T(Co1+XA66Py6NU*5Yly#Bs%
z*hs8m-NDB?-+|4bAm|T@18Ypd#?{~k5C=HZghdW}G)DuUS*WoEJ4^+9&qs#3vyo4K
zEGjXkomu?#lb;ED@H(UHjo9XFEC$~h7E<>DzHjtC3)~F&ocMfBg5Q8W;_VIEKFdH^
zY!Pel8JX|htJaPn>jTi=B1n$9Wk3dGKn7&sF9TkGk@_o1D>5JhG9Uvo;9y`G+M*oV
z*^~q-fE3UKOa~lXa>-zUgntIr0y98<&>8FiZoy)YIhbYcF1JLZy(gCS0SBs&8*N?-
z7908)31eImIpAt+>Epn=C17EN#i`@KD~fn@Mxt*Cc+Ha28|yrNW=AnxfH~MVXKs{6
zTRp(-Q-Dzlu&`zi77X0tzeb0BQ0$g(w)0$-%njReGqzs>2W;)FZQJ{dZF{>d&2^K-
zNZvbVQSf~~mx#koECN*pW&!B`**g=kJBl*<vrLHW1~9Vw$s)=kf((KX2rv;v#03Ur
z5DYLZ@@E+YSq6a^MUep+1s6myf(RnWfQTT18I}Q&Ef6Be_DP75h(Zt|$ddp0ed&Tq
z(|xz@dvD)+&-*+lUG>(|)u*dF_dQ+R-=0dxW4clKVDAixXq)D4l*%p^-X^fZW||P&
z;&CQP!{t&Le!CWkbKlD$BKVn0r{>hja$hJX_dlB%Fau`5448qs4Dh4bW(LfF888E8
zpjieG7xID*0vLi&Y;WQEk<@~JSoJ~>xuZbf@<U;?aH0^`Q}%U+XtRufm=UjVd0j<0
z*nbdt*ypfN%hpgK;|cbckchTBD?K^NlRPELpR4p6g}ozRI(co{k>u(7QGqS?fWRt=
z)5%o8p41pv;lv7-gN0c_+W1Woa~PN35oc2AIZ1xQl)qN?1QiYooVT<+A_sjjM~@ID
z2;+n=CwXl~Y_|TrAW8qbwqufXGn<*J{Q0E8vCTA0)#bH3>`39)0@p>b6P1X0WmQcu
z=J}bz4Z#s@uUDFDG0WD<a@v>60Q@tDvW#mste)XKo}X1I$9IYR@%hZDX15t=hJi`*
zPim&R>zV;G&^rw9OUq^k%zzm%17@HZ28b{x<}@HmA4<wlO)gH-VKY|=mH`k|?k=n%
zTq@LiT+KUH;{_t4dWr`Bw|z&zrU++~NR0ilL}C|VNMJe1Uc$q|YC<rg`Phiieil2F
zo+nIA`N%THgHnEY*-f}2<tIzzN8h8!$WVAT6;QdVWQ=FH#(=)5vaK@8Irdt|a(~ih
z<&3sjF3#O#A^jT$C1xXG4*^98WdjB8m%<Igu|jO98+_F0GJy#C2%#1Gni@SR>?vd&
ze<OWPRi$tZjE@>HM#dNS%W*Mh_%l(z5e^YX3oL)yQuv&J9WSggl3Mtm2@7Xm&7GqZ
zbK15r1Kc0DXVkJUt1!&R{gi&OR^_N{jMA}E7Zo{a2F!pNFau`bH3q_eGOu}@G6QD7
z4445kkk0@C<Y_s@cgeq`fB<o>aE6d&)8%|7Dj?{sWuI2z(ZW<=f1#ccL~Sh062h_=
z1R8?)KMI!!mkTU&`Ll4Iz?fqr7^V(OHy#(#qK#aO{D6OQ46$fUVKZU%WP7Q$Y1>_n
z3scTv<$LY_=bbg?15?KlvZsYa&K6;3hCmRTJ`Y(<Hc2^|PY7KIf~0Q~CJJ+fTK1F*
zpA<M(*uD!kP5=9>TKsp?YI4)9Uu*EC*ODVC=I`MGV$7Z+o(2CfH<>d#3GntAfw^|D
zz<XjR3l|B9HdBPOt(SHvf0uAThTpD57WrlaBn+v}2}wOfn<+`Ukqy_*k&RSz9W!7C
z%zzmfTn2jWhvDF!DId8RFau_w8VsD5GmL5S6DY4Q5Ii0v<k=A_cz0Atz|T|dEZb1d
z(}WiU`ea+n2!f7|Doj%PCINwl{WfE)?3gI5meXiTjz73(DuF0L0G?(0%lYGs0{pB(
z$qKMDs(0PRZ;8BlfhdBAP|pxiRuLLG<`q(%?X5h*Lu@xHvyO0_FfT5M(uf_{wZfAE
z=Xt!)ik+cG%>V5L=5s6de5%oI%0D7}G36)Ac#jhJ`ZD`wuEln!GIIpRGdV6$`sGxf
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
Lw?4OI*=7G9<O>1t

literal 0
HcmV?d00001

diff --git a/jetgeo-core/pom.xml b/jetgeo-core/pom.xml
new file mode 100644
index 0000000..858a4fa
--- /dev/null
+++ b/jetgeo-core/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>jetgeo</artifactId>
+        <groupId>com.ling5821</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>jetgeo-core</artifactId>
+
+    <name>jetgeo-core</name>
+
+    <properties>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.google.geometry</groupId>
+            <artifactId>s2-geometry</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/JetGeo.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/JetGeo.java
new file mode 100644
index 0000000..db201bf
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/JetGeo.java
@@ -0,0 +1,163 @@
+package com.ling5821.jetgeo;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.StrUtil;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.LoadingCache;
+import com.ling5821.jetgeo.cache.RegionCacheLoader;
+import com.ling5821.jetgeo.config.JetGeoProperties;
+import com.ling5821.jetgeo.enums.LevelEnum;
+import com.ling5821.jetgeo.model.GeoInfo;
+import com.ling5821.jetgeo.model.RegionCache;
+import com.ling5821.jetgeo.utils.S2Util;
+import com.ling5821.jetgeo.utils.Utils;
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutionException;
+
+/**
+ * @author lsj
+ * @date 2021/11/20 2:45
+ */
+public class JetGeo {
+
+    public static final ConcurrentHashMap<String, RegionCache> PROVINCE_REGION_CACHE = new ConcurrentHashMap<>();
+    private File geoDataParentFile;
+    private LevelEnum level;
+    private CacheBuilder<Object, Object> loadCacheBuilder;
+    public LoadingCache<String, List<RegionCache>> CITY_REGION_CACHE;
+    public LoadingCache<String, List<RegionCache>> DISTRICT_REGION_CACHE;
+
+    public JetGeo(JetGeoProperties properties) {
+        this.level = properties.getLevel();
+        this.geoDataParentFile = new File(properties.getGeoDataParentPath());
+        S2Util.setMinLevel(properties.getS2MinLevel());
+        S2Util.setMaxLevel(properties.getS2MaxLevel());
+        S2Util.setMaxCells(properties.getS2MaxCells());
+        S2Util.init();
+
+        this.loadCacheBuilder = CacheBuilder.newBuilder()
+            .initialCapacity(properties.getLoadCacheInitialCapacity())
+            .maximumSize(properties.getLoadCacheMaximumSize())
+            .expireAfterAccess(properties.getLoadCacheExpireAfterAccess())
+            .refreshAfterWrite(properties.getLoadCacheRefreshAfterWrite());
+        initCache(LevelEnum.province, PROVINCE_REGION_CACHE);
+        initLoadingCache();
+
+    }
+
+    /**
+     * 初始化指定区域缓存
+     *
+     * @param level
+     * @param cache
+     */
+    private void initCache(LevelEnum level, Map<String, RegionCache> cache) {
+        List<File> files = FileUtil.loopFiles(new File(this.geoDataParentFile, level.name()));
+        for (File file : files) {
+            RegionCache regionCache = Utils.loadRegionCache(file);
+            cache.put(regionCache.getCacheKey(), regionCache);
+        }
+    }
+
+    private void initLoadingCache() {
+        if (this.level.lessThen(LevelEnum.city)) {
+            CITY_REGION_CACHE = this.loadCacheBuilder.build(new RegionCacheLoader(this.geoDataParentFile, LevelEnum.city));
+        }
+
+        if (this.level.lessThen(LevelEnum.district)) {
+            DISTRICT_REGION_CACHE = this.loadCacheBuilder.build(
+                new RegionCacheLoader(this.geoDataParentFile, LevelEnum.district));
+        }
+    }
+
+
+    /**
+     * 获取逆地理编码信息
+     *
+     * @param lat
+     * @param lng
+     * @return
+     */
+    public GeoInfo getGeoInfo(double lat, double lng) {
+        GeoInfo geoInfo = new GeoInfo();
+        geoInfo.setProvince("");
+        geoInfo.setCity("");
+        geoInfo.setDistrict("");
+        geoInfo.setStreet("");
+        geoInfo.setLevel(LevelEnum.province);
+
+        //定位省
+        containsRegion(geoInfo, PROVINCE_REGION_CACHE, lat, lng);
+
+        if (StrUtil.isEmpty(geoInfo.getProvince())) {
+            return null;
+        }
+
+        if (this.level.lessThen(LevelEnum.city)) {
+            containsRegionByLoadingCache(geoInfo, CITY_REGION_CACHE, lat, lng);
+        }
+
+        if (StrUtil.isNotEmpty(geoInfo.getCity()) && level.lessThen(LevelEnum.district)) {
+            containsRegionByLoadingCache(geoInfo, DISTRICT_REGION_CACHE, lat, lng);
+        }
+
+        geoInfo.setFormatAddress(geoInfo.getProvince() + geoInfo.getCity() + geoInfo.getDistrict()
+            + geoInfo.getStreet());
+        return geoInfo;
+    }
+
+    private void containsRegion(GeoInfo geoInfo, Map<String, RegionCache> regionCacheMap,
+        double lat, double lng) {
+        String parentCode = geoInfo.getAdcode();
+        String regionName = "";
+        String regionCode = "";
+        LevelEnum regionLevel = null;
+        for (String cacheKey : regionCacheMap.keySet()) {
+            if (StrUtil.isNotEmpty(parentCode) && !cacheKey.startsWith(parentCode)) {
+                continue;
+            }
+            RegionCache regionCache = regionCacheMap.get(cacheKey);
+            if (regionCache.contains(lat, lng)) {
+                regionName = regionCache.getRegionName();
+                regionCode = regionCache.getRegionCode();
+                regionLevel = regionCache.getRegionLevel();
+            }
+            if (StrUtil.isNotEmpty(regionName) && StrUtil.isNotEmpty(regionCode)
+                && regionLevel != null) {
+                break;
+            }
+        }
+        geoInfo.setAdcode(regionCode);
+        geoInfo.setLevel(regionLevel);
+        geoInfo.setRegionName(regionLevel, regionName);
+    }
+
+    private void containsRegionByLoadingCache(GeoInfo geoInfo,
+        LoadingCache<String, List<RegionCache>> loadingCache, double lat, double lng) {
+        String parentCode = geoInfo.getAdcode();
+        String regionName = "";
+        String regionCode = "";
+        LevelEnum regionLevel = null;
+        if (StrUtil.isNotEmpty(parentCode)) {
+            try {
+                List<RegionCache> regionCacheList = loadingCache.get(parentCode);
+                for (RegionCache regionCache : regionCacheList) {
+                    if (regionCache.contains(lat, lng)) {
+                        regionName = regionCache.getRegionName();
+                        regionCode = regionCache.getRegionCode();
+                        regionLevel = regionCache.getRegionLevel();
+                        break;
+                    }
+                }
+                geoInfo.setAdcode(regionCode);
+                geoInfo.setLevel(regionLevel);
+                geoInfo.setRegionName(regionLevel, regionName);
+            } catch (ExecutionException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+}
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/cache/RegionCacheLoader.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/cache/RegionCacheLoader.java
new file mode 100644
index 0000000..a027fda
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/cache/RegionCacheLoader.java
@@ -0,0 +1,32 @@
+package com.ling5821.jetgeo.cache;
+
+import cn.hutool.core.io.FileUtil;
+import com.google.common.cache.CacheLoader;
+import com.ling5821.jetgeo.enums.LevelEnum;
+import com.ling5821.jetgeo.model.RegionCache;
+import com.ling5821.jetgeo.utils.Utils;
+import java.io.File;
+import java.util.List;
+
+/**
+ * @author lsj
+ * @date 2021/11/23 22:40
+ */
+public class RegionCacheLoader extends CacheLoader<String, List<RegionCache>> {
+
+    private LevelEnum level;
+    private File dataPath;
+
+    public RegionCacheLoader(File geoDataParentPath, LevelEnum level) {
+        this.level = level;
+        this.dataPath = new File(geoDataParentPath, level.name());
+    }
+
+    @Override
+    public List<RegionCache> load(String key) throws Exception {
+        List<File> files = FileUtil.loopFiles(dataPath,
+            pathname -> pathname.getName()
+                .matches(level + "_" + key + "_.+"));
+        return Utils.loadRegionCaches(files);
+    }
+}
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/config/JetGeoProperties.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/config/JetGeoProperties.java
new file mode 100644
index 0000000..b1a056a
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/config/JetGeoProperties.java
@@ -0,0 +1,55 @@
+package com.ling5821.jetgeo.config;
+
+import com.ling5821.jetgeo.enums.LevelEnum;
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author lsj
+ * @date 2021/11/20 2:28
+ */
+@Data
+@NoArgsConstructor
+public class JetGeoProperties {
+
+    /**
+     * 区域地理边界坐标数据所在的父目录
+     */
+    private String geoDataParentPath;
+
+    /**
+     * 逆地理转换到的最低级别
+     */
+    private LevelEnum level;
+
+    /**
+     * S2 最小/最大单元格级别 调整前请务必先了解S2算法
+     */
+    private int s2MinLevel = 11;
+    private int s2MaxLevel = 16;
+
+    /**
+     * S2 最大单元格个数 调整前请务必先了解S2算法
+     */
+    private int s2MaxCells = 100;
+
+    /**
+     * 只对市级/县级缓存有效, 省级缓存在初始化时已经全部加载到内存
+     */
+    private int loadCacheInitialCapacity = 20;
+
+    private int loadCacheMaximumSize = 100;
+
+    /**
+     * 在指定的过期时间内没有读写,缓存数据即失效 建议与 loadCacheRefreshAfterWrite 设置为 5:1 / 3:1 的关系
+     */
+    private Duration loadCacheExpireAfterAccess = Duration.of(5, ChronoUnit.MINUTES);
+
+    /**
+     * 在指定的过期时间之后访问时,刷新缓存数据,在刷新任务未完成之前,其他线程返回旧值
+     * 建议与 loadCacheRefreshAfterWrite 设置为 1:5 / 1:3 的关系
+     */
+    private Duration loadCacheRefreshAfterWrite = Duration.of(1, ChronoUnit.MINUTES);
+}
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/enums/LevelEnum.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/enums/LevelEnum.java
new file mode 100644
index 0000000..7e7878a
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/enums/LevelEnum.java
@@ -0,0 +1,32 @@
+package com.ling5821.jetgeo.enums;
+
+/**
+ * @author lsj
+ * @date 2021/11/20 2:32
+ */
+public enum LevelEnum {
+    /**
+     * 省/直辖市/自治区
+     */
+    province,
+
+    /**
+     * 市
+     */
+    city,
+
+    /**
+     * 区/县
+     */
+    district,
+
+    /**
+     * 乡镇/街道(暂不支持定位到街道)
+     */
+//    street
+    ;
+    public boolean lessThen(LevelEnum levelEnum) {
+        return this.ordinal() >= levelEnum.ordinal();
+    }
+
+}
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/GeoInfo.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/GeoInfo.java
new file mode 100644
index 0000000..a221785
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/GeoInfo.java
@@ -0,0 +1,47 @@
+package com.ling5821.jetgeo.model;
+
+import com.ling5821.jetgeo.enums.LevelEnum;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author lsj
+ * @date 2021/11/20 2:52
+ */
+@Data
+@NoArgsConstructor
+public class GeoInfo {
+
+    private String formatAddress;
+    private String province;
+    private String city;
+    private String district;
+    private String street;
+    private String adcode;
+    private LevelEnum level;
+
+    /* 获取当前具有的等级, 如果搜索下级未找到,能保证此时Level标识能找到的最低等级 */
+    public void setLevel(LevelEnum level) {
+        if (this.level != null) {
+            this.level = level;
+        }
+    }
+
+    public void setRegionName(LevelEnum level, String regionName) {
+        if (level != null) {
+            switch (level) {
+                case province:
+                    this.province = regionName;
+                    break;
+                case city:
+                    this.city = regionName;
+                    break;
+                case district:
+                    this.district = regionName;
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+}
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/JsonPoint.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/JsonPoint.java
new file mode 100644
index 0000000..014d062
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/JsonPoint.java
@@ -0,0 +1,26 @@
+package com.ling5821.jetgeo.model;
+
+/**
+ * @author lsj
+ * @date 2021/11/18 16:38
+ */
+public class JsonPoint {
+    private double lng;
+    private double lat;
+
+    public double getLng() {
+        return lng;
+    }
+
+    public void setLng(double lng) {
+        this.lng = lng;
+    }
+
+    public double getLat() {
+        return lat;
+    }
+
+    public void setLat(double lat) {
+        this.lat = lat;
+    }
+}
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/RegionCache.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/RegionCache.java
new file mode 100644
index 0000000..54cfbee
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/RegionCache.java
@@ -0,0 +1,40 @@
+package com.ling5821.jetgeo.model;
+
+import com.google.common.geometry.S2Region;
+import com.ling5821.jetgeo.enums.LevelEnum;
+import com.ling5821.jetgeo.utils.S2Util;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author lsj
+ * @date 2021/11/20 3:02
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class RegionCache {
+    private String regionName;
+    private String parentCode;
+    private String regionCode;
+    private LevelEnum regionLevel;
+    private List<S2Region> s2RegionList;
+
+    public String getCacheKey() {
+        return parentCode != null && parentCode.length() > 0 ? parentCode + ":" + regionCode : regionCode;
+    }
+
+    public boolean contains(double lat,double lng) {
+        for (S2Region s2Region : this.s2RegionList) {
+            if (S2Util.contains(s2Region, lat, lng)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+
+}
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/RegionInfo.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/RegionInfo.java
new file mode 100644
index 0000000..97f46ae
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/RegionInfo.java
@@ -0,0 +1,22 @@
+package com.ling5821.jetgeo.model;
+
+import com.ling5821.jetgeo.enums.LevelEnum;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author lsj
+ * @date 2021/11/20 14:49
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class RegionInfo {
+
+    private LevelEnum regionLevel;
+    private String parentCode;
+    private String regionCode;
+    private String regionName;
+
+}
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/Tuple2.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/Tuple2.java
new file mode 100644
index 0000000..f00558f
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/Tuple2.java
@@ -0,0 +1,35 @@
+package com.ling5821.jetgeo.model;
+
+/**
+ * @author by https://blog.csdn.net/qq_43777978/article/details/116800460?ivk_sa=1024320u
+ * @date 2021/11/18 16:37
+ */
+public class Tuple2<A, B> {
+
+    private A a;
+    private B b;
+
+    public static Tuple2<Double, Double> tuple(Double a, Double b) {
+        Tuple2<Double, Double> tuple2 = new Tuple2<>();
+        tuple2.setA(a);
+        tuple2.setB(b);
+        return tuple2;
+    }
+
+    private void setA(A a) {
+        this.a = a;
+    }
+
+    private void setB(B b) {
+        this.b = b;
+    }
+
+    public A getVal1() {
+        return a;
+    }
+
+    public B getVal2() {
+        return b;
+    }
+
+}
\ No newline at end of file
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/WGS84Point.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/WGS84Point.java
new file mode 100644
index 0000000..f46f6fe
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/model/WGS84Point.java
@@ -0,0 +1,29 @@
+package com.ling5821.jetgeo.model;
+
+/**
+ * @author by https://blog.csdn.net/qq_43777978/article/details/116800460?ivk_sa=1024320u
+ * @date 2021/11/18 16:37
+ */
+public class WGS84Point {
+
+    private Double latitude;
+    private Double longitude;
+
+    public Double getLatitude() {
+        return latitude;
+    }
+
+    public WGS84Point setLatitude(Double latitude) {
+        this.latitude = latitude;
+        return this;
+    }
+
+    public Double getLongitude() {
+        return longitude;
+    }
+
+    public WGS84Point setLongitude(Double longitude) {
+        this.longitude = longitude;
+        return this;
+    }
+}
\ No newline at end of file
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/utils/S2Util.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/utils/S2Util.java
new file mode 100644
index 0000000..362fab5
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/utils/S2Util.java
@@ -0,0 +1,226 @@
+package com.ling5821.jetgeo.utils;
+
+import com.google.common.collect.Lists;
+import com.google.common.geometry.S2;
+import com.google.common.geometry.S2Cap;
+import com.google.common.geometry.S2Cell;
+import com.google.common.geometry.S2CellId;
+import com.google.common.geometry.S2CellUnion;
+import com.google.common.geometry.S2LatLng;
+import com.google.common.geometry.S2Loop;
+import com.google.common.geometry.S2Point;
+import com.google.common.geometry.S2Polygon;
+import com.google.common.geometry.S2Region;
+import com.google.common.geometry.S2RegionCoverer;
+import com.ling5821.jetgeo.model.Tuple2;
+import com.ling5821.jetgeo.model.WGS84Point;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author by https://blog.csdn.net/qq_43777978/article/details/116800460?ivk_sa=1024320u
+ * @date 2021/11/18 16:37
+ */
+public enum S2Util {
+    /**
+     * 实例
+     */
+    INSTANCE;
+
+    private static int minLevel = 11;
+    private static int maxLevel = 16;
+    private static int maxCells = 100;
+
+
+    private static S2RegionCoverer COVERER;
+
+    public static void init() {
+        COVERER = S2RegionCoverer.builder()
+            .setMinLevel(minLevel)
+            .setMinLevel(maxLevel)
+            .setMaxCells(maxCells)
+            .build();
+    }
+
+    /**
+     * 将单个cellId转换为多个指定level的cellId
+     *
+     * @param s2CellId
+     * @param desLevel
+     * @return
+     */
+    public static List<S2CellId> childrenCellId(S2CellId s2CellId, Integer desLevel) {
+        return childrenCellId(s2CellId, s2CellId.level(), desLevel);
+    }
+
+    private static List<S2CellId> childrenCellId(S2CellId s2CellId, Integer curLevel,
+        Integer desLevel) {
+        if (curLevel < desLevel) {
+            long interval = (s2CellId.childEnd().id() - s2CellId.childBegin().id()) / 4;
+            List<S2CellId> s2CellIds = Lists.newArrayList();
+            for (int i = 0; i < 4; i++) {
+                long id = s2CellId.childBegin().id() + interval * i;
+                s2CellIds.addAll(childrenCellId(new S2CellId(id), curLevel + 1, desLevel));
+            }
+            return s2CellIds;
+        } else {
+            return Lists.newArrayList(s2CellId);
+        }
+    }
+
+    /**
+     * 将cellToken转换为经纬度
+     *
+     * @param token
+     * @return
+     */
+    public static Tuple2<Double, Double> toLatLon(String token) {
+        S2LatLng latLng = new S2LatLng(S2CellId.fromToken(token).toPoint());
+        return Tuple2.tuple(latLng.latDegrees(), latLng.lngDegrees());
+    }
+
+    /**
+     * 将经纬度转换为cellId
+     *
+     * @param lat
+     * @param lon
+     * @return
+     */
+    public static S2CellId toCellId(double lat, double lon) {
+        return S2CellId.fromLatLng(S2LatLng.fromDegrees(lat, lon));
+    }
+
+    /**
+     * 判断region是否包含指定cellToken
+     *
+     * @param region
+     * @param cellToken
+     * @return
+     */
+    public static boolean contains(S2Region region, String cellToken) {
+        return region.contains(new S2Cell(S2CellId.fromToken(cellToken)));
+    }
+
+    /**
+     * 判断region是否包含指定经纬度坐标
+     *
+     * @param region
+     * @param lat
+     * @param lon
+     * @return
+     */
+    public static boolean contains(S2Region region, double lat, double lon) {
+        S2LatLng s2LatLng = S2LatLng.fromDegrees(lat, lon);
+        try {
+            boolean contains = region.contains(new S2Cell(s2LatLng));
+            return contains;
+        } catch (NullPointerException e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+
+    /**
+     * 根据region获取cellId列表
+     *
+     * @param region
+     * @return
+     */
+    public static List<S2CellId> getCellIdList(S2Region region) {
+        List<S2CellId> primeS2CellIdList = COVERER.getCovering(region).cellIds();
+        return primeS2CellIdList.stream()
+            .flatMap(s2CellId -> S2Util.childrenCellId(s2CellId, S2Util.minLevel).stream()).collect(
+                Collectors.toList());
+    }
+
+    /**
+     * 根据region获取合并后的cellId列表
+     *
+     * @param region
+     * @return
+     */
+    public static List<S2CellId> getCompactCellIdList(S2Region region) {
+        List<S2CellId> primeS2CellIdList = COVERER.getCovering(region).cellIds();
+        return primeS2CellIdList;
+    }
+
+    //获取圆形region
+    public static S2Region getS2RegionByCircle(double lat, double lon, double radius) {
+        double capHeight = (2 * S2.M_PI) * (radius / 40075017);
+        S2Cap cap = S2Cap.fromAxisHeight(S2LatLng.fromDegrees(lat, lon).toPoint(),
+            capHeight * capHeight / 2);
+        S2CellUnion s2CellUnion = COVERER.getCovering(cap);
+        return cap;
+    }
+
+    public static S2Region getS2RegionByCircle(WGS84Point point, double radius) {
+        return getS2RegionByCircle(point.getLatitude(), point.getLongitude(), radius);
+    }
+
+    //获取矩形region
+    public static S2Region geS2RegionByRect(WGS84Point point1, WGS84Point point2) {
+        return getS2RegionByRect(point1.getLatitude(), point1.getLongitude(), point2.getLatitude(),
+            point2.getLongitude());
+    }
+
+    public static S2Region getS2RegionByRect(Tuple2<Double, Double> point1,
+        Tuple2<Double, Double> point2) {
+        return getS2RegionByRect(point1.getVal1(), point1.getVal2(), point2.getVal1(),
+            point2.getVal2());
+    }
+
+    public static S2Region getS2RegionByRect(double lat1, double lon1, double lat2, double lon2) {
+        List<Tuple2<Double, Double>> latLonTuple2List = Lists.newArrayList(Tuple2.tuple(lat1, lon1),
+            Tuple2.tuple(lat1, lon2), Tuple2.tuple(lat2, lon2), Tuple2.tuple(lat2, lon1));
+        return getS2RegionByPolygon(latLonTuple2List);
+    }
+
+    //获取多边形region
+
+    public static S2Region getS2RegionByPolygon(WGS84Point[] pointArray) {
+        List<Tuple2<Double, Double>> latLonTuple2List = Lists.newArrayListWithExpectedSize(
+            pointArray.length);
+        for (int i = 0; i < pointArray.length; ++i) {
+            latLonTuple2List.add(
+                Tuple2.tuple(pointArray[i].getLatitude(), pointArray[i].getLongitude()));
+        }
+        return getS2RegionByPolygon(latLonTuple2List);
+    }
+
+    public static S2Region getS2RegionByPolygon(Tuple2<Double, Double>[] tuple2Array) {
+        return getS2RegionByPolygon(Lists.newArrayList(tuple2Array));
+    }
+
+
+    /**
+     * 注意需要以逆时针方向添加坐标点,多边形内部区域
+     */
+    public static S2Region getS2RegionByPolygon(List<Tuple2<Double, Double>> latLonTuple2List) {
+        List<S2Point> pointList = Lists.newArrayList();
+        for (Tuple2<Double, Double> latlonTuple2 : latLonTuple2List) {
+            pointList.add(
+                S2LatLng.fromDegrees(latlonTuple2.getVal1(), latlonTuple2.getVal2()).toPoint());
+
+        }
+        S2Loop s2Loop = new S2Loop(pointList);
+        S2Polygon s2Polygon = new S2Polygon(s2Loop);
+        return s2Polygon;
+
+        /*S2PolygonBuilder builder = new S2PolygonBuilder(S2PolygonBuilder.Options.DIRECTED_XOR);
+        builder.addLoop(s2Loop);
+        return builder.assemblePolygon();*/
+    }
+
+    public static void setMinLevel(int minLevel) {
+        S2Util.minLevel = minLevel;
+    }
+
+    public static void setMaxLevel(int maxLevel) {
+        S2Util.maxLevel = maxLevel;
+    }
+
+    public static void setMaxCells(int maxCells) {
+        S2Util.maxCells = maxCells;
+    }
+}
diff --git a/jetgeo-core/src/main/java/com/ling5821/jetgeo/utils/Utils.java b/jetgeo-core/src/main/java/com/ling5821/jetgeo/utils/Utils.java
new file mode 100644
index 0000000..240a915
--- /dev/null
+++ b/jetgeo-core/src/main/java/com/ling5821/jetgeo/utils/Utils.java
@@ -0,0 +1,109 @@
+package com.ling5821.jetgeo.utils;
+
+import com.google.common.geometry.S2Region;
+import com.ling5821.jetgeo.enums.LevelEnum;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.lang.TypeReference;
+import cn.hutool.json.JSONUtil;
+import com.ling5821.jetgeo.model.RegionCache;
+import com.ling5821.jetgeo.model.RegionInfo;
+import com.ling5821.jetgeo.model.JsonPoint;
+import com.ling5821.jetgeo.model.Tuple2;
+import java.io.File;
+import java.lang.reflect.Type;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author lsj
+ * @date 2021/11/20 3:19
+ */
+public class Utils {
+
+    public static List<List<JsonPoint>> readJsonPoint(File file) {
+        return JSONUtil.readJSONArray(
+            file,
+            StandardCharsets.UTF_8).toBean(new TypeReference<List<List<JsonPoint>>>() {
+            @Override
+            public Type getType() {
+                return super.getType();
+            }
+        });
+    }
+
+    public static List<List<Tuple2<Double, Double>>> jsonPointLists2Tuple2Lists(
+        List<List<JsonPoint>> jsonPointLists) {
+        return jsonPointLists.stream().map((jsonPointList) -> jsonPointList.stream()
+            .map((geoData) -> Tuple2.tuple(geoData.getLat(), geoData.getLng())).collect(
+                Collectors.toList())).collect(Collectors.toList());
+    }
+
+    public static RegionInfo getFileNameRegionInfo(String fileName) {
+        RegionInfo regionInfo = new RegionInfo();
+        String filePrefixName = FileUtil.getPrefix(fileName);
+        String[] info = filePrefixName.split("_");
+        LevelEnum level;
+        try {
+            level = LevelEnum.valueOf(info[0]);
+        } catch (Exception e) {
+            throw new RuntimeException("Unknown region level [" + info[0] + "]");
+        }
+        regionInfo.setRegionLevel(level);
+        switch (level) {
+            case province:
+                regionInfo.setRegionCode(info[1]);
+                regionInfo.setRegionName(info[2]);
+                break;
+            case city:
+                regionInfo.setParentCode(info[1]);
+                regionInfo.setRegionCode(info[2]);
+                regionInfo.setRegionName(info[3]);
+                break;
+            case district:
+                regionInfo.setParentCode(info[1]);
+                regionInfo.setRegionCode(info[2]);
+                regionInfo.setRegionName(info[3]);
+                break;
+            default:
+                throw new RuntimeException("Unknown region level [" + level + "]");
+        }
+        return regionInfo;
+    }
+
+    /**
+     * 加载RegionCache对象
+     *
+     * @param file
+     * @return
+     */
+    public static RegionCache loadRegionCache(File file) {
+        RegionInfo regionInfo = Utils.getFileNameRegionInfo(file.getName());
+        List<List<Tuple2<Double, Double>>> tuple2Lists = Utils.jsonPointLists2Tuple2Lists(
+            Utils.readJsonPoint(file));
+
+        List<S2Region> s2Regions = new ArrayList<>();
+        for (List<Tuple2<Double, Double>> tuple2List : tuple2Lists) {
+            S2Region s2Region = S2Util.getS2RegionByPolygon(tuple2List);
+            s2Regions.add(s2Region);
+        }
+        RegionCache regionCache = new RegionCache();
+        regionCache.setRegionLevel(regionInfo.getRegionLevel());
+        regionCache.setParentCode(regionInfo.getParentCode());
+        regionCache.setRegionCode(regionInfo.getRegionCode());
+        regionCache.setRegionName(regionInfo.getRegionName());
+        regionCache.setS2RegionList(s2Regions);
+        return regionCache;
+    }
+
+    public static List<RegionCache> loadRegionCaches(List<File> files) {
+        List<RegionCache> regionCacheList = new ArrayList<>();
+        for (File file : files) {
+            regionCacheList.add(loadRegionCache(file));
+        }
+        return regionCacheList;
+    }
+
+}
diff --git a/jetgeo-core/src/test/java/com/ling5821/jetgeo/JetGeoExample.java b/jetgeo-core/src/test/java/com/ling5821/jetgeo/JetGeoExample.java
new file mode 100644
index 0000000..dbf7316
--- /dev/null
+++ b/jetgeo-core/src/test/java/com/ling5821/jetgeo/JetGeoExample.java
@@ -0,0 +1,37 @@
+package com.ling5821.jetgeo;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.ling5821.jetgeo.config.JetGeoProperties;
+import com.ling5821.jetgeo.enums.LevelEnum;
+import com.ling5821.jetgeo.model.GeoInfo;
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.lucene.util.RamUsageEstimator;
+import org.junit.jupiter.api.Test;
+
+/**
+ * @author lsj
+ * @date 2021/11/20 14:34
+ */
+public class JetGeoExample {
+    public static final JetGeo jetGeo;
+    static {
+        JetGeoProperties properties = new JetGeoProperties();
+        properties.setGeoDataParentPath("D:\\Projects\\idea\\jetgeo\\jetgeo-core\\src\\main\\resources");
+        properties.setLevel(LevelEnum.province);
+        properties.setLevel(LevelEnum.city);
+        properties.setLevel(LevelEnum.district);
+        jetGeo = new JetGeo(properties);
+    }
+
+    public static void main(String[] args) {
+        GeoInfo geoInfo = jetGeo.getGeoInfo(32.053197915979325,118.85999259252777);
+        System.out.println(geoInfo);
+    }
+}
diff --git a/jetgeo-core/src/test/java/com/ling5821/jetgeo/JetGeoTests.java b/jetgeo-core/src/test/java/com/ling5821/jetgeo/JetGeoTests.java
new file mode 100644
index 0000000..a098884
--- /dev/null
+++ b/jetgeo-core/src/test/java/com/ling5821/jetgeo/JetGeoTests.java
@@ -0,0 +1,133 @@
+package com.ling5821.jetgeo;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.ling5821.jetgeo.config.JetGeoProperties;
+import com.ling5821.jetgeo.enums.LevelEnum;
+import com.ling5821.jetgeo.model.GeoInfo;
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.lucene.util.RamUsageEstimator;
+import org.junit.jupiter.api.Test;
+
+/**
+ * @author lsj
+ * @date 2021/11/20 14:34
+ */
+public class JetGeoTests {
+    public static final JetGeo jetGeo;
+    static {
+        JetGeoProperties properties = new JetGeoProperties();
+        properties.setGeoDataParentPath("/data/geodata");
+        properties.setLevel(LevelEnum.province);
+        properties.setLevel(LevelEnum.city);
+        properties.setLevel(LevelEnum.district);
+        jetGeo = new JetGeo(properties);
+    }
+
+    @Test
+    void initTest() {
+        GeoInfo geoInfo1 = jetGeo.getGeoInfo(35.338650457294094, 112.25346613445444);
+        System.out.println(geoInfo1);
+
+        GeoInfo geoInfo2 = jetGeo.getGeoInfo(39.916755616254555,93.42899448106573);
+        System.out.println(geoInfo2);
+
+        GeoInfo geoInfo3 = jetGeo.getGeoInfo(41.03984141034477,93.39220344090528);
+        System.out.println(geoInfo3);
+
+        GeoInfo geoInfo4 = jetGeo.getGeoInfo(30.424732936810585,99.13300704545584);
+        System.out.println(geoInfo4);
+
+        GeoInfo geoInfo5 = jetGeo.getGeoInfo(30.281764911231406,98.80224205919843);
+        System.out.println(geoInfo5);
+
+        GeoInfo geoInfo6 = jetGeo.getGeoInfo(50.49211333201635,124.39579025135696);
+        System.out.println(geoInfo6);
+
+        GeoInfo geoInfo7 = jetGeo.getGeoInfo(50.47740931720987,124.46268489454489);
+        System.out.println(geoInfo7);
+
+        GeoInfo geoInfo8 = jetGeo.getGeoInfo(50.203970460629016,124.24193207907093);
+        System.out.println(geoInfo8);
+
+        GeoInfo geoInfo9 = jetGeo.getGeoInfo(50.17430508526461,124.37044861056783);
+        System.out.println(geoInfo9);
+
+        GeoInfo geoInfo10 = jetGeo.getGeoInfo(50.58880035292801,124.10597230982526);
+        System.out.println(geoInfo10);
+
+        GeoInfo geoInfo11 = jetGeo.getGeoInfo(50.54790703930835,124.11281195442807);
+        System.out.println(geoInfo11);
+
+        GeoInfo geoInfo12 = jetGeo.getGeoInfo(50.200244507206136,124.31338798795879);
+        System.out.println(geoInfo12);
+
+        GeoInfo geoInfo13 = jetGeo.getGeoInfo(22.133244733471454,113.56844351864902);
+        System.out.println(geoInfo13);
+
+        GeoInfo geoInfo14 = jetGeo.getGeoInfo(22.40322011200182,114.11298895339678);
+        System.out.println(geoInfo14);
+    }
+
+    @Test
+    void getCellIdTest() {
+        /*for (RegionCache regionCache : JetGeo.PROVINCE_REGION_CACHE.values()) {
+            List<S2Region> s2RegionList = regionCache.getS2RegionList();
+            for (S2Region s2Region : s2RegionList) {
+                StringBuilder sb = new StringBuilder();
+                List<S2CellId> cellIdList = S2Util.getCellIdList(s2Region);
+                Map<Integer,Integer> sizeCountMap = new HashMap<>();
+                cellIdList.forEach(s2CellId -> {
+                    System.out.println("Level:" + s2CellId.level() + ", ID:" + s2CellId.toToken() + ",Min:"
+                        + s2CellId.rangeMin().toToken() + ",Max:" + s2CellId.rangeMax().toToken());
+                    sb.append(",").append(s2CellId.toToken());
+                    sizeCountMap.put(s2CellId.level(), sizeCountMap.getOrDefault(s2CellId.level(), 0) + 1);
+                });
+                System.out.println(sb.substring(1));
+                System.out.println("totalSize:" + cellIdList.size());
+                sizeCountMap.forEach((key, value) -> System.out.printf("level:%d,size:%d\n", key, value));
+                System.out.println(regionCache.getRegionName() + "-----------------------------");
+                cellIdList = null;
+            }
+        }*/
+        System.out.println(RamUsageEstimator.humanSizeOf(JetGeo.PROVINCE_REGION_CACHE));
+        System.out.println(RamUsageEstimator.humanSizeOf(jetGeo.CITY_REGION_CACHE));
+
+    }
+
+    void jsonDataParse() {
+        String districtStr = FileUtil.readString("source_data/district.txt", StandardCharsets.UTF_8);
+        String[] splitArray = districtStr.split("\r\n");
+        Map<String, Integer> countMap = new HashMap<>();
+        int pre = 0;
+        for (String str : splitArray) {
+            String[] strs = str.split(":");
+            int count = Integer.parseInt(strs[2]) - pre;
+            pre = Integer.parseInt(strs[2]);
+            countMap.put(strs[0], count);
+        }
+        List<File> files = FileUtil.loopFiles("source_data/json/district");
+        for (File file : files) {
+            JSONArray objects = JSONUtil.readJSONArray(file, StandardCharsets.UTF_8);
+            for (Object object : objects) {
+                JSONObject jsonObject = (JSONObject) object;
+                String fileName = jsonObject.getStr("fileName");
+                String data = jsonObject.getStr("data");
+                FileUtil.writeString(data,"D:\\Projects\\idea\\jetgeo\\jetgeo-core\\src\\main\\resources\\district\\" + fileName + ".json" , StandardCharsets.UTF_8);
+            }
+            String adcode = FileUtil.getPrefix(file);
+            Integer count = countMap.get(adcode);
+            if (count == null) {
+                System.out.println(adcode + " not count");
+            } else if (count != objects.size()) {
+                System.out.println(adcode + " not equal count: " + count + " size: " + objects.size());
+            }
+        }
+    }
+}
diff --git a/jetgeo-spring-boot-starter/pom.xml b/jetgeo-spring-boot-starter/pom.xml
new file mode 100644
index 0000000..97ce943
--- /dev/null
+++ b/jetgeo-spring-boot-starter/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>jetgeo</artifactId>
+        <groupId>com.ling5821</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>jetgeo-spring-boot-starter</artifactId>
+
+    <properties>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.ling5821</groupId>
+            <artifactId>jetgeo-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.qcloud</groupId>
+            <artifactId>cmq-tcp-client</artifactId>
+            <version>1.1.1</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/jetgeo-spring-boot-starter/src/main/java/com/ling5821/jetgeo/starter/JetGeoAutoConfiguration.java b/jetgeo-spring-boot-starter/src/main/java/com/ling5821/jetgeo/starter/JetGeoAutoConfiguration.java
new file mode 100644
index 0000000..bd63404
--- /dev/null
+++ b/jetgeo-spring-boot-starter/src/main/java/com/ling5821/jetgeo/starter/JetGeoAutoConfiguration.java
@@ -0,0 +1,32 @@
+package com.ling5821.jetgeo.starter;
+
+import com.ling5821.jetgeo.JetGeo;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author lsj
+ * @date 2021/11/24 15:08
+ */
+@Configuration
+@EnableConfigurationProperties(JetGeoProperties.class)
+public class JetGeoAutoConfiguration {
+    @Bean
+    @ConditionalOnMissingBean
+    public JetGeo jetGeo(JetGeoProperties properties) {
+        com.ling5821.jetgeo.config.JetGeoProperties config = new com.ling5821.jetgeo.config.JetGeoProperties();
+        config.setGeoDataParentPath(properties.getGeoDataParentPath());
+        config.setLevel(properties.getLevel());
+        config.setS2MinLevel(properties.getS2MinLevel());
+        config.setS2MaxLevel(properties.getS2MaxLevel());
+        config.setS2MaxCells(properties.getS2MaxCells());
+        config.setLoadCacheInitialCapacity(properties.getLoadCacheInitialCapacity());
+        config.setLoadCacheMaximumSize(properties.getLoadCacheMaximumSize());
+        config.setLoadCacheExpireAfterAccess(properties.getLoadCacheExpireAfterAccess());
+        config.setLoadCacheRefreshAfterWrite(properties.getLoadCacheRefreshAfterWrite());
+        return new JetGeo(config);
+    }
+
+}
diff --git a/jetgeo-spring-boot-starter/src/main/java/com/ling5821/jetgeo/starter/JetGeoProperties.java b/jetgeo-spring-boot-starter/src/main/java/com/ling5821/jetgeo/starter/JetGeoProperties.java
new file mode 100644
index 0000000..97e5baf
--- /dev/null
+++ b/jetgeo-spring-boot-starter/src/main/java/com/ling5821/jetgeo/starter/JetGeoProperties.java
@@ -0,0 +1,54 @@
+package com.ling5821.jetgeo.starter;
+
+import com.ling5821.jetgeo.enums.LevelEnum;
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * @author lsj
+ * @date 2021/11/24 16:03
+ */
+@ConfigurationProperties(prefix = "jetgeo")
+@Data
+public class JetGeoProperties {
+
+    /**
+     * 区域地理边界坐标数据所在的父目录
+     */
+    private String geoDataParentPath;
+
+    /**
+     * 逆地理转换到的最低级别
+     */
+    private LevelEnum level;
+
+    /**
+     * S2 最小/最大单元格级别 调整前请务必先了解S2算法
+     */
+    private int s2MinLevel = 11;
+    private int s2MaxLevel = 16;
+
+    /**
+     * S2 最大单元格个数 调整前请务必先了解S2算法
+     */
+    private int s2MaxCells = 100;
+
+    /**
+     * 只对市级/县级缓存有效, 省级缓存在初始化时已经全部加载到内存
+     */
+    private int loadCacheInitialCapacity = 20;
+
+    private int loadCacheMaximumSize = 100;
+
+    /**
+     * 在指定的过期时间内没有读写,缓存数据即失效 建议与 loadCacheRefreshAfterWrite 设置为 5:1 / 3:1 的关系
+     */
+    private Duration loadCacheExpireAfterAccess = Duration.of(5, ChronoUnit.MINUTES);
+
+    /**
+     * 在指定的过期时间之后访问时,刷新缓存数据,在刷新任务未完成之前,其他线程返回旧值 建议与 loadCacheRefreshAfterWrite 设置为 1:5 / 1:3 的关系
+     */
+    private Duration loadCacheRefreshAfterWrite = Duration.of(1, ChronoUnit.MINUTES);
+}
diff --git a/jetgeo-spring-boot-starter/src/main/resources/META-INF/spring.factories b/jetgeo-spring-boot-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..9192a21
--- /dev/null
+++ b/jetgeo-spring-boot-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+  com.ling5821.jetgeo.starter.JetGeoAutoConfiguration
\ No newline at end of file
diff --git a/jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/JetGeoStarterApplicationTests.java b/jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/JetGeoStarterApplicationTests.java
new file mode 100644
index 0000000..f5ff665
--- /dev/null
+++ b/jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/JetGeoStarterApplicationTests.java
@@ -0,0 +1,44 @@
+package com.ling5821.jetgeo.starter;
+
+import com.ling5821.jetgeo.JetGeo;
+import com.ling5821.jetgeo.model.GeoInfo;
+import com.ling5821.jetgeo.starter.cmq.CmqTcpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.util.StopWatch;
+
+/**
+ * @author lsj
+ * @date 2021/11/24 15:19
+ */
+@SpringBootTest(classes = {JetGeoAutoConfiguration.class, CmqTcpHandler.class})
+@Slf4j
+public class JetGeoStarterApplicationTests {
+
+    @Autowired
+    private JetGeo jetGeo;
+
+    @Autowired
+    private CmqTcpHandler cmqTcpHandler;
+
+    @Test
+    void testJetGeo() {
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start();
+        for (int i = 0; i < 100000; i++) {
+            GeoInfo geoInfo1 = jetGeo.getGeoInfo(35.338650457294094, 112.25346613445444);
+            System.out.println(geoInfo1);
+        }
+        stopWatch.stop();
+        log.info("time seconds {}s", stopWatch.getTotalTimeMillis() / 1000);
+
+    }
+
+    @Test
+    void testGpsPressure() throws InterruptedException {
+        cmqTcpHandler.start();
+        Thread.currentThread().join();
+    }
+}
diff --git a/jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/cmq/CmqTcpHandler.java b/jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/cmq/CmqTcpHandler.java
new file mode 100644
index 0000000..275553e
--- /dev/null
+++ b/jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/cmq/CmqTcpHandler.java
@@ -0,0 +1,102 @@
+package com.ling5821.jetgeo.starter.cmq;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.ling5821.jetgeo.JetGeo;
+import com.ling5821.jetgeo.model.GeoInfo;
+import com.ling5821.jetgeo.starter.model.GpsInfo;
+import com.qcloud.cmq.client.consumer.BatchDeleteCallback;
+import com.qcloud.cmq.client.consumer.BatchDeleteResult;
+import com.qcloud.cmq.client.consumer.Consumer;
+import com.qcloud.cmq.client.consumer.Message;
+import com.qcloud.cmq.client.exception.MQClientException;
+import com.qcloud.cmq.client.exception.MQServerException;
+import java.util.LinkedList;
+import java.util.List;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StopWatch;
+
+/**
+ * @author lsj
+ * @date 2020/5/12 9:36
+ */
+@Component
+@Slf4j
+public class CmqTcpHandler {
+
+    private static final int DEFAULT_MSG_COUNT = 16;
+    private static final int DEFAULT_POLLING_WAIT_SECONDS = 5;
+    private static final int DEFAULT_REQUEST_TIMEOUT = 5000;
+    public static final String SECRET_ID = System.getProperty("secretId");
+    public static final String SECRET_KEY = System.getProperty("secretKey");
+    public static final String TCP_SERVER = "http://cmq-nameserver-sh.tencentcloudapi.com";
+
+    private final Consumer consumer;
+
+    @Autowired
+    private JetGeo jetGeo;
+
+    public CmqTcpHandler() {
+        this.consumer = initConsumer();
+    }
+
+    public Consumer initConsumer() {
+        Consumer consumer = new Consumer();
+        consumer.setNameServerAddress(TCP_SERVER);
+        consumer.setSecretId(SECRET_ID);
+        consumer.setSecretKey(SECRET_KEY);
+        consumer.setBatchPullNumber(DEFAULT_MSG_COUNT);
+        consumer.setPollingWaitSeconds(DEFAULT_POLLING_WAIT_SECONDS);
+        consumer.setRequestTimeoutMS(DEFAULT_REQUEST_TIMEOUT);
+        consumer.start();
+        return consumer;
+    }
+
+    private void batchDeleteQueueMsg(String queueName, List<Long> receiptHandlerList) {
+        try {
+            consumer.batchDeleteMsg(queueName, receiptHandlerList, new BatchDeleteCallback() {
+                @Override
+                public void onSuccess(BatchDeleteResult batchDeleteResult) {
+                    batchDeleteResult.getErrorList().forEach(item -> {
+                        consumer.deleteMsg(queueName, item.getReceiptHandle());
+                    });
+                }
+
+                @Override
+                public void onException(Throwable throwable) {
+                    receiptHandlerList.forEach(item -> {
+                        consumer.deleteMsg(queueName, item);
+                    });
+                }
+            });
+        } catch (MQClientException | MQServerException e) {
+            log.error("batchDeleteQueueMsg", e);
+        }
+
+    }
+
+    public List<Long> handleGatewayMessage(List<Message> messageList) {
+        List<Long> receiptHandlerList = new LinkedList<>();
+        messageList.forEach(this::handleMessage);
+        return receiptHandlerList;
+    }
+
+    public void handleMessage(Message message) {
+        JSONObject jsonObject = JSONUtil.parseObj(message.getData());
+        JSONObject data = (JSONObject) jsonObject.get("data");
+        GpsInfo gpsInfo = JSONUtil.toBean(data, GpsInfo.class);
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start();
+        GeoInfo geoInfo = jetGeo.getGeoInfo(gpsInfo.getLatitude(), gpsInfo.getLongitude());
+        stopWatch.stop();
+        System.out.printf("%s seconds %dms %s\n", gpsInfo.getDeviceId(),
+            stopWatch.getTotalTimeMillis(), geoInfo);
+    }
+
+    public void start() {
+        String queueName = "gps-test";
+        this.consumer.subscribe(queueName, (queue, list) -> handleGatewayMessage(list));
+    }
+}
diff --git a/jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/model/GpsInfo.java b/jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/model/GpsInfo.java
new file mode 100644
index 0000000..9feb5ef
--- /dev/null
+++ b/jetgeo-spring-boot-starter/src/test/java/com/ling5821/jetgeo/starter/model/GpsInfo.java
@@ -0,0 +1,14 @@
+package com.ling5821.jetgeo.starter.model;
+
+import lombok.Data;
+
+/**
+ * @author lsj
+ * @date 2021/12/1 10:01
+ */
+@Data
+public class GpsInfo {
+    private String deviceId;
+    private Double longitude;
+    private Double latitude;
+}
diff --git a/jetgeo-spring-boot-starter/src/test/resources/application.yml b/jetgeo-spring-boot-starter/src/test/resources/application.yml
new file mode 100644
index 0000000..91fc93c
--- /dev/null
+++ b/jetgeo-spring-boot-starter/src/test/resources/application.yml
@@ -0,0 +1,3 @@
+jetgeo:
+  level: district
+  geo-data-parent-path: C:\geodata
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..ff01997
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.ling5821</groupId>
+    <artifactId>jetgeo</artifactId>
+    <packaging>pom</packaging>
+    <version>1.0.0-SNAPSHOT</version>
+    <modules>
+        <module>jetgeo-core</module>
+        <module>jetgeo-spring-boot-starter</module>
+    </modules>
+
+    <name>jetgeo</name>
+    <url>https://github.com/linG5821/jetgeo.git</url>
+    <description>This is a library that implements coordinate inverse geocoding without calling other apis</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <project.encoding>UTF-8</project.encoding>
+        <maven.compiler.source>${java.version}</maven.compiler.source>
+        <maven.compiler.target>${java.version}</maven.compiler.target>
+        <project.build.sourceEncoding>${project.encoding}</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>${project.encoding}</project.reporting.outputEncoding>
+        <google-s2.version>2.0.0</google-s2.version>
+        <hutool.version>5.7.16</hutool.version>
+        <lucene-core.version>4.0.0</lucene-core.version>
+        <lombok.version>1.18.22</lombok.version>
+        <spring-boot.version>2.4.12</spring-boot.version>
+        <junit.version>5.8.1</junit.version>
+        <skipTests>true</skipTests>
+    </properties>
+
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo,manual</distribution>
+        </license>
+    </licenses>
+
+    <developers>
+        <developer>
+            <name>linG</name>
+            <email>ling5821@foxmail.com</email>
+        </developer>
+    </developers>
+
+    <scm>
+        <connection>https://github.com/linG5821/jetgeo.git</connection>
+        <developerConnection>https://github.com/linG5821/jetgeo.git</developerConnection>
+        <url>https://github.com/linG5821/jetgeo</url>
+        <tag>${project.version}</tag>
+    </scm>
+
+    <distributionManagement>
+        <repository>
+            <id>ossrh</id>
+            <name>maven_nexus_repo</name>
+            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
+        </repository>
+        <snapshotRepository>
+            <id>ossrh</id>
+            <name>Central Repository OSSRH</name>
+            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
+        </snapshotRepository>
+    </distributionManagement>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>com.ling5821</groupId>
+                <artifactId>jetgeo-core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>com.google.geometry</groupId>
+                <artifactId>s2-geometry</artifactId>
+                <version>${google-s2.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-all</artifactId>
+                <version>${hutool.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.lucene</groupId>
+                <artifactId>lucene-core</artifactId>
+                <version>${lucene-core.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.projectlombok</groupId>
+                <artifactId>lombok</artifactId>
+                <version>${lombok.version}</version>
+                <optional>true</optional>
+            </dependency>
+            <dependency>
+                <groupId>org.junit.jupiter</groupId>
+                <artifactId>junit-jupiter</artifactId>
+                <version>${junit.version}</version>
+                <scope>test</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>3.2.0</version>
+                <configuration>
+                    <encoding>${project.encoding}</encoding>
+                    <charset>${project.encoding}</charset>
+                    <docencoding>${project.encoding}</docencoding>
+                    <doclint>none</doclint>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>3.2.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-gpg-plugin</artifactId>
+                <version>1.6</version>
+                <executions>
+                    <execution>
+                        <id>sign-artifacts</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>sign</goal>
+                        </goals>
+                        <configuration>
+                            <!-- Prevent gpg from using pinentry programs -->
+                            <gpgArguments>
+                                <arg>--pinentry-mode</arg>
+                                <arg>loopback</arg>
+                            </gpgArguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.sonatype.plugins</groupId>
+                <artifactId>nexus-staging-maven-plugin</artifactId>
+                <version>1.6.7</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <serverId>ossrh</serverId>
+                    <nexusUrl>https://oss.sonatype.org/</nexusUrl>
+                    <autoReleaseAfterClose>true</autoReleaseAfterClose>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file