diff --git a/hs-im-server/im-message-store/src/main/resources/application.yml b/hs-im-server/im-message-store/src/main/resources/application.yml
index 9f96606..3d7808a 100644
--- a/hs-im-server/im-message-store/src/main/resources/application.yml
+++ b/hs-im-server/im-message-store/src/main/resources/application.yml
@@ -1,3 +1,3 @@
spring:
profiles:
- active: prod
+ active: dev
diff --git a/hs-im-server/im-service/src/main/java/com/lld/im/service/call/service/ImCallHistoryService.java b/hs-im-server/im-service/src/main/java/com/lld/im/service/call/service/ImCallHistoryService.java
index a7275e2..d1706ce 100644
--- a/hs-im-server/im-service/src/main/java/com/lld/im/service/call/service/ImCallHistoryService.java
+++ b/hs-im-server/im-service/src/main/java/com/lld/im/service/call/service/ImCallHistoryService.java
@@ -73,19 +73,13 @@ public class ImCallHistoryService {
//TODO 结束之后通知客户端
SendMessageReq req= new SendMessageReq();
-
req.setAppId(10000);
req.setFromId(imCallHistory.getInviteId());
req.setToId(imCallHistory.getPassiveId());
req.setMessageTime(System.currentTimeMillis());
-
// req.setMessageRandom();
-
req.setMessageBody(JSONObject.toJSONString(imCallHistory));
req.setMessageId(UUID.randomUUID().toString().replace("-", ""));
-
-
-
req.setImei("uniapp");
req.setClientType(1);
diff --git a/hs-im-server/im-service/src/main/resources/application.yml b/hs-im-server/im-service/src/main/resources/application.yml
index 9f96606..3d7808a 100644
--- a/hs-im-server/im-service/src/main/resources/application.yml
+++ b/hs-im-server/im-service/src/main/resources/application.yml
@@ -1,3 +1,3 @@
spring:
profiles:
- active: prod
+ active: dev
diff --git a/im-uniapp/.gitignore b/im-uniapp/.gitignore
deleted file mode 100644
index 8d89a73..0000000
--- a/im-uniapp/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-/.hbuilderx/
-/node_modules/
-/unpackage/dist/
-/package-lock.json
-/unpackage/release/
-/unpackage/cache/
-/json/
-/unpackage/debug/
\ No newline at end of file
diff --git a/im-uniapp/App.vue b/im-uniapp/App.vue
deleted file mode 100644
index 48374f2..0000000
--- a/im-uniapp/App.vue
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
diff --git a/im-uniapp/LICENSE b/im-uniapp/LICENSE
deleted file mode 100644
index a612ad9..0000000
--- a/im-uniapp/LICENSE
+++ /dev/null
@@ -1,373 +0,0 @@
-Mozilla Public License Version 2.0
-==================================
-
-1. Definitions
---------------
-
-1.1. "Contributor"
- means each individual or legal entity that creates, contributes to
- the creation of, or owns Covered Software.
-
-1.2. "Contributor Version"
- means the combination of the Contributions of others (if any) used
- by a Contributor and that particular Contributor's Contribution.
-
-1.3. "Contribution"
- means Covered Software of a particular Contributor.
-
-1.4. "Covered Software"
- means Source Code Form to which the initial Contributor has attached
- the notice in Exhibit A, the Executable Form of such Source Code
- Form, and Modifications of such Source Code Form, in each case
- including portions thereof.
-
-1.5. "Incompatible With Secondary Licenses"
- means
-
- (a) that the initial Contributor has attached the notice described
- in Exhibit B to the Covered Software; or
-
- (b) that the Covered Software was made available under the terms of
- version 1.1 or earlier of the License, but not also under the
- terms of a Secondary License.
-
-1.6. "Executable Form"
- means any form of the work other than Source Code Form.
-
-1.7. "Larger Work"
- means a work that combines Covered Software with other material, in
- a separate file or files, that is not Covered Software.
-
-1.8. "License"
- means this document.
-
-1.9. "Licensable"
- means having the right to grant, to the maximum extent possible,
- whether at the time of the initial grant or subsequently, any and
- all of the rights conveyed by this License.
-
-1.10. "Modifications"
- means any of the following:
-
- (a) any file in Source Code Form that results from an addition to,
- deletion from, or modification of the contents of Covered
- Software; or
-
- (b) any new file in Source Code Form that contains any Covered
- Software.
-
-1.11. "Patent Claims" of a Contributor
- means any patent claim(s), including without limitation, method,
- process, and apparatus claims, in any patent Licensable by such
- Contributor that would be infringed, but for the grant of the
- License, by the making, using, selling, offering for sale, having
- made, import, or transfer of either its Contributions or its
- Contributor Version.
-
-1.12. "Secondary License"
- means either the GNU General Public License, Version 2.0, the GNU
- Lesser General Public License, Version 2.1, the GNU Affero General
- Public License, Version 3.0, or any later versions of those
- licenses.
-
-1.13. "Source Code Form"
- means the form of the work preferred for making modifications.
-
-1.14. "You" (or "Your")
- means an individual or a legal entity exercising rights under this
- License. For legal entities, "You" includes any entity that
- controls, is controlled by, or is under common control with You. For
- purposes of this definition, "control" means (a) the power, direct
- or indirect, to cause the direction or management of such entity,
- whether by contract or otherwise, or (b) ownership of more than
- fifty percent (50%) of the outstanding shares or beneficial
- ownership of such entity.
-
-2. License Grants and Conditions
---------------------------------
-
-2.1. Grants
-
-Each Contributor hereby grants You a world-wide, royalty-free,
-non-exclusive license:
-
-(a) under intellectual property rights (other than patent or trademark)
- Licensable by such Contributor to use, reproduce, make available,
- modify, display, perform, distribute, and otherwise exploit its
- Contributions, either on an unmodified basis, with Modifications, or
- as part of a Larger Work; and
-
-(b) under Patent Claims of such Contributor to make, use, sell, offer
- for sale, have made, import, and otherwise transfer either its
- Contributions or its Contributor Version.
-
-2.2. Effective Date
-
-The licenses granted in Section 2.1 with respect to any Contribution
-become effective for each Contribution on the date the Contributor first
-distributes such Contribution.
-
-2.3. Limitations on Grant Scope
-
-The licenses granted in this Section 2 are the only rights granted under
-this License. No additional rights or licenses will be implied from the
-distribution or licensing of Covered Software under this License.
-Notwithstanding Section 2.1(b) above, no patent license is granted by a
-Contributor:
-
-(a) for any code that a Contributor has removed from Covered Software;
- or
-
-(b) for infringements caused by: (i) Your and any other third party's
- modifications of Covered Software, or (ii) the combination of its
- Contributions with other software (except as part of its Contributor
- Version); or
-
-(c) under Patent Claims infringed by Covered Software in the absence of
- its Contributions.
-
-This License does not grant any rights in the trademarks, service marks,
-or logos of any Contributor (except as may be necessary to comply with
-the notice requirements in Section 3.4).
-
-2.4. Subsequent Licenses
-
-No Contributor makes additional grants as a result of Your choice to
-distribute the Covered Software under a subsequent version of this
-License (see Section 10.2) or under the terms of a Secondary License (if
-permitted under the terms of Section 3.3).
-
-2.5. Representation
-
-Each Contributor represents that the Contributor believes its
-Contributions are its original creation(s) or it has sufficient rights
-to grant the rights to its Contributions conveyed by this License.
-
-2.6. Fair Use
-
-This License is not intended to limit any rights You have under
-applicable copyright doctrines of fair use, fair dealing, or other
-equivalents.
-
-2.7. Conditions
-
-Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
-in Section 2.1.
-
-3. Responsibilities
--------------------
-
-3.1. Distribution of Source Form
-
-All distribution of Covered Software in Source Code Form, including any
-Modifications that You create or to which You contribute, must be under
-the terms of this License. You must inform recipients that the Source
-Code Form of the Covered Software is governed by the terms of this
-License, and how they can obtain a copy of this License. You may not
-attempt to alter or restrict the recipients' rights in the Source Code
-Form.
-
-3.2. Distribution of Executable Form
-
-If You distribute Covered Software in Executable Form then:
-
-(a) such Covered Software must also be made available in Source Code
- Form, as described in Section 3.1, and You must inform recipients of
- the Executable Form how they can obtain a copy of such Source Code
- Form by reasonable means in a timely manner, at a charge no more
- than the cost of distribution to the recipient; and
-
-(b) You may distribute such Executable Form under the terms of this
- License, or sublicense it under different terms, provided that the
- license for the Executable Form does not attempt to limit or alter
- the recipients' rights in the Source Code Form under this License.
-
-3.3. Distribution of a Larger Work
-
-You may create and distribute a Larger Work under terms of Your choice,
-provided that You also comply with the requirements of this License for
-the Covered Software. If the Larger Work is a combination of Covered
-Software with a work governed by one or more Secondary Licenses, and the
-Covered Software is not Incompatible With Secondary Licenses, this
-License permits You to additionally distribute such Covered Software
-under the terms of such Secondary License(s), so that the recipient of
-the Larger Work may, at their option, further distribute the Covered
-Software under the terms of either this License or such Secondary
-License(s).
-
-3.4. Notices
-
-You may not remove or alter the substance of any license notices
-(including copyright notices, patent notices, disclaimers of warranty,
-or limitations of liability) contained within the Source Code Form of
-the Covered Software, except that You may alter any license notices to
-the extent required to remedy known factual inaccuracies.
-
-3.5. Application of Additional Terms
-
-You may choose to offer, and to charge a fee for, warranty, support,
-indemnity or liability obligations to one or more recipients of Covered
-Software. However, You may do so only on Your own behalf, and not on
-behalf of any Contributor. You must make it absolutely clear that any
-such warranty, support, indemnity, or liability obligation is offered by
-You alone, and You hereby agree to indemnify every Contributor for any
-liability incurred by such Contributor as a result of warranty, support,
-indemnity or liability terms You offer. You may include additional
-disclaimers of warranty and limitations of liability specific to any
-jurisdiction.
-
-4. Inability to Comply Due to Statute or Regulation
----------------------------------------------------
-
-If it is impossible for You to comply with any of the terms of this
-License with respect to some or all of the Covered Software due to
-statute, judicial order, or regulation then You must: (a) comply with
-the terms of this License to the maximum extent possible; and (b)
-describe the limitations and the code they affect. Such description must
-be placed in a text file included with all distributions of the Covered
-Software under this License. Except to the extent prohibited by statute
-or regulation, such description must be sufficiently detailed for a
-recipient of ordinary skill to be able to understand it.
-
-5. Termination
---------------
-
-5.1. The rights granted under this License will terminate automatically
-if You fail to comply with any of its terms. However, if You become
-compliant, then the rights granted under this License from a particular
-Contributor are reinstated (a) provisionally, unless and until such
-Contributor explicitly and finally terminates Your grants, and (b) on an
-ongoing basis, if such Contributor fails to notify You of the
-non-compliance by some reasonable means prior to 60 days after You have
-come back into compliance. Moreover, Your grants from a particular
-Contributor are reinstated on an ongoing basis if such Contributor
-notifies You of the non-compliance by some reasonable means, this is the
-first time You have received notice of non-compliance with this License
-from such Contributor, and You become compliant prior to 30 days after
-Your receipt of the notice.
-
-5.2. If You initiate litigation against any entity by asserting a patent
-infringement claim (excluding declaratory judgment actions,
-counter-claims, and cross-claims) alleging that a Contributor Version
-directly or indirectly infringes any patent, then the rights granted to
-You by any and all Contributors for the Covered Software under Section
-2.1 of this License shall terminate.
-
-5.3. In the event of termination under Sections 5.1 or 5.2 above, all
-end user license agreements (excluding distributors and resellers) which
-have been validly granted by You or Your distributors under this License
-prior to termination shall survive termination.
-
-************************************************************************
-* *
-* 6. Disclaimer of Warranty *
-* ------------------------- *
-* *
-* Covered Software is provided under this License on an "as is" *
-* basis, without warranty of any kind, either expressed, implied, or *
-* statutory, including, without limitation, warranties that the *
-* Covered Software is free of defects, merchantable, fit for a *
-* particular purpose or non-infringing. The entire risk as to the *
-* quality and performance of the Covered Software is with You. *
-* Should any Covered Software prove defective in any respect, You *
-* (not any Contributor) assume the cost of any necessary servicing, *
-* repair, or correction. This disclaimer of warranty constitutes an *
-* essential part of this License. No use of any Covered Software is *
-* authorized under this License except under this disclaimer. *
-* *
-************************************************************************
-
-************************************************************************
-* *
-* 7. Limitation of Liability *
-* -------------------------- *
-* *
-* Under no circumstances and under no legal theory, whether tort *
-* (including negligence), contract, or otherwise, shall any *
-* Contributor, or anyone who distributes Covered Software as *
-* permitted above, be liable to You for any direct, indirect, *
-* special, incidental, or consequential damages of any character *
-* including, without limitation, damages for lost profits, loss of *
-* goodwill, work stoppage, computer failure or malfunction, or any *
-* and all other commercial damages or losses, even if such party *
-* shall have been informed of the possibility of such damages. This *
-* limitation of liability shall not apply to liability for death or *
-* personal injury resulting from such party's negligence to the *
-* extent applicable law prohibits such limitation. Some *
-* jurisdictions do not allow the exclusion or limitation of *
-* incidental or consequential damages, so this exclusion and *
-* limitation may not apply to You. *
-* *
-************************************************************************
-
-8. Litigation
--------------
-
-Any litigation relating to this License may be brought only in the
-courts of a jurisdiction where the defendant maintains its principal
-place of business and such litigation shall be governed by laws of that
-jurisdiction, without reference to its conflict-of-law provisions.
-Nothing in this Section shall prevent a party's ability to bring
-cross-claims or counter-claims.
-
-9. Miscellaneous
-----------------
-
-This License represents the complete agreement concerning the subject
-matter hereof. If any provision of this License is held to be
-unenforceable, such provision shall be reformed only to the extent
-necessary to make it enforceable. Any law or regulation which provides
-that the language of a contract shall be construed against the drafter
-shall not be used to construe this License against a Contributor.
-
-10. Versions of the License
----------------------------
-
-10.1. New Versions
-
-Mozilla Foundation is the license steward. Except as provided in Section
-10.3, no one other than the license steward has the right to modify or
-publish new versions of this License. Each version will be given a
-distinguishing version number.
-
-10.2. Effect of New Versions
-
-You may distribute the Covered Software under the terms of the version
-of the License under which You originally received the Covered Software,
-or under the terms of any subsequent version published by the license
-steward.
-
-10.3. Modified Versions
-
-If you create software not governed by this License, and you want to
-create a new license for such software, you may create and use a
-modified version of this License if you rename the license and remove
-any references to the name of the license steward (except to note that
-such modified license differs from this License).
-
-10.4. Distributing Source Code Form that is Incompatible With Secondary
-Licenses
-
-If You choose to distribute Source Code Form that is Incompatible With
-Secondary Licenses under the terms of this version of the License, the
-notice described in Exhibit B of this License must be attached.
-
-Exhibit A - Source Code Form License Notice
--------------------------------------------
-
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-If it is not possible or desirable to put the notice in a particular
-file, then You may include the notice in a location (such as a LICENSE
-file in a relevant directory) where a recipient would be likely to look
-for such a notice.
-
-You may add additional accurate notices of copyright ownership.
-
-Exhibit B - "Incompatible With Secondary Licenses" Notice
----------------------------------------------------------
-
- This Source Code Form is "Incompatible With Secondary Licenses", as
- defined by the Mozilla Public License, v. 2.0.
diff --git a/im-uniapp/README.md b/im-uniapp/README.md
deleted file mode 100644
index 8a6178a..0000000
--- a/im-uniapp/README.md
+++ /dev/null
@@ -1,70 +0,0 @@
-#### 一、项目简介
-+ 一直以来都有一个社交梦,想做一款IM应用,看了很多优秀的开源项目,但是没有合适自己的。于是利用休息时间自己写了这么一套系统。
-+ 项目第一个版本历时2个月,前端使用`uniapp`,后端使用`SpringBoot`。
-+ 页面设计后期会出`独立UI`。
-+ 手机端使用`uniapp`实现,目前仅支持`安卓端`、`iOS端`和`H5端`,后期会继续适配`小程序端`、`桌面端`(windows、mac)和`web端`。
-+ 您的支持,就是我们`【生发的动力】`,请手动点个`star`吧。
-+ 前端源码地址:[https://gitee.com/lakaola/im-uniapp](https://gitee.com/lakaola/im-uniapp)
-+ 后端源码地址:[https://gitee.com/lakaola/im-platform](https://gitee.com/lakaola/im-platform)
-+ 下载体验地址:[https://im.q3z3.com/](https://im.q3z3.com/)
-+ 加入QQ群:
-[](https://jq.qq.com/?_wv=1027&k=etm5kfCT)(60559794)
-[](https://jq.qq.com/?_wv=1027&k=9VJv8p2I)(671590862)(已满)
-[](https://jq.qq.com/?_wv=1027&k=PQMnFugm)(535099683)(已满)
-
-#### 二、使用须知
-+ 仅允许`技术学习`使用
-+ 不允许`本产品及其衍生品`进行任何形式`商业使用`
-+ 请自觉遵守本开源协议(MPL-2.0),再次开源请注明出处
-+ 推荐Watch、Star项目,获取项目第一时间更新,同时也是对项目最好的支持
-+ 希望大家多多支持本开源作品
-
-#### 三、技术使用
-+ 推送:uniPush + websocket
-+ 资源:阿里OSS(图片、声音、视频、文件等)
-+ 音视频:TRTC
-+ 地图:高德地图
-+ 短信:阿里云短信
-+ 后端:Hutool、MyBatis-Plus、shiro、sharding-jdbc、接口版本控制等
-+ 前端:uniapp(Vue3)
-
-#### 四、演示效果
-
-
-
-
-
-
-
-
-#### 五、项目计划
-+ 适配android端(已完成)
-+ 适配iOS端(已完成)
-+ 适配H5端(已完成)
-+ 适配PC端[Windows]
-+ 适配PC端[Mac]
-+ 适配WEB端[后台管理集成通信]
-+ 增加后台管理端[管理后台]
-+ 更换手机端UI[独立UI]
-+ 增加通知栏消息展示[当app后台挂起,通知栏展示消息]
-+ 各大应用市场上架
-+ 后端优化,支持大并发
-+ ...
-
-#### 六、版本迭代
-+ 1.2.0
- 1、修复群名称、昵称显示问题
- 2、修复性别显示问题
- 3、修复部分手机日期显示问题
- 4、修改消息滚动问题
-+ 1.1.0
- 1、适配H5端
- 2、集成WebSocket通讯
- 3、修改注册后不跳转至登录页问题
- 4、修改长按消息弹出方式
- 5、修改群聊个人头像点击跳转无信息问题
- 6、修改附近的人显示问题
- 7、修改摇一摇显示问题
- 8、修改其他问题
-+ 1.0.0
- 1、首版震撼发布
diff --git a/im-uniapp/common/appUpgrade.js b/im-uniapp/common/appUpgrade.js
deleted file mode 100644
index 1be9b6b..0000000
--- a/im-uniapp/common/appUpgrade.js
+++ /dev/null
@@ -1,213 +0,0 @@
-var _maskView, _contentView, _downloadTask, _loadingProgress, _screenHeight, _screenWidth, _config = {
- forceUpgrade: false,
- titleText: "版本更新",
- content: "",
- contentAlign: "left",
- loadingColor: "#329EEE",
- cancelText: "暂不升级",
- cancelColor: "#666",
- confirmText: "立即升级",
- confirmColor: "#329EEE",
- windowHeight: 380,
- packageUrl: "",
- browser: false,
- maskColor: "rgba(0,0,0,0.3)"
- },
- _calculatePosition = function() {
- return {
- top: (_screenHeight - _config.windowHeight) / 2,
- left: _screenWidth * .05,
- width: _screenWidth * .9,
- right: _screenWidth * .05,
- height: _config.windowHeight
- }
- },
- _createMask = function() {
- _maskView = new plus.nativeObj.View("maskView", {
- top: "0px",
- left: "0px",
- width: "100%",
- height: "100%",
- backgroundColor: _config.maskColor
- })
- },
- _createContentView = function() {
- var calculatePosition = _calculatePosition();
- _contentView = new plus.nativeObj.View("contentView", {
- top: calculatePosition.top + "px",
- left: calculatePosition.left + "px",
- height: _config.windowHeight + "px",
- width: calculatePosition.width + "px",
- overflow: "auto"
- });
- _contentView.drawRect({
- color: "#ffffff",
- radius: "20px"
- }, {
- width: "100%",
- height: "100%"
- }, "roundedRect");
- _contentView.drawText(_config.titleText, {
- top: "20px",
- height: "20px",
- }, {
- size: "16px",
- color: "#333",
- align: "center",
- }, "titleText");
- _contentView.drawText(_config.content, {
- top: "60px",
- left: "20px",
- right: "20px",
- height: _config.windowHeight - 120 + "px",
- }, {
- size: "16px",
- color: "#666",
- align: _config.contentAlign,
- verticalAlign: "top",
- whiteSpace: "normal",
- overflow: "ellipsis"
- }, "UpdaterContent");
- _createLoading(-2);
- var top = _config.windowHeight - 60 + 15;
- var fontSize = '16px';
- if (!_config.forceUpgrade) {
- _contentView.drawRichText("" + _config
- .cancelText + "", {
- width: "50%",
- top: top + "px",
- left: "0px"
- }, {
- align: "center",
- onClick: function() {
- close()
- }
- }, "cancel");
- _contentView.drawRichText("" +
- _config.confirmText + "", {
- width: "50%",
- right: "0px",
- top: top + "px"
- }, {
- align: "center",
- onClick: function() {
- _config.packageUrl ? "android" === plus.os.name.toLowerCase() ? _config.browser ? (plus
- .runtime.openURL(_config.packageUrl)) : _createTask() : plus.runtime.openURL(
- _config.packageUrl) : uni.showToast({
- title: "安装包地址为空",
- icon: "none"
- })
- }
- }, "submit")
- } else {
- _contentView.drawRichText("" +
- _config.confirmText + "", {
- width: "100%",
- right: "0px",
- top: top + "px"
- }, {
- align: "center",
- onClick: function() {
- _config.packageUrl ? "android" === plus.os.name.toLowerCase() ? _config.browser ? (plus
- .runtime.openURL(_config.packageUrl)) : _createTask() : plus.runtime.openURL(
- _config.packageUrl) : uni.showToast({
- title: "安装包地址为空",
- icon: "none"
- })
- }
- }, "submit")
- }
- },
- _createLoading = function(progress) {
- var calculatePosition = _calculatePosition();
- var top = _config.windowHeight - 65;
- var width = 0 <= progress ? (calculatePosition.width - 100) / 100 * progress : 0;
- width = parseInt(width);
- var text = 100 <= progress ? "下载完成" : "下载中...";
- var loadingText = "";
- loadingText = -1 == progress ? "资源加载中..." : 0 <= progress ? text + "(" + progress + "%)" : "";
- _contentView.drawRect({
- color: _config.loadingColor
- }, {
- width: width + "px",
- height: "3px",
- left: "20px",
- top: top + "px"
- }, "loading");
- _contentView.drawRichText("" + loadingText + "", {
- width: "100px",
- top: top + "px",
- left: width + "px"
- }, {
- align: "center"
- }, "loadingText")
- },
- _createTask = function() {
- return _downloadTask ? void console.log("正在下载中") : void(_createLoading(-1),
- _downloadTask =
- uni.downloadFile({
- url: _config.packageUrl,
- success: function(res) {
- if (200 === res.statusCode) {
- var tempFilePath = res.tempFilePath;
- uni.saveFile({
- tempFilePath: tempFilePath,
- success: function(res) {
- plus.runtime.install(res.savedFilePath, {
- force: true
- }, function(res) {
- console.log('安装包信息' + JSON.stringify(res))
- }, function(res) {
- uni.showToast({
- title: '安装失败,请检查下载链接',
- icon: 'none',
- duration: 3000
- });
- });
- close();
- }
- })
- }
- }
- }), _downloadTask.onProgressUpdate(function(res) {
- _loadingProgress != res.progress && (_loadingProgress = res.progress, _createLoading(res
- .progress));
- }))
- },
- init = function(option) {
- _screenHeight = plus.screen.resolutionHeight;
- _screenWidth = plus.screen.resolutionWidth;
- _downloadTask = null;
- option.titleText && (_config.titleText = option.titleText);
- option.windowHeight && (_config.windowHeight = option.windowHeight);
- option.forceUpgrade && (_config.forceUpgrade = option.forceUpgrade);
- option.content && (_config.content = option.content);
- option.contentAlign && (_config.contentAlign = option.contentAlign);
- option.loadingColor && (_config.loadingColor = option.loadingColor);
- option.cancelText && (_config.cancelText = option.cancelText);
- option.cancelColor && (_config.cancelColor = option.cancelColor);
- option.confirmText && (_config.confirmText = option.confirmText);
- option.confirmColor && (_config.confirmColor = option.confirmColor);
- option.packageUrl && (_config.packageUrl = option.packageUrl);
- option.browser && (_config.browser = option.browser);
- option.maskColor && (_config.maskColor = option.maskColor);
- _createMask();
- _createContentView();
- },
- show = function() {
- _maskView && _maskView.show();
- _contentView && _contentView.show();
- },
- close = function() {
- _downloadTask && (_downloadTask.abort(), _downloadTask = null, _createLoading(-2));
- _maskView && _maskView.hide();
- _contentView && _contentView.hide();
- };
-export default {
- init: init,
- show: show,
- close: close
-}
diff --git a/im-uniapp/common/browser.js b/im-uniapp/common/browser.js
deleted file mode 100644
index dd7f970..0000000
--- a/im-uniapp/common/browser.js
+++ /dev/null
@@ -1,210 +0,0 @@
-export default {
- init: function(options) {
- this.initWebview(options)
- this.handleEvent()
- return this
- },
- initWebview: function(options) {
- var hh=plus.screen.height-44
- var _self = this
- _self.webview = plus.webview.create('', 'browser', {
- scalable:true,
- height:hh+'px',
- bottom:'44px',
- background:'#ff5500',
- titleNView: {
- backgroundColor: '#FFFFFF',
- progress: { //进度条
- color: '#4678e7',
- height: '3px'
- },
- splitLine: { //底部分割线
- color: '#cccccc',
- height: '1px'
- },
- buttons: [{ //关闭按钮
- 'float': 'left',
- fontSrc: '/static/uni.ttf',
- text: '\ue460',
- onclick: _self.close.bind(_self)
- }, { //更多按钮
- 'float': 'right',
- fontSrc: '/static/uni.ttf',
- text: '\ue507',
- onclick: _self.more.bind(_self)
- }]
- },
- additionalHttpHeaders: options.headers || {}
- })
- // 配置下拉刷新
- _self.webview.setPullToRefresh({
- support: true
- }, function() {
- _self.reload()
- var titleUpdate = function() {
- setTimeout(function() {
- _self.webview.endPullToRefresh()
- _self.webview.removeEventListener('titleUpdate', titleUpdate)
- }, 300)
- };
- _self.webview.addEventListener('titleUpdate', titleUpdate)
- })
-
- //绘制返回前进按钮
- this.navBottom = new plus.nativeObj.View("navBottom", {
- bottom: '0px',
- left: '0px',
- height: '44px',
- width: '100%',
- backgroundColor: 'rgb(255,255,255)'
- })
- var screenWidth = plus.screen.resolutionWidth
- var left = screenWidth / 4
- this.navBottom.draw([{
- tag: 'font',
- id: 'back',
- text: '\ue471',
- textStyles: {
- fontSrc: '/static/uni.ttf',
- size: '24px',
- color: '#000000'
- },
- position: {
- right: left+48,
- height: '100%',
- }
- },
- {
- tag: 'font',
- id: 'forward',
- text: '\ue470',
- textStyles: {
- fontSrc: '/static/uni.ttf',
- size: '24px',
- color: '#000000'
- },
- position: {
- left: left,
- height: '100%',
- }
- }
- ])
-
- //点击前进或后退
- this.navBottom.addEventListener("click", (e) => {
- if (e.clientX > left && e.clientX < (left + 24)) {
- _self.back()
- }
- if (e.clientX > (screenWidth - left - 12) && e.clientX < (screenWidth - left + 12)) {
- _self.forward()
- }
- })
-
- //监听页面变化
- _self.webview.addEventListener('loaded', function() {
- _self.webview.canBack(function(event) {
- var canBack = false
- if (event.canBack) {
- canBack = true
- _self.navBottom.show()
- } else {
- canBack = false
- }
- _self.webview.canForward(function(event) {
- if (event.canForward) {
- _self.navBottom.drawText('\ue470', {
- left: left,
- height: '100%'
- }, {
- color: '#000000',
- fontSrc: '/static/uni.ttf',
- size: '24px'
- }, 'forward')
- } else {
- _self.navBottom.drawText('\ue470', {
- left: left,
- height: '100%'
- }, {
- color: '#EEEEEE',
- fontSrc: '/static/uni.ttf',
- size: '24px'
- }, 'forward')
- }
- if (!canBack && !event.canForward) {
- // _self.navBottom.hide()
- }
- })
- })
- _self.navBottom.show()
- }, false)
- },
- handleEvent: function(url) {
- var _self = this
- plus.key.addEventListener('backbutton', function() {
- _self.close()
- return
- var topWebview = plus.webview.getTopWebview()
- // 不等于浏览器窗口
- if (topWebview.id !== 'browser') {
- // 这里除了浏览器窗口就是首页了,直接退出了;
- plus.runtime.quit()
- } else {
- _self.back()
- }
- })
- },
- show: function(url) {
- url = url || 'https://www.baidu.com'
- this.webview.loadURL(url)
- this.webview.show('slide-in-right')
- },
- more: function() {
- var _self = this
- uni.showActionSheet({
- itemList: ['刷新', '浏览器打开'],
- success: function(res) {
- if (res.tapIndex == 0) {
- _self.reload()
- } else if (res.tapIndex == 1) {
- plus.runtime.openURL(_self.webview.getURL())
- }
- }
- })
- },
- reload: function() {
- // 刷新
- this.webview.reload(true)
- },
- back: function() {
- //后退
- var _self = this
- _self.webview.canBack(function(event) {
- if (event.canBack) {
- _self.webview.back()
- } else {
- _self.close()
- }
- })
- },
- forward: function() {
- //前进
- var _self = this
- _self.webview.canForward(function(event) {
- if (event.canForward) {
- _self.webview.forward();
- } else {
- plus.nativeUI.toast('没有可前进的地址')
- }
- })
- },
- close: function() {
- //关闭
- // this.navBottom.hide()
- this.navBottom.close()
- this.navBottom=null;
- this.webview.close('browser', 'slide-out-right')
- this.webview.clear()
- plus.key.removeEventListener("backbutton", function() {
- });
- }
-}
diff --git a/im-uniapp/common/city.js b/im-uniapp/common/city.js
deleted file mode 100644
index caff770..0000000
--- a/im-uniapp/common/city.js
+++ /dev/null
@@ -1,30165 +0,0 @@
-const data = [{
- "label": "北京市",
- "position": [
- "116.405285",
- "39.904989"
- ],
- "value": "110000",
- "children": [{
- "label": "北京城区",
- "position": [
- "116.405285",
- "39.904989"
- ],
- "value": "110100",
- "children": [{
- "label": "东城区",
- "position": [
- "116.418757",
- "39.917544"
- ],
- "value": "110101"
- },
- {
- "label": "西城区",
- "position": [
- "116.366794",
- "39.915309"
- ],
- "value": "110102"
- },
- {
- "label": "朝阳区",
- "position": [
- "116.486409",
- "39.921489"
- ],
- "value": "110105"
- },
- {
- "label": "丰台区",
- "position": [
- "116.286968",
- "39.863642"
- ],
- "value": "110106"
- },
- {
- "label": "石景山区",
- "position": [
- "116.195445",
- "39.914601"
- ],
- "value": "110107"
- },
- {
- "label": "海淀区",
- "position": [
- "116.310316",
- "39.956074"
- ],
- "value": "110108"
- },
- {
- "label": "门头沟区",
- "position": [
- "116.105381",
- "39.937183"
- ],
- "value": "110109"
- },
- {
- "label": "房山区",
- "position": [
- "116.139157",
- "39.735535"
- ],
- "value": "110111"
- },
- {
- "label": "通州区",
- "position": [
- "116.658603",
- "39.902486"
- ],
- "value": "110112"
- },
- {
- "label": "顺义区",
- "position": [
- "116.653525",
- "40.128936"
- ],
- "value": "110113"
- },
- {
- "label": "昌平区",
- "position": [
- "116.235906",
- "40.218085"
- ],
- "value": "110114"
- },
- {
- "label": "大兴区",
- "position": [
- "116.338033",
- "39.728908"
- ],
- "value": "110115"
- },
- {
- "label": "怀柔区",
- "position": [
- "116.637122",
- "40.324272"
- ],
- "value": "110116"
- },
- {
- "label": "平谷区",
- "position": [
- "117.112335",
- "40.144783"
- ],
- "value": "110117"
- },
- {
- "label": "密云区",
- "position": [
- "116.843352",
- "40.377362"
- ],
- "value": "110118"
- },
- {
- "label": "延庆区",
- "position": [
- "115.985006",
- "40.465325"
- ],
- "value": "110119"
- }
- ]
- }]
- },
- {
- "label": "天津市",
- "position": [
- "117.190182",
- "39.125596"
- ],
- "value": "120000",
- "children": [{
- "label": "天津城区",
- "position": [
- "117.190182",
- "39.125596"
- ],
- "value": "120100",
- "children": [{
- "label": "和平区",
- "position": [
- "117.195907",
- "39.118327"
- ],
- "value": "120101"
- },
- {
- "label": "河东区",
- "position": [
- "117.226568",
- "39.122125"
- ],
- "value": "120102"
- },
- {
- "label": "河西区",
- "position": [
- "117.217536",
- "39.101897"
- ],
- "value": "120103"
- },
- {
- "label": "南开区",
- "position": [
- "117.164143",
- "39.120474"
- ],
- "value": "120104"
- },
- {
- "label": "河北区",
- "position": [
- "117.201569",
- "39.156632"
- ],
- "value": "120105"
- },
- {
- "label": "红桥区",
- "position": [
- "117.163301",
- "39.175066"
- ],
- "value": "120106"
- },
- {
- "label": "东丽区",
- "position": [
- "117.313967",
- "39.087764"
- ],
- "value": "120110"
- },
- {
- "label": "西青区",
- "position": [
- "117.012247",
- "39.139446"
- ],
- "value": "120111"
- },
- {
- "label": "津南区",
- "position": [
- "117.382549",
- "38.989577"
- ],
- "value": "120112"
- },
- {
- "label": "北辰区",
- "position": [
- "117.13482",
- "39.225555"
- ],
- "value": "120113"
- },
- {
- "label": "武清区",
- "position": [
- "117.057959",
- "39.376925"
- ],
- "value": "120114"
- },
- {
- "label": "宝坻区",
- "position": [
- "117.308094",
- "39.716965"
- ],
- "value": "120115"
- },
- {
- "label": "滨海新区",
- "position": [
- "117.654173",
- "39.032846"
- ],
- "value": "120116"
- },
- {
- "label": "宁河区",
- "position": [
- "117.82828",
- "39.328886"
- ],
- "value": "120117"
- },
- {
- "label": "静海区",
- "position": [
- "116.925304",
- "38.935671"
- ],
- "value": "120118"
- },
- {
- "label": "蓟州区",
- "position": [
- "117.407449",
- "40.045342"
- ],
- "value": "120119"
- }
- ]
- }]
- },
- {
- "label": "河北省",
- "position": [
- "114.502461",
- "38.045474"
- ],
- "value": "130000",
- "children": [{
- "label": "石家庄市",
- "position": [
- "114.502461",
- "38.045474"
- ],
- "value": "130100",
- "children": [{
- "label": "长安区",
- "position": [
- "114.548151",
- "38.047501"
- ],
- "value": "130102"
- },
- {
- "label": "桥西区",
- "position": [
- "114.462931",
- "38.028383"
- ],
- "value": "130104"
- },
- {
- "label": "新华区",
- "position": [
- "114.465974",
- "38.067142"
- ],
- "value": "130105"
- },
- {
- "label": "井陉矿区",
- "position": [
- "114.058178",
- "38.069748"
- ],
- "value": "130107"
- },
- {
- "label": "裕华区",
- "position": [
- "114.533257",
- "38.027696"
- ],
- "value": "130108"
- },
- {
- "label": "藁城区",
- "position": [
- "114.849647",
- "38.033767"
- ],
- "value": "130109"
- },
- {
- "label": "鹿泉区",
- "position": [
- "114.321023",
- "38.093994"
- ],
- "value": "130110"
- },
- {
- "label": "栾城区",
- "position": [
- "114.654281",
- "37.886911"
- ],
- "value": "130111"
- },
- {
- "label": "井陉县",
- "position": [
- "114.144488",
- "38.033614"
- ],
- "value": "130121"
- },
- {
- "label": "正定县",
- "position": [
- "114.569887",
- "38.147835"
- ],
- "value": "130123"
- },
- {
- "label": "行唐县",
- "position": [
- "114.552734",
- "38.437422"
- ],
- "value": "130125"
- },
- {
- "label": "灵寿县",
- "position": [
- "114.37946",
- "38.306546"
- ],
- "value": "130126"
- },
- {
- "label": "高邑县",
- "position": [
- "114.610699",
- "37.605714"
- ],
- "value": "130127"
- },
- {
- "label": "深泽县",
- "position": [
- "115.200207",
- "38.18454"
- ],
- "value": "130128"
- },
- {
- "label": "赞皇县",
- "position": [
- "114.387756",
- "37.660199"
- ],
- "value": "130129"
- },
- {
- "label": "无极县",
- "position": [
- "114.977845",
- "38.176376"
- ],
- "value": "130130"
- },
- {
- "label": "平山县",
- "position": [
- "114.184144",
- "38.259311"
- ],
- "value": "130131"
- },
- {
- "label": "元氏县",
- "position": [
- "114.52618",
- "37.762514"
- ],
- "value": "130132"
- },
- {
- "label": "赵县",
- "position": [
- "114.775362",
- "37.754341"
- ],
- "value": "130133"
- },
- {
- "label": "辛集市",
- "position": [
- "115.217451",
- "37.92904"
- ],
- "value": "130181"
- },
- {
- "label": "晋州市",
- "position": [
- "115.044886",
- "38.027478"
- ],
- "value": "130183"
- },
- {
- "label": "新乐市",
- "position": [
- "114.68578",
- "38.344768"
- ],
- "value": "130184"
- }
- ]
- },
- {
- "label": "唐山市",
- "position": [
- "118.175393",
- "39.635113"
- ],
- "value": "130200",
- "children": [{
- "label": "路南区",
- "position": [
- "118.210821",
- "39.615162"
- ],
- "value": "130202"
- },
- {
- "label": "路北区",
- "position": [
- "118.174736",
- "39.628538"
- ],
- "value": "130203"
- },
- {
- "label": "古冶区",
- "position": [
- "118.45429",
- "39.715736"
- ],
- "value": "130204"
- },
- {
- "label": "开平区",
- "position": [
- "118.264425",
- "39.676171"
- ],
- "value": "130205"
- },
- {
- "label": "丰南区",
- "position": [
- "118.110793",
- "39.56303"
- ],
- "value": "130207"
- },
- {
- "label": "丰润区",
- "position": [
- "118.155779",
- "39.831363"
- ],
- "value": "130208"
- },
- {
- "label": "曹妃甸区",
- "position": [
- "118.446585",
- "39.278277"
- ],
- "value": "130209"
- },
- {
- "label": "滦南县",
- "position": [
- "118.681552",
- "39.506201"
- ],
- "value": "130224"
- },
- {
- "label": "乐亭县",
- "position": [
- "118.905341",
- "39.42813"
- ],
- "value": "130225"
- },
- {
- "label": "迁西县",
- "position": [
- "118.305139",
- "40.146238"
- ],
- "value": "130227"
- },
- {
- "label": "玉田县",
- "position": [
- "117.753665",
- "39.887323"
- ],
- "value": "130229"
- },
- {
- "label": "遵化市",
- "position": [
- "117.965875",
- "40.188616"
- ],
- "value": "130281"
- },
- {
- "label": "迁安市",
- "position": [
- "118.701933",
- "40.012108"
- ],
- "value": "130283"
- },
- {
- "label": "滦州市",
- "position": [
- "118.699546",
- "39.74485"
- ],
- "value": "130284"
- }
- ]
- },
- {
- "label": "秦皇岛市",
- "position": [
- "119.586579",
- "39.942531"
- ],
- "value": "130300",
- "children": [{
- "label": "海港区",
- "position": [
- "119.596224",
- "39.943458"
- ],
- "value": "130302"
- },
- {
- "label": "山海关区",
- "position": [
- "119.753591",
- "39.998023"
- ],
- "value": "130303"
- },
- {
- "label": "北戴河区",
- "position": [
- "119.486286",
- "39.825121"
- ],
- "value": "130304"
- },
- {
- "label": "抚宁区",
- "position": [
- "119.240651",
- "39.887053"
- ],
- "value": "130306"
- },
- {
- "label": "青龙满族自治县",
- "position": [
- "118.954555",
- "40.406023"
- ],
- "value": "130321"
- },
- {
- "label": "昌黎县",
- "position": [
- "119.164541",
- "39.709729"
- ],
- "value": "130322"
- },
- {
- "label": "卢龙县",
- "position": [
- "118.881809",
- "39.891639"
- ],
- "value": "130324"
- }
- ]
- },
- {
- "label": "邯郸市",
- "position": [
- "114.490686",
- "36.612273"
- ],
- "value": "130400",
- "children": [{
- "label": "邯山区",
- "position": [
- "114.484989",
- "36.603196"
- ],
- "value": "130402"
- },
- {
- "label": "丛台区",
- "position": [
- "114.494703",
- "36.611082"
- ],
- "value": "130403"
- },
- {
- "label": "复兴区",
- "position": [
- "114.458242",
- "36.615484"
- ],
- "value": "130404"
- },
- {
- "label": "峰峰矿区",
- "position": [
- "114.209936",
- "36.420487"
- ],
- "value": "130406"
- },
- {
- "label": "肥乡区",
- "position": [
- "114.805154",
- "36.555778"
- ],
- "value": "130407"
- },
- {
- "label": "永年区",
- "position": [
- "114.496162",
- "36.776413"
- ],
- "value": "130408"
- },
- {
- "label": "临漳县",
- "position": [
- "114.610703",
- "36.337604"
- ],
- "value": "130423"
- },
- {
- "label": "成安县",
- "position": [
- "114.680356",
- "36.443832"
- ],
- "value": "130424"
- },
- {
- "label": "大名县",
- "position": [
- "115.152586",
- "36.283316"
- ],
- "value": "130425"
- },
- {
- "label": "涉县",
- "position": [
- "113.673297",
- "36.563143"
- ],
- "value": "130426"
- },
- {
- "label": "磁县",
- "position": [
- "114.38208",
- "36.367673"
- ],
- "value": "130427"
- },
- {
- "label": "邱县",
- "position": [
- "115.168584",
- "36.81325"
- ],
- "value": "130430"
- },
- {
- "label": "鸡泽县",
- "position": [
- "114.878517",
- "36.914908"
- ],
- "value": "130431"
- },
- {
- "label": "广平县",
- "position": [
- "114.950859",
- "36.483603"
- ],
- "value": "130432"
- },
- {
- "label": "馆陶县",
- "position": [
- "115.289057",
- "36.539461"
- ],
- "value": "130433"
- },
- {
- "label": "魏县",
- "position": [
- "114.93411",
- "36.354248"
- ],
- "value": "130434"
- },
- {
- "label": "曲周县",
- "position": [
- "114.957588",
- "36.773398"
- ],
- "value": "130435"
- },
- {
- "label": "武安市",
- "position": [
- "114.194581",
- "36.696115"
- ],
- "value": "130481"
- }
- ]
- },
- {
- "label": "邢台市",
- "position": [
- "114.508851",
- "37.0682"
- ],
- "value": "130500",
- "children": [{
- "label": "襄都区",
- "position": [
- "114.507131",
- "37.064125"
- ],
- "value": "130502"
- },
- {
- "label": "信都区",
- "position": [
- "114.473687",
- "37.068009"
- ],
- "value": "130503"
- },
- {
- "label": "任泽区",
- "position": [
- "114.684469",
- "37.129952"
- ],
- "value": "130505"
- },
- {
- "label": "南和区",
- "position": [
- "114.691377",
- "37.003812"
- ],
- "value": "130506"
- },
- {
- "label": "临城县",
- "position": [
- "114.506873",
- "37.444009"
- ],
- "value": "130522"
- },
- {
- "label": "内丘县",
- "position": [
- "114.511523",
- "37.287663"
- ],
- "value": "130523"
- },
- {
- "label": "柏乡县",
- "position": [
- "114.693382",
- "37.483596"
- ],
- "value": "130524"
- },
- {
- "label": "隆尧县",
- "position": [
- "114.776348",
- "37.350925"
- ],
- "value": "130525"
- },
- {
- "label": "宁晋县",
- "position": [
- "114.921027",
- "37.618956"
- ],
- "value": "130528"
- },
- {
- "label": "巨鹿县",
- "position": [
- "115.038782",
- "37.21768"
- ],
- "value": "130529"
- },
- {
- "label": "新河县",
- "position": [
- "115.247537",
- "37.526216"
- ],
- "value": "130530"
- },
- {
- "label": "广宗县",
- "position": [
- "115.142797",
- "37.075548"
- ],
- "value": "130531"
- },
- {
- "label": "平乡县",
- "position": [
- "115.029218",
- "37.069404"
- ],
- "value": "130532"
- },
- {
- "label": "威县",
- "position": [
- "115.272749",
- "36.983272"
- ],
- "value": "130533"
- },
- {
- "label": "清河县",
- "position": [
- "115.668999",
- "37.059991"
- ],
- "value": "130534"
- },
- {
- "label": "临西县",
- "position": [
- "115.498684",
- "36.8642"
- ],
- "value": "130535"
- },
- {
- "label": "南宫市",
- "position": [
- "115.398102",
- "37.359668"
- ],
- "value": "130581"
- },
- {
- "label": "沙河市",
- "position": [
- "114.504902",
- "36.861903"
- ],
- "value": "130582"
- }
- ]
- },
- {
- "label": "保定市",
- "position": [
- "115.482331",
- "38.867657"
- ],
- "value": "130600",
- "children": [{
- "label": "竞秀区",
- "position": [
- "115.470659",
- "38.88662"
- ],
- "value": "130602"
- },
- {
- "label": "莲池区",
- "position": [
- "115.500934",
- "38.865005"
- ],
- "value": "130606"
- },
- {
- "label": "满城区",
- "position": [
- "115.32442",
- "38.95138"
- ],
- "value": "130607"
- },
- {
- "label": "清苑区",
- "position": [
- "115.492221",
- "38.771012"
- ],
- "value": "130608"
- },
- {
- "label": "徐水区",
- "position": [
- "115.64941",
- "39.020395"
- ],
- "value": "130609"
- },
- {
- "label": "涞水县",
- "position": [
- "115.711985",
- "39.393148"
- ],
- "value": "130623"
- },
- {
- "label": "阜平县",
- "position": [
- "114.198801",
- "38.847276"
- ],
- "value": "130624"
- },
- {
- "label": "定兴县",
- "position": [
- "115.796895",
- "39.266195"
- ],
- "value": "130626"
- },
- {
- "label": "唐县",
- "position": [
- "114.981241",
- "38.748542"
- ],
- "value": "130627"
- },
- {
- "label": "高阳县",
- "position": [
- "115.778878",
- "38.690092"
- ],
- "value": "130628"
- },
- {
- "label": "容城县",
- "position": [
- "115.866247",
- "39.05282"
- ],
- "value": "130629"
- },
- {
- "label": "涞源县",
- "position": [
- "114.692567",
- "39.35755"
- ],
- "value": "130630"
- },
- {
- "label": "望都县",
- "position": [
- "115.154009",
- "38.707448"
- ],
- "value": "130631"
- },
- {
- "label": "安新县",
- "position": [
- "115.931979",
- "38.929912"
- ],
- "value": "130632"
- },
- {
- "label": "易县",
- "position": [
- "115.501146",
- "39.35297"
- ],
- "value": "130633"
- },
- {
- "label": "曲阳县",
- "position": [
- "114.704055",
- "38.619992"
- ],
- "value": "130634"
- },
- {
- "label": "蠡县",
- "position": [
- "115.583631",
- "38.496429"
- ],
- "value": "130635"
- },
- {
- "label": "顺平县",
- "position": [
- "115.132749",
- "38.845127"
- ],
- "value": "130636"
- },
- {
- "label": "博野县",
- "position": [
- "115.461798",
- "38.458271"
- ],
- "value": "130637"
- },
- {
- "label": "雄县",
- "position": [
- "116.107474",
- "38.990819"
- ],
- "value": "130638"
- },
- {
- "label": "涿州市",
- "position": [
- "115.973409",
- "39.485765"
- ],
- "value": "130681"
- },
- {
- "label": "定州市",
- "position": [
- "114.991389",
- "38.517602"
- ],
- "value": "130682"
- },
- {
- "label": "安国市",
- "position": [
- "115.33141",
- "38.421367"
- ],
- "value": "130683"
- },
- {
- "label": "高碑店市",
- "position": [
- "115.882704",
- "39.327689"
- ],
- "value": "130684"
- }
- ]
- },
- {
- "label": "张家口市",
- "position": [
- "114.884091",
- "40.811901"
- ],
- "value": "130700",
- "children": [{
- "label": "桥东区",
- "position": [
- "114.885658",
- "40.813875"
- ],
- "value": "130702"
- },
- {
- "label": "桥西区",
- "position": [
- "114.882127",
- "40.824385"
- ],
- "value": "130703"
- },
- {
- "label": "宣化区",
- "position": [
- "115.0632",
- "40.609368"
- ],
- "value": "130705"
- },
- {
- "label": "下花园区",
- "position": [
- "115.281002",
- "40.488645"
- ],
- "value": "130706"
- },
- {
- "label": "万全区",
- "position": [
- "114.736131",
- "40.765136"
- ],
- "value": "130708"
- },
- {
- "label": "崇礼区",
- "position": [
- "115.281652",
- "40.971302"
- ],
- "value": "130709"
- },
- {
- "label": "张北县",
- "position": [
- "114.715951",
- "41.151713"
- ],
- "value": "130722"
- },
- {
- "label": "康保县",
- "position": [
- "114.615809",
- "41.850046"
- ],
- "value": "130723"
- },
- {
- "label": "沽源县",
- "position": [
- "115.684836",
- "41.667419"
- ],
- "value": "130724"
- },
- {
- "label": "尚义县",
- "position": [
- "113.977713",
- "41.080091"
- ],
- "value": "130725"
- },
- {
- "label": "蔚县",
- "position": [
- "114.582695",
- "39.837181"
- ],
- "value": "130726"
- },
- {
- "label": "阳原县",
- "position": [
- "114.167343",
- "40.113419"
- ],
- "value": "130727"
- },
- {
- "label": "怀安县",
- "position": [
- "114.422364",
- "40.671274"
- ],
- "value": "130728"
- },
- {
- "label": "怀来县",
- "position": [
- "115.520846",
- "40.405405"
- ],
- "value": "130730"
- },
- {
- "label": "涿鹿县",
- "position": [
- "115.219246",
- "40.378701"
- ],
- "value": "130731"
- },
- {
- "label": "赤城县",
- "position": [
- "115.832708",
- "40.912081"
- ],
- "value": "130732"
- }
- ]
- },
- {
- "label": "承德市",
- "position": [
- "117.939152",
- "40.976204"
- ],
- "value": "130800",
- "children": [{
- "label": "双桥区",
- "position": [
- "117.939152",
- "40.976204"
- ],
- "value": "130802"
- },
- {
- "label": "双滦区",
- "position": [
- "117.797485",
- "40.959756"
- ],
- "value": "130803"
- },
- {
- "label": "鹰手营子矿区",
- "position": [
- "117.661154",
- "40.546956"
- ],
- "value": "130804"
- },
- {
- "label": "承德县",
- "position": [
- "118.172496",
- "40.768637"
- ],
- "value": "130821"
- },
- {
- "label": "兴隆县",
- "position": [
- "117.507098",
- "40.418525"
- ],
- "value": "130822"
- },
- {
- "label": "滦平县",
- "position": [
- "117.337124",
- "40.936644"
- ],
- "value": "130824"
- },
- {
- "label": "隆化县",
- "position": [
- "117.736343",
- "41.316667"
- ],
- "value": "130825"
- },
- {
- "label": "丰宁满族自治县",
- "position": [
- "116.65121",
- "41.209903"
- ],
- "value": "130826"
- },
- {
- "label": "宽城满族自治县",
- "position": [
- "118.488642",
- "40.607981"
- ],
- "value": "130827"
- },
- {
- "label": "围场满族蒙古族自治县",
- "position": [
- "117.764086",
- "41.949404"
- ],
- "value": "130828"
- },
- {
- "label": "平泉市",
- "position": [
- "118.690238",
- "41.00561"
- ],
- "value": "130881"
- }
- ]
- },
- {
- "label": "沧州市",
- "position": [
- "116.857461",
- "38.310582"
- ],
- "value": "130900",
- "children": [{
- "label": "新华区",
- "position": [
- "116.873049",
- "38.308273"
- ],
- "value": "130902"
- },
- {
- "label": "运河区",
- "position": [
- "116.840063",
- "38.307405"
- ],
- "value": "130903"
- },
- {
- "label": "沧县",
- "position": [
- "117.007478",
- "38.219856"
- ],
- "value": "130921"
- },
- {
- "label": "青县",
- "position": [
- "116.838384",
- "38.569646"
- ],
- "value": "130922"
- },
- {
- "label": "东光县",
- "position": [
- "116.542062",
- "37.88655"
- ],
- "value": "130923"
- },
- {
- "label": "海兴县",
- "position": [
- "117.496606",
- "38.141582"
- ],
- "value": "130924"
- },
- {
- "label": "盐山县",
- "position": [
- "117.229814",
- "38.056141"
- ],
- "value": "130925"
- },
- {
- "label": "肃宁县",
- "position": [
- "115.835856",
- "38.427102"
- ],
- "value": "130926"
- },
- {
- "label": "南皮县",
- "position": [
- "116.709171",
- "38.042439"
- ],
- "value": "130927"
- },
- {
- "label": "吴桥县",
- "position": [
- "116.391512",
- "37.628182"
- ],
- "value": "130928"
- },
- {
- "label": "献县",
- "position": [
- "116.123844",
- "38.189661"
- ],
- "value": "130929"
- },
- {
- "label": "孟村回族自治县",
- "position": [
- "117.105104",
- "38.057953"
- ],
- "value": "130930"
- },
- {
- "label": "泊头市",
- "position": [
- "116.570163",
- "38.073479"
- ],
- "value": "130981"
- },
- {
- "label": "任丘市",
- "position": [
- "116.106764",
- "38.706513"
- ],
- "value": "130982"
- },
- {
- "label": "黄骅市",
- "position": [
- "117.343803",
- "38.369238"
- ],
- "value": "130983"
- },
- {
- "label": "河间市",
- "position": [
- "116.089452",
- "38.44149"
- ],
- "value": "130984"
- }
- ]
- },
- {
- "label": "廊坊市",
- "position": [
- "116.704441",
- "39.523927"
- ],
- "value": "131000",
- "children": [{
- "label": "安次区",
- "position": [
- "116.694544",
- "39.502569"
- ],
- "value": "131002"
- },
- {
- "label": "广阳区",
- "position": [
- "116.713708",
- "39.521931"
- ],
- "value": "131003"
- },
- {
- "label": "固安县",
- "position": [
- "116.299894",
- "39.436468"
- ],
- "value": "131022"
- },
- {
- "label": "永清县",
- "position": [
- "116.498089",
- "39.319717"
- ],
- "value": "131023"
- },
- {
- "label": "香河县",
- "position": [
- "117.007161",
- "39.757212"
- ],
- "value": "131024"
- },
- {
- "label": "大城县",
- "position": [
- "116.640735",
- "38.699215"
- ],
- "value": "131025"
- },
- {
- "label": "文安县",
- "position": [
- "116.460107",
- "38.866801"
- ],
- "value": "131026"
- },
- {
- "label": "大厂回族自治县",
- "position": [
- "116.986501",
- "39.889266"
- ],
- "value": "131028"
- },
- {
- "label": "霸州市",
- "position": [
- "116.392021",
- "39.117331"
- ],
- "value": "131081"
- },
- {
- "label": "三河市",
- "position": [
- "117.077018",
- "39.982778"
- ],
- "value": "131082"
- }
- ]
- },
- {
- "label": "衡水市",
- "position": [
- "115.665993",
- "37.735097"
- ],
- "value": "131100",
- "children": [{
- "label": "桃城区",
- "position": [
- "115.694945",
- "37.732237"
- ],
- "value": "131102"
- },
- {
- "label": "冀州区",
- "position": [
- "115.579173",
- "37.542788"
- ],
- "value": "131103"
- },
- {
- "label": "枣强县",
- "position": [
- "115.726499",
- "37.511512"
- ],
- "value": "131121"
- },
- {
- "label": "武邑县",
- "position": [
- "115.892415",
- "37.803774"
- ],
- "value": "131122"
- },
- {
- "label": "武强县",
- "position": [
- "115.970236",
- "38.03698"
- ],
- "value": "131123"
- },
- {
- "label": "饶阳县",
- "position": [
- "115.726577",
- "38.232671"
- ],
- "value": "131124"
- },
- {
- "label": "安平县",
- "position": [
- "115.519627",
- "38.233511"
- ],
- "value": "131125"
- },
- {
- "label": "故城县",
- "position": [
- "115.966747",
- "37.350981"
- ],
- "value": "131126"
- },
- {
- "label": "景县",
- "position": [
- "116.258446",
- "37.686622"
- ],
- "value": "131127"
- },
- {
- "label": "阜城县",
- "position": [
- "116.164727",
- "37.869945"
- ],
- "value": "131128"
- },
- {
- "label": "深州市",
- "position": [
- "115.554596",
- "38.00347"
- ],
- "value": "131182"
- }
- ]
- }
- ]
- },
- {
- "label": "山西省",
- "position": [
- "112.549248",
- "37.857014"
- ],
- "value": "140000",
- "children": [{
- "label": "太原市",
- "position": [
- "112.549248",
- "37.857014"
- ],
- "value": "140100",
- "children": [{
- "label": "小店区",
- "position": [
- "112.564273",
- "37.817974"
- ],
- "value": "140105"
- },
- {
- "label": "迎泽区",
- "position": [
- "112.558851",
- "37.855804"
- ],
- "value": "140106"
- },
- {
- "label": "杏花岭区",
- "position": [
- "112.560743",
- "37.879291"
- ],
- "value": "140107"
- },
- {
- "label": "尖草坪区",
- "position": [
- "112.487122",
- "37.939893"
- ],
- "value": "140108"
- },
- {
- "label": "万柏林区",
- "position": [
- "112.522258",
- "37.862653"
- ],
- "value": "140109"
- },
- {
- "label": "晋源区",
- "position": [
- "112.477849",
- "37.715619"
- ],
- "value": "140110"
- },
- {
- "label": "清徐县",
- "position": [
- "112.357961",
- "37.60729"
- ],
- "value": "140121"
- },
- {
- "label": "阳曲县",
- "position": [
- "112.673818",
- "38.058797"
- ],
- "value": "140122"
- },
- {
- "label": "娄烦县",
- "position": [
- "111.793798",
- "38.066035"
- ],
- "value": "140123"
- },
- {
- "label": "古交市",
- "position": [
- "112.174353",
- "37.908534"
- ],
- "value": "140181"
- }
- ]
- },
- {
- "label": "大同市",
- "position": [
- "113.295259",
- "40.09031"
- ],
- "value": "140200",
- "children": [{
- "label": "新荣区",
- "position": [
- "113.141044",
- "40.258269"
- ],
- "value": "140212"
- },
- {
- "label": "平城区",
- "position": [
- "113.298027",
- "40.075667"
- ],
- "value": "140213"
- },
- {
- "label": "云冈区",
- "position": [
- "113.149693",
- "40.005405"
- ],
- "value": "140214"
- },
- {
- "label": "云州区",
- "position": [
- "113.61244",
- "40.040295"
- ],
- "value": "140215"
- },
- {
- "label": "阳高县",
- "position": [
- "113.749871",
- "40.364927"
- ],
- "value": "140221"
- },
- {
- "label": "天镇县",
- "position": [
- "114.09112",
- "40.421336"
- ],
- "value": "140222"
- },
- {
- "label": "广灵县",
- "position": [
- "114.279252",
- "39.763051"
- ],
- "value": "140223"
- },
- {
- "label": "灵丘县",
- "position": [
- "114.23576",
- "39.438867"
- ],
- "value": "140224"
- },
- {
- "label": "浑源县",
- "position": [
- "113.698091",
- "39.699099"
- ],
- "value": "140225"
- },
- {
- "label": "左云县",
- "position": [
- "112.70641",
- "40.012873"
- ],
- "value": "140226"
- }
- ]
- },
- {
- "label": "阳泉市",
- "position": [
- "113.583285",
- "37.861188"
- ],
- "value": "140300",
- "children": [{
- "label": "城区",
- "position": [
- "113.586513",
- "37.860938"
- ],
- "value": "140302"
- },
- {
- "label": "矿区",
- "position": [
- "113.559066",
- "37.870085"
- ],
- "value": "140303"
- },
- {
- "label": "郊区",
- "position": [
- "113.58664",
- "37.94096"
- ],
- "value": "140311"
- },
- {
- "label": "平定县",
- "position": [
- "113.631049",
- "37.800289"
- ],
- "value": "140321"
- },
- {
- "label": "盂县",
- "position": [
- "113.41223",
- "38.086131"
- ],
- "value": "140322"
- }
- ]
- },
- {
- "label": "长治市",
- "position": [
- "113.113556",
- "36.191112"
- ],
- "value": "140400",
- "children": [{
- "label": "潞州区",
- "position": [
- "113.114107",
- "36.187895"
- ],
- "value": "140403"
- },
- {
- "label": "上党区",
- "position": [
- "113.056679",
- "36.052438"
- ],
- "value": "140404"
- },
- {
- "label": "屯留区",
- "position": [
- "112.892741",
- "36.314072"
- ],
- "value": "140405"
- },
- {
- "label": "潞城区",
- "position": [
- "113.223245",
- "36.332232"
- ],
- "value": "140406"
- },
- {
- "label": "襄垣县",
- "position": [
- "113.050094",
- "36.532854"
- ],
- "value": "140423"
- },
- {
- "label": "平顺县",
- "position": [
- "113.438791",
- "36.200202"
- ],
- "value": "140425"
- },
- {
- "label": "黎城县",
- "position": [
- "113.387366",
- "36.502971"
- ],
- "value": "140426"
- },
- {
- "label": "壶关县",
- "position": [
- "113.206138",
- "36.110938"
- ],
- "value": "140427"
- },
- {
- "label": "长子县",
- "position": [
- "112.884656",
- "36.119484"
- ],
- "value": "140428"
- },
- {
- "label": "武乡县",
- "position": [
- "112.8653",
- "36.834315"
- ],
- "value": "140429"
- },
- {
- "label": "沁县",
- "position": [
- "112.70138",
- "36.757123"
- ],
- "value": "140430"
- },
- {
- "label": "沁源县",
- "position": [
- "112.340878",
- "36.500777"
- ],
- "value": "140431"
- }
- ]
- },
- {
- "label": "晋城市",
- "position": [
- "112.851274",
- "35.497553"
- ],
- "value": "140500",
- "children": [{
- "label": "城区",
- "position": [
- "112.853106",
- "35.496641"
- ],
- "value": "140502"
- },
- {
- "label": "沁水县",
- "position": [
- "112.187213",
- "35.689472"
- ],
- "value": "140521"
- },
- {
- "label": "阳城县",
- "position": [
- "112.422014",
- "35.482177"
- ],
- "value": "140522"
- },
- {
- "label": "陵川县",
- "position": [
- "113.278877",
- "35.775614"
- ],
- "value": "140524"
- },
- {
- "label": "泽州县",
- "position": [
- "112.899137",
- "35.617221"
- ],
- "value": "140525"
- },
- {
- "label": "高平市",
- "position": [
- "112.930691",
- "35.791355"
- ],
- "value": "140581"
- }
- ]
- },
- {
- "label": "朔州市",
- "position": [
- "112.433387",
- "39.331261"
- ],
- "value": "140600",
- "children": [{
- "label": "朔城区",
- "position": [
- "112.428676",
- "39.324525"
- ],
- "value": "140602"
- },
- {
- "label": "平鲁区",
- "position": [
- "112.295227",
- "39.515603"
- ],
- "value": "140603"
- },
- {
- "label": "山阴县",
- "position": [
- "112.816396",
- "39.52677"
- ],
- "value": "140621"
- },
- {
- "label": "应县",
- "position": [
- "113.187505",
- "39.559187"
- ],
- "value": "140622"
- },
- {
- "label": "右玉县",
- "position": [
- "112.465588",
- "39.988812"
- ],
- "value": "140623"
- },
- {
- "label": "怀仁市",
- "position": [
- "113.100511",
- "39.820789"
- ],
- "value": "140681"
- }
- ]
- },
- {
- "label": "晋中市",
- "position": [
- "112.736465",
- "37.696495"
- ],
- "value": "140700",
- "children": [{
- "label": "榆次区",
- "position": [
- "112.740056",
- "37.6976"
- ],
- "value": "140702"
- },
- {
- "label": "太谷区",
- "position": [
- "112.554103",
- "37.424595"
- ],
- "value": "140703"
- },
- {
- "label": "榆社县",
- "position": [
- "112.973521",
- "37.069019"
- ],
- "value": "140721"
- },
- {
- "label": "左权县",
- "position": [
- "113.377834",
- "37.079672"
- ],
- "value": "140722"
- },
- {
- "label": "和顺县",
- "position": [
- "113.572919",
- "37.327027"
- ],
- "value": "140723"
- },
- {
- "label": "昔阳县",
- "position": [
- "113.706166",
- "37.60437"
- ],
- "value": "140724"
- },
- {
- "label": "寿阳县",
- "position": [
- "113.177708",
- "37.891136"
- ],
- "value": "140725"
- },
- {
- "label": "祁县",
- "position": [
- "112.330532",
- "37.358739"
- ],
- "value": "140727"
- },
- {
- "label": "平遥县",
- "position": [
- "112.174059",
- "37.195474"
- ],
- "value": "140728"
- },
- {
- "label": "灵石县",
- "position": [
- "111.772759",
- "36.847469"
- ],
- "value": "140729"
- },
- {
- "label": "介休市",
- "position": [
- "111.913857",
- "37.027616"
- ],
- "value": "140781"
- }
- ]
- },
- {
- "label": "运城市",
- "position": [
- "111.003957",
- "35.022778"
- ],
- "value": "140800",
- "children": [{
- "label": "盐湖区",
- "position": [
- "111.000627",
- "35.025643"
- ],
- "value": "140802"
- },
- {
- "label": "临猗县",
- "position": [
- "110.77493",
- "35.141883"
- ],
- "value": "140821"
- },
- {
- "label": "万荣县",
- "position": [
- "110.843561",
- "35.417042"
- ],
- "value": "140822"
- },
- {
- "label": "闻喜县",
- "position": [
- "111.220306",
- "35.353839"
- ],
- "value": "140823"
- },
- {
- "label": "稷山县",
- "position": [
- "110.978996",
- "35.600412"
- ],
- "value": "140824"
- },
- {
- "label": "新绛县",
- "position": [
- "111.225205",
- "35.613697"
- ],
- "value": "140825"
- },
- {
- "label": "绛县",
- "position": [
- "111.576182",
- "35.49045"
- ],
- "value": "140826"
- },
- {
- "label": "垣曲县",
- "position": [
- "111.67099",
- "35.298293"
- ],
- "value": "140827"
- },
- {
- "label": "夏县",
- "position": [
- "111.223174",
- "35.140441"
- ],
- "value": "140828"
- },
- {
- "label": "平陆县",
- "position": [
- "111.212377",
- "34.837256"
- ],
- "value": "140829"
- },
- {
- "label": "芮城县",
- "position": [
- "110.69114",
- "34.694769"
- ],
- "value": "140830"
- },
- {
- "label": "永济市",
- "position": [
- "110.447984",
- "34.865125"
- ],
- "value": "140881"
- },
- {
- "label": "河津市",
- "position": [
- "110.710268",
- "35.59715"
- ],
- "value": "140882"
- }
- ]
- },
- {
- "label": "忻州市",
- "position": [
- "112.733538",
- "38.41769"
- ],
- "value": "140900",
- "children": [{
- "label": "忻府区",
- "position": [
- "112.734112",
- "38.417743"
- ],
- "value": "140902"
- },
- {
- "label": "定襄县",
- "position": [
- "112.963231",
- "38.484948"
- ],
- "value": "140921"
- },
- {
- "label": "五台县",
- "position": [
- "113.259012",
- "38.725711"
- ],
- "value": "140922"
- },
- {
- "label": "代县",
- "position": [
- "112.962519",
- "39.065138"
- ],
- "value": "140923"
- },
- {
- "label": "繁峙县",
- "position": [
- "113.267707",
- "39.188104"
- ],
- "value": "140924"
- },
- {
- "label": "宁武县",
- "position": [
- "112.307936",
- "39.001718"
- ],
- "value": "140925"
- },
- {
- "label": "静乐县",
- "position": [
- "111.940231",
- "38.355947"
- ],
- "value": "140926"
- },
- {
- "label": "神池县",
- "position": [
- "112.200438",
- "39.088467"
- ],
- "value": "140927"
- },
- {
- "label": "五寨县",
- "position": [
- "111.841015",
- "38.912761"
- ],
- "value": "140928"
- },
- {
- "label": "岢岚县",
- "position": [
- "111.56981",
- "38.705625"
- ],
- "value": "140929"
- },
- {
- "label": "河曲县",
- "position": [
- "111.146609",
- "39.381895"
- ],
- "value": "140930"
- },
- {
- "label": "保德县",
- "position": [
- "111.085688",
- "39.022576"
- ],
- "value": "140931"
- },
- {
- "label": "偏关县",
- "position": [
- "111.500477",
- "39.442153"
- ],
- "value": "140932"
- },
- {
- "label": "原平市",
- "position": [
- "112.713132",
- "38.729186"
- ],
- "value": "140981"
- }
- ]
- },
- {
- "label": "临汾市",
- "position": [
- "111.517973",
- "36.08415"
- ],
- "value": "141000",
- "children": [{
- "label": "尧都区",
- "position": [
- "111.522945",
- "36.080366"
- ],
- "value": "141002"
- },
- {
- "label": "曲沃县",
- "position": [
- "111.475529",
- "35.641387"
- ],
- "value": "141021"
- },
- {
- "label": "翼城县",
- "position": [
- "111.713508",
- "35.738621"
- ],
- "value": "141022"
- },
- {
- "label": "襄汾县",
- "position": [
- "111.442932",
- "35.876139"
- ],
- "value": "141023"
- },
- {
- "label": "洪洞县",
- "position": [
- "111.673692",
- "36.255742"
- ],
- "value": "141024"
- },
- {
- "label": "古县",
- "position": [
- "111.920207",
- "36.26855"
- ],
- "value": "141025"
- },
- {
- "label": "安泽县",
- "position": [
- "112.251372",
- "36.146032"
- ],
- "value": "141026"
- },
- {
- "label": "浮山县",
- "position": [
- "111.850039",
- "35.971359"
- ],
- "value": "141027"
- },
- {
- "label": "吉县",
- "position": [
- "110.682853",
- "36.099355"
- ],
- "value": "141028"
- },
- {
- "label": "乡宁县",
- "position": [
- "110.857365",
- "35.975402"
- ],
- "value": "141029"
- },
- {
- "label": "大宁县",
- "position": [
- "110.751283",
- "36.46383"
- ],
- "value": "141030"
- },
- {
- "label": "隰县",
- "position": [
- "110.935809",
- "36.692675"
- ],
- "value": "141031"
- },
- {
- "label": "永和县",
- "position": [
- "110.631276",
- "36.760614"
- ],
- "value": "141032"
- },
- {
- "label": "蒲县",
- "position": [
- "111.09733",
- "36.411682"
- ],
- "value": "141033"
- },
- {
- "label": "汾西县",
- "position": [
- "111.563021",
- "36.653368"
- ],
- "value": "141034"
- },
- {
- "label": "侯马市",
- "position": [
- "111.371272",
- "35.620302"
- ],
- "value": "141081"
- },
- {
- "label": "霍州市",
- "position": [
- "111.723103",
- "36.57202"
- ],
- "value": "141082"
- }
- ]
- },
- {
- "label": "吕梁市",
- "position": [
- "111.134335",
- "37.524366"
- ],
- "value": "141100",
- "children": [{
- "label": "离石区",
- "position": [
- "111.134462",
- "37.524037"
- ],
- "value": "141102"
- },
- {
- "label": "文水县",
- "position": [
- "112.032595",
- "37.436314"
- ],
- "value": "141121"
- },
- {
- "label": "交城县",
- "position": [
- "112.159154",
- "37.555155"
- ],
- "value": "141122"
- },
- {
- "label": "兴县",
- "position": [
- "111.124816",
- "38.464136"
- ],
- "value": "141123"
- },
- {
- "label": "临县",
- "position": [
- "110.995963",
- "37.960806"
- ],
- "value": "141124"
- },
- {
- "label": "柳林县",
- "position": [
- "110.89613",
- "37.431664"
- ],
- "value": "141125"
- },
- {
- "label": "石楼县",
- "position": [
- "110.837119",
- "36.999426"
- ],
- "value": "141126"
- },
- {
- "label": "岚县",
- "position": [
- "111.671555",
- "38.278654"
- ],
- "value": "141127"
- },
- {
- "label": "方山县",
- "position": [
- "111.238885",
- "37.892632"
- ],
- "value": "141128"
- },
- {
- "label": "中阳县",
- "position": [
- "111.193319",
- "37.342054"
- ],
- "value": "141129"
- },
- {
- "label": "交口县",
- "position": [
- "111.183188",
- "36.983068"
- ],
- "value": "141130"
- },
- {
- "label": "孝义市",
- "position": [
- "111.781568",
- "37.144474"
- ],
- "value": "141181"
- },
- {
- "label": "汾阳市",
- "position": [
- "111.785273",
- "37.267742"
- ],
- "value": "141182"
- }
- ]
- }
- ]
- },
- {
- "label": "内蒙古自治区",
- "position": [
- "111.670801",
- "40.818311"
- ],
- "value": "150000",
- "children": [{
- "label": "呼和浩特市",
- "position": [
- "111.670801",
- "40.818311"
- ],
- "value": "150100",
- "children": [{
- "label": "新城区",
- "position": [
- "111.685964",
- "40.826225"
- ],
- "value": "150102"
- },
- {
- "label": "回民区",
- "position": [
- "111.662162",
- "40.815149"
- ],
- "value": "150103"
- },
- {
- "label": "玉泉区",
- "position": [
- "111.66543",
- "40.799421"
- ],
- "value": "150104"
- },
- {
- "label": "赛罕区",
- "position": [
- "111.698463",
- "40.807834"
- ],
- "value": "150105"
- },
- {
- "label": "土默特左旗",
- "position": [
- "111.133615",
- "40.720416"
- ],
- "value": "150121"
- },
- {
- "label": "托克托县",
- "position": [
- "111.197317",
- "40.276729"
- ],
- "value": "150122"
- },
- {
- "label": "和林格尔县",
- "position": [
- "111.824143",
- "40.380288"
- ],
- "value": "150123"
- },
- {
- "label": "清水河县",
- "position": [
- "111.67222",
- "39.912479"
- ],
- "value": "150124"
- },
- {
- "label": "武川县",
- "position": [
- "111.456563",
- "41.094483"
- ],
- "value": "150125"
- }
- ]
- },
- {
- "label": "包头市",
- "position": [
- "109.840405",
- "40.658168"
- ],
- "value": "150200",
- "children": [{
- "label": "东河区",
- "position": [
- "110.026895",
- "40.587056"
- ],
- "value": "150202"
- },
- {
- "label": "昆都仑区",
- "position": [
- "109.822932",
- "40.661345"
- ],
- "value": "150203"
- },
- {
- "label": "青山区",
- "position": [
- "109.880049",
- "40.668558"
- ],
- "value": "150204"
- },
- {
- "label": "石拐区",
- "position": [
- "110.272565",
- "40.672094"
- ],
- "value": "150205"
- },
- {
- "label": "白云鄂博矿区",
- "position": [
- "109.97016",
- "41.769246"
- ],
- "value": "150206"
- },
- {
- "label": "九原区",
- "position": [
- "109.968122",
- "40.600581"
- ],
- "value": "150207"
- },
- {
- "label": "土默特右旗",
- "position": [
- "110.526766",
- "40.566434"
- ],
- "value": "150221"
- },
- {
- "label": "固阳县",
- "position": [
- "110.063421",
- "41.030004"
- ],
- "value": "150222"
- },
- {
- "label": "达尔罕茂明安联合旗",
- "position": [
- "110.438452",
- "41.702836"
- ],
- "value": "150223"
- }
- ]
- },
- {
- "label": "乌海市",
- "position": [
- "106.825563",
- "39.673734"
- ],
- "value": "150300",
- "children": [{
- "label": "海勃湾区",
- "position": [
- "106.817762",
- "39.673527"
- ],
- "value": "150302"
- },
- {
- "label": "海南区",
- "position": [
- "106.884789",
- "39.44153"
- ],
- "value": "150303"
- },
- {
- "label": "乌达区",
- "position": [
- "106.722711",
- "39.502288"
- ],
- "value": "150304"
- }
- ]
- },
- {
- "label": "赤峰市",
- "position": [
- "118.956806",
- "42.275317"
- ],
- "value": "150400",
- "children": [{
- "label": "红山区",
- "position": [
- "118.961087",
- "42.269732"
- ],
- "value": "150402"
- },
- {
- "label": "元宝山区",
- "position": [
- "119.289877",
- "42.041168"
- ],
- "value": "150403"
- },
- {
- "label": "松山区",
- "position": [
- "118.938958",
- "42.281046"
- ],
- "value": "150404"
- },
- {
- "label": "阿鲁科尔沁旗",
- "position": [
- "120.094969",
- "43.87877"
- ],
- "value": "150421"
- },
- {
- "label": "巴林左旗",
- "position": [
- "119.391737",
- "43.980715"
- ],
- "value": "150422"
- },
- {
- "label": "巴林右旗",
- "position": [
- "118.678347",
- "43.528963"
- ],
- "value": "150423"
- },
- {
- "label": "林西县",
- "position": [
- "118.05775",
- "43.605326"
- ],
- "value": "150424"
- },
- {
- "label": "克什克腾旗",
- "position": [
- "117.542465",
- "43.256233"
- ],
- "value": "150425"
- },
- {
- "label": "翁牛特旗",
- "position": [
- "119.022619",
- "42.937128"
- ],
- "value": "150426"
- },
- {
- "label": "喀喇沁旗",
- "position": [
- "118.708572",
- "41.92778"
- ],
- "value": "150428"
- },
- {
- "label": "宁城县",
- "position": [
- "119.339242",
- "41.598692"
- ],
- "value": "150429"
- },
- {
- "label": "敖汉旗",
- "position": [
- "119.906486",
- "42.287012"
- ],
- "value": "150430"
- }
- ]
- },
- {
- "label": "通辽市",
- "position": [
- "122.263119",
- "43.617429"
- ],
- "value": "150500",
- "children": [{
- "label": "科尔沁区",
- "position": [
- "122.264042",
- "43.617422"
- ],
- "value": "150502"
- },
- {
- "label": "科尔沁左翼中旗",
- "position": [
- "123.313873",
- "44.127166"
- ],
- "value": "150521"
- },
- {
- "label": "科尔沁左翼后旗",
- "position": [
- "122.355155",
- "42.954564"
- ],
- "value": "150522"
- },
- {
- "label": "开鲁县",
- "position": [
- "121.308797",
- "43.602432"
- ],
- "value": "150523"
- },
- {
- "label": "库伦旗",
- "position": [
- "121.774886",
- "42.734692"
- ],
- "value": "150524"
- },
- {
- "label": "奈曼旗",
- "position": [
- "120.662543",
- "42.84685"
- ],
- "value": "150525"
- },
- {
- "label": "扎鲁特旗",
- "position": [
- "120.905275",
- "44.555294"
- ],
- "value": "150526"
- },
- {
- "label": "霍林郭勒市",
- "position": [
- "119.657862",
- "45.532361"
- ],
- "value": "150581"
- }
- ]
- },
- {
- "label": "鄂尔多斯市",
- "position": [
- "109.99029",
- "39.817179"
- ],
- "value": "150600",
- "children": [{
- "label": "东胜区",
- "position": [
- "109.98945",
- "39.81788"
- ],
- "value": "150602"
- },
- {
- "label": "康巴什区",
- "position": [
- "109.790076",
- "39.607472"
- ],
- "value": "150603"
- },
- {
- "label": "达拉特旗",
- "position": [
- "110.040281",
- "40.404076"
- ],
- "value": "150621"
- },
- {
- "label": "准格尔旗",
- "position": [
- "111.238332",
- "39.865221"
- ],
- "value": "150622"
- },
- {
- "label": "鄂托克前旗",
- "position": [
- "107.48172",
- "38.183257"
- ],
- "value": "150623"
- },
- {
- "label": "鄂托克旗",
- "position": [
- "107.982604",
- "39.095752"
- ],
- "value": "150624"
- },
- {
- "label": "杭锦旗",
- "position": [
- "108.736324",
- "39.831789"
- ],
- "value": "150625"
- },
- {
- "label": "乌审旗",
- "position": [
- "108.842454",
- "38.596611"
- ],
- "value": "150626"
- },
- {
- "label": "伊金霍洛旗",
- "position": [
- "109.787402",
- "39.604312"
- ],
- "value": "150627"
- }
- ]
- },
- {
- "label": "呼伦贝尔市",
- "position": [
- "119.758168",
- "49.215333"
- ],
- "value": "150700",
- "children": [{
- "label": "海拉尔区",
- "position": [
- "119.764923",
- "49.213889"
- ],
- "value": "150702"
- },
- {
- "label": "扎赉诺尔区",
- "position": [
- "117.716373",
- "49.456567"
- ],
- "value": "150703"
- },
- {
- "label": "阿荣旗",
- "position": [
- "123.464615",
- "48.130503"
- ],
- "value": "150721"
- },
- {
- "label": "莫力达瓦达斡尔族自治旗",
- "position": [
- "124.507401",
- "48.478385"
- ],
- "value": "150722"
- },
- {
- "label": "鄂伦春自治旗",
- "position": [
- "123.725684",
- "50.590177"
- ],
- "value": "150723"
- },
- {
- "label": "鄂温克族自治旗",
- "position": [
- "119.754041",
- "49.143293"
- ],
- "value": "150724"
- },
- {
- "label": "陈巴尔虎旗",
- "position": [
- "119.437609",
- "49.328422"
- ],
- "value": "150725"
- },
- {
- "label": "新巴尔虎左旗",
- "position": [
- "118.267454",
- "48.216571"
- ],
- "value": "150726"
- },
- {
- "label": "新巴尔虎右旗",
- "position": [
- "116.825991",
- "48.669134"
- ],
- "value": "150727"
- },
- {
- "label": "满洲里市",
- "position": [
- "117.455561",
- "49.590788"
- ],
- "value": "150781"
- },
- {
- "label": "牙克石市",
- "position": [
- "120.729005",
- "49.287024"
- ],
- "value": "150782"
- },
- {
- "label": "扎兰屯市",
- "position": [
- "122.744401",
- "48.007412"
- ],
- "value": "150783"
- },
- {
- "label": "额尔古纳市",
- "position": [
- "120.178636",
- "50.2439"
- ],
- "value": "150784"
- },
- {
- "label": "根河市",
- "position": [
- "121.532724",
- "50.780454"
- ],
- "value": "150785"
- }
- ]
- },
- {
- "label": "巴彦淖尔市",
- "position": [
- "107.416959",
- "40.757402"
- ],
- "value": "150800",
- "children": [{
- "label": "临河区",
- "position": [
- "107.417018",
- "40.757092"
- ],
- "value": "150802"
- },
- {
- "label": "五原县",
- "position": [
- "108.270658",
- "41.097639"
- ],
- "value": "150821"
- },
- {
- "label": "磴口县",
- "position": [
- "107.006056",
- "40.330479"
- ],
- "value": "150822"
- },
- {
- "label": "乌拉特前旗",
- "position": [
- "108.656816",
- "40.725209"
- ],
- "value": "150823"
- },
- {
- "label": "乌拉特中旗",
- "position": [
- "108.515255",
- "41.57254"
- ],
- "value": "150824"
- },
- {
- "label": "乌拉特后旗",
- "position": [
- "107.074941",
- "41.084307"
- ],
- "value": "150825"
- },
- {
- "label": "杭锦后旗",
- "position": [
- "107.147682",
- "40.888797"
- ],
- "value": "150826"
- }
- ]
- },
- {
- "label": "乌兰察布市",
- "position": [
- "113.114543",
- "41.034126"
- ],
- "value": "150900",
- "children": [{
- "label": "集宁区",
- "position": [
- "113.116453",
- "41.034134"
- ],
- "value": "150902"
- },
- {
- "label": "卓资县",
- "position": [
- "112.577702",
- "40.89576"
- ],
- "value": "150921"
- },
- {
- "label": "化德县",
- "position": [
- "114.01008",
- "41.899335"
- ],
- "value": "150922"
- },
- {
- "label": "商都县",
- "position": [
- "113.560643",
- "41.560163"
- ],
- "value": "150923"
- },
- {
- "label": "兴和县",
- "position": [
- "113.834009",
- "40.872437"
- ],
- "value": "150924"
- },
- {
- "label": "凉城县",
- "position": [
- "112.500911",
- "40.531627"
- ],
- "value": "150925"
- },
- {
- "label": "察哈尔右翼前旗",
- "position": [
- "113.211958",
- "40.786859"
- ],
- "value": "150926"
- },
- {
- "label": "察哈尔右翼中旗",
- "position": [
- "112.633563",
- "41.274212"
- ],
- "value": "150927"
- },
- {
- "label": "察哈尔右翼后旗",
- "position": [
- "113.1906",
- "41.447213"
- ],
- "value": "150928"
- },
- {
- "label": "四子王旗",
- "position": [
- "111.70123",
- "41.528114"
- ],
- "value": "150929"
- },
- {
- "label": "丰镇市",
- "position": [
- "113.163462",
- "40.437534"
- ],
- "value": "150981"
- }
- ]
- },
- {
- "label": "兴安盟",
- "position": [
- "122.070317",
- "46.076268"
- ],
- "value": "152200",
- "children": [{
- "label": "乌兰浩特市",
- "position": [
- "122.068975",
- "46.077238"
- ],
- "value": "152201"
- },
- {
- "label": "阿尔山市",
- "position": [
- "119.943656",
- "47.177"
- ],
- "value": "152202"
- },
- {
- "label": "科尔沁右翼前旗",
- "position": [
- "121.957544",
- "46.076497"
- ],
- "value": "152221"
- },
- {
- "label": "科尔沁右翼中旗",
- "position": [
- "121.472818",
- "45.059645"
- ],
- "value": "152222"
- },
- {
- "label": "扎赉特旗",
- "position": [
- "122.909332",
- "46.725136"
- ],
- "value": "152223"
- },
- {
- "label": "突泉县",
- "position": [
- "121.564856",
- "45.380986"
- ],
- "value": "152224"
- }
- ]
- },
- {
- "label": "锡林郭勒盟",
- "position": [
- "116.090996",
- "43.944018"
- ],
- "value": "152500",
- "children": [{
- "label": "二连浩特市",
- "position": [
- "111.97981",
- "43.652895"
- ],
- "value": "152501"
- },
- {
- "label": "锡林浩特市",
- "position": [
- "116.091903",
- "43.944301"
- ],
- "value": "152502"
- },
- {
- "label": "阿巴嘎旗",
- "position": [
- "114.970618",
- "44.022728"
- ],
- "value": "152522"
- },
- {
- "label": "苏尼特左旗",
- "position": [
- "113.653412",
- "43.854108"
- ],
- "value": "152523"
- },
- {
- "label": "苏尼特右旗",
- "position": [
- "112.65539",
- "42.746662"
- ],
- "value": "152524"
- },
- {
- "label": "东乌珠穆沁旗",
- "position": [
- "116.980022",
- "45.510307"
- ],
- "value": "152525"
- },
- {
- "label": "西乌珠穆沁旗",
- "position": [
- "117.615249",
- "44.586147"
- ],
- "value": "152526"
- },
- {
- "label": "太仆寺旗",
- "position": [
- "115.28728",
- "41.895199"
- ],
- "value": "152527"
- },
- {
- "label": "镶黄旗",
- "position": [
- "113.843869",
- "42.239229"
- ],
- "value": "152528"
- },
- {
- "label": "正镶白旗",
- "position": [
- "115.031423",
- "42.286807"
- ],
- "value": "152529"
- },
- {
- "label": "正蓝旗",
- "position": [
- "116.003311",
- "42.245895"
- ],
- "value": "152530"
- },
- {
- "label": "多伦县",
- "position": [
- "116.477288",
- "42.197962"
- ],
- "value": "152531"
- }
- ]
- },
- {
- "label": "阿拉善盟",
- "position": [
- "105.706422",
- "38.844814"
- ],
- "value": "152900",
- "children": [{
- "label": "阿拉善左旗",
- "position": [
- "105.70192",
- "38.847241"
- ],
- "value": "152921"
- },
- {
- "label": "阿拉善右旗",
- "position": [
- "101.671984",
- "39.21159"
- ],
- "value": "152922"
- },
- {
- "label": "额济纳旗",
- "position": [
- "101.06944",
- "41.958813"
- ],
- "value": "152923"
- }
- ]
- }
- ]
- },
- {
- "label": "辽宁省",
- "position": [
- "123.429096",
- "41.796767"
- ],
- "value": "210000",
- "children": [{
- "label": "沈阳市",
- "position": [
- "123.429096",
- "41.796767"
- ],
- "value": "210100",
- "children": [{
- "label": "和平区",
- "position": [
- "123.406664",
- "41.788074"
- ],
- "value": "210102"
- },
- {
- "label": "沈河区",
- "position": [
- "123.445696",
- "41.795591"
- ],
- "value": "210103"
- },
- {
- "label": "大东区",
- "position": [
- "123.469956",
- "41.808503"
- ],
- "value": "210104"
- },
- {
- "label": "皇姑区",
- "position": [
- "123.405677",
- "41.822336"
- ],
- "value": "210105"
- },
- {
- "label": "铁西区",
- "position": [
- "123.350664",
- "41.787808"
- ],
- "value": "210106"
- },
- {
- "label": "苏家屯区",
- "position": [
- "123.341604",
- "41.665904"
- ],
- "value": "210111"
- },
- {
- "label": "浑南区",
- "position": [
- "123.458981",
- "41.741946"
- ],
- "value": "210112"
- },
- {
- "label": "沈北新区",
- "position": [
- "123.521471",
- "42.052312"
- ],
- "value": "210113"
- },
- {
- "label": "于洪区",
- "position": [
- "123.310829",
- "41.795833"
- ],
- "value": "210114"
- },
- {
- "label": "辽中区",
- "position": [
- "122.731269",
- "41.512725"
- ],
- "value": "210115"
- },
- {
- "label": "康平县",
- "position": [
- "123.352703",
- "42.741533"
- ],
- "value": "210123"
- },
- {
- "label": "法库县",
- "position": [
- "123.416722",
- "42.507045"
- ],
- "value": "210124"
- },
- {
- "label": "新民市",
- "position": [
- "122.828868",
- "41.996508"
- ],
- "value": "210181"
- }
- ]
- },
- {
- "label": "大连市",
- "position": [
- "121.618622",
- "38.91459"
- ],
- "value": "210200",
- "children": [{
- "label": "中山区",
- "position": [
- "121.64376",
- "38.921553"
- ],
- "value": "210202"
- },
- {
- "label": "西岗区",
- "position": [
- "121.616112",
- "38.914266"
- ],
- "value": "210203"
- },
- {
- "label": "沙河口区",
- "position": [
- "121.593702",
- "38.912859"
- ],
- "value": "210204"
- },
- {
- "label": "甘井子区",
- "position": [
- "121.582614",
- "38.975148"
- ],
- "value": "210211"
- },
- {
- "label": "旅顺口区",
- "position": [
- "121.26713",
- "38.812043"
- ],
- "value": "210212"
- },
- {
- "label": "金州区",
- "position": [
- "121.789413",
- "39.052745"
- ],
- "value": "210213"
- },
- {
- "label": "普兰店区",
- "position": [
- "121.9705",
- "39.401555"
- ],
- "value": "210214"
- },
- {
- "label": "长海县",
- "position": [
- "122.587824",
- "39.272399"
- ],
- "value": "210224"
- },
- {
- "label": "瓦房店市",
- "position": [
- "122.002656",
- "39.63065"
- ],
- "value": "210281"
- },
- {
- "label": "庄河市",
- "position": [
- "122.970612",
- "39.69829"
- ],
- "value": "210283"
- }
- ]
- },
- {
- "label": "鞍山市",
- "position": [
- "122.995632",
- "41.110626"
- ],
- "value": "210300",
- "children": [{
- "label": "铁东区",
- "position": [
- "122.994475",
- "41.110344"
- ],
- "value": "210302"
- },
- {
- "label": "铁西区",
- "position": [
- "122.971834",
- "41.11069"
- ],
- "value": "210303"
- },
- {
- "label": "立山区",
- "position": [
- "123.024806",
- "41.150622"
- ],
- "value": "210304"
- },
- {
- "label": "千山区",
- "position": [
- "122.949298",
- "41.068909"
- ],
- "value": "210311"
- },
- {
- "label": "台安县",
- "position": [
- "122.429736",
- "41.38686"
- ],
- "value": "210321"
- },
- {
- "label": "岫岩满族自治县",
- "position": [
- "123.28833",
- "40.281509"
- ],
- "value": "210323"
- },
- {
- "label": "海城市",
- "position": [
- "122.752199",
- "40.852533"
- ],
- "value": "210381"
- }
- ]
- },
- {
- "label": "抚顺市",
- "position": [
- "123.921109",
- "41.875956"
- ],
- "value": "210400",
- "children": [{
- "label": "新抚区",
- "position": [
- "123.902858",
- "41.86082"
- ],
- "value": "210402"
- },
- {
- "label": "东洲区",
- "position": [
- "124.047219",
- "41.866829"
- ],
- "value": "210403"
- },
- {
- "label": "望花区",
- "position": [
- "123.801509",
- "41.851803"
- ],
- "value": "210404"
- },
- {
- "label": "顺城区",
- "position": [
- "123.917165",
- "41.881132"
- ],
- "value": "210411"
- },
- {
- "label": "抚顺县",
- "position": [
- "124.097979",
- "41.922644"
- ],
- "value": "210421"
- },
- {
- "label": "新宾满族自治县",
- "position": [
- "125.037547",
- "41.732456"
- ],
- "value": "210422"
- },
- {
- "label": "清原满族自治县",
- "position": [
- "124.927192",
- "42.10135"
- ],
- "value": "210423"
- }
- ]
- },
- {
- "label": "本溪市",
- "position": [
- "123.770519",
- "41.297909"
- ],
- "value": "210500",
- "children": [{
- "label": "平山区",
- "position": [
- "123.761231",
- "41.291581"
- ],
- "value": "210502"
- },
- {
- "label": "溪湖区",
- "position": [
- "123.765226",
- "41.330056"
- ],
- "value": "210503"
- },
- {
- "label": "明山区",
- "position": [
- "123.763288",
- "41.302429"
- ],
- "value": "210504"
- },
- {
- "label": "南芬区",
- "position": [
- "123.748381",
- "41.104093"
- ],
- "value": "210505"
- },
- {
- "label": "本溪满族自治县",
- "position": [
- "124.126156",
- "41.300344"
- ],
- "value": "210521"
- },
- {
- "label": "桓仁满族自治县",
- "position": [
- "125.359195",
- "41.268997"
- ],
- "value": "210522"
- }
- ]
- },
- {
- "label": "丹东市",
- "position": [
- "124.383044",
- "40.124296"
- ],
- "value": "210600",
- "children": [{
- "label": "元宝区",
- "position": [
- "124.397814",
- "40.136483"
- ],
- "value": "210602"
- },
- {
- "label": "振兴区",
- "position": [
- "124.361153",
- "40.102801"
- ],
- "value": "210603"
- },
- {
- "label": "振安区",
- "position": [
- "124.427709",
- "40.158557"
- ],
- "value": "210604"
- },
- {
- "label": "宽甸满族自治县",
- "position": [
- "124.784867",
- "40.730412"
- ],
- "value": "210624"
- },
- {
- "label": "东港市",
- "position": [
- "124.149437",
- "39.883467"
- ],
- "value": "210681"
- },
- {
- "label": "凤城市",
- "position": [
- "124.071067",
- "40.457567"
- ],
- "value": "210682"
- }
- ]
- },
- {
- "label": "锦州市",
- "position": [
- "121.135742",
- "41.119269"
- ],
- "value": "210700",
- "children": [{
- "label": "古塔区",
- "position": [
- "121.130085",
- "41.115719"
- ],
- "value": "210702"
- },
- {
- "label": "凌河区",
- "position": [
- "121.151304",
- "41.114662"
- ],
- "value": "210703"
- },
- {
- "label": "太和区",
- "position": [
- "121.107297",
- "41.105378"
- ],
- "value": "210711"
- },
- {
- "label": "黑山县",
- "position": [
- "122.117915",
- "41.691804"
- ],
- "value": "210726"
- },
- {
- "label": "义县",
- "position": [
- "121.242831",
- "41.537224"
- ],
- "value": "210727"
- },
- {
- "label": "凌海市",
- "position": [
- "121.364236",
- "41.171738"
- ],
- "value": "210781"
- },
- {
- "label": "北镇市",
- "position": [
- "121.795962",
- "41.598764"
- ],
- "value": "210782"
- }
- ]
- },
- {
- "label": "营口市",
- "position": [
- "122.235151",
- "40.667432"
- ],
- "value": "210800",
- "children": [{
- "label": "站前区",
- "position": [
- "122.253235",
- "40.669949"
- ],
- "value": "210802"
- },
- {
- "label": "西市区",
- "position": [
- "122.210067",
- "40.663086"
- ],
- "value": "210803"
- },
- {
- "label": "鲅鱼圈区",
- "position": [
- "122.127242",
- "40.263646"
- ],
- "value": "210804"
- },
- {
- "label": "老边区",
- "position": [
- "122.382584",
- "40.682723"
- ],
- "value": "210811"
- },
- {
- "label": "盖州市",
- "position": [
- "122.355534",
- "40.405234"
- ],
- "value": "210881"
- },
- {
- "label": "大石桥市",
- "position": [
- "122.505894",
- "40.633973"
- ],
- "value": "210882"
- }
- ]
- },
- {
- "label": "阜新市",
- "position": [
- "121.648962",
- "42.011796"
- ],
- "value": "210900",
- "children": [{
- "label": "海州区",
- "position": [
- "121.657639",
- "42.011162"
- ],
- "value": "210902"
- },
- {
- "label": "新邱区",
- "position": [
- "121.790541",
- "42.086603"
- ],
- "value": "210903"
- },
- {
- "label": "太平区",
- "position": [
- "121.677575",
- "42.011145"
- ],
- "value": "210904"
- },
- {
- "label": "清河门区",
- "position": [
- "121.42018",
- "41.780477"
- ],
- "value": "210905"
- },
- {
- "label": "细河区",
- "position": [
- "121.654791",
- "42.019218"
- ],
- "value": "210911"
- },
- {
- "label": "阜新蒙古族自治县",
- "position": [
- "121.743125",
- "42.058607"
- ],
- "value": "210921"
- },
- {
- "label": "彰武县",
- "position": [
- "122.537444",
- "42.384823"
- ],
- "value": "210922"
- }
- ]
- },
- {
- "label": "辽阳市",
- "position": [
- "123.18152",
- "41.269402"
- ],
- "value": "211000",
- "children": [{
- "label": "白塔区",
- "position": [
- "123.172611",
- "41.26745"
- ],
- "value": "211002"
- },
- {
- "label": "文圣区",
- "position": [
- "123.188227",
- "41.266765"
- ],
- "value": "211003"
- },
- {
- "label": "宏伟区",
- "position": [
- "123.200461",
- "41.205747"
- ],
- "value": "211004"
- },
- {
- "label": "弓长岭区",
- "position": [
- "123.431633",
- "41.157831"
- ],
- "value": "211005"
- },
- {
- "label": "太子河区",
- "position": [
- "123.185336",
- "41.251682"
- ],
- "value": "211011"
- },
- {
- "label": "辽阳县",
- "position": [
- "123.079674",
- "41.216479"
- ],
- "value": "211021"
- },
- {
- "label": "灯塔市",
- "position": [
- "123.325864",
- "41.427836"
- ],
- "value": "211081"
- }
- ]
- },
- {
- "label": "盘锦市",
- "position": [
- "122.06957",
- "41.124484"
- ],
- "value": "211100",
- "children": [{
- "label": "双台子区",
- "position": [
- "122.055733",
- "41.190365"
- ],
- "value": "211102"
- },
- {
- "label": "兴隆台区",
- "position": [
- "122.071624",
- "41.122423"
- ],
- "value": "211103"
- },
- {
- "label": "大洼区",
- "position": [
- "122.071708",
- "40.994428"
- ],
- "value": "211104"
- },
- {
- "label": "盘山县",
- "position": [
- "121.98528",
- "41.240701"
- ],
- "value": "211122"
- }
- ]
- },
- {
- "label": "铁岭市",
- "position": [
- "123.844279",
- "42.290585"
- ],
- "value": "211200",
- "children": [{
- "label": "银州区",
- "position": [
- "123.844877",
- "42.292278"
- ],
- "value": "211202"
- },
- {
- "label": "清河区",
- "position": [
- "124.14896",
- "42.542978"
- ],
- "value": "211204"
- },
- {
- "label": "铁岭县",
- "position": [
- "123.725669",
- "42.223316"
- ],
- "value": "211221"
- },
- {
- "label": "西丰县",
- "position": [
- "124.72332",
- "42.738091"
- ],
- "value": "211223"
- },
- {
- "label": "昌图县",
- "position": [
- "124.11017",
- "42.784441"
- ],
- "value": "211224"
- },
- {
- "label": "调兵山市",
- "position": [
- "123.545366",
- "42.450734"
- ],
- "value": "211281"
- },
- {
- "label": "开原市",
- "position": [
- "124.045551",
- "42.542141"
- ],
- "value": "211282"
- }
- ]
- },
- {
- "label": "朝阳市",
- "position": [
- "120.451176",
- "41.576758"
- ],
- "value": "211300",
- "children": [{
- "label": "双塔区",
- "position": [
- "120.44877",
- "41.579389"
- ],
- "value": "211302"
- },
- {
- "label": "龙城区",
- "position": [
- "120.413376",
- "41.576749"
- ],
- "value": "211303"
- },
- {
- "label": "朝阳县",
- "position": [
- "120.404217",
- "41.526342"
- ],
- "value": "211321"
- },
- {
- "label": "建平县",
- "position": [
- "119.642363",
- "41.402576"
- ],
- "value": "211322"
- },
- {
- "label": "喀喇沁左翼蒙古族自治县",
- "position": [
- "119.744883",
- "41.125428"
- ],
- "value": "211324"
- },
- {
- "label": "北票市",
- "position": [
- "120.766951",
- "41.803286"
- ],
- "value": "211381"
- },
- {
- "label": "凌源市",
- "position": [
- "119.404789",
- "41.243086"
- ],
- "value": "211382"
- }
- ]
- },
- {
- "label": "葫芦岛市",
- "position": [
- "120.856394",
- "40.755572"
- ],
- "value": "211400",
- "children": [{
- "label": "连山区",
- "position": [
- "120.85937",
- "40.755143"
- ],
- "value": "211402"
- },
- {
- "label": "龙港区",
- "position": [
- "120.838569",
- "40.709991"
- ],
- "value": "211403"
- },
- {
- "label": "南票区",
- "position": [
- "120.752314",
- "41.098813"
- ],
- "value": "211404"
- },
- {
- "label": "绥中县",
- "position": [
- "120.342112",
- "40.328407"
- ],
- "value": "211421"
- },
- {
- "label": "建昌县",
- "position": [
- "119.807776",
- "40.812871"
- ],
- "value": "211422"
- },
- {
- "label": "兴城市",
- "position": [
- "120.729365",
- "40.619413"
- ],
- "value": "211481"
- }
- ]
- }
- ]
- },
- {
- "label": "吉林省",
- "position": [
- "125.3245",
- "43.886841"
- ],
- "value": "220000",
- "children": [{
- "label": "长春市",
- "position": [
- "125.3245",
- "43.886841"
- ],
- "value": "220100",
- "children": [{
- "label": "南关区",
- "position": [
- "125.337237",
- "43.890235"
- ],
- "value": "220102"
- },
- {
- "label": "宽城区",
- "position": [
- "125.342828",
- "43.903823"
- ],
- "value": "220103"
- },
- {
- "label": "朝阳区",
- "position": [
- "125.318042",
- "43.86491"
- ],
- "value": "220104"
- },
- {
- "label": "二道区",
- "position": [
- "125.384727",
- "43.870824"
- ],
- "value": "220105"
- },
- {
- "label": "绿园区",
- "position": [
- "125.272467",
- "43.892177"
- ],
- "value": "220106"
- },
- {
- "label": "双阳区",
- "position": [
- "125.659018",
- "43.525168"
- ],
- "value": "220112"
- },
- {
- "label": "九台区",
- "position": [
- "125.844682",
- "44.157155"
- ],
- "value": "220113"
- },
- {
- "label": "农安县",
- "position": [
- "125.175287",
- "44.431258"
- ],
- "value": "220122"
- },
- {
- "label": "榆树市",
- "position": [
- "126.550107",
- "44.827642"
- ],
- "value": "220182"
- },
- {
- "label": "德惠市",
- "position": [
- "125.703327",
- "44.533909"
- ],
- "value": "220183"
- },
- {
- "label": "公主岭市",
- "position": [
- "124.817588",
- "43.509474"
- ],
- "value": "220184"
- }
- ]
- },
- {
- "label": "吉林市",
- "position": [
- "126.55302",
- "43.843577"
- ],
- "value": "220200",
- "children": [{
- "label": "昌邑区",
- "position": [
- "126.570766",
- "43.851118"
- ],
- "value": "220202"
- },
- {
- "label": "龙潭区",
- "position": [
- "126.561429",
- "43.909755"
- ],
- "value": "220203"
- },
- {
- "label": "船营区",
- "position": [
- "126.55239",
- "43.843804"
- ],
- "value": "220204"
- },
- {
- "label": "丰满区",
- "position": [
- "126.560759",
- "43.816594"
- ],
- "value": "220211"
- },
- {
- "label": "永吉县",
- "position": [
- "126.501622",
- "43.667416"
- ],
- "value": "220221"
- },
- {
- "label": "蛟河市",
- "position": [
- "127.342739",
- "43.720579"
- ],
- "value": "220281"
- },
- {
- "label": "桦甸市",
- "position": [
- "126.745445",
- "42.972093"
- ],
- "value": "220282"
- },
- {
- "label": "舒兰市",
- "position": [
- "126.947813",
- "44.410906"
- ],
- "value": "220283"
- },
- {
- "label": "磐石市",
- "position": [
- "126.059929",
- "42.942476"
- ],
- "value": "220284"
- }
- ]
- },
- {
- "label": "四平市",
- "position": [
- "124.370785",
- "43.170344"
- ],
- "value": "220300",
- "children": [{
- "label": "铁西区",
- "position": [
- "124.360894",
- "43.176263"
- ],
- "value": "220302"
- },
- {
- "label": "铁东区",
- "position": [
- "124.388464",
- "43.16726"
- ],
- "value": "220303"
- },
- {
- "label": "梨树县",
- "position": [
- "124.335802",
- "43.30831"
- ],
- "value": "220322"
- },
- {
- "label": "伊通满族自治县",
- "position": [
- "125.303124",
- "43.345464"
- ],
- "value": "220323"
- },
- {
- "label": "双辽市",
- "position": [
- "123.505283",
- "43.518275"
- ],
- "value": "220382"
- }
- ]
- },
- {
- "label": "辽源市",
- "position": [
- "125.145349",
- "42.902692"
- ],
- "value": "220400",
- "children": [{
- "label": "龙山区",
- "position": [
- "125.145164",
- "42.902702"
- ],
- "value": "220402"
- },
- {
- "label": "西安区",
- "position": [
- "125.151424",
- "42.920415"
- ],
- "value": "220403"
- },
- {
- "label": "东丰县",
- "position": [
- "125.529623",
- "42.675228"
- ],
- "value": "220421"
- },
- {
- "label": "东辽县",
- "position": [
- "124.991995",
- "42.927724"
- ],
- "value": "220422"
- }
- ]
- },
- {
- "label": "通化市",
- "position": [
- "125.936501",
- "41.721177"
- ],
- "value": "220500",
- "children": [{
- "label": "东昌区",
- "position": [
- "125.936716",
- "41.721233"
- ],
- "value": "220502"
- },
- {
- "label": "二道江区",
- "position": [
- "126.045987",
- "41.777564"
- ],
- "value": "220503"
- },
- {
- "label": "通化县",
- "position": [
- "125.753121",
- "41.677918"
- ],
- "value": "220521"
- },
- {
- "label": "辉南县",
- "position": [
- "126.042821",
- "42.683459"
- ],
- "value": "220523"
- },
- {
- "label": "柳河县",
- "position": [
- "125.740536",
- "42.281484"
- ],
- "value": "220524"
- },
- {
- "label": "梅河口市",
- "position": [
- "125.687336",
- "42.530002"
- ],
- "value": "220581"
- },
- {
- "label": "集安市",
- "position": [
- "126.186204",
- "41.126276"
- ],
- "value": "220582"
- }
- ]
- },
- {
- "label": "白山市",
- "position": [
- "126.427839",
- "41.942505"
- ],
- "value": "220600",
- "children": [{
- "label": "浑江区",
- "position": [
- "126.428035",
- "41.943065"
- ],
- "value": "220602"
- },
- {
- "label": "江源区",
- "position": [
- "126.584229",
- "42.048109"
- ],
- "value": "220605"
- },
- {
- "label": "抚松县",
- "position": [
- "127.273796",
- "42.332643"
- ],
- "value": "220621"
- },
- {
- "label": "靖宇县",
- "position": [
- "126.808386",
- "42.389689"
- ],
- "value": "220622"
- },
- {
- "label": "长白朝鲜族自治县",
- "position": [
- "128.203384",
- "41.419361"
- ],
- "value": "220623"
- },
- {
- "label": "临江市",
- "position": [
- "126.919296",
- "41.810689"
- ],
- "value": "220681"
- }
- ]
- },
- {
- "label": "松原市",
- "position": [
- "124.823608",
- "45.118243"
- ],
- "value": "220700",
- "children": [{
- "label": "宁江区",
- "position": [
- "124.827851",
- "45.176498"
- ],
- "value": "220702"
- },
- {
- "label": "前郭尔罗斯蒙古族自治县",
- "position": [
- "124.826808",
- "45.116288"
- ],
- "value": "220721"
- },
- {
- "label": "长岭县",
- "position": [
- "123.985184",
- "44.276579"
- ],
- "value": "220722"
- },
- {
- "label": "乾安县",
- "position": [
- "124.024361",
- "45.006846"
- ],
- "value": "220723"
- },
- {
- "label": "扶余市",
- "position": [
- "126.042758",
- "44.986199"
- ],
- "value": "220781"
- }
- ]
- },
- {
- "label": "白城市",
- "position": [
- "122.841114",
- "45.619026"
- ],
- "value": "220800",
- "children": [{
- "label": "洮北区",
- "position": [
- "122.842499",
- "45.619253"
- ],
- "value": "220802"
- },
- {
- "label": "镇赉县",
- "position": [
- "123.202246",
- "45.846089"
- ],
- "value": "220821"
- },
- {
- "label": "通榆县",
- "position": [
- "123.088543",
- "44.80915"
- ],
- "value": "220822"
- },
- {
- "label": "洮南市",
- "position": [
- "122.783779",
- "45.339113"
- ],
- "value": "220881"
- },
- {
- "label": "大安市",
- "position": [
- "124.291512",
- "45.507648"
- ],
- "value": "220882"
- }
- ]
- },
- {
- "label": "延边朝鲜族自治州",
- "position": [
- "129.513228",
- "42.904823"
- ],
- "value": "222400",
- "children": [{
- "label": "延吉市",
- "position": [
- "129.51579",
- "42.906964"
- ],
- "value": "222401"
- },
- {
- "label": "图们市",
- "position": [
- "129.846701",
- "42.966621"
- ],
- "value": "222402"
- },
- {
- "label": "敦化市",
- "position": [
- "128.22986",
- "43.366921"
- ],
- "value": "222403"
- },
- {
- "label": "珲春市",
- "position": [
- "130.365787",
- "42.871057"
- ],
- "value": "222404"
- },
- {
- "label": "龙井市",
- "position": [
- "129.425747",
- "42.771029"
- ],
- "value": "222405"
- },
- {
- "label": "和龙市",
- "position": [
- "129.008748",
- "42.547004"
- ],
- "value": "222406"
- },
- {
- "label": "汪清县",
- "position": [
- "129.766161",
- "43.315426"
- ],
- "value": "222424"
- },
- {
- "label": "安图县",
- "position": [
- "128.901865",
- "43.110994"
- ],
- "value": "222426"
- }
- ]
- }
- ]
- },
- {
- "label": "黑龙江省",
- "position": [
- "126.642464",
- "45.756967"
- ],
- "value": "230000",
- "children": [{
- "label": "哈尔滨市",
- "position": [
- "126.642464",
- "45.756967"
- ],
- "value": "230100",
- "children": [{
- "label": "道里区",
- "position": [
- "126.612532",
- "45.762035"
- ],
- "value": "230102"
- },
- {
- "label": "南岗区",
- "position": [
- "126.652098",
- "45.755971"
- ],
- "value": "230103"
- },
- {
- "label": "道外区",
- "position": [
- "126.648838",
- "45.78454"
- ],
- "value": "230104"
- },
- {
- "label": "平房区",
- "position": [
- "126.629257",
- "45.605567"
- ],
- "value": "230108"
- },
- {
- "label": "松北区",
- "position": [
- "126.563066",
- "45.814656"
- ],
- "value": "230109"
- },
- {
- "label": "香坊区",
- "position": [
- "126.667049",
- "45.713067"
- ],
- "value": "230110"
- },
- {
- "label": "呼兰区",
- "position": [
- "126.603302",
- "45.98423"
- ],
- "value": "230111"
- },
- {
- "label": "阿城区",
- "position": [
- "126.972726",
- "45.538372"
- ],
- "value": "230112"
- },
- {
- "label": "双城区",
- "position": [
- "126.308784",
- "45.377942"
- ],
- "value": "230113"
- },
- {
- "label": "依兰县",
- "position": [
- "129.565594",
- "46.315105"
- ],
- "value": "230123"
- },
- {
- "label": "方正县",
- "position": [
- "128.836131",
- "45.839536"
- ],
- "value": "230124"
- },
- {
- "label": "宾县",
- "position": [
- "127.48594",
- "45.759369"
- ],
- "value": "230125"
- },
- {
- "label": "巴彦县",
- "position": [
- "127.403602",
- "46.081889"
- ],
- "value": "230126"
- },
- {
- "label": "木兰县",
- "position": [
- "128.042675",
- "45.949826"
- ],
- "value": "230127"
- },
- {
- "label": "通河县",
- "position": [
- "128.747786",
- "45.977618"
- ],
- "value": "230128"
- },
- {
- "label": "延寿县",
- "position": [
- "128.331886",
- "45.455648"
- ],
- "value": "230129"
- },
- {
- "label": "尚志市",
- "position": [
- "127.968539",
- "45.214953"
- ],
- "value": "230183"
- },
- {
- "label": "五常市",
- "position": [
- "127.15759",
- "44.919418"
- ],
- "value": "230184"
- }
- ]
- },
- {
- "label": "齐齐哈尔市",
- "position": [
- "123.95792",
- "47.342081"
- ],
- "value": "230200",
- "children": [{
- "label": "龙沙区",
- "position": [
- "123.957338",
- "47.341736"
- ],
- "value": "230202"
- },
- {
- "label": "建华区",
- "position": [
- "123.955888",
- "47.354494"
- ],
- "value": "230203"
- },
- {
- "label": "铁锋区",
- "position": [
- "123.973555",
- "47.339499"
- ],
- "value": "230204"
- },
- {
- "label": "昂昂溪区",
- "position": [
- "123.813181",
- "47.156867"
- ],
- "value": "230205"
- },
- {
- "label": "富拉尔基区",
- "position": [
- "123.638873",
- "47.20697"
- ],
- "value": "230206"
- },
- {
- "label": "碾子山区",
- "position": [
- "122.887972",
- "47.51401"
- ],
- "value": "230207"
- },
- {
- "label": "梅里斯达斡尔族区",
- "position": [
- "123.754599",
- "47.311113"
- ],
- "value": "230208"
- },
- {
- "label": "龙江县",
- "position": [
- "123.187225",
- "47.336388"
- ],
- "value": "230221"
- },
- {
- "label": "依安县",
- "position": [
- "125.307561",
- "47.890098"
- ],
- "value": "230223"
- },
- {
- "label": "泰来县",
- "position": [
- "123.41953",
- "46.39233"
- ],
- "value": "230224"
- },
- {
- "label": "甘南县",
- "position": [
- "123.506034",
- "47.917838"
- ],
- "value": "230225"
- },
- {
- "label": "富裕县",
- "position": [
- "124.469106",
- "47.797172"
- ],
- "value": "230227"
- },
- {
- "label": "克山县",
- "position": [
- "125.874355",
- "48.034342"
- ],
- "value": "230229"
- },
- {
- "label": "克东县",
- "position": [
- "126.249094",
- "48.03732"
- ],
- "value": "230230"
- },
- {
- "label": "拜泉县",
- "position": [
- "126.091911",
- "47.607363"
- ],
- "value": "230231"
- },
- {
- "label": "讷河市",
- "position": [
- "124.882172",
- "48.481133"
- ],
- "value": "230281"
- }
- ]
- },
- {
- "label": "鸡西市",
- "position": [
- "130.975966",
- "45.300046"
- ],
- "value": "230300",
- "children": [{
- "label": "鸡冠区",
- "position": [
- "130.974374",
- "45.30034"
- ],
- "value": "230302"
- },
- {
- "label": "恒山区",
- "position": [
- "130.910636",
- "45.213242"
- ],
- "value": "230303"
- },
- {
- "label": "滴道区",
- "position": [
- "130.846823",
- "45.348812"
- ],
- "value": "230304"
- },
- {
- "label": "梨树区",
- "position": [
- "130.697781",
- "45.092195"
- ],
- "value": "230305"
- },
- {
- "label": "城子河区",
- "position": [
- "131.010501",
- "45.338248"
- ],
- "value": "230306"
- },
- {
- "label": "麻山区",
- "position": [
- "130.481126",
- "45.209607"
- ],
- "value": "230307"
- },
- {
- "label": "鸡东县",
- "position": [
- "131.148907",
- "45.250892"
- ],
- "value": "230321"
- },
- {
- "label": "虎林市",
- "position": [
- "132.973881",
- "45.767985"
- ],
- "value": "230381"
- },
- {
- "label": "密山市",
- "position": [
- "131.874137",
- "45.54725"
- ],
- "value": "230382"
- }
- ]
- },
- {
- "label": "鹤岗市",
- "position": [
- "130.277487",
- "47.332085"
- ],
- "value": "230400",
- "children": [{
- "label": "向阳区",
- "position": [
- "130.292478",
- "47.345372"
- ],
- "value": "230402"
- },
- {
- "label": "工农区",
- "position": [
- "130.276652",
- "47.331678"
- ],
- "value": "230403"
- },
- {
- "label": "南山区",
- "position": [
- "130.275533",
- "47.31324"
- ],
- "value": "230404"
- },
- {
- "label": "兴安区",
- "position": [
- "130.236169",
- "47.252911"
- ],
- "value": "230405"
- },
- {
- "label": "东山区",
- "position": [
- "130.31714",
- "47.337385"
- ],
- "value": "230406"
- },
- {
- "label": "兴山区",
- "position": [
- "130.30534",
- "47.35997"
- ],
- "value": "230407"
- },
- {
- "label": "萝北县",
- "position": [
- "130.829087",
- "47.577577"
- ],
- "value": "230421"
- },
- {
- "label": "绥滨县",
- "position": [
- "131.860526",
- "47.289892"
- ],
- "value": "230422"
- }
- ]
- },
- {
- "label": "双鸭山市",
- "position": [
- "131.157304",
- "46.643442"
- ],
- "value": "230500",
- "children": [{
- "label": "尖山区",
- "position": [
- "131.15896",
- "46.642961"
- ],
- "value": "230502"
- },
- {
- "label": "岭东区",
- "position": [
- "131.163675",
- "46.591076"
- ],
- "value": "230503"
- },
- {
- "label": "四方台区",
- "position": [
- "131.333181",
- "46.594347"
- ],
- "value": "230505"
- },
- {
- "label": "宝山区",
- "position": [
- "131.404294",
- "46.573366"
- ],
- "value": "230506"
- },
- {
- "label": "集贤县",
- "position": [
- "131.13933",
- "46.72898"
- ],
- "value": "230521"
- },
- {
- "label": "友谊县",
- "position": [
- "131.810622",
- "46.775159"
- ],
- "value": "230522"
- },
- {
- "label": "宝清县",
- "position": [
- "132.206415",
- "46.328781"
- ],
- "value": "230523"
- },
- {
- "label": "饶河县",
- "position": [
- "134.021162",
- "46.801288"
- ],
- "value": "230524"
- }
- ]
- },
- {
- "label": "大庆市",
- "position": [
- "125.11272",
- "46.590734"
- ],
- "value": "230600",
- "children": [{
- "label": "萨尔图区",
- "position": [
- "125.114643",
- "46.596356"
- ],
- "value": "230602"
- },
- {
- "label": "龙凤区",
- "position": [
- "125.145794",
- "46.573948"
- ],
- "value": "230603"
- },
- {
- "label": "让胡路区",
- "position": [
- "124.868341",
- "46.653254"
- ],
- "value": "230604"
- },
- {
- "label": "红岗区",
- "position": [
- "124.889528",
- "46.403049"
- ],
- "value": "230605"
- },
- {
- "label": "大同区",
- "position": [
- "124.818509",
- "46.034304"
- ],
- "value": "230606"
- },
- {
- "label": "肇州县",
- "position": [
- "125.273254",
- "45.708685"
- ],
- "value": "230621"
- },
- {
- "label": "肇源县",
- "position": [
- "125.081974",
- "45.518832"
- ],
- "value": "230622"
- },
- {
- "label": "林甸县",
- "position": [
- "124.877742",
- "47.186411"
- ],
- "value": "230623"
- },
- {
- "label": "杜尔伯特蒙古族自治县",
- "position": [
- "124.446259",
- "46.865973"
- ],
- "value": "230624"
- }
- ]
- },
- {
- "label": "伊春市",
- "position": [
- "128.899396",
- "47.724775"
- ],
- "value": "230700",
- "children": [{
- "label": "伊美区",
- "position": [
- "128.907303",
- "47.728171"
- ],
- "value": "230717"
- },
- {
- "label": "乌翠区",
- "position": [
- "128.669859",
- "47.726728"
- ],
- "value": "230718"
- },
- {
- "label": "友好区",
- "position": [
- "128.84075",
- "47.853778"
- ],
- "value": "230719"
- },
- {
- "label": "嘉荫县",
- "position": [
- "130.397684",
- "48.891378"
- ],
- "value": "230722"
- },
- {
- "label": "汤旺县",
- "position": [
- "129.571108",
- "48.454651"
- ],
- "value": "230723"
- },
- {
- "label": "丰林县",
- "position": [
- "129.5336",
- "48.290455"
- ],
- "value": "230724"
- },
- {
- "label": "大箐山县",
- "position": [
- "129.020793",
- "47.028397"
- ],
- "value": "230725"
- },
- {
- "label": "南岔县",
- "position": [
- "129.28246",
- "47.137314"
- ],
- "value": "230726"
- },
- {
- "label": "金林区",
- "position": [
- "129.429117",
- "47.413074"
- ],
- "value": "230751"
- },
- {
- "label": "铁力市",
- "position": [
- "128.030561",
- "46.985772"
- ],
- "value": "230781"
- }
- ]
- },
- {
- "label": "佳木斯市",
- "position": [
- "130.361634",
- "46.809606"
- ],
- "value": "230800",
- "children": [{
- "label": "向阳区",
- "position": [
- "130.361786",
- "46.809645"
- ],
- "value": "230803"
- },
- {
- "label": "前进区",
- "position": [
- "130.377684",
- "46.812345"
- ],
- "value": "230804"
- },
- {
- "label": "东风区",
- "position": [
- "130.403297",
- "46.822476"
- ],
- "value": "230805"
- },
- {
- "label": "郊区",
- "position": [
- "130.351588",
- "46.80712"
- ],
- "value": "230811"
- },
- {
- "label": "桦南县",
- "position": [
- "130.570112",
- "46.240118"
- ],
- "value": "230822"
- },
- {
- "label": "桦川县",
- "position": [
- "130.723713",
- "47.023039"
- ],
- "value": "230826"
- },
- {
- "label": "汤原县",
- "position": [
- "129.904463",
- "46.730048"
- ],
- "value": "230828"
- },
- {
- "label": "同江市",
- "position": [
- "132.510119",
- "47.651131"
- ],
- "value": "230881"
- },
- {
- "label": "富锦市",
- "position": [
- "132.037951",
- "47.250747"
- ],
- "value": "230882"
- },
- {
- "label": "抚远市",
- "position": [
- "134.294501",
- "48.364707"
- ],
- "value": "230883"
- }
- ]
- },
- {
- "label": "七台河市",
- "position": [
- "131.015584",
- "45.771266"
- ],
- "value": "230900",
- "children": [{
- "label": "新兴区",
- "position": [
- "130.889482",
- "45.794258"
- ],
- "value": "230902"
- },
- {
- "label": "桃山区",
- "position": [
- "131.015848",
- "45.771217"
- ],
- "value": "230903"
- },
- {
- "label": "茄子河区",
- "position": [
- "131.071561",
- "45.776587"
- ],
- "value": "230904"
- },
- {
- "label": "勃利县",
- "position": [
- "130.575025",
- "45.751573"
- ],
- "value": "230921"
- }
- ]
- },
- {
- "label": "牡丹江市",
- "position": [
- "129.618602",
- "44.582962"
- ],
- "value": "231000",
- "children": [{
- "label": "东安区",
- "position": [
- "129.623292",
- "44.582399"
- ],
- "value": "231002"
- },
- {
- "label": "阳明区",
- "position": [
- "129.634645",
- "44.596328"
- ],
- "value": "231003"
- },
- {
- "label": "爱民区",
- "position": [
- "129.601232",
- "44.595443"
- ],
- "value": "231004"
- },
- {
- "label": "西安区",
- "position": [
- "129.61311",
- "44.581032"
- ],
- "value": "231005"
- },
- {
- "label": "林口县",
- "position": [
- "130.268402",
- "45.286645"
- ],
- "value": "231025"
- },
- {
- "label": "绥芬河市",
- "position": [
- "131.164856",
- "44.396864"
- ],
- "value": "231081"
- },
- {
- "label": "海林市",
- "position": [
- "129.387902",
- "44.574149"
- ],
- "value": "231083"
- },
- {
- "label": "宁安市",
- "position": [
- "129.470019",
- "44.346836"
- ],
- "value": "231084"
- },
- {
- "label": "穆棱市",
- "position": [
- "130.527085",
- "44.91967"
- ],
- "value": "231085"
- },
- {
- "label": "东宁市",
- "position": [
- "131.125296",
- "44.063578"
- ],
- "value": "231086"
- }
- ]
- },
- {
- "label": "黑河市",
- "position": [
- "127.499023",
- "50.249585"
- ],
- "value": "231100",
- "children": [{
- "label": "爱辉区",
- "position": [
- "127.497639",
- "50.249027"
- ],
- "value": "231102"
- },
- {
- "label": "逊克县",
- "position": [
- "128.476152",
- "49.582974"
- ],
- "value": "231123"
- },
- {
- "label": "孙吴县",
- "position": [
- "127.327315",
- "49.423941"
- ],
- "value": "231124"
- },
- {
- "label": "北安市",
- "position": [
- "126.508737",
- "48.245437"
- ],
- "value": "231181"
- },
- {
- "label": "五大连池市",
- "position": [
- "126.197694",
- "48.512688"
- ],
- "value": "231182"
- },
- {
- "label": "嫩江市",
- "position": [
- "125.229904",
- "49.177461"
- ],
- "value": "231183"
- }
- ]
- },
- {
- "label": "绥化市",
- "position": [
- "126.99293",
- "46.637393"
- ],
- "value": "231200",
- "children": [{
- "label": "北林区",
- "position": [
- "126.990665",
- "46.634912"
- ],
- "value": "231202"
- },
- {
- "label": "望奎县",
- "position": [
- "126.484191",
- "46.83352"
- ],
- "value": "231221"
- },
- {
- "label": "兰西县",
- "position": [
- "126.289315",
- "46.259037"
- ],
- "value": "231222"
- },
- {
- "label": "青冈县",
- "position": [
- "126.112268",
- "46.686596"
- ],
- "value": "231223"
- },
- {
- "label": "庆安县",
- "position": [
- "127.510024",
- "46.879203"
- ],
- "value": "231224"
- },
- {
- "label": "明水县",
- "position": [
- "125.907544",
- "47.183527"
- ],
- "value": "231225"
- },
- {
- "label": "绥棱县",
- "position": [
- "127.111121",
- "47.247195"
- ],
- "value": "231226"
- },
- {
- "label": "安达市",
- "position": [
- "125.329926",
- "46.410614"
- ],
- "value": "231281"
- },
- {
- "label": "肇东市",
- "position": [
- "125.991402",
- "46.069471"
- ],
- "value": "231282"
- },
- {
- "label": "海伦市",
- "position": [
- "126.969383",
- "47.460428"
- ],
- "value": "231283"
- }
- ]
- },
- {
- "label": "大兴安岭地区",
- "position": [
- "124.711526",
- "52.335262"
- ],
- "value": "232700",
- "children": [{
- "label": "漠河市",
- "position": [
- "122.536256",
- "52.972074"
- ],
- "value": "232701"
- },
- {
- "label": "加格达奇区",
- "position": [
- "124.126716",
- "50.424654"
- ],
- "value": "232718"
- },
- {
- "label": "呼玛县",
- "position": [
- "126.662105",
- "51.726998"
- ],
- "value": "232721"
- },
- {
- "label": "塔河县",
- "position": [
- "124.710516",
- "52.335229"
- ],
- "value": "232722"
- }
- ]
- }
- ]
- },
- {
- "label": "上海市",
- "position": [
- "121.472644",
- "31.231706"
- ],
- "value": "310000",
- "children": [{
- "label": "上海城区",
- "position": [
- "121.472644",
- "31.231706"
- ],
- "value": "310100",
- "children": [{
- "label": "黄浦区",
- "position": [
- "121.490317",
- "31.222771"
- ],
- "value": "310101"
- },
- {
- "label": "徐汇区",
- "position": [
- "121.43752",
- "31.179973"
- ],
- "value": "310104"
- },
- {
- "label": "长宁区",
- "position": [
- "121.4222",
- "31.218123"
- ],
- "value": "310105"
- },
- {
- "label": "静安区",
- "position": [
- "121.448224",
- "31.229003"
- ],
- "value": "310106"
- },
- {
- "label": "普陀区",
- "position": [
- "121.392499",
- "31.241701"
- ],
- "value": "310107"
- },
- {
- "label": "虹口区",
- "position": [
- "121.491832",
- "31.26097"
- ],
- "value": "310109"
- },
- {
- "label": "杨浦区",
- "position": [
- "121.522797",
- "31.270755"
- ],
- "value": "310110"
- },
- {
- "label": "闵行区",
- "position": [
- "121.375972",
- "31.111658"
- ],
- "value": "310112"
- },
- {
- "label": "宝山区",
- "position": [
- "121.489934",
- "31.398896"
- ],
- "value": "310113"
- },
- {
- "label": "嘉定区",
- "position": [
- "121.250333",
- "31.383524"
- ],
- "value": "310114"
- },
- {
- "label": "浦东新区",
- "position": [
- "121.567706",
- "31.245944"
- ],
- "value": "310115"
- },
- {
- "label": "金山区",
- "position": [
- "121.330736",
- "30.724697"
- ],
- "value": "310116"
- },
- {
- "label": "松江区",
- "position": [
- "121.223543",
- "31.03047"
- ],
- "value": "310117"
- },
- {
- "label": "青浦区",
- "position": [
- "121.113021",
- "31.151209"
- ],
- "value": "310118"
- },
- {
- "label": "奉贤区",
- "position": [
- "121.458472",
- "30.912345"
- ],
- "value": "310120"
- },
- {
- "label": "崇明区",
- "position": [
- "121.397516",
- "31.626946"
- ],
- "value": "310151"
- }
- ]
- }]
- },
- {
- "label": "江苏省",
- "position": [
- "118.767413",
- "32.041544"
- ],
- "value": "320000",
- "children": [{
- "label": "南京市",
- "position": [
- "118.767413",
- "32.041544"
- ],
- "value": "320100",
- "children": [{
- "label": "玄武区",
- "position": [
- "118.792199",
- "32.050678"
- ],
- "value": "320102"
- },
- {
- "label": "秦淮区",
- "position": [
- "118.786088",
- "32.033818"
- ],
- "value": "320104"
- },
- {
- "label": "建邺区",
- "position": [
- "118.732688",
- "32.004538"
- ],
- "value": "320105"
- },
- {
- "label": "鼓楼区",
- "position": [
- "118.769739",
- "32.066966"
- ],
- "value": "320106"
- },
- {
- "label": "浦口区",
- "position": [
- "118.625307",
- "32.05839"
- ],
- "value": "320111"
- },
- {
- "label": "栖霞区",
- "position": [
- "118.808702",
- "32.102147"
- ],
- "value": "320113"
- },
- {
- "label": "雨花台区",
- "position": [
- "118.77207",
- "31.995946"
- ],
- "value": "320114"
- },
- {
- "label": "江宁区",
- "position": [
- "118.850621",
- "31.953418"
- ],
- "value": "320115"
- },
- {
- "label": "六合区",
- "position": [
- "118.85065",
- "32.340655"
- ],
- "value": "320116"
- },
- {
- "label": "溧水区",
- "position": [
- "119.028732",
- "31.653061"
- ],
- "value": "320117"
- },
- {
- "label": "高淳区",
- "position": [
- "118.87589",
- "31.327132"
- ],
- "value": "320118"
- }
- ]
- },
- {
- "label": "无锡市",
- "position": [
- "120.301663",
- "31.574729"
- ],
- "value": "320200",
- "children": [{
- "label": "锡山区",
- "position": [
- "120.357298",
- "31.585559"
- ],
- "value": "320205"
- },
- {
- "label": "惠山区",
- "position": [
- "120.303543",
- "31.681019"
- ],
- "value": "320206"
- },
- {
- "label": "滨湖区",
- "position": [
- "120.266053",
- "31.550228"
- ],
- "value": "320211"
- },
- {
- "label": "梁溪区",
- "position": [
- "120.296595",
- "31.575706"
- ],
- "value": "320213"
- },
- {
- "label": "新吴区",
- "position": [
- "120.352782",
- "31.550966"
- ],
- "value": "320214"
- },
- {
- "label": "江阴市",
- "position": [
- "120.275891",
- "31.910984"
- ],
- "value": "320281"
- },
- {
- "label": "宜兴市",
- "position": [
- "119.820538",
- "31.364384"
- ],
- "value": "320282"
- }
- ]
- },
- {
- "label": "徐州市",
- "position": [
- "117.184811",
- "34.261792"
- ],
- "value": "320300",
- "children": [{
- "label": "鼓楼区",
- "position": [
- "117.192941",
- "34.269397"
- ],
- "value": "320302"
- },
- {
- "label": "云龙区",
- "position": [
- "117.194589",
- "34.254805"
- ],
- "value": "320303"
- },
- {
- "label": "贾汪区",
- "position": [
- "117.450212",
- "34.441642"
- ],
- "value": "320305"
- },
- {
- "label": "泉山区",
- "position": [
- "117.182225",
- "34.262249"
- ],
- "value": "320311"
- },
- {
- "label": "铜山区",
- "position": [
- "117.183894",
- "34.19288"
- ],
- "value": "320312"
- },
- {
- "label": "丰县",
- "position": [
- "116.592888",
- "34.696946"
- ],
- "value": "320321"
- },
- {
- "label": "沛县",
- "position": [
- "116.937182",
- "34.729044"
- ],
- "value": "320322"
- },
- {
- "label": "睢宁县",
- "position": [
- "117.95066",
- "33.899222"
- ],
- "value": "320324"
- },
- {
- "label": "新沂市",
- "position": [
- "118.345828",
- "34.368779"
- ],
- "value": "320381"
- },
- {
- "label": "邳州市",
- "position": [
- "117.963923",
- "34.314708"
- ],
- "value": "320382"
- }
- ]
- },
- {
- "label": "常州市",
- "position": [
- "119.946973",
- "31.772752"
- ],
- "value": "320400",
- "children": [{
- "label": "天宁区",
- "position": [
- "119.963783",
- "31.779632"
- ],
- "value": "320402"
- },
- {
- "label": "钟楼区",
- "position": [
- "119.948388",
- "31.78096"
- ],
- "value": "320404"
- },
- {
- "label": "新北区",
- "position": [
- "119.974654",
- "31.824664"
- ],
- "value": "320411"
- },
- {
- "label": "武进区",
- "position": [
- "119.958773",
- "31.718566"
- ],
- "value": "320412"
- },
- {
- "label": "金坛区",
- "position": [
- "119.573395",
- "31.744399"
- ],
- "value": "320413"
- },
- {
- "label": "溧阳市",
- "position": [
- "119.487816",
- "31.427081"
- ],
- "value": "320481"
- }
- ]
- },
- {
- "label": "苏州市",
- "position": [
- "120.619585",
- "31.299379"
- ],
- "value": "320500",
- "children": [{
- "label": "虎丘区",
- "position": [
- "120.566833",
- "31.294845"
- ],
- "value": "320505"
- },
- {
- "label": "吴中区",
- "position": [
- "120.624621",
- "31.270839"
- ],
- "value": "320506"
- },
- {
- "label": "相城区",
- "position": [
- "120.618956",
- "31.396684"
- ],
- "value": "320507"
- },
- {
- "label": "姑苏区",
- "position": [
- "120.622249",
- "31.311414"
- ],
- "value": "320508"
- },
- {
- "label": "吴江区",
- "position": [
- "120.641601",
- "31.160404"
- ],
- "value": "320509"
- },
- {
- "label": "苏州工业园区",
- "position": [
- "120.723343",
- "31.324036"
- ],
- "value": "320571"
- },
- {
- "label": "常熟市",
- "position": [
- "120.74852",
- "31.658156"
- ],
- "value": "320581"
- },
- {
- "label": "张家港市",
- "position": [
- "120.543441",
- "31.865553"
- ],
- "value": "320582"
- },
- {
- "label": "昆山市",
- "position": [
- "120.958137",
- "31.381925"
- ],
- "value": "320583"
- },
- {
- "label": "太仓市",
- "position": [
- "121.112275",
- "31.452568"
- ],
- "value": "320585"
- }
- ]
- },
- {
- "label": "南通市",
- "position": [
- "120.864608",
- "32.016212"
- ],
- "value": "320600",
- "children": [{
- "label": "崇川区",
- "position": [
- "120.86635",
- "32.015278"
- ],
- "value": "320602"
- },
- {
- "label": "通州区",
- "position": [
- "121.073171",
- "32.084287"
- ],
- "value": "320612"
- },
- {
- "label": "如东县",
- "position": [
- "121.186088",
- "32.311832"
- ],
- "value": "320623"
- },
- {
- "label": "启东市",
- "position": [
- "121.659724",
- "31.810158"
- ],
- "value": "320681"
- },
- {
- "label": "如皋市",
- "position": [
- "120.566324",
- "32.391591"
- ],
- "value": "320682"
- },
- {
- "label": "海门区",
- "position": [
- "121.176609",
- "31.893528"
- ],
- "value": "320684"
- },
- {
- "label": "海安市",
- "position": [
- "120.465995",
- "32.540288"
- ],
- "value": "320685"
- }
- ]
- },
- {
- "label": "连云港市",
- "position": [
- "119.178821",
- "34.600018"
- ],
- "value": "320700",
- "children": [{
- "label": "连云区",
- "position": [
- "119.366487",
- "34.739529"
- ],
- "value": "320703"
- },
- {
- "label": "海州区",
- "position": [
- "119.179793",
- "34.601584"
- ],
- "value": "320706"
- },
- {
- "label": "赣榆区",
- "position": [
- "119.128774",
- "34.839154"
- ],
- "value": "320707"
- },
- {
- "label": "东海县",
- "position": [
- "118.766489",
- "34.522859"
- ],
- "value": "320722"
- },
- {
- "label": "灌云县",
- "position": [
- "119.255741",
- "34.298436"
- ],
- "value": "320723"
- },
- {
- "label": "灌南县",
- "position": [
- "119.352331",
- "34.092553"
- ],
- "value": "320724"
- }
- ]
- },
- {
- "label": "淮安市",
- "position": [
- "119.021265",
- "33.597506"
- ],
- "value": "320800",
- "children": [{
- "label": "淮安区",
- "position": [
- "119.14634",
- "33.507499"
- ],
- "value": "320803"
- },
- {
- "label": "淮阴区",
- "position": [
- "119.020817",
- "33.622452"
- ],
- "value": "320804"
- },
- {
- "label": "清江浦区",
- "position": [
- "119.019454",
- "33.603234"
- ],
- "value": "320812"
- },
- {
- "label": "洪泽区",
- "position": [
- "118.867875",
- "33.294975"
- ],
- "value": "320813"
- },
- {
- "label": "涟水县",
- "position": [
- "119.266078",
- "33.771308"
- ],
- "value": "320826"
- },
- {
- "label": "盱眙县",
- "position": [
- "118.493823",
- "33.00439"
- ],
- "value": "320830"
- },
- {
- "label": "金湖县",
- "position": [
- "119.016936",
- "33.018162"
- ],
- "value": "320831"
- }
- ]
- },
- {
- "label": "盐城市",
- "position": [
- "120.139998",
- "33.377631"
- ],
- "value": "320900",
- "children": [{
- "label": "亭湖区",
- "position": [
- "120.136078",
- "33.383912"
- ],
- "value": "320902"
- },
- {
- "label": "盐都区",
- "position": [
- "120.139753",
- "33.341288"
- ],
- "value": "320903"
- },
- {
- "label": "大丰区",
- "position": [
- "120.470324",
- "33.199531"
- ],
- "value": "320904"
- },
- {
- "label": "响水县",
- "position": [
- "119.579573",
- "34.19996"
- ],
- "value": "320921"
- },
- {
- "label": "滨海县",
- "position": [
- "119.828434",
- "33.989888"
- ],
- "value": "320922"
- },
- {
- "label": "阜宁县",
- "position": [
- "119.805338",
- "33.78573"
- ],
- "value": "320923"
- },
- {
- "label": "射阳县",
- "position": [
- "120.257444",
- "33.773779"
- ],
- "value": "320924"
- },
- {
- "label": "建湖县",
- "position": [
- "119.793105",
- "33.472621"
- ],
- "value": "320925"
- },
- {
- "label": "东台市",
- "position": [
- "120.314101",
- "32.853174"
- ],
- "value": "320981"
- }
- ]
- },
- {
- "label": "扬州市",
- "position": [
- "119.421003",
- "32.393159"
- ],
- "value": "321000",
- "children": [{
- "label": "广陵区",
- "position": [
- "119.442267",
- "32.392154"
- ],
- "value": "321002"
- },
- {
- "label": "邗江区",
- "position": [
- "119.397777",
- "32.377899"
- ],
- "value": "321003"
- },
- {
- "label": "江都区",
- "position": [
- "119.567481",
- "32.426564"
- ],
- "value": "321012"
- },
- {
- "label": "宝应县",
- "position": [
- "119.321284",
- "33.23694"
- ],
- "value": "321023"
- },
- {
- "label": "仪征市",
- "position": [
- "119.182443",
- "32.271965"
- ],
- "value": "321081"
- },
- {
- "label": "高邮市",
- "position": [
- "119.443842",
- "32.785164"
- ],
- "value": "321084"
- }
- ]
- },
- {
- "label": "镇江市",
- "position": [
- "119.452753",
- "32.204402"
- ],
- "value": "321100",
- "children": [{
- "label": "京口区",
- "position": [
- "119.454571",
- "32.206191"
- ],
- "value": "321102"
- },
- {
- "label": "润州区",
- "position": [
- "119.414877",
- "32.213501"
- ],
- "value": "321111"
- },
- {
- "label": "丹徒区",
- "position": [
- "119.433883",
- "32.128972"
- ],
- "value": "321112"
- },
- {
- "label": "丹阳市",
- "position": [
- "119.581911",
- "31.991459"
- ],
- "value": "321181"
- },
- {
- "label": "扬中市",
- "position": [
- "119.828054",
- "32.237266"
- ],
- "value": "321182"
- },
- {
- "label": "句容市",
- "position": [
- "119.167135",
- "31.947355"
- ],
- "value": "321183"
- }
- ]
- },
- {
- "label": "泰州市",
- "position": [
- "119.915176",
- "32.484882"
- ],
- "value": "321200",
- "children": [{
- "label": "海陵区",
- "position": [
- "119.920187",
- "32.488406"
- ],
- "value": "321202"
- },
- {
- "label": "高港区",
- "position": [
- "119.88166",
- "32.315701"
- ],
- "value": "321203"
- },
- {
- "label": "姜堰区",
- "position": [
- "120.148208",
- "32.508483"
- ],
- "value": "321204"
- },
- {
- "label": "兴化市",
- "position": [
- "119.840162",
- "32.938065"
- ],
- "value": "321281"
- },
- {
- "label": "靖江市",
- "position": [
- "120.26825",
- "32.018168"
- ],
- "value": "321282"
- },
- {
- "label": "泰兴市",
- "position": [
- "120.020228",
- "32.168784"
- ],
- "value": "321283"
- }
- ]
- },
- {
- "label": "宿迁市",
- "position": [
- "118.275162",
- "33.963008"
- ],
- "value": "321300",
- "children": [{
- "label": "宿城区",
- "position": [
- "118.278984",
- "33.937726"
- ],
- "value": "321302"
- },
- {
- "label": "宿豫区",
- "position": [
- "118.330012",
- "33.941071"
- ],
- "value": "321311"
- },
- {
- "label": "沭阳县",
- "position": [
- "118.775889",
- "34.129097"
- ],
- "value": "321322"
- },
- {
- "label": "泗阳县",
- "position": [
- "118.681284",
- "33.711433"
- ],
- "value": "321323"
- },
- {
- "label": "泗洪县",
- "position": [
- "118.211824",
- "33.456538"
- ],
- "value": "321324"
- }
- ]
- }
- ]
- },
- {
- "label": "浙江省",
- "position": [
- "120.153576",
- "30.287459"
- ],
- "value": "330000",
- "children": [{
- "label": "杭州市",
- "position": [
- "120.153576",
- "30.287459"
- ],
- "value": "330100",
- "children": [{
- "label": "上城区",
- "position": [
- "120.171465",
- "30.250236"
- ],
- "value": "330102"
- },
- {
- "label": "下城区",
- "position": [
- "120.172763",
- "30.276271"
- ],
- "value": "330103"
- },
- {
- "label": "江干区",
- "position": [
- "120.202633",
- "30.266603"
- ],
- "value": "330104"
- },
- {
- "label": "拱墅区",
- "position": [
- "120.150053",
- "30.314697"
- ],
- "value": "330105"
- },
- {
- "label": "西湖区",
- "position": [
- "120.147376",
- "30.272934"
- ],
- "value": "330106"
- },
- {
- "label": "滨江区",
- "position": [
- "120.21062",
- "30.206615"
- ],
- "value": "330108"
- },
- {
- "label": "萧山区",
- "position": [
- "120.27069",
- "30.162932"
- ],
- "value": "330109"
- },
- {
- "label": "余杭区",
- "position": [
- "120.301737",
- "30.421187"
- ],
- "value": "330110"
- },
- {
- "label": "富阳区",
- "position": [
- "119.949869",
- "30.049871"
- ],
- "value": "330111"
- },
- {
- "label": "临安区",
- "position": [
- "119.715101",
- "30.231153"
- ],
- "value": "330112"
- },
- {
- "label": "桐庐县",
- "position": [
- "119.685045",
- "29.797437"
- ],
- "value": "330122"
- },
- {
- "label": "淳安县",
- "position": [
- "119.044276",
- "29.604177"
- ],
- "value": "330127"
- },
- {
- "label": "建德市",
- "position": [
- "119.279089",
- "29.472284"
- ],
- "value": "330182"
- }
- ]
- },
- {
- "label": "宁波市",
- "position": [
- "121.549792",
- "29.868388"
- ],
- "value": "330200",
- "children": [{
- "label": "海曙区",
- "position": [
- "121.539698",
- "29.874452"
- ],
- "value": "330203"
- },
- {
- "label": "江北区",
- "position": [
- "121.559282",
- "29.888361"
- ],
- "value": "330205"
- },
- {
- "label": "北仑区",
- "position": [
- "121.831303",
- "29.90944"
- ],
- "value": "330206"
- },
- {
- "label": "镇海区",
- "position": [
- "121.713162",
- "29.952107"
- ],
- "value": "330211"
- },
- {
- "label": "鄞州区",
- "position": [
- "121.558436",
- "29.831662"
- ],
- "value": "330212"
- },
- {
- "label": "奉化区",
- "position": [
- "121.41089",
- "29.662348"
- ],
- "value": "330213"
- },
- {
- "label": "象山县",
- "position": [
- "121.877091",
- "29.470206"
- ],
- "value": "330225"
- },
- {
- "label": "宁海县",
- "position": [
- "121.432606",
- "29.299836"
- ],
- "value": "330226"
- },
- {
- "label": "余姚市",
- "position": [
- "121.156294",
- "30.045404"
- ],
- "value": "330281"
- },
- {
- "label": "慈溪市",
- "position": [
- "121.248052",
- "30.177142"
- ],
- "value": "330282"
- }
- ]
- },
- {
- "label": "温州市",
- "position": [
- "120.672111",
- "28.000575"
- ],
- "value": "330300",
- "children": [{
- "label": "鹿城区",
- "position": [
- "120.674231",
- "28.003352"
- ],
- "value": "330302"
- },
- {
- "label": "龙湾区",
- "position": [
- "120.763469",
- "27.970254"
- ],
- "value": "330303"
- },
- {
- "label": "瓯海区",
- "position": [
- "120.637145",
- "28.006444"
- ],
- "value": "330304"
- },
- {
- "label": "洞头区",
- "position": [
- "121.156181",
- "27.836057"
- ],
- "value": "330305"
- },
- {
- "label": "永嘉县",
- "position": [
- "120.690968",
- "28.153886"
- ],
- "value": "330324"
- },
- {
- "label": "平阳县",
- "position": [
- "120.564387",
- "27.6693"
- ],
- "value": "330326"
- },
- {
- "label": "苍南县",
- "position": [
- "120.406256",
- "27.507743"
- ],
- "value": "330327"
- },
- {
- "label": "文成县",
- "position": [
- "120.09245",
- "27.789133"
- ],
- "value": "330328"
- },
- {
- "label": "泰顺县",
- "position": [
- "119.71624",
- "27.557309"
- ],
- "value": "330329"
- },
- {
- "label": "瑞安市",
- "position": [
- "120.646171",
- "27.779321"
- ],
- "value": "330381"
- },
- {
- "label": "乐清市",
- "position": [
- "120.967147",
- "28.116083"
- ],
- "value": "330382"
- },
- {
- "label": "龙港市",
- "position": [
- "120.553039",
- "27.578156"
- ],
- "value": "330383"
- }
- ]
- },
- {
- "label": "嘉兴市",
- "position": [
- "120.750865",
- "30.762653"
- ],
- "value": "330400",
- "children": [{
- "label": "南湖区",
- "position": [
- "120.749953",
- "30.764652"
- ],
- "value": "330402"
- },
- {
- "label": "秀洲区",
- "position": [
- "120.720431",
- "30.763323"
- ],
- "value": "330411"
- },
- {
- "label": "嘉善县",
- "position": [
- "120.921871",
- "30.841352"
- ],
- "value": "330421"
- },
- {
- "label": "海盐县",
- "position": [
- "120.942017",
- "30.522223"
- ],
- "value": "330424"
- },
- {
- "label": "海宁市",
- "position": [
- "120.688821",
- "30.525544"
- ],
- "value": "330481"
- },
- {
- "label": "平湖市",
- "position": [
- "121.014666",
- "30.698921"
- ],
- "value": "330482"
- },
- {
- "label": "桐乡市",
- "position": [
- "120.551085",
- "30.629065"
- ],
- "value": "330483"
- }
- ]
- },
- {
- "label": "湖州市",
- "position": [
- "120.102398",
- "30.867198"
- ],
- "value": "330500",
- "children": [{
- "label": "吴兴区",
- "position": [
- "120.101416",
- "30.867252"
- ],
- "value": "330502"
- },
- {
- "label": "南浔区",
- "position": [
- "120.417195",
- "30.872742"
- ],
- "value": "330503"
- },
- {
- "label": "德清县",
- "position": [
- "119.967662",
- "30.534927"
- ],
- "value": "330521"
- },
- {
- "label": "长兴县",
- "position": [
- "119.910122",
- "31.00475"
- ],
- "value": "330522"
- },
- {
- "label": "安吉县",
- "position": [
- "119.687891",
- "30.631974"
- ],
- "value": "330523"
- }
- ]
- },
- {
- "label": "绍兴市",
- "position": [
- "120.582112",
- "29.997117"
- ],
- "value": "330600",
- "children": [{
- "label": "越城区",
- "position": [
- "120.585315",
- "29.996993"
- ],
- "value": "330602"
- },
- {
- "label": "柯桥区",
- "position": [
- "120.476075",
- "30.078038"
- ],
- "value": "330603"
- },
- {
- "label": "上虞区",
- "position": [
- "120.874185",
- "30.016769"
- ],
- "value": "330604"
- },
- {
- "label": "新昌县",
- "position": [
- "120.905665",
- "29.501205"
- ],
- "value": "330624"
- },
- {
- "label": "诸暨市",
- "position": [
- "120.244326",
- "29.713662"
- ],
- "value": "330681"
- },
- {
- "label": "嵊州市",
- "position": [
- "120.82888",
- "29.586606"
- ],
- "value": "330683"
- }
- ]
- },
- {
- "label": "金华市",
- "position": [
- "119.649506",
- "29.089524"
- ],
- "value": "330700",
- "children": [{
- "label": "婺城区",
- "position": [
- "119.652579",
- "29.082607"
- ],
- "value": "330702"
- },
- {
- "label": "金东区",
- "position": [
- "119.681264",
- "29.095835"
- ],
- "value": "330703"
- },
- {
- "label": "武义县",
- "position": [
- "119.819159",
- "28.896563"
- ],
- "value": "330723"
- },
- {
- "label": "浦江县",
- "position": [
- "119.893363",
- "29.451254"
- ],
- "value": "330726"
- },
- {
- "label": "磐安县",
- "position": [
- "120.44513",
- "29.052627"
- ],
- "value": "330727"
- },
- {
- "label": "兰溪市",
- "position": [
- "119.460521",
- "29.210065"
- ],
- "value": "330781"
- },
- {
- "label": "义乌市",
- "position": [
- "120.074911",
- "29.306863"
- ],
- "value": "330782"
- },
- {
- "label": "东阳市",
- "position": [
- "120.23334",
- "29.262546"
- ],
- "value": "330783"
- },
- {
- "label": "永康市",
- "position": [
- "120.036328",
- "28.895293"
- ],
- "value": "330784"
- }
- ]
- },
- {
- "label": "衢州市",
- "position": [
- "118.87263",
- "28.941708"
- ],
- "value": "330800",
- "children": [{
- "label": "柯城区",
- "position": [
- "118.873041",
- "28.944539"
- ],
- "value": "330802"
- },
- {
- "label": "衢江区",
- "position": [
- "118.957683",
- "28.973195"
- ],
- "value": "330803"
- },
- {
- "label": "常山县",
- "position": [
- "118.521654",
- "28.900039"
- ],
- "value": "330822"
- },
- {
- "label": "开化县",
- "position": [
- "118.414435",
- "29.136503"
- ],
- "value": "330824"
- },
- {
- "label": "龙游县",
- "position": [
- "119.172525",
- "29.031364"
- ],
- "value": "330825"
- },
- {
- "label": "江山市",
- "position": [
- "118.627879",
- "28.734674"
- ],
- "value": "330881"
- }
- ]
- },
- {
- "label": "舟山市",
- "position": [
- "122.106863",
- "30.016028"
- ],
- "value": "330900",
- "children": [{
- "label": "定海区",
- "position": [
- "122.108496",
- "30.016423"
- ],
- "value": "330902"
- },
- {
- "label": "普陀区",
- "position": [
- "122.301953",
- "29.945614"
- ],
- "value": "330903"
- },
- {
- "label": "岱山县",
- "position": [
- "122.201132",
- "30.242865"
- ],
- "value": "330921"
- },
- {
- "label": "嵊泗县",
- "position": [
- "122.457809",
- "30.727166"
- ],
- "value": "330922"
- }
- ]
- },
- {
- "label": "台州市",
- "position": [
- "121.428599",
- "28.661378"
- ],
- "value": "331000",
- "children": [{
- "label": "椒江区",
- "position": [
- "121.431049",
- "28.67615"
- ],
- "value": "331002"
- },
- {
- "label": "黄岩区",
- "position": [
- "121.262138",
- "28.64488"
- ],
- "value": "331003"
- },
- {
- "label": "路桥区",
- "position": [
- "121.37292",
- "28.581799"
- ],
- "value": "331004"
- },
- {
- "label": "三门县",
- "position": [
- "121.376429",
- "29.118955"
- ],
- "value": "331022"
- },
- {
- "label": "天台县",
- "position": [
- "121.031227",
- "29.141126"
- ],
- "value": "331023"
- },
- {
- "label": "仙居县",
- "position": [
- "120.735074",
- "28.849213"
- ],
- "value": "331024"
- },
- {
- "label": "温岭市",
- "position": [
- "121.373611",
- "28.368781"
- ],
- "value": "331081"
- },
- {
- "label": "临海市",
- "position": [
- "121.131229",
- "28.845441"
- ],
- "value": "331082"
- },
- {
- "label": "玉环市",
- "position": [
- "121.232337",
- "28.12842"
- ],
- "value": "331083"
- }
- ]
- },
- {
- "label": "丽水市",
- "position": [
- "119.921786",
- "28.451993"
- ],
- "value": "331100",
- "children": [{
- "label": "莲都区",
- "position": [
- "119.922293",
- "28.451103"
- ],
- "value": "331102"
- },
- {
- "label": "青田县",
- "position": [
- "120.291939",
- "28.135247"
- ],
- "value": "331121"
- },
- {
- "label": "缙云县",
- "position": [
- "120.078965",
- "28.654208"
- ],
- "value": "331122"
- },
- {
- "label": "遂昌县",
- "position": [
- "119.27589",
- "28.5924"
- ],
- "value": "331123"
- },
- {
- "label": "松阳县",
- "position": [
- "119.485292",
- "28.449937"
- ],
- "value": "331124"
- },
- {
- "label": "云和县",
- "position": [
- "119.569458",
- "28.111077"
- ],
- "value": "331125"
- },
- {
- "label": "庆元县",
- "position": [
- "119.067233",
- "27.618231"
- ],
- "value": "331126"
- },
- {
- "label": "景宁畲族自治县",
- "position": [
- "119.634669",
- "27.977247"
- ],
- "value": "331127"
- },
- {
- "label": "龙泉市",
- "position": [
- "119.132319",
- "28.069177"
- ],
- "value": "331181"
- }
- ]
- }
- ]
- },
- {
- "label": "安徽省",
- "position": [
- "117.283042",
- "31.86119"
- ],
- "value": "340000",
- "children": [{
- "label": "合肥市",
- "position": [
- "117.283042",
- "31.86119"
- ],
- "value": "340100",
- "children": [{
- "label": "瑶海区",
- "position": [
- "117.315358",
- "31.86961"
- ],
- "value": "340102"
- },
- {
- "label": "庐阳区",
- "position": [
- "117.283776",
- "31.869011"
- ],
- "value": "340103"
- },
- {
- "label": "蜀山区",
- "position": [
- "117.262072",
- "31.855868"
- ],
- "value": "340104"
- },
- {
- "label": "包河区",
- "position": [
- "117.285751",
- "31.82956"
- ],
- "value": "340111"
- },
- {
- "label": "长丰县",
- "position": [
- "117.164699",
- "32.478548"
- ],
- "value": "340121"
- },
- {
- "label": "肥东县",
- "position": [
- "117.463222",
- "31.883992"
- ],
- "value": "340122"
- },
- {
- "label": "肥西县",
- "position": [
- "117.166118",
- "31.719646"
- ],
- "value": "340123"
- },
- {
- "label": "庐江县",
- "position": [
- "117.289844",
- "31.251488"
- ],
- "value": "340124"
- },
- {
- "label": "巢湖市",
- "position": [
- "117.874155",
- "31.600518"
- ],
- "value": "340181"
- }
- ]
- },
- {
- "label": "芜湖市",
- "position": [
- "118.376451",
- "31.326319"
- ],
- "value": "340200",
- "children": [{
- "label": "镜湖区",
- "position": [
- "118.376343",
- "31.32559"
- ],
- "value": "340202"
- },
- {
- "label": "弋江区",
- "position": [
- "118.377476",
- "31.313394"
- ],
- "value": "340203"
- },
- {
- "label": "鸠江区",
- "position": [
- "118.400174",
- "31.362716"
- ],
- "value": "340207"
- },
- {
- "label": "湾沚区",
- "position": [
- "118.572301",
- "31.145262"
- ],
- "value": "340221"
- },
- {
- "label": "繁昌区",
- "position": [
- "118.201349",
- "31.080896"
- ],
- "value": "340222"
- },
- {
- "label": "南陵县",
- "position": [
- "118.337104",
- "30.919638"
- ],
- "value": "340223"
- },
- {
- "label": "无为市",
- "position": [
- "117.911432",
- "31.303075"
- ],
- "value": "340281"
- }
- ]
- },
- {
- "label": "蚌埠市",
- "position": [
- "117.363228",
- "32.939667"
- ],
- "value": "340300",
- "children": [{
- "label": "龙子湖区",
- "position": [
- "117.382312",
- "32.950452"
- ],
- "value": "340302"
- },
- {
- "label": "蚌山区",
- "position": [
- "117.355789",
- "32.938066"
- ],
- "value": "340303"
- },
- {
- "label": "禹会区",
- "position": [
- "117.35259",
- "32.931933"
- ],
- "value": "340304"
- },
- {
- "label": "淮上区",
- "position": [
- "117.34709",
- "32.963147"
- ],
- "value": "340311"
- },
- {
- "label": "怀远县",
- "position": [
- "117.200171",
- "32.956934"
- ],
- "value": "340321"
- },
- {
- "label": "五河县",
- "position": [
- "117.888809",
- "33.146202"
- ],
- "value": "340322"
- },
- {
- "label": "固镇县",
- "position": [
- "117.315962",
- "33.318679"
- ],
- "value": "340323"
- }
- ]
- },
- {
- "label": "淮南市",
- "position": [
- "117.018329",
- "32.647574"
- ],
- "value": "340400",
- "children": [{
- "label": "大通区",
- "position": [
- "117.052927",
- "32.632066"
- ],
- "value": "340402"
- },
- {
- "label": "田家庵区",
- "position": [
- "117.018318",
- "32.644342"
- ],
- "value": "340403"
- },
- {
- "label": "谢家集区",
- "position": [
- "116.865354",
- "32.598289"
- ],
- "value": "340404"
- },
- {
- "label": "八公山区",
- "position": [
- "116.841111",
- "32.628229"
- ],
- "value": "340405"
- },
- {
- "label": "潘集区",
- "position": [
- "116.816879",
- "32.782117"
- ],
- "value": "340406"
- },
- {
- "label": "凤台县",
- "position": [
- "116.722769",
- "32.705382"
- ],
- "value": "340421"
- },
- {
- "label": "寿县",
- "position": [
- "116.785349",
- "32.577304"
- ],
- "value": "340422"
- }
- ]
- },
- {
- "label": "马鞍山市",
- "position": [
- "118.507906",
- "31.689362"
- ],
- "value": "340500",
- "children": [{
- "label": "花山区",
- "position": [
- "118.511308",
- "31.69902"
- ],
- "value": "340503"
- },
- {
- "label": "雨山区",
- "position": [
- "118.493104",
- "31.685912"
- ],
- "value": "340504"
- },
- {
- "label": "博望区",
- "position": [
- "118.843742",
- "31.562321"
- ],
- "value": "340506"
- },
- {
- "label": "当涂县",
- "position": [
- "118.489873",
- "31.556167"
- ],
- "value": "340521"
- },
- {
- "label": "含山县",
- "position": [
- "118.105545",
- "31.727758"
- ],
- "value": "340522"
- },
- {
- "label": "和县",
- "position": [
- "118.362998",
- "31.716634"
- ],
- "value": "340523"
- }
- ]
- },
- {
- "label": "淮北市",
- "position": [
- "116.794664",
- "33.971707"
- ],
- "value": "340600",
- "children": [{
- "label": "杜集区",
- "position": [
- "116.833925",
- "33.991218"
- ],
- "value": "340602"
- },
- {
- "label": "相山区",
- "position": [
- "116.790775",
- "33.970916"
- ],
- "value": "340603"
- },
- {
- "label": "烈山区",
- "position": [
- "116.809465",
- "33.889529"
- ],
- "value": "340604"
- },
- {
- "label": "濉溪县",
- "position": [
- "116.767435",
- "33.916407"
- ],
- "value": "340621"
- }
- ]
- },
- {
- "label": "铜陵市",
- "position": [
- "117.816576",
- "30.929935"
- ],
- "value": "340700",
- "children": [{
- "label": "铜官区",
- "position": [
- "117.816167",
- "30.927613"
- ],
- "value": "340705"
- },
- {
- "label": "义安区",
- "position": [
- "117.792288",
- "30.952338"
- ],
- "value": "340706"
- },
- {
- "label": "郊区",
- "position": [
- "117.80707",
- "30.908927"
- ],
- "value": "340711"
- },
- {
- "label": "枞阳县",
- "position": [
- "117.222027",
- "30.700615"
- ],
- "value": "340722"
- }
- ]
- },
- {
- "label": "安庆市",
- "position": [
- "117.043551",
- "30.50883"
- ],
- "value": "340800",
- "children": [{
- "label": "迎江区",
- "position": [
- "117.044965",
- "30.506375"
- ],
- "value": "340802"
- },
- {
- "label": "大观区",
- "position": [
- "117.034512",
- "30.505632"
- ],
- "value": "340803"
- },
- {
- "label": "宜秀区",
- "position": [
- "117.070003",
- "30.541323"
- ],
- "value": "340811"
- },
- {
- "label": "怀宁县",
- "position": [
- "116.828664",
- "30.734994"
- ],
- "value": "340822"
- },
- {
- "label": "太湖县",
- "position": [
- "116.305225",
- "30.451869"
- ],
- "value": "340825"
- },
- {
- "label": "宿松县",
- "position": [
- "116.120204",
- "30.158327"
- ],
- "value": "340826"
- },
- {
- "label": "望江县",
- "position": [
- "116.690927",
- "30.12491"
- ],
- "value": "340827"
- },
- {
- "label": "岳西县",
- "position": [
- "116.360482",
- "30.848502"
- ],
- "value": "340828"
- },
- {
- "label": "桐城市",
- "position": [
- "116.959656",
- "31.050576"
- ],
- "value": "340881"
- },
- {
- "label": "潜山市",
- "position": [
- "116.573665",
- "30.638222"
- ],
- "value": "340882"
- }
- ]
- },
- {
- "label": "黄山市",
- "position": [
- "118.317325",
- "29.709239"
- ],
- "value": "341000",
- "children": [{
- "label": "屯溪区",
- "position": [
- "118.317354",
- "29.709186"
- ],
- "value": "341002"
- },
- {
- "label": "黄山区",
- "position": [
- "118.136639",
- "30.294517"
- ],
- "value": "341003"
- },
- {
- "label": "徽州区",
- "position": [
- "118.339743",
- "29.825201"
- ],
- "value": "341004"
- },
- {
- "label": "歙县",
- "position": [
- "118.428025",
- "29.867748"
- ],
- "value": "341021"
- },
- {
- "label": "休宁县",
- "position": [
- "118.188531",
- "29.788878"
- ],
- "value": "341022"
- },
- {
- "label": "黟县",
- "position": [
- "117.942911",
- "29.923812"
- ],
- "value": "341023"
- },
- {
- "label": "祁门县",
- "position": [
- "117.717237",
- "29.853472"
- ],
- "value": "341024"
- }
- ]
- },
- {
- "label": "滁州市",
- "position": [
- "118.316264",
- "32.303627"
- ],
- "value": "341100",
- "children": [{
- "label": "琅琊区",
- "position": [
- "118.316475",
- "32.303797"
- ],
- "value": "341102"
- },
- {
- "label": "南谯区",
- "position": [
- "118.296955",
- "32.329841"
- ],
- "value": "341103"
- },
- {
- "label": "来安县",
- "position": [
- "118.433293",
- "32.450231"
- ],
- "value": "341122"
- },
- {
- "label": "全椒县",
- "position": [
- "118.268576",
- "32.09385"
- ],
- "value": "341124"
- },
- {
- "label": "定远县",
- "position": [
- "117.683713",
- "32.527105"
- ],
- "value": "341125"
- },
- {
- "label": "凤阳县",
- "position": [
- "117.562461",
- "32.867146"
- ],
- "value": "341126"
- },
- {
- "label": "天长市",
- "position": [
- "119.011212",
- "32.6815"
- ],
- "value": "341181"
- },
- {
- "label": "明光市",
- "position": [
- "117.998048",
- "32.781206"
- ],
- "value": "341182"
- }
- ]
- },
- {
- "label": "阜阳市",
- "position": [
- "115.819729",
- "32.896969"
- ],
- "value": "341200",
- "children": [{
- "label": "颍州区",
- "position": [
- "115.813914",
- "32.891238"
- ],
- "value": "341202"
- },
- {
- "label": "颍东区",
- "position": [
- "115.858747",
- "32.908861"
- ],
- "value": "341203"
- },
- {
- "label": "颍泉区",
- "position": [
- "115.804525",
- "32.924797"
- ],
- "value": "341204"
- },
- {
- "label": "临泉县",
- "position": [
- "115.261688",
- "33.062698"
- ],
- "value": "341221"
- },
- {
- "label": "太和县",
- "position": [
- "115.627243",
- "33.16229"
- ],
- "value": "341222"
- },
- {
- "label": "阜南县",
- "position": [
- "115.590534",
- "32.638102"
- ],
- "value": "341225"
- },
- {
- "label": "颍上县",
- "position": [
- "116.259122",
- "32.637065"
- ],
- "value": "341226"
- },
- {
- "label": "界首市",
- "position": [
- "115.362117",
- "33.26153"
- ],
- "value": "341282"
- }
- ]
- },
- {
- "label": "宿州市",
- "position": [
- "116.984084",
- "33.633891"
- ],
- "value": "341300",
- "children": [{
- "label": "埇桥区",
- "position": [
- "116.983309",
- "33.633853"
- ],
- "value": "341302"
- },
- {
- "label": "砀山县",
- "position": [
- "116.351113",
- "34.426247"
- ],
- "value": "341321"
- },
- {
- "label": "萧县",
- "position": [
- "116.945399",
- "34.183266"
- ],
- "value": "341322"
- },
- {
- "label": "灵璧县",
- "position": [
- "117.551493",
- "33.540629"
- ],
- "value": "341323"
- },
- {
- "label": "泗县",
- "position": [
- "117.885443",
- "33.47758"
- ],
- "value": "341324"
- }
- ]
- },
- {
- "label": "六安市",
- "position": [
- "116.507676",
- "31.752889"
- ],
- "value": "341500",
- "children": [{
- "label": "金安区",
- "position": [
- "116.503288",
- "31.754491"
- ],
- "value": "341502"
- },
- {
- "label": "裕安区",
- "position": [
- "116.494543",
- "31.750692"
- ],
- "value": "341503"
- },
- {
- "label": "叶集区",
- "position": [
- "115.913594",
- "31.84768"
- ],
- "value": "341504"
- },
- {
- "label": "霍邱县",
- "position": [
- "116.278875",
- "32.341305"
- ],
- "value": "341522"
- },
- {
- "label": "舒城县",
- "position": [
- "116.944088",
- "31.462848"
- ],
- "value": "341523"
- },
- {
- "label": "金寨县",
- "position": [
- "115.878514",
- "31.681624"
- ],
- "value": "341524"
- },
- {
- "label": "霍山县",
- "position": [
- "116.333078",
- "31.402456"
- ],
- "value": "341525"
- }
- ]
- },
- {
- "label": "亳州市",
- "position": [
- "115.782939",
- "33.869338"
- ],
- "value": "341600",
- "children": [{
- "label": "谯城区",
- "position": [
- "115.781214",
- "33.869284"
- ],
- "value": "341602"
- },
- {
- "label": "涡阳县",
- "position": [
- "116.211551",
- "33.502831"
- ],
- "value": "341621"
- },
- {
- "label": "蒙城县",
- "position": [
- "116.560337",
- "33.260814"
- ],
- "value": "341622"
- },
- {
- "label": "利辛县",
- "position": [
- "116.207782",
- "33.143503"
- ],
- "value": "341623"
- }
- ]
- },
- {
- "label": "池州市",
- "position": [
- "117.489157",
- "30.656037"
- ],
- "value": "341700",
- "children": [{
- "label": "贵池区",
- "position": [
- "117.488342",
- "30.657378"
- ],
- "value": "341702"
- },
- {
- "label": "东至县",
- "position": [
- "117.021476",
- "30.096568"
- ],
- "value": "341721"
- },
- {
- "label": "石台县",
- "position": [
- "117.482907",
- "30.210324"
- ],
- "value": "341722"
- },
- {
- "label": "青阳县",
- "position": [
- "117.857395",
- "30.63818"
- ],
- "value": "341723"
- }
- ]
- },
- {
- "label": "宣城市",
- "position": [
- "118.757995",
- "30.945667"
- ],
- "value": "341800",
- "children": [{
- "label": "宣州区",
- "position": [
- "118.758412",
- "30.946003"
- ],
- "value": "341802"
- },
- {
- "label": "郎溪县",
- "position": [
- "119.185024",
- "31.127834"
- ],
- "value": "341821"
- },
- {
- "label": "泾县",
- "position": [
- "118.412397",
- "30.685975"
- ],
- "value": "341823"
- },
- {
- "label": "绩溪县",
- "position": [
- "118.594705",
- "30.065267"
- ],
- "value": "341824"
- },
- {
- "label": "旌德县",
- "position": [
- "118.543081",
- "30.288057"
- ],
- "value": "341825"
- },
- {
- "label": "宁国市",
- "position": [
- "118.983407",
- "30.626529"
- ],
- "value": "341881"
- },
- {
- "label": "广德市",
- "position": [
- "119.417521",
- "30.893116"
- ],
- "value": "341882"
- }
- ]
- }
- ]
- },
- {
- "label": "福建省",
- "position": [
- "119.306239",
- "26.075302"
- ],
- "value": "350000",
- "children": [{
- "label": "福州市",
- "position": [
- "119.306239",
- "26.075302"
- ],
- "value": "350100",
- "children": [{
- "label": "鼓楼区",
- "position": [
- "119.29929",
- "26.082284"
- ],
- "value": "350102"
- },
- {
- "label": "台江区",
- "position": [
- "119.310156",
- "26.058616"
- ],
- "value": "350103"
- },
- {
- "label": "仓山区",
- "position": [
- "119.320988",
- "26.038912"
- ],
- "value": "350104"
- },
- {
- "label": "马尾区",
- "position": [
- "119.458725",
- "25.991975"
- ],
- "value": "350105"
- },
- {
- "label": "晋安区",
- "position": [
- "119.328597",
- "26.078837"
- ],
- "value": "350111"
- },
- {
- "label": "长乐区",
- "position": [
- "119.510849",
- "25.960583"
- ],
- "value": "350112"
- },
- {
- "label": "闽侯县",
- "position": [
- "119.145117",
- "26.148567"
- ],
- "value": "350121"
- },
- {
- "label": "连江县",
- "position": [
- "119.538365",
- "26.202109"
- ],
- "value": "350122"
- },
- {
- "label": "罗源县",
- "position": [
- "119.552645",
- "26.487234"
- ],
- "value": "350123"
- },
- {
- "label": "闽清县",
- "position": [
- "118.868416",
- "26.223793"
- ],
- "value": "350124"
- },
- {
- "label": "永泰县",
- "position": [
- "118.939089",
- "25.864825"
- ],
- "value": "350125"
- },
- {
- "label": "平潭县",
- "position": [
- "119.791197",
- "25.503672"
- ],
- "value": "350128"
- },
- {
- "label": "福清市",
- "position": [
- "119.376992",
- "25.720402"
- ],
- "value": "350181"
- }
- ]
- },
- {
- "label": "厦门市",
- "position": [
- "118.11022",
- "24.490474"
- ],
- "value": "350200",
- "children": [{
- "label": "思明区",
- "position": [
- "118.087828",
- "24.462059"
- ],
- "value": "350203"
- },
- {
- "label": "海沧区",
- "position": [
- "118.036364",
- "24.492512"
- ],
- "value": "350205"
- },
- {
- "label": "湖里区",
- "position": [
- "118.10943",
- "24.512764"
- ],
- "value": "350206"
- },
- {
- "label": "集美区",
- "position": [
- "118.100869",
- "24.572874"
- ],
- "value": "350211"
- },
- {
- "label": "同安区",
- "position": [
- "118.150455",
- "24.729333"
- ],
- "value": "350212"
- },
- {
- "label": "翔安区",
- "position": [
- "118.242811",
- "24.637479"
- ],
- "value": "350213"
- }
- ]
- },
- {
- "label": "莆田市",
- "position": [
- "119.007558",
- "25.431011"
- ],
- "value": "350300",
- "children": [{
- "label": "城厢区",
- "position": [
- "119.001028",
- "25.433737"
- ],
- "value": "350302"
- },
- {
- "label": "涵江区",
- "position": [
- "119.119102",
- "25.459273"
- ],
- "value": "350303"
- },
- {
- "label": "荔城区",
- "position": [
- "119.020047",
- "25.430047"
- ],
- "value": "350304"
- },
- {
- "label": "秀屿区",
- "position": [
- "119.092607",
- "25.316141"
- ],
- "value": "350305"
- },
- {
- "label": "仙游县",
- "position": [
- "118.694331",
- "25.356529"
- ],
- "value": "350322"
- }
- ]
- },
- {
- "label": "三明市",
- "position": [
- "117.635001",
- "26.265444"
- ],
- "value": "350400",
- "children": [{
- "label": "梅列区",
- "position": [
- "117.63687",
- "26.269208"
- ],
- "value": "350402"
- },
- {
- "label": "三元区",
- "position": [
- "117.607418",
- "26.234191"
- ],
- "value": "350403"
- },
- {
- "label": "明溪县",
- "position": [
- "117.201845",
- "26.357375"
- ],
- "value": "350421"
- },
- {
- "label": "清流县",
- "position": [
- "116.815821",
- "26.17761"
- ],
- "value": "350423"
- },
- {
- "label": "宁化县",
- "position": [
- "116.659725",
- "26.259932"
- ],
- "value": "350424"
- },
- {
- "label": "大田县",
- "position": [
- "117.849355",
- "25.690803"
- ],
- "value": "350425"
- },
- {
- "label": "尤溪县",
- "position": [
- "118.188577",
- "26.169261"
- ],
- "value": "350426"
- },
- {
- "label": "沙县",
- "position": [
- "117.789095",
- "26.397361"
- ],
- "value": "350427"
- },
- {
- "label": "将乐县",
- "position": [
- "117.473558",
- "26.728667"
- ],
- "value": "350428"
- },
- {
- "label": "泰宁县",
- "position": [
- "117.177522",
- "26.897995"
- ],
- "value": "350429"
- },
- {
- "label": "建宁县",
- "position": [
- "116.845832",
- "26.831398"
- ],
- "value": "350430"
- },
- {
- "label": "永安市",
- "position": [
- "117.364447",
- "25.974075"
- ],
- "value": "350481"
- }
- ]
- },
- {
- "label": "泉州市",
- "position": [
- "118.589421",
- "24.908853"
- ],
- "value": "350500",
- "children": [{
- "label": "鲤城区",
- "position": [
- "118.588929",
- "24.907645"
- ],
- "value": "350502"
- },
- {
- "label": "丰泽区",
- "position": [
- "118.605147",
- "24.896041"
- ],
- "value": "350503"
- },
- {
- "label": "洛江区",
- "position": [
- "118.670312",
- "24.941153"
- ],
- "value": "350504"
- },
- {
- "label": "泉港区",
- "position": [
- "118.912285",
- "25.126859"
- ],
- "value": "350505"
- },
- {
- "label": "惠安县",
- "position": [
- "118.798954",
- "25.028718"
- ],
- "value": "350521"
- },
- {
- "label": "安溪县",
- "position": [
- "118.186014",
- "25.056824"
- ],
- "value": "350524"
- },
- {
- "label": "永春县",
- "position": [
- "118.29503",
- "25.320721"
- ],
- "value": "350525"
- },
- {
- "label": "德化县",
- "position": [
- "118.242986",
- "25.489004"
- ],
- "value": "350526"
- },
- {
- "label": "金门县",
- "position": [
- "118.323221",
- "24.436417"
- ],
- "value": "350527"
- },
- {
- "label": "石狮市",
- "position": [
- "118.628402",
- "24.731978"
- ],
- "value": "350581"
- },
- {
- "label": "晋江市",
- "position": [
- "118.577338",
- "24.807322"
- ],
- "value": "350582"
- },
- {
- "label": "南安市",
- "position": [
- "118.387031",
- "24.959494"
- ],
- "value": "350583"
- }
- ]
- },
- {
- "label": "漳州市",
- "position": [
- "117.661801",
- "24.510897"
- ],
- "value": "350600",
- "children": [{
- "label": "芗城区",
- "position": [
- "117.656461",
- "24.509955"
- ],
- "value": "350602"
- },
- {
- "label": "龙文区",
- "position": [
- "117.671387",
- "24.515656"
- ],
- "value": "350603"
- },
- {
- "label": "云霄县",
- "position": [
- "117.340946",
- "23.950486"
- ],
- "value": "350622"
- },
- {
- "label": "漳浦县",
- "position": [
- "117.614023",
- "24.117907"
- ],
- "value": "350623"
- },
- {
- "label": "诏安县",
- "position": [
- "117.176083",
- "23.710834"
- ],
- "value": "350624"
- },
- {
- "label": "长泰县",
- "position": [
- "117.755913",
- "24.621475"
- ],
- "value": "350625"
- },
- {
- "label": "东山县",
- "position": [
- "117.427679",
- "23.702845"
- ],
- "value": "350626"
- },
- {
- "label": "南靖县",
- "position": [
- "117.365462",
- "24.516425"
- ],
- "value": "350627"
- },
- {
- "label": "平和县",
- "position": [
- "117.313549",
- "24.366158"
- ],
- "value": "350628"
- },
- {
- "label": "华安县",
- "position": [
- "117.53631",
- "25.001416"
- ],
- "value": "350629"
- },
- {
- "label": "龙海市",
- "position": [
- "117.817292",
- "24.445341"
- ],
- "value": "350681"
- }
- ]
- },
- {
- "label": "南平市",
- "position": [
- "118.178459",
- "26.635627"
- ],
- "value": "350700",
- "children": [{
- "label": "延平区",
- "position": [
- "118.178918",
- "26.636079"
- ],
- "value": "350702"
- },
- {
- "label": "建阳区",
- "position": [
- "118.12267",
- "27.332067"
- ],
- "value": "350703"
- },
- {
- "label": "顺昌县",
- "position": [
- "117.80771",
- "26.792851"
- ],
- "value": "350721"
- },
- {
- "label": "浦城县",
- "position": [
- "118.536822",
- "27.920412"
- ],
- "value": "350722"
- },
- {
- "label": "光泽县",
- "position": [
- "117.337897",
- "27.542803"
- ],
- "value": "350723"
- },
- {
- "label": "松溪县",
- "position": [
- "118.783491",
- "27.525785"
- ],
- "value": "350724"
- },
- {
- "label": "政和县",
- "position": [
- "118.858661",
- "27.365398"
- ],
- "value": "350725"
- },
- {
- "label": "邵武市",
- "position": [
- "117.491544",
- "27.337952"
- ],
- "value": "350781"
- },
- {
- "label": "武夷山市",
- "position": [
- "118.032796",
- "27.751733"
- ],
- "value": "350782"
- },
- {
- "label": "建瓯市",
- "position": [
- "118.321765",
- "27.03502"
- ],
- "value": "350783"
- }
- ]
- },
- {
- "label": "龙岩市",
- "position": [
- "117.02978",
- "25.091603"
- ],
- "value": "350800",
- "children": [{
- "label": "新罗区",
- "position": [
- "117.030721",
- "25.0918"
- ],
- "value": "350802"
- },
- {
- "label": "永定区",
- "position": [
- "116.732691",
- "24.720442"
- ],
- "value": "350803"
- },
- {
- "label": "长汀县",
- "position": [
- "116.361007",
- "25.842278"
- ],
- "value": "350821"
- },
- {
- "label": "上杭县",
- "position": [
- "116.424774",
- "25.050019"
- ],
- "value": "350823"
- },
- {
- "label": "武平县",
- "position": [
- "116.100928",
- "25.08865"
- ],
- "value": "350824"
- },
- {
- "label": "连城县",
- "position": [
- "116.756687",
- "25.708506"
- ],
- "value": "350825"
- },
- {
- "label": "漳平市",
- "position": [
- "117.42073",
- "25.291597"
- ],
- "value": "350881"
- }
- ]
- },
- {
- "label": "宁德市",
- "position": [
- "119.527082",
- "26.65924"
- ],
- "value": "350900",
- "children": [{
- "label": "蕉城区",
- "position": [
- "119.527225",
- "26.659253"
- ],
- "value": "350902"
- },
- {
- "label": "霞浦县",
- "position": [
- "120.005214",
- "26.882068"
- ],
- "value": "350921"
- },
- {
- "label": "古田县",
- "position": [
- "118.743156",
- "26.577491"
- ],
- "value": "350922"
- },
- {
- "label": "屏南县",
- "position": [
- "118.987544",
- "26.910826"
- ],
- "value": "350923"
- },
- {
- "label": "寿宁县",
- "position": [
- "119.506733",
- "27.457798"
- ],
- "value": "350924"
- },
- {
- "label": "周宁县",
- "position": [
- "119.338239",
- "27.103106"
- ],
- "value": "350925"
- },
- {
- "label": "柘荣县",
- "position": [
- "119.898226",
- "27.236163"
- ],
- "value": "350926"
- },
- {
- "label": "福安市",
- "position": [
- "119.650798",
- "27.084246"
- ],
- "value": "350981"
- },
- {
- "label": "福鼎市",
- "position": [
- "120.219761",
- "27.318884"
- ],
- "value": "350982"
- }
- ]
- }
- ]
- },
- {
- "label": "江西省",
- "position": [
- "115.892151",
- "28.676493"
- ],
- "value": "360000",
- "children": [{
- "label": "南昌市",
- "position": [
- "115.892151",
- "28.676493"
- ],
- "value": "360100",
- "children": [{
- "label": "东湖区",
- "position": [
- "115.889675",
- "28.682988"
- ],
- "value": "360102"
- },
- {
- "label": "西湖区",
- "position": [
- "115.91065",
- "28.662901"
- ],
- "value": "360103"
- },
- {
- "label": "青云谱区",
- "position": [
- "115.907292",
- "28.635724"
- ],
- "value": "360104"
- },
- {
- "label": "青山湖区",
- "position": [
- "115.949044",
- "28.689292"
- ],
- "value": "360111"
- },
- {
- "label": "新建区",
- "position": [
- "115.820806",
- "28.690788"
- ],
- "value": "360112"
- },
- {
- "label": "红谷滩区",
- "position": [
- "115.8580521",
- "28.69819928"
- ],
- "value": "360113"
- },
- {
- "label": "南昌县",
- "position": [
- "115.942465",
- "28.543781"
- ],
- "value": "360121"
- },
- {
- "label": "安义县",
- "position": [
- "115.553109",
- "28.841334"
- ],
- "value": "360123"
- },
- {
- "label": "进贤县",
- "position": [
- "116.267671",
- "28.365681"
- ],
- "value": "360124"
- }
- ]
- },
- {
- "label": "景德镇市",
- "position": [
- "117.214664",
- "29.29256"
- ],
- "value": "360200",
- "children": [{
- "label": "昌江区",
- "position": [
- "117.195023",
- "29.288465"
- ],
- "value": "360202"
- },
- {
- "label": "珠山区",
- "position": [
- "117.214814",
- "29.292812"
- ],
- "value": "360203"
- },
- {
- "label": "浮梁县",
- "position": [
- "117.217611",
- "29.352251"
- ],
- "value": "360222"
- },
- {
- "label": "乐平市",
- "position": [
- "117.129376",
- "28.967361"
- ],
- "value": "360281"
- }
- ]
- },
- {
- "label": "萍乡市",
- "position": [
- "113.852186",
- "27.622946"
- ],
- "value": "360300",
- "children": [{
- "label": "安源区",
- "position": [
- "113.855044",
- "27.625826"
- ],
- "value": "360302"
- },
- {
- "label": "湘东区",
- "position": [
- "113.7456",
- "27.639319"
- ],
- "value": "360313"
- },
- {
- "label": "莲花县",
- "position": [
- "113.955582",
- "27.127807"
- ],
- "value": "360321"
- },
- {
- "label": "上栗县",
- "position": [
- "113.800525",
- "27.877041"
- ],
- "value": "360322"
- },
- {
- "label": "芦溪县",
- "position": [
- "114.041206",
- "27.633633"
- ],
- "value": "360323"
- }
- ]
- },
- {
- "label": "九江市",
- "position": [
- "115.992811",
- "29.712034"
- ],
- "value": "360400",
- "children": [{
- "label": "濂溪区",
- "position": [
- "115.99012",
- "29.676175"
- ],
- "value": "360402"
- },
- {
- "label": "浔阳区",
- "position": [
- "115.995947",
- "29.72465"
- ],
- "value": "360403"
- },
- {
- "label": "柴桑区",
- "position": [
- "115.892977",
- "29.610264"
- ],
- "value": "360404"
- },
- {
- "label": "武宁县",
- "position": [
- "115.105646",
- "29.260182"
- ],
- "value": "360423"
- },
- {
- "label": "修水县",
- "position": [
- "114.573428",
- "29.032729"
- ],
- "value": "360424"
- },
- {
- "label": "永修县",
- "position": [
- "115.809055",
- "29.018212"
- ],
- "value": "360425"
- },
- {
- "label": "德安县",
- "position": [
- "115.762611",
- "29.327474"
- ],
- "value": "360426"
- },
- {
- "label": "都昌县",
- "position": [
- "116.205114",
- "29.275105"
- ],
- "value": "360428"
- },
- {
- "label": "湖口县",
- "position": [
- "116.244313",
- "29.7263"
- ],
- "value": "360429"
- },
- {
- "label": "彭泽县",
- "position": [
- "116.55584",
- "29.898865"
- ],
- "value": "360430"
- },
- {
- "label": "瑞昌市",
- "position": [
- "115.669081",
- "29.676599"
- ],
- "value": "360481"
- },
- {
- "label": "共青城市",
- "position": [
- "115.805712",
- "29.247884"
- ],
- "value": "360482"
- },
- {
- "label": "庐山市",
- "position": [
- "116.043743",
- "29.456169"
- ],
- "value": "360483"
- }
- ]
- },
- {
- "label": "新余市",
- "position": [
- "114.930835",
- "27.810834"
- ],
- "value": "360500",
- "children": [{
- "label": "渝水区",
- "position": [
- "114.923923",
- "27.819171"
- ],
- "value": "360502"
- },
- {
- "label": "分宜县",
- "position": [
- "114.675262",
- "27.811301"
- ],
- "value": "360521"
- }
- ]
- },
- {
- "label": "鹰潭市",
- "position": [
- "117.033838",
- "28.238638"
- ],
- "value": "360600",
- "children": [{
- "label": "月湖区",
- "position": [
- "117.034112",
- "28.239076"
- ],
- "value": "360602"
- },
- {
- "label": "余江区",
- "position": [
- "116.822763",
- "28.206177"
- ],
- "value": "360603"
- },
- {
- "label": "贵溪市",
- "position": [
- "117.212103",
- "28.283693"
- ],
- "value": "360681"
- }
- ]
- },
- {
- "label": "赣州市",
- "position": [
- "114.940278",
- "25.85097"
- ],
- "value": "360700",
- "children": [{
- "label": "章贡区",
- "position": [
- "114.93872",
- "25.851367"
- ],
- "value": "360702"
- },
- {
- "label": "南康区",
- "position": [
- "114.756933",
- "25.661721"
- ],
- "value": "360703"
- },
- {
- "label": "赣县区",
- "position": [
- "115.018461",
- "25.865432"
- ],
- "value": "360704"
- },
- {
- "label": "信丰县",
- "position": [
- "114.930893",
- "25.38023"
- ],
- "value": "360722"
- },
- {
- "label": "大余县",
- "position": [
- "114.362243",
- "25.395937"
- ],
- "value": "360723"
- },
- {
- "label": "上犹县",
- "position": [
- "114.540537",
- "25.794284"
- ],
- "value": "360724"
- },
- {
- "label": "崇义县",
- "position": [
- "114.307348",
- "25.687911"
- ],
- "value": "360725"
- },
- {
- "label": "安远县",
- "position": [
- "115.392328",
- "25.134591"
- ],
- "value": "360726"
- },
- {
- "label": "定南县",
- "position": [
- "115.03267",
- "24.774277"
- ],
- "value": "360728"
- },
- {
- "label": "全南县",
- "position": [
- "114.531589",
- "24.742651"
- ],
- "value": "360729"
- },
- {
- "label": "宁都县",
- "position": [
- "116.018782",
- "26.472054"
- ],
- "value": "360730"
- },
- {
- "label": "于都县",
- "position": [
- "115.411198",
- "25.955033"
- ],
- "value": "360731"
- },
- {
- "label": "兴国县",
- "position": [
- "115.351896",
- "26.330489"
- ],
- "value": "360732"
- },
- {
- "label": "会昌县",
- "position": [
- "115.791158",
- "25.599125"
- ],
- "value": "360733"
- },
- {
- "label": "寻乌县",
- "position": [
- "115.651399",
- "24.954136"
- ],
- "value": "360734"
- },
- {
- "label": "石城县",
- "position": [
- "116.342249",
- "26.326582"
- ],
- "value": "360735"
- },
- {
- "label": "瑞金市",
- "position": [
- "116.034854",
- "25.875278"
- ],
- "value": "360781"
- },
- {
- "label": "龙南市",
- "position": [
- "114.792657",
- "24.90476"
- ],
- "value": "360783"
- }
- ]
- },
- {
- "label": "吉安市",
- "position": [
- "114.986373",
- "27.111699"
- ],
- "value": "360800",
- "children": [{
- "label": "吉州区",
- "position": [
- "114.987331",
- "27.112367"
- ],
- "value": "360802"
- },
- {
- "label": "青原区",
- "position": [
- "115.016306",
- "27.105879"
- ],
- "value": "360803"
- },
- {
- "label": "吉安县",
- "position": [
- "114.905117",
- "27.040042"
- ],
- "value": "360821"
- },
- {
- "label": "吉水县",
- "position": [
- "115.134569",
- "27.213445"
- ],
- "value": "360822"
- },
- {
- "label": "峡江县",
- "position": [
- "115.319331",
- "27.580862"
- ],
- "value": "360823"
- },
- {
- "label": "新干县",
- "position": [
- "115.399294",
- "27.755758"
- ],
- "value": "360824"
- },
- {
- "label": "永丰县",
- "position": [
- "115.435559",
- "27.321087"
- ],
- "value": "360825"
- },
- {
- "label": "泰和县",
- "position": [
- "114.901393",
- "26.790164"
- ],
- "value": "360826"
- },
- {
- "label": "遂川县",
- "position": [
- "114.51689",
- "26.323705"
- ],
- "value": "360827"
- },
- {
- "label": "万安县",
- "position": [
- "114.784694",
- "26.462085"
- ],
- "value": "360828"
- },
- {
- "label": "安福县",
- "position": [
- "114.61384",
- "27.382746"
- ],
- "value": "360829"
- },
- {
- "label": "永新县",
- "position": [
- "114.242534",
- "26.944721"
- ],
- "value": "360830"
- },
- {
- "label": "井冈山市",
- "position": [
- "114.284421",
- "26.745919"
- ],
- "value": "360881"
- }
- ]
- },
- {
- "label": "宜春市",
- "position": [
- "114.391136",
- "27.8043"
- ],
- "value": "360900",
- "children": [{
- "label": "袁州区",
- "position": [
- "114.387379",
- "27.800117"
- ],
- "value": "360902"
- },
- {
- "label": "奉新县",
- "position": [
- "115.389899",
- "28.700672"
- ],
- "value": "360921"
- },
- {
- "label": "万载县",
- "position": [
- "114.449012",
- "28.104528"
- ],
- "value": "360922"
- },
- {
- "label": "上高县",
- "position": [
- "114.932653",
- "28.234789"
- ],
- "value": "360923"
- },
- {
- "label": "宜丰县",
- "position": [
- "114.787381",
- "28.388289"
- ],
- "value": "360924"
- },
- {
- "label": "靖安县",
- "position": [
- "115.361744",
- "28.86054"
- ],
- "value": "360925"
- },
- {
- "label": "铜鼓县",
- "position": [
- "114.37014",
- "28.520956"
- ],
- "value": "360926"
- },
- {
- "label": "丰城市",
- "position": [
- "115.786005",
- "28.191584"
- ],
- "value": "360981"
- },
- {
- "label": "樟树市",
- "position": [
- "115.543388",
- "28.055898"
- ],
- "value": "360982"
- },
- {
- "label": "高安市",
- "position": [
- "115.381527",
- "28.420951"
- ],
- "value": "360983"
- }
- ]
- },
- {
- "label": "抚州市",
- "position": [
- "116.358351",
- "27.98385"
- ],
- "value": "361000",
- "children": [{
- "label": "临川区",
- "position": [
- "116.361404",
- "27.981919"
- ],
- "value": "361002"
- },
- {
- "label": "东乡区",
- "position": [
- "116.605341",
- "28.2325"
- ],
- "value": "361003"
- },
- {
- "label": "南城县",
- "position": [
- "116.63945",
- "27.55531"
- ],
- "value": "361021"
- },
- {
- "label": "黎川县",
- "position": [
- "116.91457",
- "27.292561"
- ],
- "value": "361022"
- },
- {
- "label": "南丰县",
- "position": [
- "116.532994",
- "27.210132"
- ],
- "value": "361023"
- },
- {
- "label": "崇仁县",
- "position": [
- "116.059109",
- "27.760907"
- ],
- "value": "361024"
- },
- {
- "label": "乐安县",
- "position": [
- "115.838432",
- "27.420101"
- ],
- "value": "361025"
- },
- {
- "label": "宜黄县",
- "position": [
- "116.223023",
- "27.546512"
- ],
- "value": "361026"
- },
- {
- "label": "金溪县",
- "position": [
- "116.778751",
- "27.907387"
- ],
- "value": "361027"
- },
- {
- "label": "资溪县",
- "position": [
- "117.066095",
- "27.70653"
- ],
- "value": "361028"
- },
- {
- "label": "广昌县",
- "position": [
- "116.327291",
- "26.838426"
- ],
- "value": "361030"
- }
- ]
- },
- {
- "label": "上饶市",
- "position": [
- "117.971185",
- "28.44442"
- ],
- "value": "361100",
- "children": [{
- "label": "信州区",
- "position": [
- "117.970522",
- "28.445378"
- ],
- "value": "361102"
- },
- {
- "label": "广丰区",
- "position": [
- "118.189852",
- "28.440285"
- ],
- "value": "361103"
- },
- {
- "label": "广信区",
- "position": [
- "117.90612",
- "28.453897"
- ],
- "value": "361104"
- },
- {
- "label": "玉山县",
- "position": [
- "118.244408",
- "28.673479"
- ],
- "value": "361123"
- },
- {
- "label": "铅山县",
- "position": [
- "117.711906",
- "28.310892"
- ],
- "value": "361124"
- },
- {
- "label": "横峰县",
- "position": [
- "117.608247",
- "28.415103"
- ],
- "value": "361125"
- },
- {
- "label": "弋阳县",
- "position": [
- "117.435002",
- "28.402391"
- ],
- "value": "361126"
- },
- {
- "label": "余干县",
- "position": [
- "116.691072",
- "28.69173"
- ],
- "value": "361127"
- },
- {
- "label": "鄱阳县",
- "position": [
- "116.673748",
- "28.993374"
- ],
- "value": "361128"
- },
- {
- "label": "万年县",
- "position": [
- "117.07015",
- "28.692589"
- ],
- "value": "361129"
- },
- {
- "label": "婺源县",
- "position": [
- "117.86219",
- "29.254015"
- ],
- "value": "361130"
- },
- {
- "label": "德兴市",
- "position": [
- "117.578732",
- "28.945034"
- ],
- "value": "361181"
- }
- ]
- }
- ]
- },
- {
- "label": "山东省",
- "position": [
- "117.000923",
- "36.675807"
- ],
- "value": "370000",
- "children": [{
- "label": "济南市",
- "position": [
- "117.000923",
- "36.675807"
- ],
- "value": "370100",
- "children": [{
- "label": "历下区",
- "position": [
- "117.03862",
- "36.664169"
- ],
- "value": "370102"
- },
- {
- "label": "市中区",
- "position": [
- "116.99898",
- "36.657354"
- ],
- "value": "370103"
- },
- {
- "label": "槐荫区",
- "position": [
- "116.947921",
- "36.668205"
- ],
- "value": "370104"
- },
- {
- "label": "天桥区",
- "position": [
- "116.996086",
- "36.693374"
- ],
- "value": "370105"
- },
- {
- "label": "历城区",
- "position": [
- "117.063744",
- "36.681744"
- ],
- "value": "370112"
- },
- {
- "label": "长清区",
- "position": [
- "116.74588",
- "36.561049"
- ],
- "value": "370113"
- },
- {
- "label": "章丘区",
- "position": [
- "117.54069",
- "36.71209"
- ],
- "value": "370114"
- },
- {
- "label": "济阳区",
- "position": [
- "117.176035",
- "36.976771"
- ],
- "value": "370115"
- },
- {
- "label": "莱芜区",
- "position": [
- "117.675808",
- "36.214395"
- ],
- "value": "370116"
- },
- {
- "label": "钢城区",
- "position": [
- "117.82033",
- "36.058038"
- ],
- "value": "370117"
- },
- {
- "label": "平阴县",
- "position": [
- "116.455054",
- "36.286923"
- ],
- "value": "370124"
- },
- {
- "label": "商河县",
- "position": [
- "117.156369",
- "37.310544"
- ],
- "value": "370126"
- }
- ]
- },
- {
- "label": "青岛市",
- "position": [
- "120.355173",
- "36.082982"
- ],
- "value": "370200",
- "children": [{
- "label": "市南区",
- "position": [
- "120.395966",
- "36.070892"
- ],
- "value": "370202"
- },
- {
- "label": "市北区",
- "position": [
- "120.355026",
- "36.083819"
- ],
- "value": "370203"
- },
- {
- "label": "黄岛区",
- "position": [
- "119.995518",
- "35.875138"
- ],
- "value": "370211"
- },
- {
- "label": "崂山区",
- "position": [
- "120.467393",
- "36.102569"
- ],
- "value": "370212"
- },
- {
- "label": "李沧区",
- "position": [
- "120.421236",
- "36.160023"
- ],
- "value": "370213"
- },
- {
- "label": "城阳区",
- "position": [
- "120.389135",
- "36.306833"
- ],
- "value": "370214"
- },
- {
- "label": "即墨区",
- "position": [
- "120.447352",
- "36.390847"
- ],
- "value": "370215"
- },
- {
- "label": "胶州市",
- "position": [
- "120.006202",
- "36.285878"
- ],
- "value": "370281"
- },
- {
- "label": "平度市",
- "position": [
- "119.959012",
- "36.788828"
- ],
- "value": "370283"
- },
- {
- "label": "莱西市",
- "position": [
- "120.526226",
- "36.86509"
- ],
- "value": "370285"
- }
- ]
- },
- {
- "label": "淄博市",
- "position": [
- "118.047648",
- "36.814939"
- ],
- "value": "370300",
- "children": [{
- "label": "淄川区",
- "position": [
- "117.967696",
- "36.647272"
- ],
- "value": "370302"
- },
- {
- "label": "张店区",
- "position": [
- "118.053521",
- "36.807049"
- ],
- "value": "370303"
- },
- {
- "label": "博山区",
- "position": [
- "117.85823",
- "36.497567"
- ],
- "value": "370304"
- },
- {
- "label": "临淄区",
- "position": [
- "118.306018",
- "36.816657"
- ],
- "value": "370305"
- },
- {
- "label": "周村区",
- "position": [
- "117.851036",
- "36.803699"
- ],
- "value": "370306"
- },
- {
- "label": "桓台县",
- "position": [
- "118.101556",
- "36.959773"
- ],
- "value": "370321"
- },
- {
- "label": "高青县",
- "position": [
- "117.829839",
- "37.169581"
- ],
- "value": "370322"
- },
- {
- "label": "沂源县",
- "position": [
- "118.166161",
- "36.186282"
- ],
- "value": "370323"
- }
- ]
- },
- {
- "label": "枣庄市",
- "position": [
- "117.557964",
- "34.856424"
- ],
- "value": "370400",
- "children": [{
- "label": "市中区",
- "position": [
- "117.557281",
- "34.856651"
- ],
- "value": "370402"
- },
- {
- "label": "薛城区",
- "position": [
- "117.265293",
- "34.79789"
- ],
- "value": "370403"
- },
- {
- "label": "峄城区",
- "position": [
- "117.586316",
- "34.767713"
- ],
- "value": "370404"
- },
- {
- "label": "台儿庄区",
- "position": [
- "117.734747",
- "34.564815"
- ],
- "value": "370405"
- },
- {
- "label": "山亭区",
- "position": [
- "117.458968",
- "35.096077"
- ],
- "value": "370406"
- },
- {
- "label": "滕州市",
- "position": [
- "117.162098",
- "35.088498"
- ],
- "value": "370481"
- }
- ]
- },
- {
- "label": "东营市",
- "position": [
- "118.66471",
- "37.434564"
- ],
- "value": "370500",
- "children": [{
- "label": "东营区",
- "position": [
- "118.507543",
- "37.461567"
- ],
- "value": "370502"
- },
- {
- "label": "河口区",
- "position": [
- "118.529613",
- "37.886015"
- ],
- "value": "370503"
- },
- {
- "label": "垦利区",
- "position": [
- "118.551314",
- "37.588679"
- ],
- "value": "370505"
- },
- {
- "label": "利津县",
- "position": [
- "118.248854",
- "37.493365"
- ],
- "value": "370522"
- },
- {
- "label": "广饶县",
- "position": [
- "118.407522",
- "37.05161"
- ],
- "value": "370523"
- }
- ]
- },
- {
- "label": "烟台市",
- "position": [
- "121.391382",
- "37.539297"
- ],
- "value": "370600",
- "children": [{
- "label": "芝罘区",
- "position": [
- "121.385877",
- "37.540925"
- ],
- "value": "370602"
- },
- {
- "label": "福山区",
- "position": [
- "121.264741",
- "37.496875"
- ],
- "value": "370611"
- },
- {
- "label": "牟平区",
- "position": [
- "121.60151",
- "37.388356"
- ],
- "value": "370612"
- },
- {
- "label": "莱山区",
- "position": [
- "121.448866",
- "37.473549"
- ],
- "value": "370613"
- },
- {
- "label": "蓬莱区",
- "position": [
- "120.759074",
- "37.811045"
- ],
- "value": "370614"
- },
- {
- "label": "龙口市",
- "position": [
- "120.528328",
- "37.648446"
- ],
- "value": "370681"
- },
- {
- "label": "莱阳市",
- "position": [
- "120.711151",
- "36.977037"
- ],
- "value": "370682"
- },
- {
- "label": "莱州市",
- "position": [
- "119.942135",
- "37.182725"
- ],
- "value": "370683"
- },
- {
- "label": "招远市",
- "position": [
- "120.403142",
- "37.364919"
- ],
- "value": "370685"
- },
- {
- "label": "栖霞市",
- "position": [
- "120.834097",
- "37.305854"
- ],
- "value": "370686"
- },
- {
- "label": "海阳市",
- "position": [
- "121.168392",
- "36.780657"
- ],
- "value": "370687"
- }
- ]
- },
- {
- "label": "潍坊市",
- "position": [
- "119.107078",
- "36.70925"
- ],
- "value": "370700",
- "children": [{
- "label": "潍城区",
- "position": [
- "119.103784",
- "36.710062"
- ],
- "value": "370702"
- },
- {
- "label": "寒亭区",
- "position": [
- "119.207866",
- "36.772103"
- ],
- "value": "370703"
- },
- {
- "label": "坊子区",
- "position": [
- "119.166326",
- "36.654616"
- ],
- "value": "370704"
- },
- {
- "label": "奎文区",
- "position": [
- "119.137357",
- "36.709494"
- ],
- "value": "370705"
- },
- {
- "label": "临朐县",
- "position": [
- "118.539876",
- "36.516371"
- ],
- "value": "370724"
- },
- {
- "label": "昌乐县",
- "position": [
- "118.839995",
- "36.703253"
- ],
- "value": "370725"
- },
- {
- "label": "青州市",
- "position": [
- "118.484693",
- "36.697855"
- ],
- "value": "370781"
- },
- {
- "label": "诸城市",
- "position": [
- "119.403182",
- "35.997093"
- ],
- "value": "370782"
- },
- {
- "label": "寿光市",
- "position": [
- "118.736451",
- "36.874411"
- ],
- "value": "370783"
- },
- {
- "label": "安丘市",
- "position": [
- "119.206886",
- "36.427417"
- ],
- "value": "370784"
- },
- {
- "label": "高密市",
- "position": [
- "119.757033",
- "36.37754"
- ],
- "value": "370785"
- },
- {
- "label": "昌邑市",
- "position": [
- "119.394502",
- "36.854937"
- ],
- "value": "370786"
- }
- ]
- },
- {
- "label": "济宁市",
- "position": [
- "116.587245",
- "35.415393"
- ],
- "value": "370800",
- "children": [{
- "label": "任城区",
- "position": [
- "116.595261",
- "35.414828"
- ],
- "value": "370811"
- },
- {
- "label": "兖州区",
- "position": [
- "116.828996",
- "35.556445"
- ],
- "value": "370812"
- },
- {
- "label": "微山县",
- "position": [
- "117.12861",
- "34.809525"
- ],
- "value": "370826"
- },
- {
- "label": "鱼台县",
- "position": [
- "116.650023",
- "34.997706"
- ],
- "value": "370827"
- },
- {
- "label": "金乡县",
- "position": [
- "116.310364",
- "35.06977"
- ],
- "value": "370828"
- },
- {
- "label": "嘉祥县",
- "position": [
- "116.342885",
- "35.398098"
- ],
- "value": "370829"
- },
- {
- "label": "汶上县",
- "position": [
- "116.487146",
- "35.721746"
- ],
- "value": "370830"
- },
- {
- "label": "泗水县",
- "position": [
- "117.273605",
- "35.653216"
- ],
- "value": "370831"
- },
- {
- "label": "梁山县",
- "position": [
- "116.08963",
- "35.801843"
- ],
- "value": "370832"
- },
- {
- "label": "曲阜市",
- "position": [
- "116.991885",
- "35.592788"
- ],
- "value": "370881"
- },
- {
- "label": "邹城市",
- "position": [
- "116.96673",
- "35.405259"
- ],
- "value": "370883"
- }
- ]
- },
- {
- "label": "泰安市",
- "position": [
- "117.129063",
- "36.194968"
- ],
- "value": "370900",
- "children": [{
- "label": "泰山区",
- "position": [
- "117.129984",
- "36.189313"
- ],
- "value": "370902"
- },
- {
- "label": "岱岳区",
- "position": [
- "117.04353",
- "36.1841"
- ],
- "value": "370911"
- },
- {
- "label": "宁阳县",
- "position": [
- "116.799297",
- "35.76754"
- ],
- "value": "370921"
- },
- {
- "label": "东平县",
- "position": [
- "116.461052",
- "35.930467"
- ],
- "value": "370923"
- },
- {
- "label": "新泰市",
- "position": [
- "117.766092",
- "35.910387"
- ],
- "value": "370982"
- },
- {
- "label": "肥城市",
- "position": [
- "116.763703",
- "36.1856"
- ],
- "value": "370983"
- }
- ]
- },
- {
- "label": "威海市",
- "position": [
- "122.116394",
- "37.509691"
- ],
- "value": "371000",
- "children": [{
- "label": "环翠区",
- "position": [
- "122.116189",
- "37.510754"
- ],
- "value": "371002"
- },
- {
- "label": "文登区",
- "position": [
- "122.057139",
- "37.196211"
- ],
- "value": "371003"
- },
- {
- "label": "荣成市",
- "position": [
- "122.422896",
- "37.160134"
- ],
- "value": "371082"
- },
- {
- "label": "乳山市",
- "position": [
- "121.536346",
- "36.919622"
- ],
- "value": "371083"
- }
- ]
- },
- {
- "label": "日照市",
- "position": [
- "119.461208",
- "35.428588"
- ],
- "value": "371100",
- "children": [{
- "label": "东港区",
- "position": [
- "119.457703",
- "35.426152"
- ],
- "value": "371102"
- },
- {
- "label": "岚山区",
- "position": [
- "119.315844",
- "35.119794"
- ],
- "value": "371103"
- },
- {
- "label": "五莲县",
- "position": [
- "119.206745",
- "35.751936"
- ],
- "value": "371121"
- },
- {
- "label": "莒县",
- "position": [
- "118.832859",
- "35.588115"
- ],
- "value": "371122"
- }
- ]
- },
- {
- "label": "临沂市",
- "position": [
- "118.326443",
- "35.065282"
- ],
- "value": "371300",
- "children": [{
- "label": "兰山区",
- "position": [
- "118.327667",
- "35.061631"
- ],
- "value": "371302"
- },
- {
- "label": "罗庄区",
- "position": [
- "118.284795",
- "34.997204"
- ],
- "value": "371311"
- },
- {
- "label": "河东区",
- "position": [
- "118.398296",
- "35.085004"
- ],
- "value": "371312"
- },
- {
- "label": "沂南县",
- "position": [
- "118.455395",
- "35.547002"
- ],
- "value": "371321"
- },
- {
- "label": "郯城县",
- "position": [
- "118.342963",
- "34.614741"
- ],
- "value": "371322"
- },
- {
- "label": "沂水县",
- "position": [
- "118.634543",
- "35.787029"
- ],
- "value": "371323"
- },
- {
- "label": "兰陵县",
- "position": [
- "118.049968",
- "34.855573"
- ],
- "value": "371324"
- },
- {
- "label": "费县",
- "position": [
- "117.968869",
- "35.269174"
- ],
- "value": "371325"
- },
- {
- "label": "平邑县",
- "position": [
- "117.631884",
- "35.511519"
- ],
- "value": "371326"
- },
- {
- "label": "莒南县",
- "position": [
- "118.838322",
- "35.175911"
- ],
- "value": "371327"
- },
- {
- "label": "蒙阴县",
- "position": [
- "117.943271",
- "35.712435"
- ],
- "value": "371328"
- },
- {
- "label": "临沭县",
- "position": [
- "118.648379",
- "34.917062"
- ],
- "value": "371329"
- }
- ]
- },
- {
- "label": "德州市",
- "position": [
- "116.307428",
- "37.453968"
- ],
- "value": "371400",
- "children": [{
- "label": "德城区",
- "position": [
- "116.307076",
- "37.453923"
- ],
- "value": "371402"
- },
- {
- "label": "陵城区",
- "position": [
- "116.574929",
- "37.332848"
- ],
- "value": "371403"
- },
- {
- "label": "宁津县",
- "position": [
- "116.79372",
- "37.649619"
- ],
- "value": "371422"
- },
- {
- "label": "庆云县",
- "position": [
- "117.390507",
- "37.777724"
- ],
- "value": "371423"
- },
- {
- "label": "临邑县",
- "position": [
- "116.867028",
- "37.192044"
- ],
- "value": "371424"
- },
- {
- "label": "齐河县",
- "position": [
- "116.758394",
- "36.795497"
- ],
- "value": "371425"
- },
- {
- "label": "平原县",
- "position": [
- "116.433904",
- "37.164465"
- ],
- "value": "371426"
- },
- {
- "label": "夏津县",
- "position": [
- "116.003816",
- "36.950501"
- ],
- "value": "371427"
- },
- {
- "label": "武城县",
- "position": [
- "116.078627",
- "37.209527"
- ],
- "value": "371428"
- },
- {
- "label": "乐陵市",
- "position": [
- "117.216657",
- "37.729115"
- ],
- "value": "371481"
- },
- {
- "label": "禹城市",
- "position": [
- "116.642554",
- "36.934485"
- ],
- "value": "371482"
- }
- ]
- },
- {
- "label": "聊城市",
- "position": [
- "115.980367",
- "36.456013"
- ],
- "value": "371500",
- "children": [{
- "label": "东昌府区",
- "position": [
- "115.980023",
- "36.45606"
- ],
- "value": "371502"
- },
- {
- "label": "茌平区",
- "position": [
- "116.25335",
- "36.591934"
- ],
- "value": "371503"
- },
- {
- "label": "阳谷县",
- "position": [
- "115.784287",
- "36.113708"
- ],
- "value": "371521"
- },
- {
- "label": "莘县",
- "position": [
- "115.667291",
- "36.237597"
- ],
- "value": "371522"
- },
- {
- "label": "东阿县",
- "position": [
- "116.248855",
- "36.336004"
- ],
- "value": "371524"
- },
- {
- "label": "冠县",
- "position": [
- "115.444808",
- "36.483753"
- ],
- "value": "371525"
- },
- {
- "label": "高唐县",
- "position": [
- "116.229662",
- "36.859755"
- ],
- "value": "371526"
- },
- {
- "label": "临清市",
- "position": [
- "115.713462",
- "36.842598"
- ],
- "value": "371581"
- }
- ]
- },
- {
- "label": "滨州市",
- "position": [
- "118.016974",
- "37.383542"
- ],
- "value": "371600",
- "children": [{
- "label": "滨城区",
- "position": [
- "118.020149",
- "37.384842"
- ],
- "value": "371602"
- },
- {
- "label": "沾化区",
- "position": [
- "118.129902",
- "37.698456"
- ],
- "value": "371603"
- },
- {
- "label": "惠民县",
- "position": [
- "117.508941",
- "37.483876"
- ],
- "value": "371621"
- },
- {
- "label": "阳信县",
- "position": [
- "117.581326",
- "37.640492"
- ],
- "value": "371622"
- },
- {
- "label": "无棣县",
- "position": [
- "117.616325",
- "37.740848"
- ],
- "value": "371623"
- },
- {
- "label": "博兴县",
- "position": [
- "118.123096",
- "37.147002"
- ],
- "value": "371625"
- },
- {
- "label": "邹平市",
- "position": [
- "117.736807",
- "36.87803"
- ],
- "value": "371681"
- }
- ]
- },
- {
- "label": "菏泽市",
- "position": [
- "115.469381",
- "35.246531"
- ],
- "value": "371700",
- "children": [{
- "label": "牡丹区",
- "position": [
- "115.470946",
- "35.24311"
- ],
- "value": "371702"
- },
- {
- "label": "定陶区",
- "position": [
- "115.569601",
- "35.072701"
- ],
- "value": "371703"
- },
- {
- "label": "曹县",
- "position": [
- "115.549482",
- "34.823253"
- ],
- "value": "371721"
- },
- {
- "label": "单县",
- "position": [
- "116.08262",
- "34.790851"
- ],
- "value": "371722"
- },
- {
- "label": "成武县",
- "position": [
- "115.897349",
- "34.947366"
- ],
- "value": "371723"
- },
- {
- "label": "巨野县",
- "position": [
- "116.089341",
- "35.390999"
- ],
- "value": "371724"
- },
- {
- "label": "郓城县",
- "position": [
- "115.93885",
- "35.594773"
- ],
- "value": "371725"
- },
- {
- "label": "鄄城县",
- "position": [
- "115.51434",
- "35.560257"
- ],
- "value": "371726"
- },
- {
- "label": "东明县",
- "position": [
- "115.098412",
- "35.289637"
- ],
- "value": "371728"
- }
- ]
- }
- ]
- },
- {
- "label": "河南省",
- "position": [
- "113.665412",
- "34.757975"
- ],
- "value": "410000",
- "children": [{
- "label": "郑州市",
- "position": [
- "113.665412",
- "34.757975"
- ],
- "value": "410100",
- "children": [{
- "label": "中原区",
- "position": [
- "113.611576",
- "34.748286"
- ],
- "value": "410102"
- },
- {
- "label": "二七区",
- "position": [
- "113.645422",
- "34.730936"
- ],
- "value": "410103"
- },
- {
- "label": "管城回族区",
- "position": [
- "113.685313",
- "34.746453"
- ],
- "value": "410104"
- },
- {
- "label": "金水区",
- "position": [
- "113.686037",
- "34.775838"
- ],
- "value": "410105"
- },
- {
- "label": "上街区",
- "position": [
- "113.298282",
- "34.808689"
- ],
- "value": "410106"
- },
- {
- "label": "惠济区",
- "position": [
- "113.61836",
- "34.828591"
- ],
- "value": "410108"
- },
- {
- "label": "中牟县",
- "position": [
- "114.022521",
- "34.721976"
- ],
- "value": "410122"
- },
- {
- "label": "巩义市",
- "position": [
- "112.98283",
- "34.75218"
- ],
- "value": "410181"
- },
- {
- "label": "荥阳市",
- "position": [
- "113.391523",
- "34.789077"
- ],
- "value": "410182"
- },
- {
- "label": "新密市",
- "position": [
- "113.380616",
- "34.537846"
- ],
- "value": "410183"
- },
- {
- "label": "新郑市",
- "position": [
- "113.73967",
- "34.394219"
- ],
- "value": "410184"
- },
- {
- "label": "登封市",
- "position": [
- "113.037768",
- "34.459939"
- ],
- "value": "410185"
- }
- ]
- },
- {
- "label": "开封市",
- "position": [
- "114.341447",
- "34.797049"
- ],
- "value": "410200",
- "children": [{
- "label": "龙亭区",
- "position": [
- "114.353348",
- "34.799833"
- ],
- "value": "410202"
- },
- {
- "label": "顺河回族区",
- "position": [
- "114.364875",
- "34.800459"
- ],
- "value": "410203"
- },
- {
- "label": "鼓楼区",
- "position": [
- "114.3485",
- "34.792383"
- ],
- "value": "410204"
- },
- {
- "label": "禹王台区",
- "position": [
- "114.350246",
- "34.779727"
- ],
- "value": "410205"
- },
- {
- "label": "祥符区",
- "position": [
- "114.437622",
- "34.756476"
- ],
- "value": "410212"
- },
- {
- "label": "杞县",
- "position": [
- "114.770472",
- "34.554585"
- ],
- "value": "410221"
- },
- {
- "label": "通许县",
- "position": [
- "114.467734",
- "34.477302"
- ],
- "value": "410222"
- },
- {
- "label": "尉氏县",
- "position": [
- "114.193927",
- "34.412256"
- ],
- "value": "410223"
- },
- {
- "label": "兰考县",
- "position": [
- "114.820572",
- "34.829899"
- ],
- "value": "410225"
- }
- ]
- },
- {
- "label": "洛阳市",
- "position": [
- "112.434468",
- "34.663041"
- ],
- "value": "410300",
- "children": [{
- "label": "老城区",
- "position": [
- "112.477298",
- "34.682945"
- ],
- "value": "410302"
- },
- {
- "label": "西工区",
- "position": [
- "112.443232",
- "34.667847"
- ],
- "value": "410303"
- },
- {
- "label": "瀍河回族区",
- "position": [
- "112.491625",
- "34.684738"
- ],
- "value": "410304"
- },
- {
- "label": "涧西区",
- "position": [
- "112.399243",
- "34.654251"
- ],
- "value": "410305"
- },
- {
- "label": "吉利区",
- "position": [
- "112.584796",
- "34.899093"
- ],
- "value": "410306"
- },
- {
- "label": "洛龙区",
- "position": [
- "112.456634",
- "34.618557"
- ],
- "value": "410311"
- },
- {
- "label": "孟津县",
- "position": [
- "112.443892",
- "34.826485"
- ],
- "value": "410322"
- },
- {
- "label": "新安县",
- "position": [
- "112.141403",
- "34.728679"
- ],
- "value": "410323"
- },
- {
- "label": "栾川县",
- "position": [
- "111.618386",
- "33.783195"
- ],
- "value": "410324"
- },
- {
- "label": "嵩县",
- "position": [
- "112.087765",
- "34.131563"
- ],
- "value": "410325"
- },
- {
- "label": "汝阳县",
- "position": [
- "112.473789",
- "34.15323"
- ],
- "value": "410326"
- },
- {
- "label": "宜阳县",
- "position": [
- "112.179989",
- "34.516478"
- ],
- "value": "410327"
- },
- {
- "label": "洛宁县",
- "position": [
- "111.655399",
- "34.387179"
- ],
- "value": "410328"
- },
- {
- "label": "伊川县",
- "position": [
- "112.429384",
- "34.423416"
- ],
- "value": "410329"
- },
- {
- "label": "偃师市",
- "position": [
- "112.787739",
- "34.723042"
- ],
- "value": "410381"
- }
- ]
- },
- {
- "label": "平顶山市",
- "position": [
- "113.307718",
- "33.735241"
- ],
- "value": "410400",
- "children": [{
- "label": "新华区",
- "position": [
- "113.299061",
- "33.737579"
- ],
- "value": "410402"
- },
- {
- "label": "卫东区",
- "position": [
- "113.310327",
- "33.739285"
- ],
- "value": "410403"
- },
- {
- "label": "石龙区",
- "position": [
- "112.889885",
- "33.901538"
- ],
- "value": "410404"
- },
- {
- "label": "湛河区",
- "position": [
- "113.320873",
- "33.725681"
- ],
- "value": "410411"
- },
- {
- "label": "宝丰县",
- "position": [
- "113.066812",
- "33.866359"
- ],
- "value": "410421"
- },
- {
- "label": "叶县",
- "position": [
- "113.358298",
- "33.621252"
- ],
- "value": "410422"
- },
- {
- "label": "鲁山县",
- "position": [
- "112.906703",
- "33.740325"
- ],
- "value": "410423"
- },
- {
- "label": "郏县",
- "position": [
- "113.220451",
- "33.971993"
- ],
- "value": "410425"
- },
- {
- "label": "舞钢市",
- "position": [
- "113.52625",
- "33.302082"
- ],
- "value": "410481"
- },
- {
- "label": "汝州市",
- "position": [
- "112.845336",
- "34.167408"
- ],
- "value": "410482"
- }
- ]
- },
- {
- "label": "安阳市",
- "position": [
- "114.352482",
- "36.103442"
- ],
- "value": "410500",
- "children": [{
- "label": "文峰区",
- "position": [
- "114.352562",
- "36.098101"
- ],
- "value": "410502"
- },
- {
- "label": "北关区",
- "position": [
- "114.352646",
- "36.10978"
- ],
- "value": "410503"
- },
- {
- "label": "殷都区",
- "position": [
- "114.300098",
- "36.108974"
- ],
- "value": "410505"
- },
- {
- "label": "龙安区",
- "position": [
- "114.323522",
- "36.095568"
- ],
- "value": "410506"
- },
- {
- "label": "安阳县",
- "position": [
- "114.130207",
- "36.130585"
- ],
- "value": "410522"
- },
- {
- "label": "汤阴县",
- "position": [
- "114.362357",
- "35.922349"
- ],
- "value": "410523"
- },
- {
- "label": "滑县",
- "position": [
- "114.524",
- "35.574628"
- ],
- "value": "410526"
- },
- {
- "label": "内黄县",
- "position": [
- "114.904582",
- "35.953702"
- ],
- "value": "410527"
- },
- {
- "label": "林州市",
- "position": [
- "113.823767",
- "36.063403"
- ],
- "value": "410581"
- }
- ]
- },
- {
- "label": "鹤壁市",
- "position": [
- "114.295444",
- "35.748236"
- ],
- "value": "410600",
- "children": [{
- "label": "鹤山区",
- "position": [
- "114.166551",
- "35.936128"
- ],
- "value": "410602"
- },
- {
- "label": "山城区",
- "position": [
- "114.184202",
- "35.896058"
- ],
- "value": "410603"
- },
- {
- "label": "淇滨区",
- "position": [
- "114.293917",
- "35.748382"
- ],
- "value": "410611"
- },
- {
- "label": "浚县",
- "position": [
- "114.550162",
- "35.671282"
- ],
- "value": "410621"
- },
- {
- "label": "淇县",
- "position": [
- "114.200379",
- "35.609478"
- ],
- "value": "410622"
- }
- ]
- },
- {
- "label": "新乡市",
- "position": [
- "113.883991",
- "35.302616"
- ],
- "value": "410700",
- "children": [{
- "label": "红旗区",
- "position": [
- "113.878158",
- "35.302684"
- ],
- "value": "410702"
- },
- {
- "label": "卫滨区",
- "position": [
- "113.866065",
- "35.304905"
- ],
- "value": "410703"
- },
- {
- "label": "凤泉区",
- "position": [
- "113.906712",
- "35.379855"
- ],
- "value": "410704"
- },
- {
- "label": "牧野区",
- "position": [
- "113.89716",
- "35.312974"
- ],
- "value": "410711"
- },
- {
- "label": "新乡县",
- "position": [
- "113.806186",
- "35.190021"
- ],
- "value": "410721"
- },
- {
- "label": "获嘉县",
- "position": [
- "113.657249",
- "35.261685"
- ],
- "value": "410724"
- },
- {
- "label": "原阳县",
- "position": [
- "113.965966",
- "35.054001"
- ],
- "value": "410725"
- },
- {
- "label": "延津县",
- "position": [
- "114.200982",
- "35.149515"
- ],
- "value": "410726"
- },
- {
- "label": "封丘县",
- "position": [
- "114.423405",
- "35.04057"
- ],
- "value": "410727"
- },
- {
- "label": "卫辉市",
- "position": [
- "114.065855",
- "35.404295"
- ],
- "value": "410781"
- },
- {
- "label": "辉县市",
- "position": [
- "113.802518",
- "35.461318"
- ],
- "value": "410782"
- },
- {
- "label": "长垣市",
- "position": [
- "114.673807",
- "35.19615"
- ],
- "value": "410783"
- }
- ]
- },
- {
- "label": "焦作市",
- "position": [
- "113.238266",
- "35.23904"
- ],
- "value": "410800",
- "children": [{
- "label": "解放区",
- "position": [
- "113.226126",
- "35.241353"
- ],
- "value": "410802"
- },
- {
- "label": "中站区",
- "position": [
- "113.175485",
- "35.236145"
- ],
- "value": "410803"
- },
- {
- "label": "马村区",
- "position": [
- "113.321703",
- "35.265453"
- ],
- "value": "410804"
- },
- {
- "label": "山阳区",
- "position": [
- "113.26766",
- "35.21476"
- ],
- "value": "410811"
- },
- {
- "label": "修武县",
- "position": [
- "113.447465",
- "35.229923"
- ],
- "value": "410821"
- },
- {
- "label": "博爱县",
- "position": [
- "113.069313",
- "35.170351"
- ],
- "value": "410822"
- },
- {
- "label": "武陟县",
- "position": [
- "113.408334",
- "35.09885"
- ],
- "value": "410823"
- },
- {
- "label": "温县",
- "position": [
- "113.079118",
- "34.941233"
- ],
- "value": "410825"
- },
- {
- "label": "沁阳市",
- "position": [
- "112.934538",
- "35.08901"
- ],
- "value": "410882"
- },
- {
- "label": "孟州市",
- "position": [
- "112.78708",
- "34.90963"
- ],
- "value": "410883"
- }
- ]
- },
- {
- "label": "濮阳市",
- "position": [
- "115.041299",
- "35.768234"
- ],
- "value": "410900",
- "children": [{
- "label": "华龙区",
- "position": [
- "115.03184",
- "35.760473"
- ],
- "value": "410902"
- },
- {
- "label": "清丰县",
- "position": [
- "115.107287",
- "35.902413"
- ],
- "value": "410922"
- },
- {
- "label": "南乐县",
- "position": [
- "115.204336",
- "36.075204"
- ],
- "value": "410923"
- },
- {
- "label": "范县",
- "position": [
- "115.504212",
- "35.851977"
- ],
- "value": "410926"
- },
- {
- "label": "台前县",
- "position": [
- "115.855681",
- "35.996474"
- ],
- "value": "410927"
- },
- {
- "label": "濮阳县",
- "position": [
- "115.023844",
- "35.710349"
- ],
- "value": "410928"
- }
- ]
- },
- {
- "label": "许昌市",
- "position": [
- "113.826063",
- "34.022956"
- ],
- "value": "411000",
- "children": [{
- "label": "魏都区",
- "position": [
- "113.828307",
- "34.02711"
- ],
- "value": "411002"
- },
- {
- "label": "建安区",
- "position": [
- "113.842898",
- "34.005018"
- ],
- "value": "411003"
- },
- {
- "label": "鄢陵县",
- "position": [
- "114.188507",
- "34.100502"
- ],
- "value": "411024"
- },
- {
- "label": "襄城县",
- "position": [
- "113.493166",
- "33.855943"
- ],
- "value": "411025"
- },
- {
- "label": "禹州市",
- "position": [
- "113.471316",
- "34.154403"
- ],
- "value": "411081"
- },
- {
- "label": "长葛市",
- "position": [
- "113.768912",
- "34.219257"
- ],
- "value": "411082"
- }
- ]
- },
- {
- "label": "漯河市",
- "position": [
- "114.026405",
- "33.575855"
- ],
- "value": "411100",
- "children": [{
- "label": "源汇区",
- "position": [
- "114.017948",
- "33.565441"
- ],
- "value": "411102"
- },
- {
- "label": "郾城区",
- "position": [
- "114.016813",
- "33.588897"
- ],
- "value": "411103"
- },
- {
- "label": "召陵区",
- "position": [
- "114.051686",
- "33.567555"
- ],
- "value": "411104"
- },
- {
- "label": "舞阳县",
- "position": [
- "113.610565",
- "33.436278"
- ],
- "value": "411121"
- },
- {
- "label": "临颍县",
- "position": [
- "113.938891",
- "33.80609"
- ],
- "value": "411122"
- }
- ]
- },
- {
- "label": "三门峡市",
- "position": [
- "111.194099",
- "34.777338"
- ],
- "value": "411200",
- "children": [{
- "label": "湖滨区",
- "position": [
- "111.19487",
- "34.77812"
- ],
- "value": "411202"
- },
- {
- "label": "陕州区",
- "position": [
- "111.103851",
- "34.720244"
- ],
- "value": "411203"
- },
- {
- "label": "渑池县",
- "position": [
- "111.762992",
- "34.763487"
- ],
- "value": "411221"
- },
- {
- "label": "卢氏县",
- "position": [
- "111.052649",
- "34.053995"
- ],
- "value": "411224"
- },
- {
- "label": "义马市",
- "position": [
- "111.869417",
- "34.746868"
- ],
- "value": "411281"
- },
- {
- "label": "灵宝市",
- "position": [
- "110.88577",
- "34.521264"
- ],
- "value": "411282"
- }
- ]
- },
- {
- "label": "南阳市",
- "position": [
- "112.540918",
- "32.999082"
- ],
- "value": "411300",
- "children": [{
- "label": "宛城区",
- "position": [
- "112.544591",
- "32.994857"
- ],
- "value": "411302"
- },
- {
- "label": "卧龙区",
- "position": [
- "112.528789",
- "32.989877"
- ],
- "value": "411303"
- },
- {
- "label": "南召县",
- "position": [
- "112.435583",
- "33.488617"
- ],
- "value": "411321"
- },
- {
- "label": "方城县",
- "position": [
- "113.010933",
- "33.255138"
- ],
- "value": "411322"
- },
- {
- "label": "西峡县",
- "position": [
- "111.485772",
- "33.302981"
- ],
- "value": "411323"
- },
- {
- "label": "镇平县",
- "position": [
- "112.232722",
- "33.036651"
- ],
- "value": "411324"
- },
- {
- "label": "内乡县",
- "position": [
- "111.843801",
- "33.046358"
- ],
- "value": "411325"
- },
- {
- "label": "淅川县",
- "position": [
- "111.489026",
- "33.136106"
- ],
- "value": "411326"
- },
- {
- "label": "社旗县",
- "position": [
- "112.938279",
- "33.056126"
- ],
- "value": "411327"
- },
- {
- "label": "唐河县",
- "position": [
- "112.838492",
- "32.687892"
- ],
- "value": "411328"
- },
- {
- "label": "新野县",
- "position": [
- "112.365624",
- "32.524006"
- ],
- "value": "411329"
- },
- {
- "label": "桐柏县",
- "position": [
- "113.406059",
- "32.367153"
- ],
- "value": "411330"
- },
- {
- "label": "邓州市",
- "position": [
- "112.092716",
- "32.681642"
- ],
- "value": "411381"
- }
- ]
- },
- {
- "label": "商丘市",
- "position": [
- "115.650497",
- "34.437054"
- ],
- "value": "411400",
- "children": [{
- "label": "梁园区",
- "position": [
- "115.65459",
- "34.436553"
- ],
- "value": "411402"
- },
- {
- "label": "睢阳区",
- "position": [
- "115.653813",
- "34.390536"
- ],
- "value": "411403"
- },
- {
- "label": "民权县",
- "position": [
- "115.148146",
- "34.648455"
- ],
- "value": "411421"
- },
- {
- "label": "睢县",
- "position": [
- "115.070109",
- "34.428433"
- ],
- "value": "411422"
- },
- {
- "label": "宁陵县",
- "position": [
- "115.320055",
- "34.449299"
- ],
- "value": "411423"
- },
- {
- "label": "柘城县",
- "position": [
- "115.307433",
- "34.075277"
- ],
- "value": "411424"
- },
- {
- "label": "虞城县",
- "position": [
- "115.863811",
- "34.399634"
- ],
- "value": "411425"
- },
- {
- "label": "夏邑县",
- "position": [
- "116.13989",
- "34.240894"
- ],
- "value": "411426"
- },
- {
- "label": "永城市",
- "position": [
- "116.449672",
- "33.931318"
- ],
- "value": "411481"
- }
- ]
- },
- {
- "label": "信阳市",
- "position": [
- "114.075031",
- "32.123274"
- ],
- "value": "411500",
- "children": [{
- "label": "浉河区",
- "position": [
- "114.075031",
- "32.123274"
- ],
- "value": "411502"
- },
- {
- "label": "平桥区",
- "position": [
- "114.126027",
- "32.098395"
- ],
- "value": "411503"
- },
- {
- "label": "罗山县",
- "position": [
- "114.533414",
- "32.203206"
- ],
- "value": "411521"
- },
- {
- "label": "光山县",
- "position": [
- "114.903577",
- "32.010398"
- ],
- "value": "411522"
- },
- {
- "label": "新县",
- "position": [
- "114.87705",
- "31.63515"
- ],
- "value": "411523"
- },
- {
- "label": "商城县",
- "position": [
- "115.406297",
- "31.799982"
- ],
- "value": "411524"
- },
- {
- "label": "固始县",
- "position": [
- "115.667328",
- "32.183074"
- ],
- "value": "411525"
- },
- {
- "label": "潢川县",
- "position": [
- "115.050123",
- "32.134024"
- ],
- "value": "411526"
- },
- {
- "label": "淮滨县",
- "position": [
- "115.415451",
- "32.452639"
- ],
- "value": "411527"
- },
- {
- "label": "息县",
- "position": [
- "114.740713",
- "32.344744"
- ],
- "value": "411528"
- }
- ]
- },
- {
- "label": "周口市",
- "position": [
- "114.649653",
- "33.620357"
- ],
- "value": "411600",
- "children": [{
- "label": "川汇区",
- "position": [
- "114.652136",
- "33.614836"
- ],
- "value": "411602"
- },
- {
- "label": "淮阳区",
- "position": [
- "114.870166",
- "33.732547"
- ],
- "value": "411603"
- },
- {
- "label": "扶沟县",
- "position": [
- "114.392008",
- "34.054061"
- ],
- "value": "411621"
- },
- {
- "label": "西华县",
- "position": [
- "114.530067",
- "33.784378"
- ],
- "value": "411622"
- },
- {
- "label": "商水县",
- "position": [
- "114.60927",
- "33.543845"
- ],
- "value": "411623"
- },
- {
- "label": "沈丘县",
- "position": [
- "115.078375",
- "33.395514"
- ],
- "value": "411624"
- },
- {
- "label": "郸城县",
- "position": [
- "115.189",
- "33.643852"
- ],
- "value": "411625"
- },
- {
- "label": "太康县",
- "position": [
- "114.853834",
- "34.065312"
- ],
- "value": "411627"
- },
- {
- "label": "鹿邑县",
- "position": [
- "115.486386",
- "33.861067"
- ],
- "value": "411628"
- },
- {
- "label": "项城市",
- "position": [
- "114.899521",
- "33.443085"
- ],
- "value": "411681"
- }
- ]
- },
- {
- "label": "驻马店市",
- "position": [
- "114.024736",
- "32.980169"
- ],
- "value": "411700",
- "children": [{
- "label": "驿城区",
- "position": [
- "114.029149",
- "32.977559"
- ],
- "value": "411702"
- },
- {
- "label": "西平县",
- "position": [
- "114.026864",
- "33.382315"
- ],
- "value": "411721"
- },
- {
- "label": "上蔡县",
- "position": [
- "114.266892",
- "33.264719"
- ],
- "value": "411722"
- },
- {
- "label": "平舆县",
- "position": [
- "114.637105",
- "32.955626"
- ],
- "value": "411723"
- },
- {
- "label": "正阳县",
- "position": [
- "114.38948",
- "32.601826"
- ],
- "value": "411724"
- },
- {
- "label": "确山县",
- "position": [
- "114.026679",
- "32.801538"
- ],
- "value": "411725"
- },
- {
- "label": "泌阳县",
- "position": [
- "113.32605",
- "32.725129"
- ],
- "value": "411726"
- },
- {
- "label": "汝南县",
- "position": [
- "114.359495",
- "33.004535"
- ],
- "value": "411727"
- },
- {
- "label": "遂平县",
- "position": [
- "114.00371",
- "33.14698"
- ],
- "value": "411728"
- },
- {
- "label": "新蔡县",
- "position": [
- "114.975246",
- "32.749948"
- ],
- "value": "411729"
- }
- ]
- },
- {
- "label": "济源市",
- "position": [
- "112.590047",
- "35.090378"
- ],
- "value": "419001",
- "children": [{
- "label": "济源市坡头镇",
- "position": [
- "112.538",
- "34.9308"
- ],
- "value": "419001"
- },
- {
- "label": "济源市梨林镇",
- "position": [
- "112.753",
- "35.0882"
- ],
- "value": "419001"
- },
- {
- "label": "济源市思礼镇",
- "position": [
- "112.388",
- "35.2103"
- ],
- "value": "419001"
- },
- {
- "label": "济源市大峪镇",
- "position": [
- "112.338",
- "34.9398"
- ],
- "value": "419001"
- },
- {
- "label": "济源市五龙口镇",
- "position": [
- "112.761",
- "35.1956"
- ],
- "value": "419001"
- },
- {
- "label": "济源市王屋镇",
- "position": [
- "112.169",
- "35.1244"
- ],
- "value": "419001"
- },
- {
- "label": "济源市轵城镇",
- "position": [
- "112.622",
- "35.0625"
- ],
- "value": "419001"
- },
- {
- "label": "济源市玉泉街道",
- "position": [
- "112.624",
- "35.1189"
- ],
- "value": "419001"
- },
- {
- "label": "济源市济水街道",
- "position": [
- "112.595",
- "35.0944"
- ],
- "value": "419001"
- },
- {
- "label": "济源市沁园街道",
- "position": [
- "112.593",
- "35.0822"
- ],
- "value": "419001"
- },
- {
- "label": "济源市下冶镇",
- "position": [
- "112.212",
- "35.1131"
- ],
- "value": "419001"
- },
- {
- "label": "济源市天坛街道",
- "position": [
- "112.567",
- "35.1229"
- ],
- "value": "419001"
- },
- {
- "label": "济源市克井镇",
- "position": [
- "112.635",
- "35.255"
- ],
- "value": "419001"
- },
- {
- "label": "济源市邵原镇",
- "position": [
- "112.113",
- "35.2704"
- ],
- "value": "419001"
- },
- {
- "label": "济源市北海街道",
- "position": [
- "112.569",
- "35.1116"
- ],
- "value": "419001"
- },
- {
- "label": "济源市承留镇",
- "position": [
- "112.509",
- "35.0243"
- ],
- "value": "419001"
- }
- ]
- }
- ]
- },
- {
- "label": "湖北省",
- "position": [
- "114.298572",
- "30.584355"
- ],
- "value": "420000",
- "children": [{
- "label": "武汉市",
- "position": [
- "114.298572",
- "30.584355"
- ],
- "value": "420100",
- "children": [{
- "label": "江岸区",
- "position": [
- "114.30304",
- "30.594911"
- ],
- "value": "420102"
- },
- {
- "label": "江汉区",
- "position": [
- "114.283109",
- "30.578771"
- ],
- "value": "420103"
- },
- {
- "label": "硚口区",
- "position": [
- "114.264568",
- "30.57061"
- ],
- "value": "420104"
- },
- {
- "label": "汉阳区",
- "position": [
- "114.265807",
- "30.549326"
- ],
- "value": "420105"
- },
- {
- "label": "武昌区",
- "position": [
- "114.307344",
- "30.546536"
- ],
- "value": "420106"
- },
- {
- "label": "青山区",
- "position": [
- "114.39707",
- "30.634215"
- ],
- "value": "420107"
- },
- {
- "label": "洪山区",
- "position": [
- "114.400718",
- "30.504259"
- ],
- "value": "420111"
- },
- {
- "label": "东西湖区",
- "position": [
- "114.142483",
- "30.622467"
- ],
- "value": "420112"
- },
- {
- "label": "汉南区",
- "position": [
- "114.08124",
- "30.309637"
- ],
- "value": "420113"
- },
- {
- "label": "蔡甸区",
- "position": [
- "114.029341",
- "30.582186"
- ],
- "value": "420114"
- },
- {
- "label": "江夏区",
- "position": [
- "114.313961",
- "30.349045"
- ],
- "value": "420115"
- },
- {
- "label": "黄陂区",
- "position": [
- "114.374025",
- "30.874155"
- ],
- "value": "420116"
- },
- {
- "label": "新洲区",
- "position": [
- "114.802108",
- "30.842149"
- ],
- "value": "420117"
- }
- ]
- },
- {
- "label": "黄石市",
- "position": [
- "115.077048",
- "30.220074"
- ],
- "value": "420200",
- "children": [{
- "label": "黄石港区",
- "position": [
- "115.090164",
- "30.212086"
- ],
- "value": "420202"
- },
- {
- "label": "西塞山区",
- "position": [
- "115.093354",
- "30.205365"
- ],
- "value": "420203"
- },
- {
- "label": "下陆区",
- "position": [
- "114.975755",
- "30.177845"
- ],
- "value": "420204"
- },
- {
- "label": "铁山区",
- "position": [
- "114.901366",
- "30.20601"
- ],
- "value": "420205"
- },
- {
- "label": "阳新县",
- "position": [
- "115.212883",
- "29.841572"
- ],
- "value": "420222"
- },
- {
- "label": "大冶市",
- "position": [
- "114.974842",
- "30.098804"
- ],
- "value": "420281"
- }
- ]
- },
- {
- "label": "十堰市",
- "position": [
- "110.787916",
- "32.646907"
- ],
- "value": "420300",
- "children": [{
- "label": "茅箭区",
- "position": [
- "110.78621",
- "32.644463"
- ],
- "value": "420302"
- },
- {
- "label": "张湾区",
- "position": [
- "110.772365",
- "32.652516"
- ],
- "value": "420303"
- },
- {
- "label": "郧阳区",
- "position": [
- "110.812099",
- "32.838267"
- ],
- "value": "420304"
- },
- {
- "label": "郧西县",
- "position": [
- "110.426472",
- "32.991457"
- ],
- "value": "420322"
- },
- {
- "label": "竹山县",
- "position": [
- "110.2296",
- "32.22586"
- ],
- "value": "420323"
- },
- {
- "label": "竹溪县",
- "position": [
- "109.717196",
- "32.315342"
- ],
- "value": "420324"
- },
- {
- "label": "房县",
- "position": [
- "110.741966",
- "32.055002"
- ],
- "value": "420325"
- },
- {
- "label": "丹江口市",
- "position": [
- "111.513793",
- "32.538839"
- ],
- "value": "420381"
- }
- ]
- },
- {
- "label": "宜昌市",
- "position": [
- "111.290843",
- "30.702636"
- ],
- "value": "420500",
- "children": [{
- "label": "西陵区",
- "position": [
- "111.295468",
- "30.702476"
- ],
- "value": "420502"
- },
- {
- "label": "伍家岗区",
- "position": [
- "111.307215",
- "30.679053"
- ],
- "value": "420503"
- },
- {
- "label": "点军区",
- "position": [
- "111.268163",
- "30.692322"
- ],
- "value": "420504"
- },
- {
- "label": "猇亭区",
- "position": [
- "111.427642",
- "30.530744"
- ],
- "value": "420505"
- },
- {
- "label": "夷陵区",
- "position": [
- "111.326747",
- "30.770199"
- ],
- "value": "420506"
- },
- {
- "label": "远安县",
- "position": [
- "111.64331",
- "31.059626"
- ],
- "value": "420525"
- },
- {
- "label": "兴山县",
- "position": [
- "110.754499",
- "31.34795"
- ],
- "value": "420526"
- },
- {
- "label": "秭归县",
- "position": [
- "110.976785",
- "30.823908"
- ],
- "value": "420527"
- },
- {
- "label": "长阳土家族自治县",
- "position": [
- "111.198475",
- "30.466534"
- ],
- "value": "420528"
- },
- {
- "label": "五峰土家族自治县",
- "position": [
- "110.674938",
- "30.199252"
- ],
- "value": "420529"
- },
- {
- "label": "宜都市",
- "position": [
- "111.454367",
- "30.387234"
- ],
- "value": "420581"
- },
- {
- "label": "当阳市",
- "position": [
- "111.793419",
- "30.824492"
- ],
- "value": "420582"
- },
- {
- "label": "枝江市",
- "position": [
- "111.751799",
- "30.425364"
- ],
- "value": "420583"
- }
- ]
- },
- {
- "label": "襄阳市",
- "position": [
- "112.144146",
- "32.042426"
- ],
- "value": "420600",
- "children": [{
- "label": "襄城区",
- "position": [
- "112.150327",
- "32.015088"
- ],
- "value": "420602"
- },
- {
- "label": "樊城区",
- "position": [
- "112.13957",
- "32.058589"
- ],
- "value": "420606"
- },
- {
- "label": "襄州区",
- "position": [
- "112.197378",
- "32.085517"
- ],
- "value": "420607"
- },
- {
- "label": "南漳县",
- "position": [
- "111.844424",
- "31.77692"
- ],
- "value": "420624"
- },
- {
- "label": "谷城县",
- "position": [
- "111.640147",
- "32.262676"
- ],
- "value": "420625"
- },
- {
- "label": "保康县",
- "position": [
- "111.262235",
- "31.873507"
- ],
- "value": "420626"
- },
- {
- "label": "老河口市",
- "position": [
- "111.675732",
- "32.385438"
- ],
- "value": "420682"
- },
- {
- "label": "枣阳市",
- "position": [
- "112.765268",
- "32.123083"
- ],
- "value": "420683"
- },
- {
- "label": "宜城市",
- "position": [
- "112.261441",
- "31.709203"
- ],
- "value": "420684"
- }
- ]
- },
- {
- "label": "鄂州市",
- "position": [
- "114.890593",
- "30.396536"
- ],
- "value": "420700",
- "children": [{
- "label": "梁子湖区",
- "position": [
- "114.681967",
- "30.098191"
- ],
- "value": "420702"
- },
- {
- "label": "华容区",
- "position": [
- "114.74148",
- "30.534468"
- ],
- "value": "420703"
- },
- {
- "label": "鄂城区",
- "position": [
- "114.890012",
- "30.39669"
- ],
- "value": "420704"
- }
- ]
- },
- {
- "label": "荆门市",
- "position": [
- "112.204251",
- "31.03542"
- ],
- "value": "420800",
- "children": [{
- "label": "东宝区",
- "position": [
- "112.204804",
- "31.033461"
- ],
- "value": "420802"
- },
- {
- "label": "掇刀区",
- "position": [
- "112.198413",
- "30.980798"
- ],
- "value": "420804"
- },
- {
- "label": "沙洋县",
- "position": [
- "112.595218",
- "30.70359"
- ],
- "value": "420822"
- },
- {
- "label": "钟祥市",
- "position": [
- "112.587267",
- "31.165573"
- ],
- "value": "420881"
- },
- {
- "label": "京山市",
- "position": [
- "113.114595",
- "31.022457"
- ],
- "value": "420882"
- }
- ]
- },
- {
- "label": "孝感市",
- "position": [
- "113.926655",
- "30.926423"
- ],
- "value": "420900",
- "children": [{
- "label": "孝南区",
- "position": [
- "113.925849",
- "30.925966"
- ],
- "value": "420902"
- },
- {
- "label": "孝昌县",
- "position": [
- "113.988964",
- "31.251618"
- ],
- "value": "420921"
- },
- {
- "label": "大悟县",
- "position": [
- "114.126249",
- "31.565483"
- ],
- "value": "420922"
- },
- {
- "label": "云梦县",
- "position": [
- "113.750616",
- "31.021691"
- ],
- "value": "420923"
- },
- {
- "label": "应城市",
- "position": [
- "113.573842",
- "30.939038"
- ],
- "value": "420981"
- },
- {
- "label": "安陆市",
- "position": [
- "113.690401",
- "31.26174"
- ],
- "value": "420982"
- },
- {
- "label": "汉川市",
- "position": [
- "113.835301",
- "30.652165"
- ],
- "value": "420984"
- }
- ]
- },
- {
- "label": "荆州市",
- "position": [
- "112.23813",
- "30.326857"
- ],
- "value": "421000",
- "children": [{
- "label": "沙市区",
- "position": [
- "112.257433",
- "30.315895"
- ],
- "value": "421002"
- },
- {
- "label": "荆州区",
- "position": [
- "112.195354",
- "30.350674"
- ],
- "value": "421003"
- },
- {
- "label": "公安县",
- "position": [
- "112.230179",
- "30.059065"
- ],
- "value": "421022"
- },
- {
- "label": "监利市",
- "position": [
- "112.904344",
- "29.820079"
- ],
- "value": "421023"
- },
- {
- "label": "江陵县",
- "position": [
- "112.41735",
- "30.033919"
- ],
- "value": "421024"
- },
- {
- "label": "石首市",
- "position": [
- "112.40887",
- "29.716437"
- ],
- "value": "421081"
- },
- {
- "label": "洪湖市",
- "position": [
- "113.470304",
- "29.81297"
- ],
- "value": "421083"
- },
- {
- "label": "松滋市",
- "position": [
- "111.77818",
- "30.176037"
- ],
- "value": "421087"
- }
- ]
- },
- {
- "label": "黄冈市",
- "position": [
- "114.879365",
- "30.447711"
- ],
- "value": "421100",
- "children": [{
- "label": "黄州区",
- "position": [
- "114.878934",
- "30.447435"
- ],
- "value": "421102"
- },
- {
- "label": "团风县",
- "position": [
- "114.872029",
- "30.63569"
- ],
- "value": "421121"
- },
- {
- "label": "红安县",
- "position": [
- "114.615095",
- "31.284777"
- ],
- "value": "421122"
- },
- {
- "label": "罗田县",
- "position": [
- "115.398984",
- "30.781679"
- ],
- "value": "421123"
- },
- {
- "label": "英山县",
- "position": [
- "115.67753",
- "30.735794"
- ],
- "value": "421124"
- },
- {
- "label": "浠水县",
- "position": [
- "115.26344",
- "30.454837"
- ],
- "value": "421125"
- },
- {
- "label": "蕲春县",
- "position": [
- "115.433964",
- "30.234927"
- ],
- "value": "421126"
- },
- {
- "label": "黄梅县",
- "position": [
- "115.942548",
- "30.075113"
- ],
- "value": "421127"
- },
- {
- "label": "麻城市",
- "position": [
- "115.02541",
- "31.177906"
- ],
- "value": "421181"
- },
- {
- "label": "武穴市",
- "position": [
- "115.56242",
- "29.849342"
- ],
- "value": "421182"
- }
- ]
- },
- {
- "label": "咸宁市",
- "position": [
- "114.328963",
- "29.832798"
- ],
- "value": "421200",
- "children": [{
- "label": "咸安区",
- "position": [
- "114.333894",
- "29.824716"
- ],
- "value": "421202"
- },
- {
- "label": "嘉鱼县",
- "position": [
- "113.921547",
- "29.973363"
- ],
- "value": "421221"
- },
- {
- "label": "通城县",
- "position": [
- "113.814131",
- "29.246076"
- ],
- "value": "421222"
- },
- {
- "label": "崇阳县",
- "position": [
- "114.049958",
- "29.54101"
- ],
- "value": "421223"
- },
- {
- "label": "通山县",
- "position": [
- "114.493163",
- "29.604455"
- ],
- "value": "421224"
- },
- {
- "label": "赤壁市",
- "position": [
- "113.88366",
- "29.716879"
- ],
- "value": "421281"
- }
- ]
- },
- {
- "label": "随州市",
- "position": [
- "113.37377",
- "31.717497"
- ],
- "value": "421300",
- "children": [{
- "label": "曾都区",
- "position": [
- "113.374519",
- "31.717521"
- ],
- "value": "421303"
- },
- {
- "label": "随县",
- "position": [
- "113.301384",
- "31.854246"
- ],
- "value": "421321"
- },
- {
- "label": "广水市",
- "position": [
- "113.826601",
- "31.617731"
- ],
- "value": "421381"
- }
- ]
- },
- {
- "label": "恩施土家族苗族自治州",
- "position": [
- "109.48699",
- "30.283114"
- ],
- "value": "422800",
- "children": [{
- "label": "恩施市",
- "position": [
- "109.486761",
- "30.282406"
- ],
- "value": "422801"
- },
- {
- "label": "利川市",
- "position": [
- "108.943491",
- "30.294247"
- ],
- "value": "422802"
- },
- {
- "label": "建始县",
- "position": [
- "109.723822",
- "30.601632"
- ],
- "value": "422822"
- },
- {
- "label": "巴东县",
- "position": [
- "110.336665",
- "31.041403"
- ],
- "value": "422823"
- },
- {
- "label": "宣恩县",
- "position": [
- "109.482819",
- "29.98867"
- ],
- "value": "422825"
- },
- {
- "label": "咸丰县",
- "position": [
- "109.15041",
- "29.678967"
- ],
- "value": "422826"
- },
- {
- "label": "来凤县",
- "position": [
- "109.408328",
- "29.506945"
- ],
- "value": "422827"
- },
- {
- "label": "鹤峰县",
- "position": [
- "110.033699",
- "29.887298"
- ],
- "value": "422828"
- }
- ]
- },
- {
- "label": "仙桃市",
- "position": [
- "113.453974",
- "30.364953"
- ],
- "value": "429004",
- "children": [{
- "label": "畜禽良种场",
- "position": [
- "113.751",
- "30.1779"
- ],
- "value": "429004"
- },
- {
- "label": "工业园区",
- "position": [
- "113.413",
- "30.3233"
- ],
- "value": "429004"
- },
- {
- "label": "沙湖镇",
- "position": [
- "113.6",
- "30.1698"
- ],
- "value": "429004"
- },
- {
- "label": "豆河镇",
- "position": [
- "113",
- "30.37"
- ],
- "value": "429004"
- },
- {
- "label": "通海口镇",
- "position": [
- "113.206",
- "30.2722"
- ],
- "value": "429004"
- },
- {
- "label": "胡场镇",
- "position": [
- "113.29",
- "30.4278"
- ],
- "value": "429004"
- },
- {
- "label": "长倘口镇",
- "position": [
- "113.598",
- "30.3512"
- ],
- "value": "429004"
- },
- {
- "label": "五湖渔场",
- "position": [
- "113.783",
- "30.161"
- ],
- "value": "429004"
- },
- {
- "label": "干河街道",
- "position": [
- "113.451",
- "30.3772"
- ],
- "value": "429004"
- },
- {
- "label": "杨林尾镇",
- "position": [
- "113.561",
- "30.2014"
- ],
- "value": "429004"
- },
- {
- "label": "西流河镇",
- "position": [
- "113.761",
- "30.297"
- ],
- "value": "429004"
- },
- {
- "label": "赵西垸林场",
- "position": [
- "113.027",
- "30.285"
- ],
- "value": "429004"
- },
- {
- "label": "彭场镇",
- "position": [
- "113.446",
- "30.2518"
- ],
- "value": "429004"
- },
- {
- "label": "九合垸原种场",
- "position": [
- "113.006",
- "30.2473"
- ],
- "value": "429004"
- },
- {
- "label": "沔城回族镇",
- "position": [
- "113.201",
- "30.1921"
- ],
- "value": "429004"
- },
- {
- "label": "龙华山街道",
- "position": [
- "113.46",
- "30.3649"
- ],
- "value": "429004"
- },
- {
- "label": "沙湖原种场",
- "position": [
- "113.643",
- "30.1482"
- ],
- "value": "429004"
- },
- {
- "label": "陈场镇",
- "position": [
- "113.111",
- "30.2879"
- ],
- "value": "429004"
- },
- {
- "label": "郑场镇",
- "position": [
- "112.979",
- "30.4707"
- ],
- "value": "429004"
- },
- {
- "label": "排湖风景区",
- "position": [
- "113.223",
- "30.2987"
- ],
- "value": "429004"
- },
- {
- "label": "郭河镇",
- "position": [
- "113.304",
- "30.3027"
- ],
- "value": "429004"
- },
- {
- "label": "沙嘴街道",
- "position": [
- "113.441",
- "30.3596"
- ],
- "value": "429004"
- },
- {
- "label": "毛嘴镇",
- "position": [
- "113.045",
- "30.4188"
- ],
- "value": "429004"
- },
- {
- "label": "张沟镇",
- "position": [
- "113.438",
- "30.2968"
- ],
- "value": "429004"
- },
- {
- "label": "三伏潭镇",
- "position": [
- "113.207",
- "30.3395"
- ],
- "value": "429004"
- }
- ]
- },
- {
- "label": "潜江市",
- "position": [
- "112.896866",
- "30.421215"
- ],
- "value": "429005",
- "children": [{
- "label": "积玉口镇",
- "position": [
- "112.721",
- "30.4185"
- ],
- "value": "429005"
- },
- {
- "label": "广华街道",
- "position": [
- "112.666",
- "30.4633"
- ],
- "value": "429005"
- },
- {
- "label": "泰丰街道",
- "position": [
- "112.981",
- "30.4167"
- ],
- "value": "429005"
- },
- {
- "label": "周矶管理区",
- "position": [
- "112.826",
- "30.4567"
- ],
- "value": "429005"
- },
- {
- "label": "潜江经济开发区",
- "position": [
- "112.883",
- "30.4825"
- ],
- "value": "429005"
- },
- {
- "label": "高场街道",
- "position": [
- "112.775",
- "30.4076"
- ],
- "value": "429005"
- },
- {
- "label": "周矶街道",
- "position": [
- "112.818",
- "30.4576"
- ],
- "value": "429005"
- },
- {
- "label": "总口管理区",
- "position": [
- "112.89",
- "30.2581"
- ],
- "value": "429005"
- },
- {
- "label": "运粮湖管理区",
- "position": [
- "112.582",
- "30.252"
- ],
- "value": "429005"
- },
- {
- "label": "王场镇",
- "position": [
- "112.819",
- "30.4906"
- ],
- "value": "429005"
- },
- {
- "label": "竹根滩镇",
- "position": [
- "112.979",
- "30.4716"
- ],
- "value": "429005"
- },
- {
- "label": "园林街道",
- "position": [
- "112.91",
- "30.377"
- ],
- "value": "429005"
- },
- {
- "label": "白鹭湖管理区",
- "position": [
- "112.716",
- "30.1788"
- ],
- "value": "429005"
- },
- {
- "label": "渔洋镇",
- "position": [
- "112.966",
- "30.2392"
- ],
- "value": "429005"
- },
- {
- "label": "熊口镇",
- "position": [
- "112.724",
- "30.3404"
- ],
- "value": "429005"
- },
- {
- "label": "后湖管理区",
- "position": [
- "112.768",
- "30.4049"
- ],
- "value": "429005"
- },
- {
- "label": "江汉石油管理局",
- "position": [
- "112.793",
- "30.4635"
- ],
- "value": "429005"
- },
- {
- "label": "熊口管理区",
- "position": [
- "112.802",
- "30.195"
- ],
- "value": "429005"
- },
- {
- "label": "张金镇",
- "position": [
- "112.577",
- "30.2389"
- ],
- "value": "429005"
- },
- {
- "label": "杨市街道",
- "position": [
- "112.915",
- "30.3835"
- ],
- "value": "429005"
- },
- {
- "label": "高石碑镇",
- "position": [
- "112.626",
- "30.6203"
- ],
- "value": "429005"
- },
- {
- "label": "浩口镇",
- "position": [
- "112.65",
- "30.3695"
- ],
- "value": "429005"
- },
- {
- "label": "龙湾镇",
- "position": [
- "112.69",
- "30.2848"
- ],
- "value": "429005"
- },
- {
- "label": "老新镇",
- "position": [
- "112.81",
- "30.2185"
- ],
- "value": "429005"
- },
- {
- "label": "浩口原种场",
- "position": [
- "112.643",
- "30.3784"
- ],
- "value": "429005"
- }
- ]
- },
- {
- "label": "天门市",
- "position": [
- "113.165862",
- "30.653061"
- ],
- "value": "429006",
- "children": [{
- "label": "胡市镇",
- "position": [
- "113.422",
- "30.802"
- ],
- "value": "429006"
- },
- {
- "label": "多祥镇",
- "position": [
- "113.361",
- "30.4223"
- ],
- "value": "429006"
- },
- {
- "label": "黄潭镇",
- "position": [
- "113.039",
- "30.6922"
- ],
- "value": "429006"
- },
- {
- "label": "沉湖管委会",
- "position": [
- "113.399",
- "30.4588"
- ],
- "value": "429006"
- },
- {
- "label": "干驿镇",
- "position": [
- "113.451",
- "30.503"
- ],
- "value": "429006"
- },
- {
- "label": "横林镇",
- "position": [
- "113.215",
- "30.5643"
- ],
- "value": "429006"
- },
- {
- "label": "马湾镇",
- "position": [
- "113.312",
- "30.5993"
- ],
- "value": "429006"
- },
- {
- "label": "蒋湖农场",
- "position": [
- "112.802",
- "30.6364"
- ],
- "value": "429006"
- },
- {
- "label": "小板镇",
- "position": [
- "113.264",
- "30.6151"
- ],
- "value": "429006"
- },
- {
- "label": "岳口镇",
- "position": [
- "113.105",
- "30.5868"
- ],
- "value": "429006"
- },
- {
- "label": "多宝镇",
- "position": [
- "112.614",
- "30.7034"
- ],
- "value": "429006"
- },
- {
- "label": "蒋场镇",
- "position": [
- "112.927",
- "30.646"
- ],
- "value": "429006"
- },
- {
- "label": "石家河镇",
- "position": [
- "113.076",
- "30.8211"
- ],
- "value": "429006"
- },
- {
- "label": "彭市镇",
- "position": [
- "113.157",
- "30.4315"
- ],
- "value": "429006"
- },
- {
- "label": "佛子山镇",
- "position": [
- "113.068",
- "30.6892"
- ],
- "value": "429006"
- },
- {
- "label": "九真镇",
- "position": [
- "113.206",
- "30.8245"
- ],
- "value": "429006"
- },
- {
- "label": "竟陵街道",
- "position": [
- "113.183",
- "30.7066"
- ],
- "value": "429006"
- },
- {
- "label": "侨乡街道开发区",
- "position": [
- "113.134",
- "30.652"
- ],
- "value": "429006"
- },
- {
- "label": "麻洋镇",
- "position": [
- "113.309",
- "30.5249"
- ],
- "value": "429006"
- },
- {
- "label": "杨林街道",
- "position": [
- "113.265",
- "30.6856"
- ],
- "value": "429006"
- },
- {
- "label": "白茅湖农场",
- "position": [
- "113.063",
- "30.5868"
- ],
- "value": "429006"
- },
- {
- "label": "皂市镇",
- "position": [
- "113.223",
- "30.7957"
- ],
- "value": "429006"
- },
- {
- "label": "拖市镇",
- "position": [
- "112.856",
- "30.7135"
- ],
- "value": "429006"
- },
- {
- "label": "汪场镇",
- "position": [
- "112.979",
- "30.638"
- ],
- "value": "429006"
- },
- {
- "label": "张港镇",
- "position": [
- "112.801",
- "30.5529"
- ],
- "value": "429006"
- },
- {
- "label": "渔薪镇",
- "position": [
- "112.879",
- "30.6744"
- ],
- "value": "429006"
- },
- {
- "label": "卢市镇",
- "position": [
- "113.397",
- "30.6596"
- ],
- "value": "429006"
- },
- {
- "label": "净潭乡",
- "position": [
- "113.451",
- "30.6464"
- ],
- "value": "429006"
- }
- ]
- },
- {
- "label": "神农架林区",
- "position": [
- "110.671525",
- "31.744449"
- ],
- "value": "429021",
- "children": [{
- "label": "木鱼镇",
- "position": [
- "110.312",
- "31.3933"
- ],
- "value": "429021"
- },
- {
- "label": "下谷坪土家族乡",
- "position": [
- "110.113",
- "31.4153"
- ],
- "value": "429021"
- },
- {
- "label": "新华镇",
- "position": [
- "110.842",
- "31.6218"
- ],
- "value": "429021"
- },
- {
- "label": "九湖镇",
- "position": [
- "110.062",
- "31.4095"
- ],
- "value": "429021"
- },
- {
- "label": "宋洛乡",
- "position": [
- "110.59",
- "31.7303"
- ],
- "value": "429021"
- },
- {
- "label": "松柏镇",
- "position": [
- "110.609",
- "31.7041"
- ],
- "value": "429021"
- },
- {
- "label": "红坪镇",
- "position": [
- "110.196",
- "31.4718"
- ],
- "value": "429021"
- },
- {
- "label": "阳日镇",
- "position": [
- "110.763",
- "31.677"
- ],
- "value": "429021"
- }
- ]
- }
- ]
- },
- {
- "label": "湖南省",
- "position": [
- "112.982279",
- "28.19409"
- ],
- "value": "430000",
- "children": [{
- "label": "长沙市",
- "position": [
- "112.982279",
- "28.19409"
- ],
- "value": "430100",
- "children": [{
- "label": "芙蓉区",
- "position": [
- "112.988094",
- "28.193106"
- ],
- "value": "430102"
- },
- {
- "label": "天心区",
- "position": [
- "112.97307",
- "28.192375"
- ],
- "value": "430103"
- },
- {
- "label": "岳麓区",
- "position": [
- "112.911591",
- "28.213044"
- ],
- "value": "430104"
- },
- {
- "label": "开福区",
- "position": [
- "112.985525",
- "28.201336"
- ],
- "value": "430105"
- },
- {
- "label": "雨花区",
- "position": [
- "113.016337",
- "28.109937"
- ],
- "value": "430111"
- },
- {
- "label": "望城区",
- "position": [
- "112.819549",
- "28.347458"
- ],
- "value": "430112"
- },
- {
- "label": "长沙县",
- "position": [
- "113.080098",
- "28.237888"
- ],
- "value": "430121"
- },
- {
- "label": "浏阳市",
- "position": [
- "113.633301",
- "28.141112"
- ],
- "value": "430181"
- },
- {
- "label": "宁乡市",
- "position": [
- "112.553182",
- "28.253928"
- ],
- "value": "430182"
- }
- ]
- },
- {
- "label": "株洲市",
- "position": [
- "113.151737",
- "27.835806"
- ],
- "value": "430200",
- "children": [{
- "label": "荷塘区",
- "position": [
- "113.162548",
- "27.833036"
- ],
- "value": "430202"
- },
- {
- "label": "芦淞区",
- "position": [
- "113.155169",
- "27.827246"
- ],
- "value": "430203"
- },
- {
- "label": "石峰区",
- "position": [
- "113.11295",
- "27.871945"
- ],
- "value": "430204"
- },
- {
- "label": "天元区",
- "position": [
- "113.136252",
- "27.826909"
- ],
- "value": "430211"
- },
- {
- "label": "渌口区",
- "position": [
- "113.146175",
- "27.705844"
- ],
- "value": "430212"
- },
- {
- "label": "攸县",
- "position": [
- "113.345774",
- "27.000071"
- ],
- "value": "430223"
- },
- {
- "label": "茶陵县",
- "position": [
- "113.546509",
- "26.789534"
- ],
- "value": "430224"
- },
- {
- "label": "炎陵县",
- "position": [
- "113.776884",
- "26.489459"
- ],
- "value": "430225"
- },
- {
- "label": "醴陵市",
- "position": [
- "113.507157",
- "27.657873"
- ],
- "value": "430281"
- }
- ]
- },
- {
- "label": "湘潭市",
- "position": [
- "112.944052",
- "27.82973"
- ],
- "value": "430300",
- "children": [{
- "label": "雨湖区",
- "position": [
- "112.907427",
- "27.86077"
- ],
- "value": "430302"
- },
- {
- "label": "岳塘区",
- "position": [
- "112.927707",
- "27.828854"
- ],
- "value": "430304"
- },
- {
- "label": "湘潭县",
- "position": [
- "112.952829",
- "27.778601"
- ],
- "value": "430321"
- },
- {
- "label": "湘乡市",
- "position": [
- "112.525217",
- "27.734918"
- ],
- "value": "430381"
- },
- {
- "label": "韶山市",
- "position": [
- "112.52848",
- "27.922682"
- ],
- "value": "430382"
- }
- ]
- },
- {
- "label": "衡阳市",
- "position": [
- "112.607693",
- "26.900358"
- ],
- "value": "430400",
- "children": [{
- "label": "珠晖区",
- "position": [
- "112.626324",
- "26.891063"
- ],
- "value": "430405"
- },
- {
- "label": "雁峰区",
- "position": [
- "112.612241",
- "26.893694"
- ],
- "value": "430406"
- },
- {
- "label": "石鼓区",
- "position": [
- "112.607635",
- "26.903908"
- ],
- "value": "430407"
- },
- {
- "label": "蒸湘区",
- "position": [
- "112.570608",
- "26.89087"
- ],
- "value": "430408"
- },
- {
- "label": "南岳区",
- "position": [
- "112.734147",
- "27.240536"
- ],
- "value": "430412"
- },
- {
- "label": "衡阳县",
- "position": [
- "112.379643",
- "26.962388"
- ],
- "value": "430421"
- },
- {
- "label": "衡南县",
- "position": [
- "112.677459",
- "26.739973"
- ],
- "value": "430422"
- },
- {
- "label": "衡山县",
- "position": [
- "112.86971",
- "27.234808"
- ],
- "value": "430423"
- },
- {
- "label": "衡东县",
- "position": [
- "112.950412",
- "27.083531"
- ],
- "value": "430424"
- },
- {
- "label": "祁东县",
- "position": [
- "112.111192",
- "26.787109"
- ],
- "value": "430426"
- },
- {
- "label": "耒阳市",
- "position": [
- "112.847215",
- "26.414162"
- ],
- "value": "430481"
- },
- {
- "label": "常宁市",
- "position": [
- "112.396821",
- "26.406773"
- ],
- "value": "430482"
- }
- ]
- },
- {
- "label": "邵阳市",
- "position": [
- "111.46923",
- "27.237842"
- ],
- "value": "430500",
- "children": [{
- "label": "双清区",
- "position": [
- "111.479756",
- "27.240001"
- ],
- "value": "430502"
- },
- {
- "label": "大祥区",
- "position": [
- "111.462968",
- "27.233593"
- ],
- "value": "430503"
- },
- {
- "label": "北塔区",
- "position": [
- "111.452315",
- "27.245688"
- ],
- "value": "430511"
- },
- {
- "label": "新邵县",
- "position": [
- "111.459762",
- "27.311429"
- ],
- "value": "430522"
- },
- {
- "label": "邵阳县",
- "position": [
- "111.2757",
- "26.989713"
- ],
- "value": "430523"
- },
- {
- "label": "隆回县",
- "position": [
- "111.038785",
- "27.116002"
- ],
- "value": "430524"
- },
- {
- "label": "洞口县",
- "position": [
- "110.579212",
- "27.062286"
- ],
- "value": "430525"
- },
- {
- "label": "绥宁县",
- "position": [
- "110.155075",
- "26.580622"
- ],
- "value": "430527"
- },
- {
- "label": "新宁县",
- "position": [
- "110.859115",
- "26.438912"
- ],
- "value": "430528"
- },
- {
- "label": "城步苗族自治县",
- "position": [
- "110.313226",
- "26.363575"
- ],
- "value": "430529"
- },
- {
- "label": "武冈市",
- "position": [
- "110.636804",
- "26.732086"
- ],
- "value": "430581"
- },
- {
- "label": "邵东市",
- "position": [
- "111.743168",
- "27.257273"
- ],
- "value": "430582"
- }
- ]
- },
- {
- "label": "岳阳市",
- "position": [
- "113.132855",
- "29.37029"
- ],
- "value": "430600",
- "children": [{
- "label": "岳阳楼区",
- "position": [
- "113.120751",
- "29.366784"
- ],
- "value": "430602"
- },
- {
- "label": "云溪区",
- "position": [
- "113.27387",
- "29.473395"
- ],
- "value": "430603"
- },
- {
- "label": "君山区",
- "position": [
- "113.004082",
- "29.438062"
- ],
- "value": "430611"
- },
- {
- "label": "岳阳县",
- "position": [
- "113.116073",
- "29.144843"
- ],
- "value": "430621"
- },
- {
- "label": "华容县",
- "position": [
- "112.559369",
- "29.524107"
- ],
- "value": "430623"
- },
- {
- "label": "湘阴县",
- "position": [
- "112.889748",
- "28.677498"
- ],
- "value": "430624"
- },
- {
- "label": "平江县",
- "position": [
- "113.593751",
- "28.701523"
- ],
- "value": "430626"
- },
- {
- "label": "汨罗市",
- "position": [
- "113.079419",
- "28.803149"
- ],
- "value": "430681"
- },
- {
- "label": "临湘市",
- "position": [
- "113.450809",
- "29.471594"
- ],
- "value": "430682"
- }
- ]
- },
- {
- "label": "常德市",
- "position": [
- "111.691347",
- "29.040225"
- ],
- "value": "430700",
- "children": [{
- "label": "武陵区",
- "position": [
- "111.690718",
- "29.040477"
- ],
- "value": "430702"
- },
- {
- "label": "鼎城区",
- "position": [
- "111.685327",
- "29.014426"
- ],
- "value": "430703"
- },
- {
- "label": "安乡县",
- "position": [
- "112.172289",
- "29.414483"
- ],
- "value": "430721"
- },
- {
- "label": "汉寿县",
- "position": [
- "111.968506",
- "28.907319"
- ],
- "value": "430722"
- },
- {
- "label": "澧县",
- "position": [
- "111.761682",
- "29.64264"
- ],
- "value": "430723"
- },
- {
- "label": "临澧县",
- "position": [
- "111.645602",
- "29.443217"
- ],
- "value": "430724"
- },
- {
- "label": "桃源县",
- "position": [
- "111.484503",
- "28.902734"
- ],
- "value": "430725"
- },
- {
- "label": "石门县",
- "position": [
- "111.379087",
- "29.584703"
- ],
- "value": "430726"
- },
- {
- "label": "津市市",
- "position": [
- "111.879609",
- "29.630867"
- ],
- "value": "430781"
- }
- ]
- },
- {
- "label": "张家界市",
- "position": [
- "110.479921",
- "29.127401"
- ],
- "value": "430800",
- "children": [{
- "label": "永定区",
- "position": [
- "110.484559",
- "29.125961"
- ],
- "value": "430802"
- },
- {
- "label": "武陵源区",
- "position": [
- "110.54758",
- "29.347827"
- ],
- "value": "430811"
- },
- {
- "label": "慈利县",
- "position": [
- "111.132702",
- "29.423876"
- ],
- "value": "430821"
- },
- {
- "label": "桑植县",
- "position": [
- "110.164039",
- "29.399939"
- ],
- "value": "430822"
- }
- ]
- },
- {
- "label": "益阳市",
- "position": [
- "112.355042",
- "28.570066"
- ],
- "value": "430900",
- "children": [{
- "label": "资阳区",
- "position": [
- "112.33084",
- "28.592771"
- ],
- "value": "430902"
- },
- {
- "label": "赫山区",
- "position": [
- "112.360946",
- "28.568327"
- ],
- "value": "430903"
- },
- {
- "label": "南县",
- "position": [
- "112.410399",
- "29.372181"
- ],
- "value": "430921"
- },
- {
- "label": "桃江县",
- "position": [
- "112.139732",
- "28.520993"
- ],
- "value": "430922"
- },
- {
- "label": "安化县",
- "position": [
- "111.221824",
- "28.377421"
- ],
- "value": "430923"
- },
- {
- "label": "沅江市",
- "position": [
- "112.361088",
- "28.839713"
- ],
- "value": "430981"
- }
- ]
- },
- {
- "label": "郴州市",
- "position": [
- "113.032067",
- "25.793589"
- ],
- "value": "431000",
- "children": [{
- "label": "北湖区",
- "position": [
- "113.032208",
- "25.792628"
- ],
- "value": "431002"
- },
- {
- "label": "苏仙区",
- "position": [
- "113.038698",
- "25.793157"
- ],
- "value": "431003"
- },
- {
- "label": "桂阳县",
- "position": [
- "112.734466",
- "25.737447"
- ],
- "value": "431021"
- },
- {
- "label": "宜章县",
- "position": [
- "112.947884",
- "25.394345"
- ],
- "value": "431022"
- },
- {
- "label": "永兴县",
- "position": [
- "113.114819",
- "26.129392"
- ],
- "value": "431023"
- },
- {
- "label": "嘉禾县",
- "position": [
- "112.370618",
- "25.587309"
- ],
- "value": "431024"
- },
- {
- "label": "临武县",
- "position": [
- "112.564589",
- "25.279119"
- ],
- "value": "431025"
- },
- {
- "label": "汝城县",
- "position": [
- "113.685686",
- "25.553759"
- ],
- "value": "431026"
- },
- {
- "label": "桂东县",
- "position": [
- "113.945879",
- "26.073917"
- ],
- "value": "431027"
- },
- {
- "label": "安仁县",
- "position": [
- "113.27217",
- "26.708625"
- ],
- "value": "431028"
- },
- {
- "label": "资兴市",
- "position": [
- "113.23682",
- "25.974152"
- ],
- "value": "431081"
- }
- ]
- },
- {
- "label": "永州市",
- "position": [
- "111.608019",
- "26.434516"
- ],
- "value": "431100",
- "children": [{
- "label": "零陵区",
- "position": [
- "111.626348",
- "26.223347"
- ],
- "value": "431102"
- },
- {
- "label": "冷水滩区",
- "position": [
- "111.607156",
- "26.434364"
- ],
- "value": "431103"
- },
- {
- "label": "祁阳县",
- "position": [
- "111.85734",
- "26.585929"
- ],
- "value": "431121"
- },
- {
- "label": "东安县",
- "position": [
- "111.313035",
- "26.397278"
- ],
- "value": "431122"
- },
- {
- "label": "双牌县",
- "position": [
- "111.662146",
- "25.959397"
- ],
- "value": "431123"
- },
- {
- "label": "道县",
- "position": [
- "111.591614",
- "25.518444"
- ],
- "value": "431124"
- },
- {
- "label": "江永县",
- "position": [
- "111.346803",
- "25.268154"
- ],
- "value": "431125"
- },
- {
- "label": "宁远县",
- "position": [
- "111.944529",
- "25.584112"
- ],
- "value": "431126"
- },
- {
- "label": "蓝山县",
- "position": [
- "112.194195",
- "25.375255"
- ],
- "value": "431127"
- },
- {
- "label": "新田县",
- "position": [
- "112.220341",
- "25.906927"
- ],
- "value": "431128"
- },
- {
- "label": "江华瑶族自治县",
- "position": [
- "111.577276",
- "25.182596"
- ],
- "value": "431129"
- }
- ]
- },
- {
- "label": "怀化市",
- "position": [
- "109.97824",
- "27.550082"
- ],
- "value": "431200",
- "children": [{
- "label": "鹤城区",
- "position": [
- "109.982242",
- "27.548474"
- ],
- "value": "431202"
- },
- {
- "label": "中方县",
- "position": [
- "109.948061",
- "27.43736"
- ],
- "value": "431221"
- },
- {
- "label": "沅陵县",
- "position": [
- "110.399161",
- "28.455554"
- ],
- "value": "431222"
- },
- {
- "label": "辰溪县",
- "position": [
- "110.196953",
- "28.005474"
- ],
- "value": "431223"
- },
- {
- "label": "溆浦县",
- "position": [
- "110.593373",
- "27.903802"
- ],
- "value": "431224"
- },
- {
- "label": "会同县",
- "position": [
- "109.720785",
- "26.870789"
- ],
- "value": "431225"
- },
- {
- "label": "麻阳苗族自治县",
- "position": [
- "109.802807",
- "27.865991"
- ],
- "value": "431226"
- },
- {
- "label": "新晃侗族自治县",
- "position": [
- "109.174443",
- "27.359897"
- ],
- "value": "431227"
- },
- {
- "label": "芷江侗族自治县",
- "position": [
- "109.687777",
- "27.437996"
- ],
- "value": "431228"
- },
- {
- "label": "靖州苗族侗族自治县",
- "position": [
- "109.691159",
- "26.573511"
- ],
- "value": "431229"
- },
- {
- "label": "通道侗族自治县",
- "position": [
- "109.783359",
- "26.158349"
- ],
- "value": "431230"
- },
- {
- "label": "洪江市",
- "position": [
- "109.831765",
- "27.201876"
- ],
- "value": "431281"
- }
- ]
- },
- {
- "label": "娄底市",
- "position": [
- "112.008497",
- "27.728136"
- ],
- "value": "431300",
- "children": [{
- "label": "娄星区",
- "position": [
- "112.008486",
- "27.726643"
- ],
- "value": "431302"
- },
- {
- "label": "双峰县",
- "position": [
- "112.198245",
- "27.459126"
- ],
- "value": "431321"
- },
- {
- "label": "新化县",
- "position": [
- "111.306747",
- "27.737456"
- ],
- "value": "431322"
- },
- {
- "label": "冷水江市",
- "position": [
- "111.434674",
- "27.685759"
- ],
- "value": "431381"
- },
- {
- "label": "涟源市",
- "position": [
- "111.670847",
- "27.692301"
- ],
- "value": "431382"
- }
- ]
- },
- {
- "label": "湘西土家族苗族自治州",
- "position": [
- "109.739735",
- "28.314296"
- ],
- "value": "433100",
- "children": [{
- "label": "吉首市",
- "position": [
- "109.738273",
- "28.314827"
- ],
- "value": "433101"
- },
- {
- "label": "泸溪县",
- "position": [
- "110.214428",
- "28.214516"
- ],
- "value": "433122"
- },
- {
- "label": "凤凰县",
- "position": [
- "109.599191",
- "27.948308"
- ],
- "value": "433123"
- },
- {
- "label": "花垣县",
- "position": [
- "109.479063",
- "28.581352"
- ],
- "value": "433124"
- },
- {
- "label": "保靖县",
- "position": [
- "109.651445",
- "28.709605"
- ],
- "value": "433125"
- },
- {
- "label": "古丈县",
- "position": [
- "109.949592",
- "28.616973"
- ],
- "value": "433126"
- },
- {
- "label": "永顺县",
- "position": [
- "109.853292",
- "28.998068"
- ],
- "value": "433127"
- },
- {
- "label": "龙山县",
- "position": [
- "109.441189",
- "29.453438"
- ],
- "value": "433130"
- }
- ]
- }
- ]
- },
- {
- "label": "广东省",
- "position": [
- "113.280637",
- "23.125178"
- ],
- "value": "440000",
- "children": [{
- "label": "广州市",
- "position": [
- "113.280637",
- "23.125178"
- ],
- "value": "440100",
- "children": [{
- "label": "荔湾区",
- "position": [
- "113.243038",
- "23.124943"
- ],
- "value": "440103"
- },
- {
- "label": "越秀区",
- "position": [
- "113.280714",
- "23.125624"
- ],
- "value": "440104"
- },
- {
- "label": "海珠区",
- "position": [
- "113.262008",
- "23.103131"
- ],
- "value": "440105"
- },
- {
- "label": "天河区",
- "position": [
- "113.335367",
- "23.13559"
- ],
- "value": "440106"
- },
- {
- "label": "白云区",
- "position": [
- "113.262831",
- "23.162281"
- ],
- "value": "440111"
- },
- {
- "label": "黄埔区",
- "position": [
- "113.450761",
- "23.103239"
- ],
- "value": "440112"
- },
- {
- "label": "番禺区",
- "position": [
- "113.364619",
- "22.938582"
- ],
- "value": "440113"
- },
- {
- "label": "花都区",
- "position": [
- "113.211184",
- "23.39205"
- ],
- "value": "440114"
- },
- {
- "label": "南沙区",
- "position": [
- "113.53738",
- "22.794531"
- ],
- "value": "440115"
- },
- {
- "label": "从化区",
- "position": [
- "113.587386",
- "23.545283"
- ],
- "value": "440117"
- },
- {
- "label": "增城区",
- "position": [
- "113.829579",
- "23.290497"
- ],
- "value": "440118"
- }
- ]
- },
- {
- "label": "韶关市",
- "position": [
- "113.591544",
- "24.801322"
- ],
- "value": "440200",
- "children": [{
- "label": "武江区",
- "position": [
- "113.588289",
- "24.80016"
- ],
- "value": "440203"
- },
- {
- "label": "浈江区",
- "position": [
- "113.599224",
- "24.803977"
- ],
- "value": "440204"
- },
- {
- "label": "曲江区",
- "position": [
- "113.605582",
- "24.680195"
- ],
- "value": "440205"
- },
- {
- "label": "始兴县",
- "position": [
- "114.067205",
- "24.948364"
- ],
- "value": "440222"
- },
- {
- "label": "仁化县",
- "position": [
- "113.748627",
- "25.088226"
- ],
- "value": "440224"
- },
- {
- "label": "翁源县",
- "position": [
- "114.131289",
- "24.353887"
- ],
- "value": "440229"
- },
- {
- "label": "乳源瑶族自治县",
- "position": [
- "113.278417",
- "24.776109"
- ],
- "value": "440232"
- },
- {
- "label": "新丰县",
- "position": [
- "114.207034",
- "24.055412"
- ],
- "value": "440233"
- },
- {
- "label": "乐昌市",
- "position": [
- "113.352413",
- "25.128445"
- ],
- "value": "440281"
- },
- {
- "label": "南雄市",
- "position": [
- "114.311231",
- "25.115328"
- ],
- "value": "440282"
- }
- ]
- },
- {
- "label": "深圳市",
- "position": [
- "114.085947",
- "22.547"
- ],
- "value": "440300",
- "children": [{
- "label": "罗湖区",
- "position": [
- "114.123885",
- "22.555341"
- ],
- "value": "440303"
- },
- {
- "label": "福田区",
- "position": [
- "114.05096",
- "22.541009"
- ],
- "value": "440304"
- },
- {
- "label": "南山区",
- "position": [
- "113.92943",
- "22.531221"
- ],
- "value": "440305"
- },
- {
- "label": "宝安区",
- "position": [
- "113.828671",
- "22.754741"
- ],
- "value": "440306"
- },
- {
- "label": "龙岗区",
- "position": [
- "114.251372",
- "22.721511"
- ],
- "value": "440307"
- },
- {
- "label": "盐田区",
- "position": [
- "114.235366",
- "22.555069"
- ],
- "value": "440308"
- },
- {
- "label": "龙华区",
- "position": [
- "114.044346",
- "22.691963"
- ],
- "value": "440309"
- },
- {
- "label": "坪山区",
- "position": [
- "114.338441",
- "22.69423"
- ],
- "value": "440310"
- },
- {
- "label": "光明区",
- "position": [
- "113.935895",
- "22.748816"
- ],
- "value": "440311"
- }
- ]
- },
- {
- "label": "珠海市",
- "position": [
- "113.553986",
- "22.224979"
- ],
- "value": "440400",
- "children": [{
- "label": "香洲区",
- "position": [
- "113.55027",
- "22.271249"
- ],
- "value": "440402"
- },
- {
- "label": "斗门区",
- "position": [
- "113.297739",
- "22.209117"
- ],
- "value": "440403"
- },
- {
- "label": "金湾区",
- "position": [
- "113.345071",
- "22.139122"
- ],
- "value": "440404"
- }
- ]
- },
- {
- "label": "汕头市",
- "position": [
- "116.708463",
- "23.37102"
- ],
- "value": "440500",
- "children": [{
- "label": "龙湖区",
- "position": [
- "116.732015",
- "23.373754"
- ],
- "value": "440507"
- },
- {
- "label": "金平区",
- "position": [
- "116.703583",
- "23.367071"
- ],
- "value": "440511"
- },
- {
- "label": "濠江区",
- "position": [
- "116.729528",
- "23.279345"
- ],
- "value": "440512"
- },
- {
- "label": "潮阳区",
- "position": [
- "116.602602",
- "23.262336"
- ],
- "value": "440513"
- },
- {
- "label": "潮南区",
- "position": [
- "116.423607",
- "23.249798"
- ],
- "value": "440514"
- },
- {
- "label": "澄海区",
- "position": [
- "116.76336",
- "23.46844"
- ],
- "value": "440515"
- },
- {
- "label": "南澳县",
- "position": [
- "117.027105",
- "23.419562"
- ],
- "value": "440523"
- }
- ]
- },
- {
- "label": "佛山市",
- "position": [
- "113.122717",
- "23.028762"
- ],
- "value": "440600",
- "children": [{
- "label": "禅城区",
- "position": [
- "113.112414",
- "23.019643"
- ],
- "value": "440604"
- },
- {
- "label": "南海区",
- "position": [
- "113.145577",
- "23.031562"
- ],
- "value": "440605"
- },
- {
- "label": "顺德区",
- "position": [
- "113.281826",
- "22.75851"
- ],
- "value": "440606"
- },
- {
- "label": "三水区",
- "position": [
- "112.899414",
- "23.16504"
- ],
- "value": "440607"
- },
- {
- "label": "高明区",
- "position": [
- "112.882123",
- "22.893855"
- ],
- "value": "440608"
- }
- ]
- },
- {
- "label": "江门市",
- "position": [
- "113.094942",
- "22.590431"
- ],
- "value": "440700",
- "children": [{
- "label": "蓬江区",
- "position": [
- "113.07859",
- "22.59677"
- ],
- "value": "440703"
- },
- {
- "label": "江海区",
- "position": [
- "113.120601",
- "22.572211"
- ],
- "value": "440704"
- },
- {
- "label": "新会区",
- "position": [
- "113.038584",
- "22.520247"
- ],
- "value": "440705"
- },
- {
- "label": "台山市",
- "position": [
- "112.793414",
- "22.250713"
- ],
- "value": "440781"
- },
- {
- "label": "开平市",
- "position": [
- "112.692262",
- "22.366286"
- ],
- "value": "440783"
- },
- {
- "label": "鹤山市",
- "position": [
- "112.961795",
- "22.768104"
- ],
- "value": "440784"
- },
- {
- "label": "恩平市",
- "position": [
- "112.314051",
- "22.182956"
- ],
- "value": "440785"
- }
- ]
- },
- {
- "label": "湛江市",
- "position": [
- "110.364977",
- "21.274898"
- ],
- "value": "440800",
- "children": [{
- "label": "赤坎区",
- "position": [
- "110.361634",
- "21.273365"
- ],
- "value": "440802"
- },
- {
- "label": "霞山区",
- "position": [
- "110.406382",
- "21.194229"
- ],
- "value": "440803"
- },
- {
- "label": "坡头区",
- "position": [
- "110.455632",
- "21.24441"
- ],
- "value": "440804"
- },
- {
- "label": "麻章区",
- "position": [
- "110.329167",
- "21.265997"
- ],
- "value": "440811"
- },
- {
- "label": "遂溪县",
- "position": [
- "110.255321",
- "21.376915"
- ],
- "value": "440823"
- },
- {
- "label": "徐闻县",
- "position": [
- "110.175718",
- "20.326083"
- ],
- "value": "440825"
- },
- {
- "label": "廉江市",
- "position": [
- "110.284961",
- "21.611281"
- ],
- "value": "440881"
- },
- {
- "label": "雷州市",
- "position": [
- "110.088275",
- "20.908523"
- ],
- "value": "440882"
- },
- {
- "label": "吴川市",
- "position": [
- "110.780508",
- "21.428453"
- ],
- "value": "440883"
- }
- ]
- },
- {
- "label": "茂名市",
- "position": [
- "110.919229",
- "21.659751"
- ],
- "value": "440900",
- "children": [{
- "label": "茂南区",
- "position": [
- "110.920542",
- "21.660425"
- ],
- "value": "440902"
- },
- {
- "label": "电白区",
- "position": [
- "111.007264",
- "21.507219"
- ],
- "value": "440904"
- },
- {
- "label": "高州市",
- "position": [
- "110.853251",
- "21.915153"
- ],
- "value": "440981"
- },
- {
- "label": "化州市",
- "position": [
- "110.63839",
- "21.654953"
- ],
- "value": "440982"
- },
- {
- "label": "信宜市",
- "position": [
- "110.941656",
- "22.352681"
- ],
- "value": "440983"
- }
- ]
- },
- {
- "label": "肇庆市",
- "position": [
- "112.472529",
- "23.051546"
- ],
- "value": "441200",
- "children": [{
- "label": "端州区",
- "position": [
- "112.472329",
- "23.052662"
- ],
- "value": "441202"
- },
- {
- "label": "鼎湖区",
- "position": [
- "112.565249",
- "23.155822"
- ],
- "value": "441203"
- },
- {
- "label": "高要区",
- "position": [
- "112.460846",
- "23.027694"
- ],
- "value": "441204"
- },
- {
- "label": "广宁县",
- "position": [
- "112.440419",
- "23.631486"
- ],
- "value": "441223"
- },
- {
- "label": "怀集县",
- "position": [
- "112.182466",
- "23.913072"
- ],
- "value": "441224"
- },
- {
- "label": "封开县",
- "position": [
- "111.502973",
- "23.434731"
- ],
- "value": "441225"
- },
- {
- "label": "德庆县",
- "position": [
- "111.78156",
- "23.141711"
- ],
- "value": "441226"
- },
- {
- "label": "四会市",
- "position": [
- "112.695028",
- "23.340324"
- ],
- "value": "441284"
- }
- ]
- },
- {
- "label": "惠州市",
- "position": [
- "114.412599",
- "23.079404"
- ],
- "value": "441300",
- "children": [{
- "label": "惠城区",
- "position": [
- "114.413978",
- "23.079883"
- ],
- "value": "441302"
- },
- {
- "label": "惠阳区",
- "position": [
- "114.469444",
- "22.78851"
- ],
- "value": "441303"
- },
- {
- "label": "博罗县",
- "position": [
- "114.284254",
- "23.167575"
- ],
- "value": "441322"
- },
- {
- "label": "惠东县",
- "position": [
- "114.723092",
- "22.983036"
- ],
- "value": "441323"
- },
- {
- "label": "龙门县",
- "position": [
- "114.259986",
- "23.723894"
- ],
- "value": "441324"
- }
- ]
- },
- {
- "label": "梅州市",
- "position": [
- "116.117582",
- "24.299112"
- ],
- "value": "441400",
- "children": [{
- "label": "梅江区",
- "position": [
- "116.12116",
- "24.302593"
- ],
- "value": "441402"
- },
- {
- "label": "梅县区",
- "position": [
- "116.083482",
- "24.267825"
- ],
- "value": "441403"
- },
- {
- "label": "大埔县",
- "position": [
- "116.69552",
- "24.351587"
- ],
- "value": "441422"
- },
- {
- "label": "丰顺县",
- "position": [
- "116.184419",
- "23.752771"
- ],
- "value": "441423"
- },
- {
- "label": "五华县",
- "position": [
- "115.775004",
- "23.925424"
- ],
- "value": "441424"
- },
- {
- "label": "平远县",
- "position": [
- "115.891729",
- "24.569651"
- ],
- "value": "441426"
- },
- {
- "label": "蕉岭县",
- "position": [
- "116.170531",
- "24.653313"
- ],
- "value": "441427"
- },
- {
- "label": "兴宁市",
- "position": [
- "115.731648",
- "24.138077"
- ],
- "value": "441481"
- }
- ]
- },
- {
- "label": "汕尾市",
- "position": [
- "115.364238",
- "22.774485"
- ],
- "value": "441500",
- "children": [{
- "label": "城区",
- "position": [
- "115.363667",
- "22.776227"
- ],
- "value": "441502"
- },
- {
- "label": "海丰县",
- "position": [
- "115.337324",
- "22.971042"
- ],
- "value": "441521"
- },
- {
- "label": "陆河县",
- "position": [
- "115.657565",
- "23.302682"
- ],
- "value": "441523"
- },
- {
- "label": "陆丰市",
- "position": [
- "115.644203",
- "22.946104"
- ],
- "value": "441581"
- }
- ]
- },
- {
- "label": "河源市",
- "position": [
- "114.697802",
- "23.746266"
- ],
- "value": "441600",
- "children": [{
- "label": "源城区",
- "position": [
- "114.696828",
- "23.746255"
- ],
- "value": "441602"
- },
- {
- "label": "紫金县",
- "position": [
- "115.184383",
- "23.633744"
- ],
- "value": "441621"
- },
- {
- "label": "龙川县",
- "position": [
- "115.256415",
- "24.101174"
- ],
- "value": "441622"
- },
- {
- "label": "连平县",
- "position": [
- "114.495952",
- "24.364227"
- ],
- "value": "441623"
- },
- {
- "label": "和平县",
- "position": [
- "114.941473",
- "24.44318"
- ],
- "value": "441624"
- },
- {
- "label": "东源县",
- "position": [
- "114.742711",
- "23.789093"
- ],
- "value": "441625"
- }
- ]
- },
- {
- "label": "阳江市",
- "position": [
- "111.975107",
- "21.859222"
- ],
- "value": "441700",
- "children": [{
- "label": "江城区",
- "position": [
- "111.968909",
- "21.859182"
- ],
- "value": "441702"
- },
- {
- "label": "阳东区",
- "position": [
- "112.011267",
- "21.864728"
- ],
- "value": "441704"
- },
- {
- "label": "阳西县",
- "position": [
- "111.617556",
- "21.75367"
- ],
- "value": "441721"
- },
- {
- "label": "阳春市",
- "position": [
- "111.7905",
- "22.169598"
- ],
- "value": "441781"
- }
- ]
- },
- {
- "label": "清远市",
- "position": [
- "113.051227",
- "23.685022"
- ],
- "value": "441800",
- "children": [{
- "label": "清城区",
- "position": [
- "113.048698",
- "23.688976"
- ],
- "value": "441802"
- },
- {
- "label": "清新区",
- "position": [
- "113.015203",
- "23.736949"
- ],
- "value": "441803"
- },
- {
- "label": "佛冈县",
- "position": [
- "113.534094",
- "23.866739"
- ],
- "value": "441821"
- },
- {
- "label": "阳山县",
- "position": [
- "112.634019",
- "24.470286"
- ],
- "value": "441823"
- },
- {
- "label": "连山壮族瑶族自治县",
- "position": [
- "112.086555",
- "24.567271"
- ],
- "value": "441825"
- },
- {
- "label": "连南瑶族自治县",
- "position": [
- "112.290808",
- "24.719097"
- ],
- "value": "441826"
- },
- {
- "label": "英德市",
- "position": [
- "113.405404",
- "24.18612"
- ],
- "value": "441881"
- },
- {
- "label": "连州市",
- "position": [
- "112.379271",
- "24.783966"
- ],
- "value": "441882"
- }
- ]
- },
- {
- "label": "东莞市",
- "position": [
- "113.746262",
- "23.046237"
- ],
- "value": "441900",
- "children": [{
- "label": "莞城街道",
- "position": [
- "113.743",
- "23.0225"
- ],
- "value": "441900"
- },
- {
- "label": "常平镇",
- "position": [
- "114.036",
- "23.0074"
- ],
- "value": "441900"
- },
- {
- "label": "望牛墩镇",
- "position": [
- "113.676",
- "23.0683"
- ],
- "value": "441900"
- },
- {
- "label": "大朗镇",
- "position": [
- "113.939",
- "22.8654"
- ],
- "value": "441900"
- },
- {
- "label": "麻涌镇",
- "position": [
- "113.562",
- "22.9718"
- ],
- "value": "441900"
- },
- {
- "label": "东莞生态园",
- "position": [
- "113.917",
- "23.0806"
- ],
- "value": "441900"
- },
- {
- "label": "桥头镇",
- "position": [
- "114.065",
- "23.0315"
- ],
- "value": "441900"
- },
- {
- "label": "樟木头镇",
- "position": [
- "114.018",
- "22.8704"
- ],
- "value": "441900"
- },
- {
- "label": "松山湖管委会",
- "position": [
- "113.875",
- "22.869"
- ],
- "value": "441900"
- },
- {
- "label": "凤岗镇",
- "position": [
- "114.105",
- "22.7308"
- ],
- "value": "441900"
- },
- {
- "label": "石龙镇",
- "position": [
- "113.833",
- "23.1123"
- ],
- "value": "441900"
- },
- {
- "label": "高埗镇",
- "position": [
- "113.773",
- "23.112"
- ],
- "value": "441900"
- },
- {
- "label": "塘厦镇",
- "position": [
- "114.05",
- "22.7713"
- ],
- "value": "441900"
- },
- {
- "label": "寮步镇",
- "position": [
- "113.888",
- "22.9529"
- ],
- "value": "441900"
- },
- {
- "label": "厚街镇",
- "position": [
- "113.776",
- "22.9097"
- ],
- "value": "441900"
- },
- {
- "label": "谢岗镇",
- "position": [
- "114.128",
- "22.9901"
- ],
- "value": "441900"
- },
- {
- "label": "虎门镇",
- "position": [
- "113.797",
- "22.8587"
- ],
- "value": "441900"
- },
- {
- "label": "南城街道",
- "position": [
- "113.737",
- "23.0249"
- ],
- "value": "441900"
- },
- {
- "label": "虎门港管委会",
- "position": [
- "113.562",
- "22.9718"
- ],
- "value": "441900"
- },
- {
- "label": "横沥镇",
- "position": [
- "114.006",
- "23.0504"
- ],
- "value": "441900"
- },
- {
- "label": "企石镇",
- "position": [
- "113.99",
- "23.0541"
- ],
- "value": "441900"
- },
- {
- "label": "东坑镇",
- "position": [
- "113.918",
- "22.995"
- ],
- "value": "441900"
- },
- {
- "label": "石排镇",
- "position": [
- "113.988",
- "23.068"
- ],
- "value": "441900"
- },
- {
- "label": "东城街道",
- "position": [
- "113.757",
- "23.0485"
- ],
- "value": "441900"
- },
- {
- "label": "洪梅镇",
- "position": [
- "113.607",
- "23.0155"
- ],
- "value": "441900"
- },
- {
- "label": "沙田镇",
- "position": [
- "113.582",
- "22.9426"
- ],
- "value": "441900"
- },
- {
- "label": "道滘镇",
- "position": [
- "113.692",
- "23.004"
- ],
- "value": "441900"
- },
- {
- "label": "大岭山镇",
- "position": [
- "113.843",
- "22.9534"
- ],
- "value": "441900"
- },
- {
- "label": "清溪镇",
- "position": [
- "114.11",
- "22.862"
- ],
- "value": "441900"
- },
- {
- "label": "茶山镇",
- "position": [
- "113.839",
- "23.0813"
- ],
- "value": "441900"
- },
- {
- "label": "中堂镇",
- "position": [
- "113.734",
- "23.1164"
- ],
- "value": "441900"
- },
- {
- "label": "万江街道",
- "position": [
- "113.709",
- "23.0014"
- ],
- "value": "441900"
- },
- {
- "label": "石碣镇",
- "position": [
- "113.846",
- "23.1024"
- ],
- "value": "441900"
- },
- {
- "label": "长安镇",
- "position": [
- "113.714",
- "22.7863"
- ],
- "value": "441900"
- },
- {
- "label": "黄江镇",
- "position": [
- "113.977",
- "22.8091"
- ],
- "value": "441900"
- }
- ]
- },
- {
- "label": "中山市",
- "position": [
- "113.382391",
- "22.521113"
- ],
- "value": "442000",
- "children": [{
- "label": "三角镇",
- "position": [
- "113.416",
- "22.7079"
- ],
- "value": "442000"
- },
- {
- "label": "横栏镇",
- "position": [
- "113.224",
- "22.6048"
- ],
- "value": "442000"
- },
- {
- "label": "五桂山街道",
- "position": [
- "113.399",
- "22.4847"
- ],
- "value": "442000"
- },
- {
- "label": "东升镇",
- "position": [
- "113.321",
- "22.5607"
- ],
- "value": "442000"
- },
- {
- "label": "神湾镇",
- "position": [
- "113.376",
- "22.2768"
- ],
- "value": "442000"
- },
- {
- "label": "火炬开发区街道",
- "position": [
- "113.42",
- "22.5577"
- ],
- "value": "442000"
- },
- {
- "label": "小榄镇",
- "position": [
- "113.23",
- "22.7026"
- ],
- "value": "442000"
- },
- {
- "label": "南朗镇",
- "position": [
- "113.482",
- "22.519"
- ],
- "value": "442000"
- },
- {
- "label": "古镇镇",
- "position": [
- "113.167",
- "22.6751"
- ],
- "value": "442000"
- },
- {
- "label": "民众镇",
- "position": [
- "113.499",
- "22.6855"
- ],
- "value": "442000"
- },
- {
- "label": "港口镇",
- "position": [
- "113.354",
- "22.6027"
- ],
- "value": "442000"
- },
- {
- "label": "三乡镇",
- "position": [
- "113.432",
- "22.3879"
- ],
- "value": "442000"
- },
- {
- "label": "石岐区街道",
- "position": [
- "113.405",
- "22.5247"
- ],
- "value": "442000"
- },
- {
- "label": "大涌镇",
- "position": [
- "113.297",
- "22.4834"
- ],
- "value": "442000"
- },
- {
- "label": "南头镇",
- "position": [
- "113.328",
- "22.6882"
- ],
- "value": "442000"
- },
- {
- "label": "黄圃镇",
- "position": [
- "113.329",
- "22.7457"
- ],
- "value": "442000"
- },
- {
- "label": "东区街道",
- "position": [
- "113.4",
- "22.5274"
- ],
- "value": "442000"
- },
- {
- "label": "阜沙镇",
- "position": [
- "113.34",
- "22.6406"
- ],
- "value": "442000"
- },
- {
- "label": "西区街道",
- "position": [
- "113.314",
- "22.5649"
- ],
- "value": "442000"
- },
- {
- "label": "坦洲镇",
- "position": [
- "113.38",
- "22.2868"
- ],
- "value": "442000"
- },
- {
- "label": "板芙镇",
- "position": [
- "113.358",
- "22.4068"
- ],
- "value": "442000"
- },
- {
- "label": "南区街道",
- "position": [
- "113.367",
- "22.4892"
- ],
- "value": "442000"
- },
- {
- "label": "沙溪镇",
- "position": [
- "113.344",
- "22.5248"
- ],
- "value": "442000"
- },
- {
- "label": "东凤镇",
- "position": [
- "113.308",
- "22.6803"
- ],
- "value": "442000"
- }
- ]
- },
- {
- "label": "潮州市",
- "position": [
- "116.632301",
- "23.661701"
- ],
- "value": "445100",
- "children": [{
- "label": "湘桥区",
- "position": [
- "116.63365",
- "23.664675"
- ],
- "value": "445102"
- },
- {
- "label": "潮安区",
- "position": [
- "116.67931",
- "23.461012"
- ],
- "value": "445103"
- },
- {
- "label": "饶平县",
- "position": [
- "117.00205",
- "23.668171"
- ],
- "value": "445122"
- }
- ]
- },
- {
- "label": "揭阳市",
- "position": [
- "116.355733",
- "23.543778"
- ],
- "value": "445200",
- "children": [{
- "label": "榕城区",
- "position": [
- "116.357045",
- "23.535524"
- ],
- "value": "445202"
- },
- {
- "label": "揭东区",
- "position": [
- "116.412947",
- "23.569887"
- ],
- "value": "445203"
- },
- {
- "label": "揭西县",
- "position": [
- "115.838708",
- "23.4273"
- ],
- "value": "445222"
- },
- {
- "label": "惠来县",
- "position": [
- "116.295832",
- "23.029834"
- ],
- "value": "445224"
- },
- {
- "label": "普宁市",
- "position": [
- "116.165082",
- "23.29788"
- ],
- "value": "445281"
- }
- ]
- },
- {
- "label": "云浮市",
- "position": [
- "112.044439",
- "22.929801"
- ],
- "value": "445300",
- "children": [{
- "label": "云城区",
- "position": [
- "112.04471",
- "22.930827"
- ],
- "value": "445302"
- },
- {
- "label": "云安区",
- "position": [
- "112.005609",
- "23.073152"
- ],
- "value": "445303"
- },
- {
- "label": "新兴县",
- "position": [
- "112.23083",
- "22.703204"
- ],
- "value": "445321"
- },
- {
- "label": "郁南县",
- "position": [
- "111.535921",
- "23.237709"
- ],
- "value": "445322"
- },
- {
- "label": "罗定市",
- "position": [
- "111.578201",
- "22.765415"
- ],
- "value": "445381"
- }
- ]
- }
- ]
- },
- {
- "label": "广西壮族自治区",
- "position": [
- "108.320004",
- "22.82402"
- ],
- "value": "450000",
- "children": [{
- "label": "南宁市",
- "position": [
- "108.320004",
- "22.82402"
- ],
- "value": "450100",
- "children": [{
- "label": "兴宁区",
- "position": [
- "108.320189",
- "22.819511"
- ],
- "value": "450102"
- },
- {
- "label": "青秀区",
- "position": [
- "108.346113",
- "22.816614"
- ],
- "value": "450103"
- },
- {
- "label": "江南区",
- "position": [
- "108.310478",
- "22.799593"
- ],
- "value": "450105"
- },
- {
- "label": "西乡塘区",
- "position": [
- "108.306903",
- "22.832779"
- ],
- "value": "450107"
- },
- {
- "label": "良庆区",
- "position": [
- "108.322102",
- "22.75909"
- ],
- "value": "450108"
- },
- {
- "label": "邕宁区",
- "position": [
- "108.484251",
- "22.756598"
- ],
- "value": "450109"
- },
- {
- "label": "武鸣区",
- "position": [
- "108.280717",
- "23.157163"
- ],
- "value": "450110"
- },
- {
- "label": "隆安县",
- "position": [
- "107.688661",
- "23.174763"
- ],
- "value": "450123"
- },
- {
- "label": "马山县",
- "position": [
- "108.172903",
- "23.711758"
- ],
- "value": "450124"
- },
- {
- "label": "上林县",
- "position": [
- "108.603937",
- "23.431769"
- ],
- "value": "450125"
- },
- {
- "label": "宾阳县",
- "position": [
- "108.816735",
- "23.216884"
- ],
- "value": "450126"
- },
- {
- "label": "横县",
- "position": [
- "109.270987",
- "22.68743"
- ],
- "value": "450127"
- }
- ]
- },
- {
- "label": "柳州市",
- "position": [
- "109.411703",
- "24.314617"
- ],
- "value": "450200",
- "children": [{
- "label": "城中区",
- "position": [
- "109.411749",
- "24.312324"
- ],
- "value": "450202"
- },
- {
- "label": "鱼峰区",
- "position": [
- "109.415364",
- "24.303848"
- ],
- "value": "450203"
- },
- {
- "label": "柳南区",
- "position": [
- "109.395936",
- "24.287013"
- ],
- "value": "450204"
- },
- {
- "label": "柳北区",
- "position": [
- "109.406577",
- "24.359145"
- ],
- "value": "450205"
- },
- {
- "label": "柳江区",
- "position": [
- "109.334503",
- "24.257512"
- ],
- "value": "450206"
- },
- {
- "label": "柳城县",
- "position": [
- "109.245812",
- "24.655121"
- ],
- "value": "450222"
- },
- {
- "label": "鹿寨县",
- "position": [
- "109.740805",
- "24.483405"
- ],
- "value": "450223"
- },
- {
- "label": "融安县",
- "position": [
- "109.403621",
- "25.214703"
- ],
- "value": "450224"
- },
- {
- "label": "融水苗族自治县",
- "position": [
- "109.252744",
- "25.068812"
- ],
- "value": "450225"
- },
- {
- "label": "三江侗族自治县",
- "position": [
- "109.614846",
- "25.78553"
- ],
- "value": "450226"
- }
- ]
- },
- {
- "label": "桂林市",
- "position": [
- "110.299121",
- "25.274215"
- ],
- "value": "450300",
- "children": [{
- "label": "秀峰区",
- "position": [
- "110.292445",
- "25.278544"
- ],
- "value": "450302"
- },
- {
- "label": "叠彩区",
- "position": [
- "110.300783",
- "25.301334"
- ],
- "value": "450303"
- },
- {
- "label": "象山区",
- "position": [
- "110.284882",
- "25.261986"
- ],
- "value": "450304"
- },
- {
- "label": "七星区",
- "position": [
- "110.317577",
- "25.254339"
- ],
- "value": "450305"
- },
- {
- "label": "雁山区",
- "position": [
- "110.305667",
- "25.077646"
- ],
- "value": "450311"
- },
- {
- "label": "临桂区",
- "position": [
- "110.205487",
- "25.246257"
- ],
- "value": "450312"
- },
- {
- "label": "阳朔县",
- "position": [
- "110.494699",
- "24.77534"
- ],
- "value": "450321"
- },
- {
- "label": "灵川县",
- "position": [
- "110.325712",
- "25.408541"
- ],
- "value": "450323"
- },
- {
- "label": "全州县",
- "position": [
- "111.072989",
- "25.929897"
- ],
- "value": "450324"
- },
- {
- "label": "兴安县",
- "position": [
- "110.670783",
- "25.609554"
- ],
- "value": "450325"
- },
- {
- "label": "永福县",
- "position": [
- "109.989208",
- "24.986692"
- ],
- "value": "450326"
- },
- {
- "label": "灌阳县",
- "position": [
- "111.160248",
- "25.489098"
- ],
- "value": "450327"
- },
- {
- "label": "龙胜各族自治县",
- "position": [
- "110.009423",
- "25.796428"
- ],
- "value": "450328"
- },
- {
- "label": "资源县",
- "position": [
- "110.642587",
- "26.0342"
- ],
- "value": "450329"
- },
- {
- "label": "平乐县",
- "position": [
- "110.642821",
- "24.632216"
- ],
- "value": "450330"
- },
- {
- "label": "恭城瑶族自治县",
- "position": [
- "110.82952",
- "24.833612"
- ],
- "value": "450332"
- },
- {
- "label": "荔浦市",
- "position": [
- "110.400149",
- "24.497786"
- ],
- "value": "450381"
- }
- ]
- },
- {
- "label": "梧州市",
- "position": [
- "111.297604",
- "23.474803"
- ],
- "value": "450400",
- "children": [{
- "label": "万秀区",
- "position": [
- "111.315817",
- "23.471318"
- ],
- "value": "450403"
- },
- {
- "label": "长洲区",
- "position": [
- "111.275678",
- "23.4777"
- ],
- "value": "450405"
- },
- {
- "label": "龙圩区",
- "position": [
- "111.246035",
- "23.40996"
- ],
- "value": "450406"
- },
- {
- "label": "苍梧县",
- "position": [
- "111.544008",
- "23.845097"
- ],
- "value": "450421"
- },
- {
- "label": "藤县",
- "position": [
- "110.931826",
- "23.373963"
- ],
- "value": "450422"
- },
- {
- "label": "蒙山县",
- "position": [
- "110.5226",
- "24.199829"
- ],
- "value": "450423"
- },
- {
- "label": "岑溪市",
- "position": [
- "110.998114",
- "22.918406"
- ],
- "value": "450481"
- }
- ]
- },
- {
- "label": "北海市",
- "position": [
- "109.119254",
- "21.473343"
- ],
- "value": "450500",
- "children": [{
- "label": "海城区",
- "position": [
- "109.107529",
- "21.468443"
- ],
- "value": "450502"
- },
- {
- "label": "银海区",
- "position": [
- "109.118707",
- "21.444909"
- ],
- "value": "450503"
- },
- {
- "label": "铁山港区",
- "position": [
- "109.450573",
- "21.5928"
- ],
- "value": "450512"
- },
- {
- "label": "合浦县",
- "position": [
- "109.200695",
- "21.663554"
- ],
- "value": "450521"
- }
- ]
- },
- {
- "label": "防城港市",
- "position": [
- "108.345478",
- "21.614631"
- ],
- "value": "450600",
- "children": [{
- "label": "港口区",
- "position": [
- "108.346281",
- "21.614406"
- ],
- "value": "450602"
- },
- {
- "label": "防城区",
- "position": [
- "108.358426",
- "21.764758"
- ],
- "value": "450603"
- },
- {
- "label": "上思县",
- "position": [
- "107.982139",
- "22.151423"
- ],
- "value": "450621"
- },
- {
- "label": "东兴市",
- "position": [
- "107.97017",
- "21.541172"
- ],
- "value": "450681"
- }
- ]
- },
- {
- "label": "钦州市",
- "position": [
- "108.624175",
- "21.967127"
- ],
- "value": "450700",
- "children": [{
- "label": "钦南区",
- "position": [
- "108.626629",
- "21.966808"
- ],
- "value": "450702"
- },
- {
- "label": "钦北区",
- "position": [
- "108.44911",
- "22.132761"
- ],
- "value": "450703"
- },
- {
- "label": "灵山县",
- "position": [
- "109.293468",
- "22.418041"
- ],
- "value": "450721"
- },
- {
- "label": "浦北县",
- "position": [
- "109.556341",
- "22.268335"
- ],
- "value": "450722"
- }
- ]
- },
- {
- "label": "贵港市",
- "position": [
- "109.602146",
- "23.0936"
- ],
- "value": "450800",
- "children": [{
- "label": "港北区",
- "position": [
- "109.59481",
- "23.107677"
- ],
- "value": "450802"
- },
- {
- "label": "港南区",
- "position": [
- "109.604665",
- "23.067516"
- ],
- "value": "450803"
- },
- {
- "label": "覃塘区",
- "position": [
- "109.415697",
- "23.132815"
- ],
- "value": "450804"
- },
- {
- "label": "平南县",
- "position": [
- "110.397485",
- "23.544546"
- ],
- "value": "450821"
- },
- {
- "label": "桂平市",
- "position": [
- "110.074668",
- "23.382473"
- ],
- "value": "450881"
- }
- ]
- },
- {
- "label": "玉林市",
- "position": [
- "110.154393",
- "22.63136"
- ],
- "value": "450900",
- "children": [{
- "label": "玉州区",
- "position": [
- "110.154912",
- "22.632132"
- ],
- "value": "450902"
- },
- {
- "label": "福绵区",
- "position": [
- "110.054155",
- "22.58163"
- ],
- "value": "450903"
- },
- {
- "label": "容县",
- "position": [
- "110.552467",
- "22.856435"
- ],
- "value": "450921"
- },
- {
- "label": "陆川县",
- "position": [
- "110.264842",
- "22.321054"
- ],
- "value": "450922"
- },
- {
- "label": "博白县",
- "position": [
- "109.980004",
- "22.271285"
- ],
- "value": "450923"
- },
- {
- "label": "兴业县",
- "position": [
- "109.877768",
- "22.74187"
- ],
- "value": "450924"
- },
- {
- "label": "北流市",
- "position": [
- "110.348052",
- "22.701648"
- ],
- "value": "450981"
- }
- ]
- },
- {
- "label": "百色市",
- "position": [
- "106.616285",
- "23.897742"
- ],
- "value": "451000",
- "children": [{
- "label": "右江区",
- "position": [
- "106.615727",
- "23.897675"
- ],
- "value": "451002"
- },
- {
- "label": "田阳区",
- "position": [
- "106.904315",
- "23.736079"
- ],
- "value": "451003"
- },
- {
- "label": "田东县",
- "position": [
- "107.12426",
- "23.600444"
- ],
- "value": "451022"
- },
- {
- "label": "德保县",
- "position": [
- "106.618164",
- "23.321464"
- ],
- "value": "451024"
- },
- {
- "label": "那坡县",
- "position": [
- "105.833553",
- "23.400785"
- ],
- "value": "451026"
- },
- {
- "label": "凌云县",
- "position": [
- "106.56487",
- "24.345643"
- ],
- "value": "451027"
- },
- {
- "label": "乐业县",
- "position": [
- "106.559638",
- "24.782204"
- ],
- "value": "451028"
- },
- {
- "label": "田林县",
- "position": [
- "106.235047",
- "24.290262"
- ],
- "value": "451029"
- },
- {
- "label": "西林县",
- "position": [
- "105.095025",
- "24.492041"
- ],
- "value": "451030"
- },
- {
- "label": "隆林各族自治县",
- "position": [
- "105.342363",
- "24.774318"
- ],
- "value": "451031"
- },
- {
- "label": "靖西市",
- "position": [
- "106.417549",
- "23.134766"
- ],
- "value": "451081"
- },
- {
- "label": "平果市",
- "position": [
- "107.580403",
- "23.320479"
- ],
- "value": "451082"
- }
- ]
- },
- {
- "label": "贺州市",
- "position": [
- "111.552056",
- "24.414141"
- ],
- "value": "451100",
- "children": [{
- "label": "八步区",
- "position": [
- "111.551991",
- "24.412446"
- ],
- "value": "451102"
- },
- {
- "label": "平桂区",
- "position": [
- "111.524014",
- "24.417148"
- ],
- "value": "451103"
- },
- {
- "label": "昭平县",
- "position": [
- "110.810865",
- "24.172958"
- ],
- "value": "451121"
- },
- {
- "label": "钟山县",
- "position": [
- "111.303629",
- "24.528566"
- ],
- "value": "451122"
- },
- {
- "label": "富川瑶族自治县",
- "position": [
- "111.277228",
- "24.81896"
- ],
- "value": "451123"
- }
- ]
- },
- {
- "label": "河池市",
- "position": [
- "108.062105",
- "24.695899"
- ],
- "value": "451200",
- "children": [{
- "label": "金城江区",
- "position": [
- "108.062131",
- "24.695625"
- ],
- "value": "451202"
- },
- {
- "label": "宜州区",
- "position": [
- "108.653965",
- "24.492193"
- ],
- "value": "451203"
- },
- {
- "label": "南丹县",
- "position": [
- "107.546605",
- "24.983192"
- ],
- "value": "451221"
- },
- {
- "label": "天峨县",
- "position": [
- "107.174939",
- "24.985964"
- ],
- "value": "451222"
- },
- {
- "label": "凤山县",
- "position": [
- "107.044592",
- "24.544561"
- ],
- "value": "451223"
- },
- {
- "label": "东兰县",
- "position": [
- "107.373696",
- "24.509367"
- ],
- "value": "451224"
- },
- {
- "label": "罗城仫佬族自治县",
- "position": [
- "108.902453",
- "24.779327"
- ],
- "value": "451225"
- },
- {
- "label": "环江毛南族自治县",
- "position": [
- "108.258669",
- "24.827628"
- ],
- "value": "451226"
- },
- {
- "label": "巴马瑶族自治县",
- "position": [
- "107.253126",
- "24.139538"
- ],
- "value": "451227"
- },
- {
- "label": "都安瑶族自治县",
- "position": [
- "108.102761",
- "23.934964"
- ],
- "value": "451228"
- },
- {
- "label": "大化瑶族自治县",
- "position": [
- "107.9945",
- "23.739596"
- ],
- "value": "451229"
- }
- ]
- },
- {
- "label": "来宾市",
- "position": [
- "109.229772",
- "23.733766"
- ],
- "value": "451300",
- "children": [{
- "label": "兴宾区",
- "position": [
- "109.230541",
- "23.732926"
- ],
- "value": "451302"
- },
- {
- "label": "忻城县",
- "position": [
- "108.667361",
- "24.064779"
- ],
- "value": "451321"
- },
- {
- "label": "象州县",
- "position": [
- "109.684555",
- "23.959824"
- ],
- "value": "451322"
- },
- {
- "label": "武宣县",
- "position": [
- "109.66287",
- "23.604162"
- ],
- "value": "451323"
- },
- {
- "label": "金秀瑶族自治县",
- "position": [
- "110.188556",
- "24.134941"
- ],
- "value": "451324"
- },
- {
- "label": "合山市",
- "position": [
- "108.88858",
- "23.81311"
- ],
- "value": "451381"
- }
- ]
- },
- {
- "label": "崇左市",
- "position": [
- "107.353926",
- "22.404108"
- ],
- "value": "451400",
- "children": [{
- "label": "江州区",
- "position": [
- "107.354443",
- "22.40469"
- ],
- "value": "451402"
- },
- {
- "label": "扶绥县",
- "position": [
- "107.911533",
- "22.635821"
- ],
- "value": "451421"
- },
- {
- "label": "宁明县",
- "position": [
- "107.067616",
- "22.131353"
- ],
- "value": "451422"
- },
- {
- "label": "龙州县",
- "position": [
- "106.857502",
- "22.343716"
- ],
- "value": "451423"
- },
- {
- "label": "大新县",
- "position": [
- "107.200803",
- "22.833369"
- ],
- "value": "451424"
- },
- {
- "label": "天等县",
- "position": [
- "107.142441",
- "23.082484"
- ],
- "value": "451425"
- },
- {
- "label": "凭祥市",
- "position": [
- "106.759038",
- "22.108882"
- ],
- "value": "451481"
- }
- ]
- }
- ]
- },
- {
- "label": "海南省",
- "position": [
- "110.33119",
- "20.031971"
- ],
- "value": "460000",
- "children": [{
- "label": "海口市",
- "position": [
- "110.33119",
- "20.031971"
- ],
- "value": "460100",
- "children": [{
- "label": "秀英区",
- "position": [
- "110.282393",
- "20.008145"
- ],
- "value": "460105"
- },
- {
- "label": "龙华区",
- "position": [
- "110.330373",
- "20.031026"
- ],
- "value": "460106"
- },
- {
- "label": "琼山区",
- "position": [
- "110.354722",
- "20.001051"
- ],
- "value": "460107"
- },
- {
- "label": "美兰区",
- "position": [
- "110.356566",
- "20.03074"
- ],
- "value": "460108"
- }
- ]
- },
- {
- "label": "三亚市",
- "position": [
- "109.508268",
- "18.247872"
- ],
- "value": "460200",
- "children": [{
- "label": "海棠区",
- "position": [
- "109.760778",
- "18.407516"
- ],
- "value": "460202"
- },
- {
- "label": "吉阳区",
- "position": [
- "109.512081",
- "18.247436"
- ],
- "value": "460203"
- },
- {
- "label": "天涯区",
- "position": [
- "109.506357",
- "18.24734"
- ],
- "value": "460204"
- },
- {
- "label": "崖州区",
- "position": [
- "109.174306",
- "18.352192"
- ],
- "value": "460205"
- }
- ]
- },
- {
- "label": "三沙市",
- "position": [
- "112.34882",
- "16.831039"
- ],
- "value": "460300",
- "children": [{
- "label": "西沙区",
- "position": [
- "112.234483",
- "16.774644"
- ],
- "value": "460301"
- },
- {
- "label": "南沙区",
- "position": [
- "112.891018",
- "9.543575"
- ],
- "value": "460302"
- }
- ]
- },
- {
- "label": "儋州市",
- "position": [
- "109.576782",
- "19.517486"
- ],
- "value": "460400",
- "children": [{
- "label": "洋浦经济开发区",
- "position": [
- "109.162",
- "19.7962"
- ],
- "value": "460400"
- },
- {
- "label": "兰洋镇",
- "position": [
- "109.682",
- "19.4833"
- ],
- "value": "460400"
- },
- {
- "label": "和庆镇",
- "position": [
- "109.677",
- "19.5887"
- ],
- "value": "460400"
- },
- {
- "label": "光村镇",
- "position": [
- "109.467",
- "19.9035"
- ],
- "value": "460400"
- },
- {
- "label": "华南热作学院",
- "position": [
- "109.505",
- "19.573"
- ],
- "value": "460400"
- },
- {
- "label": "海头镇",
- "position": [
- "108.948",
- "19.4939"
- ],
- "value": "460400"
- },
- {
- "label": "东成镇",
- "position": [
- "109.579",
- "19.7102"
- ],
- "value": "460400"
- },
- {
- "label": "国营蓝洋农场",
- "position": [
- "109.618",
- "19.5107"
- ],
- "value": "460400"
- },
- {
- "label": "王五镇",
- "position": [
- "109.258",
- "19.6415"
- ],
- "value": "460400"
- },
- {
- "label": "新州镇",
- "position": [
- "109.321",
- "19.7523"
- ],
- "value": "460400"
- },
- {
- "label": "木棠镇",
- "position": [
- "109.33",
- "19.8594"
- ],
- "value": "460400"
- },
- {
- "label": "排浦镇",
- "position": [
- "109.196",
- "19.65"
- ],
- "value": "460400"
- },
- {
- "label": "中和镇",
- "position": [
- "109.351",
- "19.7747"
- ],
- "value": "460400"
- },
- {
- "label": "雅星镇",
- "position": [
- "109.156",
- "19.4695"
- ],
- "value": "460400"
- },
- {
- "label": "南丰镇",
- "position": [
- "109.532",
- "19.4981"
- ],
- "value": "460400"
- },
- {
- "label": "国营八一农场",
- "position": [
- "109.23",
- "19.3915"
- ],
- "value": "460400"
- },
- {
- "label": "国营西联农场",
- "position": [
- "109.537",
- "19.6556"
- ],
- "value": "460400"
- },
- {
- "label": "国营西培农场",
- "position": [
- "109.31",
- "19.4969"
- ],
- "value": "460400"
- },
- {
- "label": "那大镇",
- "position": [
- "109.573",
- "19.5907"
- ],
- "value": "460400"
- },
- {
- "label": "白马井镇",
- "position": [
- "109.268",
- "19.7046"
- ],
- "value": "460400"
- },
- {
- "label": "大成镇",
- "position": [
- "109.345",
- "19.4765"
- ],
- "value": "460400"
- },
- {
- "label": "峨蔓镇",
- "position": [
- "109.333",
- "19.8438"
- ],
- "value": "460400"
- },
- {
- "label": "三都镇",
- "position": [
- "109.176",
- "19.7946"
- ],
- "value": "460400"
- }
- ]
- },
- {
- "label": "五指山市",
- "position": [
- "109.516662",
- "18.776921"
- ],
- "value": "469001",
- "children": [{
- "label": "南圣镇",
- "position": [
- "109.687",
- "18.8266"
- ],
- "value": "469001"
- },
- {
- "label": "毛阳镇",
- "position": [
- "109.45",
- "18.8811"
- ],
- "value": "469001"
- },
- {
- "label": "通什镇",
- "position": [
- "109.614",
- "18.8418"
- ],
- "value": "469001"
- },
- {
- "label": "水满乡",
- "position": [
- "109.601",
- "18.8995"
- ],
- "value": "469001"
- },
- {
- "label": "番阳镇",
- "position": [
- "109.334",
- "18.9132"
- ],
- "value": "469001"
- },
- {
- "label": "畅好乡",
- "position": [
- "109.397",
- "18.6549"
- ],
- "value": "469001"
- },
- {
- "label": "毛道乡",
- "position": [
- "109.356",
- "18.7134"
- ],
- "value": "469001"
- },
- {
- "label": "国营畅好农场",
- "position": [
- "109.523",
- "18.7089"
- ],
- "value": "469001"
- }
- ]
- },
- {
- "label": "琼海市",
- "position": [
- "110.466785",
- "19.246011"
- ],
- "value": "469002",
- "children": [{
- "label": "嘉积镇",
- "position": [
- "110.441",
- "19.3208"
- ],
- "value": "469002"
- },
- {
- "label": "会山镇",
- "position": [
- "110.302",
- "19.0792"
- ],
- "value": "469002"
- },
- {
- "label": "国营东升农场",
- "position": [
- "110.413",
- "19.284"
- ],
- "value": "469002"
- },
- {
- "label": "万泉镇",
- "position": [
- "110.364",
- "19.2516"
- ],
- "value": "469002"
- },
- {
- "label": "国营东红农场",
- "position": [
- "110.509",
- "19.364"
- ],
- "value": "469002"
- },
- {
- "label": "国营东太农场",
- "position": [
- "110.367",
- "19.1372"
- ],
- "value": "469002"
- },
- {
- "label": "彬村山华侨农场",
- "position": [
- "110.623",
- "19.3022"
- ],
- "value": "469002"
- },
- {
- "label": "大路镇",
- "position": [
- "110.424",
- "19.354"
- ],
- "value": "469002"
- },
- {
- "label": "潭门镇",
- "position": [
- "110.546",
- "19.2013"
- ],
- "value": "469002"
- },
- {
- "label": "中原镇",
- "position": [
- "110.419",
- "19.1765"
- ],
- "value": "469002"
- },
- {
- "label": "阳江镇",
- "position": [
- "110.334",
- "19.0558"
- ],
- "value": "469002"
- },
- {
- "label": "塔洋镇",
- "position": [
- "110.475",
- "19.3404"
- ],
- "value": "469002"
- },
- {
- "label": "石壁镇",
- "position": [
- "110.168",
- "19.167"
- ],
- "value": "469002"
- },
- {
- "label": "龙江镇",
- "position": [
- "110.36",
- "19.1595"
- ],
- "value": "469002"
- },
- {
- "label": "长坡镇",
- "position": [
- "110.594",
- "19.3213"
- ],
- "value": "469002"
- },
- {
- "label": "博鳌镇",
- "position": [
- "110.495",
- "19.1766"
- ],
- "value": "469002"
- }
- ]
- },
- {
- "label": "文昌市",
- "position": [
- "110.753975",
- "19.612986"
- ],
- "value": "469005",
- "children": [{
- "label": "国营罗豆农场",
- "position": [
- "110.624",
- "19.9713"
- ],
- "value": "469005"
- },
- {
- "label": "文教镇",
- "position": [
- "110.856",
- "19.7083"
- ],
- "value": "469005"
- },
- {
- "label": "东阁镇",
- "position": [
- "110.799",
- "19.7566"
- ],
- "value": "469005"
- },
- {
- "label": "国营东路农场",
- "position": [
- "110.714",
- "19.8524"
- ],
- "value": "469005"
- },
- {
- "label": "会文镇",
- "position": [
- "110.708",
- "19.4957"
- ],
- "value": "469005"
- },
- {
- "label": "铺前镇",
- "position": [
- "110.675",
- "20.0377"
- ],
- "value": "469005"
- },
- {
- "label": "锦山镇",
- "position": [
- "110.67",
- "20.0418"
- ],
- "value": "469005"
- },
- {
- "label": "翁田镇",
- "position": [
- "110.813",
- "19.9295"
- ],
- "value": "469005"
- },
- {
- "label": "冯坡镇",
- "position": [
- "110.774",
- "20.0176"
- ],
- "value": "469005"
- },
- {
- "label": "龙楼镇",
- "position": [
- "110.938",
- "19.6606"
- ],
- "value": "469005"
- },
- {
- "label": "国营南阳农场",
- "position": [
- "110.556",
- "19.4727"
- ],
- "value": "469005"
- },
- {
- "label": "东郊镇",
- "position": [
- "110.91",
- "19.6291"
- ],
- "value": "469005"
- },
- {
- "label": "昌洒镇",
- "position": [
- "111.26",
- "19.9626"
- ],
- "value": "469005"
- },
- {
- "label": "公坡镇",
- "position": [
- "110.836",
- "19.8543"
- ],
- "value": "469005"
- },
- {
- "label": "重兴镇",
- "position": [
- "110.654",
- "19.4341"
- ],
- "value": "469005"
- },
- {
- "label": "东路镇",
- "position": [
- "110.658",
- "19.8051"
- ],
- "value": "469005"
- },
- {
- "label": "文城镇",
- "position": [
- "110.708",
- "19.4982"
- ],
- "value": "469005"
- },
- {
- "label": "抱罗镇",
- "position": [
- "110.73",
- "19.889"
- ],
- "value": "469005"
- },
- {
- "label": "潭牛镇",
- "position": [
- "110.623",
- "19.6785"
- ],
- "value": "469005"
- },
- {
- "label": "蓬莱镇",
- "position": [
- "110.638",
- "19.5164"
- ],
- "value": "469005"
- }
- ]
- },
- {
- "label": "万宁市",
- "position": [
- "110.388793",
- "18.796216"
- ],
- "value": "469006",
- "children": [{
- "label": "国营东兴农场",
- "position": [
- "110.375",
- "18.894"
- ],
- "value": "469006"
- },
- {
- "label": "万城镇",
- "position": [
- "110.414",
- "18.8276"
- ],
- "value": "469006"
- },
- {
- "label": "后安镇",
- "position": [
- "110.374",
- "18.9087"
- ],
- "value": "469006"
- },
- {
- "label": "礼纪镇",
- "position": [
- "110.269",
- "18.7354"
- ],
- "value": "469006"
- },
- {
- "label": "山根镇",
- "position": [
- "110.483",
- "18.9946"
- ],
- "value": "469006"
- },
- {
- "label": "国营东和农场",
- "position": [
- "110.217",
- "18.7629"
- ],
- "value": "469006"
- },
- {
- "label": "大茂镇",
- "position": [
- "110.39",
- "18.8759"
- ],
- "value": "469006"
- },
- {
- "label": "龙滚镇",
- "position": [
- "110.495",
- "18.9855"
- ],
- "value": "469006"
- },
- {
- "label": "和乐镇",
- "position": [
- "110.416",
- "18.9625"
- ],
- "value": "469006"
- },
- {
- "label": "兴隆华侨农场",
- "position": [
- "110.106",
- "18.8195"
- ],
- "value": "469006"
- },
- {
- "label": "三更罗镇",
- "position": [
- "110.214",
- "18.9979"
- ],
- "value": "469006"
- },
- {
- "label": "长丰镇",
- "position": [
- "110.321",
- "18.7876"
- ],
- "value": "469006"
- },
- {
- "label": "地方国营六连林场",
- "position": [
- "110.505",
- "18.9899"
- ],
- "value": "469006"
- },
- {
- "label": "南桥镇",
- "position": [
- "110.196",
- "18.7201"
- ],
- "value": "469006"
- },
- {
- "label": "北大镇",
- "position": [
- "110.24",
- "18.9316"
- ],
- "value": "469006"
- },
- {
- "label": "东澳镇",
- "position": [
- "110.429",
- "18.6408"
- ],
- "value": "469006"
- },
- {
- "label": "国营新中农场",
- "position": [
- "110.17",
- "18.6967"
- ],
- "value": "469006"
- }
- ]
- },
- {
- "label": "东方市",
- "position": [
- "108.653789",
- "19.10198"
- ],
- "value": "469007",
- "children": [{
- "label": "江边乡",
- "position": [
- "109.108",
- "18.8945"
- ],
- "value": "469007"
- },
- {
- "label": "东方华侨农场",
- "position": [
- "108.696",
- "18.9726"
- ],
- "value": "469007"
- },
- {
- "label": "天安乡",
- "position": [
- "108.817",
- "18.8803"
- ],
- "value": "469007"
- },
- {
- "label": "东河镇",
- "position": [
- "108.991",
- "19.1321"
- ],
- "value": "469007"
- },
- {
- "label": "新龙镇",
- "position": [
- "108.686",
- "18.9263"
- ],
- "value": "469007"
- },
- {
- "label": "国营广坝农场",
- "position": [
- "108.732",
- "18.8589"
- ],
- "value": "469007"
- },
- {
- "label": "感城镇",
- "position": [
- "108.83",
- "18.8833"
- ],
- "value": "469007"
- },
- {
- "label": "三家镇",
- "position": [
- "108.798",
- "19.2498"
- ],
- "value": "469007"
- },
- {
- "label": "四更镇",
- "position": [
- "108.606",
- "19.2646"
- ],
- "value": "469007"
- },
- {
- "label": "板桥镇",
- "position": [
- "108.87",
- "18.8744"
- ],
- "value": "469007"
- },
- {
- "label": "八所镇",
- "position": [
- "108.622",
- "19.0927"
- ],
- "value": "469007"
- },
- {
- "label": "大田镇",
- "position": [
- "108.976",
- "19.1314"
- ],
- "value": "469007"
- }
- ]
- },
- {
- "label": "定安县",
- "position": [
- "110.349235",
- "19.684966"
- ],
- "value": "469021",
- "children": [{
- "label": "新竹镇",
- "position": [
- "110.159",
- "19.5843"
- ],
- "value": "469021"
- },
- {
- "label": "富文镇",
- "position": [
- "110.232",
- "19.521"
- ],
- "value": "469021"
- },
- {
- "label": "国营中瑞农场",
- "position": [
- "110.244",
- "19.3008"
- ],
- "value": "469021"
- },
- {
- "label": "黄竹镇",
- "position": [
- "110.528",
- "19.4887"
- ],
- "value": "469021"
- },
- {
- "label": "定城镇",
- "position": [
- "110.317",
- "19.7017"
- ],
- "value": "469021"
- },
- {
- "label": "岭口镇",
- "position": [
- "110.276",
- "19.3601"
- ],
- "value": "469021"
- },
- {
- "label": "雷鸣镇",
- "position": [
- "110.273",
- "19.5137"
- ],
- "value": "469021"
- },
- {
- "label": "国营南海农场",
- "position": [
- "110.469",
- "19.4432"
- ],
- "value": "469021"
- },
- {
- "label": "翰林镇",
- "position": [
- "110.24",
- "19.2982"
- ],
- "value": "469021"
- },
- {
- "label": "国营金鸡岭农场",
- "position": [
- "110.252",
- "19.5171"
- ],
- "value": "469021"
- },
- {
- "label": "龙门镇",
- "position": [
- "110.298",
- "19.4997"
- ],
- "value": "469021"
- },
- {
- "label": "龙河镇",
- "position": [
- "110.226",
- "19.4221"
- ],
- "value": "469021"
- },
- {
- "label": "龙湖镇",
- "position": [
- "110.469",
- "19.5845"
- ],
- "value": "469021"
- }
- ]
- },
- {
- "label": "屯昌县",
- "position": [
- "110.102773",
- "19.362916"
- ],
- "value": "469022",
- "children": [{
- "label": "国营中建农场",
- "position": [
- "109.966",
- "19.2466"
- ],
- "value": "469022"
- },
- {
- "label": "屯城镇",
- "position": [
- "110.161",
- "19.4468"
- ],
- "value": "469022"
- },
- {
- "label": "南吕镇",
- "position": [
- "110.05",
- "19.2222"
- ],
- "value": "469022"
- },
- {
- "label": "新兴镇",
- "position": [
- "110.154",
- "19.5707"
- ],
- "value": "469022"
- },
- {
- "label": "国营中坤农场",
- "position": [
- "109.855",
- "19.2944"
- ],
- "value": "469022"
- },
- {
- "label": "西昌镇",
- "position": [
- "110.024",
- "19.4428"
- ],
- "value": "469022"
- },
- {
- "label": "坡心镇",
- "position": [
- "110.11",
- "19.3302"
- ],
- "value": "469022"
- },
- {
- "label": "枫木镇",
- "position": [
- "109.994",
- "19.1901"
- ],
- "value": "469022"
- },
- {
- "label": "南坤镇",
- "position": [
- "109.857",
- "19.2939"
- ],
- "value": "469022"
- },
- {
- "label": "乌坡镇",
- "position": [
- "110.093",
- "19.1953"
- ],
- "value": "469022"
- }
- ]
- },
- {
- "label": "澄迈县",
- "position": [
- "110.007147",
- "19.737095"
- ],
- "value": "469023",
- "children": [{
- "label": "福山镇",
- "position": [
- "109.919",
- "19.7325"
- ],
- "value": "469023"
- },
- {
- "label": "桥头镇",
- "position": [
- "109.931",
- "19.9171"
- ],
- "value": "469023"
- },
- {
- "label": "永发镇",
- "position": [
- "110.186",
- "19.6424"
- ],
- "value": "469023"
- },
- {
- "label": "金江镇",
- "position": [
- "109.987",
- "19.7817"
- ],
- "value": "469023"
- },
- {
- "label": "文儒镇",
- "position": [
- "110.121",
- "19.6454"
- ],
- "value": "469023"
- },
- {
- "label": "中兴镇",
- "position": [
- "109.938",
- "19.5697"
- ],
- "value": "469023"
- },
- {
- "label": "老城镇",
- "position": [
- "110.159",
- "19.9529"
- ],
- "value": "469023"
- },
- {
- "label": "国营红岗农场",
- "position": [
- "110.038",
- "19.5642"
- ],
- "value": "469023"
- },
- {
- "label": "瑞溪镇",
- "position": [
- "110.087",
- "19.7731"
- ],
- "value": "469023"
- },
- {
- "label": "国营红光农场",
- "position": [
- "109.957",
- "19.8731"
- ],
- "value": "469023"
- },
- {
- "label": "加乐镇",
- "position": [
- "110.042",
- "19.6276"
- ],
- "value": "469023"
- },
- {
- "label": "国营和岭农场",
- "position": [
- "109.814",
- "19.5367"
- ],
- "value": "469023"
- },
- {
- "label": "国营金安农场",
- "position": [
- "110.123",
- "19.7367"
- ],
- "value": "469023"
- },
- {
- "label": "大丰镇",
- "position": [
- "109.989",
- "19.904"
- ],
- "value": "469023"
- },
- {
- "label": "国营西达农场",
- "position": [
- "109.862",
- "19.4343"
- ],
- "value": "469023"
- },
- {
- "label": "仁兴镇",
- "position": [
- "109.916",
- "19.5062"
- ],
- "value": "469023"
- },
- {
- "label": "国营昆仑农场",
- "position": [
- "109.802",
- "19.5127"
- ],
- "value": "469023"
- }
- ]
- },
- {
- "label": "临高县",
- "position": [
- "109.687697",
- "19.908293"
- ],
- "value": "469024",
- "children": [{
- "label": "南宝镇",
- "position": [
- "109.638",
- "19.7516"
- ],
- "value": "469024"
- },
- {
- "label": "博厚镇",
- "position": [
- "109.716",
- "19.893"
- ],
- "value": "469024"
- },
- {
- "label": "调楼镇",
- "position": [
- "109.61",
- "19.9231"
- ],
- "value": "469024"
- },
- {
- "label": "和舍镇",
- "position": [
- "109.715",
- "19.6717"
- ],
- "value": "469024"
- },
- {
- "label": "东英镇",
- "position": [
- "109.613",
- "19.9349"
- ],
- "value": "469024"
- },
- {
- "label": "临城镇",
- "position": [
- "109.673",
- "19.8932"
- ],
- "value": "469024"
- },
- {
- "label": "波莲镇",
- "position": [
- "109.615",
- "19.8555"
- ],
- "value": "469024"
- },
- {
- "label": "多文镇",
- "position": [
- "109.802",
- "19.7418"
- ],
- "value": "469024"
- },
- {
- "label": "国营红华农场",
- "position": [
- "109.764",
- "19.8244"
- ],
- "value": "469024"
- },
- {
- "label": "国营加来农场",
- "position": [
- "109.651",
- "19.7591"
- ],
- "value": "469024"
- },
- {
- "label": "新盈镇",
- "position": [
- "109.624",
- "19.8719"
- ],
- "value": "469024"
- },
- {
- "label": "皇桐镇",
- "position": [
- "109.816",
- "19.8743"
- ],
- "value": "469024"
- }
- ]
- },
- {
- "label": "白沙黎族自治县",
- "position": [
- "109.452606",
- "19.224584"
- ],
- "value": "469025",
- "children": [{
- "label": "七坊镇",
- "position": [
- "109.298",
- "19.3459"
- ],
- "value": "469025"
- },
- {
- "label": "荣邦乡",
- "position": [
- "109.064",
- "19.4868"
- ],
- "value": "469025"
- },
- {
- "label": "金波乡",
- "position": [
- "109.157",
- "19.2577"
- ],
- "value": "469025"
- },
- {
- "label": "南开乡",
- "position": [
- "109.293",
- "19.0596"
- ],
- "value": "469025"
- },
- {
- "label": "青松乡",
- "position": [
- "109.302",
- "19.0689"
- ],
- "value": "469025"
- },
- {
- "label": "邦溪镇",
- "position": [
- "109.09",
- "19.3912"
- ],
- "value": "469025"
- },
- {
- "label": "国营龙江农场",
- "position": [
- "109.178",
- "19.2369"
- ],
- "value": "469025"
- },
- {
- "label": "细水乡",
- "position": [
- "109.523",
- "19.2096"
- ],
- "value": "469025"
- },
- {
- "label": "元门乡",
- "position": [
- "109.455",
- "19.0981"
- ],
- "value": "469025"
- },
- {
- "label": "打安镇",
- "position": [
- "109.36",
- "19.3756"
- ],
- "value": "469025"
- },
- {
- "label": "阜龙乡",
- "position": [
- "109.436",
- "19.3316"
- ],
- "value": "469025"
- },
- {
- "label": "牙叉镇",
- "position": [
- "109.45",
- "19.3004"
- ],
- "value": "469025"
- },
- {
- "label": "国营白沙农场",
- "position": [
- "109.429",
- "19.2881"
- ],
- "value": "469025"
- },
- {
- "label": "国营邦溪农场",
- "position": [
- "109.18",
- "19.4104"
- ],
- "value": "469025"
- }
- ]
- },
- {
- "label": "昌江黎族自治县",
- "position": [
- "109.053351",
- "19.260968"
- ],
- "value": "469026",
- "children": [{
- "label": "国营霸王岭林场",
- "position": [
- "109.03",
- "19.1725"
- ],
- "value": "469026"
- },
- {
- "label": "乌烈镇",
- "position": [
- "108.81",
- "19.3525"
- ],
- "value": "469026"
- },
- {
- "label": "海南矿业联合有限公司",
- "position": [
- "108.989",
- "19.2538"
- ],
- "value": "469026"
- },
- {
- "label": "十月田镇",
- "position": [
- "108.989",
- "19.3818"
- ],
- "value": "469026"
- },
- {
- "label": "七叉镇",
- "position": [
- "109.069",
- "19.1732"
- ],
- "value": "469026"
- },
- {
- "label": "叉河镇",
- "position": [
- "108.989",
- "19.2536"
- ],
- "value": "469026"
- },
- {
- "label": "石碌镇",
- "position": [
- "109.05",
- "19.2444"
- ],
- "value": "469026"
- },
- {
- "label": "海尾镇",
- "position": [
- "108.952",
- "19.4945"
- ],
- "value": "469026"
- },
- {
- "label": "昌化镇",
- "position": [
- "108.732",
- "19.3836"
- ],
- "value": "469026"
- },
- {
- "label": "国营红林农场",
- "position": [
- "109.088",
- "19.2367"
- ],
- "value": "469026"
- },
- {
- "label": "王下乡",
- "position": [
- "109.094",
- "18.9052"
- ],
- "value": "469026"
- }
- ]
- },
- {
- "label": "乐东黎族自治县",
- "position": [
- "109.175444",
- "18.74758"
- ],
- "value": "469027",
- "children": [{
- "label": "万冲镇",
- "position": [
- "109.339",
- "18.7838"
- ],
- "value": "469027"
- },
- {
- "label": "国营山荣农场",
- "position": [
- "109.223",
- "18.7507"
- ],
- "value": "469027"
- },
- {
- "label": "利国镇",
- "position": [
- "108.965",
- "18.529"
- ],
- "value": "469027"
- },
- {
- "label": "莺歌海镇",
- "position": [
- "108.728",
- "18.4959"
- ],
- "value": "469027"
- },
- {
- "label": "国营保国农场",
- "position": [
- "109.245",
- "18.6612"
- ],
- "value": "469027"
- },
- {
- "label": "抱由镇",
- "position": [
- "109.138",
- "18.8948"
- ],
- "value": "469027"
- },
- {
- "label": "国营乐光农场",
- "position": [
- "109.192",
- "18.5331"
- ],
- "value": "469027"
- },
- {
- "label": "九所镇",
- "position": [
- "108.927",
- "18.5276"
- ],
- "value": "469027"
- },
- {
- "label": "大安镇",
- "position": [
- "109.225",
- "18.5876"
- ],
- "value": "469027"
- },
- {
- "label": "国营莺歌海盐场",
- "position": [
- "108.729",
- "18.5523"
- ],
- "value": "469027"
- },
- {
- "label": "佛罗镇",
- "position": [
- "108.792",
- "18.5833"
- ],
- "value": "469027"
- },
- {
- "label": "国营尖峰岭林业公司",
- "position": [
- "109.027",
- "18.726"
- ],
- "value": "469027"
- },
- {
- "label": "黄流镇",
- "position": [
- "108.808",
- "18.597"
- ],
- "value": "469027"
- },
- {
- "label": "志仲镇",
- "position": [
- "109.224",
- "18.5932"
- ],
- "value": "469027"
- },
- {
- "label": "千家镇",
- "position": [
- "109.15",
- "18.6353"
- ],
- "value": "469027"
- },
- {
- "label": "尖峰镇",
- "position": [
- "108.7",
- "18.7124"
- ],
- "value": "469027"
- }
- ]
- },
- {
- "label": "陵水黎族自治县",
- "position": [
- "110.037218",
- "18.505006"
- ],
- "value": "469028",
- "children": [{
- "label": "黎安镇",
- "position": [
- "110.146",
- "18.4342"
- ],
- "value": "469028"
- },
- {
- "label": "国营吊罗山林业公司",
- "position": [
- "109.948",
- "18.6553"
- ],
- "value": "469028"
- },
- {
- "label": "新村镇",
- "position": [
- "110.026",
- "18.446"
- ],
- "value": "469028"
- },
- {
- "label": "国营南平农场",
- "position": [
- "109.833",
- "18.6336"
- ],
- "value": "469028"
- },
- {
- "label": "文罗镇",
- "position": [
- "109.914",
- "18.5734"
- ],
- "value": "469028"
- },
- {
- "label": "椰林镇",
- "position": [
- "110.02",
- "18.4825"
- ],
- "value": "469028"
- },
- {
- "label": "本号镇",
- "position": [
- "109.856",
- "18.6617"
- ],
- "value": "469028"
- },
- {
- "label": "群英乡",
- "position": [
- "109.847",
- "18.5697"
- ],
- "value": "469028"
- },
- {
- "label": "提蒙乡",
- "position": [
- "110.013",
- "18.6404"
- ],
- "value": "469028"
- },
- {
- "label": "光坡镇",
- "position": [
- "110.04",
- "18.5564"
- ],
- "value": "469028"
- },
- {
- "label": "三才镇",
- "position": [
- "109.963",
- "18.4915"
- ],
- "value": "469028"
- },
- {
- "label": "隆广镇",
- "position": [
- "109.858",
- "18.4802"
- ],
- "value": "469028"
- },
- {
- "label": "英州镇",
- "position": [
- "109.876",
- "18.4739"
- ],
- "value": "469028"
- },
- {
- "label": "国营岭门农场",
- "position": [
- "110.046",
- "18.6244"
- ],
- "value": "469028"
- }
- ]
- },
- {
- "label": "保亭黎族苗族自治县",
- "position": [
- "109.70245",
- "18.636371"
- ],
- "value": "469029",
- "children": [{
- "label": "海南保亭热带作物研究所",
- "position": [
- "109.709",
- "18.6282"
- ],
- "value": "469029"
- },
- {
- "label": "国营金江农场",
- "position": [
- "109.682",
- "18.547"
- ],
- "value": "469029"
- },
- {
- "label": "新政镇",
- "position": [
- "109.578",
- "18.5685"
- ],
- "value": "469029"
- },
- {
- "label": "加茂镇",
- "position": [
- "109.719",
- "18.5033"
- ],
- "value": "469029"
- },
- {
- "label": "南林乡",
- "position": [
- "109.577",
- "18.3893"
- ],
- "value": "469029"
- },
- {
- "label": "国营新星农场",
- "position": [
- "109.729",
- "18.6749"
- ],
- "value": "469029"
- },
- {
- "label": "保城镇",
- "position": [
- "109.747",
- "18.6854"
- ],
- "value": "469029"
- },
- {
- "label": "国营三道农场",
- "position": [
- "109.649",
- "18.5179"
- ],
- "value": "469029"
- },
- {
- "label": "毛感乡",
- "position": [
- "109.503",
- "18.5563"
- ],
- "value": "469029"
- },
- {
- "label": "什玲镇",
- "position": [
- "109.74",
- "18.6941"
- ],
- "value": "469029"
- },
- {
- "label": "六弓乡",
- "position": [
- "109.803",
- "18.5393"
- ],
- "value": "469029"
- },
- {
- "label": "响水镇",
- "position": [
- "109.61",
- "18.5626"
- ],
- "value": "469029"
- },
- {
- "label": "三道镇",
- "position": [
- "109.66",
- "18.5251"
- ],
- "value": "469029"
- }
- ]
- },
- {
- "label": "琼中黎族苗族自治县",
- "position": [
- "109.839996",
- "19.03557"
- ],
- "value": "469030",
- "children": [{
- "label": "湾岭镇",
- "position": [
- "109.9",
- "19.1334"
- ],
- "value": "469030"
- },
- {
- "label": "吊罗山乡",
- "position": [
- "109.917",
- "18.8198"
- ],
- "value": "469030"
- },
- {
- "label": "什运乡",
- "position": [
- "109.583",
- "18.9237"
- ],
- "value": "469030"
- },
- {
- "label": "和平镇",
- "position": [
- "109.894",
- "18.899"
- ],
- "value": "469030"
- },
- {
- "label": "国营乌石农场",
- "position": [
- "109.937",
- "19.0977"
- ],
- "value": "469030"
- },
- {
- "label": "国营加钗农场",
- "position": [
- "109.783",
- "19.0265"
- ],
- "value": "469030"
- },
- {
- "label": "国营阳江农场",
- "position": [
- "109.823",
- "19.2127"
- ],
- "value": "469030"
- },
- {
- "label": "营根镇",
- "position": [
- "109.733",
- "18.9748"
- ],
- "value": "469030"
- },
- {
- "label": "上安乡",
- "position": [
- "109.731",
- "18.9133"
- ],
- "value": "469030"
- },
- {
- "label": "国营黎母山林业公司",
- "position": [
- "109.703",
- "19.1542"
- ],
- "value": "469030"
- },
- {
- "label": "中平镇",
- "position": [
- "110.107",
- "19.0716"
- ],
- "value": "469030"
- },
- {
- "label": "长征镇",
- "position": [
- "109.799",
- "18.8976"
- ],
- "value": "469030"
- },
- {
- "label": "国营长征农场",
- "position": [
- "109.899",
- "18.9965"
- ],
- "value": "469030"
- },
- {
- "label": "红毛镇",
- "position": [
- "109.734",
- "19.0657"
- ],
- "value": "469030"
- },
- {
- "label": "黎母山镇",
- "position": [
- "109.704",
- "19.2577"
- ],
- "value": "469030"
- }
- ]
- }
- ]
- },
- {
- "label": "重庆市",
- "position": [
- "106.504962",
- "29.533155"
- ],
- "value": "500000",
- "children": [{
- "label": "重庆城区",
- "position": [
- "106.504962",
- "29.533155"
- ],
- "value": "500100",
- "children": [{
- "label": "万州区",
- "position": [
- "108.380246",
- "30.807807"
- ],
- "value": "500101"
- },
- {
- "label": "涪陵区",
- "position": [
- "107.394905",
- "29.703652"
- ],
- "value": "500102"
- },
- {
- "label": "渝中区",
- "position": [
- "106.56288",
- "29.556742"
- ],
- "value": "500103"
- },
- {
- "label": "大渡口区",
- "position": [
- "106.48613",
- "29.481002"
- ],
- "value": "500104"
- },
- {
- "label": "江北区",
- "position": [
- "106.532844",
- "29.575352"
- ],
- "value": "500105"
- },
- {
- "label": "沙坪坝区",
- "position": [
- "106.4542",
- "29.541224"
- ],
- "value": "500106"
- },
- {
- "label": "九龙坡区",
- "position": [
- "106.480989",
- "29.523492"
- ],
- "value": "500107"
- },
- {
- "label": "南岸区",
- "position": [
- "106.560813",
- "29.523992"
- ],
- "value": "500108"
- },
- {
- "label": "北碚区",
- "position": [
- "106.437868",
- "29.82543"
- ],
- "value": "500109"
- },
- {
- "label": "綦江区",
- "position": [
- "106.651417",
- "29.028091"
- ],
- "value": "500110"
- },
- {
- "label": "大足区",
- "position": [
- "105.715319",
- "29.700498"
- ],
- "value": "500111"
- },
- {
- "label": "渝北区",
- "position": [
- "106.512851",
- "29.601451"
- ],
- "value": "500112"
- },
- {
- "label": "巴南区",
- "position": [
- "106.519423",
- "29.381919"
- ],
- "value": "500113"
- },
- {
- "label": "黔江区",
- "position": [
- "108.782577",
- "29.527548"
- ],
- "value": "500114"
- },
- {
- "label": "长寿区",
- "position": [
- "107.074854",
- "29.833671"
- ],
- "value": "500115"
- },
- {
- "label": "江津区",
- "position": [
- "106.253156",
- "29.283387"
- ],
- "value": "500116"
- },
- {
- "label": "合川区",
- "position": [
- "106.265554",
- "29.990993"
- ],
- "value": "500117"
- },
- {
- "label": "永川区",
- "position": [
- "105.894714",
- "29.348748"
- ],
- "value": "500118"
- },
- {
- "label": "南川区",
- "position": [
- "107.098153",
- "29.156646"
- ],
- "value": "500119"
- },
- {
- "label": "璧山区",
- "position": [
- "106.231126",
- "29.593581"
- ],
- "value": "500120"
- },
- {
- "label": "铜梁区",
- "position": [
- "106.054948",
- "29.839944"
- ],
- "value": "500151"
- },
- {
- "label": "潼南区",
- "position": [
- "105.841818",
- "30.189554"
- ],
- "value": "500152"
- },
- {
- "label": "荣昌区",
- "position": [
- "105.594061",
- "29.403627"
- ],
- "value": "500153"
- },
- {
- "label": "开州区",
- "position": [
- "108.413317",
- "31.167735"
- ],
- "value": "500154"
- },
- {
- "label": "梁平区",
- "position": [
- "107.800034",
- "30.672168"
- ],
- "value": "500155"
- },
- {
- "label": "武隆区",
- "position": [
- "107.75655",
- "29.32376"
- ],
- "value": "500156"
- }
- ]
- },
- {
- "label": "重庆郊县",
- "position": [
- "108.170255",
- "29.291965"
- ],
- "value": "500200",
- "children": [{
- "label": "城口县",
- "position": [
- "108.6649",
- "31.946293"
- ],
- "value": "500229"
- },
- {
- "label": "丰都县",
- "position": [
- "107.73248",
- "29.866424"
- ],
- "value": "500230"
- },
- {
- "label": "垫江县",
- "position": [
- "107.348692",
- "30.330012"
- ],
- "value": "500231"
- },
- {
- "label": "忠县",
- "position": [
- "108.037518",
- "30.291537"
- ],
- "value": "500233"
- },
- {
- "label": "云阳县",
- "position": [
- "108.697698",
- "30.930529"
- ],
- "value": "500235"
- },
- {
- "label": "奉节县",
- "position": [
- "109.465774",
- "31.019967"
- ],
- "value": "500236"
- },
- {
- "label": "巫山县",
- "position": [
- "109.878928",
- "31.074843"
- ],
- "value": "500237"
- },
- {
- "label": "巫溪县",
- "position": [
- "109.628912",
- "31.3966"
- ],
- "value": "500238"
- },
- {
- "label": "石柱土家族自治县",
- "position": [
- "108.112448",
- "29.99853"
- ],
- "value": "500240"
- },
- {
- "label": "秀山土家族苗族自治县",
- "position": [
- "108.996043",
- "28.444772"
- ],
- "value": "500241"
- },
- {
- "label": "酉阳土家族苗族自治县",
- "position": [
- "108.767201",
- "28.839828"
- ],
- "value": "500242"
- },
- {
- "label": "彭水苗族土家族自治县",
- "position": [
- "108.166551",
- "29.293856"
- ],
- "value": "500243"
- }
- ]
- }
- ]
- },
- {
- "label": "四川省",
- "position": [
- "104.065735",
- "30.659462"
- ],
- "value": "510000",
- "children": [{
- "label": "成都市",
- "position": [
- "104.065735",
- "30.659462"
- ],
- "value": "510100",
- "children": [{
- "label": "锦江区",
- "position": [
- "104.080989",
- "30.657689"
- ],
- "value": "510104"
- },
- {
- "label": "青羊区",
- "position": [
- "104.055731",
- "30.667648"
- ],
- "value": "510105"
- },
- {
- "label": "金牛区",
- "position": [
- "104.043487",
- "30.692058"
- ],
- "value": "510106"
- },
- {
- "label": "武侯区",
- "position": [
- "104.05167",
- "30.630862"
- ],
- "value": "510107"
- },
- {
- "label": "成华区",
- "position": [
- "104.103077",
- "30.660275"
- ],
- "value": "510108"
- },
- {
- "label": "龙泉驿区",
- "position": [
- "104.269181",
- "30.56065"
- ],
- "value": "510112"
- },
- {
- "label": "青白江区",
- "position": [
- "104.25494",
- "30.883438"
- ],
- "value": "510113"
- },
- {
- "label": "新都区",
- "position": [
- "104.16022",
- "30.824223"
- ],
- "value": "510114"
- },
- {
- "label": "温江区",
- "position": [
- "103.836776",
- "30.697996"
- ],
- "value": "510115"
- },
- {
- "label": "双流区",
- "position": [
- "103.922706",
- "30.573243"
- ],
- "value": "510116"
- },
- {
- "label": "郫都区",
- "position": [
- "103.887842",
- "30.808752"
- ],
- "value": "510117"
- },
- {
- "label": "新津区",
- "position": [
- "103.812449",
- "30.414284"
- ],
- "value": "510118"
- },
- {
- "label": "金堂县",
- "position": [
- "104.415604",
- "30.858417"
- ],
- "value": "510121"
- },
- {
- "label": "大邑县",
- "position": [
- "103.522397",
- "30.586602"
- ],
- "value": "510129"
- },
- {
- "label": "蒲江县",
- "position": [
- "103.511541",
- "30.194359"
- ],
- "value": "510131"
- },
- {
- "label": "都江堰市",
- "position": [
- "103.627898",
- "30.99114"
- ],
- "value": "510181"
- },
- {
- "label": "彭州市",
- "position": [
- "103.941173",
- "30.985161"
- ],
- "value": "510182"
- },
- {
- "label": "邛崃市",
- "position": [
- "103.46143",
- "30.413271"
- ],
- "value": "510183"
- },
- {
- "label": "崇州市",
- "position": [
- "103.671049",
- "30.631478"
- ],
- "value": "510184"
- },
- {
- "label": "简阳市",
- "position": [
- "104.550339",
- "30.390666"
- ],
- "value": "510185"
- }
- ]
- },
- {
- "label": "自贡市",
- "position": [
- "104.773447",
- "29.352765"
- ],
- "value": "510300",
- "children": [{
- "label": "自流井区",
- "position": [
- "104.778188",
- "29.343231"
- ],
- "value": "510302"
- },
- {
- "label": "贡井区",
- "position": [
- "104.714372",
- "29.345675"
- ],
- "value": "510303"
- },
- {
- "label": "大安区",
- "position": [
- "104.783229",
- "29.367136"
- ],
- "value": "510304"
- },
- {
- "label": "沿滩区",
- "position": [
- "104.876417",
- "29.272521"
- ],
- "value": "510311"
- },
- {
- "label": "荣县",
- "position": [
- "104.423932",
- "29.454851"
- ],
- "value": "510321"
- },
- {
- "label": "富顺县",
- "position": [
- "104.984256",
- "29.181282"
- ],
- "value": "510322"
- }
- ]
- },
- {
- "label": "攀枝花市",
- "position": [
- "101.716007",
- "26.580446"
- ],
- "value": "510400",
- "children": [{
- "label": "东区",
- "position": [
- "101.715134",
- "26.580887"
- ],
- "value": "510402"
- },
- {
- "label": "西区",
- "position": [
- "101.637969",
- "26.596776"
- ],
- "value": "510403"
- },
- {
- "label": "仁和区",
- "position": [
- "101.737916",
- "26.497185"
- ],
- "value": "510411"
- },
- {
- "label": "米易县",
- "position": [
- "102.109877",
- "26.887474"
- ],
- "value": "510421"
- },
- {
- "label": "盐边县",
- "position": [
- "101.851848",
- "26.677619"
- ],
- "value": "510422"
- }
- ]
- },
- {
- "label": "泸州市",
- "position": [
- "105.443348",
- "28.889138"
- ],
- "value": "510500",
- "children": [{
- "label": "江阳区",
- "position": [
- "105.445131",
- "28.882889"
- ],
- "value": "510502"
- },
- {
- "label": "纳溪区",
- "position": [
- "105.37721",
- "28.77631"
- ],
- "value": "510503"
- },
- {
- "label": "龙马潭区",
- "position": [
- "105.435228",
- "28.897572"
- ],
- "value": "510504"
- },
- {
- "label": "泸县",
- "position": [
- "105.376335",
- "29.151288"
- ],
- "value": "510521"
- },
- {
- "label": "合江县",
- "position": [
- "105.834098",
- "28.810325"
- ],
- "value": "510522"
- },
- {
- "label": "叙永县",
- "position": [
- "105.437775",
- "28.167919"
- ],
- "value": "510524"
- },
- {
- "label": "古蔺县",
- "position": [
- "105.813359",
- "28.03948"
- ],
- "value": "510525"
- }
- ]
- },
- {
- "label": "德阳市",
- "position": [
- "104.398651",
- "31.127991"
- ],
- "value": "510600",
- "children": [{
- "label": "旌阳区",
- "position": [
- "104.389648",
- "31.130428"
- ],
- "value": "510603"
- },
- {
- "label": "罗江区",
- "position": [
- "104.507126",
- "31.303281"
- ],
- "value": "510604"
- },
- {
- "label": "中江县",
- "position": [
- "104.677831",
- "31.03681"
- ],
- "value": "510623"
- },
- {
- "label": "广汉市",
- "position": [
- "104.281903",
- "30.97715"
- ],
- "value": "510681"
- },
- {
- "label": "什邡市",
- "position": [
- "104.173653",
- "31.126881"
- ],
- "value": "510682"
- },
- {
- "label": "绵竹市",
- "position": [
- "104.200162",
- "31.343084"
- ],
- "value": "510683"
- }
- ]
- },
- {
- "label": "绵阳市",
- "position": [
- "104.741722",
- "31.46402"
- ],
- "value": "510700",
- "children": [{
- "label": "涪城区",
- "position": [
- "104.740971",
- "31.463557"
- ],
- "value": "510703"
- },
- {
- "label": "游仙区",
- "position": [
- "104.770006",
- "31.484772"
- ],
- "value": "510704"
- },
- {
- "label": "安州区",
- "position": [
- "104.560341",
- "31.53894"
- ],
- "value": "510705"
- },
- {
- "label": "三台县",
- "position": [
- "105.090316",
- "31.090909"
- ],
- "value": "510722"
- },
- {
- "label": "盐亭县",
- "position": [
- "105.391991",
- "31.22318"
- ],
- "value": "510723"
- },
- {
- "label": "梓潼县",
- "position": [
- "105.16353",
- "31.635225"
- ],
- "value": "510725"
- },
- {
- "label": "北川羌族自治县",
- "position": [
- "104.468069",
- "31.615863"
- ],
- "value": "510726"
- },
- {
- "label": "平武县",
- "position": [
- "104.530555",
- "32.407588"
- ],
- "value": "510727"
- },
- {
- "label": "江油市",
- "position": [
- "104.744431",
- "31.776386"
- ],
- "value": "510781"
- }
- ]
- },
- {
- "label": "广元市",
- "position": [
- "105.829757",
- "32.433668"
- ],
- "value": "510800",
- "children": [{
- "label": "利州区",
- "position": [
- "105.826194",
- "32.432276"
- ],
- "value": "510802"
- },
- {
- "label": "昭化区",
- "position": [
- "105.964121",
- "32.322788"
- ],
- "value": "510811"
- },
- {
- "label": "朝天区",
- "position": [
- "105.88917",
- "32.642632"
- ],
- "value": "510812"
- },
- {
- "label": "旺苍县",
- "position": [
- "106.290426",
- "32.22833"
- ],
- "value": "510821"
- },
- {
- "label": "青川县",
- "position": [
- "105.238847",
- "32.585655"
- ],
- "value": "510822"
- },
- {
- "label": "剑阁县",
- "position": [
- "105.527035",
- "32.286517"
- ],
- "value": "510823"
- },
- {
- "label": "苍溪县",
- "position": [
- "105.939706",
- "31.732251"
- ],
- "value": "510824"
- }
- ]
- },
- {
- "label": "遂宁市",
- "position": [
- "105.571331",
- "30.513311"
- ],
- "value": "510900",
- "children": [{
- "label": "船山区",
- "position": [
- "105.582215",
- "30.502647"
- ],
- "value": "510903"
- },
- {
- "label": "安居区",
- "position": [
- "105.459383",
- "30.346121"
- ],
- "value": "510904"
- },
- {
- "label": "蓬溪县",
- "position": [
- "105.713699",
- "30.774883"
- ],
- "value": "510921"
- },
- {
- "label": "大英县",
- "position": [
- "105.252187",
- "30.581571"
- ],
- "value": "510923"
- },
- {
- "label": "射洪市",
- "position": [
- "105.381849",
- "30.868752"
- ],
- "value": "510981"
- }
- ]
- },
- {
- "label": "内江市",
- "position": [
- "105.066138",
- "29.58708"
- ],
- "value": "511000",
- "children": [{
- "label": "市中区",
- "position": [
- "105.065467",
- "29.585265"
- ],
- "value": "511002"
- },
- {
- "label": "东兴区",
- "position": [
- "105.067203",
- "29.600107"
- ],
- "value": "511011"
- },
- {
- "label": "威远县",
- "position": [
- "104.668327",
- "29.52686"
- ],
- "value": "511024"
- },
- {
- "label": "资中县",
- "position": [
- "104.852463",
- "29.775295"
- ],
- "value": "511025"
- },
- {
- "label": "隆昌市",
- "position": [
- "105.288074",
- "29.338162"
- ],
- "value": "511083"
- }
- ]
- },
- {
- "label": "乐山市",
- "position": [
- "103.761263",
- "29.582024"
- ],
- "value": "511100",
- "children": [{
- "label": "市中区",
- "position": [
- "103.75539",
- "29.588327"
- ],
- "value": "511102"
- },
- {
- "label": "沙湾区",
- "position": [
- "103.549961",
- "29.416536"
- ],
- "value": "511111"
- },
- {
- "label": "五通桥区",
- "position": [
- "103.816837",
- "29.406186"
- ],
- "value": "511112"
- },
- {
- "label": "金口河区",
- "position": [
- "103.077831",
- "29.24602"
- ],
- "value": "511113"
- },
- {
- "label": "犍为县",
- "position": [
- "103.944266",
- "29.209782"
- ],
- "value": "511123"
- },
- {
- "label": "井研县",
- "position": [
- "104.06885",
- "29.651645"
- ],
- "value": "511124"
- },
- {
- "label": "夹江县",
- "position": [
- "103.578862",
- "29.741019"
- ],
- "value": "511126"
- },
- {
- "label": "沐川县",
- "position": [
- "103.90211",
- "28.956338"
- ],
- "value": "511129"
- },
- {
- "label": "峨边彝族自治县",
- "position": [
- "103.262148",
- "29.230271"
- ],
- "value": "511132"
- },
- {
- "label": "马边彝族自治县",
- "position": [
- "103.546851",
- "28.838933"
- ],
- "value": "511133"
- },
- {
- "label": "峨眉山市",
- "position": [
- "103.492488",
- "29.597478"
- ],
- "value": "511181"
- }
- ]
- },
- {
- "label": "南充市",
- "position": [
- "106.082974",
- "30.795281"
- ],
- "value": "511300",
- "children": [{
- "label": "顺庆区",
- "position": [
- "106.084091",
- "30.795572"
- ],
- "value": "511302"
- },
- {
- "label": "高坪区",
- "position": [
- "106.108996",
- "30.781809"
- ],
- "value": "511303"
- },
- {
- "label": "嘉陵区",
- "position": [
- "106.067027",
- "30.762976"
- ],
- "value": "511304"
- },
- {
- "label": "南部县",
- "position": [
- "106.061138",
- "31.349407"
- ],
- "value": "511321"
- },
- {
- "label": "营山县",
- "position": [
- "106.564893",
- "31.075907"
- ],
- "value": "511322"
- },
- {
- "label": "蓬安县",
- "position": [
- "106.413488",
- "31.027978"
- ],
- "value": "511323"
- },
- {
- "label": "仪陇县",
- "position": [
- "106.297083",
- "31.271261"
- ],
- "value": "511324"
- },
- {
- "label": "西充县",
- "position": [
- "105.893021",
- "30.994616"
- ],
- "value": "511325"
- },
- {
- "label": "阆中市",
- "position": [
- "105.975266",
- "31.580466"
- ],
- "value": "511381"
- }
- ]
- },
- {
- "label": "眉山市",
- "position": [
- "103.831788",
- "30.048318"
- ],
- "value": "511400",
- "children": [{
- "label": "东坡区",
- "position": [
- "103.831553",
- "30.048128"
- ],
- "value": "511402"
- },
- {
- "label": "彭山区",
- "position": [
- "103.8701",
- "30.192298"
- ],
- "value": "511403"
- },
- {
- "label": "仁寿县",
- "position": [
- "104.147646",
- "29.996721"
- ],
- "value": "511421"
- },
- {
- "label": "洪雅县",
- "position": [
- "103.375006",
- "29.904867"
- ],
- "value": "511423"
- },
- {
- "label": "丹棱县",
- "position": [
- "103.518333",
- "30.012751"
- ],
- "value": "511424"
- },
- {
- "label": "青神县",
- "position": [
- "103.846131",
- "29.831469"
- ],
- "value": "511425"
- }
- ]
- },
- {
- "label": "宜宾市",
- "position": [
- "104.630825",
- "28.760189"
- ],
- "value": "511500",
- "children": [{
- "label": "翠屏区",
- "position": [
- "104.630231",
- "28.760179"
- ],
- "value": "511502"
- },
- {
- "label": "南溪区",
- "position": [
- "104.981133",
- "28.839806"
- ],
- "value": "511503"
- },
- {
- "label": "叙州区",
- "position": [
- "104.541489",
- "28.695678"
- ],
- "value": "511504"
- },
- {
- "label": "江安县",
- "position": [
- "105.068697",
- "28.728102"
- ],
- "value": "511523"
- },
- {
- "label": "长宁县",
- "position": [
- "104.921116",
- "28.577271"
- ],
- "value": "511524"
- },
- {
- "label": "高县",
- "position": [
- "104.519187",
- "28.435676"
- ],
- "value": "511525"
- },
- {
- "label": "珙县",
- "position": [
- "104.712268",
- "28.449041"
- ],
- "value": "511526"
- },
- {
- "label": "筠连县",
- "position": [
- "104.507848",
- "28.162017"
- ],
- "value": "511527"
- },
- {
- "label": "兴文县",
- "position": [
- "105.236549",
- "28.302988"
- ],
- "value": "511528"
- },
- {
- "label": "屏山县",
- "position": [
- "104.162617",
- "28.64237"
- ],
- "value": "511529"
- }
- ]
- },
- {
- "label": "广安市",
- "position": [
- "106.633369",
- "30.456398"
- ],
- "value": "511600",
- "children": [{
- "label": "广安区",
- "position": [
- "106.632907",
- "30.456462"
- ],
- "value": "511602"
- },
- {
- "label": "前锋区",
- "position": [
- "106.893277",
- "30.4963"
- ],
- "value": "511603"
- },
- {
- "label": "岳池县",
- "position": [
- "106.444451",
- "30.533538"
- ],
- "value": "511621"
- },
- {
- "label": "武胜县",
- "position": [
- "106.292473",
- "30.344291"
- ],
- "value": "511622"
- },
- {
- "label": "邻水县",
- "position": [
- "106.934968",
- "30.334323"
- ],
- "value": "511623"
- },
- {
- "label": "华蓥市",
- "position": [
- "106.777882",
- "30.380574"
- ],
- "value": "511681"
- }
- ]
- },
- {
- "label": "达州市",
- "position": [
- "107.502262",
- "31.209484"
- ],
- "value": "511700",
- "children": [{
- "label": "通川区",
- "position": [
- "107.501062",
- "31.213522"
- ],
- "value": "511702"
- },
- {
- "label": "达川区",
- "position": [
- "107.507926",
- "31.199062"
- ],
- "value": "511703"
- },
- {
- "label": "宣汉县",
- "position": [
- "107.722254",
- "31.355025"
- ],
- "value": "511722"
- },
- {
- "label": "开江县",
- "position": [
- "107.864135",
- "31.085537"
- ],
- "value": "511723"
- },
- {
- "label": "大竹县",
- "position": [
- "107.20742",
- "30.736289"
- ],
- "value": "511724"
- },
- {
- "label": "渠县",
- "position": [
- "106.970746",
- "30.836348"
- ],
- "value": "511725"
- },
- {
- "label": "万源市",
- "position": [
- "108.037548",
- "32.06777"
- ],
- "value": "511781"
- }
- ]
- },
- {
- "label": "雅安市",
- "position": [
- "103.001033",
- "29.987722"
- ],
- "value": "511800",
- "children": [{
- "label": "雨城区",
- "position": [
- "103.003398",
- "29.981831"
- ],
- "value": "511802"
- },
- {
- "label": "名山区",
- "position": [
- "103.112214",
- "30.084718"
- ],
- "value": "511803"
- },
- {
- "label": "荥经县",
- "position": [
- "102.844674",
- "29.795529"
- ],
- "value": "511822"
- },
- {
- "label": "汉源县",
- "position": [
- "102.677145",
- "29.349915"
- ],
- "value": "511823"
- },
- {
- "label": "石棉县",
- "position": [
- "102.35962",
- "29.234063"
- ],
- "value": "511824"
- },
- {
- "label": "天全县",
- "position": [
- "102.763462",
- "30.059955"
- ],
- "value": "511825"
- },
- {
- "label": "芦山县",
- "position": [
- "102.924016",
- "30.152907"
- ],
- "value": "511826"
- },
- {
- "label": "宝兴县",
- "position": [
- "102.813377",
- "30.369026"
- ],
- "value": "511827"
- }
- ]
- },
- {
- "label": "巴中市",
- "position": [
- "106.753669",
- "31.858809"
- ],
- "value": "511900",
- "children": [{
- "label": "巴州区",
- "position": [
- "106.753671",
- "31.858366"
- ],
- "value": "511902"
- },
- {
- "label": "恩阳区",
- "position": [
- "106.486515",
- "31.816336"
- ],
- "value": "511903"
- },
- {
- "label": "通江县",
- "position": [
- "107.247621",
- "31.91212"
- ],
- "value": "511921"
- },
- {
- "label": "南江县",
- "position": [
- "106.843418",
- "32.353164"
- ],
- "value": "511922"
- },
- {
- "label": "平昌县",
- "position": [
- "107.101937",
- "31.562814"
- ],
- "value": "511923"
- }
- ]
- },
- {
- "label": "资阳市",
- "position": [
- "104.641917",
- "30.122211"
- ],
- "value": "512000",
- "children": [{
- "label": "雁江区",
- "position": [
- "104.642338",
- "30.121686"
- ],
- "value": "512002"
- },
- {
- "label": "安岳县",
- "position": [
- "105.336764",
- "30.099206"
- ],
- "value": "512021"
- },
- {
- "label": "乐至县",
- "position": [
- "105.031142",
- "30.275619"
- ],
- "value": "512022"
- }
- ]
- },
- {
- "label": "阿坝藏族羌族自治州",
- "position": [
- "102.221374",
- "31.899792"
- ],
- "value": "513200",
- "children": [{
- "label": "马尔康市",
- "position": [
- "102.221187",
- "31.899761"
- ],
- "value": "513201"
- },
- {
- "label": "汶川县",
- "position": [
- "103.580675",
- "31.47463"
- ],
- "value": "513221"
- },
- {
- "label": "理县",
- "position": [
- "103.165486",
- "31.436764"
- ],
- "value": "513222"
- },
- {
- "label": "茂县",
- "position": [
- "103.850684",
- "31.680407"
- ],
- "value": "513223"
- },
- {
- "label": "松潘县",
- "position": [
- "103.599177",
- "32.63838"
- ],
- "value": "513224"
- },
- {
- "label": "九寨沟县",
- "position": [
- "104.236344",
- "33.262097"
- ],
- "value": "513225"
- },
- {
- "label": "金川县",
- "position": [
- "102.064647",
- "31.476356"
- ],
- "value": "513226"
- },
- {
- "label": "小金县",
- "position": [
- "102.363193",
- "30.999016"
- ],
- "value": "513227"
- },
- {
- "label": "黑水县",
- "position": [
- "102.990805",
- "32.061721"
- ],
- "value": "513228"
- },
- {
- "label": "壤塘县",
- "position": [
- "100.979136",
- "32.264887"
- ],
- "value": "513230"
- },
- {
- "label": "阿坝县",
- "position": [
- "101.700985",
- "32.904223"
- ],
- "value": "513231"
- },
- {
- "label": "若尔盖县",
- "position": [
- "102.963726",
- "33.575934"
- ],
- "value": "513232"
- },
- {
- "label": "红原县",
- "position": [
- "102.544906",
- "32.793902"
- ],
- "value": "513233"
- }
- ]
- },
- {
- "label": "甘孜藏族自治州",
- "position": [
- "101.963815",
- "30.050663"
- ],
- "value": "513300",
- "children": [{
- "label": "康定市",
- "position": [
- "101.964057",
- "30.050738"
- ],
- "value": "513301"
- },
- {
- "label": "泸定县",
- "position": [
- "102.233225",
- "29.912482"
- ],
- "value": "513322"
- },
- {
- "label": "丹巴县",
- "position": [
- "101.886125",
- "30.877083"
- ],
- "value": "513323"
- },
- {
- "label": "九龙县",
- "position": [
- "101.506942",
- "29.001975"
- ],
- "value": "513324"
- },
- {
- "label": "雅江县",
- "position": [
- "101.015735",
- "30.03225"
- ],
- "value": "513325"
- },
- {
- "label": "道孚县",
- "position": [
- "101.123327",
- "30.978767"
- ],
- "value": "513326"
- },
- {
- "label": "炉霍县",
- "position": [
- "100.679495",
- "31.392674"
- ],
- "value": "513327"
- },
- {
- "label": "甘孜县",
- "position": [
- "99.991753",
- "31.61975"
- ],
- "value": "513328"
- },
- {
- "label": "新龙县",
- "position": [
- "100.312094",
- "30.93896"
- ],
- "value": "513329"
- },
- {
- "label": "德格县",
- "position": [
- "98.57999",
- "31.806729"
- ],
- "value": "513330"
- },
- {
- "label": "白玉县",
- "position": [
- "98.824343",
- "31.208805"
- ],
- "value": "513331"
- },
- {
- "label": "石渠县",
- "position": [
- "98.100887",
- "32.975302"
- ],
- "value": "513332"
- },
- {
- "label": "色达县",
- "position": [
- "100.331657",
- "32.268777"
- ],
- "value": "513333"
- },
- {
- "label": "理塘县",
- "position": [
- "100.269862",
- "29.991807"
- ],
- "value": "513334"
- },
- {
- "label": "巴塘县",
- "position": [
- "99.109037",
- "30.005723"
- ],
- "value": "513335"
- },
- {
- "label": "乡城县",
- "position": [
- "99.799943",
- "28.930855"
- ],
- "value": "513336"
- },
- {
- "label": "稻城县",
- "position": [
- "100.296689",
- "29.037544"
- ],
- "value": "513337"
- },
- {
- "label": "得荣县",
- "position": [
- "99.288036",
- "28.71134"
- ],
- "value": "513338"
- }
- ]
- },
- {
- "label": "凉山彝族自治州",
- "position": [
- "102.258746",
- "27.886762"
- ],
- "value": "513400",
- "children": [{
- "label": "西昌市",
- "position": [
- "102.258758",
- "27.885786"
- ],
- "value": "513401"
- },
- {
- "label": "木里藏族自治县",
- "position": [
- "101.280184",
- "27.926859"
- ],
- "value": "513422"
- },
- {
- "label": "盐源县",
- "position": [
- "101.508909",
- "27.423415"
- ],
- "value": "513423"
- },
- {
- "label": "德昌县",
- "position": [
- "102.178845",
- "27.403827"
- ],
- "value": "513424"
- },
- {
- "label": "会理县",
- "position": [
- "102.249548",
- "26.658702"
- ],
- "value": "513425"
- },
- {
- "label": "会东县",
- "position": [
- "102.578985",
- "26.630713"
- ],
- "value": "513426"
- },
- {
- "label": "宁南县",
- "position": [
- "102.757374",
- "27.065205"
- ],
- "value": "513427"
- },
- {
- "label": "普格县",
- "position": [
- "102.541082",
- "27.376828"
- ],
- "value": "513428"
- },
- {
- "label": "布拖县",
- "position": [
- "102.808801",
- "27.709062"
- ],
- "value": "513429"
- },
- {
- "label": "金阳县",
- "position": [
- "103.248704",
- "27.695916"
- ],
- "value": "513430"
- },
- {
- "label": "昭觉县",
- "position": [
- "102.843991",
- "28.010554"
- ],
- "value": "513431"
- },
- {
- "label": "喜德县",
- "position": [
- "102.412342",
- "28.305486"
- ],
- "value": "513432"
- },
- {
- "label": "冕宁县",
- "position": [
- "102.170046",
- "28.550844"
- ],
- "value": "513433"
- },
- {
- "label": "越西县",
- "position": [
- "102.508875",
- "28.639632"
- ],
- "value": "513434"
- },
- {
- "label": "甘洛县",
- "position": [
- "102.775924",
- "28.977094"
- ],
- "value": "513435"
- },
- {
- "label": "美姑县",
- "position": [
- "103.132007",
- "28.327946"
- ],
- "value": "513436"
- },
- {
- "label": "雷波县",
- "position": [
- "103.571584",
- "28.262946"
- ],
- "value": "513437"
- }
- ]
- }
- ]
- },
- {
- "label": "贵州省",
- "position": [
- "106.713478",
- "26.578343"
- ],
- "value": "520000",
- "children": [{
- "label": "贵阳市",
- "position": [
- "106.713478",
- "26.578343"
- ],
- "value": "520100",
- "children": [{
- "label": "南明区",
- "position": [
- "106.715963",
- "26.573743"
- ],
- "value": "520102"
- },
- {
- "label": "云岩区",
- "position": [
- "106.713397",
- "26.58301"
- ],
- "value": "520103"
- },
- {
- "label": "花溪区",
- "position": [
- "106.670791",
- "26.410464"
- ],
- "value": "520111"
- },
- {
- "label": "乌当区",
- "position": [
- "106.762123",
- "26.630928"
- ],
- "value": "520112"
- },
- {
- "label": "白云区",
- "position": [
- "106.633037",
- "26.676849"
- ],
- "value": "520113"
- },
- {
- "label": "观山湖区",
- "position": [
- "106.626323",
- "26.646358"
- ],
- "value": "520115"
- },
- {
- "label": "开阳县",
- "position": [
- "106.969438",
- "27.056793"
- ],
- "value": "520121"
- },
- {
- "label": "息烽县",
- "position": [
- "106.737693",
- "27.092665"
- ],
- "value": "520122"
- },
- {
- "label": "修文县",
- "position": [
- "106.599218",
- "26.840672"
- ],
- "value": "520123"
- },
- {
- "label": "清镇市",
- "position": [
- "106.470278",
- "26.551289"
- ],
- "value": "520181"
- }
- ]
- },
- {
- "label": "六盘水市",
- "position": [
- "104.846743",
- "26.584643"
- ],
- "value": "520200",
- "children": [{
- "label": "钟山区",
- "position": [
- "104.846244",
- "26.584805"
- ],
- "value": "520201"
- },
- {
- "label": "六枝特区",
- "position": [
- "105.474235",
- "26.210662"
- ],
- "value": "520203"
- },
- {
- "label": "水城区",
- "position": [
- "104.95685",
- "26.540478"
- ],
- "value": "520221"
- },
- {
- "label": "盘州市",
- "position": [
- "104.468367",
- "25.706966"
- ],
- "value": "520281"
- }
- ]
- },
- {
- "label": "遵义市",
- "position": [
- "106.937265",
- "27.706626"
- ],
- "value": "520300",
- "children": [{
- "label": "红花岗区",
- "position": [
- "106.943784",
- "27.694395"
- ],
- "value": "520302"
- },
- {
- "label": "汇川区",
- "position": [
- "106.937265",
- "27.706626"
- ],
- "value": "520303"
- },
- {
- "label": "播州区",
- "position": [
- "106.831668",
- "27.535288"
- ],
- "value": "520304"
- },
- {
- "label": "桐梓县",
- "position": [
- "106.826591",
- "28.131559"
- ],
- "value": "520322"
- },
- {
- "label": "绥阳县",
- "position": [
- "107.191024",
- "27.951342"
- ],
- "value": "520323"
- },
- {
- "label": "正安县",
- "position": [
- "107.441872",
- "28.550337"
- ],
- "value": "520324"
- },
- {
- "label": "道真仡佬族苗族自治县",
- "position": [
- "107.605342",
- "28.880088"
- ],
- "value": "520325"
- },
- {
- "label": "务川仡佬族苗族自治县",
- "position": [
- "107.887857",
- "28.521567"
- ],
- "value": "520326"
- },
- {
- "label": "凤冈县",
- "position": [
- "107.722021",
- "27.960858"
- ],
- "value": "520327"
- },
- {
- "label": "湄潭县",
- "position": [
- "107.485723",
- "27.765839"
- ],
- "value": "520328"
- },
- {
- "label": "余庆县",
- "position": [
- "107.892566",
- "27.221552"
- ],
- "value": "520329"
- },
- {
- "label": "习水县",
- "position": [
- "106.200954",
- "28.327826"
- ],
- "value": "520330"
- },
- {
- "label": "赤水市",
- "position": [
- "105.698116",
- "28.587057"
- ],
- "value": "520381"
- },
- {
- "label": "仁怀市",
- "position": [
- "106.412476",
- "27.803377"
- ],
- "value": "520382"
- }
- ]
- },
- {
- "label": "安顺市",
- "position": [
- "105.932188",
- "26.245544"
- ],
- "value": "520400",
- "children": [{
- "label": "西秀区",
- "position": [
- "105.946169",
- "26.248323"
- ],
- "value": "520402"
- },
- {
- "label": "平坝区",
- "position": [
- "106.259942",
- "26.40608"
- ],
- "value": "520403"
- },
- {
- "label": "普定县",
- "position": [
- "105.745609",
- "26.305794"
- ],
- "value": "520422"
- },
- {
- "label": "镇宁布依族苗族自治县",
- "position": [
- "105.768656",
- "26.056096"
- ],
- "value": "520423"
- },
- {
- "label": "关岭布依族苗族自治县",
- "position": [
- "105.618454",
- "25.944248"
- ],
- "value": "520424"
- },
- {
- "label": "紫云苗族布依族自治县",
- "position": [
- "106.084515",
- "25.751567"
- ],
- "value": "520425"
- }
- ]
- },
- {
- "label": "毕节市",
- "position": [
- "105.28501",
- "27.301693"
- ],
- "value": "520500",
- "children": [{
- "label": "七星关区",
- "position": [
- "105.284852",
- "27.302085"
- ],
- "value": "520502"
- },
- {
- "label": "大方县",
- "position": [
- "105.609254",
- "27.143521"
- ],
- "value": "520521"
- },
- {
- "label": "黔西县",
- "position": [
- "106.038299",
- "27.024923"
- ],
- "value": "520522"
- },
- {
- "label": "金沙县",
- "position": [
- "106.222103",
- "27.459693"
- ],
- "value": "520523"
- },
- {
- "label": "织金县",
- "position": [
- "105.768997",
- "26.668497"
- ],
- "value": "520524"
- },
- {
- "label": "纳雍县",
- "position": [
- "105.375322",
- "26.769875"
- ],
- "value": "520525"
- },
- {
- "label": "威宁彝族回族苗族自治县",
- "position": [
- "104.286523",
- "26.859099"
- ],
- "value": "520526"
- },
- {
- "label": "赫章县",
- "position": [
- "104.726438",
- "27.119243"
- ],
- "value": "520527"
- }
- ]
- },
- {
- "label": "铜仁市",
- "position": [
- "109.191555",
- "27.718346"
- ],
- "value": "520600",
- "children": [{
- "label": "碧江区",
- "position": [
- "109.192117",
- "27.718745"
- ],
- "value": "520602"
- },
- {
- "label": "万山区",
- "position": [
- "109.21199",
- "27.51903"
- ],
- "value": "520603"
- },
- {
- "label": "江口县",
- "position": [
- "108.848427",
- "27.691904"
- ],
- "value": "520621"
- },
- {
- "label": "玉屏侗族自治县",
- "position": [
- "108.917882",
- "27.238024"
- ],
- "value": "520622"
- },
- {
- "label": "石阡县",
- "position": [
- "108.229854",
- "27.519386"
- ],
- "value": "520623"
- },
- {
- "label": "思南县",
- "position": [
- "108.255827",
- "27.941331"
- ],
- "value": "520624"
- },
- {
- "label": "印江土家族苗族自治县",
- "position": [
- "108.405517",
- "27.997976"
- ],
- "value": "520625"
- },
- {
- "label": "德江县",
- "position": [
- "108.117317",
- "28.26094"
- ],
- "value": "520626"
- },
- {
- "label": "沿河土家族自治县",
- "position": [
- "108.495746",
- "28.560487"
- ],
- "value": "520627"
- },
- {
- "label": "松桃苗族自治县",
- "position": [
- "109.202627",
- "28.165419"
- ],
- "value": "520628"
- }
- ]
- },
- {
- "label": "黔西南布依族苗族自治州",
- "position": [
- "104.897971",
- "25.08812"
- ],
- "value": "522300",
- "children": [{
- "label": "兴义市",
- "position": [
- "104.897982",
- "25.088599"
- ],
- "value": "522301"
- },
- {
- "label": "兴仁市",
- "position": [
- "105.192778",
- "25.431378"
- ],
- "value": "522302"
- },
- {
- "label": "普安县",
- "position": [
- "104.955347",
- "25.786404"
- ],
- "value": "522323"
- },
- {
- "label": "晴隆县",
- "position": [
- "105.218773",
- "25.832881"
- ],
- "value": "522324"
- },
- {
- "label": "贞丰县",
- "position": [
- "105.650133",
- "25.385752"
- ],
- "value": "522325"
- },
- {
- "label": "望谟县",
- "position": [
- "106.091563",
- "25.166667"
- ],
- "value": "522326"
- },
- {
- "label": "册亨县",
- "position": [
- "105.81241",
- "24.983338"
- ],
- "value": "522327"
- },
- {
- "label": "安龙县",
- "position": [
- "105.471498",
- "25.108959"
- ],
- "value": "522328"
- }
- ]
- },
- {
- "label": "黔东南苗族侗族自治州",
- "position": [
- "107.977488",
- "26.583352"
- ],
- "value": "522600",
- "children": [{
- "label": "凯里市",
- "position": [
- "107.977541",
- "26.582964"
- ],
- "value": "522601"
- },
- {
- "label": "黄平县",
- "position": [
- "107.901337",
- "26.896973"
- ],
- "value": "522622"
- },
- {
- "label": "施秉县",
- "position": [
- "108.12678",
- "27.034657"
- ],
- "value": "522623"
- },
- {
- "label": "三穗县",
- "position": [
- "108.681121",
- "26.959884"
- ],
- "value": "522624"
- },
- {
- "label": "镇远县",
- "position": [
- "108.423656",
- "27.050233"
- ],
- "value": "522625"
- },
- {
- "label": "岑巩县",
- "position": [
- "108.816459",
- "27.173244"
- ],
- "value": "522626"
- },
- {
- "label": "天柱县",
- "position": [
- "109.212798",
- "26.909684"
- ],
- "value": "522627"
- },
- {
- "label": "锦屏县",
- "position": [
- "109.20252",
- "26.680625"
- ],
- "value": "522628"
- },
- {
- "label": "剑河县",
- "position": [
- "108.440499",
- "26.727349"
- ],
- "value": "522629"
- },
- {
- "label": "台江县",
- "position": [
- "108.314637",
- "26.669138"
- ],
- "value": "522630"
- },
- {
- "label": "黎平县",
- "position": [
- "109.136504",
- "26.230636"
- ],
- "value": "522631"
- },
- {
- "label": "榕江县",
- "position": [
- "108.521026",
- "25.931085"
- ],
- "value": "522632"
- },
- {
- "label": "从江县",
- "position": [
- "108.912648",
- "25.747058"
- ],
- "value": "522633"
- },
- {
- "label": "雷山县",
- "position": [
- "108.079613",
- "26.381027"
- ],
- "value": "522634"
- },
- {
- "label": "麻江县",
- "position": [
- "107.593172",
- "26.494803"
- ],
- "value": "522635"
- },
- {
- "label": "丹寨县",
- "position": [
- "107.794808",
- "26.199497"
- ],
- "value": "522636"
- }
- ]
- },
- {
- "label": "黔南布依族苗族自治州",
- "position": [
- "107.517156",
- "26.258219"
- ],
- "value": "522700",
- "children": [{
- "label": "都匀市",
- "position": [
- "107.517021",
- "26.258205"
- ],
- "value": "522701"
- },
- {
- "label": "福泉市",
- "position": [
- "107.513508",
- "26.702508"
- ],
- "value": "522702"
- },
- {
- "label": "荔波县",
- "position": [
- "107.8838",
- "25.412239"
- ],
- "value": "522722"
- },
- {
- "label": "贵定县",
- "position": [
- "107.233588",
- "26.580807"
- ],
- "value": "522723"
- },
- {
- "label": "瓮安县",
- "position": [
- "107.478417",
- "27.066339"
- ],
- "value": "522725"
- },
- {
- "label": "独山县",
- "position": [
- "107.542757",
- "25.826283"
- ],
- "value": "522726"
- },
- {
- "label": "平塘县",
- "position": [
- "107.32405",
- "25.831803"
- ],
- "value": "522727"
- },
- {
- "label": "罗甸县",
- "position": [
- "106.750006",
- "25.429894"
- ],
- "value": "522728"
- },
- {
- "label": "长顺县",
- "position": [
- "106.447376",
- "26.022116"
- ],
- "value": "522729"
- },
- {
- "label": "龙里县",
- "position": [
- "106.977733",
- "26.448809"
- ],
- "value": "522730"
- },
- {
- "label": "惠水县",
- "position": [
- "106.657848",
- "26.128637"
- ],
- "value": "522731"
- },
- {
- "label": "三都水族自治县",
- "position": [
- "107.87747",
- "25.985183"
- ],
- "value": "522732"
- }
- ]
- }
- ]
- },
- {
- "label": "云南省",
- "position": [
- "102.712251",
- "25.040609"
- ],
- "value": "530000",
- "children": [{
- "label": "昆明市",
- "position": [
- "102.712251",
- "25.040609"
- ],
- "value": "530100",
- "children": [{
- "label": "五华区",
- "position": [
- "102.704412",
- "25.042165"
- ],
- "value": "530102"
- },
- {
- "label": "盘龙区",
- "position": [
- "102.729044",
- "25.070239"
- ],
- "value": "530103"
- },
- {
- "label": "官渡区",
- "position": [
- "102.723437",
- "25.021211"
- ],
- "value": "530111"
- },
- {
- "label": "西山区",
- "position": [
- "102.705904",
- "25.02436"
- ],
- "value": "530112"
- },
- {
- "label": "东川区",
- "position": [
- "103.182",
- "26.08349"
- ],
- "value": "530113"
- },
- {
- "label": "呈贡区",
- "position": [
- "102.801382",
- "24.889275"
- ],
- "value": "530114"
- },
- {
- "label": "晋宁区",
- "position": [
- "102.594987",
- "24.666944"
- ],
- "value": "530115"
- },
- {
- "label": "富民县",
- "position": [
- "102.497888",
- "25.219667"
- ],
- "value": "530124"
- },
- {
- "label": "宜良县",
- "position": [
- "103.145989",
- "24.918215"
- ],
- "value": "530125"
- },
- {
- "label": "石林彝族自治县",
- "position": [
- "103.271962",
- "24.754545"
- ],
- "value": "530126"
- },
- {
- "label": "嵩明县",
- "position": [
- "103.038777",
- "25.335087"
- ],
- "value": "530127"
- },
- {
- "label": "禄劝彝族苗族自治县",
- "position": [
- "102.46905",
- "25.556533"
- ],
- "value": "530128"
- },
- {
- "label": "寻甸回族彝族自治县",
- "position": [
- "103.257588",
- "25.559474"
- ],
- "value": "530129"
- },
- {
- "label": "安宁市",
- "position": [
- "102.485544",
- "24.921785"
- ],
- "value": "530181"
- }
- ]
- },
- {
- "label": "曲靖市",
- "position": [
- "103.797851",
- "25.501557"
- ],
- "value": "530300",
- "children": [{
- "label": "麒麟区",
- "position": [
- "103.798054",
- "25.501269"
- ],
- "value": "530302"
- },
- {
- "label": "沾益区",
- "position": [
- "103.819262",
- "25.600878"
- ],
- "value": "530303"
- },
- {
- "label": "马龙区",
- "position": [
- "103.578755",
- "25.429451"
- ],
- "value": "530304"
- },
- {
- "label": "陆良县",
- "position": [
- "103.655233",
- "25.022878"
- ],
- "value": "530322"
- },
- {
- "label": "师宗县",
- "position": [
- "103.993808",
- "24.825681"
- ],
- "value": "530323"
- },
- {
- "label": "罗平县",
- "position": [
- "104.309263",
- "24.885708"
- ],
- "value": "530324"
- },
- {
- "label": "富源县",
- "position": [
- "104.25692",
- "25.67064"
- ],
- "value": "530325"
- },
- {
- "label": "会泽县",
- "position": [
- "103.300041",
- "26.412861"
- ],
- "value": "530326"
- },
- {
- "label": "宣威市",
- "position": [
- "104.09554",
- "26.227777"
- ],
- "value": "530381"
- }
- ]
- },
- {
- "label": "玉溪市",
- "position": [
- "102.543907",
- "24.350461"
- ],
- "value": "530400",
- "children": [{
- "label": "红塔区",
- "position": [
- "102.543468",
- "24.350753"
- ],
- "value": "530402"
- },
- {
- "label": "江川区",
- "position": [
- "102.749839",
- "24.291006"
- ],
- "value": "530403"
- },
- {
- "label": "通海县",
- "position": [
- "102.760039",
- "24.112205"
- ],
- "value": "530423"
- },
- {
- "label": "华宁县",
- "position": [
- "102.928982",
- "24.189807"
- ],
- "value": "530424"
- },
- {
- "label": "易门县",
- "position": [
- "102.16211",
- "24.669598"
- ],
- "value": "530425"
- },
- {
- "label": "峨山彝族自治县",
- "position": [
- "102.404358",
- "24.173256"
- ],
- "value": "530426"
- },
- {
- "label": "新平彝族傣族自治县",
- "position": [
- "101.990903",
- "24.0664"
- ],
- "value": "530427"
- },
- {
- "label": "元江哈尼族彝族傣族自治县",
- "position": [
- "101.999658",
- "23.597618"
- ],
- "value": "530428"
- },
- {
- "label": "澄江市",
- "position": [
- "102.916652",
- "24.669679"
- ],
- "value": "530481"
- }
- ]
- },
- {
- "label": "保山市",
- "position": [
- "99.167133",
- "25.111802"
- ],
- "value": "530500",
- "children": [{
- "label": "隆阳区",
- "position": [
- "99.165825",
- "25.112144"
- ],
- "value": "530502"
- },
- {
- "label": "施甸县",
- "position": [
- "99.183758",
- "24.730847"
- ],
- "value": "530521"
- },
- {
- "label": "龙陵县",
- "position": [
- "98.693567",
- "24.591912"
- ],
- "value": "530523"
- },
- {
- "label": "昌宁县",
- "position": [
- "99.612344",
- "24.823662"
- ],
- "value": "530524"
- },
- {
- "label": "腾冲市",
- "position": [
- "98.497292",
- "25.01757"
- ],
- "value": "530581"
- }
- ]
- },
- {
- "label": "昭通市",
- "position": [
- "103.717216",
- "27.336999"
- ],
- "value": "530600",
- "children": [{
- "label": "昭阳区",
- "position": [
- "103.717267",
- "27.336636"
- ],
- "value": "530602"
- },
- {
- "label": "鲁甸县",
- "position": [
- "103.549333",
- "27.191637"
- ],
- "value": "530621"
- },
- {
- "label": "巧家县",
- "position": [
- "102.929284",
- "26.9117"
- ],
- "value": "530622"
- },
- {
- "label": "盐津县",
- "position": [
- "104.23506",
- "28.106923"
- ],
- "value": "530623"
- },
- {
- "label": "大关县",
- "position": [
- "103.891608",
- "27.747114"
- ],
- "value": "530624"
- },
- {
- "label": "永善县",
- "position": [
- "103.63732",
- "28.231526"
- ],
- "value": "530625"
- },
- {
- "label": "绥江县",
- "position": [
- "103.961095",
- "28.599953"
- ],
- "value": "530626"
- },
- {
- "label": "镇雄县",
- "position": [
- "104.873055",
- "27.436267"
- ],
- "value": "530627"
- },
- {
- "label": "彝良县",
- "position": [
- "104.048492",
- "27.627425"
- ],
- "value": "530628"
- },
- {
- "label": "威信县",
- "position": [
- "105.04869",
- "27.843381"
- ],
- "value": "530629"
- },
- {
- "label": "水富市",
- "position": [
- "104.415376",
- "28.629688"
- ],
- "value": "530681"
- }
- ]
- },
- {
- "label": "丽江市",
- "position": [
- "100.233026",
- "26.872108"
- ],
- "value": "530700",
- "children": [{
- "label": "古城区",
- "position": [
- "100.234412",
- "26.872229"
- ],
- "value": "530702"
- },
- {
- "label": "玉龙纳西族自治县",
- "position": [
- "100.238312",
- "26.830593"
- ],
- "value": "530721"
- },
- {
- "label": "永胜县",
- "position": [
- "100.750901",
- "26.685623"
- ],
- "value": "530722"
- },
- {
- "label": "华坪县",
- "position": [
- "101.267796",
- "26.628834"
- ],
- "value": "530723"
- },
- {
- "label": "宁蒗彝族自治县",
- "position": [
- "100.852427",
- "27.281109"
- ],
- "value": "530724"
- }
- ]
- },
- {
- "label": "普洱市",
- "position": [
- "100.972344",
- "22.777321"
- ],
- "value": "530800",
- "children": [{
- "label": "思茅区",
- "position": [
- "100.973227",
- "22.776595"
- ],
- "value": "530802"
- },
- {
- "label": "宁洱哈尼族彝族自治县",
- "position": [
- "101.04524",
- "23.062507"
- ],
- "value": "530821"
- },
- {
- "label": "墨江哈尼族自治县",
- "position": [
- "101.687606",
- "23.428165"
- ],
- "value": "530822"
- },
- {
- "label": "景东彝族自治县",
- "position": [
- "100.840011",
- "24.448523"
- ],
- "value": "530823"
- },
- {
- "label": "景谷傣族彝族自治县",
- "position": [
- "100.701425",
- "23.500278"
- ],
- "value": "530824"
- },
- {
- "label": "镇沅彝族哈尼族拉祜族自治县",
- "position": [
- "101.108512",
- "24.005712"
- ],
- "value": "530825"
- },
- {
- "label": "江城哈尼族彝族自治县",
- "position": [
- "101.859144",
- "22.58336"
- ],
- "value": "530826"
- },
- {
- "label": "孟连傣族拉祜族佤族自治县",
- "position": [
- "99.585406",
- "22.325924"
- ],
- "value": "530827"
- },
- {
- "label": "澜沧拉祜族自治县",
- "position": [
- "99.931201",
- "22.553083"
- ],
- "value": "530828"
- },
- {
- "label": "西盟佤族自治县",
- "position": [
- "99.594372",
- "22.644423"
- ],
- "value": "530829"
- }
- ]
- },
- {
- "label": "临沧市",
- "position": [
- "100.08697",
- "23.886567"
- ],
- "value": "530900",
- "children": [{
- "label": "临翔区",
- "position": [
- "100.086486",
- "23.886562"
- ],
- "value": "530902"
- },
- {
- "label": "凤庆县",
- "position": [
- "99.91871",
- "24.592738"
- ],
- "value": "530921"
- },
- {
- "label": "云县",
- "position": [
- "100.125637",
- "24.439026"
- ],
- "value": "530922"
- },
- {
- "label": "永德县",
- "position": [
- "99.253679",
- "24.028159"
- ],
- "value": "530923"
- },
- {
- "label": "镇康县",
- "position": [
- "98.82743",
- "23.761415"
- ],
- "value": "530924"
- },
- {
- "label": "双江拉祜族佤族布朗族傣族自治县",
- "position": [
- "99.824419",
- "23.477476"
- ],
- "value": "530925"
- },
- {
- "label": "耿马傣族佤族自治县",
- "position": [
- "99.402495",
- "23.534579"
- ],
- "value": "530926"
- },
- {
- "label": "沧源佤族自治县",
- "position": [
- "99.2474",
- "23.146887"
- ],
- "value": "530927"
- }
- ]
- },
- {
- "label": "楚雄彝族自治州",
- "position": [
- "101.546046",
- "25.041988"
- ],
- "value": "532300",
- "children": [{
- "label": "楚雄市",
- "position": [
- "101.546145",
- "25.040912"
- ],
- "value": "532301"
- },
- {
- "label": "双柏县",
- "position": [
- "101.63824",
- "24.685094"
- ],
- "value": "532322"
- },
- {
- "label": "牟定县",
- "position": [
- "101.543044",
- "25.312111"
- ],
- "value": "532323"
- },
- {
- "label": "南华县",
- "position": [
- "101.274991",
- "25.192408"
- ],
- "value": "532324"
- },
- {
- "label": "姚安县",
- "position": [
- "101.238399",
- "25.505403"
- ],
- "value": "532325"
- },
- {
- "label": "大姚县",
- "position": [
- "101.323602",
- "25.722348"
- ],
- "value": "532326"
- },
- {
- "label": "永仁县",
- "position": [
- "101.671175",
- "26.056316"
- ],
- "value": "532327"
- },
- {
- "label": "元谋县",
- "position": [
- "101.870837",
- "25.703313"
- ],
- "value": "532328"
- },
- {
- "label": "武定县",
- "position": [
- "102.406785",
- "25.5301"
- ],
- "value": "532329"
- },
- {
- "label": "禄丰县",
- "position": [
- "102.075694",
- "25.14327"
- ],
- "value": "532331"
- }
- ]
- },
- {
- "label": "红河哈尼族彝族自治州",
- "position": [
- "103.384182",
- "23.366775"
- ],
- "value": "532500",
- "children": [{
- "label": "个旧市",
- "position": [
- "103.154752",
- "23.360383"
- ],
- "value": "532501"
- },
- {
- "label": "开远市",
- "position": [
- "103.258679",
- "23.713832"
- ],
- "value": "532502"
- },
- {
- "label": "蒙自市",
- "position": [
- "103.385005",
- "23.366843"
- ],
- "value": "532503"
- },
- {
- "label": "弥勒市",
- "position": [
- "103.436988",
- "24.40837"
- ],
- "value": "532504"
- },
- {
- "label": "屏边苗族自治县",
- "position": [
- "103.687229",
- "22.987013"
- ],
- "value": "532523"
- },
- {
- "label": "建水县",
- "position": [
- "102.820493",
- "23.618387"
- ],
- "value": "532524"
- },
- {
- "label": "石屏县",
- "position": [
- "102.484469",
- "23.712569"
- ],
- "value": "532525"
- },
- {
- "label": "泸西县",
- "position": [
- "103.759622",
- "24.532368"
- ],
- "value": "532527"
- },
- {
- "label": "元阳县",
- "position": [
- "102.837056",
- "23.219773"
- ],
- "value": "532528"
- },
- {
- "label": "红河县",
- "position": [
- "102.42121",
- "23.369191"
- ],
- "value": "532529"
- },
- {
- "label": "金平苗族瑶族傣族自治县",
- "position": [
- "103.228359",
- "22.779982"
- ],
- "value": "532530"
- },
- {
- "label": "绿春县",
- "position": [
- "102.39286",
- "22.99352"
- ],
- "value": "532531"
- },
- {
- "label": "河口瑶族自治县",
- "position": [
- "103.961593",
- "22.507563"
- ],
- "value": "532532"
- }
- ]
- },
- {
- "label": "文山壮族苗族自治州",
- "position": [
- "104.24401",
- "23.36951"
- ],
- "value": "532600",
- "children": [{
- "label": "文山市",
- "position": [
- "104.244277",
- "23.369216"
- ],
- "value": "532601"
- },
- {
- "label": "砚山县",
- "position": [
- "104.343989",
- "23.612301"
- ],
- "value": "532622"
- },
- {
- "label": "西畴县",
- "position": [
- "104.675711",
- "23.437439"
- ],
- "value": "532623"
- },
- {
- "label": "麻栗坡县",
- "position": [
- "104.701899",
- "23.124202"
- ],
- "value": "532624"
- },
- {
- "label": "马关县",
- "position": [
- "104.398619",
- "23.011723"
- ],
- "value": "532625"
- },
- {
- "label": "丘北县",
- "position": [
- "104.194366",
- "24.040982"
- ],
- "value": "532626"
- },
- {
- "label": "广南县",
- "position": [
- "105.056684",
- "24.050272"
- ],
- "value": "532627"
- },
- {
- "label": "富宁县",
- "position": [
- "105.62856",
- "23.626494"
- ],
- "value": "532628"
- }
- ]
- },
- {
- "label": "西双版纳傣族自治州",
- "position": [
- "100.797941",
- "22.001724"
- ],
- "value": "532800",
- "children": [{
- "label": "景洪市",
- "position": [
- "100.797947",
- "22.002087"
- ],
- "value": "532801"
- },
- {
- "label": "勐海县",
- "position": [
- "100.448288",
- "21.955866"
- ],
- "value": "532822"
- },
- {
- "label": "勐腊县",
- "position": [
- "101.567051",
- "21.479449"
- ],
- "value": "532823"
- }
- ]
- },
- {
- "label": "大理白族自治州",
- "position": [
- "100.225668",
- "25.589449"
- ],
- "value": "532900",
- "children": [{
- "label": "大理市",
- "position": [
- "100.241369",
- "25.593067"
- ],
- "value": "532901"
- },
- {
- "label": "漾濞彝族自治县",
- "position": [
- "99.95797",
- "25.669543"
- ],
- "value": "532922"
- },
- {
- "label": "祥云县",
- "position": [
- "100.554025",
- "25.477072"
- ],
- "value": "532923"
- },
- {
- "label": "宾川县",
- "position": [
- "100.578957",
- "25.825904"
- ],
- "value": "532924"
- },
- {
- "label": "弥渡县",
- "position": [
- "100.490669",
- "25.342594"
- ],
- "value": "532925"
- },
- {
- "label": "南涧彝族自治县",
- "position": [
- "100.518683",
- "25.041279"
- ],
- "value": "532926"
- },
- {
- "label": "巍山彝族回族自治县",
- "position": [
- "100.30793",
- "25.230909"
- ],
- "value": "532927"
- },
- {
- "label": "永平县",
- "position": [
- "99.533536",
- "25.461281"
- ],
- "value": "532928"
- },
- {
- "label": "云龙县",
- "position": [
- "99.369402",
- "25.884955"
- ],
- "value": "532929"
- },
- {
- "label": "洱源县",
- "position": [
- "99.951708",
- "26.111184"
- ],
- "value": "532930"
- },
- {
- "label": "剑川县",
- "position": [
- "99.905887",
- "26.530066"
- ],
- "value": "532931"
- },
- {
- "label": "鹤庆县",
- "position": [
- "100.173375",
- "26.55839"
- ],
- "value": "532932"
- }
- ]
- },
- {
- "label": "德宏傣族景颇族自治州",
- "position": [
- "98.578363",
- "24.436694"
- ],
- "value": "533100",
- "children": [{
- "label": "瑞丽市",
- "position": [
- "97.855883",
- "24.010734"
- ],
- "value": "533102"
- },
- {
- "label": "芒市",
- "position": [
- "98.577608",
- "24.436699"
- ],
- "value": "533103"
- },
- {
- "label": "梁河县",
- "position": [
- "98.298196",
- "24.80742"
- ],
- "value": "533122"
- },
- {
- "label": "盈江县",
- "position": [
- "97.93393",
- "24.709541"
- ],
- "value": "533123"
- },
- {
- "label": "陇川县",
- "position": [
- "97.794441",
- "24.184065"
- ],
- "value": "533124"
- }
- ]
- },
- {
- "label": "怒江傈僳族自治州",
- "position": [
- "98.854304",
- "25.850949"
- ],
- "value": "533300",
- "children": [{
- "label": "泸水市",
- "position": [
- "98.854063",
- "25.851142"
- ],
- "value": "533301"
- },
- {
- "label": "福贡县",
- "position": [
- "98.867413",
- "26.902738"
- ],
- "value": "533323"
- },
- {
- "label": "贡山独龙族怒族自治县",
- "position": [
- "98.666141",
- "27.738054"
- ],
- "value": "533324"
- },
- {
- "label": "兰坪白族普米族自治县",
- "position": [
- "99.421378",
- "26.453839"
- ],
- "value": "533325"
- }
- ]
- },
- {
- "label": "迪庆藏族自治州",
- "position": [
- "99.706463",
- "27.826853"
- ],
- "value": "533400",
- "children": [{
- "label": "香格里拉市",
- "position": [
- "99.708667",
- "27.825804"
- ],
- "value": "533401"
- },
- {
- "label": "德钦县",
- "position": [
- "98.91506",
- "28.483272"
- ],
- "value": "533422"
- },
- {
- "label": "维西傈僳族自治县",
- "position": [
- "99.286355",
- "27.180948"
- ],
- "value": "533423"
- }
- ]
- }
- ]
- },
- {
- "label": "西藏自治区",
- "position": [
- "91.132212",
- "29.660361"
- ],
- "value": "540000",
- "children": [{
- "label": "拉萨市",
- "position": [
- "91.132212",
- "29.660361"
- ],
- "value": "540100",
- "children": [{
- "label": "城关区",
- "position": [
- "91.132911",
- "29.659472"
- ],
- "value": "540102"
- },
- {
- "label": "堆龙德庆区",
- "position": [
- "91.002823",
- "29.647347"
- ],
- "value": "540103"
- },
- {
- "label": "达孜区",
- "position": [
- "91.350976",
- "29.670314"
- ],
- "value": "540104"
- },
- {
- "label": "林周县",
- "position": [
- "91.261842",
- "29.895754"
- ],
- "value": "540121"
- },
- {
- "label": "当雄县",
- "position": [
- "91.103551",
- "30.474819"
- ],
- "value": "540122"
- },
- {
- "label": "尼木县",
- "position": [
- "90.165545",
- "29.431346"
- ],
- "value": "540123"
- },
- {
- "label": "曲水县",
- "position": [
- "90.738051",
- "29.349895"
- ],
- "value": "540124"
- },
- {
- "label": "墨竹工卡县",
- "position": [
- "91.731158",
- "29.834657"
- ],
- "value": "540127"
- }
- ]
- },
- {
- "label": "日喀则市",
- "position": [
- "88.885148",
- "29.267519"
- ],
- "value": "540200",
- "children": [{
- "label": "桑珠孜区",
- "position": [
- "88.88667",
- "29.267003"
- ],
- "value": "540202"
- },
- {
- "label": "南木林县",
- "position": [
- "89.099434",
- "29.680459"
- ],
- "value": "540221"
- },
- {
- "label": "江孜县",
- "position": [
- "89.605044",
- "28.908845"
- ],
- "value": "540222"
- },
- {
- "label": "定日县",
- "position": [
- "87.123887",
- "28.656667"
- ],
- "value": "540223"
- },
- {
- "label": "萨迦县",
- "position": [
- "88.023007",
- "28.901077"
- ],
- "value": "540224"
- },
- {
- "label": "拉孜县",
- "position": [
- "87.63743",
- "29.085136"
- ],
- "value": "540225"
- },
- {
- "label": "昂仁县",
- "position": [
- "87.23578",
- "29.294758"
- ],
- "value": "540226"
- },
- {
- "label": "谢通门县",
- "position": [
- "88.260517",
- "29.431597"
- ],
- "value": "540227"
- },
- {
- "label": "白朗县",
- "position": [
- "89.263618",
- "29.106627"
- ],
- "value": "540228"
- },
- {
- "label": "仁布县",
- "position": [
- "89.843207",
- "29.230299"
- ],
- "value": "540229"
- },
- {
- "label": "康马县",
- "position": [
- "89.683406",
- "28.554719"
- ],
- "value": "540230"
- },
- {
- "label": "定结县",
- "position": [
- "87.767723",
- "28.36409"
- ],
- "value": "540231"
- },
- {
- "label": "仲巴县",
- "position": [
- "84.032826",
- "29.768336"
- ],
- "value": "540232"
- },
- {
- "label": "亚东县",
- "position": [
- "88.906806",
- "27.482772"
- ],
- "value": "540233"
- },
- {
- "label": "吉隆县",
- "position": [
- "85.298349",
- "28.852416"
- ],
- "value": "540234"
- },
- {
- "label": "聂拉木县",
- "position": [
- "85.981953",
- "28.15595"
- ],
- "value": "540235"
- },
- {
- "label": "萨嘎县",
- "position": [
- "85.234622",
- "29.328194"
- ],
- "value": "540236"
- },
- {
- "label": "岗巴县",
- "position": [
- "88.518903",
- "28.274371"
- ],
- "value": "540237"
- }
- ]
- },
- {
- "label": "昌都市",
- "position": [
- "97.178452",
- "31.136875"
- ],
- "value": "540300",
- "children": [{
- "label": "卡若区",
- "position": [
- "97.178255",
- "31.137035"
- ],
- "value": "540302"
- },
- {
- "label": "江达县",
- "position": [
- "98.218351",
- "31.499534"
- ],
- "value": "540321"
- },
- {
- "label": "贡觉县",
- "position": [
- "98.271191",
- "30.859206"
- ],
- "value": "540322"
- },
- {
- "label": "类乌齐县",
- "position": [
- "96.601259",
- "31.213048"
- ],
- "value": "540323"
- },
- {
- "label": "丁青县",
- "position": [
- "95.597748",
- "31.410681"
- ],
- "value": "540324"
- },
- {
- "label": "察雅县",
- "position": [
- "97.565701",
- "30.653038"
- ],
- "value": "540325"
- },
- {
- "label": "八宿县",
- "position": [
- "96.917893",
- "30.053408"
- ],
- "value": "540326"
- },
- {
- "label": "左贡县",
- "position": [
- "97.840532",
- "29.671335"
- ],
- "value": "540327"
- },
- {
- "label": "芒康县",
- "position": [
- "98.596444",
- "29.686615"
- ],
- "value": "540328"
- },
- {
- "label": "洛隆县",
- "position": [
- "95.823418",
- "30.741947"
- ],
- "value": "540329"
- },
- {
- "label": "边坝县",
- "position": [
- "94.707504",
- "30.933849"
- ],
- "value": "540330"
- }
- ]
- },
- {
- "label": "林芝市",
- "position": [
- "94.362348",
- "29.654693"
- ],
- "value": "540400",
- "children": [{
- "label": "巴宜区",
- "position": [
- "94.360987",
- "29.653732"
- ],
- "value": "540402"
- },
- {
- "label": "工布江达县",
- "position": [
- "93.246515",
- "29.88447"
- ],
- "value": "540421"
- },
- {
- "label": "米林县",
- "position": [
- "94.213679",
- "29.213811"
- ],
- "value": "540422"
- },
- {
- "label": "墨脱县",
- "position": [
- "95.332245",
- "29.32573"
- ],
- "value": "540423"
- },
- {
- "label": "波密县",
- "position": [
- "95.768151",
- "29.858771"
- ],
- "value": "540424"
- },
- {
- "label": "察隅县",
- "position": [
- "97.465002",
- "28.660244"
- ],
- "value": "540425"
- },
- {
- "label": "朗县",
- "position": [
- "93.073429",
- "29.0446"
- ],
- "value": "540426"
- }
- ]
- },
- {
- "label": "山南市",
- "position": [
- "91.766529",
- "29.236023"
- ],
- "value": "540500",
- "children": [{
- "label": "乃东区",
- "position": [
- "91.76525",
- "29.236106"
- ],
- "value": "540502"
- },
- {
- "label": "扎囊县",
- "position": [
- "91.338",
- "29.246476"
- ],
- "value": "540521"
- },
- {
- "label": "贡嘎县",
- "position": [
- "90.985271",
- "29.289078"
- ],
- "value": "540522"
- },
- {
- "label": "桑日县",
- "position": [
- "92.015732",
- "29.259774"
- ],
- "value": "540523"
- },
- {
- "label": "琼结县",
- "position": [
- "91.683753",
- "29.025242"
- ],
- "value": "540524"
- },
- {
- "label": "曲松县",
- "position": [
- "92.201066",
- "29.063656"
- ],
- "value": "540525"
- },
- {
- "label": "措美县",
- "position": [
- "91.432347",
- "28.437353"
- ],
- "value": "540526"
- },
- {
- "label": "洛扎县",
- "position": [
- "90.858243",
- "28.385765"
- ],
- "value": "540527"
- },
- {
- "label": "加查县",
- "position": [
- "92.591043",
- "29.140921"
- ],
- "value": "540528"
- },
- {
- "label": "隆子县",
- "position": [
- "92.463309",
- "28.408548"
- ],
- "value": "540529"
- },
- {
- "label": "错那县",
- "position": [
- "91.960132",
- "27.991707"
- ],
- "value": "540530"
- },
- {
- "label": "浪卡子县",
- "position": [
- "90.398747",
- "28.96836"
- ],
- "value": "540531"
- }
- ]
- },
- {
- "label": "那曲市",
- "position": [
- "92.060214",
- "31.476004"
- ],
- "value": "540600",
- "children": [{
- "label": "色尼区",
- "position": [
- "92.061862",
- "31.475756"
- ],
- "value": "540602"
- },
- {
- "label": "嘉黎县",
- "position": [
- "93.232907",
- "30.640846"
- ],
- "value": "540621"
- },
- {
- "label": "比如县",
- "position": [
- "93.68044",
- "31.479917"
- ],
- "value": "540622"
- },
- {
- "label": "聂荣县",
- "position": [
- "92.303659",
- "32.107855"
- ],
- "value": "540623"
- },
- {
- "label": "安多县",
- "position": [
- "91.681879",
- "32.260299"
- ],
- "value": "540624"
- },
- {
- "label": "申扎县",
- "position": [
- "88.709777",
- "30.929056"
- ],
- "value": "540625"
- },
- {
- "label": "索县",
- "position": [
- "93.784964",
- "31.886173"
- ],
- "value": "540626"
- },
- {
- "label": "班戈县",
- "position": [
- "90.011822",
- "31.394578"
- ],
- "value": "540627"
- },
- {
- "label": "巴青县",
- "position": [
- "94.054049",
- "31.918691"
- ],
- "value": "540628"
- },
- {
- "label": "尼玛县",
- "position": [
- "87.236646",
- "31.784979"
- ],
- "value": "540629"
- },
- {
- "label": "双湖县",
- "position": [
- "88.838578",
- "33.18698"
- ],
- "value": "540630"
- }
- ]
- },
- {
- "label": "阿里地区",
- "position": [
- "80.105498",
- "32.503187"
- ],
- "value": "542500",
- "children": [{
- "label": "普兰县",
- "position": [
- "81.177588",
- "30.291896"
- ],
- "value": "542521"
- },
- {
- "label": "札达县",
- "position": [
- "79.803191",
- "31.478587"
- ],
- "value": "542522"
- },
- {
- "label": "噶尔县",
- "position": [
- "80.105005",
- "32.503373"
- ],
- "value": "542523"
- },
- {
- "label": "日土县",
- "position": [
- "79.731937",
- "33.382454"
- ],
- "value": "542524"
- },
- {
- "label": "革吉县",
- "position": [
- "81.142896",
- "32.389192"
- ],
- "value": "542525"
- },
- {
- "label": "改则县",
- "position": [
- "84.062384",
- "32.302076"
- ],
- "value": "542526"
- },
- {
- "label": "措勤县",
- "position": [
- "85.159254",
- "31.016774"
- ],
- "value": "542527"
- }
- ]
- }
- ]
- },
- {
- "label": "陕西省",
- "position": [
- "108.948024",
- "34.263161"
- ],
- "value": "610000",
- "children": [{
- "label": "西安市",
- "position": [
- "108.948024",
- "34.263161"
- ],
- "value": "610100",
- "children": [{
- "label": "新城区",
- "position": [
- "108.959903",
- "34.26927"
- ],
- "value": "610102"
- },
- {
- "label": "碑林区",
- "position": [
- "108.946994",
- "34.251061"
- ],
- "value": "610103"
- },
- {
- "label": "莲湖区",
- "position": [
- "108.933194",
- "34.2656"
- ],
- "value": "610104"
- },
- {
- "label": "灞桥区",
- "position": [
- "109.067261",
- "34.267453"
- ],
- "value": "610111"
- },
- {
- "label": "未央区",
- "position": [
- "108.946022",
- "34.30823"
- ],
- "value": "610112"
- },
- {
- "label": "雁塔区",
- "position": [
- "108.926593",
- "34.213389"
- ],
- "value": "610113"
- },
- {
- "label": "阎良区",
- "position": [
- "109.22802",
- "34.662141"
- ],
- "value": "610114"
- },
- {
- "label": "临潼区",
- "position": [
- "109.213986",
- "34.372065"
- ],
- "value": "610115"
- },
- {
- "label": "长安区",
- "position": [
- "108.941579",
- "34.157097"
- ],
- "value": "610116"
- },
- {
- "label": "高陵区",
- "position": [
- "109.088896",
- "34.535065"
- ],
- "value": "610117"
- },
- {
- "label": "鄠邑区",
- "position": [
- "108.607385",
- "34.108668"
- ],
- "value": "610118"
- },
- {
- "label": "蓝田县",
- "position": [
- "109.317634",
- "34.156189"
- ],
- "value": "610122"
- },
- {
- "label": "周至县",
- "position": [
- "108.216465",
- "34.161532"
- ],
- "value": "610124"
- }
- ]
- },
- {
- "label": "铜川市",
- "position": [
- "108.979608",
- "34.916582"
- ],
- "value": "610200",
- "children": [{
- "label": "王益区",
- "position": [
- "109.075862",
- "35.069098"
- ],
- "value": "610202"
- },
- {
- "label": "印台区",
- "position": [
- "109.100814",
- "35.111927"
- ],
- "value": "610203"
- },
- {
- "label": "耀州区",
- "position": [
- "108.962538",
- "34.910206"
- ],
- "value": "610204"
- },
- {
- "label": "宜君县",
- "position": [
- "109.118278",
- "35.398766"
- ],
- "value": "610222"
- }
- ]
- },
- {
- "label": "宝鸡市",
- "position": [
- "107.14487",
- "34.369315"
- ],
- "value": "610300",
- "children": [{
- "label": "渭滨区",
- "position": [
- "107.144467",
- "34.371008"
- ],
- "value": "610302"
- },
- {
- "label": "金台区",
- "position": [
- "107.149943",
- "34.375192"
- ],
- "value": "610303"
- },
- {
- "label": "陈仓区",
- "position": [
- "107.383645",
- "34.352747"
- ],
- "value": "610304"
- },
- {
- "label": "凤翔县",
- "position": [
- "107.400577",
- "34.521668"
- ],
- "value": "610322"
- },
- {
- "label": "岐山县",
- "position": [
- "107.624464",
- "34.44296"
- ],
- "value": "610323"
- },
- {
- "label": "扶风县",
- "position": [
- "107.891419",
- "34.375497"
- ],
- "value": "610324"
- },
- {
- "label": "眉县",
- "position": [
- "107.752371",
- "34.272137"
- ],
- "value": "610326"
- },
- {
- "label": "陇县",
- "position": [
- "106.857066",
- "34.893262"
- ],
- "value": "610327"
- },
- {
- "label": "千阳县",
- "position": [
- "107.132987",
- "34.642584"
- ],
- "value": "610328"
- },
- {
- "label": "麟游县",
- "position": [
- "107.796608",
- "34.677714"
- ],
- "value": "610329"
- },
- {
- "label": "凤县",
- "position": [
- "106.525212",
- "33.912464"
- ],
- "value": "610330"
- },
- {
- "label": "太白县",
- "position": [
- "107.316533",
- "34.059215"
- ],
- "value": "610331"
- }
- ]
- },
- {
- "label": "咸阳市",
- "position": [
- "108.705117",
- "34.333439"
- ],
- "value": "610400",
- "children": [{
- "label": "秦都区",
- "position": [
- "108.698636",
- "34.329801"
- ],
- "value": "610402"
- },
- {
- "label": "杨陵区",
- "position": [
- "108.086348",
- "34.27135"
- ],
- "value": "610403"
- },
- {
- "label": "渭城区",
- "position": [
- "108.730957",
- "34.336847"
- ],
- "value": "610404"
- },
- {
- "label": "三原县",
- "position": [
- "108.943481",
- "34.613996"
- ],
- "value": "610422"
- },
- {
- "label": "泾阳县",
- "position": [
- "108.83784",
- "34.528493"
- ],
- "value": "610423"
- },
- {
- "label": "乾县",
- "position": [
- "108.247406",
- "34.527261"
- ],
- "value": "610424"
- },
- {
- "label": "礼泉县",
- "position": [
- "108.428317",
- "34.482583"
- ],
- "value": "610425"
- },
- {
- "label": "永寿县",
- "position": [
- "108.143129",
- "34.692619"
- ],
- "value": "610426"
- },
- {
- "label": "长武县",
- "position": [
- "107.795835",
- "35.206122"
- ],
- "value": "610428"
- },
- {
- "label": "旬邑县",
- "position": [
- "108.337231",
- "35.112234"
- ],
- "value": "610429"
- },
- {
- "label": "淳化县",
- "position": [
- "108.581173",
- "34.79797"
- ],
- "value": "610430"
- },
- {
- "label": "武功县",
- "position": [
- "108.212857",
- "34.259732"
- ],
- "value": "610431"
- },
- {
- "label": "兴平市",
- "position": [
- "108.488493",
- "34.297134"
- ],
- "value": "610481"
- },
- {
- "label": "彬州市",
- "position": [
- "108.083674",
- "35.034233"
- ],
- "value": "610482"
- }
- ]
- },
- {
- "label": "渭南市",
- "position": [
- "109.502882",
- "34.499381"
- ],
- "value": "610500",
- "children": [{
- "label": "临渭区",
- "position": [
- "109.503299",
- "34.501271"
- ],
- "value": "610502"
- },
- {
- "label": "华州区",
- "position": [
- "109.76141",
- "34.511958"
- ],
- "value": "610503"
- },
- {
- "label": "潼关县",
- "position": [
- "110.24726",
- "34.544515"
- ],
- "value": "610522"
- },
- {
- "label": "大荔县",
- "position": [
- "109.943123",
- "34.795011"
- ],
- "value": "610523"
- },
- {
- "label": "合阳县",
- "position": [
- "110.147979",
- "35.237098"
- ],
- "value": "610524"
- },
- {
- "label": "澄城县",
- "position": [
- "109.937609",
- "35.184"
- ],
- "value": "610525"
- },
- {
- "label": "蒲城县",
- "position": [
- "109.589653",
- "34.956034"
- ],
- "value": "610526"
- },
- {
- "label": "白水县",
- "position": [
- "109.594309",
- "35.177291"
- ],
- "value": "610527"
- },
- {
- "label": "富平县",
- "position": [
- "109.187174",
- "34.746679"
- ],
- "value": "610528"
- },
- {
- "label": "韩城市",
- "position": [
- "110.452391",
- "35.475238"
- ],
- "value": "610581"
- },
- {
- "label": "华阴市",
- "position": [
- "110.08952",
- "34.565359"
- ],
- "value": "610582"
- }
- ]
- },
- {
- "label": "延安市",
- "position": [
- "109.49081",
- "36.596537"
- ],
- "value": "610600",
- "children": [{
- "label": "宝塔区",
- "position": [
- "109.49069",
- "36.596291"
- ],
- "value": "610602"
- },
- {
- "label": "安塞区",
- "position": [
- "109.325341",
- "36.86441"
- ],
- "value": "610603"
- },
- {
- "label": "延长县",
- "position": [
- "110.012961",
- "36.578306"
- ],
- "value": "610621"
- },
- {
- "label": "延川县",
- "position": [
- "110.190314",
- "36.882066"
- ],
- "value": "610622"
- },
- {
- "label": "志丹县",
- "position": [
- "108.768898",
- "36.823031"
- ],
- "value": "610625"
- },
- {
- "label": "吴起县",
- "position": [
- "108.176976",
- "36.924852"
- ],
- "value": "610626"
- },
- {
- "label": "甘泉县",
- "position": [
- "109.34961",
- "36.277729"
- ],
- "value": "610627"
- },
- {
- "label": "富县",
- "position": [
- "109.384136",
- "35.996495"
- ],
- "value": "610628"
- },
- {
- "label": "洛川县",
- "position": [
- "109.435712",
- "35.762133"
- ],
- "value": "610629"
- },
- {
- "label": "宜川县",
- "position": [
- "110.175537",
- "36.050391"
- ],
- "value": "610630"
- },
- {
- "label": "黄龙县",
- "position": [
- "109.83502",
- "35.583276"
- ],
- "value": "610631"
- },
- {
- "label": "黄陵县",
- "position": [
- "109.262469",
- "35.580165"
- ],
- "value": "610632"
- },
- {
- "label": "子长市",
- "position": [
- "109.675968",
- "37.14207"
- ],
- "value": "610681"
- }
- ]
- },
- {
- "label": "汉中市",
- "position": [
- "107.028621",
- "33.077668"
- ],
- "value": "610700",
- "children": [{
- "label": "汉台区",
- "position": [
- "107.028233",
- "33.077674"
- ],
- "value": "610702"
- },
- {
- "label": "南郑区",
- "position": [
- "106.942393",
- "33.003341"
- ],
- "value": "610703"
- },
- {
- "label": "城固县",
- "position": [
- "107.329887",
- "33.153098"
- ],
- "value": "610722"
- },
- {
- "label": "洋县",
- "position": [
- "107.549962",
- "33.223283"
- ],
- "value": "610723"
- },
- {
- "label": "西乡县",
- "position": [
- "107.765858",
- "32.987961"
- ],
- "value": "610724"
- },
- {
- "label": "勉县",
- "position": [
- "106.680175",
- "33.155618"
- ],
- "value": "610725"
- },
- {
- "label": "宁强县",
- "position": [
- "106.25739",
- "32.830806"
- ],
- "value": "610726"
- },
- {
- "label": "略阳县",
- "position": [
- "106.153899",
- "33.329638"
- ],
- "value": "610727"
- },
- {
- "label": "镇巴县",
- "position": [
- "107.89531",
- "32.535854"
- ],
- "value": "610728"
- },
- {
- "label": "留坝县",
- "position": [
- "106.924377",
- "33.61334"
- ],
- "value": "610729"
- },
- {
- "label": "佛坪县",
- "position": [
- "107.988582",
- "33.520745"
- ],
- "value": "610730"
- }
- ]
- },
- {
- "label": "榆林市",
- "position": [
- "109.741193",
- "38.290162"
- ],
- "value": "610800",
- "children": [{
- "label": "榆阳区",
- "position": [
- "109.74791",
- "38.299267"
- ],
- "value": "610802"
- },
- {
- "label": "横山区",
- "position": [
- "109.292596",
- "37.964048"
- ],
- "value": "610803"
- },
- {
- "label": "府谷县",
- "position": [
- "111.069645",
- "39.029243"
- ],
- "value": "610822"
- },
- {
- "label": "靖边县",
- "position": [
- "108.80567",
- "37.596084"
- ],
- "value": "610824"
- },
- {
- "label": "定边县",
- "position": [
- "107.601284",
- "37.59523"
- ],
- "value": "610825"
- },
- {
- "label": "绥德县",
- "position": [
- "110.265377",
- "37.507701"
- ],
- "value": "610826"
- },
- {
- "label": "米脂县",
- "position": [
- "110.178683",
- "37.759081"
- ],
- "value": "610827"
- },
- {
- "label": "佳县",
- "position": [
- "110.493367",
- "38.021597"
- ],
- "value": "610828"
- },
- {
- "label": "吴堡县",
- "position": [
- "110.739315",
- "37.451925"
- ],
- "value": "610829"
- },
- {
- "label": "清涧县",
- "position": [
- "110.12146",
- "37.087702"
- ],
- "value": "610830"
- },
- {
- "label": "子洲县",
- "position": [
- "110.03457",
- "37.611573"
- ],
- "value": "610831"
- },
- {
- "label": "神木市",
- "position": [
- "110.497005",
- "38.835641"
- ],
- "value": "610881"
- }
- ]
- },
- {
- "label": "安康市",
- "position": [
- "109.029273",
- "32.6903"
- ],
- "value": "610900",
- "children": [{
- "label": "汉滨区",
- "position": [
- "109.029098",
- "32.690817"
- ],
- "value": "610902"
- },
- {
- "label": "汉阴县",
- "position": [
- "108.510946",
- "32.891121"
- ],
- "value": "610921"
- },
- {
- "label": "石泉县",
- "position": [
- "108.250512",
- "33.038512"
- ],
- "value": "610922"
- },
- {
- "label": "宁陕县",
- "position": [
- "108.313714",
- "33.312184"
- ],
- "value": "610923"
- },
- {
- "label": "紫阳县",
- "position": [
- "108.537788",
- "32.520176"
- ],
- "value": "610924"
- },
- {
- "label": "岚皋县",
- "position": [
- "108.900663",
- "32.31069"
- ],
- "value": "610925"
- },
- {
- "label": "平利县",
- "position": [
- "109.361865",
- "32.387933"
- ],
- "value": "610926"
- },
- {
- "label": "镇坪县",
- "position": [
- "109.526437",
- "31.883395"
- ],
- "value": "610927"
- },
- {
- "label": "旬阳县",
- "position": [
- "109.368149",
- "32.833567"
- ],
- "value": "610928"
- },
- {
- "label": "白河县",
- "position": [
- "110.114186",
- "32.809484"
- ],
- "value": "610929"
- }
- ]
- },
- {
- "label": "商洛市",
- "position": [
- "109.939776",
- "33.868319"
- ],
- "value": "611000",
- "children": [{
- "label": "商州区",
- "position": [
- "109.937685",
- "33.869208"
- ],
- "value": "611002"
- },
- {
- "label": "洛南县",
- "position": [
- "110.145716",
- "34.088502"
- ],
- "value": "611021"
- },
- {
- "label": "丹凤县",
- "position": [
- "110.33191",
- "33.694711"
- ],
- "value": "611022"
- },
- {
- "label": "商南县",
- "position": [
- "110.885437",
- "33.526367"
- ],
- "value": "611023"
- },
- {
- "label": "山阳县",
- "position": [
- "109.880435",
- "33.530411"
- ],
- "value": "611024"
- },
- {
- "label": "镇安县",
- "position": [
- "109.151075",
- "33.423981"
- ],
- "value": "611025"
- },
- {
- "label": "柞水县",
- "position": [
- "109.111249",
- "33.682773"
- ],
- "value": "611026"
- }
- ]
- }
- ]
- },
- {
- "label": "甘肃省",
- "position": [
- "103.823557",
- "36.058039"
- ],
- "value": "620000",
- "children": [{
- "label": "兰州市",
- "position": [
- "103.823557",
- "36.058039"
- ],
- "value": "620100",
- "children": [{
- "label": "城关区",
- "position": [
- "103.841032",
- "36.049115"
- ],
- "value": "620102"
- },
- {
- "label": "七里河区",
- "position": [
- "103.784326",
- "36.06673"
- ],
- "value": "620103"
- },
- {
- "label": "西固区",
- "position": [
- "103.622331",
- "36.100369"
- ],
- "value": "620104"
- },
- {
- "label": "安宁区",
- "position": [
- "103.724038",
- "36.10329"
- ],
- "value": "620105"
- },
- {
- "label": "红古区",
- "position": [
- "102.861814",
- "36.344177"
- ],
- "value": "620111"
- },
- {
- "label": "永登县",
- "position": [
- "103.262203",
- "36.734428"
- ],
- "value": "620121"
- },
- {
- "label": "皋兰县",
- "position": [
- "103.94933",
- "36.331254"
- ],
- "value": "620122"
- },
- {
- "label": "榆中县",
- "position": [
- "104.114975",
- "35.84443"
- ],
- "value": "620123"
- }
- ]
- },
- {
- "label": "嘉峪关市",
- "position": [
- "98.277304",
- "39.786529"
- ],
- "value": "620200",
- "children": [{
- "label": "峪泉镇",
- "position": [
- "98.3204",
- "39.9583"
- ],
- "value": "620200"
- },
- {
- "label": "新城镇",
- "position": [
- "98.3627",
- "39.9581"
- ],
- "value": "620200"
- },
- {
- "label": "文殊镇",
- "position": [
- "98.1579",
- "39.6969"
- ],
- "value": "620200"
- },
- {
- "label": "钢城街道",
- "position": [
- "98.2926",
- "39.7558"
- ],
- "value": "620200"
- },
- {
- "label": "雄关街道",
- "position": [
- "98.2391",
- "39.893"
- ],
- "value": "620200"
- }
- ]
- },
- {
- "label": "金昌市",
- "position": [
- "102.187888",
- "38.514238"
- ],
- "value": "620300",
- "children": [{
- "label": "金川区",
- "position": [
- "102.187683",
- "38.513793"
- ],
- "value": "620302"
- },
- {
- "label": "永昌县",
- "position": [
- "101.971957",
- "38.247354"
- ],
- "value": "620321"
- }
- ]
- },
- {
- "label": "白银市",
- "position": [
- "104.173606",
- "36.54568"
- ],
- "value": "620400",
- "children": [{
- "label": "白银区",
- "position": [
- "104.17425",
- "36.545649"
- ],
- "value": "620402"
- },
- {
- "label": "平川区",
- "position": [
- "104.819207",
- "36.72921"
- ],
- "value": "620403"
- },
- {
- "label": "靖远县",
- "position": [
- "104.686972",
- "36.561424"
- ],
- "value": "620421"
- },
- {
- "label": "会宁县",
- "position": [
- "105.054337",
- "35.692486"
- ],
- "value": "620422"
- },
- {
- "label": "景泰县",
- "position": [
- "104.066394",
- "37.193519"
- ],
- "value": "620423"
- }
- ]
- },
- {
- "label": "天水市",
- "position": [
- "105.724998",
- "34.578529"
- ],
- "value": "620500",
- "children": [{
- "label": "秦州区",
- "position": [
- "105.724477",
- "34.578645"
- ],
- "value": "620502"
- },
- {
- "label": "麦积区",
- "position": [
- "105.897631",
- "34.563504"
- ],
- "value": "620503"
- },
- {
- "label": "清水县",
- "position": [
- "106.139878",
- "34.75287"
- ],
- "value": "620521"
- },
- {
- "label": "秦安县",
- "position": [
- "105.6733",
- "34.862354"
- ],
- "value": "620522"
- },
- {
- "label": "甘谷县",
- "position": [
- "105.332347",
- "34.747327"
- ],
- "value": "620523"
- },
- {
- "label": "武山县",
- "position": [
- "104.891696",
- "34.721955"
- ],
- "value": "620524"
- },
- {
- "label": "张家川回族自治县",
- "position": [
- "106.212416",
- "34.993237"
- ],
- "value": "620525"
- }
- ]
- },
- {
- "label": "武威市",
- "position": [
- "102.634697",
- "37.929996"
- ],
- "value": "620600",
- "children": [{
- "label": "凉州区",
- "position": [
- "102.634492",
- "37.93025"
- ],
- "value": "620602"
- },
- {
- "label": "民勤县",
- "position": [
- "103.090654",
- "38.624621"
- ],
- "value": "620621"
- },
- {
- "label": "古浪县",
- "position": [
- "102.898047",
- "37.470571"
- ],
- "value": "620622"
- },
- {
- "label": "天祝藏族自治县",
- "position": [
- "103.142034",
- "36.971678"
- ],
- "value": "620623"
- }
- ]
- },
- {
- "label": "张掖市",
- "position": [
- "100.455472",
- "38.932897"
- ],
- "value": "620700",
- "children": [{
- "label": "甘州区",
- "position": [
- "100.454862",
- "38.931774"
- ],
- "value": "620702"
- },
- {
- "label": "肃南裕固族自治县",
- "position": [
- "99.617086",
- "38.837269"
- ],
- "value": "620721"
- },
- {
- "label": "民乐县",
- "position": [
- "100.816623",
- "38.434454"
- ],
- "value": "620722"
- },
- {
- "label": "临泽县",
- "position": [
- "100.166333",
- "39.152151"
- ],
- "value": "620723"
- },
- {
- "label": "高台县",
- "position": [
- "99.81665",
- "39.376308"
- ],
- "value": "620724"
- },
- {
- "label": "山丹县",
- "position": [
- "101.088442",
- "38.784839"
- ],
- "value": "620725"
- }
- ]
- },
- {
- "label": "平凉市",
- "position": [
- "106.684691",
- "35.54279"
- ],
- "value": "620800",
- "children": [{
- "label": "崆峒区",
- "position": [
- "106.684223",
- "35.54173"
- ],
- "value": "620802"
- },
- {
- "label": "泾川县",
- "position": [
- "107.365218",
- "35.335283"
- ],
- "value": "620821"
- },
- {
- "label": "灵台县",
- "position": [
- "107.620587",
- "35.064009"
- ],
- "value": "620822"
- },
- {
- "label": "崇信县",
- "position": [
- "107.031253",
- "35.304533"
- ],
- "value": "620823"
- },
- {
- "label": "庄浪县",
- "position": [
- "106.041979",
- "35.203428"
- ],
- "value": "620825"
- },
- {
- "label": "静宁县",
- "position": [
- "105.733489",
- "35.525243"
- ],
- "value": "620826"
- },
- {
- "label": "华亭市",
- "position": [
- "106.649308",
- "35.215341"
- ],
- "value": "620881"
- }
- ]
- },
- {
- "label": "酒泉市",
- "position": [
- "98.510795",
- "39.744023"
- ],
- "value": "620900",
- "children": [{
- "label": "肃州区",
- "position": [
- "98.511155",
- "39.743858"
- ],
- "value": "620902"
- },
- {
- "label": "金塔县",
- "position": [
- "98.902959",
- "39.983036"
- ],
- "value": "620921"
- },
- {
- "label": "瓜州县",
- "position": [
- "95.780591",
- "40.516525"
- ],
- "value": "620922"
- },
- {
- "label": "肃北蒙古族自治县",
- "position": [
- "94.87728",
- "39.51224"
- ],
- "value": "620923"
- },
- {
- "label": "阿克塞哈萨克族自治县",
- "position": [
- "94.337642",
- "39.631642"
- ],
- "value": "620924"
- },
- {
- "label": "玉门市",
- "position": [
- "97.037206",
- "40.28682"
- ],
- "value": "620981"
- },
- {
- "label": "敦煌市",
- "position": [
- "94.664279",
- "40.141119"
- ],
- "value": "620982"
- }
- ]
- },
- {
- "label": "庆阳市",
- "position": [
- "107.638372",
- "35.734218"
- ],
- "value": "621000",
- "children": [{
- "label": "西峰区",
- "position": [
- "107.638824",
- "35.733713"
- ],
- "value": "621002"
- },
- {
- "label": "庆城县",
- "position": [
- "107.885664",
- "36.013504"
- ],
- "value": "621021"
- },
- {
- "label": "环县",
- "position": [
- "107.308754",
- "36.569322"
- ],
- "value": "621022"
- },
- {
- "label": "华池县",
- "position": [
- "107.986288",
- "36.457304"
- ],
- "value": "621023"
- },
- {
- "label": "合水县",
- "position": [
- "108.019865",
- "35.819005"
- ],
- "value": "621024"
- },
- {
- "label": "正宁县",
- "position": [
- "108.361068",
- "35.490642"
- ],
- "value": "621025"
- },
- {
- "label": "宁县",
- "position": [
- "107.921182",
- "35.50201"
- ],
- "value": "621026"
- },
- {
- "label": "镇原县",
- "position": [
- "107.195706",
- "35.677806"
- ],
- "value": "621027"
- }
- ]
- },
- {
- "label": "定西市",
- "position": [
- "104.626294",
- "35.579578"
- ],
- "value": "621100",
- "children": [{
- "label": "安定区",
- "position": [
- "104.62577",
- "35.579764"
- ],
- "value": "621102"
- },
- {
- "label": "通渭县",
- "position": [
- "105.250102",
- "35.208922"
- ],
- "value": "621121"
- },
- {
- "label": "陇西县",
- "position": [
- "104.637554",
- "35.003409"
- ],
- "value": "621122"
- },
- {
- "label": "渭源县",
- "position": [
- "104.211742",
- "35.133023"
- ],
- "value": "621123"
- },
- {
- "label": "临洮县",
- "position": [
- "103.862186",
- "35.376233"
- ],
- "value": "621124"
- },
- {
- "label": "漳县",
- "position": [
- "104.466756",
- "34.848642"
- ],
- "value": "621125"
- },
- {
- "label": "岷县",
- "position": [
- "104.039882",
- "34.439105"
- ],
- "value": "621126"
- }
- ]
- },
- {
- "label": "陇南市",
- "position": [
- "104.929379",
- "33.388598"
- ],
- "value": "621200",
- "children": [{
- "label": "武都区",
- "position": [
- "104.929866",
- "33.388155"
- ],
- "value": "621202"
- },
- {
- "label": "成县",
- "position": [
- "105.734434",
- "33.739863"
- ],
- "value": "621221"
- },
- {
- "label": "文县",
- "position": [
- "104.682448",
- "32.942171"
- ],
- "value": "621222"
- },
- {
- "label": "宕昌县",
- "position": [
- "104.394475",
- "34.042655"
- ],
- "value": "621223"
- },
- {
- "label": "康县",
- "position": [
- "105.609534",
- "33.328266"
- ],
- "value": "621224"
- },
- {
- "label": "西和县",
- "position": [
- "105.299737",
- "34.013718"
- ],
- "value": "621225"
- },
- {
- "label": "礼县",
- "position": [
- "105.181616",
- "34.189387"
- ],
- "value": "621226"
- },
- {
- "label": "徽县",
- "position": [
- "106.085632",
- "33.767785"
- ],
- "value": "621227"
- },
- {
- "label": "两当县",
- "position": [
- "106.306959",
- "33.910729"
- ],
- "value": "621228"
- }
- ]
- },
- {
- "label": "临夏回族自治州",
- "position": [
- "103.212006",
- "35.599446"
- ],
- "value": "622900",
- "children": [{
- "label": "临夏市",
- "position": [
- "103.211634",
- "35.59941"
- ],
- "value": "622901"
- },
- {
- "label": "临夏县",
- "position": [
- "102.993873",
- "35.49236"
- ],
- "value": "622921"
- },
- {
- "label": "康乐县",
- "position": [
- "103.709852",
- "35.371906"
- ],
- "value": "622922"
- },
- {
- "label": "永靖县",
- "position": [
- "103.319871",
- "35.938933"
- ],
- "value": "622923"
- },
- {
- "label": "广河县",
- "position": [
- "103.576188",
- "35.481688"
- ],
- "value": "622924"
- },
- {
- "label": "和政县",
- "position": [
- "103.350357",
- "35.425971"
- ],
- "value": "622925"
- },
- {
- "label": "东乡族自治县",
- "position": [
- "103.389568",
- "35.66383"
- ],
- "value": "622926"
- },
- {
- "label": "积石山保安族东乡族撒拉族自治县",
- "position": [
- "102.877473",
- "35.712906"
- ],
- "value": "622927"
- }
- ]
- },
- {
- "label": "甘南藏族自治州",
- "position": [
- "102.911008",
- "34.986354"
- ],
- "value": "623000",
- "children": [{
- "label": "合作市",
- "position": [
- "102.91149",
- "34.985973"
- ],
- "value": "623001"
- },
- {
- "label": "临潭县",
- "position": [
- "103.353054",
- "34.69164"
- ],
- "value": "623021"
- },
- {
- "label": "卓尼县",
- "position": [
- "103.508508",
- "34.588165"
- ],
- "value": "623022"
- },
- {
- "label": "舟曲县",
- "position": [
- "104.370271",
- "33.782964"
- ],
- "value": "623023"
- },
- {
- "label": "迭部县",
- "position": [
- "103.221009",
- "34.055348"
- ],
- "value": "623024"
- },
- {
- "label": "玛曲县",
- "position": [
- "102.075767",
- "33.998068"
- ],
- "value": "623025"
- },
- {
- "label": "碌曲县",
- "position": [
- "102.488495",
- "34.589591"
- ],
- "value": "623026"
- },
- {
- "label": "夏河县",
- "position": [
- "102.520743",
- "35.200853"
- ],
- "value": "623027"
- }
- ]
- }
- ]
- },
- {
- "label": "青海省",
- "position": [
- "101.778916",
- "36.623178"
- ],
- "value": "630000",
- "children": [{
- "label": "西宁市",
- "position": [
- "101.778916",
- "36.623178"
- ],
- "value": "630100",
- "children": [{
- "label": "城东区",
- "position": [
- "101.796095",
- "36.616043"
- ],
- "value": "630102"
- },
- {
- "label": "城中区",
- "position": [
- "101.784554",
- "36.621181"
- ],
- "value": "630103"
- },
- {
- "label": "城西区",
- "position": [
- "101.763649",
- "36.628323"
- ],
- "value": "630104"
- },
- {
- "label": "城北区",
- "position": [
- "101.761297",
- "36.648448"
- ],
- "value": "630105"
- },
- {
- "label": "湟中区",
- "position": [
- "101.569475",
- "36.500419"
- ],
- "value": "630106"
- },
- {
- "label": "大通回族土族自治县",
- "position": [
- "101.684183",
- "36.931343"
- ],
- "value": "630121"
- },
- {
- "label": "湟源县",
- "position": [
- "101.263435",
- "36.684818"
- ],
- "value": "630123"
- }
- ]
- },
- {
- "label": "海东市",
- "position": [
- "102.10327",
- "36.502916"
- ],
- "value": "630200",
- "children": [{
- "label": "乐都区",
- "position": [
- "102.402431",
- "36.480291"
- ],
- "value": "630202"
- },
- {
- "label": "平安区",
- "position": [
- "102.104295",
- "36.502714"
- ],
- "value": "630203"
- },
- {
- "label": "民和回族土族自治县",
- "position": [
- "102.804209",
- "36.329451"
- ],
- "value": "630222"
- },
- {
- "label": "互助土族自治县",
- "position": [
- "101.956734",
- "36.83994"
- ],
- "value": "630223"
- },
- {
- "label": "化隆回族自治县",
- "position": [
- "102.262329",
- "36.098322"
- ],
- "value": "630224"
- },
- {
- "label": "循化撒拉族自治县",
- "position": [
- "102.486534",
- "35.847247"
- ],
- "value": "630225"
- }
- ]
- },
- {
- "label": "海北藏族自治州",
- "position": [
- "100.901059",
- "36.959435"
- ],
- "value": "632200",
- "children": [{
- "label": "门源回族自治县",
- "position": [
- "101.618461",
- "37.376627"
- ],
- "value": "632221"
- },
- {
- "label": "祁连县",
- "position": [
- "100.249778",
- "38.175409"
- ],
- "value": "632222"
- },
- {
- "label": "海晏县",
- "position": [
- "100.90049",
- "36.959542"
- ],
- "value": "632223"
- },
- {
- "label": "刚察县",
- "position": [
- "100.138417",
- "37.326263"
- ],
- "value": "632224"
- }
- ]
- },
- {
- "label": "黄南藏族自治州",
- "position": [
- "102.019988",
- "35.517744"
- ],
- "value": "632300",
- "children": [{
- "label": "同仁市",
- "position": [
- "102.017604",
- "35.516337"
- ],
- "value": "632301"
- },
- {
- "label": "尖扎县",
- "position": [
- "102.031953",
- "35.938205"
- ],
- "value": "632322"
- },
- {
- "label": "泽库县",
- "position": [
- "101.469343",
- "35.036842"
- ],
- "value": "632323"
- },
- {
- "label": "河南蒙古族自治县",
- "position": [
- "101.611877",
- "34.734522"
- ],
- "value": "632324"
- }
- ]
- },
- {
- "label": "海南藏族自治州",
- "position": [
- "100.619542",
- "36.280353"
- ],
- "value": "632500",
- "children": [{
- "label": "共和县",
- "position": [
- "100.619597",
- "36.280286"
- ],
- "value": "632521"
- },
- {
- "label": "同德县",
- "position": [
- "100.579465",
- "35.254492"
- ],
- "value": "632522"
- },
- {
- "label": "贵德县",
- "position": [
- "101.431856",
- "36.040456"
- ],
- "value": "632523"
- },
- {
- "label": "兴海县",
- "position": [
- "99.986963",
- "35.58909"
- ],
- "value": "632524"
- },
- {
- "label": "贵南县",
- "position": [
- "100.74792",
- "35.587085"
- ],
- "value": "632525"
- }
- ]
- },
- {
- "label": "果洛藏族自治州",
- "position": [
- "100.242143",
- "34.4736"
- ],
- "value": "632600",
- "children": [{
- "label": "玛沁县",
- "position": [
- "100.243531",
- "34.473386"
- ],
- "value": "632621"
- },
- {
- "label": "班玛县",
- "position": [
- "100.737955",
- "32.931589"
- ],
- "value": "632622"
- },
- {
- "label": "甘德县",
- "position": [
- "99.902589",
- "33.966987"
- ],
- "value": "632623"
- },
- {
- "label": "达日县",
- "position": [
- "99.651715",
- "33.753259"
- ],
- "value": "632624"
- },
- {
- "label": "久治县",
- "position": [
- "101.484884",
- "33.430217"
- ],
- "value": "632625"
- },
- {
- "label": "玛多县",
- "position": [
- "98.211343",
- "34.91528"
- ],
- "value": "632626"
- }
- ]
- },
- {
- "label": "玉树藏族自治州",
- "position": [
- "97.008522",
- "33.004049"
- ],
- "value": "632700",
- "children": [{
- "label": "玉树市",
- "position": [
- "97.008762",
- "33.00393"
- ],
- "value": "632701"
- },
- {
- "label": "杂多县",
- "position": [
- "95.293423",
- "32.891886"
- ],
- "value": "632722"
- },
- {
- "label": "称多县",
- "position": [
- "97.110893",
- "33.367884"
- ],
- "value": "632723"
- },
- {
- "label": "治多县",
- "position": [
- "95.616843",
- "33.852322"
- ],
- "value": "632724"
- },
- {
- "label": "囊谦县",
- "position": [
- "96.479797",
- "32.203206"
- ],
- "value": "632725"
- },
- {
- "label": "曲麻莱县",
- "position": [
- "95.800674",
- "34.12654"
- ],
- "value": "632726"
- }
- ]
- },
- {
- "label": "海西蒙古族藏族自治州",
- "position": [
- "97.370785",
- "37.374663"
- ],
- "value": "632800",
- "children": [{
- "label": "格尔木市",
- "position": [
- "94.905777",
- "36.401541"
- ],
- "value": "632801"
- },
- {
- "label": "德令哈市",
- "position": [
- "97.370143",
- "37.374555"
- ],
- "value": "632802"
- },
- {
- "label": "茫崖市",
- "position": [
- "90.855955",
- "38.247117"
- ],
- "value": "632803"
- },
- {
- "label": "乌兰县",
- "position": [
- "98.479852",
- "36.930389"
- ],
- "value": "632821"
- },
- {
- "label": "都兰县",
- "position": [
- "98.089161",
- "36.298553"
- ],
- "value": "632822"
- },
- {
- "label": "天峻县",
- "position": [
- "99.02078",
- "37.29906"
- ],
- "value": "632823"
- },
- {
- "label": "海西蒙古族藏族自治州直辖",
- "position": [
- "95.357233",
- "37.853631"
- ],
- "value": "632825"
- }
- ]
- }
- ]
- },
- {
- "label": "宁夏回族自治区",
- "position": [
- "106.278179",
- "38.46637"
- ],
- "value": "640000",
- "children": [{
- "label": "银川市",
- "position": [
- "106.278179",
- "38.46637"
- ],
- "value": "640100",
- "children": [{
- "label": "兴庆区",
- "position": [
- "106.278393",
- "38.46747"
- ],
- "value": "640104"
- },
- {
- "label": "西夏区",
- "position": [
- "106.132116",
- "38.492424"
- ],
- "value": "640105"
- },
- {
- "label": "金凤区",
- "position": [
- "106.228486",
- "38.477353"
- ],
- "value": "640106"
- },
- {
- "label": "永宁县",
- "position": [
- "106.253781",
- "38.28043"
- ],
- "value": "640121"
- },
- {
- "label": "贺兰县",
- "position": [
- "106.345904",
- "38.554563"
- ],
- "value": "640122"
- },
- {
- "label": "灵武市",
- "position": [
- "106.334701",
- "38.094058"
- ],
- "value": "640181"
- }
- ]
- },
- {
- "label": "石嘴山市",
- "position": [
- "106.376173",
- "39.01333"
- ],
- "value": "640200",
- "children": [{
- "label": "大武口区",
- "position": [
- "106.376651",
- "39.014158"
- ],
- "value": "640202"
- },
- {
- "label": "惠农区",
- "position": [
- "106.775513",
- "39.230094"
- ],
- "value": "640205"
- },
- {
- "label": "平罗县",
- "position": [
- "106.54489",
- "38.90674"
- ],
- "value": "640221"
- }
- ]
- },
- {
- "label": "吴忠市",
- "position": [
- "106.199409",
- "37.986165"
- ],
- "value": "640300",
- "children": [{
- "label": "利通区",
- "position": [
- "106.199419",
- "37.985967"
- ],
- "value": "640302"
- },
- {
- "label": "红寺堡区",
- "position": [
- "106.067315",
- "37.421616"
- ],
- "value": "640303"
- },
- {
- "label": "盐池县",
- "position": [
- "107.40541",
- "37.784222"
- ],
- "value": "640323"
- },
- {
- "label": "同心县",
- "position": [
- "105.914764",
- "36.9829"
- ],
- "value": "640324"
- },
- {
- "label": "青铜峡市",
- "position": [
- "106.075395",
- "38.021509"
- ],
- "value": "640381"
- }
- ]
- },
- {
- "label": "固原市",
- "position": [
- "106.285241",
- "36.004561"
- ],
- "value": "640400",
- "children": [{
- "label": "原州区",
- "position": [
- "106.28477",
- "36.005337"
- ],
- "value": "640402"
- },
- {
- "label": "西吉县",
- "position": [
- "105.731801",
- "35.965384"
- ],
- "value": "640422"
- },
- {
- "label": "隆德县",
- "position": [
- "106.12344",
- "35.618234"
- ],
- "value": "640423"
- },
- {
- "label": "泾源县",
- "position": [
- "106.338674",
- "35.49344"
- ],
- "value": "640424"
- },
- {
- "label": "彭阳县",
- "position": [
- "106.641512",
- "35.849975"
- ],
- "value": "640425"
- }
- ]
- },
- {
- "label": "中卫市",
- "position": [
- "105.189568",
- "37.514951"
- ],
- "value": "640500",
- "children": [{
- "label": "沙坡头区",
- "position": [
- "105.190536",
- "37.514564"
- ],
- "value": "640502"
- },
- {
- "label": "中宁县",
- "position": [
- "105.675784",
- "37.489736"
- ],
- "value": "640521"
- },
- {
- "label": "海原县",
- "position": [
- "105.647323",
- "36.562007"
- ],
- "value": "640522"
- }
- ]
- }
- ]
- },
- {
- "label": "新疆维吾尔自治区",
- "position": [
- "87.617733",
- "43.792818"
- ],
- "value": "650000",
- "children": [{
- "label": "乌鲁木齐市",
- "position": [
- "87.617733",
- "43.792818"
- ],
- "value": "650100",
- "children": [{
- "label": "天山区",
- "position": [
- "87.620116",
- "43.796428"
- ],
- "value": "650102"
- },
- {
- "label": "沙依巴克区",
- "position": [
- "87.596639",
- "43.788872"
- ],
- "value": "650103"
- },
- {
- "label": "新市区",
- "position": [
- "87.560653",
- "43.870882"
- ],
- "value": "650104"
- },
- {
- "label": "水磨沟区",
- "position": [
- "87.613093",
- "43.816747"
- ],
- "value": "650105"
- },
- {
- "label": "头屯河区",
- "position": [
- "87.425823",
- "43.876053"
- ],
- "value": "650106"
- },
- {
- "label": "达坂城区",
- "position": [
- "88.30994",
- "43.36181"
- ],
- "value": "650107"
- },
- {
- "label": "米东区",
- "position": [
- "87.691801",
- "43.960982"
- ],
- "value": "650109"
- },
- {
- "label": "乌鲁木齐县",
- "position": [
- "87.505603",
- "43.982546"
- ],
- "value": "650121"
- }
- ]
- },
- {
- "label": "克拉玛依市",
- "position": [
- "84.873946",
- "45.595886"
- ],
- "value": "650200",
- "children": [{
- "label": "独山子区",
- "position": [
- "84.882267",
- "44.327207"
- ],
- "value": "650202"
- },
- {
- "label": "克拉玛依区",
- "position": [
- "84.868918",
- "45.600477"
- ],
- "value": "650203"
- },
- {
- "label": "白碱滩区",
- "position": [
- "85.129882",
- "45.689021"
- ],
- "value": "650204"
- },
- {
- "label": "乌尔禾区",
- "position": [
- "85.697767",
- "46.08776"
- ],
- "value": "650205"
- }
- ]
- },
- {
- "label": "吐鲁番市",
- "position": [
- "89.184078",
- "42.947613"
- ],
- "value": "650400",
- "children": [{
- "label": "高昌区",
- "position": [
- "89.182324",
- "42.947627"
- ],
- "value": "650402"
- },
- {
- "label": "鄯善县",
- "position": [
- "90.212692",
- "42.865503"
- ],
- "value": "650421"
- },
- {
- "label": "托克逊县",
- "position": [
- "88.655771",
- "42.793536"
- ],
- "value": "650422"
- }
- ]
- },
- {
- "label": "哈密市",
- "position": [
- "93.51316",
- "42.833248"
- ],
- "value": "650500",
- "children": [{
- "label": "伊州区",
- "position": [
- "93.509174",
- "42.833888"
- ],
- "value": "650502"
- },
- {
- "label": "巴里坤哈萨克自治县",
- "position": [
- "93.021795",
- "43.599032"
- ],
- "value": "650521"
- },
- {
- "label": "伊吾县",
- "position": [
- "94.692773",
- "43.252012"
- ],
- "value": "650522"
- }
- ]
- },
- {
- "label": "昌吉回族自治州",
- "position": [
- "87.304012",
- "44.014577"
- ],
- "value": "652300",
- "children": [{
- "label": "昌吉市",
- "position": [
- "87.304112",
- "44.013183"
- ],
- "value": "652301"
- },
- {
- "label": "阜康市",
- "position": [
- "87.98384",
- "44.152153"
- ],
- "value": "652302"
- },
- {
- "label": "呼图壁县",
- "position": [
- "86.888613",
- "44.189342"
- ],
- "value": "652323"
- },
- {
- "label": "玛纳斯县",
- "position": [
- "86.217687",
- "44.305625"
- ],
- "value": "652324"
- },
- {
- "label": "奇台县",
- "position": [
- "89.591437",
- "44.021996"
- ],
- "value": "652325"
- },
- {
- "label": "吉木萨尔县",
- "position": [
- "89.181288",
- "43.997162"
- ],
- "value": "652327"
- },
- {
- "label": "木垒哈萨克自治县",
- "position": [
- "90.282833",
- "43.832442"
- ],
- "value": "652328"
- }
- ]
- },
- {
- "label": "博尔塔拉蒙古自治州",
- "position": [
- "82.074778",
- "44.903258"
- ],
- "value": "652700",
- "children": [{
- "label": "博乐市",
- "position": [
- "82.072237",
- "44.903087"
- ],
- "value": "652701"
- },
- {
- "label": "阿拉山口市",
- "position": [
- "82.569389",
- "45.16777"
- ],
- "value": "652702"
- },
- {
- "label": "精河县",
- "position": [
- "82.892938",
- "44.605645"
- ],
- "value": "652722"
- },
- {
- "label": "温泉县",
- "position": [
- "81.03099",
- "44.973751"
- ],
- "value": "652723"
- }
- ]
- },
- {
- "label": "巴音郭楞蒙古自治州",
- "position": [
- "86.150969",
- "41.768552"
- ],
- "value": "652800",
- "children": [{
- "label": "库尔勒市",
- "position": [
- "86.145948",
- "41.763122"
- ],
- "value": "652801"
- },
- {
- "label": "轮台县",
- "position": [
- "84.248542",
- "41.781266"
- ],
- "value": "652822"
- },
- {
- "label": "尉犁县",
- "position": [
- "86.263412",
- "41.337428"
- ],
- "value": "652823"
- },
- {
- "label": "若羌县",
- "position": [
- "88.168807",
- "39.023807"
- ],
- "value": "652824"
- },
- {
- "label": "且末县",
- "position": [
- "85.532629",
- "38.138562"
- ],
- "value": "652825"
- },
- {
- "label": "焉耆回族自治县",
- "position": [
- "86.5698",
- "42.064349"
- ],
- "value": "652826"
- },
- {
- "label": "和静县",
- "position": [
- "86.391067",
- "42.31716"
- ],
- "value": "652827"
- },
- {
- "label": "和硕县",
- "position": [
- "86.864947",
- "42.268863"
- ],
- "value": "652828"
- },
- {
- "label": "博湖县",
- "position": [
- "86.631576",
- "41.980166"
- ],
- "value": "652829"
- }
- ]
- },
- {
- "label": "阿克苏地区",
- "position": [
- "80.265068",
- "41.170712"
- ],
- "value": "652900",
- "children": [{
- "label": "阿克苏市",
- "position": [
- "80.2629",
- "41.171272"
- ],
- "value": "652901"
- },
- {
- "label": "库车市",
- "position": [
- "82.96304",
- "41.717141"
- ],
- "value": "652902"
- },
- {
- "label": "温宿县",
- "position": [
- "80.243273",
- "41.272995"
- ],
- "value": "652922"
- },
- {
- "label": "沙雅县",
- "position": [
- "82.78077",
- "41.226268"
- ],
- "value": "652924"
- },
- {
- "label": "新和县",
- "position": [
- "82.610828",
- "41.551176"
- ],
- "value": "652925"
- },
- {
- "label": "拜城县",
- "position": [
- "81.869881",
- "41.796101"
- ],
- "value": "652926"
- },
- {
- "label": "乌什县",
- "position": [
- "79.230805",
- "41.21587"
- ],
- "value": "652927"
- },
- {
- "label": "阿瓦提县",
- "position": [
- "80.378426",
- "40.638422"
- ],
- "value": "652928"
- },
- {
- "label": "柯坪县",
- "position": [
- "79.04785",
- "40.50624"
- ],
- "value": "652929"
- }
- ]
- },
- {
- "label": "克孜勒苏柯尔克孜自治州",
- "position": [
- "76.172825",
- "39.713431"
- ],
- "value": "653000",
- "children": [{
- "label": "阿图什市",
- "position": [
- "76.173939",
- "39.712898"
- ],
- "value": "653001"
- },
- {
- "label": "阿克陶县",
- "position": [
- "75.945159",
- "39.147079"
- ],
- "value": "653022"
- },
- {
- "label": "阿合奇县",
- "position": [
- "78.450164",
- "40.937567"
- ],
- "value": "653023"
- },
- {
- "label": "乌恰县",
- "position": [
- "75.25969",
- "39.716633"
- ],
- "value": "653024"
- }
- ]
- },
- {
- "label": "喀什地区",
- "position": [
- "75.989138",
- "39.467664"
- ],
- "value": "653100",
- "children": [{
- "label": "喀什市",
- "position": [
- "75.98838",
- "39.467861"
- ],
- "value": "653101"
- },
- {
- "label": "疏附县",
- "position": [
- "75.863075",
- "39.378306"
- ],
- "value": "653121"
- },
- {
- "label": "疏勒县",
- "position": [
- "76.053653",
- "39.399461"
- ],
- "value": "653122"
- },
- {
- "label": "英吉沙县",
- "position": [
- "76.174292",
- "38.929839"
- ],
- "value": "653123"
- },
- {
- "label": "泽普县",
- "position": [
- "77.273593",
- "38.191217"
- ],
- "value": "653124"
- },
- {
- "label": "莎车县",
- "position": [
- "77.248884",
- "38.414499"
- ],
- "value": "653125"
- },
- {
- "label": "叶城县",
- "position": [
- "77.420353",
- "37.884679"
- ],
- "value": "653126"
- },
- {
- "label": "麦盖提县",
- "position": [
- "77.651538",
- "38.903384"
- ],
- "value": "653127"
- },
- {
- "label": "岳普湖县",
- "position": [
- "76.7724",
- "39.235248"
- ],
- "value": "653128"
- },
- {
- "label": "伽师县",
- "position": [
- "76.741982",
- "39.494325"
- ],
- "value": "653129"
- },
- {
- "label": "巴楚县",
- "position": [
- "78.55041",
- "39.783479"
- ],
- "value": "653130"
- },
- {
- "label": "塔什库尔干塔吉克自治县",
- "position": [
- "75.228068",
- "37.775437"
- ],
- "value": "653131"
- }
- ]
- },
- {
- "label": "和田地区",
- "position": [
- "79.92533",
- "37.110687"
- ],
- "value": "653200",
- "children": [{
- "label": "和田市",
- "position": [
- "79.927542",
- "37.108944"
- ],
- "value": "653201"
- },
- {
- "label": "和田县",
- "position": [
- "79.81907",
- "37.120031"
- ],
- "value": "653221"
- },
- {
- "label": "墨玉县",
- "position": [
- "79.736629",
- "37.271511"
- ],
- "value": "653222"
- },
- {
- "label": "皮山县",
- "position": [
- "78.282301",
- "37.616332"
- ],
- "value": "653223"
- },
- {
- "label": "洛浦县",
- "position": [
- "80.184038",
- "37.074377"
- ],
- "value": "653224"
- },
- {
- "label": "策勒县",
- "position": [
- "80.803572",
- "37.001672"
- ],
- "value": "653225"
- },
- {
- "label": "于田县",
- "position": [
- "81.667845",
- "36.854628"
- ],
- "value": "653226"
- },
- {
- "label": "民丰县",
- "position": [
- "82.692354",
- "37.064909"
- ],
- "value": "653227"
- }
- ]
- },
- {
- "label": "伊犁哈萨克自治州",
- "position": [
- "81.317946",
- "43.92186"
- ],
- "value": "654000",
- "children": [{
- "label": "伊宁市",
- "position": [
- "81.316343",
- "43.922209"
- ],
- "value": "654002"
- },
- {
- "label": "奎屯市",
- "position": [
- "84.901602",
- "44.423445"
- ],
- "value": "654003"
- },
- {
- "label": "霍尔果斯市",
- "position": [
- "80.420759",
- "44.201669"
- ],
- "value": "654004"
- },
- {
- "label": "伊宁县",
- "position": [
- "81.524671",
- "43.977876"
- ],
- "value": "654021"
- },
- {
- "label": "察布查尔锡伯自治县",
- "position": [
- "81.150874",
- "43.838883"
- ],
- "value": "654022"
- },
- {
- "label": "霍城县",
- "position": [
- "80.872508",
- "44.049912"
- ],
- "value": "654023"
- },
- {
- "label": "巩留县",
- "position": [
- "82.227044",
- "43.481618"
- ],
- "value": "654024"
- },
- {
- "label": "新源县",
- "position": [
- "83.258493",
- "43.434249"
- ],
- "value": "654025"
- },
- {
- "label": "昭苏县",
- "position": [
- "81.126029",
- "43.157765"
- ],
- "value": "654026"
- },
- {
- "label": "特克斯县",
- "position": [
- "81.840058",
- "43.214861"
- ],
- "value": "654027"
- },
- {
- "label": "尼勒克县",
- "position": [
- "82.504119",
- "43.789737"
- ],
- "value": "654028"
- }
- ]
- },
- {
- "label": "塔城地区",
- "position": [
- "82.985732",
- "46.746301"
- ],
- "value": "654200",
- "children": [{
- "label": "塔城市",
- "position": [
- "82.983988",
- "46.746281"
- ],
- "value": "654201"
- },
- {
- "label": "乌苏市",
- "position": [
- "84.677624",
- "44.430115"
- ],
- "value": "654202"
- },
- {
- "label": "额敏县",
- "position": [
- "83.622118",
- "46.522555"
- ],
- "value": "654221"
- },
- {
- "label": "沙湾县",
- "position": [
- "85.622508",
- "44.329544"
- ],
- "value": "654223"
- },
- {
- "label": "托里县",
- "position": [
- "83.60469",
- "45.935863"
- ],
- "value": "654224"
- },
- {
- "label": "裕民县",
- "position": [
- "82.982157",
- "46.202781"
- ],
- "value": "654225"
- },
- {
- "label": "和布克赛尔蒙古自治县",
- "position": [
- "85.733551",
- "46.793001"
- ],
- "value": "654226"
- }
- ]
- },
- {
- "label": "阿勒泰地区",
- "position": [
- "88.13963",
- "47.848393"
- ],
- "value": "654300",
- "children": [{
- "label": "阿勒泰市",
- "position": [
- "88.138743",
- "47.848911"
- ],
- "value": "654301"
- },
- {
- "label": "布尔津县",
- "position": [
- "86.86186",
- "47.70453"
- ],
- "value": "654321"
- },
- {
- "label": "富蕴县",
- "position": [
- "89.524993",
- "46.993106"
- ],
- "value": "654322"
- },
- {
- "label": "福海县",
- "position": [
- "87.494569",
- "47.113128"
- ],
- "value": "654323"
- },
- {
- "label": "哈巴河县",
- "position": [
- "86.418964",
- "48.059284"
- ],
- "value": "654324"
- },
- {
- "label": "青河县",
- "position": [
- "90.381561",
- "46.672446"
- ],
- "value": "654325"
- },
- {
- "label": "吉木乃县",
- "position": [
- "85.876064",
- "47.434633"
- ],
- "value": "654326"
- }
- ]
- },
- {
- "label": "石河子市",
- "position": [
- "86.041075",
- "44.305886"
- ],
- "value": "659001",
- "children": [{
- "label": "兵团一五二团",
- "position": [
- "86.0704",
- "44.2827"
- ],
- "value": "659001"
- },
- {
- "label": "红山街道",
- "position": [
- "86.048",
- "44.2682"
- ],
- "value": "659001"
- },
- {
- "label": "向阳街道",
- "position": [
- "86.0397",
- "44.3429"
- ],
- "value": "659001"
- },
- {
- "label": "东城街道",
- "position": [
- "86.0687",
- "44.2873"
- ],
- "value": "659001"
- },
- {
- "label": "石河子乡",
- "position": [
- "86.1022",
- "44.1352"
- ],
- "value": "659001"
- },
- {
- "label": "老街街道",
- "position": [
- "85.9909",
- "44.3496"
- ],
- "value": "659001"
- },
- {
- "label": "北泉镇",
- "position": [
- "86.0983",
- "44.4346"
- ],
- "value": "659001"
- },
- {
- "label": "新城街道",
- "position": [
- "85.9823",
- "44.2893"
- ],
- "value": "659001"
- }
- ]
- },
- {
- "label": "阿拉尔市",
- "position": [
- "81.285884",
- "40.541914"
- ],
- "value": "659002",
- "children": [{
- "label": "幸福路街道",
- "position": [
- "81.2681",
- "40.577"
- ],
- "value": "659002"
- },
- {
- "label": "阿拉尔农场",
- "position": [
- "81.0627",
- "40.5567"
- ],
- "value": "659002"
- },
- {
- "label": "兵团第一师幸福农场",
- "position": [
- "80.9904",
- "40.7025"
- ],
- "value": "659002"
- },
- {
- "label": "工业园区",
- "position": [
- "81.2448",
- "40.5461"
- ],
- "value": "659002"
- },
- {
- "label": "兵团七团",
- "position": [
- "80.6543",
- "40.6569"
- ],
- "value": "659002"
- },
- {
- "label": "兵团十一团",
- "position": [
- "81.5619",
- "40.6277"
- ],
- "value": "659002"
- },
- {
- "label": "托喀依乡",
- "position": [
- "81.3541",
- "40.5818"
- ],
- "value": "659002"
- },
- {
- "label": "青松路街道",
- "position": [
- "81.2545",
- "40.542"
- ],
- "value": "659002"
- },
- {
- "label": "兵团八团",
- "position": [
- "80.7996",
- "40.5973"
- ],
- "value": "659002"
- },
- {
- "label": "兵团第一师水利水电工程处",
- "position": [
- "81.2858",
- "40.5496"
- ],
- "value": "659002"
- },
- {
- "label": "中心监狱",
- "position": [
- "81.2766",
- "40.6692"
- ],
- "value": "659002"
- },
- {
- "label": "兵团第一师塔里木灌区水利管理处",
- "position": [
- "81.2876",
- "40.5454"
- ],
- "value": "659002"
- },
- {
- "label": "兵团十四团",
- "position": [
- "81.8688",
- "40.9423"
- ],
- "value": "659002"
- },
- {
- "label": "兵团十团",
- "position": [
- "81.259",
- "40.6387"
- ],
- "value": "659002"
- },
- {
- "label": "金银川路街道",
- "position": [
- "81.2613",
- "40.5355"
- ],
- "value": "659002"
- },
- {
- "label": "兵团十三团",
- "position": [
- "81.4734",
- "40.5742"
- ],
- "value": "659002"
- },
- {
- "label": "南口街道",
- "position": [
- "81.2988",
- "40.5154"
- ],
- "value": "659002"
- },
- {
- "label": "兵团十六团",
- "position": [
- "80.7871",
- "40.4163"
- ],
- "value": "659002"
- },
- {
- "label": "兵团十二团",
- "position": [
- "81.1109",
- "40.4977"
- ],
- "value": "659002"
- }
- ]
- },
- {
- "label": "图木舒克市",
- "position": [
- "79.077978",
- "39.867316"
- ],
- "value": "659003",
- "children": [{
- "label": "兵团四十九团",
- "position": [
- "78.756",
- "39.8224"
- ],
- "value": "659003"
- },
- {
- "label": "兵团图木舒克市永安坝",
- "position": [
- "79.0133",
- "39.8385"
- ],
- "value": "659003"
- },
- {
- "label": "兵团五十一团",
- "position": [
- "79.2902",
- "39.9888"
- ],
- "value": "659003"
- },
- {
- "label": "前海街道",
- "position": [
- "79.0778",
- "39.855"
- ],
- "value": "659003"
- },
- {
- "label": "兵团图木舒克市喀拉拜勒镇",
- "position": [
- "79.0112",
- "39.8526"
- ],
- "value": "659003"
- },
- {
- "label": "永安坝街道",
- "position": [
- "79.0229",
- "39.8507"
- ],
- "value": "659003"
- },
- {
- "label": "齐干却勒街道",
- "position": [
- "79.0906",
- "39.8753"
- ],
- "value": "659003"
- },
- {
- "label": "兵团五十团",
- "position": [
- "79.2315",
- "39.9549"
- ],
- "value": "659003"
- },
- {
- "label": "兵团五十三团",
- "position": [
- "79.3214",
- "40.0318"
- ],
- "value": "659003"
- },
- {
- "label": "兵团四十四团",
- "position": [
- "79.1926",
- "39.9168"
- ],
- "value": "659003"
- }
- ]
- },
- {
- "label": "五家渠市",
- "position": [
- "87.526884",
- "44.167401"
- ],
- "value": "659004",
- "children": [{
- "label": "兵团一零二团",
- "position": [
- "87.5925",
- "44.2694"
- ],
- "value": "659004"
- },
- {
- "label": "军垦路街道",
- "position": [
- "87.5084",
- "44.1889"
- ],
- "value": "659004"
- },
- {
- "label": "人民路街道",
- "position": [
- "87.5728",
- "44.1822"
- ],
- "value": "659004"
- },
- {
- "label": "兵团一零一团",
- "position": [
- "87.5562",
- "44.1752"
- ],
- "value": "659004"
- },
- {
- "label": "兵团一零三团",
- "position": [
- "87.4075",
- "44.5317"
- ],
- "value": "659004"
- },
- {
- "label": "青湖路街道",
- "position": [
- "87.5245",
- "44.1764"
- ],
- "value": "659004"
- }
- ]
- },
- {
- "label": "北屯市",
- "position": [
- "87.824932",
- "47.353177"
- ],
- "value": "659005",
- "children": [{
- "label": "北屯镇",
- "position": [
- "87.7224",
- "47.4017"
- ],
- "value": "659005"
- },
- {
- "label": "兵团一八八团",
- "position": [
- "87.5186",
- "47.4099"
- ],
- "value": "659005"
- },
- {
- "label": "兵团一八七团",
- "position": [
- "87.761",
- "47.1948"
- ],
- "value": "659005"
- },
- {
- "label": "兵团一八三团",
- "position": [
- "88.1187",
- "47.1285"
- ],
- "value": "659005"
- }
- ]
- },
- {
- "label": "铁门关市",
- "position": [
- "85.501218",
- "41.827251"
- ],
- "value": "659006",
- "children": [{
- "label": "农二师三十团",
- "position": [
- "85.5849",
- "41.8825"
- ],
- "value": "659006"
- },
- {
- "label": "兵团二十九团",
- "position": [
- "85.5849",
- "41.8825"
- ],
- "value": "659006"
- }
- ]
- },
- {
- "label": "双河市",
- "position": [
- "82.353656",
- "44.840524"
- ],
- "value": "659007",
- "children": [{
- "label": "兵团八十九团",
- "position": [
- "82.2853",
- "45.0582"
- ],
- "value": "659007"
- },
- {
- "label": "兵团八十六团",
- "position": [
- "82.1787",
- "44.8089"
- ],
- "value": "659007"
- },
- {
- "label": "兵团八十四团",
- "position": [
- "82.215",
- "45.1246"
- ],
- "value": "659007"
- },
- {
- "label": "兵团九十团",
- "position": [
- "82.6473",
- "44.7651"
- ],
- "value": "659007"
- },
- {
- "label": "兵团八十一团",
- "position": [
- "82.4908",
- "44.7469"
- ],
- "value": "659007"
- }
- ]
- },
- {
- "label": "可克达拉市",
- "position": [
- "80.63579",
- "43.6832"
- ],
- "value": "659008",
- "children": [{
- "label": "兵团六十八团",
- "position": [
- "80.9903",
- "43.8897"
- ],
- "value": "659008"
- },
- {
- "label": "都拉塔口岸",
- "position": [
- "80.6882",
- "43.7131"
- ],
- "value": "659008"
- },
- {
- "label": "兵团六十七团",
- "position": [
- "80.6068",
- "43.7652"
- ],
- "value": "659008"
- },
- {
- "label": "兵团六十六团",
- "position": [
- "81.086",
- "43.9599"
- ],
- "value": "659008"
- },
- {
- "label": "兵团六十三团",
- "position": [
- "80.4844",
- "43.931"
- ],
- "value": "659008"
- },
- {
- "label": "兵团六十四团",
- "position": [
- "80.6749",
- "44.0986"
- ],
- "value": "659008"
- }
- ]
- },
- {
- "label": "昆玉市",
- "position": [
- "79.287372",
- "37.207994"
- ],
- "value": "659009",
- "children": [{
- "label": "乌鲁克萨依乡",
- "position": [
- "80.8148",
- "36.2925"
- ],
- "value": "659009"
- },
- {
- "label": "奴尔乡",
- "position": [
- "81.0072",
- "36.2605"
- ],
- "value": "659009"
- },
- {
- "label": "普恰克其乡",
- "position": [
- "79.783",
- "37.5805"
- ],
- "value": "659009"
- },
- {
- "label": "乌尔其乡",
- "position": [
- "79.5866",
- "37.332"
- ],
- "value": "659009"
- },
- {
- "label": "博斯坦乡",
- "position": [
- "81.3298",
- "36.4124"
- ],
- "value": "659009"
- },
- {
- "label": "兵团四十七团",
- "position": [
- "79.6039",
- "37.3666"
- ],
- "value": "659009"
- },
- {
- "label": "兵团皮山农场",
- "position": [
- "78.5171",
- "37.563"
- ],
- "value": "659009"
- },
- {
- "label": "喀拉喀什镇",
- "position": [
- "79.7678",
- "37.2867"
- ],
- "value": "659009"
- },
- {
- "label": "阔依其乡",
- "position": [
- "79.6876",
- "37.3691"
- ],
- "value": "659009"
- },
- {
- "label": "兵团一牧场",
- "position": [
- "81.0295",
- "36.3152"
- ],
- "value": "659009"
- },
- {
- "label": "兵团二二四团",
- "position": [
- "79.3401",
- "37.416"
- ],
- "value": "659009"
- }
- ]
- },
- {
- "label": "胡杨河市",
- "position": [
- "84.8275959",
- "44.69288853"
- ],
- "value": "659010",
- "children": [{
- "label": "兵团一三零团",
- "position": [
- "84.8765",
- "44.6164"
- ],
- "value": "659010"
- },
- {
- "label": "五五新镇街道",
- "position": [
- "84.8012",
- "44.865"
- ],
- "value": "659010"
- },
- {
- "label": "兵团一二八团",
- "position": [
- "84.5572",
- "45.0861"
- ],
- "value": "659010"
- },
- {
- "label": "兵团一二九团",
- "position": [
- "84.8046",
- "44.8465"
- ],
- "value": "659010"
- }
- ]
- }
- ]
- },
- {
- "label": "台湾省",
- "position": [
- "121.509062",
- "25.044332"
- ],
- "value": "710000",
- "children": []
- },
- {
- "label": "香港特别行政区",
- "position": [
- "114.173355",
- "22.320048"
- ],
- "value": "810000",
- "children": [{
- "label": "中西区",
- "position": [
- "114.1543731",
- "22.28198083"
- ],
- "value": "810001",
- "children": []
- },
- {
- "label": "湾仔区",
- "position": [
- "114.1829153",
- "22.27638889"
- ],
- "value": "810002",
- "children": []
- },
- {
- "label": "东区",
- "position": [
- "114.2260031",
- "22.27969306"
- ],
- "value": "810003",
- "children": []
- },
- {
- "label": "南区",
- "position": [
- "114.1600117",
- "22.24589667"
- ],
- "value": "810004",
- "children": []
- },
- {
- "label": "油尖旺区",
- "position": [
- "114.1733317",
- "22.31170389"
- ],
- "value": "810005",
- "children": []
- },
- {
- "label": "深水埗区",
- "position": [
- "114.1632417",
- "22.33385417"
- ],
- "value": "810006",
- "children": []
- },
- {
- "label": "九龙城区",
- "position": [
- "114.1928467",
- "22.31251"
- ],
- "value": "810007",
- "children": []
- },
- {
- "label": "黄大仙区",
- "position": [
- "114.2038856",
- "22.33632056"
- ],
- "value": "810008",
- "children": []
- },
- {
- "label": "观塘区",
- "position": [
- "114.2140542",
- "22.32083778"
- ],
- "value": "810009",
- "children": []
- },
- {
- "label": "荃湾区",
- "position": [
- "114.1210792",
- "22.36830667"
- ],
- "value": "810010",
- "children": []
- },
- {
- "label": "屯门区",
- "position": [
- "113.9765742",
- "22.39384417"
- ],
- "value": "810011",
- "children": []
- },
- {
- "label": "元朗区",
- "position": [
- "114.0324381",
- "22.44142833"
- ],
- "value": "810012",
- "children": []
- },
- {
- "label": "北区",
- "position": [
- "114.1473639",
- "22.49610389"
- ],
- "value": "810013",
- "children": []
- },
- {
- "label": "大埔区",
- "position": [
- "114.1717431",
- "22.44565306"
- ],
- "value": "810014",
- "children": []
- },
- {
- "label": "西贡区",
- "position": [
- "114.264645",
- "22.31421306"
- ],
- "value": "810015",
- "children": []
- },
- {
- "label": "沙田区",
- "position": [
- "114.1953653",
- "22.37953167"
- ],
- "value": "810016",
- "children": []
- },
- {
- "label": "葵青区",
- "position": [
- "114.1393194",
- "22.36387667"
- ],
- "value": "810017",
- "children": []
- },
- {
- "label": "离岛区",
- "position": [
- "113.94612",
- "22.28640778"
- ],
- "value": "810018",
- "children": []
- }
- ]
- },
- {
- "label": "澳门特别行政区",
- "position": [
- "113.54909",
- "22.198951"
- ],
- "value": "820000",
- "children": [{
- "label": "花地玛堂区",
- "position": [
- "113.5528956",
- "22.20787"
- ],
- "value": "820001",
- "children": []
- },
- {
- "label": "花王堂区",
- "position": [
- "113.5489608",
- "22.1992075"
- ],
- "value": "820002",
- "children": []
- },
- {
- "label": "望德堂区",
- "position": [
- "113.5501828",
- "22.19372083"
- ],
- "value": "820003",
- "children": []
- },
- {
- "label": "大堂区",
- "position": [
- "113.5536475",
- "22.18853944"
- ],
- "value": "820004",
- "children": []
- },
- {
- "label": "风顺堂区",
- "position": [
- "113.5419278",
- "22.18736806"
- ],
- "value": "820005",
- "children": []
- },
- {
- "label": "嘉模堂区",
- "position": [
- "113.5587044",
- "22.15375944"
- ],
- "value": "820006",
- "children": []
- },
- {
- "label": "路凼填海区",
- "position": [
- "113.5695992",
- "22.13663"
- ],
- "value": "820007",
- "children": []
- },
- {
- "label": "圣方济各堂区",
- "position": [
- "113.5599542",
- "22.12348639"
- ],
- "value": "820008",
- "children": []
- }
- ]
- }
- ]
-export default {
- data:data
-}
\ No newline at end of file
diff --git a/im-uniapp/common/config.js b/im-uniapp/common/config.js
deleted file mode 100644
index 9d4f8c0..0000000
--- a/im-uniapp/common/config.js
+++ /dev/null
@@ -1,48 +0,0 @@
-export default class config{
- static prod="online"
- static getZnzqApiUrl(){
- if(process.env.NODE_ENV === 'development' ){
- return 'http://work.ii999.live:19002/znzq'
- }else{
- if(this.prod=="online"){
- return 'http://work.ii999.live:19002/znzq'
- }else{
- return '/znzq'
- }
- }
- }
-
- static getBaseApiUrl(){
- //return process.env.NODE_ENV === 'development' ? 'http://119.45.242.222:8989' :'http://172.16.2.3:8989';
- return process.env.NODE_ENV === 'development' ? 'http://119.45.242.222:8989' :'/base_api';
- }
- static getImApiUrl(){
- //return process.env.NODE_ENV === 'development' ? 'http://119.45.242.222:28000/v1' :'http://172.16.2.3:28000/v1';
- return process.env.NODE_ENV === 'development' ? 'http://119.45.242.222/im_api/v1' :'/im_api/v1';
- }
- static getImAppId(){
- return 10000;
- }
- static getVideoRoomUrl(room,userid,isPublish=0,isPlayer=1,hasVideo=1,uname,tuid){
- if(process.env.NODE_ENV === 'development' ){
- return `http://localhost:8080/hd-glasses-app/#/call_room?showInviteConfirmDialog=1&isForce=0&isPublish=${isPublish}&isPlayer=${isPlayer}&uid=${userid}&room=${room}&hasVideo=${hasVideo}&uname=${uname}&tuid=${tuid}`
- }else{
- if(this.prod=="online"){
- return `https://119.45.242.222/hd-glasses-app/#/call_room?showInviteConfirmDialog=1&isForce=0&isPublish=${isPublish}&isPlayer=${isPlayer}&uid=${userid}&room=${room}&hasVideo=${hasVideo}&uname=${uname}&tuid=${tuid}`
- }else{
- return `https://172.16.3.19/hd-glasses-app/#/call_room?showInviteConfirmDialog=1&isForce=0&isPublish=${isPublish}&isPlayer=${isPlayer}&uid=${userid}&room=${room}&hasVideo=${hasVideo}&uname=${uname}&tuid=${tuid}`
- }
- }
- }
- static getSRSUrl(){
- if(process.env.NODE_ENV === 'development' ){
- return 'webrtc://119.45.242.222/'
- }else{
- if(this.prod=="online"){
- return 'webrtc://119.45.242.222/'
- }else{
- return 'webrtc://172.16.3.19/'
- }
- }
- }
-}
diff --git a/im-uniapp/common/consoleImgs.js b/im-uniapp/common/consoleImgs.js
deleted file mode 100644
index d48c85c..0000000
--- a/im-uniapp/common/consoleImgs.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default {
- fz:' ......................阿弥陀佛......................\n' + ' _oo0oo_ \n' + ' o8888888o \n' + ' 88" . "88 \n' + ' (| -_- |) \n' + ' 0\\ = /0 \n' + ' ___/‘---’\\___ \n' + " .' \\| |/ '. \n" + ' / \\\\||| : |||// \\ \n' + ' / _||||| -卍-|||||_ \\ \n' + ' | | \\\\\\ - /// | | \n' + " | \\_| ''\\---/'' |_/ | \n" + " \\ .-\\__ '-' ___/-. / \n" + " ___'. .' /--.--\\ '. .'___ \n" + ' ."" ‘< ‘.___\\_<|>_/___.’>’ "". \n' + ' | | : ‘- \\‘.;‘\\ _ /’;.’/ - ’ : | | \n' + ' \\ \\ ‘_. \\_ __\\ /__ _/ .-’ / / \n' + ' =====‘-.____‘.___ \\_____/___.-’___.-’===== \n' + ' ‘=---=’ \n' + ' \n' + '....................佛祖保佑 ,永无BUG...................'
-}
\ No newline at end of file
diff --git a/im-uniapp/common/customHttp.js b/im-uniapp/common/customHttp.js
deleted file mode 100644
index a04b4c5..0000000
--- a/im-uniapp/common/customHttp.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import Request from 'luch-request' // 使用npm
-import conf from "@/common/config.js"
-
-const customHttp = new Request({
- timeout: 300000, //超时时长5分钟,
- header: {
- 'Content-Type': 'application/json;charset=UTF-8;'
- }
-});
-
-//请求拦截器
-customHttp.interceptors.request.use((config) => {
- if (config.custom.target != undefined) {
- if (config.custom.target == "znzq") {
- config.baseURL = conf.getZnzqApiUrl()
- const token = uni.getStorageSync('token');
- config.header["X-Access-Token"] = token;
- console.log("==================customHttp.interceptors.request.use")
- console.log(config)
- }
- }
-
- console.log(config)
- return config
-}, error => {
- return Promise.resolve(error)
-})
-
-// 响应拦截器
-customHttp.interceptors.response.use((response) => {
- console.log(response)
- return response
-}, (error) => {
- //未登录时清空缓存跳转
- if (error.statusCode == 401) {
- uni.clearStorageSync();
- uni.switchTab({
- url: "/pages/index/index.vue"
- })
- }
- return Promise.resolve(error)
-})
-
-
-export default {
- customHttp
-}
\ No newline at end of file
diff --git a/im-uniapp/common/imSdk/lim-sdk.js b/im-uniapp/common/imSdk/lim-sdk.js
deleted file mode 100644
index 6b939fb..0000000
--- a/im-uniapp/common/imSdk/lim-sdk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.imsdk=e():t.imsdk=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=4)}([function(t,e,n){"use strict";var r=this&&this.__spreadArrays||function(){for(var t=0,e=0,n=arguments.length;e0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=1e4){r=Date.now();var s=e.imClient.buildMessagePack(y.SystemCommand.PING,{});t.send(s.pack(!1))}setTimeout(i,500)}else a.default.error("heartbeatLoop exited")};setTimeout(i,500)},t.prototype.createP2PTextMessage=function(t,e){var n=new g.MessagePack(this.appId);return n.buildTextMessagePack(this.userId,t,e),n},t.prototype.sendP2PMessage=function(t){var n=e.imClient.buildMessagePack(y.MessageCommand.MSG_P2P,t);this.conn&&this.conn.send(n.pack(!1))},t.prototype.sendP2PMessageReciveAck=function(t){console.log("=============== sendP2PMessageReciveAck"),console.log(t),t.toId=t.fromId,t.fromId=this.userId,console.log(t);var n=e.imClient.buildMessagePack(y.MessageCommand.MSG_RECIVE_ACK,t);t.conversationType=0;var r=e.imClient.buildMessagePack(y.MessageCommand.MSG_READED,t),i=e.imClient.buildMessagePack(y.MessageCommand.MSG_READED_RECEIPT,t);this.conn&&(this.conn.send(n.pack(!1)),this.conn.send(r.pack(!1)),this.conn.send(i.pack(!1)))},t.prototype.sendP2PMessageReadedReceipt=function(t){console.log("=============== sendP2PMessageReadedRECEIPT"),console.log(t),t.toId=t.fromId,t.fromId=this.userId,console.log(t);var n=e.imClient.buildMessagePack(y.MessageCommand.MSG_READED_RECEIPT,t);this.conn&&(console.log("=============== sendP2PMessageReadedRECEIPT 正式开始发送已读回执"),this.conn.send(n.pack(!1)))},t.prototype.getUserId=function(){return this.userId},t.prototype.loadOfflineMessage=function(){return r(this,void 0,void 0,(function(){var t,n;return i(this,(function(r){switch(r.label){case 0:return a.default.info("loadOfflineMessage start"),[4,new p.default(this.httpUrl).call("/message/syncOfflineMessage",this.getRequestParams(),{clientType:this.clientType,operater:this.userId,appId:this.appId,lastSequence:this.lastOfflineMessageSequence,maxLimit:100})];case 1:return(t=r.sent()).isSucceed()?(this.lastOfflineMessageSequence=t.data.maxSequence,n=t.data.dataList,this.offlineMessageList.push(n),n.length>0&&"function"==typeof e.imClient.listeners.onOfflineMessage&&e.imClient.listeners.onOfflineMessage(n),console.log(t.data.completed),t.data.completed||this.loadOfflineMessage()):a.default.error("loadOfflineMessage - error"),[2]}}))}))},t}();e.ImClient=b,e.limLogin=function(t,e,n){return r(void 0,void 0,void 0,(function(){return i(this,(function(r){return[2,new Promise((function(r,i){var o=new c.w3cwebsocket(t);o.binaryType="arraybuffer",a.default.info("limLogin");var s=setTimeout((function(){clearTimeout(s),r({success:!1,err:new Error("timeout"),conn:o})}),1e4);o.onopen=function(){if(o.readyState==c.w3cwebsocket.OPEN){"function"==typeof n.listeners.onSocketConnectEvent&&n.listeners.onSocketConnectEvent(t,e),a.default.info("开启连接");var r={userId:e.userId},i=n.buildMessagePack(9e3,r);o.send(i.pack(!1))}},o.onerror=function(t){clearTimeout(s),a.default.error(t),r({success:!1,err:t,conn:o})},o.onmessage=function(t){if("string"!=typeof t.data){clearTimeout(s);var e=new u.default(t.data).int32().int32().unpack(),n=e[0];e[1];9001==n&&r({success:!0,conn:o})}else a.default.info("Received: '"+t.data+"'")}}))]}))}))},e.getLen=function(t){for(var e=0,n=0;n=1&&r<=126||65376<=r&&r<=65439?e++:e+=3}return e},e.imClient=new b},function(t,e,n){"use strict";(function(t){e.__esModule=!0;var r=function(){function e(){}return e.getFetchToolkit=function(){var e;if(void 0!==t.fetch&&"function"==typeof t.fetch)e=t.fetch;else if("function"==typeof fetch)e=fetch;else{e=n(9).fetch}return e},e}();e.default=r}).call(this,n(8))},function(t,e,n){"use strict";e.__esModule=!0,e.im=void 0;var r=n(2);e.im=r.imClient,"undefined"!=typeof uni&&(uni.im=r.imClient)},function(t,e,n){"use strict";e.__esModule=!0;var r=function(){function t(t,e){this.Type_Byte=1,this.Type_Short=2,this.Type_UShort=3,this.Type_Int32=4,this.Type_UInt32=5,this.Type_String=6,this.Type_VString=7,this.Type_Int64=8,this.Type_Float=9,this.Type_Double=10,this.Type_ByteArray=11,this._offset=0,this._list=[],this._littleEndian=!1,this._org_buf=t?t.constructor==DataView?t:t.constructor==Uint8Array?new DataView(t.buffer,e):new DataView(t,e):new DataView(new Uint8Array([]).buffer),this.arrayBuf=t,this.offset=e}return t.prototype.bigEndian=function(){return this._littleEndian=!1,this},t.prototype.littleEndianfunction=function(){return this._littleEndian=!0,this},t.prototype.utf8Write=function(t,e,n){for(var r=0,i=0,o=n.length;i>6),t.setUint8(e++,128|63&r)):r<55296||r>=57344?(t.setUint8(e++,224|r>>12),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r)):(i++,r=65536+((1023&r)<<10|1023&n.charCodeAt(i)),t.setUint8(e++,240|r>>18),t.setUint8(e++,128|r>>12&63),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r))},t.prototype.int32=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getInt32(this._offset,this._littleEndian)),this._offset+=4):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Int32,d:t,l:4}),this._offset+=4),this},t.prototype.uint32=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getUint32(this._offset,this._littleEndian)),this._offset+=4):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_UInt32,d:t,l:4}),this._offset+=4),this},t.prototype.blength=function(){return this._offset},t.prototype.string=function(t,e){if(0==arguments.length){var n=this._org_buf.getInt32(this._offset,this._littleEndian);this._offset+=4,this._list.push(this.utf8Read(this._org_buf,this._offset,n)),this._offset+=n}else{n=0;t&&(n=this.utf8Length(t)),this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_String,d:t,l:n}),this._offset+=n+4}return this},t.prototype.utf8Length=function(t){for(var e=0,n=0,r=0,i=t.length;r=57344?n+=3:(r++,n+=4);return n},t.prototype.utf8Read=function(t,e,n){for(var r="",i=0,o=e,s=e+n;o=65536?(i-=65536,r+=String.fromCharCode(55296+(i>>>10),56320+(1023&i))):r+=String.fromCharCode(i)}else r+=String.fromCharCode((15&a)<<12|(63&t.getUint8(++o))<<6|(63&t.getUint8(++o))<<0);else r+=String.fromCharCode((15&a)<<6|63&t.getUint8(++o));else r+=String.fromCharCode(a)}return r},t.prototype.vstring=function(t,e,n){if(!e)throw new Error("vstring must got len argument");if(null==t||null==t){for(var r=0,i=this._offset;i0&&r++;this._list.push(this.utf8Read(this._org_buf,this._offset,r)),this._offset+=e}else this._list.splice(null!=n?n:this._list.length,0,{t:this.Type_VString,d:t,l:e}),this._offset+=e;return this},t.prototype.int64=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getFloat64(this._offset,this._littleEndian)),this._offset+=8):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Int64,d:t,l:8}),this._offset+=8),this},t.prototype.float=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getFloat32(this._offset,this._littleEndian)),this._offset+=4):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Float,d:t,l:4}),this._offset+=4),this},t.prototype.double=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getFloat64(this._offset,this._littleEndian)),this._offset+=8):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Double,d:t,l:8}),this._offset+=8),this},t.prototype.byteArray=function(t,e,n){if(!e)throw new Error("byteArray must got len argument");if(null==t||null==t){var r=new Uint8Array(this._org_buf.buffer.slice(this._offset,this._offset+e));this._list.push(r),this._offset+=e}else this._list.splice(null!=n?n:this._list.length,0,{t:this.Type_ByteArray,d:t,l:e}),this._offset+=e;return this},t.prototype.unpack=function(){return this._list},t.prototype.packWithHead=function(){return this.pack(!0)},t.prototype.pack=function(t){this._org_buf=new DataView(new ArrayBuffer(t?this._offset+4:this._offset));var e=0;t&&(this._org_buf.setUint32(e,this._offset,this._littleEndian),e+=4);for(var n=0;n>2,o=(3&e)<<4|(n=t.charCodeAt(l++))>>4,s=(15&n)<<2|(r=t.charCodeAt(l++))>>6,a=63&r,isNaN(n)?s=a=64:isNaN(r)&&(a=64),u=u+this._keyStr.charAt(i)+this._keyStr.charAt(o)+this._keyStr.charAt(s)+this._keyStr.charAt(a);return u},decode:function(t){var e,n,r,i,o,s,a="",u=0;for(t=t.replace(/[^A-Za-z0-9+/=]/g,"");u>4,n=(15&i)<<4|(o=this._keyStr.indexOf(t.charAt(u++)))>>2,r=(3&o)<<6|(s=this._keyStr.indexOf(t.charAt(u++))),a+=String.fromCharCode(e),64!=o&&(a+=String.fromCharCode(n)),64!=s&&(a+=String.fromCharCode(r));return a=Base64._utf8_decode(a)},_utf8_encode:function(t){t=t.replace(/rn/g,"n");for(var e="",n=0;n127&&r<2048?(e+=String.fromCharCode(r>>6|192),e+=String.fromCharCode(63&r|128)):(e+=String.fromCharCode(r>>12|224),e+=String.fromCharCode(r>>6&63|128),e+=String.fromCharCode(63&r|128))}return e},_utf8_decode:function(t){for(var e="",n=0,r=0,i=0;n191&&r<224)i=t.charCodeAt(n+1),e+=String.fromCharCode((31&r)<<6|63&i),n+=2;else{i=t.charCodeAt(n+1);var o=t.charCodeAt(n+2);e+=String.fromCharCode((15&r)<<12|(63&i)<<6|63&o),n+=3}return e}},WebToolkit=function(){function WebToolkit(){}return WebToolkit.getBrowserInfo=function(){var t=navigator.userAgent.toLowerCase(),e=/edge\/[\d.]+/gi,n=/trident\/[\d.]+/gi,r=/msie\s[\d.]+/gi,i=/firefox\/[\d.]+/gi,o=/chrome\/[\d.]+/gi,s=/safari\/[\d.]+/gi,a=/opr\/[\d.]+/gi,u={code:0,system:t.split(" ")[1].split(" ")[0].split("(")[1],browser:"",browserVersion:""};return t.indexOf("trident")>0?(u.browser=t.match(n)[0].split("/")[0],u.browserVersion=t.match(n)[0].split("/")[1],u):t.indexOf("msie")>0?(u.browser=t.match(r)[0].split(" ")[0],u.browserVersion=t.match(r)[0].split(" ")[1],u):t.indexOf("edge")>0?(u.browser=t.match(e)[0].split("/")[0],u.browserVersion=t.match(e)[0].split("/")[1],u):t.indexOf("firefox")>0?(u.browser=t.match(i)[0].split("/")[0],u.browserVersion=t.match(i)[0].split("/")[1],u):t.indexOf("opr")>0?(u.browser=t.match(a)[0].split("/")[0],u.browserVersion=t.match(a)[0].split("/")[1],u):t.indexOf("safari")>0&&t.indexOf("chrome")<0?(u.browser=t.match(s)[0].split("/")[0],u.browserVersion=t.match(s)[0].split("/")[1],u):t.indexOf("chrome")>0?(u.browser=t.match(o)[0].split("/")[0],u.browserVersion=t.match(o)[0].split("/")[1],u):(u.code=-1,u)},WebToolkit.getWxappInfo=function(){return{system:"WXAPP",browser:"WXAPP",browserVersion:"1.0"}},WebToolkit.getReactNativeInfo=function(){return{system:"RNNative",browser:"RNNative",browserVersion:"1.0"}},WebToolkit.getUniAppInfo=function(){return{system:"UNIAPP",browser:"UNIAPP",browserVersion:"1.0"}},WebToolkit.loadJS=function(t,e){var n=document.createElement("script"),r=e||function(){};n.type="text/javascript";var i=!1;for(var o in document.getElementsByTagName("head")[0].children){var s=document.getElementsByTagName("head")[0].children[o];void 0!==s.outerHTML&&s.outerHTML.indexOf(t)>=0&&(i=!0)}i?r():(n.readyState?n.onreadystatechange=function(){"loaded"!=n.readyState&&"complete"!=n.readyState||(n.onreadystatechange=null,r())}:n.onload=function(){r()},n.src=t,document.getElementsByTagName("head")[0].appendChild(n))},WebToolkit.getIpInfoByFetch=function(callback){var url="http://pv.sohu.com/cityjson?ie=utf-8",fetch=Fetch_1.default.getFetchToolkit(),request={method:"GET",mode:"cors",headers:{"Content-Type":"application/json"}};return fetch(url,request).then((function(t){return t.text()})).then((function(res){if("function"==typeof callback){var currentCity=eval("_current_city="+res.replace("var returnCitySN = ",""));callback(currentCity)}})).catch((function(t){Logger_1.default.trace(t)}))},WebToolkit.getIpInfoByInsertScript=function(t){WebToolkit.loadJS("http://pv.sohu.com/cityjson?ie=utf-8",(function(){t(window.returnCitySN)}))},WebToolkit.getIpInfo=function(t){WebToolkit.getIpInfoByFetch(t)},WebToolkit.getDeviceInfo=function(){return WebToolkit.getUniAppInfo()},WebToolkit.base64Encode=function(t){return Base64.encode(t)},WebToolkit.base64Decode=function(t){return Base64.decode(t)},WebToolkit}();exports.default=WebToolkit},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";n.r(e),n.d(e,"Headers",(function(){return p})),n.d(e,"Request",(function(){return v})),n.d(e,"Response",(function(){return C})),n.d(e,"DOMException",(function(){return I})),n.d(e,"fetch",(function(){return R}));var r="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==r&&r,i="URLSearchParams"in r,o="Symbol"in r&&"iterator"in Symbol,s="FileReader"in r&&"Blob"in r&&function(){try{return new Blob,!0}catch(t){return!1}}(),a="FormData"in r,u="ArrayBuffer"in r;if(u)var l=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],f=ArrayBuffer.isView||function(t){return t&&l.indexOf(Object.prototype.toString.call(t))>-1};function c(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||""===t)throw new TypeError('Invalid character in header field name: "'+t+'"');return t}function h(t){return"string"!=typeof t&&(t=String(t)),t}function d(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return o&&(e[Symbol.iterator]=function(){return e}),e}function p(t){this.map={},t instanceof p?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function _(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function y(t){return new Promise((function(e,n){t.onload=function(){e(t.result)},t.onerror=function(){n(t.error)}}))}function g(t){var e=new FileReader,n=y(e);return e.readAsArrayBuffer(t),n}function m(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function b(){return this.bodyUsed=!1,this._initBody=function(t){var e;this.bodyUsed=this.bodyUsed,this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:s&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:a&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:i&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():u&&s&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=m(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):u&&(ArrayBuffer.prototype.isPrototypeOf(t)||f(t))?this._bodyArrayBuffer=m(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("Content-Type")||("string"==typeof t?this.headers.set("Content-Type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("Content-Type",this._bodyBlob.type):i&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"))},s&&(this.blob=function(){var t=_(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){if(this._bodyArrayBuffer){var t=_(this);return t||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}return this.blob().then(g)}),this.text=function(){var t,e,n,r=_(this);if(r)return r;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,n=y(e),e.readAsText(t),n;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),n=new Array(e.length),r=0;r-1?r:n),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(i),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==e.cache&&"no-cache"!==e.cache)){var o=/([?&])_=[^&]*/;if(o.test(this.url))this.url=this.url.replace(o,"$1_="+(new Date).getTime());else{this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}}function S(t){var e=new FormData;return t.trim().split("&").forEach((function(t){if(t){var n=t.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");e.append(decodeURIComponent(r),decodeURIComponent(i))}})),e}function T(t){var e=new p;for(var n in t)e.append(n,t[n]);return e}function C(t,e){if(!(this instanceof C))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===e.statusText?"":""+e.statusText,this.headers=new p(e.headers),this.url=e.url||"",this._initBody(t)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},b.call(v.prototype),b.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},C.error=function(){var t=new C(null,{status:0,statusText:""});return t.type="error",t};var w=[301,302,303,307,308];C.redirect=function(t,e){if(-1===w.indexOf(e))throw new RangeError("Invalid status code");return new C(null,{status:e,headers:{location:t}})};var I=r.DOMException;try{new I}catch(t){(I=function(t,e){this.message=t,this.name=e;var n=Error(t);this.stack=n.stack}).prototype=Object.create(Error.prototype),I.prototype.constructor=I}function R(t,e){return new Promise((function(n,i){var o=new v(t,e);if(o.signal&&o.signal.aborted)return i(new I("Aborted","AbortError"));function s(t){try{if("object"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t}catch(t){}return t.toString()}let a=void 0===o._bodyInit?null:o._bodyInit;o.headers.hasOwnProperty("Content-Type")&&o.headers["Content-Type"].indexOf("application/json")>=0&&"POST"===o.method.toUpperCase()&&(a=JSON.parse(a));const u=uni.request({url:function(t){try{return""===t&&r.location.href?r.location.href:t}catch(e){return t}}(o.url),method:o.method,data:a,header:o.headers.map,complete:t=>{if(o.signal&&o.signal.removeEventListener("abort",l),t.errMsg.indexOf("fail")>=0)setTimeout((function(){i(new TypeError("Network request failed"))}),0);else{var e={status:t.statusCode,statusText:t.data?s(t.data):"",headers:T(t.header||{})};e.url=e.headers.get("X-Request-URL");var r=e.statusText;setTimeout((function(){n(new C(r,e))}),0)}}});function l(){u.abort()}o.signal&&o.signal.addEventListener("abort",l)}))}R.polyfill=!0,r.fetch||(r.fetch=R,r.Headers=p,r.Request=v,r.Response=C)},function(t,e,n){var r;if("object"==typeof globalThis)r=globalThis;else try{r=n(11)}catch(t){}finally{if(r||"undefined"==typeof window||(r=window),!r)throw new Error("Could not determine global this")}var i=r.WebSocket||r.MozWebSocket,o=n(12);function s(t,e){return e?new i(t,e):new i(t)}i&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(t){Object.defineProperty(s,t,{get:function(){return i[t]}})})),t.exports={w3cwebsocket:i?s:null,version:o}},function(t,e){var n=function(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};t.exports=function(){if(this)return this;if("object"==typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(t){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},function(t,e,n){t.exports=n(13).version},function(t){t.exports=JSON.parse('{"name":"websocket","description":"Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.","keywords":["websocket","websockets","socket","networking","comet","push","RFC-6455","realtime","server","client"],"author":"Brian McKelvey (https://github.com/theturtle32)","contributors":["Iñaki Baz Castillo (http://dev.sipdoc.net)"],"version":"1.0.34","repository":{"type":"git","url":"https://github.com/theturtle32/WebSocket-Node.git"},"homepage":"https://github.com/theturtle32/WebSocket-Node","engines":{"node":">=4.0.0"},"dependencies":{"bufferutil":"^4.0.1","debug":"^2.2.0","es5-ext":"^0.10.50","typedarray-to-buffer":"^3.1.5","utf-8-validate":"^5.0.2","yaeti":"^0.0.6"},"devDependencies":{"buffer-equal":"^1.0.0","gulp":"^4.0.2","gulp-jshint":"^2.0.4","jshint-stylish":"^2.2.1","jshint":"^2.0.0","tape":"^4.9.1"},"config":{"verbose":false},"scripts":{"test":"tape test/unit/*.js","gulp":"gulp"},"main":"index","directories":{"lib":"./lib"},"browser":"lib/browser.js","license":"Apache-2.0"}')},function(t,e,n){"use strict";e.__esModule=!0,e.RequestBase=void 0;var r=function(t,e,n){this.appId=t,this.clientType=e,this.imei=n};e.RequestBase=r},function(t,e,n){"use strict";e.__esModule=!0,e.RequestParams=void 0;var r=function(t,e,n){this.appId=t,this.identifier=e,this.userSign=n};e.RequestParams=r},function(t,e,n){"use strict";e.__esModule=!0;var r=n(0),i=n(2),o=n(17),s=n(1),a=n(3),u=function(){function t(t){this.url="",this.url=t}return t.prototype.call=function(t,e,n){var o=i.imClient.userId;r.default.info(o);var a=this.url+t;null!=e&&(a+=this.setQueryConfig(e));n=this.setQueryToBody(e,n);var u={method:"POST",headers:{"Content-Type":"application/json"},body:s.default.json(n)};return this.httpFetch(a,u)},t.prototype.setQueryToBody=function(t,e){for(var n in t)e[n]=t[n];return e},t.prototype.setQueryConfig=function(t){var e="?";for(var n in t)e+=n+"="+t[n]+"&";return e=e.substring(0,e.length-1)},t.prototype.httpFetch=function(t,e){var n=this;return console.log("httpFetch"),a.default.getFetchToolkit()(t,e).then((function(t){return t.json()})).then((function(i){r.default.info("==> ["+e.method+"] "+t+" back:"+s.default.json(i));var o=n.response2ApiResponse(i);return o.isFailed()?Promise.reject(o):Promise.resolve(o)}))},t.prototype.response2ApiResponse=function(t){var e=new o.default(!0);return e.data=t.data,e.msg=t.msg,e.code=t.code,e},t}();e.default=u},function(t,e,n){"use strict";e.__esModule=!0;var r=function(){function t(t){void 0===t&&(t=!1),this.msg="",this.data=null,t&&(this.code=200)}return t.prototype.isSucceed=function(){return 200===this.code},t.prototype.isFailed=function(){return!this.isSucceed()},t}();e.default=r},function(t,e,n){"use strict";var r,i,o,s,a,u;e.__esModule=!0,e.ConversationEventCommand=e.UserEventCommand=e.SystemCommand=e.GroupCommand=e.FriendShipCommand=e.MessageCommand=void 0,function(t){t[t.MSG_P2P=1103]="MSG_P2P",t[t.MSG_P2P_SYNC=1108]="MSG_P2P_SYNC",t[t.MSG_READED=1106]="MSG_READED",t[t.MSG_RECIVE_ACK=1107]="MSG_RECIVE_ACK",t[t.MSG_ACK=1046]="MSG_ACK",t[t.MSG_RECALL=1050]="MSG_RECALL",t[t.MSG_RECALL_NOTIFY=1052]="MSG_RECALL_NOTIFY",t[t.MSG_RECALL_ACK=1051]="MSG_RECALL_ACK",t[t.MSG_READED_NOTIFY=1053]="MSG_READED_NOTIFY",t[t.MSG_READED_RECEIPT=1054]="MSG_READED_RECEIPT"}(r||(r={})),e.MessageCommand=r,function(t){t[t.FRIEND_ADD=3e3]="FRIEND_ADD",t[t.FRIEND_UPDATE=3001]="FRIEND_UPDATE",t[t.FRIEND_DELETE=3002]="FRIEND_DELETE",t[t.FRIEND_REQUEST=3003]="FRIEND_REQUEST",t[t.FRIEND_REQUEST_READ=3004]="FRIEND_REQUEST_READ",t[t.FRIEND_REQUEST_APPROVER=3005]="FRIEND_REQUEST_APPROVER",t[t.FRIEND_BLACK_ADD=3010]="FRIEND_BLACK_ADD",t[t.FRIEND_BLACK_DELETE=3011]="FRIEND_BLACK_DELETE",t[t.FRIEND_GROUP_ADD=3012]="FRIEND_GROUP_ADD",t[t.FRIEND_GROUP_DELETE=3013]="FRIEND_GROUP_DELETE",t[t.FRIEND_GROUP_MEMBER_ADD=3014]="FRIEND_GROUP_MEMBER_ADD",t[t.FRIEND_GROUP_MEMBER_DELETE=3015]="FRIEND_GROUP_MEMBER_DELETE"}(i||(i={})),e.FriendShipCommand=i,function(t){t[t.JOIN_GROUP=2e3]="JOIN_GROUP",t[t.ADDED_MEMBER=2001]="ADDED_MEMBER",t[t.CREATED_GROUP=2002]="CREATED_GROUP",t[t.UPDATED_GROUP=2003]="UPDATED_GROUP",t[t.EXIT_GROUP=2004]="EXIT_GROUP",t[t.UPDATED_MEMBER=2005]="UPDATED_MEMBER",t[t.DELETED_MEMBER=2006]="DELETED_MEMBER",t[t.DESTROY_GROUP=2007]="DESTROY_GROUP",t[t.TRANSFER_GROUP=2008]="TRANSFER_GROUP",t[t.MUTE_GROUP=2009]="MUTE_GROUP",t[t.SPEAK_GOUP_MEMBER=2010]="SPEAK_GOUP_MEMBER",t[t.MSG_GROUP=2104]="MSG_GROUP",t[t.MSG_GROUP_SYNC=2105]="MSG_GROUP_SYNC",t[t.GROUP_MSG_ACK=2047]="GROUP_MSG_ACK"}(o||(o={})),e.GroupCommand=o,function(t){t[t.PING=9999]="PING",t[t.LOGIN=9e3]="LOGIN",t[t.LOGINACK=9001]="LOGINACK",t[t.MUTUALLOGIN=9002]="MUTUALLOGIN",t[t.LOGOUT=9003]="LOGOUT"}(s||(s={})),e.SystemCommand=s,function(t){t[t.USER_MODIFY=4e3]="USER_MODIFY",t[t.USER_ONLINE_STATUS_CHANGE=4001]="USER_ONLINE_STATUS_CHANGE",t[t.USER_ONLINE_STATUS_SUBSCRIBE=4002]="USER_ONLINE_STATUS_SUBSCRIBE",t[t.PULL_USER_ONLINE_STATUS=4003]="PULL_USER_ONLINE_STATUS",t[t.USER_ONLINE_STATUS_CHANGE_NOTIFY=4004]="USER_ONLINE_STATUS_CHANGE_NOTIFY"}(a||(a={})),e.UserEventCommand=a,function(t){t[t.CONVERSATION_DELETE=5e3]="CONVERSATION_DELETE",t[t.CONVERSATION_UPDATE=5001]="CONVERSATION_UPDATE"}(u||(u={})),e.ConversationEventCommand=u},function(t,e,n){"use strict";e.__esModule=!0,e.MessagePack=void 0;var r=n(1),i=function(){function t(t){this.messageId=r.default.uuid(),this.appId=t,this.messageRandom=this.RangeInteger(0,1e4),this.messageTime=Date.parse((new Date).toString())}return t.prototype.RangeInteger=function(t,e){var n=e-t;return Math.floor(Math.random()*n)+t},t.prototype.buildTextMessagePack=function(t,e,n){this.fromId=t,this.toId=e,console.warn(typeof n),console.log(n);var i=n;this.messageBody=r.default.json(i)},t.prototype.buildCustomerMessagePack=function(t,e,n,i){this.fromId=t,this.toId=e;var o={type:n,content:i};this.messageBody=r.default.json(o)},t}();e.MessagePack=i}])}));
-//# sourceMappingURL=lim-sdk.js.map
\ No newline at end of file
diff --git a/im-uniapp/common/imSdk/lim-sdk.js.map b/im-uniapp/common/imSdk/lim-sdk.js.map
deleted file mode 100644
index 1374f79..0000000
--- a/im-uniapp/common/imSdk/lim-sdk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack://imsdk/webpack/universalModuleDefinition","webpack://imsdk/webpack/bootstrap","webpack://imsdk/./src/lim/log/Logger.ts","webpack://imsdk/./src/lim/common/utils.ts","webpack://imsdk/./src/lim/core/ImClient.ts","webpack://imsdk/./src/lim/common/Fetch.ts","webpack://imsdk/./src/lim.ts","webpack://imsdk/./src/lim/codec/ByteBuffer.ts","webpack://imsdk/./src/lim/pack/LoginPack.ts","webpack://imsdk/./src/lim/common/WebToolkit.ts","webpack://imsdk/(webpack)/buildin/global.js","webpack://imsdk/./src/lim/uniapp/http/uni-fetch.js","webpack://imsdk/./node_modules/websocket/lib/browser.js","webpack://imsdk/./node_modules/es5-ext/global.js","webpack://imsdk/./node_modules/websocket/lib/version.js","webpack://imsdk/./src/lim/model/RequestBase.ts","webpack://imsdk/./src/lim/model/RequestParams.ts","webpack://imsdk/./src/lim/core/HttpApi.ts","webpack://imsdk/./src/lim/model/ApiResponse.ts","webpack://imsdk/./src/lim/common/Command.ts","webpack://imsdk/./src/lim/pack/MessagePack.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__spreadArrays","this","il","arguments","length","Array","k","a","j","jl","Logger","info","message","optionalParams","_i","debug","console","apply","Date","toISOString","infoTag","tag","error","errorTag","trace","e","Error","undefined","stack","Beans","to","target","JSON","parse","stringify","bean","json","copy","replace","replaceJSON","v","toMapByKey","arrs","result","forEach","strEmpty","strNotEmpty","isEmpty","str","uuid","Math","random","toString","slice","getTime","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","iterator","op","TypeError","pop","push","imClient","getLen","limLogin","ImClient","sleep","State","TimeUnit","Logger_1","ByteBuffer_1","LoginPack_1","WebToolkit_1","websocket_1","RequestBase_1","RequestParams_1","HttpApi_1","utils_1","Command_1","MessagePack_1","firstMonitorSocket","second","Unit","Second","_a","setTimeout","url","version","clientType","listeners","state","INIT","lastOfflineMessageSequence","offlineMessageList","httpUrl","getRequestBase","RequestBase","appId","imei","isInit","CONNECTED","getRequestParams","RequestParams","userId","userSign","init","callback","self","resp","ip","port","req","success","err","conn","_this","_b","getDeviceInfo","system","imeiLength","isFailed","data","LoginPack","onerror","onSocketErrorEvent","errorHandler","onclose","CLOSEING","onSocketCloseEvent","reason","onmessage","evt","bytebuf","byteBuffer","int32","unpack","command","bodyLen","msgBody","vstring","log","MessageCommand","MSG_P2P","onP2PMessage","onTestMessage","loadOfflineMessage","heartbeatLoop","onLogin","buildMessagePack","messagePack","jsonData","pack","index","error_1","CLOSED","RECONNECTING","onSocketReConnectEvent","onSocketReConnectSuccessEvent","getSingleUserInfo","uid","syncGetUserInfo","api","userIds","getUserInfo","getAllFriend","fromId","getUserSequence","getUserConversationList","lastSequence","maxLimit","operater","start","now","loop","pingPack","SystemCommand","PING","send","createP2PTextMessage","text","MessagePack","buildTextMessagePack","sendP2PMessage","p2pPack","sendP2PMessageReciveAck","rAck","toId","p2pPack_1107","MSG_RECIVE_ACK","conversationType","p2pPack_1106","MSG_READED","p2pPack_1054","MSG_READED_RECEIPT","sendP2PMessageReadedReceipt","getUserId","offmessages","isSucceed","maxSequence","dataList","onOfflineMessage","completed","w3cwebsocket","binaryType","tr","clearTimeout","onopen","readyState","OPEN","onSocketConnectEvent","loginPack","len","charCodeAt","Fetch","getFetchToolkit","httpFetch","global","fetch","im","ImClient_1","uni","ByteBuffer","arrayBuf","offset","Type_Byte","Type_Short","Type_UShort","Type_Int32","Type_UInt32","Type_String","Type_VString","Type_Int64","Type_Float","Type_Double","Type_ByteArray","_offset","_list","_littleEndian","_org_buf","constructor","DataView","Uint8Array","buffer","bigEndian","littleEndianfunction","utf8Write","view","setUint8","val","getInt32","splice","uint32","getUint32","blength","string","utf8Read","utf8Length","chr","end","byte","getUint8","String","fromCharCode","vlen","int64","getFloat64","float","getFloat32","double","byteArray","arr","packWithHead","ifHead","ArrayBuffer","setUint32","setInt8","setInt16","setUint16","setInt32","setFloat64","setFloat32","indx","getAvailable","byteLength","Fetch_1","Base64","_keyStr","encode","u","_utf8_encode","isNaN","charAt","decode","indexOf","_utf8_decode","c2","c3","WebToolkit","getBrowserInfo","agent","navigator","userAgent","toLowerCase","REGSTR_EDGE","REGSTR_IE","OLD_IE","REGSTR_FF","REGSTR_CHROME","REGSTR_SAF","REGSTR_OPERA","code","split","browser","browserVersion","match","getWxappInfo","getReactNativeInfo","getUniAppInfo","loadJS","script","document","createElement","fn","type","exist","getElementsByTagName","children","dom","outerHTML","onreadystatechange","onload","src","appendChild","getIpInfoByFetch","request","method","headers","response","res","currentCity","eval","getIpInfoByInsertScript","getIpInfo","base64Encode","base64Decode","Function","globalThis","support","Blob","viewClasses","isArrayBufferView","isView","obj","normalizeName","test","normalizeValue","iteratorFor","items","shift","Headers","map","append","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","set","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","arrayBuffer","isConsumed","byteOffset","readAsText","chars","join","readArrayBufferAsText","formData","oldValue","has","keys","values","entries","methods","Request","input","options","upcased","credentials","signal","toUpperCase","referrer","cache","reParamSearch","form","trim","bytes","decodeURIComponent","parseUniappHeaders","rawHeaders","Response","bodyInit","status","ok","statusText","clone","redirectStatuses","redirect","RangeError","location","DOMException","aborted","toStr","rawBody","requestTask","href","fixUrl","complete","removeEventListener","abortXhr","errMsg","statusCode","abort","addEventListener","polyfill","_globalThis","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","W3CWebSocket","uri","protocols","prop","naiveFallback","configurable","__global__","identifier","ApiResponse_1","HttpApi","params","reqUrl","setQueryConfig","setQueryToBody","_str","substring","rnfetch1","response2ApiResponse","apiResponse","msg","ApiResponse","succeed","FriendShipCommand","GroupCommand","UserEventCommand","ConversationEventCommand","messageId","messageRandom","RangeInteger","messageTime","min","max","range","floor","content","messageBody","buildCustomerMessagePack"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAe,MAAID,IAEnBD,EAAY,MAAIC,IARlB,CASGK,QAAQ,WACX,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUP,QAGnC,IAAIC,EAASI,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHT,QAAS,IAUV,OANAU,EAAQH,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOQ,GAAI,EAGJR,EAAOD,QA0Df,OArDAM,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASd,EAASe,EAAMC,GAC3CV,EAAoBW,EAAEjB,EAASe,IAClCG,OAAOC,eAAenB,EAASe,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAAStB,GACX,oBAAXuB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAenB,EAASuB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAenB,EAAS,aAAc,CAAEyB,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAAShC,GAChC,IAAIe,EAASf,GAAUA,EAAO2B,WAC7B,WAAwB,OAAO3B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAK,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,G,+BCjFrD,IAAIC,EAAkBC,MAAQA,KAAKD,gBAAmB,WAClD,IAAK,IAAID,EAAI,EAAG/B,EAAI,EAAGkC,EAAKC,UAAUC,OAAQpC,EAAIkC,EAAIlC,IAAK+B,GAAKI,UAAUnC,GAAGoC,OACxE,IAAItB,EAAIuB,MAAMN,GAAIO,EAAI,EAA3B,IAA8BtC,EAAI,EAAGA,EAAIkC,EAAIlC,IACzC,IAAK,IAAIuC,EAAIJ,UAAUnC,GAAIwC,EAAI,EAAGC,EAAKF,EAAEH,OAAQI,EAAIC,EAAID,IAAKF,IAC1DxB,EAAEwB,GAAKC,EAAEC,GACjB,OAAO1B,GAEXtB,EAAQ4B,YAAa,EACrB,IAAIsB,EAAwB,WACxB,SAASA,KAiDT,OA/CAA,EAAOC,KAAO,SAAUC,GAEpB,IADA,IAAIC,EAAiB,GACZC,EAAK,EAAGA,EAAKX,UAAUC,OAAQU,IACpCD,EAAeC,EAAK,GAAKX,UAAUW,GAEnCJ,EAAOK,OACPC,QAAQL,KAAKM,MAAMD,QAAShB,EAAe,EAAC,IAAIkB,MAAOC,cAAgB,MAAQP,GAAUC,KAGjGH,EAAOU,QAAU,SAAUC,EAAKT,GAE5B,IADA,IAAIC,EAAiB,GACZC,EAAK,EAAGA,EAAKX,UAAUC,OAAQU,IACpCD,EAAeC,EAAK,GAAKX,UAAUW,GAEnCJ,EAAOK,OACPC,QAAQL,KAAKM,MAAMD,QAAShB,EAAe,EAAC,IAAIkB,MAAOC,cAAgB,IAAME,EAAM,MAAQT,GAAUC,KAG7GH,EAAOY,MAAQ,SAAUV,GAErB,IADA,IAAIC,EAAiB,GACZC,EAAK,EAAGA,EAAKX,UAAUC,OAAQU,IACpCD,EAAeC,EAAK,GAAKX,UAAUW,GAEnCJ,EAAOK,OACPC,QAAQM,MAAML,MAAMD,QAAShB,EAAe,EAAC,IAAIkB,MAAOC,cAAgB,MAAQP,GAAUC,KAGlGH,EAAOa,SAAW,SAAUF,EAAKT,GAE7B,IADA,IAAIC,EAAiB,GACZC,EAAK,EAAGA,EAAKX,UAAUC,OAAQU,IACpCD,EAAeC,EAAK,GAAKX,UAAUW,GAEnCJ,EAAOK,OACPC,QAAQM,MAAML,MAAMD,QAAShB,EAAe,EAAC,IAAIkB,MAAOC,cAAgB,IAAME,EAAM,OAAST,GAAUC,KAG/GH,EAAOc,MAAQ,SAAUC,GACjBf,EAAOK,QACHU,aAAaC,MACbV,QAAQM,MAAMG,EAAEb,QAAU,aAAsBe,IAAZF,EAAEG,MAAsBH,EAAEG,MAAQ,KAGtEZ,QAAQM,MAAMG,KAI1Bf,EAAOK,OAAQ,EACRL,EAlDgB,GAoD3BlD,EAAiB,QAAIkD,G,6BC5DrBlD,EAAQ4B,YAAa,EACrB,IAAIyC,EAAuB,WACvB,SAASA,KAkDT,OAhDAA,EAAMC,GAAK,SAAUC,GACjB,OAAOC,KAAKC,MAAMD,KAAKE,UAAUH,KAErCF,EAAMM,KAAO,SAAUC,GACnB,OAAOJ,KAAKC,MAAMG,IAEtBP,EAAMQ,KAAO,SAAUN,GACnB,OAAOF,EAAMC,GAAGC,IAEpBF,EAAMS,QAAU,SAAUP,EAAQQ,GAC9B,IAAIzD,EAAI+C,EAAMC,GAAGC,GACjB,IAAK,IAAIS,KAAKD,EACVzD,EAAE0D,GAAKD,EAAYC,GAEvB,OAAO1D,GAEX+C,EAAMY,WAAa,SAAUC,EAAMnD,GAC/B,IAAIoD,EAAS,GAMb,OALAD,EAAKE,SAAQ,SAAUJ,GACfA,EAAE3C,eAAeN,KACjBoD,EAAOpD,GAAOiD,MAGfG,GAEXd,EAAMO,KAAO,SAAUL,GACnB,OAAOC,KAAKE,UAAUH,IAE1BF,EAAMgB,SAAW,SAAU9C,GACvB,QAASA,GAEb8B,EAAMiB,YAAc,SAAU/C,GAC1B,OAAQA,GAEZ8B,EAAMkB,QAAU,SAAUC,GACtB,OAAY,OAARA,GACQ,KAARA,QACQrB,IAARqB,GACe,IAAfA,EAAI5C,QAOZyB,EAAMoB,KAAO,WACT,OAAwB,GAAhBC,KAAKC,UAAeC,SAAS,IAAIC,MAAM,IAAK,IAAInC,MAAOoC,UAAUF,YAEtEvB,EAnDe,GAqD1BrE,EAAiB,QAAIqE,G,6BCtDrB,IAAI0B,EAAatD,MAAQA,KAAKsD,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU9E,GAAS,IAAM+E,EAAKL,EAAUM,KAAKhF,IAAW,MAAOwC,GAAKqC,EAAOrC,IACpF,SAASyC,EAASjF,GAAS,IAAM+E,EAAKL,EAAiB,MAAE1E,IAAW,MAAOwC,GAAKqC,EAAOrC,IACvF,SAASuC,EAAKrB,GAJlB,IAAe1D,EAIa0D,EAAOwB,KAAON,EAAQlB,EAAO1D,QAJ1CA,EAIyD0D,EAAO1D,MAJhDA,aAAiByE,EAAIzE,EAAQ,IAAIyE,GAAE,SAAUG,GAAWA,EAAQ5E,OAITmF,KAAKL,EAAWG,GAClGF,GAAML,EAAYA,EAAU1C,MAAMuC,EAASC,GAAc,KAAKQ,YAGlEI,EAAepE,MAAQA,KAAKoE,aAAgB,SAAUb,EAASc,GAC/D,IAAsGC,EAAGC,EAAGtF,EAAGuF,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP1F,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAO2F,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAER,KAAMc,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXhG,SAA0B0F,EAAE1F,OAAOiG,UAAY,WAAa,OAAO/E,OAAUwE,EACvJ,SAASM,EAAKtF,GAAK,OAAO,SAAU+C,GAAK,OACzC,SAAcyC,GACV,GAAIV,EAAG,MAAM,IAAIW,UAAU,mCAC3B,KAAOR,GAAG,IACN,GAAIH,EAAI,EAAGC,IAAMtF,EAAY,EAAR+F,EAAG,GAAST,EAAU,OAAIS,EAAG,GAAKT,EAAS,SAAOtF,EAAIsF,EAAU,SAAMtF,EAAEf,KAAKqG,GAAI,GAAKA,EAAEP,SAAW/E,EAAIA,EAAEf,KAAKqG,EAAGS,EAAG,KAAKd,KAAM,OAAOjF,EAE3J,OADIsF,EAAI,EAAGtF,IAAG+F,EAAK,CAAS,EAARA,EAAG,GAAQ/F,EAAED,QACzBgG,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/F,EAAI+F,EAAI,MACxB,KAAK,EAAc,OAAXP,EAAEC,QAAgB,CAAE1F,MAAOgG,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIS,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKP,EAAEI,IAAIK,MAAOT,EAAEG,KAAKM,MAAO,SACxC,QACI,KAAMjG,EAAIwF,EAAEG,MAAM3F,EAAIA,EAAEkB,OAAS,GAAKlB,EAAEA,EAAEkB,OAAS,KAAkB,IAAV6E,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEP,EAAI,EAAG,SACjG,GAAc,IAAVO,EAAG,MAAc/F,GAAM+F,EAAG,GAAK/F,EAAE,IAAM+F,EAAG,GAAK/F,EAAE,IAAM,CAAEwF,EAAEC,MAAQM,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYP,EAAEC,MAAQzF,EAAE,GAAI,CAAEwF,EAAEC,MAAQzF,EAAE,GAAIA,EAAI+F,EAAI,MAC7D,GAAI/F,GAAKwF,EAAEC,MAAQzF,EAAE,GAAI,CAAEwF,EAAEC,MAAQzF,EAAE,GAAIwF,EAAEI,IAAIM,KAAKH,GAAK,MACvD/F,EAAE,IAAIwF,EAAEI,IAAIK,MAChBT,EAAEG,KAAKM,MAAO,SAEtBF,EAAKX,EAAKnG,KAAKqF,EAASkB,GAC1B,MAAOjD,GAAKwD,EAAK,CAAC,EAAGxD,GAAI+C,EAAI,EAAK,QAAUD,EAAIrF,EAAI,EACtD,GAAY,EAAR+F,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEhG,MAAOgG,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,GArB9BH,CAAK,CAACvE,EAAG+C,OAwB7DhF,EAAQ4B,YAAa,EACrB5B,EAAQ6H,SAAW7H,EAAQ8H,OAAS9H,EAAQ+H,SAAW/H,EAAQgI,SAAWhI,EAAQiI,MAAQjI,EAAQkI,WAAQ,EAC1G,IAcIA,EASAC,EAvBAC,EAAW,EAAQ,GACnBC,EAAe,EAAQ,GACvBC,EAAc,EAAQ,GACtBC,EAAe,EAAQ,GACvBC,EAAc,EAAQ,IACtBC,EAAgB,EAAQ,IACxBC,EAAkB,EAAQ,IAC1BC,EAAY,EAAQ,IACpBC,EAAU,EAAQ,GAClBC,EAAY,EAAQ,IACpBC,EAAgB,EAAQ,IAGxBC,GAAqB,GAEzB,SAAWb,GACPA,EAAMA,EAAY,KAAI,GAAK,OAC3BA,EAAMA,EAAkB,WAAI,GAAK,aACjCA,EAAMA,EAAiB,UAAI,GAAK,YAChCA,EAAMA,EAAoB,aAAI,GAAK,eACnCA,EAAMA,EAAgB,SAAI,GAAK,WAC/BA,EAAMA,EAAc,OAAI,GAAK,SANjC,CAOGA,EAAQlI,EAAQkI,QAAUlI,EAAQkI,MAAQ,KAE7C,SAAWC,GACPA,EAASA,EAAiB,OAAI,KAAQ,SACtCA,EAASA,EAAsB,YAAI,GAAK,cAF5C,CAGGA,IAAaA,EAAW,KAC3BnI,EAAQiI,MAAQ,SAAUe,EAAQC,GAE9B,YADa,IAATA,IAAmBA,EAAOd,EAASe,QAChCnD,OAAU,OAAQ,OAAQ,GAAQ,WACrC,OAAOc,EAAYpE,MAAM,SAAU0G,GAC/B,MAAO,CAAC,EAAc,IAAI/C,SAAQ,SAAUC,EAASa,GAC7CkC,YAAW,WACP/C,MACD2C,EAASC,cAKhC,IAAIjB,EAA0B,WAC1B,SAASA,IACLvF,KAAK4G,IAAM,GACX5G,KAAK6G,QAAU,EACf7G,KAAK8G,WAAa,EAClB9G,KAAK+G,UAAY,KACjB/G,KAAKgH,MAAQvB,EAAMwB,KACnBjH,KAAKkH,2BAA6B,EAClClH,KAAKmH,mBAAqB,IAAI/G,MAC9BJ,KAAKoH,QAAU,GAwVnB,OAtVA7B,EAAS5F,UAAU0H,eAAiB,WAChC,OAAO,IAAIrB,EAAcsB,YAAYtH,KAAKuH,MAAOvH,KAAK8G,WAAY9G,KAAKwH,OAE3EjC,EAAS5F,UAAU8H,OAAS,WACxB,OAAOzH,KAAKgH,OAASvB,EAAMiC,WAE/BnC,EAAS5F,UAAUgI,iBAAmB,WAClC,OAAO,IAAI1B,EAAgB2B,cAAc5H,KAAKuH,MAAOvH,KAAK6H,OAAQ7H,KAAK8H,WAE3EvC,EAAS5F,UAAUoI,KAAO,SAAUX,EAASG,EAAOM,EAAQC,EAAUf,EAAWiB,GAC7E,OAAO1E,EAAUtD,UAAM,OAAQ,GAAQ,WACnC,IAAIiI,EAAWC,EAAMC,EAAIC,EAAMC,EAAK3B,EAAI4B,EAASC,EAAKC,EAClDC,EAAQzI,KACZ,OAAOoE,EAAYpE,MAAM,SAAU0I,GAC/B,OAAQA,EAAGhE,OACP,KAAK,EAUD,OATAuD,EAAOjI,MACFoH,QAAUA,EACfa,EAAKV,MAAQA,EACbU,EAAKlB,UAAYA,EACjBkB,EAAKT,KAAO1B,EAAsB,QAAE6C,gBAAgBC,OACpDX,EAAKY,WAAatL,EAAQ8H,OAAO4C,EAAKT,MACtCS,EAAKJ,OAASA,EACd7H,KAAK8H,SAAWA,EAChB9H,KAAK6I,WAAaZ,EAAKY,WAClB1C,EAAiB,QAAErD,QAAQ9C,KAAK4G,MACrCjB,EAAkB,QAAEjF,KAAK,UAElB,CAAC,EADF,IAAIwF,EAAmB,QAAElG,KAAKoH,SACXlJ,KAAK,cAAe,GAAI,CAAE4I,WAAY9G,KAAK8G,WAAYS,MAAOvH,KAAKuH,MAAOM,OAAQ7H,KAAK6H,WAH9D,CAAC,EAAa,GAMpE,KAAK,EAGD,IAFAK,EAAOQ,EAAG/D,QAEDmE,WAEL,OADAnD,EAAkB,QAAEjF,KAAK,iBAClB,CAAC,GAEZyH,EAAKD,EAAKa,KAAKZ,GACfC,EAAOF,EAAKa,KAAKX,KACjBpI,KAAK4G,IAAM,QAAUuB,EAAK,IAAMC,EAAO,MACvCM,EAAGhE,MAAQ,EACf,KAAK,EAED,OADA2D,EAAM,IAAIxC,EAAYmD,UAAUf,EAAKV,MAAOU,EAAKJ,OAAQ,GAClD,CAAC,EAAatK,EAAQ+H,SAAS2C,EAAKrB,IAAKyB,EAAKJ,IACzD,KAAK,EAgED,OA/DAvB,EAAKgC,EAAG/D,OAAQ2D,EAAU5B,EAAG4B,QAASC,EAAM7B,EAAG6B,IAAKC,EAAO9B,EAAG8B,KAC1DF,GACKhC,IACDA,GAAqB,GAGzBkC,EAAKS,QAAU,SAAU5H,GACrBsE,EAAkB,QAAEjF,KAAK,oBAAqBW,GAEe,mBAAlD9D,EAAQ6H,SAAS2B,UAAUmC,oBAClC3L,EAAQ6H,SAAS2B,UAAUmC,mBAAmB7H,GAGlDoH,EAAMU,aAAa9H,EAAOgH,IAE9BG,EAAKY,QAAU,SAAU5H,GACrBmE,EAAkB,QAAEjF,KAAK,wBACrBuH,EAAKjB,OAASvB,EAAM4D,UAKqC,mBAAlD9L,EAAQ6H,SAAS2B,UAAUuC,oBAClC/L,EAAQ6H,SAAS2B,UAAUuC,qBAG/Bb,EAAMU,aAAa,IAAI1H,MAAMD,EAAE+H,QAASlB,IARpCI,EAAMW,QAAQ,WAUtBZ,EAAKgB,UAAY,SAAUC,GACvB,IAAIC,EAAU,IAAI9D,EAAsB,QAAE6D,EAAIV,MAC1CY,EAAaD,EAAQE,QAAQA,QAAQC,SACrCC,EAAUH,EAAW,GACrBI,EAAUJ,EAAW,GAErBK,EADSN,EAAQO,QAAQ,KAAMF,GAASF,SACvB,GACrB9I,QAAQmJ,IAAI,sBAAwBJ,GACpC/I,QAAQmJ,IAAI,cAAgBF,GACxBF,IAAY1D,EAAU+D,eAAeC,QAEkB,mBAA5C7M,EAAQ6H,SAAS2B,UAAUsD,cAClC9M,EAAQ6H,SAAS2B,UAAUsD,aAAaL,GAIY,mBAA7CzM,EAAQ6H,SAAS2B,UAAUuD,eAClC/M,EAAQ6H,SAAS2B,UAAUuD,cAAcN,IAIrDhK,KAAKwI,KAAOA,EACZxI,KAAKgH,MAAQvB,EAAMiC,UAEnB1H,KAAKuK,qBAELvK,KAAKwK,cAAcxK,KAAKwI,MAC0B,mBAAvCjL,EAAQ6H,SAAS2B,UAAU0D,SAClClN,EAAQ6H,SAAS2B,UAAU0D,QAAQzK,KAAK6H,QAE5CG,EAASC,IAGTtC,EAAkB,QAAEtE,MAAMkH,aAAiC,EAASA,EAAI5H,SAErE,CAAC,WAK5B4E,EAAS5F,UAAU+K,iBAAmB,SAAUZ,EAASa,GACrD,IAAIC,EAAW7I,KAAKE,UAAU0I,GAG1BZ,EAAUxM,EAAQ8H,OAAOuF,GACzBC,EAAO,IAAIjF,EAAsB,QAAE,KAAM,GAQ7C,OAPAiF,EAAKjB,MAAME,GAASF,MAAM5J,KAAK6G,SAAS+C,MAAM5J,KAAK8G,YAC9C8C,MAAM,GACNA,MAAM5J,KAAKuH,OACXqC,MAAM5J,KAAK6I,YACXe,MAAMG,GACNE,QAAQjK,KAAKwH,KAAMxH,KAAK6I,YACxBoB,QAAQW,EAAUb,GAChBc,GAGXtF,EAAS5F,UAAUwJ,aAAe,SAAU9H,EAAOgH,GAC/C,OAAO/E,EAAUtD,UAAM,OAAQ,GAAQ,WACnC,IAAI8K,EAAOpE,EAAI4B,EAASC,EAAWwC,EACnC,OAAO3G,EAAYpE,MAAM,SAAU0I,GAC/B,OAAQA,EAAGhE,OACP,KAAK,EAGD,GAAI1E,KAAKgH,OAASvB,EAAMuF,QAAUhL,KAAKgH,OAASvB,EAAM4D,SAClD,MAAO,CAAC,GAEZrJ,KAAKgH,MAAQvB,EAAMwF,aAC8C,mBAAtD1N,EAAQ6H,SAAS2B,UAAUmE,wBAClC3N,EAAQ6H,SAAS2B,UAAUmE,yBAE/BJ,EAAQ,EACRpC,EAAGhE,MAAQ,EACf,KAAK,EACD,OAAMoG,EAAQ,GACP,CAAC,EAAavN,EAAQiI,MAAM,IADT,CAAC,EAAa,GAE5C,KAAK,EACDkD,EAAG/D,OACH+D,EAAGhE,MAAQ,EACf,KAAK,EAGD,OAFAgE,EAAG9D,KAAKO,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBQ,EAAkB,QAAEjF,KAAK,kBAClB,CAAC,EAAanD,EAAQ+H,SAAStF,KAAK4G,IAAKyB,EAAKrI,OACzD,KAAK,EAED,OADA0G,EAAKgC,EAAG/D,OAAQ2D,EAAU5B,EAAG4B,QAASC,EAAM7B,EAAG6B,IAAY7B,EAAG8B,KAC1DF,GACwE,mBAA7D/K,EAAQ6H,SAAS2B,UAAUoE,+BAClC5N,EAAQ6H,SAAS2B,UAAUoE,gCAExB,CAAC,KAEZxF,EAAkB,QAAEjF,KAAK6H,GAClB,CAAC,EAAa,IACzB,KAAK,EAGD,OAFAwC,EAAUrC,EAAG/D,OACbgB,EAAkB,QAAEjF,KAAKqK,GAClB,CAAC,EAAa,GACzB,KAAK,EAED,OADAD,IACO,CAAC,EAAa,GACzB,KAAK,EAED,OADA9K,KAAKoJ,QAAQ,qBACN,CAAC,WAM5B7D,EAAS5F,UAAUyJ,QAAU,SAAUG,GAC/BvJ,KAAKgH,OAASvB,EAAMuF,SAGxBhL,KAAKgH,MAAQvB,EAAMuF,OACnBrF,EAAkB,QAAEjF,KAAK,4BAA8B6I,GACvDvJ,KAAKwI,UAAO9G,EACZ1B,KAAK6H,OAAS,GAE+C,mBAAlDtK,EAAQ6H,SAAS2B,UAAUmC,oBAClC3L,EAAQ6H,SAAS2B,UAAUuC,uBAGnC/D,EAAS5F,UAAUyL,kBAAoB,SAAUC,GAC7C,IAAI5C,EAAQzI,KACZ,OAAO,IAAI2D,SAAQ,SAAUC,EAASa,GAGlCb,EAFU,IAAIsC,EAAmB,QAAEuC,EAAMrB,SAC1BlJ,KAAK,+BAAgCuK,EAAMd,mBAAoB,CAAEE,OAAQwD,SAIhG9F,EAAS5F,UAAU2L,gBAAkB,SAAUzD,GAC3C,OAAOvE,EAAUtD,UAAM,OAAQ,GAAQ,WACnC,IAAIuL,EACJ,OAAOnH,EAAYpE,MAAM,SAAU0G,GAG/B,OAFA6E,EAAM,IAAIrF,EAAmB,QAAElG,KAAKoH,SAE7B,CAAC,EADDmE,EAAIrN,KAAK,yBAA0B8B,KAAK2H,mBAAoB,CAAE6D,QAAS3D,YAK1FtC,EAAS5F,UAAU8L,YAAc,SAAU5D,GACvC,IAAIY,EAAQzI,KACZ,OAAO,IAAI2D,SAAQ,SAAUC,EAASa,GAGlCb,EAFU,IAAIsC,EAAmB,QAAEuC,EAAMrB,SAC1BlJ,KAAK,yBAA0BuK,EAAMd,mBAAoB,CAAE6D,QAAS3D,SAI3FtC,EAAS5F,UAAU+L,aAAe,WAC9B,IAAIjD,EAAQzI,KACZ,OAAO,IAAI2D,SAAQ,SAAUC,EAASa,GAGlCb,EAFU,IAAIsC,EAAmB,QAAEuC,EAAMrB,SAC1BlJ,KAAK,+BAAgCuK,EAAMd,mBAAoB,CAAEgE,OAAQlD,EAAMZ,cAItGtC,EAAS5F,UAAUiM,gBAAkB,WACjC,IAAInD,EAAQzI,KACZ,OAAO,IAAI2D,SAAQ,SAAUC,EAASa,GAGlCb,EAFU,IAAIsC,EAAmB,QAAEuC,EAAMrB,SAC1BlJ,KAAK,wBAAyBuK,EAAMd,mBAAoB,CAAEE,OAAQY,EAAMZ,cAI/FtC,EAAS5F,UAAUkM,wBAA0B,SAAUC,GACnD,IAAIrD,EAAQzI,KACZ,OAAO,IAAI2D,SAAQ,SAAUC,EAASa,GAGlCb,EAFU,IAAIsC,EAAmB,QAAEuC,EAAMrB,SAC1BlJ,KAAK,qCAAsCuK,EAAMd,mBAAoB,CAAEE,OAAQY,EAAMZ,OAAQN,MAAOkB,EAAMlB,MAAOwE,SAAU,IAAKD,aAAcA,EAAcE,SAAUvD,EAAMZ,cAKnMtC,EAAS5F,UAAU6K,cAAgB,SAAUhC,GACzC,IAAIC,EAAQzI,KACRiM,EAAQhL,KAAKiL,MACbC,EAAO,WACP,GAAI1D,EAAMzB,OAASvB,EAAMiC,UAAzB,CAIA,GAAIzG,KAAKiL,MAAQD,GArSL,IAqSiC,CAEzCA,EAAQhL,KAAKiL,MACb,IAAIE,EAAW7O,EAAQ6H,SAASsF,iBAAiBtE,EAAUiG,cAAcC,KAAM,IAC/E9D,EAAK+D,KAAKH,EAASvB,MAAK,IAE5BlE,WAAWwF,EAAM,UATbxG,EAAkB,QAAEtE,MAAM,yBAWlCsF,WAAWwF,EAAM,MAGrB5G,EAAS5F,UAAU6M,qBAAuB,SAAU3K,EAAI4K,GACpD,IAAI9B,EAAc,IAAItE,EAAcqG,YAAY1M,KAAKuH,OAErD,OADAoD,EAAYgC,qBAAqB3M,KAAK6H,OAAQhG,EAAI4K,GAC3C9B,GAEXpF,EAAS5F,UAAUiN,eAAiB,SAAU/B,GAC1C,IAAIgC,EAAUtP,EAAQ6H,SAASsF,iBAAiBtE,EAAU+D,eAAeC,QAASS,GAC9E7K,KAAKwI,MACLxI,KAAKwI,KAAK+D,KAAKM,EAAQhC,MAAK,KAIpCtF,EAAS5F,UAAUmN,wBAA0B,SAAUC,GACnDhM,QAAQmJ,IAAI,4CACZnJ,QAAQmJ,IAAI6C,GACZA,EAAKC,KAAOD,EAAKpB,OACjBoB,EAAKpB,OAAS3L,KAAK6H,OACnB9G,QAAQmJ,IAAI6C,GACZ,IAAIE,EAAe1P,EAAQ6H,SAASsF,iBAAiBtE,EAAU+D,eAAe+C,eAAgBH,GAC9FA,EAAKI,iBAAmB,EACxB,IAAIC,EAAe7P,EAAQ6H,SAASsF,iBAAiBtE,EAAU+D,eAAekD,WAAYN,GACtFO,EAAe/P,EAAQ6H,SAASsF,iBAAiBtE,EAAU+D,eAAeoD,mBAAoBR,GAC9F/M,KAAKwI,OAELxI,KAAKwI,KAAK+D,KAAKU,EAAapC,MAAK,IACjC7K,KAAKwI,KAAK+D,KAAKa,EAAavC,MAAK,IACjC7K,KAAKwI,KAAK+D,KAAKe,EAAazC,MAAK,MAIzCtF,EAAS5F,UAAU6N,4BAA8B,SAAUT,GACvDhM,QAAQmJ,IAAI,gDACZnJ,QAAQmJ,IAAI6C,GACZA,EAAKC,KAAOD,EAAKpB,OACjBoB,EAAKpB,OAAS3L,KAAK6H,OACnB9G,QAAQmJ,IAAI6C,GACZ,IAAIF,EAAUtP,EAAQ6H,SAASsF,iBAAiBtE,EAAU+D,eAAeoD,mBAAoBR,GACzF/M,KAAKwI,OACLzH,QAAQmJ,IAAI,2DACZlK,KAAKwI,KAAK+D,KAAKM,EAAQhC,MAAK,MAGpCtF,EAAS5F,UAAU8N,UAAY,WAC3B,OAAOzN,KAAK6H,QAGhBtC,EAAS5F,UAAU4K,mBAAqB,WACpC,OAAOjH,EAAUtD,UAAM,OAAQ,GAAQ,WACnC,IAASkI,EAAMwF,EACf,OAAOtJ,EAAYpE,MAAM,SAAU0G,GAC/B,OAAQA,EAAGhC,OACP,KAAK,EAGD,OAFAiB,EAAkB,QAAEjF,KAAK,4BAElB,CAAC,EADF,IAAIwF,EAAmB,QAAElG,KAAKoH,SACXlJ,KAAK,8BAA+B8B,KAAK2H,mBAAoB,CAAEb,WAAY9G,KAAK8G,WAAYkF,SAAUhM,KAAK6H,OAAQN,MAAOvH,KAAKuH,MAAOuE,aAAc9L,KAAKkH,2BAA4B6E,SAAU,OAC5N,KAAK,EAiBD,OAhBA7D,EAAOxB,EAAG/B,QACDgJ,aACL3N,KAAKkH,2BAA6BgB,EAAKa,KAAK6E,YAC5CF,EAAcxF,EAAKa,KAAK8E,SACxB7N,KAAKmH,mBAAmBhC,KAAKuI,GACzBA,EAAYvN,OAAS,GAA4D,mBAAhD5C,EAAQ6H,SAAS2B,UAAU+G,kBAC5DvQ,EAAQ6H,SAAS2B,UAAU+G,iBAAiBJ,GAEhD3M,QAAQmJ,IAAIhC,EAAKa,KAAKgF,WACjB7F,EAAKa,KAAKgF,WACX/N,KAAKuK,sBAIT5E,EAAkB,QAAEtE,MAAM,8BAEvB,CAAC,WAKrBkE,EAjWkB,GAmW7BhI,EAAQgI,SAAWA,EACnBhI,EAAQ+H,SAAW,SAAUsB,EAAKyB,EAAKjD,GAAY,OAAO9B,OAAU,OAAQ,OAAQ,GAAQ,WACxF,OAAOc,EAAYpE,MAAM,SAAU0G,GAC/B,MAAO,CAAC,EAAc,IAAI/C,SAAQ,SAAUC,EAASa,GAC7C,IAAI+D,EAAO,IAAIzC,EAAYiI,aAAapH,GACxC4B,EAAKyF,WAAa,cAClBtI,EAAkB,QAAEjF,KAAK,YAEzB,IAAIwN,EAAKvH,YAAW,WAChBwH,aAAaD,GACbtK,EAAQ,CAAE0E,SAAS,EAAOC,IAAK,IAAI9G,MAAM,WAAY+G,KAAMA,MA1Y5D,KA4YHA,EAAK4F,OAAS,WACV,GAAI5F,EAAK6F,YAActI,EAAYiI,aAAaM,KAAM,CAEK,mBAA5ClJ,EAAS2B,UAAUwH,sBAC1BnJ,EAAS2B,UAAUwH,qBAAqB3H,EAAKyB,GAEjD1C,EAAkB,QAAEjF,KAAK,QAEzB,IAAIqI,EAAO,CACP,OAAUV,EAAIR,QAEd2G,EAAYpJ,EAASsF,iBAAiB,IAAQ3B,GAClDP,EAAK+D,KAAKiC,EAAU3D,MAAK,MAGjCrC,EAAKS,QAAU,SAAU5H,GACrB8M,aAAaD,GACbvI,EAAkB,QAAEtE,MAAMA,GAC1BuC,EAAQ,CAAE0E,SAAS,EAAOC,IAAKlH,EAAOmH,KAAMA,KAEhDA,EAAKgB,UAAY,SAAUC,GACvB,GAAwB,iBAAbA,EAAIV,KAAf,CAIAoF,aAAaD,GACb,IACIvE,EADU,IAAI/D,EAAsB,QAAE6D,EAAIV,MACrBa,QAAQA,QAAQC,SACrCC,EAAUH,EAAW,GACXA,EAAW,GACV,MAAXG,GACAlG,EAAQ,CAAE0E,SAAS,EAAME,KAAMA,SAT/B7C,EAAkB,QAAEjF,KAAK,cAAgB+I,EAAIV,KAAO,iBAe5ExL,EAAQ8H,OAAS,SAAUtC,GAEvB,IADA,IAAI0L,EAAM,EACD1Q,EAAI,EAAGA,EAAIgF,EAAI5C,OAAQpC,IAAK,CACjC,IAAIK,EAAI2E,EAAI2L,WAAW3Q,GAElBK,GAAK,GAAUA,GAAK,KAAY,OAAUA,GAAKA,GAAK,MACrDqQ,IAGAA,GAAO,EAGf,OAAOA,GAEXlR,EAAQ6H,SAAW,IAAIG,G,8BCjfvB,YACAhI,EAAQ4B,YAAa,EAIrB,IAAIwP,EAAuB,WACvB,SAASA,KAkBT,OAhBAA,EAAMC,gBAAkB,WACpB,IAAIC,EAEJ,QAA4B,IAAjBC,EAAOC,OAAiD,mBAAjBD,EAAOC,MAErDF,EAAYC,EAAOC,WAElB,GAAqB,mBAAVA,MACZF,EAAYE,UAEX,CAEDF,EADe,EAAQ,GACFE,MAEzB,OAAOF,GAEJF,EAnBe,GAqB1BpR,EAAiB,QAAIoR,I,8CCzBrBpR,EAAQ4B,YAAa,EACrB5B,EAAQyR,QAAK,EACb,IAAIC,EAAa,EAAQ,GACzB1R,EAAQyR,GAAKC,EAAW7J,SAQL,oBAAR8J,MAGPA,IAAQ,GAAID,EAAW7J,W,6BCd3B7H,EAAQ4B,YAAa,EACrB,IAAIgQ,EAA4B,WAC5B,SAASA,EAAWC,EAAUC,GAC1BrP,KAAKsP,UAAY,EACjBtP,KAAKuP,WAAa,EAClBvP,KAAKwP,YAAc,EACnBxP,KAAKyP,WAAa,EAClBzP,KAAK0P,YAAc,EACnB1P,KAAK2P,YAAc,EACnB3P,KAAK4P,aAAe,EACpB5P,KAAK6P,WAAa,EAClB7P,KAAK8P,WAAa,EAClB9P,KAAK+P,YAAc,GACnB/P,KAAKgQ,eAAiB,GACtBhQ,KAAKiQ,QAAU,EACfjQ,KAAKkQ,MAAQ,GACblQ,KAAKmQ,eAAgB,EACrBnQ,KAAKoQ,SAAWhB,EAAYA,EAASiB,aAAeC,SAAWlB,EACxDA,EAASiB,aAAeE,WAAa,IAAID,SAASlB,EAASoB,OAAQnB,GAAU,IAAIiB,SAASlB,EAAUC,GAAY,IAAIiB,SAAS,IAAIC,WAAW,IAAIC,QACvJxQ,KAAKoP,SAAWA,EAChBpP,KAAKqP,OAASA,EAqXlB,OAvWAF,EAAWxP,UAAU8Q,UAAY,WAE7B,OADAzQ,KAAKmQ,eAAgB,EACdnQ,MAIXmP,EAAWxP,UAAU+Q,qBAAuB,WAExC,OADA1Q,KAAKmQ,eAAgB,EACdnQ,MAGXmP,EAAWxP,UAAUgR,UAAY,SAAUC,EAAMvB,EAAQtM,GAErD,IADA,IAAI3E,EAAI,EACCL,EAAI,EAAGC,EAAI+E,EAAI5C,OAAQpC,EAAIC,EAAGD,KACnCK,EAAI2E,EAAI2L,WAAW3Q,IACX,IACJ6S,EAAKC,SAASxB,IAAUjR,GAEnBA,EAAI,MACTwS,EAAKC,SAASxB,IAAU,IAAQjR,GAAK,GACrCwS,EAAKC,SAASxB,IAAU,IAAY,GAAJjR,IAE3BA,EAAI,OAAUA,GAAK,OACxBwS,EAAKC,SAASxB,IAAU,IAAQjR,GAAK,IACrCwS,EAAKC,SAASxB,IAAU,IAAQjR,GAAK,EAAK,IAC1CwS,EAAKC,SAASxB,IAAU,IAAY,GAAJjR,KAGhCL,IACAK,EAAI,QAAiB,KAAJA,IAAc,GAA2B,KAApB2E,EAAI2L,WAAW3Q,IACrD6S,EAAKC,SAASxB,IAAU,IAAQjR,GAAK,IACrCwS,EAAKC,SAASxB,IAAU,IAAQjR,GAAK,GAAM,IAC3CwS,EAAKC,SAASxB,IAAU,IAAQjR,GAAK,EAAK,IAC1CwS,EAAKC,SAASxB,IAAU,IAAY,GAAJjR,KAmC5C+Q,EAAWxP,UAAUiK,MAAQ,SAAUkH,EAAKhG,GASxC,OARwB,GAApB5K,UAAUC,QACVH,KAAKkQ,MAAM/K,KAAKnF,KAAKoQ,SAASW,SAAS/Q,KAAKiQ,QAASjQ,KAAKmQ,gBAC1DnQ,KAAKiQ,SAAW,IAGhBjQ,KAAKkQ,MAAMc,OAAgBtP,MAAToJ,EAAqBA,EAAQ9K,KAAKkQ,MAAM/P,OAAQ,EAAG,CAAElB,EAAGe,KAAKyP,WAAYpR,EAAGyS,EAAK9S,EAAG,IACtGgC,KAAKiQ,SAAW,GAEbjQ,MAGXmP,EAAWxP,UAAUsR,OAAS,SAAUH,EAAKhG,GASzC,OARwB,GAApB5K,UAAUC,QACVH,KAAKkQ,MAAM/K,KAAKnF,KAAKoQ,SAASc,UAAUlR,KAAKiQ,QAASjQ,KAAKmQ,gBAC3DnQ,KAAKiQ,SAAW,IAGhBjQ,KAAKkQ,MAAMc,OAAgBtP,MAAToJ,EAAqBA,EAAQ9K,KAAKkQ,MAAM/P,OAAQ,EAAG,CAAElB,EAAGe,KAAK0P,YAAarR,EAAGyS,EAAK9S,EAAG,IACvGgC,KAAKiQ,SAAW,GAEbjQ,MAMXmP,EAAWxP,UAAUwR,QAAU,WAC3B,OAAOnR,KAAKiQ,SAMhBd,EAAWxP,UAAUyR,OAAS,SAAUN,EAAKhG,GACzC,GAAwB,GAApB5K,UAAUC,OAAa,CACvB,IAAIsO,EAAMzO,KAAKoQ,SAASW,SAAS/Q,KAAKiQ,QAASjQ,KAAKmQ,eACpDnQ,KAAKiQ,SAAW,EAChBjQ,KAAKkQ,MAAM/K,KAAKnF,KAAKqR,SAASrR,KAAKoQ,SAAUpQ,KAAKiQ,QAASxB,IAC3DzO,KAAKiQ,SAAWxB,MAEf,CACGA,EAAM,EACNqC,IACArC,EAAMzO,KAAKsR,WAAWR,IAE1B9Q,KAAKkQ,MAAMc,OAAgBtP,MAAToJ,EAAqBA,EAAQ9K,KAAKkQ,MAAM/P,OAAQ,EAAG,CAAElB,EAAGe,KAAK2P,YAAatR,EAAGyS,EAAK9S,EAAGyQ,IACvGzO,KAAKiQ,SAAWxB,EAAM,EAE1B,OAAOzO,MAGXmP,EAAWxP,UAAU2R,WAAa,SAAUvO,GAExC,IADA,IAAI3E,EAAI,EAAG+B,EAAS,EACXpC,EAAI,EAAGC,EAAI+E,EAAI5C,OAAQpC,EAAIC,EAAGD,KACnCK,EAAI2E,EAAI2L,WAAW3Q,IACX,IACJoC,GAAU,EAEL/B,EAAI,KACT+B,GAAU,EAEL/B,EAAI,OAAUA,GAAK,MACxB+B,GAAU,GAGVpC,IACAoC,GAAU,GAGlB,OAAOA,GAEXgP,EAAWxP,UAAU0R,SAAW,SAAUT,EAAMvB,EAAQlP,GAEpD,IADA,IAAIiR,EAAS,GAAIG,EAAM,EACdxT,EAAIsR,EAAQmC,EAAMnC,EAASlP,EAAQpC,EAAIyT,EAAKzT,IAAK,CACtD,IAAI0T,EAAOb,EAAKc,SAAS3T,GACzB,GAAsB,IAAV,IAAP0T,GAIL,GAAsB,MAAV,IAAPA,GAKL,GAAsB,MAAV,IAAPA,GAAL,CAMA,GAAsB,MAAV,IAAPA,GAcL,MAAM,IAAIhQ,MAAM,gBAAkBgQ,EAAKtO,SAAS,MAb5CoO,GAAe,EAAPE,IAAgB,IACG,GAArBb,EAAKc,WAAW3T,KAAc,IACT,GAArB6S,EAAKc,WAAW3T,KAAc,GACT,GAArB6S,EAAKc,WAAW3T,KAAc,IACzB,OACPwT,GAAO,MACPH,GAAUO,OAAOC,aAA4B,OAAdL,IAAQ,IAA8B,OAAT,KAANA,KAGtDH,GAAUO,OAAOC,aAAaL,QAflCH,GAAUO,OAAOC,cAAsB,GAAPH,IAAgB,IACrB,GAArBb,EAAKc,WAAW3T,KAAc,GACT,GAArB6S,EAAKc,WAAW3T,KAAc,QAPpCqT,GAAUO,OAAOC,cAAsB,GAAPH,IAAgB,EACtB,GAArBb,EAAKc,WAAW3T,SALrBqT,GAAUO,OAAOC,aAAaH,GA8BtC,OAAOL,GAKXjC,EAAWxP,UAAUsK,QAAU,SAAU6G,EAAKrC,EAAK3D,GAC/C,IAAK2D,EACD,MAAM,IAAIhN,MAAM,iCAGpB,GAAWC,MAAPoP,GAA2B,MAAPA,EAAa,CAEjC,IADA,IAAIe,EAAO,EACF9T,EAAIiC,KAAKiQ,QAASlS,EAAIiC,KAAKiQ,QAAUxB,EAAK1Q,IAC3CiC,KAAKoQ,SAASsB,SAAS3T,GAAK,GAC5B8T,IAER7R,KAAKkQ,MAAM/K,KAAKnF,KAAKqR,SAASrR,KAAKoQ,SAAUpQ,KAAKiQ,QAAS4B,IAC3D7R,KAAKiQ,SAAWxB,OAGhBzO,KAAKkQ,MAAMc,OAAgBtP,MAAToJ,EAAqBA,EAAQ9K,KAAKkQ,MAAM/P,OAAQ,EAAG,CAAElB,EAAGe,KAAK4P,aAAcvR,EAAGyS,EAAK9S,EAAGyQ,IACxGzO,KAAKiQ,SAAWxB,EAEpB,OAAOzO,MAGXmP,EAAWxP,UAAUmS,MAAQ,SAAUhB,EAAKhG,GASxC,OARwB,GAApB5K,UAAUC,QACVH,KAAKkQ,MAAM/K,KAAKnF,KAAKoQ,SAAS2B,WAAW/R,KAAKiQ,QAASjQ,KAAKmQ,gBAC5DnQ,KAAKiQ,SAAW,IAGhBjQ,KAAKkQ,MAAMc,OAAgBtP,MAAToJ,EAAqBA,EAAQ9K,KAAKkQ,MAAM/P,OAAQ,EAAG,CAAElB,EAAGe,KAAK6P,WAAYxR,EAAGyS,EAAK9S,EAAG,IACtGgC,KAAKiQ,SAAW,GAEbjQ,MAGXmP,EAAWxP,UAAUqS,MAAQ,SAAUlB,EAAKhG,GASxC,OARwB,GAApB5K,UAAUC,QACVH,KAAKkQ,MAAM/K,KAAKnF,KAAKoQ,SAAS6B,WAAWjS,KAAKiQ,QAASjQ,KAAKmQ,gBAC5DnQ,KAAKiQ,SAAW,IAGhBjQ,KAAKkQ,MAAMc,OAAgBtP,MAAToJ,EAAqBA,EAAQ9K,KAAKkQ,MAAM/P,OAAQ,EAAG,CAAElB,EAAGe,KAAK8P,WAAYzR,EAAGyS,EAAK9S,EAAG,IACtGgC,KAAKiQ,SAAW,GAEbjQ,MAGXmP,EAAWxP,UAAUuS,OAAS,SAAUpB,EAAKhG,GASzC,OARwB,GAApB5K,UAAUC,QACVH,KAAKkQ,MAAM/K,KAAKnF,KAAKoQ,SAAS2B,WAAW/R,KAAKiQ,QAASjQ,KAAKmQ,gBAC5DnQ,KAAKiQ,SAAW,IAGhBjQ,KAAKkQ,MAAMc,OAAgBtP,MAAToJ,EAAqBA,EAAQ9K,KAAKkQ,MAAM/P,OAAQ,EAAG,CAAElB,EAAGe,KAAK+P,YAAa1R,EAAGyS,EAAK9S,EAAG,IACvGgC,KAAKiQ,SAAW,GAEbjQ,MAMXmP,EAAWxP,UAAUwS,UAAY,SAAUrB,EAAKrC,EAAK3D,GACjD,IAAK2D,EACD,MAAM,IAAIhN,MAAM,mCAGpB,GAAWC,MAAPoP,GAA2B,MAAPA,EAAa,CACjC,IAAIsB,EAAM,IAAI7B,WAAWvQ,KAAKoQ,SAASI,OAAOpN,MAAMpD,KAAKiQ,QAASjQ,KAAKiQ,QAAUxB,IACjFzO,KAAKkQ,MAAM/K,KAAKiN,GAChBpS,KAAKiQ,SAAWxB,OAGhBzO,KAAKkQ,MAAMc,OAAgBtP,MAAToJ,EAAqBA,EAAQ9K,KAAKkQ,MAAM/P,OAAQ,EAAG,CAAElB,EAAGe,KAAKgQ,eAAgB3R,EAAGyS,EAAK9S,EAAGyQ,IAC1GzO,KAAKiQ,SAAWxB,EAEpB,OAAOzO,MAMXmP,EAAWxP,UAAUkK,OAAS,WAC1B,OAAO7J,KAAKkQ,OAMhBf,EAAWxP,UAAU0S,aAAe,WAChC,OAAOrS,KAAK6K,MAAK,IAOrBsE,EAAWxP,UAAUkL,KAAO,SAAUyH,GAClCtS,KAAKoQ,SAAW,IAAIE,SAAS,IAAIiC,YAAY,EAAWvS,KAAKiQ,QAAU,EAAIjQ,KAAKiQ,UAChF,IAAIZ,EAAS,EACTiD,IACAtS,KAAKoQ,SAASoC,UAAUnD,EAAQrP,KAAKiQ,QAASjQ,KAAKmQ,eACnDd,GAAU,GAEd,IAAK,IAAItR,EAAI,EAAGA,EAAIiC,KAAKkQ,MAAM/P,OAAQpC,IACnC,OAAQiC,KAAKkQ,MAAMnS,GAAGkB,GAClB,KAAKe,KAAKsP,UACNtP,KAAKoQ,SAASqC,QAAQpD,EAAQrP,KAAKkQ,MAAMnS,GAAGM,GAC5CgR,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAKuP,WACNvP,KAAKoQ,SAASsC,SAASrD,EAAQrP,KAAKkQ,MAAMnS,GAAGM,EAAG2B,KAAKmQ,eACrDd,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAKwP,YACNxP,KAAKoQ,SAASuC,UAAUtD,EAAQrP,KAAKkQ,MAAMnS,GAAGM,EAAG2B,KAAKmQ,eACtDd,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAKyP,WACNzP,KAAKoQ,SAASwC,SAASvD,EAAQrP,KAAKkQ,MAAMnS,GAAGM,EAAG2B,KAAKmQ,eACrDd,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAK0P,YACN1P,KAAKoQ,SAASoC,UAAUnD,EAAQrP,KAAKkQ,MAAMnS,GAAGM,EAAG2B,KAAKmQ,eACtDd,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAK2P,YAEN3P,KAAKoQ,SAASoC,UAAUnD,EAAQrP,KAAKkQ,MAAMnS,GAAGC,EAAGgC,KAAKmQ,eACtDd,GAAU,EACVrP,KAAK2Q,UAAU3Q,KAAKoQ,SAAUf,EAAQrP,KAAKkQ,MAAMnS,GAAGM,GACpDgR,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAK4P,aACN5P,KAAK2Q,UAAU3Q,KAAKoQ,SAAUf,EAAQrP,KAAKkQ,MAAMnS,GAAGM,GAGpD,IAFA,IAESkC,EAAI8O,EAFFrP,KAAKsR,WAAWtR,KAAKkQ,MAAMnS,GAAGM,GAEbkC,EAAI8O,EAASrP,KAAKkQ,MAAMnS,GAAGC,EAAGuC,IACtDP,KAAKoQ,SAASS,SAAStQ,EAAG,GAE9B8O,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAK6P,WACN7P,KAAKoQ,SAASyC,WAAWxD,EAAQrP,KAAKkQ,MAAMnS,GAAGM,EAAG2B,KAAKmQ,eACvDd,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAK8P,WACN9P,KAAKoQ,SAAS0C,WAAWzD,EAAQrP,KAAKkQ,MAAMnS,GAAGM,EAAG2B,KAAKmQ,eACvDd,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAK+P,YACN/P,KAAKoQ,SAASyC,WAAWxD,EAAQrP,KAAKkQ,MAAMnS,GAAGM,EAAG2B,KAAKmQ,eACvDd,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EACxB,MACJ,KAAKgC,KAAKgQ,eACN,IAAI+C,EAAO,EACX,IAASxS,EAAI8O,EAAQ9O,EAAI8O,EAASrP,KAAKkQ,MAAMnS,GAAGC,EAAGuC,IAC3CwS,EAAO/S,KAAKkQ,MAAMnS,GAAGM,EAAE8B,OACvBH,KAAKoQ,SAASS,SAAStQ,EAAGP,KAAKkQ,MAAMnS,GAAGM,EAAE0U,IAG1C/S,KAAKoQ,SAASS,SAAStQ,EAAG,GAE9BwS,IAEJ1D,GAAUrP,KAAKkQ,MAAMnS,GAAGC,EAIpC,OAAOgC,KAAKoQ,SAASI,QAMzBrB,EAAWxP,UAAUqT,aAAe,WAChC,OAAKhT,KAAKoQ,SAEHpQ,KAAKoQ,SAASI,OAAOyC,WAAajT,KAAKiQ,QADnCjQ,KAAKiQ,SAIbd,EAxYoB,GA0Y/B5R,EAAiB,QAAI4R,G,6BC3YrB5R,EAAQ4B,YAAa,EACrB5B,EAAQyL,eAAY,EACpB,IAAIA,EACA,SAAmBzB,EAAOM,EAAQf,GAC9B9G,KAAK6H,OAASA,EACd7H,KAAK8G,WAAaA,EAClB9G,KAAKuH,MAAQA,GAIrBhK,EAAQyL,UAAYA,G,0DCVpBzL,QAAQ4B,YAAa,EACrB,IAAI+T,QAAU,oBAAQ,GAClBvN,SAAW,oBAAQ,GACnBwN,OAAS,CACTC,QAAS,oEACTC,OAAQ,SAAU7R,GACd,IACIhC,EAAGX,EAAGd,EAAG+B,EAAGtB,EAAG8U,EAAGhT,EADlBrB,EAAI,GAEJqF,EAAI,EAER,IADA9C,EAAI2R,OAAOI,aAAa/R,GACjB8C,EAAI9C,EAAErB,QAITL,GAHAN,EAAIgC,EAAEkN,WAAWpK,OAGR,EACT9F,GAAS,EAAJgB,IAAU,GAHfX,EAAI2C,EAAEkN,WAAWpK,OAGO,EACxBgP,GAAS,GAAJzU,IAAW,GAHhBd,EAAIyD,EAAEkN,WAAWpK,OAGQ,EACzBhE,EAAQ,GAAJvC,EACAyV,MAAM3U,GACNyU,EAAIhT,EAAI,GAEHkT,MAAMzV,KACXuC,EAAI,IAERrB,EAAIA,EAAIe,KAAKoT,QAAQK,OAAO3T,GAAKE,KAAKoT,QAAQK,OAAOjV,GAAKwB,KAAKoT,QAAQK,OAAOH,GAAKtT,KAAKoT,QAAQK,OAAOnT,GAE3G,OAAOrB,GAEXyU,OAAQ,SAAUlS,GACd,IACIhC,EAAGX,EAAGd,EACHS,EAAG8U,EAAGhT,EAFTrB,EAAI,GAGJqF,EAAI,EAER,IADA9C,EAAIA,EAAEa,QAAQ,mBAAoB,IAC3BiC,EAAI9C,EAAErB,QAKTX,EAJIQ,KAAKoT,QAAQO,QAAQnS,EAAEiS,OAAOnP,OAIzB,GAHT9F,EAAIwB,KAAKoT,QAAQO,QAAQnS,EAAEiS,OAAOnP,QAGhB,EAClBzF,GAAS,GAAJL,IAAW,GAHhB8U,EAAItT,KAAKoT,QAAQO,QAAQnS,EAAEiS,OAAOnP,QAGT,EACzBvG,GAAS,EAAJuV,IAAU,GAHfhT,EAAIN,KAAKoT,QAAQO,QAAQnS,EAAEiS,OAAOnP,OAIlCrF,GAAQ0S,OAAOC,aAAapS,GACnB,IAAL8T,IACArU,GAAQ0S,OAAOC,aAAa/S,IAEvB,IAALyB,IACArB,GAAQ0S,OAAOC,aAAa7T,IAIpC,OADAkB,EAAIkU,OAAOS,aAAa3U,IAG5BsU,aAAc,SAAU/R,GACpBA,EAAIA,EAAEa,QAAQ,MAAO,KAErB,IADA,IAAIpD,EAAI,GACCO,EAAI,EAAGA,EAAIgC,EAAErB,OAAQX,IAAK,CAC/B,IAAIX,EAAI2C,EAAEkN,WAAWlP,GACjBX,EAAI,IACJI,GAAK0S,OAAOC,aAAa/S,GAEpBA,EAAI,KAAOA,EAAI,MACpBI,GAAK0S,OAAOC,aAAa/S,GAAK,EAAI,KAClCI,GAAK0S,OAAOC,aAAiB,GAAJ/S,EAAS,OAGlCI,GAAK0S,OAAOC,aAAa/S,GAAK,GAAK,KACnCI,GAAK0S,OAAOC,aAAa/S,GAAK,EAAI,GAAK,KACvCI,GAAK0S,OAAOC,aAAiB,GAAJ/S,EAAS,MAG1C,OAAOI,GAEX2U,aAAc,SAAUpS,GAMpB,IALA,IAAIvC,EAAI,GACJO,EAAI,EACJX,EAAI,EAEJgV,EAAK,EACFrU,EAAIgC,EAAErB,QAET,IADAtB,EAAI2C,EAAEkN,WAAWlP,IACT,IACJP,GAAK0S,OAAOC,aAAa/S,GACzBW,SAEC,GAAIX,EAAI,KAAOA,EAAI,IACpBgV,EAAKrS,EAAEkN,WAAWlP,EAAI,GACtBP,GAAK0S,OAAOC,cAAkB,GAAJ/S,IAAW,EAAS,GAALgV,GACzCrU,GAAK,MAEJ,CACDqU,EAAKrS,EAAEkN,WAAWlP,EAAI,GACtB,IAAIsU,EAAKtS,EAAEkN,WAAWlP,EAAI,GAC1BP,GAAK0S,OAAOC,cAAkB,GAAJ/S,IAAW,IAAW,GAALgV,IAAY,EAAS,GAALC,GAC3DtU,GAAK,EAGb,OAAOP,IAGX8U,WAA4B,WAC5B,SAASA,cAkKT,OA/JAA,WAAWC,eAAiB,WACxB,IAAIC,EAAQC,UAAUC,UAAUC,cAE5BC,EAAc,iBACdC,EAAY,oBACZC,EAAS,iBACTC,EAAY,oBACZC,EAAgB,mBAChBC,EAAa,mBACbC,EAAe,gBACfjU,EAAO,CACPkU,KAAM,EACNhM,OAVSqL,EAAMY,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAK,GAWtDC,QAAS,GACTC,eAAgB,IAGpB,OAAId,EAAMN,QAAQ,WAAa,GAC3BjT,EAAKoU,QAAUb,EAAMe,MAAMV,GAAW,GAAGO,MAAM,KAAK,GACpDnU,EAAKqU,eAAiBd,EAAMe,MAAMV,GAAW,GAAGO,MAAM,KAAK,GACpDnU,GAGPuT,EAAMN,QAAQ,QAAU,GACxBjT,EAAKoU,QAAUb,EAAMe,MAAMT,GAAQ,GAAGM,MAAM,KAAK,GACjDnU,EAAKqU,eAAiBd,EAAMe,MAAMT,GAAQ,GAAGM,MAAM,KAAK,GACjDnU,GAGPuT,EAAMN,QAAQ,QAAU,GACxBjT,EAAKoU,QAAUb,EAAMe,MAAMX,GAAa,GAAGQ,MAAM,KAAK,GACtDnU,EAAKqU,eAAiBd,EAAMe,MAAMX,GAAa,GAAGQ,MAAM,KAAK,GACtDnU,GAGPuT,EAAMN,QAAQ,WAAa,GAC3BjT,EAAKoU,QAAUb,EAAMe,MAAMR,GAAW,GAAGK,MAAM,KAAK,GACpDnU,EAAKqU,eAAiBd,EAAMe,MAAMR,GAAW,GAAGK,MAAM,KAAK,GACpDnU,GAGPuT,EAAMN,QAAQ,OAAS,GACvBjT,EAAKoU,QAAUb,EAAMe,MAAML,GAAc,GAAGE,MAAM,KAAK,GACvDnU,EAAKqU,eAAiBd,EAAMe,MAAML,GAAc,GAAGE,MAAM,KAAK,GACvDnU,GAGPuT,EAAMN,QAAQ,UAAY,GAAKM,EAAMN,QAAQ,UAAY,GACzDjT,EAAKoU,QAAUb,EAAMe,MAAMN,GAAY,GAAGG,MAAM,KAAK,GACrDnU,EAAKqU,eAAiBd,EAAMe,MAAMN,GAAY,GAAGG,MAAM,KAAK,GACrDnU,GAGPuT,EAAMN,QAAQ,UAAY,GAC1BjT,EAAKoU,QAAUb,EAAMe,MAAMP,GAAe,GAAGI,MAAM,KAAK,GACxDnU,EAAKqU,eAAiBd,EAAMe,MAAMP,GAAe,GAAGI,MAAM,KAAK,GACxDnU,IAGPA,EAAKkU,MAAQ,EACNlU,IAIfqT,WAAWkB,aAAe,WACtB,MAAO,CACHrM,OAAQ,QACRkM,QAAS,QACTC,eAAgB,QAIxBhB,WAAWmB,mBAAqB,WAC5B,MAAO,CACHtM,OAAQ,WACRkM,QAAS,WACTC,eAAgB,QAIxBhB,WAAWoB,cAAgB,WACvB,MAAO,CACHvM,OAAQ,SACRkM,QAAS,SACTC,eAAgB,QAIxBhB,WAAWqB,OAAS,SAAUxO,EAAKoB,GAC/B,IAAIqN,EAASC,SAASC,cAAc,UAAWC,EAAKxN,GAAY,aAChEqN,EAAOI,KAAO,kBAEd,IAAIC,GAAQ,EACZ,IAAK,IAAInT,KAAK+S,SAASK,qBAAqB,QAAQ,GAAGC,SAAU,CAC7D,IAAIC,EAAMP,SAASK,qBAAqB,QAAQ,GAAGC,SAASrT,QACtCb,IAAlBmU,EAAIC,WAA2BD,EAAIC,UAAUnC,QAAQ/M,IAAQ,IAC7D8O,GAAQ,GAGZA,EACAF,KAIAH,EAAOhH,WACPgH,EAAOU,mBAAqB,WACC,UAArBV,EAAOhH,YAA+C,YAArBgH,EAAOhH,aACxCgH,EAAOU,mBAAqB,KAC5BP,MAMRH,EAAOW,OAAS,WACZR,KAGRH,EAAOY,IAAMrP,EACb0O,SAASK,qBAAqB,QAAQ,GAAGO,YAAYb,KAGzDtB,WAAWoC,iBAAmB,SAAUnO,UACpC,IAAIpB,IAAM,uCACNmI,MAAQmE,QAAiB,QAAEtE,kBAC3BwH,QAAU,CAAEC,OAAQ,MAAOnX,KAAM,OAAQoX,QAAS,CAAE,eAAgB,qBACxE,OAAOvH,MAAMnI,IAAKwP,SAASjS,MAAK,SAAUoS,GACtC,OAAOA,EAAS9J,UACjBtI,MAAK,SAAUqS,KACd,GAAwB,mBAAbxO,SAAyB,CAChC,IAAIyO,YAAcC,KAAK,iBAAmBF,IAAInU,QAAQ,sBAAuB,KAC7E2F,SAASyO,iBAEP,OAAE,SAAUjV,GAClBmE,SAAkB,QAAEpE,MAAMC,OAIlCuS,WAAW4C,wBAA0B,SAAU3O,GAE3C+L,WAAWqB,OADD,wCACa,WACnBpN,EAASrK,OAAqB,kBAGtCoW,WAAW6C,UAAY,SAAU5O,GAE7B+L,WAAWoC,iBAAiBnO,IAGhC+L,WAAWpL,cAAgB,WAEvB,OADiBoL,WAAWoB,iBAGhCpB,WAAW8C,aAAe,SAAU9T,GAChC,OAAOoQ,OAAOE,OAAOtQ,IAEzBgR,WAAW+C,aAAe,SAAU/T,GAChC,OAAOoQ,OAAOO,OAAO3Q,IAElBgR,WAnKoB,GAqK/BxW,QAAiB,QAAIwW,Y,cC1QrB,IAAIvP,EAGJA,EAAI,WACH,OAAOxE,KADJ,GAIJ,IAECwE,EAAIA,GAAK,IAAIuS,SAAS,cAAb,GACR,MAAOvV,GAEc,iBAAX7D,SAAqB6G,EAAI7G,QAOrCH,EAAOD,QAAUiH,G,6BCnBjB,uNAAIsK,EACqB,oBAAfkI,YAA8BA,YACrB,oBAAT/O,MAAwBA,WACb,IAAX6G,GAA0BA,EAEhCmI,EACY,oBAAqBnI,EADjCmI,EAEQ,WAAYnI,GAAU,aAAchQ,OAF5CmY,EAIA,eAAgBnI,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIoI,MACG,EACP,MAAO1V,GACP,OAAO,GALX,GANAyV,EAcQ,aAAcnI,EAdtBmI,EAeW,gBAAiBnI,EAOhC,GAAImI,EACF,IAAIE,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACF7E,YAAY8E,QACZ,SAASC,GACP,OAAOA,GAAOH,EAAYxD,QAAQlV,OAAOkB,UAAUwD,SAASjF,KAAKoZ,KAAS,GAIhF,SAASC,EAAcjZ,GAIrB,GAHoB,iBAATA,IACTA,EAAOqT,OAAOrT,IAEZ,6BAA6BkZ,KAAKlZ,IAAkB,KAATA,EAC7C,MAAM,IAAI2G,UAAU,4CAA8C3G,EAAO,KAG3E,OAAOA,EAGT,SAASmZ,EAAezY,GAItB,MAHqB,iBAAVA,IACTA,EAAQ2S,OAAO3S,IAEVA,EAIT,SAAS0Y,EAAYC,GACnB,IAAI5S,EAAW,CACbf,KAAM,WACJ,IAAIhF,EAAQ2Y,EAAMC,QAClB,MAAO,CAAC1T,UAAgBxC,IAAV1C,EAAqBA,MAAOA,KAU9C,OANIiY,IACFlS,EAASjG,OAAOiG,UAAY,WAC1B,OAAOA,IAIJA,EAGF,SAAS8S,EAAQvB,GACtBtW,KAAK8X,IAAM,GAEPxB,aAAmBuB,EACrBvB,EAAQ3T,SAAQ,SAAS3D,EAAOV,GAC9B0B,KAAK+X,OAAOzZ,EAAMU,KACjBgB,MACMI,MAAM4X,QAAQ1B,GACvBA,EAAQ3T,SAAQ,SAASsV,GACvBjY,KAAK+X,OAAOE,EAAO,GAAIA,EAAO,MAC7BjY,MACMsW,GACT7X,OAAOyZ,oBAAoB5B,GAAS3T,SAAQ,SAASrE,GACnD0B,KAAK+X,OAAOzZ,EAAMgY,EAAQhY,MACzB0B,MAgEP,SAASmY,EAAS9T,GAChB,GAAIA,EAAK+T,SACP,OAAOzU,QAAQE,OAAO,IAAIoB,UAAU,iBAEtCZ,EAAK+T,UAAW,EAGlB,SAASC,EAAgBC,GACvB,OAAO,IAAI3U,SAAQ,SAASC,EAASC,GACnCyU,EAAOtC,OAAS,WACdpS,EAAQ0U,EAAO5V,SAEjB4V,EAAOrP,QAAU,WACfpF,EAAOyU,EAAOjX,WAKpB,SAASkX,EAAsBC,GAC7B,IAAIF,EAAS,IAAIG,WACbC,EAAUL,EAAgBC,GAE9B,OADAA,EAAOK,kBAAkBH,GAClBE,EAoBT,SAASE,EAAYC,GACnB,GAAIA,EAAIzV,MACN,OAAOyV,EAAIzV,MAAM,GAEjB,IAAIwN,EAAO,IAAIL,WAAWsI,EAAI5F,YAE9B,OADArC,EAAKkI,IAAI,IAAIvI,WAAWsI,IACjBjI,EAAKJ,OAIhB,SAASuI,IAkHP,OAjHA/Y,KAAKoY,UAAW,EAEhBpY,KAAKgZ,UAAY,SAAS3U,GAjM5B,IAAoBiT,EA4MhBtX,KAAKoY,SAAWpY,KAAKoY,SACrBpY,KAAKiZ,UAAY5U,EACZA,EAEsB,iBAATA,EAChBrE,KAAKkZ,UAAY7U,EACR4S,GAAgBC,KAAKvX,UAAUwZ,cAAc9U,GACtDrE,KAAKoZ,UAAY/U,EACR4S,GAAoBoC,SAAS1Z,UAAUwZ,cAAc9U,GAC9DrE,KAAKsZ,cAAgBjV,EACZ4S,GAAwBsC,gBAAgB5Z,UAAUwZ,cAAc9U,GACzErE,KAAKkZ,UAAY7U,EAAKlB,WACb8T,GAAuBA,KAxNlBK,EAwN6CjT,IAvNjDiM,SAAS3Q,UAAUwZ,cAAc7B,KAwN3CtX,KAAKwZ,iBAAmBZ,EAAYvU,EAAKmM,QAEzCxQ,KAAKiZ,UAAY,IAAI/B,KAAK,CAAClX,KAAKwZ,oBACvBvC,IAAwB1E,YAAY5S,UAAUwZ,cAAc9U,IAAS+S,EAAkB/S,IAChGrE,KAAKwZ,iBAAmBZ,EAAYvU,GAEpCrE,KAAKkZ,UAAY7U,EAAO5F,OAAOkB,UAAUwD,SAASjF,KAAKmG,GAhBvDrE,KAAKkZ,UAAY,GAmBdlZ,KAAKsW,QAAQ1X,IAAI,kBACA,iBAATyF,EACTrE,KAAKsW,QAAQwC,IAAI,eAAgB,4BACxB9Y,KAAKoZ,WAAapZ,KAAKoZ,UAAU3D,KAC1CzV,KAAKsW,QAAQwC,IAAI,eAAgB9Y,KAAKoZ,UAAU3D,MACvCwB,GAAwBsC,gBAAgB5Z,UAAUwZ,cAAc9U,IACzErE,KAAKsW,QAAQwC,IAAI,eAAgB,qDAKnC7B,IACFjX,KAAKwY,KAAO,WACV,IAAIvU,EAAWkU,EAASnY,MACxB,GAAIiE,EACF,OAAOA,EAGT,GAAIjE,KAAKoZ,UACP,OAAOzV,QAAQC,QAAQ5D,KAAKoZ,WACvB,GAAIpZ,KAAKwZ,iBACd,OAAO7V,QAAQC,QAAQ,IAAIsT,KAAK,CAAClX,KAAKwZ,oBACjC,GAAIxZ,KAAKsZ,cACd,MAAM,IAAI7X,MAAM,wCAEhB,OAAOkC,QAAQC,QAAQ,IAAIsT,KAAK,CAAClX,KAAKkZ,cAI1ClZ,KAAKyZ,YAAc,WACjB,GAAIzZ,KAAKwZ,iBAAkB,CACzB,IAAIE,EAAavB,EAASnY,MAC1B,OAAI0Z,IAGAnH,YAAY8E,OAAOrX,KAAKwZ,kBACnB7V,QAAQC,QACb5D,KAAKwZ,iBAAiBhJ,OAAOpN,MAC3BpD,KAAKwZ,iBAAiBG,WACtB3Z,KAAKwZ,iBAAiBG,WAAa3Z,KAAKwZ,iBAAiBvG,aAItDtP,QAAQC,QAAQ5D,KAAKwZ,mBAG9B,OAAOxZ,KAAKwY,OAAOrU,KAAKoU,KAK9BvY,KAAKyM,KAAO,WACV,IAnHoB+L,EAClBF,EACAI,EAiHEzU,EAAWkU,EAASnY,MACxB,GAAIiE,EACF,OAAOA,EAGT,GAAIjE,KAAKoZ,UACP,OAzHkBZ,EAyHIxY,KAAKoZ,UAxH3Bd,EAAS,IAAIG,WACbC,EAAUL,EAAgBC,GAC9BA,EAAOsB,WAAWpB,GACXE,EAsHE,GAAI1Y,KAAKwZ,iBACd,OAAO7V,QAAQC,QApHrB,SAA+BiV,GAI7B,IAHA,IAAIjI,EAAO,IAAIL,WAAWsI,GACtBgB,EAAQ,IAAIzZ,MAAMwQ,EAAKzQ,QAElBpC,EAAI,EAAGA,EAAI6S,EAAKzQ,OAAQpC,IAC/B8b,EAAM9b,GAAK4T,OAAOC,aAAahB,EAAK7S,IAEtC,OAAO8b,EAAMC,KAAK,IA6GSC,CAAsB/Z,KAAKwZ,mBAC7C,GAAIxZ,KAAKsZ,cACd,MAAM,IAAI7X,MAAM,wCAEhB,OAAOkC,QAAQC,QAAQ5D,KAAKkZ,YAI5BjC,IACFjX,KAAKga,SAAW,WACd,OAAOha,KAAKyM,OAAOtI,KAAKuP,KAI5B1T,KAAKmC,KAAO,WACV,OAAOnC,KAAKyM,OAAOtI,KAAKpC,KAAKC,QAGxBhC,KAlOT6X,EAAQlY,UAAUoY,OAAS,SAASzZ,EAAMU,GACxCV,EAAOiZ,EAAcjZ,GACrBU,EAAQyY,EAAezY,GACvB,IAAIib,EAAWja,KAAK8X,IAAIxZ,GACxB0B,KAAK8X,IAAIxZ,GAAQ2b,EAAWA,EAAW,KAAOjb,EAAQA,GAGxD6Y,EAAQlY,UAAkB,OAAI,SAASrB,UAC9B0B,KAAK8X,IAAIP,EAAcjZ,KAGhCuZ,EAAQlY,UAAUf,IAAM,SAASN,GAE/B,OADAA,EAAOiZ,EAAcjZ,GACd0B,KAAKka,IAAI5b,GAAQ0B,KAAK8X,IAAIxZ,GAAQ,MAG3CuZ,EAAQlY,UAAUua,IAAM,SAAS5b,GAC/B,OAAO0B,KAAK8X,IAAIlY,eAAe2X,EAAcjZ,KAG/CuZ,EAAQlY,UAAUmZ,IAAM,SAASxa,EAAMU,GACrCgB,KAAK8X,IAAIP,EAAcjZ,IAASmZ,EAAezY,IAGjD6Y,EAAQlY,UAAUgD,QAAU,SAASqF,EAAUzE,GAC7C,IAAK,IAAIjF,KAAQ0B,KAAK8X,IAChB9X,KAAK8X,IAAIlY,eAAetB,IAC1B0J,EAAS9J,KAAKqF,EAASvD,KAAK8X,IAAIxZ,GAAOA,EAAM0B,OAKnD6X,EAAQlY,UAAUwa,KAAO,WACvB,IAAIxC,EAAQ,GAIZ,OAHA3X,KAAK2C,SAAQ,SAAS3D,EAAOV,GAC3BqZ,EAAMxS,KAAK7G,MAENoZ,EAAYC,IAGrBE,EAAQlY,UAAUya,OAAS,WACzB,IAAIzC,EAAQ,GAIZ,OAHA3X,KAAK2C,SAAQ,SAAS3D,GACpB2Y,EAAMxS,KAAKnG,MAEN0Y,EAAYC,IAGrBE,EAAQlY,UAAU0a,QAAU,WAC1B,IAAI1C,EAAQ,GAIZ,OAHA3X,KAAK2C,SAAQ,SAAS3D,EAAOV,GAC3BqZ,EAAMxS,KAAK,CAAC7G,EAAMU,OAEb0Y,EAAYC,IAGjBV,IACFY,EAAQlY,UAAUb,OAAOiG,UAAY8S,EAAQlY,UAAU0a,SA6KzD,IAAIC,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAOpD,SAASC,EAAQC,EAAOC,GAC7B,KAAMza,gBAAgBua,GACpB,MAAM,IAAItV,UAAU,8FAItB,IAXuBoR,EACnBqE,EAUArW,GADJoW,EAAUA,GAAW,IACFpW,KAEnB,GAAImW,aAAiBD,EAAS,CAC5B,GAAIC,EAAMpC,SACR,MAAM,IAAInT,UAAU,gBAEtBjF,KAAK4G,IAAM4T,EAAM5T,IACjB5G,KAAK2a,YAAcH,EAAMG,YACpBF,EAAQnE,UACXtW,KAAKsW,QAAU,IAAIuB,EAAQ2C,EAAMlE,UAEnCtW,KAAKqW,OAASmE,EAAMnE,OACpBrW,KAAKd,KAAOsb,EAAMtb,KAClBc,KAAK4a,OAASJ,EAAMI,OACfvW,GAA2B,MAAnBmW,EAAMvB,YACjB5U,EAAOmW,EAAMvB,UACbuB,EAAMpC,UAAW,QAGnBpY,KAAK4G,IAAM+K,OAAO6I,GAYpB,GATAxa,KAAK2a,YAAcF,EAAQE,aAAe3a,KAAK2a,aAAe,eAC1DF,EAAQnE,SAAYtW,KAAKsW,UAC3BtW,KAAKsW,QAAU,IAAIuB,EAAQ4C,EAAQnE,UAErCtW,KAAKqW,QArCkBA,EAqCOoE,EAAQpE,QAAUrW,KAAKqW,QAAU,MApC3DqE,EAAUrE,EAAOwE,cACdP,EAAQ3G,QAAQ+G,IAAY,EAAIA,EAAUrE,GAoCjDrW,KAAKd,KAAOub,EAAQvb,MAAQc,KAAKd,MAAQ,KACzCc,KAAK4a,OAASH,EAAQG,QAAU5a,KAAK4a,OACrC5a,KAAK8a,SAAW,MAEK,QAAhB9a,KAAKqW,QAAoC,SAAhBrW,KAAKqW,SAAsBhS,EACvD,MAAM,IAAIY,UAAU,6CAItB,GAFAjF,KAAKgZ,UAAU3U,KAEK,QAAhBrE,KAAKqW,QAAoC,SAAhBrW,KAAKqW,QACV,aAAlBoE,EAAQM,OAA0C,aAAlBN,EAAQM,OAAsB,CAEhE,IAAIC,EAAgB,gBACpB,GAAIA,EAAcxD,KAAKxX,KAAK4G,KAE1B5G,KAAK4G,IAAM5G,KAAK4G,IAAIvE,QAAQ2Y,EAAe,QAAS,IAAI/Z,MAAOoC,eAC1D,CAGLrD,KAAK4G,MADe,KACO4Q,KAAKxX,KAAK4G,KAAO,IAAM,KAAO,MAAO,IAAI3F,MAAOoC,YAUnF,SAASqQ,EAAOrP,GACd,IAAI4W,EAAO,IAAI5B,SAYf,OAXAhV,EACG6W,OACArG,MAAM,KACNlS,SAAQ,SAASwY,GAChB,GAAIA,EAAO,CACT,IAAItG,EAAQsG,EAAMtG,MAAM,KACpBvW,EAAOuW,EAAM+C,QAAQvV,QAAQ,MAAO,KACpCrD,EAAQ6V,EAAMiF,KAAK,KAAKzX,QAAQ,MAAO,KAC3C4Y,EAAKlD,OAAOqD,mBAAmB9c,GAAO8c,mBAAmBpc,QAGxDic,EA2BT,SAASI,EAAmBC,GAC1B,IAAIhF,EAAU,IAAIuB,EAClB,IAAI,IAAIvY,KAAOgc,EACbhF,EAAQyB,OAAOzY,EAAKgc,EAAWhc,IAEjC,OAAOgX,EAMF,SAASiF,EAASC,EAAUf,GACjC,KAAMza,gBAAgBub,GACpB,MAAM,IAAItW,UAAU,8FAEjBwV,IACHA,EAAU,IAGZza,KAAKyV,KAAO,UACZzV,KAAKyb,YAA4B/Z,IAAnB+Y,EAAQgB,OAAuB,IAAMhB,EAAQgB,OAC3Dzb,KAAK0b,GAAK1b,KAAKyb,QAAU,KAAOzb,KAAKyb,OAAS,IAC9Czb,KAAK2b,gBAAoCja,IAAvB+Y,EAAQkB,WAA2B,GAAK,GAAKlB,EAAQkB,WACvE3b,KAAKsW,QAAU,IAAIuB,EAAQ4C,EAAQnE,SACnCtW,KAAK4G,IAAM6T,EAAQ7T,KAAO,GAC1B5G,KAAKgZ,UAAUwC,GArEjBjB,EAAQ5a,UAAUic,MAAQ,WACxB,OAAO,IAAIrB,EAAQva,KAAM,CAACqE,KAAMrE,KAAKiZ,aAoDvCF,EAAK7a,KAAKqc,EAAQ5a,WAmBlBoZ,EAAK7a,KAAKqd,EAAS5b,WAEnB4b,EAAS5b,UAAUic,MAAQ,WACzB,OAAO,IAAIL,EAASvb,KAAKiZ,UAAW,CAClCwC,OAAQzb,KAAKyb,OACbE,WAAY3b,KAAK2b,WACjBrF,QAAS,IAAIuB,EAAQ7X,KAAKsW,SAC1B1P,IAAK5G,KAAK4G,OAId2U,EAASla,MAAQ,WACf,IAAIkV,EAAW,IAAIgF,EAAS,KAAM,CAACE,OAAQ,EAAGE,WAAY,KAE1D,OADApF,EAASd,KAAO,QACTc,GAGT,IAAIsF,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CN,EAASO,SAAW,SAASlV,EAAK6U,GAChC,IAA0C,IAAtCI,EAAiBlI,QAAQ8H,GAC3B,MAAM,IAAIM,WAAW,uBAGvB,OAAO,IAAIR,EAAS,KAAM,CAACE,OAAQA,EAAQnF,QAAS,CAAC0F,SAAUpV,MAG1D,IAAIqV,EAAenN,EAAOmN,aACjC,IACE,IAAIA,EACJ,MAAO1T,IACP0T,EAAe,SAAStb,EAASrC,GAC/B0B,KAAKW,QAAUA,EACfX,KAAK1B,KAAOA,EACZ,IAAI+C,EAAQI,MAAMd,GAClBX,KAAK2B,MAAQN,EAAMM,QAERhC,UAAYlB,OAAOY,OAAOoC,MAAM9B,WAC7Csc,EAAatc,UAAU0Q,YAAc4L,EAIhC,SAASlN,EAAMyL,EAAOzS,GAC3B,OAAO,IAAIpE,SAAQ,SAASC,EAASC,GACnC,IAAIuS,EAAU,IAAImE,EAAQC,EAAOzS,GAEjC,GAAIqO,EAAQwE,QAAUxE,EAAQwE,OAAOsB,QACnC,OAAOrY,EAAO,IAAIoY,EAAa,UAAW,eAwB5C,SAASE,EAAMha,GACb,IACE,GAAmB,iBAARA,EACT,OAAOJ,KAAKE,UAAUE,GAExB,GAAmB,iBAARA,EACR,OAAOA,EAEV,MAAMX,IAER,OAAOW,EAAKgB,WAId,IAAIiZ,OAAuC,IAAtBhG,EAAQ6C,UAA4B,KAAO7C,EAAQ6C,UACrE7C,EAAQE,QAAQ1W,eAAe,iBAAmBwW,EAAQE,QAAQ,gBAAgB3C,QAAQ,qBAAuB,GAC7E,SAAjCyC,EAAQC,OAAOwE,gBAChBuB,EAAUra,KAAKC,MAAMoa,IAG1B,MAAMC,EAAcnN,IAAIkH,QAAQ,CAC9BxP,IA1CF,SAAgBA,GACd,IACE,MAAe,KAARA,GAAckI,EAAOkN,SAASM,KAAOxN,EAAOkN,SAASM,KAAO1V,EACnE,MAAOpF,GACP,OAAOoF,GAsCJ2V,CAAOnG,EAAQxP,KACpByP,OAAQD,EAAQC,OAChBtN,KAAMqT,EACNnE,OAAQ7B,EAAQE,QAAQwB,IACxB0E,SAAWtU,IAKT,GAHIkO,EAAQwE,QACVxE,EAAQwE,OAAO6B,oBAAoB,QAASC,GAE3CxU,EAAKyU,OAAOhJ,QAAQ,SAAW,EAChChN,YAAW,WACT9C,EAAO,IAAIoB,UAAU,6BACpB,OAHL,CAYA,IAAIwV,EAAU,CACZgB,OAAQvT,EAAK0U,WACbjB,WAAYzT,EAAKa,KAAOoT,EAAMjU,EAAKa,MAAQ,GAC3CuN,QAAS+E,EAAmBnT,EAAK+P,QAAU,KAE7CwC,EAAQ7T,IAAM6T,EAAQnE,QAAQ1X,IAAI,iBAClC,IAAIyF,EAAOoW,EAAQkB,WACnBhV,YAAW,WACT/C,EAAQ,IAAI2X,EAASlX,EAAMoW,MAC1B,OAIP,SAASiC,IACPL,EAAYQ,QAEVzG,EAAQwE,QACVxE,EAAQwE,OAAOkC,iBAAiB,QAASJ,MAM/C3N,EAAMgO,UAAW,EAEZjO,EAAOC,QACVD,EAAOC,MAAQA,EACfD,EAAO+I,QAAUA,EACjB/I,EAAOyL,QAAUA,EACjBzL,EAAOyM,SAAWA,I,gBClmBpB,IAAIyB,EACJ,GAA0B,iBAAfhG,WACVgG,EAAchG,gBAEd,IACCgG,EAAc,EAAQ,IACrB,MAAO3b,IACP,QAED,GADK2b,GAAiC,oBAAXrf,SAA0Bqf,EAAcrf,SAC9Dqf,EAAe,MAAM,IAAIvb,MAAM,mCAItC,IAAIwb,EAAkBD,EAAYE,WAAaF,EAAYG,aACvDC,EAAoB,EAAQ,IAMhC,SAASC,EAAaC,EAAKC,GAiB1B,OAdIA,EACe,IAAIN,EAAgBK,EAAKC,GAGzB,IAAIN,EAAgBK,GAYpCL,GACH,CAAC,aAAc,OAAQ,UAAW,UAAUta,SAAQ,SAAS6a,GAC5D/e,OAAOC,eAAe2e,EAAcG,EAAM,CACzC5e,IAAK,WAAa,OAAOqe,EAAgBO,SAQ5ChgB,EAAOD,QAAU,CACb,aAAiB0f,EAAkBI,EAAe,KAClD,QAAiBD,I,cCpDrB,IAAIK,EAAgB,WACnB,GAAoB,iBAATxV,MAAqBA,KAAM,OAAOA,KAC7C,GAAsB,iBAAXtK,QAAuBA,OAAQ,OAAOA,OACjD,MAAM,IAAI8D,MAAM,oCAGjBjE,EAAOD,QAAU,WAChB,GAAIyC,KAAM,OAAOA,KAKjB,GAA0B,iBAAfgX,YAA2BA,WAAY,OAAOA,WAKzD,IACCvY,OAAOC,eAAeD,OAAOkB,UAAW,aAAc,CACrDf,IAAK,WAAc,OAAOoB,MAC1B0d,cAAc,IAEd,MAAOrc,GAGR,OAAOoc,IAER,IAEC,OAAKE,YAAmBF,IAEvB,eACMhf,OAAOkB,UAAUge,YA1BT,I,gBCNjBngB,EAAOD,QAAU,EAAQ,IAAmBsJ,S,onCCC5CtJ,EAAQ4B,YAAa,EACrB5B,EAAQ+J,iBAAc,EACtB,IAAIA,EACA,SAAqBC,EAAOT,EAAYU,GACpCxH,KAAKuH,MAAQA,EACbvH,KAAK8G,WAAaA,EAClB9G,KAAKwH,KAAOA,GAIpBjK,EAAQ+J,YAAcA,G,6BCVtB/J,EAAQ4B,YAAa,EACrB5B,EAAQqK,mBAAgB,EACxB,IAAIA,EACA,SAAuBL,EAAOqW,EAAY9V,GACtC9H,KAAKuH,MAAQA,EACbvH,KAAK4d,WAAaA,EAClB5d,KAAK8H,SAAWA,GAIxBvK,EAAQqK,cAAgBA,G,6BCVxBrK,EAAQ4B,YAAa,EACrB,IAAIwG,EAAW,EAAQ,GACnBsJ,EAAa,EAAQ,GACrB4O,EAAgB,EAAQ,IACxB1X,EAAU,EAAQ,GAClB+M,EAAU,EAAQ,GAClB4K,EAAyB,WACzB,SAASA,EAAQlX,GACb5G,KAAK4G,IAAM,GACX5G,KAAK4G,IAAMA,EA0Df,OAxDAkX,EAAQne,UAAUzB,KAAO,SAAU0I,EAAKmX,EAAQ1Z,GAC5C,IAAIwD,EAASoH,EAAW7J,SAASyC,OACjClC,EAAkB,QAAEjF,KAAKmH,GACzB,IAAImW,EAAShe,KAAK4G,IAAMA,EACV,MAAVmX,IAGAC,GAFehe,KAAKie,eAAeF,IAMvC1Z,EAAOrE,KAAKke,eAAeH,EAAQ1Z,GACnC,IAGI+R,EAAU,CAAEC,OANI,OAMmBC,QAHzB,CACV,eAAgB,oBAEqCpX,KAAM,OAAQmF,KAAM8B,EAAiB,QAAEhE,KAAKkC,IACrG,OAAOrE,KAAK6O,UAAUmP,EAAQ5H,IAElC0H,EAAQne,UAAUue,eAAiB,SAAUH,EAAQ1Z,GACjD,IAAK,IAAI7F,KAAKuf,EACV1Z,EAAK7F,GAAKuf,EAAOvf,GAErB,OAAO6F,GAEXyZ,EAAQne,UAAUse,eAAiB,SAAUF,GACzC,IAAII,EAAO,IACX,IAAK,IAAI3f,KAAKuf,EACVI,GAAQ3f,EAAI,IAAMuf,EAAOvf,GAAK,IAGlC,OADI2f,EAAOA,EAAKC,UAAU,EAAGD,EAAKhe,OAAS,IAG/C2d,EAAQne,UAAUkP,UAAY,SAAUjI,EAAKwP,GACzC,IAAI3N,EAAQzI,KAGZ,OAFAe,QAAQmJ,IAAI,aACGgJ,EAAiB,QAAEtE,iBAC3ByP,CAASzX,EAAKwP,GAASjS,MAAK,SAAUoS,GAEzC,OAAOA,EAASpU,UACjBgC,MAAK,SAAUqS,GACd7Q,EAAkB,QAAEjF,KAAK,QAAU0V,EAAQC,OAAS,KAAOzP,EAAM,SAAWT,EAAiB,QAAEhE,KAAKqU,IACpG,IAAItO,EAAOO,EAAM6V,qBAAqB9H,GACtC,OAAItO,EAAKY,WACEnF,QAAQE,OAAOqE,GAGnBvE,QAAQC,QAAQsE,OAG/B4V,EAAQne,UAAU2e,qBAAuB,SAAU/H,GAC/C,IAAIgI,EAAc,IAAIV,EAAuB,SAAE,GAI/C,OAHAU,EAAYxV,KAAOwN,EAASxN,KAC5BwV,EAAYC,IAAMjI,EAASiI,IAC3BD,EAAY3J,KAAO2B,EAAS3B,KACrB2J,GAEJT,EA7DiB,GA+D5BvgB,EAAiB,QAAIugB,G,6BCrErBvgB,EAAQ4B,YAAa,EACrB,IAAIsf,EAA6B,WAC7B,SAASA,EAAYC,QACD,IAAZA,IAAsBA,GAAU,GACpC1e,KAAKwe,IAAM,GACXxe,KAAK+I,KAAO,KACR2V,IACA1e,KAAK4U,KAAO,KASpB,OANA6J,EAAY9e,UAAUgO,UAAY,WAC9B,OAAqB,MAAd3N,KAAK4U,MAEhB6J,EAAY9e,UAAUmJ,SAAW,WAC7B,OAAQ9I,KAAK2N,aAEV8Q,EAfqB,GAiBhClhB,EAAiB,QAAIkhB,G,6BChBrB,IAAItU,EAsBAwU,EA4BAC,EAsDAvS,EAcAwS,EAcAC,EAtIJvhB,EAAQ4B,YAAa,EACrB5B,EAAQuhB,yBAA2BvhB,EAAQshB,iBAAmBthB,EAAQ8O,cAAgB9O,EAAQqhB,aAAerhB,EAAQohB,kBAAoBphB,EAAQ4M,oBAAiB,EAElK,SAAWA,GACPA,EAAeA,EAAwB,QAAI,MAAQ,UACnDA,EAAeA,EAA6B,aAAI,MAAQ,eAExDA,EAAeA,EAA2B,WAAI,MAAQ,aAEtDA,EAAeA,EAA+B,eAAI,MAAQ,iBAE1DA,EAAeA,EAAwB,QAAI,MAAQ,UAEnDA,EAAeA,EAA2B,WAAI,MAAQ,aAEtDA,EAAeA,EAAkC,kBAAI,MAAQ,oBAE7DA,EAAeA,EAA+B,eAAI,MAAQ,iBAE1DA,EAAeA,EAAkC,kBAAI,MAAQ,oBAE7DA,EAAeA,EAAmC,mBAAI,MAAQ,qBAlBlE,CAmBGA,IAAmBA,EAAiB,KACvC5M,EAAQ4M,eAAiBA,EAEzB,SAAWwU,GAEPA,EAAkBA,EAA8B,WAAI,KAAQ,aAE5DA,EAAkBA,EAAiC,cAAI,MAAQ,gBAE/DA,EAAkBA,EAAiC,cAAI,MAAQ,gBAE/DA,EAAkBA,EAAkC,eAAI,MAAQ,iBAEhEA,EAAkBA,EAAuC,oBAAI,MAAQ,sBAErEA,EAAkBA,EAA2C,wBAAI,MAAQ,0BAEzEA,EAAkBA,EAAoC,iBAAI,MAAQ,mBAElEA,EAAkBA,EAAuC,oBAAI,MAAQ,sBAErEA,EAAkBA,EAAoC,iBAAI,MAAQ,mBAElEA,EAAkBA,EAAuC,oBAAI,MAAQ,sBAErEA,EAAkBA,EAA2C,wBAAI,MAAQ,0BAEzEA,EAAkBA,EAA8C,2BAAI,MAAQ,6BAxBhF,CAyBGA,IAAsBA,EAAoB,KAC7CphB,EAAQohB,kBAAoBA,EAE5B,SAAWC,GAIPA,EAAaA,EAAyB,WAAI,KAAQ,aAIlDA,EAAaA,EAA2B,aAAI,MAAQ,eAIpDA,EAAaA,EAA4B,cAAI,MAAQ,gBAIrDA,EAAaA,EAA4B,cAAI,MAAQ,gBAIrDA,EAAaA,EAAyB,WAAI,MAAQ,aAIlDA,EAAaA,EAA6B,eAAI,MAAQ,iBAItDA,EAAaA,EAA6B,eAAI,MAAQ,iBAItDA,EAAaA,EAA4B,cAAI,MAAQ,gBAIrDA,EAAaA,EAA6B,eAAI,MAAQ,iBAItDA,EAAaA,EAAyB,WAAI,MAAQ,aAIlDA,EAAaA,EAAgC,kBAAI,MAAQ,oBAEzDA,EAAaA,EAAwB,UAAI,MAAQ,YAEjDA,EAAaA,EAA6B,eAAI,MAAQ,iBAEtDA,EAAaA,EAA4B,cAAI,MAAQ,gBAlDzD,CAmDGA,IAAiBA,EAAe,KACnCrhB,EAAQqhB,aAAeA,EAEvB,SAAWvS,GAEPA,EAAcA,EAAoB,KAAI,MAAQ,OAE9CA,EAAcA,EAAqB,MAAI,KAAQ,QAE/CA,EAAcA,EAAwB,SAAI,MAAQ,WAElDA,EAAcA,EAA2B,YAAI,MAAQ,cAErDA,EAAcA,EAAsB,OAAI,MAAQ,SAVpD,CAWGA,IAAkBA,EAAgB,KACrC9O,EAAQ8O,cAAgBA,EAExB,SAAWwS,GAEPA,EAAiBA,EAA8B,YAAI,KAAQ,cAE3DA,EAAiBA,EAA4C,0BAAI,MAAQ,4BAEzEA,EAAiBA,EAA+C,6BAAI,MAAQ,+BAE5EA,EAAiBA,EAA0C,wBAAI,MAAQ,0BAEvEA,EAAiBA,EAAmD,iCAAI,MAAQ,mCAVpF,CAWGA,IAAqBA,EAAmB,KAC3CthB,EAAQshB,iBAAmBA,EAE3B,SAAWC,GAEPA,EAAyBA,EAA8C,oBAAI,KAAQ,sBAEnFA,EAAyBA,EAA8C,oBAAI,MAAQ,sBAJvF,CAKGA,IAA6BA,EAA2B,KAC3DvhB,EAAQuhB,yBAA2BA,G,6BC7InCvhB,EAAQ4B,YAAa,EACrB5B,EAAQmP,iBAAc,EACtB,IAAIvG,EAAU,EAAQ,GAClBuG,EAA6B,WAC7B,SAASA,EAAYnF,GACjBvH,KAAK+e,UAAY5Y,EAAiB,QAAEnD,OACpChD,KAAKuH,MAAQA,EACbvH,KAAKgf,cAAgBhf,KAAKif,aAAa,EAAG,KAC1Cjf,KAAKkf,YAAcje,KAAKe,OAAM,IAAIf,MAAOkC,YAmB7C,OAjBAuJ,EAAY/M,UAAUsf,aAAe,SAAUE,EAAKC,GAChD,IAAIC,EAAQD,EAAMD,EAElB,OADYlc,KAAKqc,MAAMrc,KAAKC,SAAWmc,GAASF,GAGpDzS,EAAY/M,UAAUgN,qBAAuB,SAAUhB,EAAQqB,EAAMP,GACjEzM,KAAK2L,OAASA,EACd3L,KAAKgN,KAAOA,EACZ,IAAI3I,EAAO,CAAEoR,KAAM,EAAG8J,QAAS9S,GAC/BzM,KAAKwf,YAAcrZ,EAAiB,QAAEhE,KAAKkC,IAE/CqI,EAAY/M,UAAU8f,yBAA2B,SAAU9T,EAAQqB,EAAMyI,EAAM6B,GAC3EtX,KAAK2L,OAASA,EACd3L,KAAKgN,KAAOA,EACZ,IAAI3I,EAAO,CAAEoR,KAAMA,EAAM8J,QAASjI,GAClCtX,KAAKwf,YAAcrZ,EAAiB,QAAEhE,KAAKkC,IAExCqI,EAxBqB,GA0BhCnP,EAAQmP,YAAcA","file":"lim-sdk.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"imsdk\"] = factory();\n\telse\n\t\troot[\"imsdk\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\"use strict\";\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nexports.__esModule = true;\r\nvar Logger = /** @class */ (function () {\r\n function Logger() {\r\n }\r\n Logger.info = function (message) {\r\n var optionalParams = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n optionalParams[_i - 1] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.info.apply(console, __spreadArrays([new Date().toISOString() + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.infoTag = function (tag, message) {\r\n var optionalParams = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n optionalParams[_i - 2] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.info.apply(console, __spreadArrays([new Date().toISOString() + \" \" + tag + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.error = function (message) {\r\n var optionalParams = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n optionalParams[_i - 1] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.error.apply(console, __spreadArrays([new Date().toISOString() + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.errorTag = function (tag, message) {\r\n var optionalParams = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n optionalParams[_i - 2] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.error.apply(console, __spreadArrays([new Date().toISOString() + \" \" + tag + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.trace = function (e) {\r\n if (Logger.debug) {\r\n if (e instanceof Error) {\r\n console.error(e.message + \" \\n \" + (e.stack !== undefined ? e.stack : ''));\r\n }\r\n else {\r\n console.error(e);\r\n }\r\n }\r\n };\r\n Logger.debug = false;\r\n return Logger;\r\n}());\r\nexports[\"default\"] = Logger;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Beans = /** @class */ (function () {\r\n function Beans() {\r\n }\r\n Beans.to = function (target) {\r\n return JSON.parse(JSON.stringify(target));\r\n };\r\n Beans.bean = function (json) {\r\n return JSON.parse(json);\r\n };\r\n Beans.copy = function (target) {\r\n return Beans.to(target);\r\n };\r\n Beans.replace = function (target, replaceJSON) {\r\n var r = Beans.to(target);\r\n for (var v in replaceJSON) {\r\n r[v] = replaceJSON[v];\r\n }\r\n return r;\r\n };\r\n Beans.toMapByKey = function (arrs, key) {\r\n var result = {};\r\n arrs.forEach(function (v) {\r\n if (v.hasOwnProperty(key)) {\r\n result[key] = v;\r\n }\r\n });\r\n return result;\r\n };\r\n Beans.json = function (target) {\r\n return JSON.stringify(target);\r\n };\r\n Beans.strEmpty = function (s) {\r\n return !!s;\r\n };\r\n Beans.strNotEmpty = function (s) {\r\n return !s;\r\n };\r\n Beans.isEmpty = function (str) {\r\n if (str === null ||\r\n str === '' ||\r\n str === undefined ||\r\n str.length === 0) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n Beans.uuid = function () {\r\n return (Math.random() * 36).toString(36).slice(2) + new Date().getTime().toString();\r\n };\r\n return Beans;\r\n}());\r\nexports[\"default\"] = Beans;\r\n","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nexports.__esModule = true;\r\nexports.imClient = exports.getLen = exports.limLogin = exports.ImClient = exports.sleep = exports.State = void 0;\r\nvar Logger_1 = require(\"../log/Logger\");\r\nvar ByteBuffer_1 = require(\"../codec/ByteBuffer\");\r\nvar LoginPack_1 = require(\"../pack/LoginPack\");\r\nvar WebToolkit_1 = require(\"../common/WebToolkit\");\r\nvar websocket_1 = require(\"websocket\");\r\nvar RequestBase_1 = require(\"../model/RequestBase\");\r\nvar RequestParams_1 = require(\"../model/RequestParams\");\r\nvar HttpApi_1 = require(\"./HttpApi\");\r\nvar utils_1 = require(\"../common/utils\");\r\nvar Command_1 = require(\"../common/Command\");\r\nvar MessagePack_1 = require(\"../pack/MessagePack\");\r\nvar loginTimeout = 10 * 1000; // 10 seconds\r\nvar heartbeatInterval = 10 * 1000; // seconds\r\nvar firstMonitorSocket = false; // 第一次监听socket\r\nvar State;\r\n(function (State) {\r\n State[State[\"INIT\"] = 0] = \"INIT\";\r\n State[State[\"CONNECTING\"] = 1] = \"CONNECTING\";\r\n State[State[\"CONNECTED\"] = 2] = \"CONNECTED\";\r\n State[State[\"RECONNECTING\"] = 3] = \"RECONNECTING\";\r\n State[State[\"CLOSEING\"] = 4] = \"CLOSEING\";\r\n State[State[\"CLOSED\"] = 5] = \"CLOSED\";\r\n})(State = exports.State || (exports.State = {}));\r\nvar TimeUnit;\r\n(function (TimeUnit) {\r\n TimeUnit[TimeUnit[\"Second\"] = 1000] = \"Second\";\r\n TimeUnit[TimeUnit[\"Millisecond\"] = 1] = \"Millisecond\";\r\n})(TimeUnit || (TimeUnit = {}));\r\nexports.sleep = function (second, Unit) {\r\n if (Unit === void 0) { Unit = TimeUnit.Second; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, _) {\r\n setTimeout(function () {\r\n resolve();\r\n }, second * Unit);\r\n })];\r\n });\r\n });\r\n};\r\nvar ImClient = /** @class */ (function () {\r\n function ImClient() {\r\n this.url = \"\";\r\n this.version = 1;\r\n this.clientType = 1;\r\n this.listeners = null;\r\n this.state = State.INIT;\r\n this.lastOfflineMessageSequence = 0;\r\n this.offlineMessageList = new Array();\r\n this.httpUrl = \"\"; //http://127.0.0.1:8000/v1\r\n }\r\n ImClient.prototype.getRequestBase = function () {\r\n return new RequestBase_1.RequestBase(this.appId, this.clientType, this.imei);\r\n };\r\n ImClient.prototype.isInit = function () {\r\n return this.state == State.CONNECTED;\r\n };\r\n ImClient.prototype.getRequestParams = function () {\r\n return new RequestParams_1.RequestParams(this.appId, this.userId, this.userSign);\r\n };\r\n ImClient.prototype.init = function (httpUrl, appId, userId, userSign, listeners, callback) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var self, api, resp, ip, port, req, _a, success, err, conn;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n self = this;\r\n self.httpUrl = httpUrl;\r\n self.appId = appId;\r\n self.listeners = listeners;\r\n self.imei = WebToolkit_1[\"default\"].getDeviceInfo().system;\r\n self.imeiLength = exports.getLen(self.imei);\r\n self.userId = userId;\r\n this.userSign = userSign;\r\n this.imeiLength = self.imeiLength;\r\n if (!utils_1[\"default\"].isEmpty(this.url)) return [3 /*break*/, 2];\r\n Logger_1[\"default\"].info(\"获取im地址\");\r\n api = new HttpApi_1[\"default\"](this.httpUrl);\r\n return [4 /*yield*/, api.call(\"/user/login\", {}, { clientType: this.clientType, appId: this.appId, userId: this.userId })\r\n // console.log(resp)\r\n ];\r\n case 1:\r\n resp = _b.sent();\r\n // console.log(resp)\r\n if (resp.isFailed()) {\r\n Logger_1[\"default\"].info(\"登录失败:获取im地址失败\");\r\n return [2 /*return*/];\r\n }\r\n ip = resp.data.ip;\r\n port = resp.data.port;\r\n this.url = \"ws://\" + ip + \":\" + port + \"/ws\";\r\n _b.label = 2;\r\n case 2:\r\n req = new LoginPack_1.LoginPack(self.appId, self.userId, 1);\r\n return [4 /*yield*/, exports.limLogin(self.url, req, self)];\r\n case 3:\r\n _a = _b.sent(), success = _a.success, err = _a.err, conn = _a.conn;\r\n if (success) {\r\n if (!firstMonitorSocket) {\r\n firstMonitorSocket = true;\r\n }\r\n //登录成功以后操作\r\n conn.onerror = function (error) {\r\n Logger_1[\"default\"].info(\"websocket error: \", error);\r\n // 加入socket 连接事件\r\n if (typeof exports.imClient.listeners.onSocketErrorEvent === 'function') {\r\n exports.imClient.listeners.onSocketErrorEvent(error);\r\n }\r\n //异步方法,自动重连\r\n _this.errorHandler(error, req);\r\n };\r\n conn.onclose = function (e) {\r\n Logger_1[\"default\"].info(\"event[onclose] fired\");\r\n if (self.state == State.CLOSEING) {\r\n _this.onclose(\"logout\");\r\n return;\r\n }\r\n // socket断开事件 连接事件\r\n if (typeof exports.imClient.listeners.onSocketCloseEvent === 'function') {\r\n exports.imClient.listeners.onSocketCloseEvent();\r\n }\r\n // 异步方法 自动重连\r\n _this.errorHandler(new Error(e.reason), req);\r\n };\r\n conn.onmessage = function (evt) {\r\n var bytebuf = new ByteBuffer_1[\"default\"](evt.data);\r\n var byteBuffer = bytebuf.int32().int32().unpack();\r\n var command = byteBuffer[0]; //解析command\r\n var bodyLen = byteBuffer[1]; //解析bodylen\r\n var unpack = bytebuf.vstring(null, bodyLen).unpack(); //解析出字符串\r\n var msgBody = unpack[2];\r\n console.log(\"sdk收到服务端数据 command:\" + command);\r\n console.log(\"sdk收到服务端数据:\" + msgBody);\r\n if (command === Command_1.MessageCommand.MSG_P2P) {\r\n //单聊消息收发\r\n if (typeof exports.imClient.listeners.onP2PMessage === 'function') {\r\n exports.imClient.listeners.onP2PMessage(msgBody);\r\n }\r\n }\r\n else {\r\n if (typeof exports.imClient.listeners.onTestMessage === 'function') {\r\n exports.imClient.listeners.onTestMessage(msgBody);\r\n }\r\n }\r\n };\r\n this.conn = conn;\r\n this.state = State.CONNECTED;\r\n //拉取离线消息\r\n this.loadOfflineMessage();\r\n //心跳包\r\n this.heartbeatLoop(this.conn);\r\n if (typeof exports.imClient.listeners.onLogin === 'function') {\r\n exports.imClient.listeners.onLogin(this.userId);\r\n }\r\n callback(self);\r\n }\r\n else {\r\n Logger_1[\"default\"].error(err === null || err === void 0 ? void 0 : err.message);\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n ImClient.prototype.buildMessagePack = function (command, messagePack) {\r\n var jsonData = JSON.stringify(messagePack);\r\n // console.log(\"=============buildMessagePack=========\")\r\n // log.info(jsonData);\r\n var bodyLen = exports.getLen(jsonData);\r\n var pack = new ByteBuffer_1[\"default\"](null, 0);\r\n pack.int32(command).int32(this.version).int32(this.clientType)\r\n .int32(0x0)\r\n .int32(this.appId)\r\n .int32(this.imeiLength)\r\n .int32(bodyLen)\r\n .vstring(this.imei, this.imeiLength)\r\n .vstring(jsonData, bodyLen);\r\n return pack;\r\n };\r\n // 4. 自动重连\r\n ImClient.prototype.errorHandler = function (error, req) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var index, _a, success, err, conn, error_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n // 如果是主动断开连接,就没有必要自动重连\r\n // 比如收到被踢,或者主动调用logout()方法\r\n if (this.state == State.CLOSED || this.state == State.CLOSEING) {\r\n return [2 /*return*/];\r\n }\r\n this.state = State.RECONNECTING;\r\n if (typeof exports.imClient.listeners.onSocketReConnectEvent === 'function') {\r\n exports.imClient.listeners.onSocketReConnectEvent();\r\n }\r\n index = 0;\r\n _b.label = 1;\r\n case 1:\r\n if (!(index < 10)) return [3 /*break*/, 7];\r\n return [4 /*yield*/, exports.sleep(3)];\r\n case 2:\r\n _b.sent();\r\n _b.label = 3;\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n Logger_1[\"default\"].info(\"try to relogin\");\r\n return [4 /*yield*/, exports.limLogin(this.url, req, this)];\r\n case 4:\r\n _a = _b.sent(), success = _a.success, err = _a.err, conn = _a.conn;\r\n if (success) {\r\n if (typeof exports.imClient.listeners.onSocketReConnectSuccessEvent === 'function') {\r\n exports.imClient.listeners.onSocketReConnectSuccessEvent();\r\n }\r\n return [2 /*return*/];\r\n }\r\n Logger_1[\"default\"].info(err);\r\n return [3 /*break*/, 6];\r\n case 5:\r\n error_1 = _b.sent();\r\n Logger_1[\"default\"].info(error_1);\r\n return [3 /*break*/, 6];\r\n case 6:\r\n index++;\r\n return [3 /*break*/, 1];\r\n case 7:\r\n this.onclose(\"reconnect timeout\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // 表示连接中止\r\n ImClient.prototype.onclose = function (reason) {\r\n if (this.state == State.CLOSED) {\r\n return;\r\n }\r\n this.state = State.CLOSED;\r\n Logger_1[\"default\"].info(\"connection closed due to \" + reason);\r\n this.conn = undefined;\r\n this.userId = \"\";\r\n // 加入socket 关闭事件\r\n if (typeof exports.imClient.listeners.onSocketErrorEvent === 'function') {\r\n exports.imClient.listeners.onSocketCloseEvent();\r\n }\r\n };\r\n ImClient.prototype.getSingleUserInfo = function (uid) {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/user/data/getSingleUserInfo\", _this.getRequestParams(), { userId: uid });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.syncGetUserInfo = function (userId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var api, resp;\r\n return __generator(this, function (_a) {\r\n api = new HttpApi_1[\"default\"](this.httpUrl);\r\n resp = api.call(\"/user/data/getUserInfo\", this.getRequestParams(), { userIds: userId });\r\n return [2 /*return*/, resp];\r\n });\r\n });\r\n };\r\n ImClient.prototype.getUserInfo = function (userId) {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/user/data/getUserInfo\", _this.getRequestParams(), { userIds: userId });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.getAllFriend = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/friendship/getAllFriendShip\", _this.getRequestParams(), { fromId: _this.userId });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.getUserSequence = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/user/getUserSequence\", _this.getRequestParams(), { userId: _this.userId });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.getUserConversationList = function (lastSequence) {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/conversation/syncConversationList\", _this.getRequestParams(), { userId: _this.userId, appId: _this.appId, maxLimit: 100, lastSequence: lastSequence, operater: _this.userId });\r\n resolve(resp);\r\n });\r\n };\r\n // 2、心跳\r\n ImClient.prototype.heartbeatLoop = function (conn) {\r\n var _this = this;\r\n var start = Date.now();\r\n var loop = function () {\r\n if (_this.state != State.CONNECTED) {\r\n Logger_1[\"default\"].error(\"heartbeatLoop exited\");\r\n return;\r\n }\r\n if (Date.now() - start >= heartbeatInterval) {\r\n // log.info(`>>> send ping ;`)\r\n start = Date.now();\r\n var pingPack = exports.imClient.buildMessagePack(Command_1.SystemCommand.PING, {});\r\n conn.send(pingPack.pack(false));\r\n }\r\n setTimeout(loop, 500);\r\n };\r\n setTimeout(loop, 500);\r\n };\r\n //构建单聊消息对象\r\n ImClient.prototype.createP2PTextMessage = function (to, text) {\r\n var messagePack = new MessagePack_1.MessagePack(this.appId);\r\n messagePack.buildTextMessagePack(this.userId, to, text);\r\n return messagePack;\r\n };\r\n ImClient.prototype.sendP2PMessage = function (pack) {\r\n var p2pPack = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_P2P, pack);\r\n if (this.conn) {\r\n this.conn.send(p2pPack.pack(false));\r\n }\r\n };\r\n // 消息接收ack\r\n ImClient.prototype.sendP2PMessageReciveAck = function (rAck) {\r\n console.log(\"=============== sendP2PMessageReciveAck\");\r\n console.log(rAck);\r\n rAck.toId = rAck.fromId;\r\n rAck.fromId = this.userId;\r\n console.log(rAck);\r\n var p2pPack_1107 = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_RECIVE_ACK, rAck);\r\n rAck.conversationType = 0;\r\n var p2pPack_1106 = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_READED, rAck);\r\n var p2pPack_1054 = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_READED_RECEIPT, rAck);\r\n if (this.conn) {\r\n // console.log(\"=============== sendP2PMessageReciveAck 正式开始消息接收ack\")\r\n this.conn.send(p2pPack_1107.pack(false));\r\n this.conn.send(p2pPack_1106.pack(false));\r\n this.conn.send(p2pPack_1054.pack(false));\r\n }\r\n };\r\n // 消息已读回执,给原消息发送方 1054\r\n ImClient.prototype.sendP2PMessageReadedReceipt = function (rAck) {\r\n console.log(\"=============== sendP2PMessageReadedRECEIPT\");\r\n console.log(rAck);\r\n rAck.toId = rAck.fromId;\r\n rAck.fromId = this.userId;\r\n console.log(rAck);\r\n var p2pPack = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_READED_RECEIPT, rAck);\r\n if (this.conn) {\r\n console.log(\"=============== sendP2PMessageReadedRECEIPT 正式开始发送已读回执\");\r\n this.conn.send(p2pPack.pack(false));\r\n }\r\n };\r\n ImClient.prototype.getUserId = function () {\r\n return this.userId;\r\n };\r\n //拉取离线信息记录 \r\n ImClient.prototype.loadOfflineMessage = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var api, resp, offmessages;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Logger_1[\"default\"].info(\"loadOfflineMessage start\");\r\n api = new HttpApi_1[\"default\"](this.httpUrl);\r\n return [4 /*yield*/, api.call(\"/message/syncOfflineMessage\", this.getRequestParams(), { clientType: this.clientType, operater: this.userId, appId: this.appId, lastSequence: this.lastOfflineMessageSequence, maxLimit: 100 })];\r\n case 1:\r\n resp = _a.sent();\r\n if (resp.isSucceed()) {\r\n this.lastOfflineMessageSequence = resp.data.maxSequence;\r\n offmessages = resp.data.dataList;\r\n this.offlineMessageList.push(offmessages);\r\n if (offmessages.length > 0 && typeof exports.imClient.listeners.onOfflineMessage === 'function') {\r\n exports.imClient.listeners.onOfflineMessage(offmessages);\r\n }\r\n console.log(resp.data.completed);\r\n if (!resp.data.completed) {\r\n this.loadOfflineMessage();\r\n }\r\n }\r\n else {\r\n Logger_1[\"default\"].error(\"loadOfflineMessage - error\");\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return ImClient;\r\n}());\r\nexports.ImClient = ImClient;\r\nexports.limLogin = function (url, req, imClient) { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, _) {\r\n var conn = new websocket_1.w3cwebsocket(url);\r\n conn.binaryType = \"arraybuffer\";\r\n Logger_1[\"default\"].info(\"limLogin\");\r\n // 设置一个登陆超时器\r\n var tr = setTimeout(function () {\r\n clearTimeout(tr);\r\n resolve({ success: false, err: new Error(\"timeout\"), conn: conn });\r\n }, loginTimeout);\r\n conn.onopen = function () {\r\n if (conn.readyState == websocket_1.w3cwebsocket.OPEN) {\r\n // 加入socket 连接事件\r\n if (typeof imClient.listeners.onSocketConnectEvent === 'function') {\r\n imClient.listeners.onSocketConnectEvent(url, req);\r\n }\r\n Logger_1[\"default\"].info(\"\\u5F00\\u542F\\u8FDE\\u63A5\");\r\n //登录数据包\r\n var data = {\r\n \"userId\": req.userId\r\n };\r\n var loginPack = imClient.buildMessagePack(0x2328, data);\r\n conn.send(loginPack.pack(false));\r\n }\r\n };\r\n conn.onerror = function (error) {\r\n clearTimeout(tr);\r\n Logger_1[\"default\"].error(error);\r\n resolve({ success: false, err: error, conn: conn });\r\n };\r\n conn.onmessage = function (evt) {\r\n if (typeof evt.data === 'string') {\r\n Logger_1[\"default\"].info(\"Received: '\" + evt.data + \"'\");\r\n return;\r\n }\r\n clearTimeout(tr);\r\n var bytebuf = new ByteBuffer_1[\"default\"](evt.data);\r\n var byteBuffer = bytebuf.int32().int32().unpack();\r\n var command = byteBuffer[0];\r\n var bodyLen = byteBuffer[1];\r\n if (command == 0x2329) {\r\n resolve({ success: true, conn: conn });\r\n }\r\n };\r\n })];\r\n });\r\n}); };\r\nexports.getLen = function (str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var c = str.charCodeAt(i);\r\n //单字节加1\r\n if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {\r\n len++;\r\n }\r\n else {\r\n len += 3;\r\n }\r\n }\r\n return len;\r\n};\r\nexports.imClient = new ImClient();\r\n","\"use strict\";\r\nexports.__esModule = true;\r\n/**\r\n * 返回平台所用的 fetch 工具\r\n * */\r\nvar Fetch = /** @class */ (function () {\r\n function Fetch() {\r\n }\r\n Fetch.getFetchToolkit = function () {\r\n var httpFetch;\r\n // @ts-ignore\r\n if (typeof global.fetch !== 'undefined' && typeof global.fetch === 'function') {\r\n // @ts-ignore\r\n httpFetch = global.fetch;\r\n }\r\n else if (typeof fetch === 'function') {\r\n httpFetch = fetch; // RN FETCH\r\n }\r\n else {\r\n var uniFetch = require(\"../uniapp/http/uni-fetch\");\r\n httpFetch = uniFetch.fetch;\r\n }\r\n return httpFetch;\r\n };\r\n return Fetch;\r\n}());\r\nexports[\"default\"] = Fetch;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.im = void 0;\r\nvar ImClient_1 = require(\"./lim/core/ImClient\");\r\nexports.im = ImClient_1.imClient;\r\n// if(typeof window !== 'undefined'){\r\n// console.log(\"window\");\r\n// }\r\n// if(typeof global !== 'undefined'){\r\n// console.log(\"global\");\r\n// }\r\n// @ts-ignore\r\nif (typeof uni !== 'undefined') {\r\n // console.log(\"uni\");\r\n // @ts-ignore\r\n uni['im'] = ImClient_1.imClient;\r\n // @ts-ignore\r\n // uni['im_webtoolkit'] = WebToolkit;\r\n}\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar ByteBuffer = /** @class */ (function () {\r\n function ByteBuffer(arrayBuf, offset) {\r\n this.Type_Byte = 1;\r\n this.Type_Short = 2;\r\n this.Type_UShort = 3;\r\n this.Type_Int32 = 4;\r\n this.Type_UInt32 = 5;\r\n this.Type_String = 6; //变长字符串,前两个字节表示长度\r\n this.Type_VString = 7; //定长字符串\r\n this.Type_Int64 = 8;\r\n this.Type_Float = 9;\r\n this.Type_Double = 10;\r\n this.Type_ByteArray = 11;\r\n this._offset = 0;\r\n this._list = [];\r\n this._littleEndian = false;\r\n this._org_buf = arrayBuf ? (arrayBuf.constructor == DataView ? arrayBuf\r\n : (arrayBuf.constructor == Uint8Array ? new DataView(arrayBuf.buffer, offset) : new DataView(arrayBuf, offset))) : new DataView(new Uint8Array([]).buffer);\r\n this.arrayBuf = arrayBuf;\r\n this.offset = offset;\r\n // if (!ArrayBuffer.prototype.slice) {\r\n // ArrayBuffer.prototype.slice = function (start, end) {\r\n // var that = new Uint8Array(this);\r\n // if (end == undefined) end = that.length;\r\n // var result = new ArrayBuffer(end - start);\r\n // var resultArray = new Uint8Array(result);\r\n // for (var i = 0; i < resultArray.length; i++)\r\n // resultArray[i] = that[i + start];\r\n // return result;\r\n // }\r\n // }\r\n }\r\n //指定字节序 为BigEndian\r\n ByteBuffer.prototype.bigEndian = function () {\r\n this._littleEndian = false;\r\n return this;\r\n };\r\n ;\r\n //指定字节序 为LittleEndian\r\n ByteBuffer.prototype.littleEndianfunction = function () {\r\n this._littleEndian = true;\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.utf8Write = function (view, offset, str) {\r\n var c = 0;\r\n for (var i = 0, l = str.length; i < l; i++) {\r\n c = str.charCodeAt(i);\r\n if (c < 0x80) {\r\n view.setUint8(offset++, c);\r\n }\r\n else if (c < 0x800) {\r\n view.setUint8(offset++, 0xc0 | (c >> 6));\r\n view.setUint8(offset++, 0x80 | (c & 0x3f));\r\n }\r\n else if (c < 0xd800 || c >= 0xe000) {\r\n view.setUint8(offset++, 0xe0 | (c >> 12));\r\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\r\n view.setUint8(offset++, 0x80 | (c & 0x3f));\r\n }\r\n else {\r\n i++;\r\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\r\n view.setUint8(offset++, 0xf0 | (c >> 18));\r\n view.setUint8(offset++, 0x80 | (c >> 12) & 0x3f);\r\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\r\n view.setUint8(offset++, 0x80 | (c & 0x3f));\r\n }\r\n }\r\n };\r\n // byte (val, index) {\r\n // if (arguments.length == 0) {\r\n // this._list.push(this._org_buf.getUint8(this._offset, this._littleEndian));\r\n // this._offset += 1;\r\n // } else {\r\n // this._list.splice(index != undefined ? index : this._list.length, 0);\r\n // this._offset += 1;\r\n // }\r\n // return this;\r\n // };\r\n // short(val:number, index:number) {\r\n // if (arguments.length == 0) {\r\n // this._list.push(this._org_buf.getInt16(this._offset, this._littleEndian));\r\n // this._offset += 2;\r\n // } else {\r\n // this._list.splice(index != undefined ? index : this._list.length, 0, this.Type_Short);\r\n // this._offset += 2;\r\n // }\r\n // return this;\r\n // };\r\n // ushort(val, index) {\r\n // if (arguments.length == 0) {\r\n // this._list.push(this._org_buf.getUint16(this._offset, this._littleEndian));\r\n // this._offset += 2;\r\n // } else {\r\n // // , {t: this.Type_UShort, d: val, l: 2}\r\n // this._list.splice(index != undefined ? index : this._list.length, 0);\r\n // this._offset += 2;\r\n // }\r\n // return this;\r\n // };\r\n ByteBuffer.prototype.int32 = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getInt32(this._offset, this._littleEndian));\r\n this._offset += 4;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Int32, d: val, l: 4 });\r\n this._offset += 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.uint32 = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getUint32(this._offset, this._littleEndian));\r\n this._offset += 4;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_UInt32, d: val, l: 4 });\r\n this._offset += 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n /**\r\n * 新加的方法,获取bytebuffer的长度\r\n */\r\n ByteBuffer.prototype.blength = function () {\r\n return this._offset;\r\n };\r\n ;\r\n /**\r\n * 变长字符串 前4个字节表示字符串长度\r\n **/\r\n ByteBuffer.prototype.string = function (val, index) {\r\n if (arguments.length == 0) {\r\n var len = this._org_buf.getInt32(this._offset, this._littleEndian);\r\n this._offset += 4;\r\n this._list.push(this.utf8Read(this._org_buf, this._offset, len));\r\n this._offset += len;\r\n }\r\n else {\r\n var len = 0;\r\n if (val) {\r\n len = this.utf8Length(val);\r\n }\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_String, d: val, l: len });\r\n this._offset += len + 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.utf8Length = function (str) {\r\n var c = 0, length = 0;\r\n for (var i = 0, l = str.length; i < l; i++) {\r\n c = str.charCodeAt(i);\r\n if (c < 0x80) {\r\n length += 1;\r\n }\r\n else if (c < 0x800) {\r\n length += 2;\r\n }\r\n else if (c < 0xd800 || c >= 0xe000) {\r\n length += 3;\r\n }\r\n else {\r\n i++;\r\n length += 4;\r\n }\r\n }\r\n return length;\r\n };\r\n ByteBuffer.prototype.utf8Read = function (view, offset, length) {\r\n var string = '', chr = 0;\r\n for (var i = offset, end = offset + length; i < end; i++) {\r\n var byte = view.getUint8(i);\r\n if ((byte & 0x80) === 0x00) {\r\n string += String.fromCharCode(byte);\r\n continue;\r\n }\r\n if ((byte & 0xe0) === 0xc0) {\r\n string += String.fromCharCode(((byte & 0x0f) << 6) |\r\n (view.getUint8(++i) & 0x3f));\r\n continue;\r\n }\r\n if ((byte & 0xf0) === 0xe0) {\r\n string += String.fromCharCode(((byte & 0x0f) << 12) |\r\n ((view.getUint8(++i) & 0x3f) << 6) |\r\n ((view.getUint8(++i) & 0x3f) << 0));\r\n continue;\r\n }\r\n if ((byte & 0xf8) === 0xf0) {\r\n chr = ((byte & 0x07) << 18) |\r\n ((view.getUint8(++i) & 0x3f) << 12) |\r\n ((view.getUint8(++i) & 0x3f) << 6) |\r\n ((view.getUint8(++i) & 0x3f) << 0);\r\n if (chr >= 0x010000) { // surrogate pair\r\n chr -= 0x010000;\r\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\r\n }\r\n else {\r\n string += String.fromCharCode(chr);\r\n }\r\n continue;\r\n }\r\n throw new Error('Invalid byte ' + byte.toString(16));\r\n }\r\n return string;\r\n };\r\n /**\r\n * 定长字符串 val为null时,读取定长字符串(需指定长度len)\r\n **/\r\n ByteBuffer.prototype.vstring = function (val, len, index) {\r\n if (!len) {\r\n throw new Error('vstring must got len argument');\r\n return this;\r\n }\r\n if (val == undefined || val == null) {\r\n var vlen = 0; //实际长度\r\n for (var i = this._offset; i < this._offset + len; i++) {\r\n if (this._org_buf.getUint8(i) > 0)\r\n vlen++;\r\n }\r\n this._list.push(this.utf8Read(this._org_buf, this._offset, vlen));\r\n this._offset += len;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_VString, d: val, l: len });\r\n this._offset += len;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.int64 = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getFloat64(this._offset, this._littleEndian));\r\n this._offset += 8;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Int64, d: val, l: 8 });\r\n this._offset += 8;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.float = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getFloat32(this._offset, this._littleEndian));\r\n this._offset += 4;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Float, d: val, l: 4 });\r\n this._offset += 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.double = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getFloat64(this._offset, this._littleEndian));\r\n this._offset += 8;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Double, d: val, l: 8 });\r\n this._offset += 8;\r\n }\r\n return this;\r\n };\r\n ;\r\n /**\r\n * 写入或读取一段字节数组\r\n **/\r\n ByteBuffer.prototype.byteArray = function (val, len, index) {\r\n if (!len) {\r\n throw new Error('byteArray must got len argument');\r\n return this;\r\n }\r\n if (val == undefined || val == null) {\r\n var arr = new Uint8Array(this._org_buf.buffer.slice(this._offset, this._offset + len));\r\n this._list.push(arr);\r\n this._offset += len;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_ByteArray, d: val, l: len });\r\n this._offset += len;\r\n }\r\n return this;\r\n };\r\n ;\r\n /**\r\n * 解包成数据数组\r\n **/\r\n ByteBuffer.prototype.unpack = function () {\r\n return this._list;\r\n };\r\n ;\r\n /**\r\n * 打包成二进制,在前面加上4个字节表示包长\r\n **/\r\n ByteBuffer.prototype.packWithHead = function () {\r\n return this.pack(true);\r\n };\r\n ;\r\n /**\r\n * 打包成二进制\r\n * @param ifHead 是否在前面加上4个字节表示包长\r\n **/\r\n ByteBuffer.prototype.pack = function (ifHead) {\r\n this._org_buf = new DataView(new ArrayBuffer((ifHead) ? this._offset + 4 : this._offset));\r\n var offset = 0;\r\n if (ifHead) {\r\n this._org_buf.setUint32(offset, this._offset, this._littleEndian);\r\n offset += 4;\r\n }\r\n for (var i = 0; i < this._list.length; i++) {\r\n switch (this._list[i].t) {\r\n case this.Type_Byte:\r\n this._org_buf.setInt8(offset, this._list[i].d);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Short:\r\n this._org_buf.setInt16(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_UShort:\r\n this._org_buf.setUint16(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Int32:\r\n this._org_buf.setInt32(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_UInt32:\r\n this._org_buf.setUint32(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_String:\r\n //前4个字节表示字符串长度\r\n this._org_buf.setUint32(offset, this._list[i].l, this._littleEndian);\r\n offset += 4;\r\n this.utf8Write(this._org_buf, offset, this._list[i].d);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_VString:\r\n this.utf8Write(this._org_buf, offset, this._list[i].d);\r\n var vlen = this.utf8Length(this._list[i].d); //字符串实际长度\r\n //补齐\\0\r\n for (var j = offset + vlen; j < offset + this._list[i].l; j++) {\r\n this._org_buf.setUint8(j, 0);\r\n }\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Int64:\r\n this._org_buf.setFloat64(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Float:\r\n this._org_buf.setFloat32(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Double:\r\n this._org_buf.setFloat64(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_ByteArray:\r\n var indx = 0;\r\n for (var j = offset; j < offset + this._list[i].l; j++) {\r\n if (indx < this._list[i].d.length) {\r\n this._org_buf.setUint8(j, this._list[i].d[indx]);\r\n }\r\n else { //不够的话,后面补齐0x00\r\n this._org_buf.setUint8(j, 0);\r\n }\r\n indx++;\r\n }\r\n offset += this._list[i].l;\r\n break;\r\n }\r\n }\r\n return this._org_buf.buffer;\r\n };\r\n ;\r\n /**\r\n * 未读数据长度\r\n **/\r\n ByteBuffer.prototype.getAvailable = function () {\r\n if (!this._org_buf)\r\n return this._offset;\r\n return this._org_buf.buffer.byteLength - this._offset;\r\n };\r\n ;\r\n return ByteBuffer;\r\n}());\r\nexports[\"default\"] = ByteBuffer;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.LoginPack = void 0;\r\nvar LoginPack = /** @class */ (function () {\r\n function LoginPack(appId, userId, clientType) {\r\n this.userId = userId;\r\n this.clientType = clientType;\r\n this.appId = appId;\r\n }\r\n return LoginPack;\r\n}());\r\nexports.LoginPack = LoginPack;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Fetch_1 = require(\"../common/Fetch\");\r\nvar Logger_1 = require(\"../log/Logger\");\r\nvar Base64 = {\r\n _keyStr: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",\r\n encode: function (e) {\r\n var t = \"\";\r\n var n, r, i, s, o, u, a;\r\n var f = 0;\r\n e = Base64._utf8_encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n }\r\n else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n var t = \"\";\r\n var n, r, i;\r\n var s, o, u, a;\r\n var f = 0;\r\n e = e.replace(/[^A-Za-z0-9+/=]/g, \"\");\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u != 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a != 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8_decode(t);\r\n return t;\r\n },\r\n _utf8_encode: function (e) {\r\n e = e.replace(/rn/g, \"n\");\r\n var t = \"\";\r\n for (var n = 0; n < e.length; n++) {\r\n var r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n }\r\n else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8_decode: function (e) {\r\n var t = \"\";\r\n var n = 0;\r\n var r = 0;\r\n var c1 = 0;\r\n var c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n }\r\n else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n }\r\n else {\r\n c2 = e.charCodeAt(n + 1);\r\n var c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\nvar WebToolkit = /** @class */ (function () {\r\n function WebToolkit() {\r\n }\r\n // 获取浏览器信息\r\n WebToolkit.getBrowserInfo = function () {\r\n var agent = navigator.userAgent.toLowerCase();\r\n var system = agent.split(\" \")[1].split(\" \")[0].split(\"(\")[1];\r\n var REGSTR_EDGE = /edge\\/[\\d.]+/gi;\r\n var REGSTR_IE = /trident\\/[\\d.]+/gi;\r\n var OLD_IE = /msie\\s[\\d.]+/gi;\r\n var REGSTR_FF = /firefox\\/[\\d.]+/gi;\r\n var REGSTR_CHROME = /chrome\\/[\\d.]+/gi;\r\n var REGSTR_SAF = /safari\\/[\\d.]+/gi;\r\n var REGSTR_OPERA = /opr\\/[\\d.]+/gi;\r\n var info = {\r\n code: 0,\r\n system: system,\r\n browser: \"\",\r\n browserVersion: \"\"\r\n };\r\n // IE\r\n if (agent.indexOf(\"trident\") > 0) {\r\n info.browser = agent.match(REGSTR_IE)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_IE)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // OLD_IE\r\n if (agent.indexOf(\"msie\") > 0) {\r\n info.browser = agent.match(OLD_IE)[0].split(\" \")[0];\r\n info.browserVersion = agent.match(OLD_IE)[0].split(\" \")[1];\r\n return info;\r\n }\r\n // Edge\r\n if (agent.indexOf(\"edge\") > 0) {\r\n info.browser = agent.match(REGSTR_EDGE)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_EDGE)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // firefox\r\n if (agent.indexOf(\"firefox\") > 0) {\r\n info.browser = agent.match(REGSTR_FF)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_FF)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // Opera\r\n if (agent.indexOf(\"opr\") > 0) {\r\n info.browser = agent.match(REGSTR_OPERA)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_OPERA)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // Safari\r\n if (agent.indexOf(\"safari\") > 0 && agent.indexOf(\"chrome\") < 0) {\r\n info.browser = agent.match(REGSTR_SAF)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_SAF)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // Chrome\r\n if (agent.indexOf(\"chrome\") > 0) {\r\n info.browser = agent.match(REGSTR_CHROME)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_CHROME)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n else {\r\n info.code = -1;\r\n return info;\r\n }\r\n };\r\n // TODO: 获取小程序设备信息\r\n WebToolkit.getWxappInfo = function () {\r\n return {\r\n system: 'WXAPP',\r\n browser: 'WXAPP',\r\n browserVersion: '1.0'\r\n };\r\n };\r\n // TODO: 获取ReactNative设备信息\r\n WebToolkit.getReactNativeInfo = function () {\r\n return {\r\n system: 'RNNative',\r\n browser: 'RNNative',\r\n browserVersion: '1.0'\r\n };\r\n };\r\n // TODO: 获取UniApp设备信息\r\n WebToolkit.getUniAppInfo = function () {\r\n return {\r\n system: 'UNIAPP',\r\n browser: 'UNIAPP',\r\n browserVersion: '1.0'\r\n };\r\n };\r\n // 动态加入script 到head 标签处\r\n WebToolkit.loadJS = function (url, callback) {\r\n var script = document.createElement('script'), fn = callback || function () { };\r\n script.type = 'text/javascript';\r\n // document.getElementsByTagName('head')[0].children[16].outerHTML.indexOf('http://pv.sohu.com/cityjson?ie=utf-8')\r\n var exist = false;\r\n for (var v in document.getElementsByTagName('head')[0].children) {\r\n var dom = document.getElementsByTagName('head')[0].children[v];\r\n if (dom.outerHTML !== undefined && dom.outerHTML.indexOf(url) >= 0) {\r\n exist = true;\r\n }\r\n }\r\n if (exist) {\r\n fn();\r\n return;\r\n }\r\n //IE\r\n if (script.readyState) {\r\n script.onreadystatechange = function () {\r\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\r\n script.onreadystatechange = null;\r\n fn();\r\n }\r\n };\r\n }\r\n else {\r\n //其他浏览器\r\n script.onload = function () {\r\n fn();\r\n };\r\n }\r\n script.src = url;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n };\r\n // 获取当前ip信息(fetch方式)\r\n WebToolkit.getIpInfoByFetch = function (callback) {\r\n var url = 'http://pv.sohu.com/cityjson?ie=utf-8';\r\n var fetch = Fetch_1[\"default\"].getFetchToolkit();\r\n var request = { method: \"GET\", mode: \"cors\", headers: { \"Content-Type\": \"application/json\" } };\r\n return fetch(url, request).then(function (response) {\r\n return response.text();\r\n }).then(function (res) {\r\n if (typeof callback === 'function') {\r\n var currentCity = eval('_current_city=' + res.replace('var returnCitySN = ', ''));\r\n callback(currentCity);\r\n }\r\n })[\"catch\"](function (e) {\r\n Logger_1[\"default\"].trace(e);\r\n });\r\n };\r\n // 获取当前ip信息(动态插入script脚本方式)\r\n WebToolkit.getIpInfoByInsertScript = function (callback) {\r\n var url = 'http://pv.sohu.com/cityjson?ie=utf-8';\r\n WebToolkit.loadJS(url, function () {\r\n callback(window['returnCitySN']);\r\n });\r\n };\r\n WebToolkit.getIpInfo = function (callback) {\r\n // 小程序的情况需要把pv.sohu.com域名加入白名单中\r\n WebToolkit.getIpInfoByFetch(callback);\r\n };\r\n // 获取客户端设备信息\r\n WebToolkit.getDeviceInfo = function () {\r\n var deviceInfo = WebToolkit.getUniAppInfo();\r\n return deviceInfo;\r\n };\r\n WebToolkit.base64Encode = function (str) {\r\n return Base64.encode(str);\r\n };\r\n WebToolkit.base64Decode = function (str) {\r\n return Base64.decode(str);\r\n };\r\n return WebToolkit;\r\n}());\r\nexports[\"default\"] = WebToolkit;\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var global =\r\n (typeof globalThis !== 'undefined' && globalThis) ||\r\n (typeof self !== 'undefined' && self) ||\r\n (typeof global !== 'undefined' && global)\r\n\r\nvar support = {\r\n searchParams: 'URLSearchParams' in global,\r\n iterable: 'Symbol' in global && 'iterator' in Symbol,\r\n blob:\r\n 'FileReader' in global &&\r\n 'Blob' in global &&\r\n (function() {\r\n try {\r\n new Blob()\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n })(),\r\n formData: 'FormData' in global,\r\n arrayBuffer: 'ArrayBuffer' in global\r\n}\r\n\r\nfunction isDataView(obj) {\r\n return obj && DataView.prototype.isPrototypeOf(obj)\r\n}\r\n\r\nif (support.arrayBuffer) {\r\n var viewClasses = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]'\r\n ]\r\n\r\n var isArrayBufferView =\r\n ArrayBuffer.isView ||\r\n function(obj) {\r\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\r\n }\r\n}\r\n\r\nfunction normalizeName(name) {\r\n if (typeof name !== 'string') {\r\n name = String(name)\r\n }\r\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\r\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\r\n }\r\n // return name.toLowerCase()\r\n return name;\r\n}\r\n\r\nfunction normalizeValue(value) {\r\n if (typeof value !== 'string') {\r\n value = String(value)\r\n }\r\n return value\r\n}\r\n\r\n// Build a destructive iterator for the value list\r\nfunction iteratorFor(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift()\r\n return {done: value === undefined, value: value}\r\n }\r\n }\r\n\r\n if (support.iterable) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator\r\n }\r\n }\r\n\r\n return iterator\r\n}\r\n\r\nexport function Headers(headers) {\r\n this.map = {}\r\n\r\n if (headers instanceof Headers) {\r\n headers.forEach(function(value, name) {\r\n this.append(name, value)\r\n }, this)\r\n } else if (Array.isArray(headers)) {\r\n headers.forEach(function(header) {\r\n this.append(header[0], header[1])\r\n }, this)\r\n } else if (headers) {\r\n Object.getOwnPropertyNames(headers).forEach(function(name) {\r\n this.append(name, headers[name])\r\n }, this)\r\n }\r\n}\r\n\r\nHeaders.prototype.append = function(name, value) {\r\n name = normalizeName(name)\r\n value = normalizeValue(value)\r\n var oldValue = this.map[name]\r\n this.map[name] = oldValue ? oldValue + ', ' + value : value\r\n}\r\n\r\nHeaders.prototype['delete'] = function(name) {\r\n delete this.map[normalizeName(name)]\r\n}\r\n\r\nHeaders.prototype.get = function(name) {\r\n name = normalizeName(name)\r\n return this.has(name) ? this.map[name] : null\r\n}\r\n\r\nHeaders.prototype.has = function(name) {\r\n return this.map.hasOwnProperty(normalizeName(name))\r\n}\r\n\r\nHeaders.prototype.set = function(name, value) {\r\n this.map[normalizeName(name)] = normalizeValue(value)\r\n}\r\n\r\nHeaders.prototype.forEach = function(callback, thisArg) {\r\n for (var name in this.map) {\r\n if (this.map.hasOwnProperty(name)) {\r\n callback.call(thisArg, this.map[name], name, this)\r\n }\r\n }\r\n}\r\n\r\nHeaders.prototype.keys = function() {\r\n var items = []\r\n this.forEach(function(value, name) {\r\n items.push(name)\r\n })\r\n return iteratorFor(items)\r\n}\r\n\r\nHeaders.prototype.values = function() {\r\n var items = []\r\n this.forEach(function(value) {\r\n items.push(value)\r\n })\r\n return iteratorFor(items)\r\n}\r\n\r\nHeaders.prototype.entries = function() {\r\n var items = []\r\n this.forEach(function(value, name) {\r\n items.push([name, value])\r\n })\r\n return iteratorFor(items)\r\n}\r\n\r\nif (support.iterable) {\r\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\r\n}\r\n\r\nfunction consumed(body) {\r\n if (body.bodyUsed) {\r\n return Promise.reject(new TypeError('Already read'))\r\n }\r\n body.bodyUsed = true\r\n}\r\n\r\nfunction fileReaderReady(reader) {\r\n return new Promise(function(resolve, reject) {\r\n reader.onload = function() {\r\n resolve(reader.result)\r\n }\r\n reader.onerror = function() {\r\n reject(reader.error)\r\n }\r\n })\r\n}\r\n\r\nfunction readBlobAsArrayBuffer(blob) {\r\n var reader = new FileReader()\r\n var promise = fileReaderReady(reader)\r\n reader.readAsArrayBuffer(blob)\r\n return promise\r\n}\r\n\r\nfunction readBlobAsText(blob) {\r\n var reader = new FileReader()\r\n var promise = fileReaderReady(reader)\r\n reader.readAsText(blob)\r\n return promise\r\n}\r\n\r\nfunction readArrayBufferAsText(buf) {\r\n var view = new Uint8Array(buf)\r\n var chars = new Array(view.length)\r\n\r\n for (var i = 0; i < view.length; i++) {\r\n chars[i] = String.fromCharCode(view[i])\r\n }\r\n return chars.join('')\r\n}\r\n\r\nfunction bufferClone(buf) {\r\n if (buf.slice) {\r\n return buf.slice(0)\r\n } else {\r\n var view = new Uint8Array(buf.byteLength)\r\n view.set(new Uint8Array(buf))\r\n return view.buffer\r\n }\r\n}\r\n\r\nfunction Body() {\r\n this.bodyUsed = false\r\n\r\n this._initBody = function(body) {\r\n /*\r\n fetch-mock wraps the Response object in an ES6 Proxy to\r\n provide useful test harness features such as flush. However, on\r\n ES5 browsers without fetch or Proxy support pollyfills must be used;\r\n the proxy-pollyfill is unable to proxy an attribute unless it exists\r\n on the object before the Proxy is created. This change ensures\r\n Response.bodyUsed exists on the instance, while maintaining the\r\n semantic of setting Request.bodyUsed in the constructor before\r\n _initBody is called.\r\n */\r\n this.bodyUsed = this.bodyUsed\r\n this._bodyInit = body\r\n if (!body) {\r\n this._bodyText = ''\r\n } else if (typeof body === 'string') {\r\n this._bodyText = body\r\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\r\n this._bodyBlob = body\r\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\r\n this._bodyFormData = body\r\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\r\n this._bodyText = body.toString()\r\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\r\n this._bodyArrayBuffer = bufferClone(body.buffer)\r\n // IE 10-11 can't handle a DataView body.\r\n this._bodyInit = new Blob([this._bodyArrayBuffer])\r\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\r\n this._bodyArrayBuffer = bufferClone(body)\r\n } else {\r\n this._bodyText = body = Object.prototype.toString.call(body)\r\n }\r\n\r\n if (!this.headers.get('Content-Type')) {\r\n if (typeof body === 'string') {\r\n this.headers.set('Content-Type', 'text/plain;charset=UTF-8')\r\n } else if (this._bodyBlob && this._bodyBlob.type) {\r\n this.headers.set('Content-Type', this._bodyBlob.type)\r\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\r\n this.headers.set('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8')\r\n }\r\n }\r\n }\r\n\r\n if (support.blob) {\r\n this.blob = function() {\r\n var rejected = consumed(this)\r\n if (rejected) {\r\n return rejected\r\n }\r\n\r\n if (this._bodyBlob) {\r\n return Promise.resolve(this._bodyBlob)\r\n } else if (this._bodyArrayBuffer) {\r\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\r\n } else if (this._bodyFormData) {\r\n throw new Error('could not read FormData body as blob')\r\n } else {\r\n return Promise.resolve(new Blob([this._bodyText]))\r\n }\r\n }\r\n\r\n this.arrayBuffer = function() {\r\n if (this._bodyArrayBuffer) {\r\n var isConsumed = consumed(this)\r\n if (isConsumed) {\r\n return isConsumed\r\n }\r\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\r\n return Promise.resolve(\r\n this._bodyArrayBuffer.buffer.slice(\r\n this._bodyArrayBuffer.byteOffset,\r\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\r\n )\r\n )\r\n } else {\r\n return Promise.resolve(this._bodyArrayBuffer)\r\n }\r\n } else {\r\n return this.blob().then(readBlobAsArrayBuffer)\r\n }\r\n }\r\n }\r\n\r\n this.text = function() {\r\n var rejected = consumed(this)\r\n if (rejected) {\r\n return rejected\r\n }\r\n\r\n if (this._bodyBlob) {\r\n return readBlobAsText(this._bodyBlob)\r\n } else if (this._bodyArrayBuffer) {\r\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\r\n } else if (this._bodyFormData) {\r\n throw new Error('could not read FormData body as text')\r\n } else {\r\n return Promise.resolve(this._bodyText)\r\n }\r\n }\r\n\r\n if (support.formData) {\r\n this.formData = function() {\r\n return this.text().then(decode)\r\n }\r\n }\r\n\r\n this.json = function() {\r\n return this.text().then(JSON.parse)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// HTTP methods whose capitalization should be normalized\r\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\r\n\r\nfunction normalizeMethod(method) {\r\n var upcased = method.toUpperCase()\r\n return methods.indexOf(upcased) > -1 ? upcased : method\r\n}\r\n\r\nexport function Request(input, options) {\r\n if (!(this instanceof Request)) {\r\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\r\n }\r\n\r\n options = options || {}\r\n var body = options.body\r\n\r\n if (input instanceof Request) {\r\n if (input.bodyUsed) {\r\n throw new TypeError('Already read')\r\n }\r\n this.url = input.url\r\n this.credentials = input.credentials\r\n if (!options.headers) {\r\n this.headers = new Headers(input.headers)\r\n }\r\n this.method = input.method\r\n this.mode = input.mode\r\n this.signal = input.signal\r\n if (!body && input._bodyInit != null) {\r\n body = input._bodyInit\r\n input.bodyUsed = true\r\n }\r\n } else {\r\n this.url = String(input)\r\n }\r\n\r\n this.credentials = options.credentials || this.credentials || 'same-origin'\r\n if (options.headers || !this.headers) {\r\n this.headers = new Headers(options.headers)\r\n }\r\n this.method = normalizeMethod(options.method || this.method || 'GET')\r\n this.mode = options.mode || this.mode || null\r\n this.signal = options.signal || this.signal\r\n this.referrer = null\r\n\r\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\r\n throw new TypeError('Body not allowed for GET or HEAD requests')\r\n }\r\n this._initBody(body)\r\n\r\n if (this.method === 'GET' || this.method === 'HEAD') {\r\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\r\n // Search for a '_' parameter in the query string\r\n var reParamSearch = /([?&])_=[^&]*/\r\n if (reParamSearch.test(this.url)) {\r\n // If it already exists then set the value with the current time\r\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\r\n } else {\r\n // Otherwise add a new '_' parameter to the end with the current time\r\n var reQueryString = /\\?/\r\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\r\n }\r\n }\r\n }\r\n}\r\n\r\nRequest.prototype.clone = function() {\r\n return new Request(this, {body: this._bodyInit})\r\n}\r\n\r\nfunction decode(body) {\r\n var form = new FormData()\r\n body\r\n .trim()\r\n .split('&')\r\n .forEach(function(bytes) {\r\n if (bytes) {\r\n var split = bytes.split('=')\r\n var name = split.shift().replace(/\\+/g, ' ')\r\n var value = split.join('=').replace(/\\+/g, ' ')\r\n form.append(decodeURIComponent(name), decodeURIComponent(value))\r\n }\r\n })\r\n return form\r\n}\r\n\r\nfunction parseHeaders(rawHeaders) {\r\n var headers = new Headers()\r\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\r\n // https://tools.ietf.org/html/rfc7230#section-3.2\r\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\r\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\r\n // https://github.com/github/fetch/issues/748\r\n // https://github.com/zloirock/core-js/issues/751\r\n preProcessedHeaders\r\n .split('\\r')\r\n .map(function(header) {\r\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\r\n })\r\n .forEach(function(line) {\r\n var parts = line.split(':')\r\n var key = parts.shift().trim()\r\n if (key) {\r\n var value = parts.join(':').trim()\r\n headers.append(key, value)\r\n }\r\n })\r\n return headers\r\n}\r\n\r\nfunction parseUniappHeaders(rawHeaders) {\r\n var headers = new Headers()\r\n for(var key in rawHeaders){\r\n headers.append(key, rawHeaders[key])\r\n }\r\n return headers\r\n}\r\n\r\n\r\nBody.call(Request.prototype)\r\n\r\nexport function Response(bodyInit, options) {\r\n if (!(this instanceof Response)) {\r\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\r\n }\r\n if (!options) {\r\n options = {}\r\n }\r\n\r\n this.type = 'default'\r\n this.status = options.status === undefined ? 200 : options.status\r\n this.ok = this.status >= 200 && this.status < 300\r\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\r\n this.headers = new Headers(options.headers)\r\n this.url = options.url || ''\r\n this._initBody(bodyInit)\r\n}\r\n\r\nBody.call(Response.prototype)\r\n\r\nResponse.prototype.clone = function() {\r\n return new Response(this._bodyInit, {\r\n status: this.status,\r\n statusText: this.statusText,\r\n headers: new Headers(this.headers),\r\n url: this.url\r\n })\r\n}\r\n\r\nResponse.error = function() {\r\n var response = new Response(null, {status: 0, statusText: ''})\r\n response.type = 'error'\r\n return response\r\n}\r\n\r\nvar redirectStatuses = [301, 302, 303, 307, 308]\r\n\r\nResponse.redirect = function(url, status) {\r\n if (redirectStatuses.indexOf(status) === -1) {\r\n throw new RangeError('Invalid status code')\r\n }\r\n\r\n return new Response(null, {status: status, headers: {location: url}})\r\n}\r\n\r\nexport var DOMException = global.DOMException\r\ntry {\r\n new DOMException()\r\n} catch (err) {\r\n DOMException = function(message, name) {\r\n this.message = message\r\n this.name = name\r\n var error = Error(message)\r\n this.stack = error.stack\r\n }\r\n DOMException.prototype = Object.create(Error.prototype)\r\n DOMException.prototype.constructor = DOMException\r\n}\r\n\r\n// 从 whatwg-fetch 项目改写\r\nexport function fetch(input, init) {\r\n return new Promise(function(resolve, reject) {\r\n var request = new Request(input, init)\r\n\r\n if (request.signal && request.signal.aborted) {\r\n return reject(new DOMException('Aborted', 'AbortError'))\r\n }\r\n\r\n function fixUrl(url) {\r\n try {\r\n return url === '' && global.location.href ? global.location.href : url\r\n } catch (e) {\r\n return url\r\n }\r\n }\r\n function isJson(json) {\r\n try {\r\n if (typeof json == \"object\") {\r\n return true;\r\n }\r\n if (typeof json == \"string\") {\r\n if (typeof JSON.parse(str) == \"object\") {\r\n return true;\r\n }\r\n }\r\n } catch(e) {\r\n }\r\n return false;\r\n }\r\n function toStr(json) {\r\n try {\r\n if (typeof json == \"object\") {\r\n return JSON.stringify(json);\r\n }\r\n if (typeof json == \"string\") {\r\n return json;\r\n }\r\n } catch(e) {\r\n }\r\n return json.toString();\r\n }\r\n\r\n\r\n let rawBody = typeof request._bodyInit === 'undefined' ? null : request._bodyInit;\r\n if(request.headers.hasOwnProperty('Content-Type') && request.headers['Content-Type'].indexOf('application/json') >= 0){\r\n if(request.method.toUpperCase() === 'POST'){\r\n rawBody = JSON.parse(rawBody); // uniapp框架遇到 method = 'POST' 且 Content-Type = 'application/json' 会自动序列化\r\n }\r\n }\r\n const requestTask = uni.request({\r\n url: fixUrl(request.url),\r\n method: request.method,\r\n data: rawBody,\r\n header: request.headers.map,\r\n complete: (resp)=> {\r\n // Logger.info(resp);\r\n if (request.signal) {\r\n request.signal.removeEventListener('abort', abortXhr);\r\n }\r\n if(resp.errMsg.indexOf('fail') >= 0){\r\n setTimeout(function() {\r\n reject(new TypeError('Network request failed'))\r\n }, 0);\r\n return;\r\n }\r\n // if(resp.statusCode !== 200){\r\n // setTimeout(function() {\r\n // reject(new TypeError('Network request failed, statusCode:' + resp.statusCode + \" full text:\" + JSON.stringify(resp.data)))\r\n // }, 0)\r\n // return;\r\n // }\r\n var options = {\r\n status: resp.statusCode,\r\n statusText: resp.data ? toStr(resp.data) : '',\r\n headers: parseUniappHeaders(resp.header || {})\r\n };\r\n options.url = options.headers.get('X-Request-URL')\r\n var body = options.statusText;\r\n setTimeout(function() {\r\n resolve(new Response(body, options))\r\n }, 0)\r\n\r\n }\r\n });\r\n function abortXhr() {\r\n requestTask.abort()\r\n }\r\n if (request.signal) {\r\n request.signal.addEventListener('abort', abortXhr)\r\n }\r\n\r\n })\r\n}\r\n\r\nfetch.polyfill = true\r\n\r\nif (!global.fetch) {\r\n global.fetch = fetch\r\n global.Headers = Headers\r\n global.Request = Request\r\n global.Response = Response\r\n}\r\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","module.exports = require('../package.json').version;\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.RequestBase = void 0;\r\nvar RequestBase = /** @class */ (function () {\r\n function RequestBase(appId, clientType, imei) {\r\n this.appId = appId;\r\n this.clientType = clientType;\r\n this.imei = imei;\r\n }\r\n return RequestBase;\r\n}());\r\nexports.RequestBase = RequestBase;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.RequestParams = void 0;\r\nvar RequestParams = /** @class */ (function () {\r\n function RequestParams(appId, identifier, userSign) {\r\n this.appId = appId;\r\n this.identifier = identifier;\r\n this.userSign = userSign;\r\n }\r\n return RequestParams;\r\n}());\r\nexports.RequestParams = RequestParams;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Logger_1 = require(\"../log/Logger\");\r\nvar ImClient_1 = require(\"./ImClient\");\r\nvar ApiResponse_1 = require(\"../model/ApiResponse\");\r\nvar utils_1 = require(\"../common/utils\");\r\nvar Fetch_1 = require(\"../common/Fetch\");\r\nvar HttpApi = /** @class */ (function () {\r\n function HttpApi(url) {\r\n this.url = \"\"; //http://127.0.0.1:8000/v1\r\n this.url = url;\r\n }\r\n HttpApi.prototype.call = function (url, params, body) {\r\n var userId = ImClient_1.imClient.userId;\r\n Logger_1[\"default\"].info(userId);\r\n var reqUrl = this.url + url;\r\n if (params != null) {\r\n var paramStr = this.setQueryConfig(params);\r\n // console.log(paramStr);\r\n reqUrl += paramStr;\r\n }\r\n var requestMethod = \"POST\";\r\n // 讲appid等参数写入body\r\n body = this.setQueryToBody(params, body);\r\n var headers = {\r\n 'Content-Type': 'application/json',\r\n };\r\n var request = { method: requestMethod, headers: headers, mode: 'cors', body: utils_1[\"default\"].json(body) };\r\n return this.httpFetch(reqUrl, request);\r\n };\r\n HttpApi.prototype.setQueryToBody = function (params, body) {\r\n for (var o in params) {\r\n body[o] = params[o];\r\n }\r\n return body;\r\n };\r\n HttpApi.prototype.setQueryConfig = function (params) {\r\n var _str = \"?\";\r\n for (var o in params) {\r\n _str += o + \"=\" + params[o] + \"&\";\r\n }\r\n var _str = _str.substring(0, _str.length - 1); //末尾是&\r\n return _str;\r\n };\r\n HttpApi.prototype.httpFetch = function (url, request) {\r\n var _this = this;\r\n console.log(\"httpFetch\");\r\n var rnfetch1 = Fetch_1[\"default\"].getFetchToolkit();\r\n return rnfetch1(url, request).then(function (response) {\r\n // console.log(response)\r\n return response.json();\r\n }).then(function (res) {\r\n Logger_1[\"default\"].info(\"==> [\" + request.method + \"] \" + url + \" back:\" + utils_1[\"default\"].json(res));\r\n var resp = _this.response2ApiResponse(res);\r\n if (resp.isFailed()) {\r\n return Promise.reject(resp);\r\n }\r\n // return Promise.resolve(this.response2ApiResponse(res));\r\n return Promise.resolve(resp);\r\n });\r\n };\r\n HttpApi.prototype.response2ApiResponse = function (response) {\r\n var apiResponse = new ApiResponse_1[\"default\"](true);\r\n apiResponse.data = response.data;\r\n apiResponse.msg = response.msg;\r\n apiResponse.code = response.code;\r\n return apiResponse;\r\n };\r\n return HttpApi;\r\n}());\r\nexports[\"default\"] = HttpApi;\r\n// export const httpApi = new HttpApi();\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar ApiResponse = /** @class */ (function () {\r\n function ApiResponse(succeed) {\r\n if (succeed === void 0) { succeed = false; }\r\n this.msg = '';\r\n this.data = null;\r\n if (succeed) {\r\n this.code = 200;\r\n }\r\n }\r\n ApiResponse.prototype.isSucceed = function () {\r\n return this.code === 200;\r\n };\r\n ApiResponse.prototype.isFailed = function () {\r\n return !this.isSucceed();\r\n };\r\n return ApiResponse;\r\n}());\r\nexports[\"default\"] = ApiResponse;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.ConversationEventCommand = exports.UserEventCommand = exports.SystemCommand = exports.GroupCommand = exports.FriendShipCommand = exports.MessageCommand = void 0;\r\nvar MessageCommand;\r\n(function (MessageCommand) {\r\n MessageCommand[MessageCommand[\"MSG_P2P\"] = 1103] = \"MSG_P2P\";\r\n MessageCommand[MessageCommand[\"MSG_P2P_SYNC\"] = 1108] = \"MSG_P2P_SYNC\";\r\n //发送消息已读 1106\r\n MessageCommand[MessageCommand[\"MSG_READED\"] = 1106] = \"MSG_READED\";\r\n //消息接收ack\r\n MessageCommand[MessageCommand[\"MSG_RECIVE_ACK\"] = 1107] = \"MSG_RECIVE_ACK\";\r\n //单聊消息ACK 1046\r\n MessageCommand[MessageCommand[\"MSG_ACK\"] = 1046] = \"MSG_ACK\";\r\n // 消息撤回 1050\r\n MessageCommand[MessageCommand[\"MSG_RECALL\"] = 1050] = \"MSG_RECALL\";\r\n // //消息撤回通知 1052\r\n MessageCommand[MessageCommand[\"MSG_RECALL_NOTIFY\"] = 1052] = \"MSG_RECALL_NOTIFY\";\r\n // 消息撤回回包 1051\r\n MessageCommand[MessageCommand[\"MSG_RECALL_ACK\"] = 1051] = \"MSG_RECALL_ACK\";\r\n // //消息已读通知 1053\r\n MessageCommand[MessageCommand[\"MSG_READED_NOTIFY\"] = 1053] = \"MSG_READED_NOTIFY\";\r\n // 消息已读回执,给原消息发送方 1054\r\n MessageCommand[MessageCommand[\"MSG_READED_RECEIPT\"] = 1054] = \"MSG_READED_RECEIPT\";\r\n})(MessageCommand || (MessageCommand = {}));\r\nexports.MessageCommand = MessageCommand;\r\nvar FriendShipCommand;\r\n(function (FriendShipCommand) {\r\n //添加好友 3000\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_ADD\"] = 3000] = \"FRIEND_ADD\";\r\n //更新好友 3001\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_UPDATE\"] = 3001] = \"FRIEND_UPDATE\";\r\n //删除好友 3002\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_DELETE\"] = 3002] = \"FRIEND_DELETE\";\r\n //好友申请 3003\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_REQUEST\"] = 3003] = \"FRIEND_REQUEST\";\r\n //好友申请已读 3004\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_REQUEST_READ\"] = 3004] = \"FRIEND_REQUEST_READ\";\r\n //好友申请审批 3005\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_REQUEST_APPROVER\"] = 3005] = \"FRIEND_REQUEST_APPROVER\";\r\n //添加黑名单 3010\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_BLACK_ADD\"] = 3010] = \"FRIEND_BLACK_ADD\";\r\n //移除黑名单 3011\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_BLACK_DELETE\"] = 3011] = \"FRIEND_BLACK_DELETE\";\r\n //新建好友分组 3012\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_ADD\"] = 3012] = \"FRIEND_GROUP_ADD\";\r\n //删除好友分组 3013\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_DELETE\"] = 3013] = \"FRIEND_GROUP_DELETE\";\r\n //好友分组添加成员 3014\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_MEMBER_ADD\"] = 3014] = \"FRIEND_GROUP_MEMBER_ADD\";\r\n //好友分组移除成员 3015\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_MEMBER_DELETE\"] = 3015] = \"FRIEND_GROUP_MEMBER_DELETE\";\r\n})(FriendShipCommand || (FriendShipCommand = {}));\r\nexports.FriendShipCommand = FriendShipCommand;\r\nvar GroupCommand;\r\n(function (GroupCommand) {\r\n /**\r\n * 推送申请入群通知 2000\r\n */\r\n GroupCommand[GroupCommand[\"JOIN_GROUP\"] = 2000] = \"JOIN_GROUP\";\r\n /**\r\n * 推送添加群成员 2001,通知给所有管理员和本人\r\n */\r\n GroupCommand[GroupCommand[\"ADDED_MEMBER\"] = 2001] = \"ADDED_MEMBER\";\r\n /**\r\n * 推送创建群组通知 2002,通知给所有人\r\n */\r\n GroupCommand[GroupCommand[\"CREATED_GROUP\"] = 2002] = \"CREATED_GROUP\";\r\n /**\r\n * 推送更新群组通知 2003,通知给所有人\r\n */\r\n GroupCommand[GroupCommand[\"UPDATED_GROUP\"] = 2003] = \"UPDATED_GROUP\";\r\n /**\r\n * 推送退出群组通知 2004,通知给管理员和操作人\r\n */\r\n GroupCommand[GroupCommand[\"EXIT_GROUP\"] = 2004] = \"EXIT_GROUP\";\r\n /**\r\n * 推送修改群成员通知 2005,通知给管理员和被操作人\r\n */\r\n GroupCommand[GroupCommand[\"UPDATED_MEMBER\"] = 2005] = \"UPDATED_MEMBER\";\r\n /**\r\n * 推送删除群成员通知 2006,通知给所有群成员和被踢人\r\n */\r\n GroupCommand[GroupCommand[\"DELETED_MEMBER\"] = 2006] = \"DELETED_MEMBER\";\r\n /**\r\n * 推送解散群通知 2007,通知所有人\r\n */\r\n GroupCommand[GroupCommand[\"DESTROY_GROUP\"] = 2007] = \"DESTROY_GROUP\";\r\n /**\r\n * 推送转让群主 2008,通知所有人\r\n */\r\n GroupCommand[GroupCommand[\"TRANSFER_GROUP\"] = 2008] = \"TRANSFER_GROUP\";\r\n /**\r\n * 禁言群 2009,通知所有人\r\n */\r\n GroupCommand[GroupCommand[\"MUTE_GROUP\"] = 2009] = \"MUTE_GROUP\";\r\n /**\r\n * 禁言/解禁 群成员 2010,通知管理员和被操作人\r\n */\r\n GroupCommand[GroupCommand[\"SPEAK_GOUP_MEMBER\"] = 2010] = \"SPEAK_GOUP_MEMBER\";\r\n //群聊消息收发 2104\r\n GroupCommand[GroupCommand[\"MSG_GROUP\"] = 2104] = \"MSG_GROUP\";\r\n //群聊消息收发同步消息 2105\r\n GroupCommand[GroupCommand[\"MSG_GROUP_SYNC\"] = 2105] = \"MSG_GROUP_SYNC\";\r\n //群聊消息ACK 2047\r\n GroupCommand[GroupCommand[\"GROUP_MSG_ACK\"] = 2047] = \"GROUP_MSG_ACK\";\r\n})(GroupCommand || (GroupCommand = {}));\r\nexports.GroupCommand = GroupCommand;\r\nvar SystemCommand;\r\n(function (SystemCommand) {\r\n //心跳 9999\r\n SystemCommand[SystemCommand[\"PING\"] = 9999] = \"PING\";\r\n //登陸 9000\r\n SystemCommand[SystemCommand[\"LOGIN\"] = 9000] = \"LOGIN\";\r\n //登录ack 9001\r\n SystemCommand[SystemCommand[\"LOGINACK\"] = 9001] = \"LOGINACK\";\r\n //下线通知 用于多端互斥 9002\r\n SystemCommand[SystemCommand[\"MUTUALLOGIN\"] = 9002] = \"MUTUALLOGIN\";\r\n //登出 9003\r\n SystemCommand[SystemCommand[\"LOGOUT\"] = 9003] = \"LOGOUT\";\r\n})(SystemCommand || (SystemCommand = {}));\r\nexports.SystemCommand = SystemCommand;\r\nvar UserEventCommand;\r\n(function (UserEventCommand) {\r\n //4000\r\n UserEventCommand[UserEventCommand[\"USER_MODIFY\"] = 4000] = \"USER_MODIFY\";\r\n //4001\r\n UserEventCommand[UserEventCommand[\"USER_ONLINE_STATUS_CHANGE\"] = 4001] = \"USER_ONLINE_STATUS_CHANGE\";\r\n //4002 在线状态订阅\r\n UserEventCommand[UserEventCommand[\"USER_ONLINE_STATUS_SUBSCRIBE\"] = 4002] = \"USER_ONLINE_STATUS_SUBSCRIBE\";\r\n //4003 拉取订阅的在线状态好友,只发送给请求端\r\n UserEventCommand[UserEventCommand[\"PULL_USER_ONLINE_STATUS\"] = 4003] = \"PULL_USER_ONLINE_STATUS\";\r\n //4004 用户在线状态通知报文\r\n UserEventCommand[UserEventCommand[\"USER_ONLINE_STATUS_CHANGE_NOTIFY\"] = 4004] = \"USER_ONLINE_STATUS_CHANGE_NOTIFY\";\r\n})(UserEventCommand || (UserEventCommand = {}));\r\nexports.UserEventCommand = UserEventCommand;\r\nvar ConversationEventCommand;\r\n(function (ConversationEventCommand) {\r\n //5000 会话删除\r\n ConversationEventCommand[ConversationEventCommand[\"CONVERSATION_DELETE\"] = 5000] = \"CONVERSATION_DELETE\";\r\n //5001 会话修改\r\n ConversationEventCommand[ConversationEventCommand[\"CONVERSATION_UPDATE\"] = 5001] = \"CONVERSATION_UPDATE\";\r\n})(ConversationEventCommand || (ConversationEventCommand = {}));\r\nexports.ConversationEventCommand = ConversationEventCommand;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.MessagePack = void 0;\r\nvar utils_1 = require(\"../common/utils\");\r\nvar MessagePack = /** @class */ (function () {\r\n function MessagePack(appId) {\r\n this.messageId = utils_1[\"default\"].uuid();\r\n this.appId = appId;\r\n this.messageRandom = this.RangeInteger(0, 10000);\r\n this.messageTime = Date.parse(new Date().toString());\r\n }\r\n MessagePack.prototype.RangeInteger = function (min, max) {\r\n var range = max - min;\r\n var value = Math.floor(Math.random() * range) + min;\r\n return value;\r\n };\r\n MessagePack.prototype.buildTextMessagePack = function (fromId, toId, text) {\r\n this.fromId = fromId;\r\n this.toId = toId;\r\n var body = { type: 1, content: text };\r\n this.messageBody = utils_1[\"default\"].json(body);\r\n };\r\n MessagePack.prototype.buildCustomerMessagePack = function (fromId, toId, type, obj) {\r\n this.fromId = fromId;\r\n this.toId = toId;\r\n var body = { type: type, content: obj };\r\n this.messageBody = utils_1[\"default\"].json(body);\r\n };\r\n return MessagePack;\r\n}());\r\nexports.MessagePack = MessagePack;\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/im-uniapp/common/imSdk/sdk-bridge.js b/im-uniapp/common/imSdk/sdk-bridge.js
deleted file mode 100644
index 898d6a0..0000000
--- a/im-uniapp/common/imSdk/sdk-bridge.js
+++ /dev/null
@@ -1,17 +0,0 @@
-
-function getIM(){
- // UNIAPP 环境
- if(typeof uni !== 'undefined'){
- return {im:uni['im'], im_webtoolkit:uni['im_webtoolkit']};
- }
- throw Error(" Couldn't not fetch lim.");
-}
-
-
-const lim = {
- im: getIM().im,
-};
-
-export default {
- lim
-}
diff --git a/im-uniapp/common/md5.js b/im-uniapp/common/md5.js
deleted file mode 100644
index 556b11a..0000000
--- a/im-uniapp/common/md5.js
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
-
-/*
- * Configurable variables. You may need to tweak these to be compatible with
- * the server-side, but the defaults work in most cases.
- */
-var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
-var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
-var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
-
-/*
- * These are the functions you'll usually want to call
- * They take string arguments and return either hex or base-64 encoded strings
- */
-function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
-function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
-function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
-function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
-function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
-function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
-
-/*
- * Perform a simple self-test to see if the VM is working
- */
-function md5_vm_test()
-{
- return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
-}
-
-/*
- * Calculate the MD5 of an array of little-endian words, and a bit length
- */
-function core_md5(x, len)
-{
- /* append padding */
- x[len >> 5] |= 0x80 << ((len) % 32);
- x[(((len + 64) >>> 9) << 4) + 14] = len;
-
- var a = 1732584193;
- var b = -271733879;
- var c = -1732584194;
- var d = 271733878;
-
- for(var i = 0; i < x.length; i += 16)
- {
- var olda = a;
- var oldb = b;
- var oldc = c;
- var oldd = d;
-
- a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
- d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
- c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
- b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
- a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
- d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
- c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
- b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
- a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
- d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
- c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
- b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
- a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
- d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
- c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
- b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
-
- a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
- d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
- c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
- b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
- a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
- d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
- c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
- b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
- a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
- d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
- c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
- b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
- a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
- d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
- c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
- b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
-
- a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
- d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
- c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
- b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
- a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
- d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
- c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
- b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
- a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
- d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
- c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
- b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
- a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
- d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
- c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
- b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
-
- a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
- d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
- c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
- b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
- a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
- d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
- c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
- b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
- a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
- d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
- c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
- b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
- a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
- d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
- c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
- b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
-
- a = safe_add(a, olda);
- b = safe_add(b, oldb);
- c = safe_add(c, oldc);
- d = safe_add(d, oldd);
- }
- return Array(a, b, c, d);
-
-}
-
-/*
- * These functions implement the four basic operations the algorithm uses.
- */
-function md5_cmn(q, a, b, x, s, t)
-{
- return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
-}
-function md5_ff(a, b, c, d, x, s, t)
-{
- return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
-}
-function md5_gg(a, b, c, d, x, s, t)
-{
- return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
-}
-function md5_hh(a, b, c, d, x, s, t)
-{
- return md5_cmn(b ^ c ^ d, a, b, x, s, t);
-}
-function md5_ii(a, b, c, d, x, s, t)
-{
- return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
-}
-
-/*
- * Calculate the HMAC-MD5, of a key and some data
- */
-function core_hmac_md5(key, data)
-{
- var bkey = str2binl(key);
- if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
-
- var ipad = Array(16), opad = Array(16);
- for(var i = 0; i < 16; i++)
- {
- ipad[i] = bkey[i] ^ 0x36363636;
- opad[i] = bkey[i] ^ 0x5C5C5C5C;
- }
-
- var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
- return core_md5(opad.concat(hash), 512 + 128);
-}
-
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-function safe_add(x, y)
-{
- var lsw = (x & 0xFFFF) + (y & 0xFFFF);
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
- return (msw << 16) | (lsw & 0xFFFF);
-}
-
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-function bit_rol(num, cnt)
-{
- return (num << cnt) | (num >>> (32 - cnt));
-}
-
-/*
- * Convert a string to an array of little-endian words
- * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
- */
-function str2binl(str)
-{
- var bin = Array();
- var mask = (1 << chrsz) - 1;
- for(var i = 0; i < str.length * chrsz; i += chrsz)
- bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
- return bin;
-}
-
-/*
- * Convert an array of little-endian words to a string
- */
-function binl2str(bin)
-{
- var str = "";
- var mask = (1 << chrsz) - 1;
- for(var i = 0; i < bin.length * 32; i += chrsz)
- str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
- return str;
-}
-
-/*
- * Convert an array of little-endian words to a hex string.
- */
-function binl2hex(binarray)
-{
- var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
- var str = "";
- for(var i = 0; i < binarray.length * 4; i++)
- {
- str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
- hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
- }
- return str;
-}
-
-/*
- * Convert an array of little-endian words to a base-64 string
- */
-function binl2b64(binarray)
-{
- var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- var str = "";
- for(var i = 0; i < binarray.length * 4; i += 3)
- {
- var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
- | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
- | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
- for(var j = 0; j < 4; j++)
- {
- if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
- else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
- }
- }
- return str;
-}
-export default {
- hex_md5
-}
\ No newline at end of file
diff --git a/im-uniapp/common/permission.js b/im-uniapp/common/permission.js
deleted file mode 100644
index d9249d9..0000000
--- a/im-uniapp/common/permission.js
+++ /dev/null
@@ -1,245 +0,0 @@
-/// null = 未请求,1 = 已允许,0 = 拒绝|受限, 2 = 系统未开启
-
-var isIOS
-
-function album() {
- var result = 0;
- var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
- var authStatus = PHPhotoLibrary.authorizationStatus();
- if (authStatus === 0) {
- result = null;
- } else if (authStatus == 3) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(PHPhotoLibrary);
- return result;
-}
-
-function camera() {
- var result = 0;
- var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
- var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
- if (authStatus === 0) {
- result = null;
- } else if (authStatus == 3) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(AVCaptureDevice);
- return result;
-}
-
-function location() {
- var result = 0;
- var cllocationManger = plus.ios.import("CLLocationManager");
- var enable = cllocationManger.locationServicesEnabled();
- var status = cllocationManger.authorizationStatus();
- if (!enable) {
- result = 2;
- } else if (status === 0) {
- result = null;
- } else if (status === 3 || status === 4) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(cllocationManger);
- return result;
-}
-
-function push() {
- var result = 0;
- var UIApplication = plus.ios.import("UIApplication");
- var app = UIApplication.sharedApplication();
- var enabledTypes = 0;
- if (app.currentUserNotificationSettings) {
- var settings = app.currentUserNotificationSettings();
- enabledTypes = settings.plusGetAttribute("types");
- if (enabledTypes == 0) {
- result = 0;
- console.log("推送权限没有开启");
- } else {
- result = 1;
- console.log("已经开启推送功能!")
- }
- plus.ios.deleteObject(settings);
- } else {
- enabledTypes = app.enabledRemoteNotificationTypes();
- if (enabledTypes == 0) {
- result = 3;
- console.log("推送权限没有开启!");
- } else {
- result = 4;
- console.log("已经开启推送功能!")
- }
- }
- plus.ios.deleteObject(app);
- plus.ios.deleteObject(UIApplication);
- return result;
-}
-
-function contact() {
- var result = 0;
- var CNContactStore = plus.ios.import("CNContactStore");
- var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
- if (cnAuthStatus === 0) {
- result = null;
- } else if (cnAuthStatus == 3) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(CNContactStore);
- return result;
-}
-
-function record() {
- var result = null;
- var avaudiosession = plus.ios.import("AVAudioSession");
- var avaudio = avaudiosession.sharedInstance();
- var status = avaudio.recordPermission();
- console.log("permissionStatus:" + status);
- if (status === 1970168948) {
- result = null;
- } else if (status === 1735552628) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(avaudiosession);
- return result;
-}
-
-function calendar() {
- var result = null;
- var EKEventStore = plus.ios.import("EKEventStore");
- var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
- if (ekAuthStatus == 3) {
- result = 1;
- console.log("日历权限已经开启");
- } else {
- console.log("日历权限没有开启");
- }
- plus.ios.deleteObject(EKEventStore);
- return result;
-}
-
-function memo() {
- var result = null;
- var EKEventStore = plus.ios.import("EKEventStore");
- var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
- if (ekAuthStatus == 3) {
- result = 1;
- console.log("备忘录权限已经开启");
- } else {
- console.log("备忘录权限没有开启");
- }
- plus.ios.deleteObject(EKEventStore);
- return result;
-}
-
-
-function requestIOS(permissionID) {
- return new Promise((resolve, reject) => {
- switch (permissionID) {
- case "push":
- resolve(push());
- break;
- case "location":
- resolve(location());
- break;
- case "record":
- resolve(record());
- break;
- case "camera":
- resolve(camera());
- break;
- case "album":
- resolve(album());
- break;
- case "contact":
- resolve(contact());
- break;
- case "calendar":
- resolve(calendar());
- break;
- case "memo":
- resolve(memo());
- break;
- default:
- resolve(0);
- break;
- }
- });
-}
-
-function requestAndroid(permissionID) {
- return new Promise((resolve, reject) => {
- plus.android.requestPermissions(
- [permissionID],
- function(resultObj) {
- var result = 0;
- for (var i = 0; i < resultObj.granted.length; i++) {
- var grantedPermission = resultObj.granted[i];
- console.log('已获取的权限:' + grantedPermission);
- result = 1
- }
- for (var i = 0; i < resultObj.deniedPresent.length; i++) {
- var deniedPresentPermission = resultObj.deniedPresent[i];
- console.log('拒绝本次申请的权限:' + deniedPresentPermission);
- result = 0
- }
- for (var i = 0; i < resultObj.deniedAlways.length; i++) {
- var deniedAlwaysPermission = resultObj.deniedAlways[i];
- console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
- result = -1
- }
- resolve(result);
- },
- function(error) {
- console.log('result error: ' + error.message)
- resolve({
- code: error.code,
- message: error.message
- });
- }
- );
- });
-}
-
-function gotoAppPermissionSetting() {
- if (permission.isIOS) {
- var UIApplication = plus.ios.import("UIApplication");
- var application2 = UIApplication.sharedApplication();
- var NSURL2 = plus.ios.import("NSURL");
- var setting2 = NSURL2.URLWithString("app-settings:");
- application2.openURL(setting2);
- plus.ios.deleteObject(setting2);
- plus.ios.deleteObject(NSURL2);
- plus.ios.deleteObject(application2);
- } else {
- var Intent = plus.android.importClass("android.content.Intent");
- var Settings = plus.android.importClass("android.provider.Settings");
- var Uri = plus.android.importClass("android.net.Uri");
- var mainActivity = plus.android.runtimeMainActivity();
- var intent = new Intent();
- intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
- intent.setData(uri);
- mainActivity.startActivity(intent);
- }
-}
-
-const permission = {
- get isIOS(){
- return typeof isIOS === 'boolean' ? isIOS : (isIOS = uni.getSystemInfoSync().platform === 'ios')
- },
- requestIOS: requestIOS,
- requestAndroid: requestAndroid,
- gotoAppSetting: gotoAppPermissionSetting
-}
-
-export default permission
diff --git a/im-uniapp/common/pinyin.js b/im-uniapp/common/pinyin.js
deleted file mode 100644
index 5021fa8..0000000
--- a/im-uniapp/common/pinyin.js
+++ /dev/null
@@ -1,142 +0,0 @@
-let Pinyin = (function () {
- var Pinyin = function (ops) {
- this.initialize(ops);
- },
-
- options = {
- checkPolyphone: false,
- charcase: 'default'
- };
-
-
- Pinyin.fn = Pinyin.prototype = {
- init: function (ops) {
- this.options = extend(options, ops);
- },
-
- initialize: function (ops) {
- this.init(ops);
- this.char_dict = "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY"
- this.full_dict = { "a": "\u554a\u963f\u9515", "ai": "\u57c3\u6328\u54ce\u5509\u54c0\u7691\u764c\u853c\u77ee\u827e\u788d\u7231\u9698\u8bf6\u6371\u55f3\u55cc\u5ad2\u7477\u66a7\u7839\u953f\u972d", "an": "\u978d\u6c28\u5b89\u4ffa\u6309\u6697\u5cb8\u80fa\u6848\u8c19\u57ef\u63de\u72b4\u5eb5\u6849\u94f5\u9e4c\u9878\u9eef", "ang": "\u80ae\u6602\u76ce", "ao": "\u51f9\u6556\u71ac\u7ff1\u8884\u50b2\u5965\u61ca\u6fb3\u5773\u62d7\u55f7\u5662\u5c99\u5ed2\u9068\u5aaa\u9a9c\u8071\u87af\u93ca\u9ccc\u93d6", "ba": "\u82ad\u634c\u6252\u53ed\u5427\u7b06\u516b\u75a4\u5df4\u62d4\u8dcb\u9776\u628a\u8019\u575d\u9738\u7f62\u7238\u8307\u83dd\u8406\u636d\u5c9c\u705e\u6777\u94af\u7c91\u9c85\u9b43", "bai": "\u767d\u67cf\u767e\u6446\u4f70\u8d25\u62dc\u7a17\u859c\u63b0\u97b4", "ban": "\u6591\u73ed\u642c\u6273\u822c\u9881\u677f\u7248\u626e\u62cc\u4f34\u74e3\u534a\u529e\u7eca\u962a\u5742\u8c73\u94a3\u7622\u764d\u8228", "bang": "\u90a6\u5e2e\u6886\u699c\u8180\u7ed1\u68d2\u78c5\u868c\u9551\u508d\u8c24\u84a1\u8783", "bao": "\u82de\u80de\u5305\u8912\u96f9\u4fdd\u5821\u9971\u5b9d\u62b1\u62a5\u66b4\u8c79\u9c8d\u7206\u52f9\u8446\u5b80\u5b62\u7172\u9e28\u8913\u8db5\u9f85", "bo": "\u5265\u8584\u73bb\u83e0\u64ad\u62e8\u94b5\u6ce2\u535a\u52c3\u640f\u94c2\u7b94\u4f2f\u5e1b\u8236\u8116\u818a\u6e24\u6cca\u9a73\u4eb3\u8543\u5575\u997d\u6a97\u64d8\u7934\u94b9\u9e41\u7c38\u8ddb", "bei": "\u676f\u7891\u60b2\u5351\u5317\u8f88\u80cc\u8d1d\u94a1\u500d\u72c8\u5907\u60eb\u7119\u88ab\u5b5b\u9642\u90b6\u57e4\u84d3\u5457\u602b\u6096\u789a\u9e4e\u8919\u943e", "ben": "\u5954\u82ef\u672c\u7b28\u755a\u574c\u951b", "beng": "\u5d29\u7ef7\u752d\u6cf5\u8e66\u8ff8\u552a\u5623\u750f", "bi": "\u903c\u9f3b\u6bd4\u9119\u7b14\u5f7c\u78a7\u84d6\u853d\u6bd5\u6bd9\u6bd6\u5e01\u5e87\u75f9\u95ed\u655d\u5f0a\u5fc5\u8f9f\u58c1\u81c2\u907f\u965b\u5315\u4ef3\u4ffe\u8298\u835c\u8378\u5421\u54d4\u72f4\u5eb3\u610e\u6ed7\u6fde\u5f3c\u59a3\u5a62\u5b16\u74a7\u8d32\u7540\u94cb\u79d5\u88e8\u7b5a\u7b85\u7be6\u822d\u895e\u8df8\u9ac0", "bian": "\u97ad\u8fb9\u7f16\u8d2c\u6241\u4fbf\u53d8\u535e\u8fa8\u8fa9\u8fab\u904d\u533e\u5f01\u82c4\u5fed\u6c74\u7f0f\u7178\u782d\u78a5\u7a39\u7a86\u8759\u7b3e\u9cca", "biao": "\u6807\u5f6a\u8198\u8868\u5a4a\u9aa0\u98d1\u98d9\u98da\u706c\u9556\u9573\u762d\u88f1\u9cd4", "bie": "\u9cd6\u618b\u522b\u762a\u8e69\u9cd8", "bin": "\u5f6c\u658c\u6fd2\u6ee8\u5bbe\u6448\u50a7\u6d5c\u7f24\u73a2\u6ba1\u8191\u9554\u9acc\u9b13", "bing": "\u5175\u51b0\u67c4\u4e19\u79c9\u997c\u70b3\u75c5\u5e76\u7980\u90b4\u6452\u7ee0\u678b\u69df\u71f9", "bu": "\u6355\u535c\u54fa\u8865\u57e0\u4e0d\u5e03\u6b65\u7c3f\u90e8\u6016\u62ca\u535f\u900b\u74ff\u6661\u949a\u91ad", "ca": "\u64e6\u5693\u7924", "cai": "\u731c\u88c1\u6750\u624d\u8d22\u776c\u8e29\u91c7\u5f69\u83dc\u8521", "can": "\u9910\u53c2\u8695\u6b8b\u60ed\u60e8\u707f\u9a96\u74a8\u7cb2\u9eea", "cang": "\u82cd\u8231\u4ed3\u6ca7\u85cf\u4f27", "cao": "\u64cd\u7cd9\u69fd\u66f9\u8349\u8279\u5608\u6f15\u87ac\u825a", "ce": "\u5395\u7b56\u4fa7\u518c\u6d4b\u5202\u5e3b\u607b", "ceng": "\u5c42\u8e6d\u564c", "cha": "\u63d2\u53c9\u832c\u8336\u67e5\u78b4\u643d\u5bdf\u5c94\u5dee\u8be7\u7339\u9987\u6c4a\u59f9\u6748\u6942\u69ce\u6aab\u9497\u9538\u9572\u8869", "chai": "\u62c6\u67f4\u8c7a\u4faa\u8308\u7625\u867f\u9f87", "chan": "\u6400\u63ba\u8749\u998b\u8c17\u7f20\u94f2\u4ea7\u9610\u98a4\u5181\u8c04\u8c36\u8487\u5edb\u5fcf\u6f7a\u6fb6\u5b71\u7fbc\u5a75\u5b17\u9aa3\u89c7\u7985\u9561\u88e3\u87fe\u8e94", "chang": "\u660c\u7316\u573a\u5c1d\u5e38\u957f\u507f\u80a0\u5382\u655e\u7545\u5531\u5021\u4f25\u9b2f\u82cc\u83d6\u5f9c\u6005\u60dd\u960a\u5a3c\u5ae6\u6636\u6c05\u9cb3", "chao": "\u8d85\u6284\u949e\u671d\u5632\u6f6e\u5de2\u5435\u7092\u600a\u7ec9\u6641\u8016", "che": "\u8f66\u626f\u64a4\u63a3\u5f7b\u6f88\u577c\u5c6e\u7817", "chen": "\u90f4\u81e3\u8fb0\u5c18\u6668\u5ff1\u6c89\u9648\u8d81\u886c\u79f0\u8c0c\u62bb\u55d4\u5bb8\u741b\u6987\u809c\u80c2\u789c\u9f80", "cheng": "\u6491\u57ce\u6a59\u6210\u5448\u4e58\u7a0b\u60e9\u6f84\u8bda\u627f\u901e\u9a8b\u79e4\u57d5\u5d4a\u5fb5\u6d48\u67a8\u67fd\u6a18\u665f\u584d\u77a0\u94d6\u88ce\u86cf\u9172", "chi": "\u5403\u75f4\u6301\u5319\u6c60\u8fdf\u5f1b\u9a70\u803b\u9f7f\u4f88\u5c3a\u8d64\u7fc5\u65a5\u70bd\u50ba\u5880\u82aa\u830c\u640b\u53f1\u54e7\u557b\u55e4\u5f73\u996c\u6cb2\u5ab8\u6555\u80dd\u7719\u7735\u9e31\u761b\u892b\u86a9\u87ad\u7b1e\u7bea\u8c49\u8e05\u8e1f\u9b51", "chong": "\u5145\u51b2\u866b\u5d07\u5ba0\u833a\u5fe1\u61a7\u94f3\u825f", "chou": "\u62bd\u916c\u7574\u8e0c\u7a20\u6101\u7b79\u4ec7\u7ef8\u7785\u4e11\u4fe6\u5733\u5e31\u60c6\u6eb4\u59af\u7633\u96e0\u9c8b", "chu": "\u81ed\u521d\u51fa\u6a71\u53a8\u8e87\u9504\u96cf\u6ec1\u9664\u695a\u7840\u50a8\u77d7\u6410\u89e6\u5904\u4e8d\u520d\u61b7\u7ecc\u6775\u696e\u6a17\u870d\u8e70\u9edc", "chuan": "\u63e3\u5ddd\u7a7f\u693d\u4f20\u8239\u5598\u4e32\u63be\u821b\u60f4\u9044\u5ddb\u6c1a\u948f\u9569\u8221", "chuang": "\u75ae\u7a97\u5e62\u5e8a\u95ef\u521b\u6006", "chui": "\u5439\u708a\u6376\u9524\u5782\u9672\u68f0\u69cc", "chun": "\u6625\u693f\u9187\u5507\u6df3\u7eaf\u8822\u4fc3\u83bc\u6c8c\u80ab\u6710\u9e51\u877d", "chuo": "\u6233\u7ef0\u851f\u8fb6\u8f8d\u955e\u8e14\u9f8a", "ci": "\u75b5\u8328\u78c1\u96cc\u8f9e\u6148\u74f7\u8bcd\u6b64\u523a\u8d50\u6b21\u8360\u5472\u5d6f\u9e5a\u8785\u7ccd\u8d91", "cong": "\u806a\u8471\u56f1\u5306\u4ece\u4e1b\u506c\u82c1\u6dd9\u9aa2\u742e\u7481\u679e", "cu": "\u51d1\u7c97\u918b\u7c07\u731d\u6b82\u8e59", "cuan": "\u8e7f\u7be1\u7a9c\u6c46\u64ba\u6615\u7228", "cui": "\u6467\u5d14\u50ac\u8106\u7601\u7cb9\u6dec\u7fe0\u8403\u60b4\u7480\u69b1\u96b9", "cun": "\u6751\u5b58\u5bf8\u78cb\u5fd6\u76b4", "cuo": "\u64ae\u6413\u63aa\u632b\u9519\u539d\u811e\u9509\u77ec\u75e4\u9e7e\u8e49\u8e9c", "da": "\u642d\u8fbe\u7b54\u7629\u6253\u5927\u8037\u54d2\u55d2\u601b\u59b2\u75b8\u8921\u7b2a\u977c\u9791", "dai": "\u5446\u6b79\u50a3\u6234\u5e26\u6b86\u4ee3\u8d37\u888b\u5f85\u902e\u6020\u57ed\u7519\u5454\u5cb1\u8fe8\u902f\u9a80\u7ed0\u73b3\u9edb", "dan": "\u803d\u62c5\u4e39\u5355\u90f8\u63b8\u80c6\u65e6\u6c2e\u4f46\u60ee\u6de1\u8bde\u5f39\u86cb\u4ebb\u510b\u5369\u840f\u5556\u6fb9\u6a90\u6b9a\u8d55\u7708\u7605\u8043\u7baa", "dang": "\u5f53\u6321\u515a\u8361\u6863\u8c20\u51fc\u83ea\u5b95\u7800\u94db\u88c6", "dao": "\u5200\u6363\u8e48\u5012\u5c9b\u7977\u5bfc\u5230\u7a3b\u60bc\u9053\u76d7\u53e8\u5541\u5fc9\u6d2e\u6c18\u7118\u5fd1\u7e9b", "de": "\u5fb7\u5f97\u7684\u951d", "deng": "\u8e6c\u706f\u767b\u7b49\u77aa\u51f3\u9093\u5654\u5d9d\u6225\u78f4\u956b\u7c26", "di": "\u5824\u4f4e\u6ef4\u8fea\u654c\u7b1b\u72c4\u6da4\u7fdf\u5ae1\u62b5\u5e95\u5730\u8482\u7b2c\u5e1d\u5f1f\u9012\u7f14\u6c10\u7c74\u8bcb\u8c1b\u90b8\u577b\u839c\u837b\u5600\u5a23\u67e2\u68e3\u89cc\u7825\u78b2\u7747\u955d\u7f9d\u9ab6", "dian": "\u98a0\u6382\u6ec7\u7898\u70b9\u5178\u975b\u57ab\u7535\u4f43\u7538\u5e97\u60e6\u5960\u6dc0\u6bbf\u4e36\u963d\u576b\u57dd\u5dc5\u73b7\u765c\u766b\u7c1f\u8e2e", "diao": "\u7889\u53fc\u96d5\u51cb\u5201\u6389\u540a\u9493\u8c03\u8f7a\u94de\u8729\u7c9c\u8c82", "die": "\u8dcc\u7239\u789f\u8776\u8fed\u8c0d\u53e0\u4f5a\u57a4\u581e\u63f2\u558b\u6e2b\u8f76\u7252\u74de\u8936\u800b\u8e40\u9cbd\u9cce", "ding": "\u4e01\u76ef\u53ee\u9489\u9876\u9f0e\u952d\u5b9a\u8ba2\u4e22\u4ec3\u5576\u738e\u815a\u7887\u753a\u94e4\u7594\u8035\u914a", "dong": "\u4e1c\u51ac\u8463\u61c2\u52a8\u680b\u4f97\u606b\u51bb\u6d1e\u578c\u549a\u5cbd\u5cd2\u5902\u6c21\u80e8\u80f4\u7850\u9e2b", "dou": "\u515c\u6296\u6597\u9661\u8c46\u9017\u75d8\u8538\u94ad\u7aa6\u7aac\u86aa\u7bfc\u9161", "du": "\u90fd\u7763\u6bd2\u728a\u72ec\u8bfb\u5835\u7779\u8d4c\u675c\u9540\u809a\u5ea6\u6e21\u5992\u828f\u561f\u6e0e\u691f\u6a50\u724d\u8839\u7b03\u9ad1\u9ee9", "duan": "\u7aef\u77ed\u953b\u6bb5\u65ad\u7f0e\u5f56\u6934\u7145\u7c16", "dui": "\u5806\u5151\u961f\u5bf9\u603c\u619d\u7893", "dun": "\u58a9\u5428\u8e72\u6566\u987f\u56e4\u949d\u76fe\u9041\u7096\u7818\u7905\u76f9\u9566\u8db8", "duo": "\u6387\u54c6\u591a\u593a\u579b\u8eb2\u6735\u8dfa\u8235\u5241\u60f0\u5815\u5484\u54da\u7f0d\u67c1\u94ce\u88f0\u8e31", "e": "\u86fe\u5ce8\u9e45\u4fc4\u989d\u8bb9\u5a25\u6076\u5384\u627c\u904f\u9102\u997f\u5669\u8c14\u57a9\u57ad\u82ca\u83aa\u843c\u5443\u6115\u5c59\u5a40\u8f6d\u66f7\u816d\u786a\u9507\u9537\u9e57\u989a\u9cc4", "en": "\u6069\u84bd\u6441\u5514\u55ef", "er": "\u800c\u513f\u8033\u5c14\u9975\u6d31\u4e8c\u8d30\u8fe9\u73e5\u94d2\u9e38\u9c95", "fa": "\u53d1\u7f5a\u7b4f\u4f10\u4e4f\u9600\u6cd5\u73d0\u57a1\u781d", "fan": "\u85e9\u5e06\u756a\u7ffb\u6a0a\u77fe\u9492\u7e41\u51e1\u70e6\u53cd\u8fd4\u8303\u8d29\u72af\u996d\u6cdb\u8629\u5e61\u72ad\u68b5\u6535\u71d4\u7548\u8e6f", "fang": "\u574a\u82b3\u65b9\u80aa\u623f\u9632\u59a8\u4eff\u8bbf\u7eba\u653e\u531a\u90a1\u5f77\u94ab\u822b\u9c82", "fei": "\u83f2\u975e\u5561\u98de\u80a5\u532a\u8bfd\u5420\u80ba\u5e9f\u6cb8\u8d39\u82be\u72d2\u60b1\u6ddd\u5983\u7ecb\u7eef\u69a7\u8153\u6590\u6249\u7953\u7829\u9544\u75f1\u871a\u7bda\u7fe1\u970f\u9cb1", "fen": "\u82ac\u915a\u5429\u6c1b\u5206\u7eb7\u575f\u711a\u6c7e\u7c89\u594b\u4efd\u5fff\u6124\u7caa\u507e\u7035\u68fc\u610d\u9cbc\u9f22", "feng": "\u4e30\u5c01\u67ab\u8702\u5cf0\u950b\u98ce\u75af\u70fd\u9022\u51af\u7f1d\u8bbd\u5949\u51e4\u4ff8\u9146\u8451\u6ca3\u781c", "fu": "\u4f5b\u5426\u592b\u6577\u80a4\u5b75\u6276\u62c2\u8f90\u5e45\u6c1f\u7b26\u4f0f\u4fd8\u670d\u6d6e\u6daa\u798f\u88b1\u5f17\u752b\u629a\u8f85\u4fef\u91dc\u65a7\u812f\u8151\u5e9c\u8150\u8d74\u526f\u8986\u8d4b\u590d\u5085\u4ed8\u961c\u7236\u8179\u8d1f\u5bcc\u8ba3\u9644\u5987\u7f1a\u5490\u5310\u51eb\u90db\u8299\u82fb\u832f\u83a9\u83d4\u544b\u5e5e\u6ecf\u8274\u5b5a\u9a78\u7ec2\u6874\u8d59\u9efb\u9efc\u7f58\u7a03\u99a5\u864d\u86a8\u8709\u8760\u876e\u9eb8\u8dba\u8dd7\u9cc6", "ga": "\u5676\u560e\u86e4\u5c2c\u5477\u5c15\u5c1c\u65ee\u9486", "gai": "\u8be5\u6539\u6982\u9499\u76d6\u6e89\u4e10\u9654\u5793\u6224\u8d45\u80f2", "gan": "\u5e72\u7518\u6746\u67d1\u7aff\u809d\u8d76\u611f\u79c6\u6562\u8d63\u5769\u82f7\u5c34\u64c0\u6cd4\u6de6\u6f89\u7ec0\u6a44\u65f0\u77f8\u75b3\u9150", "gang": "\u5188\u521a\u94a2\u7f38\u809b\u7eb2\u5c97\u6e2f\u6206\u7f61\u9883\u7b7b", "gong": "\u6760\u5de5\u653b\u529f\u606d\u9f9a\u4f9b\u8eac\u516c\u5bab\u5f13\u5de9\u6c5e\u62f1\u8d21\u5171\u857b\u5efe\u54a3\u73d9\u80b1\u86a3\u86e9\u89e5", "gao": "\u7bd9\u768b\u9ad8\u818f\u7f94\u7cd5\u641e\u9550\u7a3f\u544a\u777e\u8bf0\u90dc\u84bf\u85c1\u7f1f\u69d4\u69c1\u6772\u9506", "ge": "\u54e5\u6b4c\u6401\u6208\u9e3d\u80f3\u7599\u5272\u9769\u845b\u683c\u9601\u9694\u94ec\u4e2a\u5404\u9b32\u4ee1\u54ff\u5865\u55dd\u7ea5\u643f\u8188\u784c\u94ea\u9549\u88bc\u988c\u867c\u8238\u9abc\u9ac2", "gei": "\u7ed9", "gen": "\u6839\u8ddf\u4e98\u831b\u54cf\u826e", "geng": "\u8015\u66f4\u5e9a\u7fb9\u57c2\u803f\u6897\u54fd\u8d53\u9ca0", "gou": "\u94a9\u52fe\u6c9f\u82df\u72d7\u57a2\u6784\u8d2d\u591f\u4f5d\u8bdf\u5ca3\u9058\u5abe\u7f11\u89cf\u5f40\u9e32\u7b31\u7bdd\u97b2", "gu": "\u8f9c\u83c7\u5495\u7b8d\u4f30\u6cbd\u5b64\u59d1\u9f13\u53e4\u86ca\u9aa8\u8c37\u80a1\u6545\u987e\u56fa\u96c7\u560f\u8bc2\u83f0\u54cc\u5d2e\u6c69\u688f\u8f71\u726f\u727f\u80cd\u81cc\u6bc2\u77bd\u7f5f\u94b4\u9522\u74e0\u9e2a\u9e44\u75fc\u86c4\u9164\u89da\u9cb4\u9ab0\u9e58", "gua": "\u522e\u74dc\u5250\u5be1\u6302\u8902\u5366\u8bd6\u5471\u681d\u9e39", "guai": "\u4e56\u62d0\u602a\u54d9", "guan": "\u68fa\u5173\u5b98\u51a0\u89c2\u7ba1\u9986\u7f50\u60ef\u704c\u8d2f\u500c\u839e\u63bc\u6dab\u76e5\u9e73\u9ccf", "guang": "\u5149\u5e7f\u901b\u72b7\u6844\u80f1\u7592", "gui": "\u7470\u89c4\u572d\u7845\u5f52\u9f9f\u95fa\u8f68\u9b3c\u8be1\u7678\u6842\u67dc\u8dea\u8d35\u523d\u5326\u523f\u5e8b\u5b84\u59ab\u6867\u7085\u6677\u7688\u7c0b\u9c91\u9cdc", "gun": "\u8f8a\u6eda\u68cd\u4e28\u886e\u7ef2\u78d9\u9ca7", "guo": "\u9505\u90ed\u56fd\u679c\u88f9\u8fc7\u9998\u8803\u57da\u63b4\u5459\u56d7\u5e3c\u5d1e\u7313\u6901\u8662\u951e\u8052\u872e\u873e\u8748", "ha": "\u54c8", "hai": "\u9ab8\u5b69\u6d77\u6c26\u4ea5\u5bb3\u9a87\u54b4\u55e8\u988f\u91a2", "han": "\u9163\u61a8\u90af\u97e9\u542b\u6db5\u5bd2\u51fd\u558a\u7f55\u7ff0\u64bc\u634d\u65f1\u61be\u608d\u710a\u6c57\u6c49\u9097\u83e1\u6496\u961a\u701a\u6657\u7113\u9894\u86b6\u9f3e", "hen": "\u592f\u75d5\u5f88\u72e0\u6068", "hang": "\u676d\u822a\u6c86\u7ed7\u73e9\u6841", "hao": "\u58d5\u568e\u8c6a\u6beb\u90dd\u597d\u8017\u53f7\u6d69\u8585\u55e5\u5686\u6fe0\u704f\u660a\u7693\u98a2\u869d", "he": "\u5475\u559d\u8377\u83cf\u6838\u79be\u548c\u4f55\u5408\u76d2\u8c89\u9602\u6cb3\u6db8\u8d6b\u8910\u9e64\u8d3a\u8bc3\u52be\u58d1\u85ff\u55d1\u55ec\u9616\u76cd\u86b5\u7fee", "hei": "\u563f\u9ed1", "heng": "\u54fc\u4ea8\u6a2a\u8861\u6052\u8a07\u8605", "hong": "\u8f70\u54c4\u70d8\u8679\u9e3f\u6d2a\u5b8f\u5f18\u7ea2\u9ec9\u8ba7\u836d\u85a8\u95f3\u6cd3", "hou": "\u5589\u4faf\u7334\u543c\u539a\u5019\u540e\u5820\u5f8c\u9005\u760a\u7bcc\u7cc7\u9c8e\u9aba", "hu": "\u547c\u4e4e\u5ffd\u745a\u58f6\u846b\u80e1\u8774\u72d0\u7cca\u6e56\u5f27\u864e\u552c\u62a4\u4e92\u6caa\u6237\u51b1\u553f\u56eb\u5cb5\u7322\u6019\u60da\u6d52\u6ef9\u7425\u69f2\u8f77\u89f3\u70c0\u7173\u623d\u6248\u795c\u9e55\u9e71\u7b0f\u9190\u659b", "hua": "\u82b1\u54d7\u534e\u733e\u6ed1\u753b\u5212\u5316\u8bdd\u5290\u6d4d\u9a85\u6866\u94e7\u7a1e", "huai": "\u69d0\u5f8a\u6000\u6dee\u574f\u8fd8\u8e1d", "huan": "\u6b22\u73af\u6853\u7f13\u6362\u60a3\u5524\u75ea\u8c62\u7115\u6da3\u5ba6\u5e7b\u90c7\u5942\u57b8\u64d0\u571c\u6d39\u6d63\u6f36\u5bf0\u902d\u7f33\u953e\u9ca9\u9b1f", "huang": "\u8352\u614c\u9ec4\u78fa\u8757\u7c27\u7687\u51f0\u60f6\u714c\u6643\u5e4c\u604d\u8c0e\u968d\u5fa8\u6e5f\u6f62\u9051\u749c\u8093\u7640\u87e5\u7bc1\u9cc7", "hui": "\u7070\u6325\u8f89\u5fbd\u6062\u86d4\u56de\u6bc1\u6094\u6167\u5349\u60e0\u6666\u8d3f\u79fd\u4f1a\u70e9\u6c47\u8bb3\u8bf2\u7ed8\u8bd9\u8334\u835f\u8559\u54d5\u5599\u96b3\u6d04\u5f57\u7f0b\u73f2\u6656\u605a\u867a\u87ea\u9ebe", "hun": "\u8364\u660f\u5a5a\u9b42\u6d51\u6df7\u8be8\u9984\u960d\u6eb7\u7f17", "huo": "\u8c41\u6d3b\u4f19\u706b\u83b7\u6216\u60d1\u970d\u8d27\u7978\u6509\u56af\u5925\u94ac\u952a\u956c\u8020\u8816", "ji": "\u51fb\u573e\u57fa\u673a\u7578\u7a3d\u79ef\u7b95\u808c\u9965\u8ff9\u6fc0\u8ba5\u9e21\u59ec\u7ee9\u7f09\u5409\u6781\u68d8\u8f91\u7c4d\u96c6\u53ca\u6025\u75be\u6c72\u5373\u5ac9\u7ea7\u6324\u51e0\u810a\u5df1\u84df\u6280\u5180\u5b63\u4f0e\u796d\u5242\u60b8\u6d4e\u5bc4\u5bc2\u8ba1\u8bb0\u65e2\u5fcc\u9645\u5993\u7ee7\u7eaa\u5c45\u4e0c\u4e69\u525e\u4f76\u4f74\u8114\u58bc\u82a8\u82b0\u8401\u84ba\u857a\u638e\u53fd\u54ad\u54dc\u5527\u5c8c\u5d74\u6d0e\u5f50\u5c50\u9aa5\u757f\u7391\u696b\u6b9b\u621f\u6222\u8d4d\u89ca\u7284\u9f51\u77f6\u7f81\u5d47\u7a37\u7620\u7635\u866e\u7b08\u7b04\u66a8\u8dfb\u8dfd\u9701\u9c9a\u9cab\u9afb\u9e82", "jia": "\u5609\u67b7\u5939\u4f73\u5bb6\u52a0\u835a\u988a\u8d3e\u7532\u94be\u5047\u7a3c\u4ef7\u67b6\u9a7e\u5ac1\u4f3d\u90cf\u62ee\u5cac\u6d43\u8fe6\u73c8\u621b\u80db\u605d\u94d7\u9553\u75c2\u86f1\u7b33\u8888\u8dcf", "jian": "\u6b7c\u76d1\u575a\u5c16\u7b3a\u95f4\u714e\u517c\u80a9\u8270\u5978\u7f04\u8327\u68c0\u67ec\u78b1\u7877\u62e3\u6361\u7b80\u4fed\u526a\u51cf\u8350\u69db\u9274\u8df5\u8d31\u89c1\u952e\u7bad\u4ef6\u5065\u8230\u5251\u996f\u6e10\u6e85\u6da7\u5efa\u50ed\u8c0f\u8c2b\u83c5\u84b9\u641b\u56dd\u6e54\u8e47\u8b07\u7f23\u67a7\u67d9\u6957\u620b\u622c\u726e\u728d\u6bfd\u8171\u7751\u950f\u9e63\u88e5\u7b15\u7bb4\u7fe6\u8dbc\u8e3a\u9ca3\u97af", "jiang": "\u50f5\u59dc\u5c06\u6d46\u6c5f\u7586\u848b\u6868\u5956\u8bb2\u5320\u9171\u964d\u8333\u6d1a\u7edb\u7f30\u729f\u7913\u8029\u7ce8\u8c47", "jiao": "\u8549\u6912\u7901\u7126\u80f6\u4ea4\u90ca\u6d47\u9a84\u5a07\u56bc\u6405\u94f0\u77eb\u4fa5\u811a\u72e1\u89d2\u997a\u7f34\u7ede\u527f\u6559\u9175\u8f7f\u8f83\u53eb\u4f7c\u50ec\u832d\u6322\u564d\u5ce4\u5fbc\u59e3\u7e9f\u656b\u768e\u9e6a\u86df\u91ae\u8de4\u9c9b", "jie": "\u7a96\u63ed\u63a5\u7686\u79f8\u8857\u9636\u622a\u52ab\u8282\u6854\u6770\u6377\u776b\u7aed\u6d01\u7ed3\u89e3\u59d0\u6212\u85c9\u82a5\u754c\u501f\u4ecb\u75a5\u8beb\u5c4a\u5048\u8ba6\u8bd8\u5588\u55df\u736c\u5a55\u5b51\u6840\u7352\u78a3\u9534\u7596\u88b7\u9889\u86a7\u7faf\u9c92\u9ab1\u9aeb", "jin": "\u5dfe\u7b4b\u65a4\u91d1\u4eca\u6d25\u895f\u7d27\u9526\u4ec5\u8c28\u8fdb\u9773\u664b\u7981\u8fd1\u70ec\u6d78\u5c3d\u537a\u8369\u5807\u5664\u9991\u5ed1\u5997\u7f19\u747e\u69ff\u8d46\u89d0\u9485\u9513\u887f\u77dc", "jing": "\u52b2\u8346\u5162\u830e\u775b\u6676\u9cb8\u4eac\u60ca\u7cbe\u7cb3\u7ecf\u4e95\u8b66\u666f\u9888\u9759\u5883\u656c\u955c\u5f84\u75c9\u9756\u7adf\u7ade\u51c0\u522d\u5106\u9631\u83c1\u734d\u61ac\u6cfe\u8ff3\u5f2a\u5a67\u80bc\u80eb\u8148\u65cc", "jiong": "\u70af\u7a98\u5182\u8fe5\u6243", "jiu": "\u63ea\u7a76\u7ea0\u7396\u97ed\u4e45\u7078\u4e5d\u9152\u53a9\u6551\u65e7\u81fc\u8205\u548e\u5c31\u759a\u50e6\u557e\u9604\u67e9\u6855\u9e6b\u8d73\u9b0f", "ju": "\u97a0\u62d8\u72d9\u75bd\u9a79\u83ca\u5c40\u5480\u77e9\u4e3e\u6cae\u805a\u62d2\u636e\u5de8\u5177\u8ddd\u8e1e\u952f\u4ff1\u53e5\u60e7\u70ac\u5267\u5028\u8bb5\u82e3\u82f4\u8392\u63ac\u907d\u5c66\u741a\u67b8\u6910\u6998\u6989\u6a58\u728b\u98d3\u949c\u9514\u7aad\u88fe\u8d84\u91b5\u8e3d\u9f83\u96ce\u97ab", "juan": "\u6350\u9e43\u5a1f\u5026\u7737\u5377\u7ee2\u9104\u72f7\u6d93\u684a\u8832\u9529\u954c\u96bd", "jue": "\u6485\u652b\u6289\u6398\u5014\u7235\u89c9\u51b3\u8bc0\u7edd\u53a5\u5282\u8c32\u77cd\u8568\u5658\u5d1b\u7357\u5b53\u73cf\u6877\u6a5b\u721d\u9562\u8e76\u89d6", "jun": "\u5747\u83cc\u94a7\u519b\u541b\u5cfb\u4fca\u7ae3\u6d5a\u90e1\u9a8f\u6343\u72fb\u76b2\u7b60\u9e87", "ka": "\u5580\u5496\u5361\u4f67\u5494\u80e9", "ke": "\u54af\u5777\u82db\u67ef\u68f5\u78d5\u9897\u79d1\u58f3\u54b3\u53ef\u6e34\u514b\u523b\u5ba2\u8bfe\u5ca2\u606a\u6e98\u9a92\u7f02\u73c2\u8f72\u6c2a\u778c\u94b6\u75b4\u7aa0\u874c\u9ac1", "kai": "\u5f00\u63e9\u6977\u51ef\u6168\u5240\u57b2\u8488\u5ffe\u607a\u94e0\u950e", "kan": "\u520a\u582a\u52d8\u574e\u780d\u770b\u4f83\u51f5\u83b0\u83b6\u6221\u9f9b\u77b0", "kang": "\u5eb7\u6177\u7ce0\u625b\u6297\u4ea2\u7095\u5751\u4f09\u95f6\u94aa", "kao": "\u8003\u62f7\u70e4\u9760\u5c3b\u6832\u7292\u94d0", "ken": "\u80af\u5543\u57a6\u6073\u57a0\u88c9\u9880", "keng": "\u542d\u5fd0\u94ff", "kong": "\u7a7a\u6050\u5b54\u63a7\u5025\u5d06\u7b9c", "kou": "\u62a0\u53e3\u6263\u5bc7\u82a4\u853b\u53e9\u770d\u7b58", "ku": "\u67af\u54ed\u7a9f\u82e6\u9177\u5e93\u88e4\u5233\u5800\u55be\u7ed4\u9ab7", "kua": "\u5938\u57ae\u630e\u8de8\u80ef\u4f89", "kuai": "\u5757\u7b77\u4fa9\u5feb\u84af\u90d0\u8489\u72ef\u810d", "kuan": "\u5bbd\u6b3e\u9acb", "kuang": "\u5321\u7b50\u72c2\u6846\u77ff\u7736\u65f7\u51b5\u8bd3\u8bf3\u909d\u5739\u593c\u54d0\u7ea9\u8d36", "kui": "\u4e8f\u76d4\u5cbf\u7aa5\u8475\u594e\u9b41\u5080\u9988\u6127\u6e83\u9997\u532e\u5914\u9697\u63c6\u55b9\u559f\u609d\u6126\u9615\u9035\u668c\u777d\u8069\u8770\u7bd1\u81fe\u8dec", "kun": "\u5764\u6606\u6346\u56f0\u6083\u9603\u7428\u951f\u918c\u9cb2\u9ae1", "kuo": "\u62ec\u6269\u5ed3\u9614\u86de", "la": "\u5783\u62c9\u5587\u8721\u814a\u8fa3\u5566\u524c\u647a\u908b\u65ef\u782c\u760c", "lai": "\u83b1\u6765\u8d56\u5d03\u5f95\u6d9e\u6fd1\u8d49\u7750\u94fc\u765e\u7c41", "lan": "\u84dd\u5a6a\u680f\u62e6\u7bee\u9611\u5170\u6f9c\u8c30\u63fd\u89c8\u61d2\u7f06\u70c2\u6ee5\u5549\u5c9a\u61d4\u6f24\u6984\u6593\u7f71\u9567\u8934", "lang": "\u7405\u6994\u72fc\u5eca\u90ce\u6717\u6d6a\u83a8\u8497\u5577\u9606\u9512\u7a02\u8782", "lao": "\u635e\u52b3\u7262\u8001\u4f6c\u59e5\u916a\u70d9\u6d9d\u5520\u5d02\u6833\u94d1\u94f9\u75e8\u91aa", "le": "\u52d2\u4e50\u808b\u4ec2\u53fb\u561e\u6cd0\u9cd3", "lei": "\u96f7\u956d\u857e\u78ca\u7d2f\u5121\u5792\u64c2\u7c7b\u6cea\u7fb8\u8bd4\u837d\u54a7\u6f2f\u5ad8\u7f27\u6a91\u8012\u9179", "ling": "\u68f1\u51b7\u62ce\u73b2\u83f1\u96f6\u9f84\u94c3\u4f36\u7f9a\u51cc\u7075\u9675\u5cad\u9886\u53e6\u4ee4\u9143\u5844\u82d3\u5464\u56f9\u6ce0\u7eeb\u67c3\u68c2\u74f4\u8046\u86c9\u7fce\u9cae", "leng": "\u695e\u6123", "li": "\u5398\u68a8\u7281\u9ece\u7bf1\u72f8\u79bb\u6f13\u7406\u674e\u91cc\u9ca4\u793c\u8389\u8354\u540f\u6817\u4e3d\u5389\u52b1\u783e\u5386\u5229\u5088\u4f8b\u4fd0\u75e2\u7acb\u7c92\u6ca5\u96b6\u529b\u7483\u54e9\u4fea\u4fda\u90e6\u575c\u82c8\u8385\u84e0\u85dc\u6369\u5456\u5533\u55b1\u7301\u6ea7\u6fa7\u9026\u5a0c\u5ae0\u9a8a\u7f21\u73de\u67a5\u680e\u8f79\u623e\u783a\u8a48\u7f79\u9502\u9e42\u75a0\u75ac\u86ce\u870a\u8821\u7b20\u7be5\u7c9d\u91b4\u8dde\u96f3\u9ca1\u9ce2\u9ee7", "lian": "\u4fe9\u8054\u83b2\u8fde\u9570\u5ec9\u601c\u6d9f\u5e18\u655b\u8138\u94fe\u604b\u70bc\u7ec3\u631b\u8539\u5941\u6f4b\u6fc2\u5a08\u740f\u695d\u6b93\u81c1\u81a6\u88e2\u880a\u9ca2", "liang": "\u7cae\u51c9\u6881\u7cb1\u826f\u4e24\u8f86\u91cf\u667e\u4eae\u8c05\u589a\u690b\u8e09\u9753\u9b49", "liao": "\u64a9\u804a\u50da\u7597\u71ce\u5be5\u8fbd\u6f66\u4e86\u6482\u9563\u5ed6\u6599\u84fc\u5c25\u5639\u7360\u5bee\u7f2d\u948c\u9e69\u8022", "lie": "\u5217\u88c2\u70c8\u52a3\u730e\u51bd\u57d2\u6d0c\u8d94\u8e90\u9b23", "lin": "\u7433\u6797\u78f7\u9716\u4e34\u90bb\u9cde\u6dcb\u51db\u8d41\u541d\u853a\u5d99\u5eea\u9074\u6aa9\u8f9a\u77b5\u7cbc\u8e8f\u9e9f", "liu": "\u6e9c\u7409\u69b4\u786b\u998f\u7559\u5218\u7624\u6d41\u67f3\u516d\u62a1\u507b\u848c\u6cd6\u6d4f\u905b\u9a9d\u7efa\u65d2\u7198\u950d\u954f\u9e68\u938f", "long": "\u9f99\u804b\u5499\u7b3c\u7abf\u9686\u5784\u62e2\u9647\u5f04\u5785\u830f\u6cf7\u73d1\u680a\u80e7\u783b\u7643", "lou": "\u697c\u5a04\u6402\u7bd3\u6f0f\u964b\u55bd\u5d5d\u9542\u7618\u8027\u877c\u9ac5", "lu": "\u82a6\u5362\u9885\u5e90\u7089\u63b3\u5364\u864f\u9c81\u9e93\u788c\u9732\u8def\u8d42\u9e7f\u6f5e\u7984\u5f55\u9646\u622e\u5786\u6445\u64b8\u565c\u6cf8\u6e0c\u6f09\u7490\u680c\u6a79\u8f73\u8f82\u8f98\u6c07\u80ea\u9565\u9e2c\u9e6d\u7c0f\u823b\u9c88", "lv": "\u9a74\u5415\u94dd\u4fa3\u65c5\u5c65\u5c61\u7f15\u8651\u6c2f\u5f8b\u7387\u6ee4\u7eff\u634b\u95fe\u6988\u8182\u7a06\u891b", "luan": "\u5ce6\u5b6a\u6ee6\u5375\u4e71\u683e\u9e3e\u92ae", "lue": "\u63a0\u7565\u950a", "lun": "\u8f6e\u4f26\u4ed1\u6ca6\u7eb6\u8bba\u56f5", "luo": "\u841d\u87ba\u7f57\u903b\u9523\u7ba9\u9aa1\u88f8\u843d\u6d1b\u9a86\u7edc\u502e\u8366\u645e\u7321\u6cfa\u6924\u8136\u9559\u7630\u96d2", "ma": "\u5988\u9ebb\u739b\u7801\u8682\u9a6c\u9a82\u561b\u5417\u551b\u72b8\u5b37\u6769\u9ebd", "mai": "\u57cb\u4e70\u9ea6\u5356\u8fc8\u8109\u52a2\u836c\u54aa\u973e", "man": "\u7792\u9992\u86ee\u6ee1\u8513\u66fc\u6162\u6f2b\u8c29\u5881\u5e54\u7f26\u71b3\u9558\u989f\u87a8\u9cd7\u9794", "mang": "\u8292\u832b\u76f2\u5fd9\u83bd\u9099\u6f2d\u6726\u786d\u87d2", "meng": "\u6c13\u840c\u8499\u6aac\u76df\u9530\u731b\u68a6\u5b5f\u52d0\u750d\u77a2\u61f5\u791e\u867b\u8722\u8813\u824b\u8268\u9efe", "miao": "\u732b\u82d7\u63cf\u7784\u85d0\u79d2\u6e3a\u5e99\u5999\u55b5\u9088\u7f08\u7f2a\u676a\u6dfc\u7707\u9e4b\u8731", "mao": "\u8305\u951a\u6bdb\u77db\u94c6\u536f\u8302\u5192\u5e3d\u8c8c\u8d38\u4f94\u88a4\u52d6\u8306\u5cc1\u7441\u6634\u7266\u8004\u65c4\u61cb\u7780\u86d1\u8765\u87ca\u9ae6", "me": "\u4e48", "mei": "\u73ab\u679a\u6885\u9176\u9709\u7164\u6ca1\u7709\u5a92\u9541\u6bcf\u7f8e\u6627\u5bd0\u59b9\u5a9a\u5776\u8393\u5d4b\u7338\u6d7c\u6e44\u6963\u9545\u9e5b\u8882\u9b45", "men": "\u95e8\u95f7\u4eec\u626a\u739f\u7116\u61d1\u9494", "mi": "\u772f\u919a\u9761\u7cdc\u8ff7\u8c1c\u5f25\u7c73\u79d8\u89c5\u6ccc\u871c\u5bc6\u5e42\u8288\u5196\u8c27\u863c\u5627\u7315\u736f\u6c68\u5b93\u5f2d\u8112\u6549\u7cf8\u7e3b\u9e8b", "mian": "\u68c9\u7720\u7ef5\u5195\u514d\u52c9\u5a29\u7f05\u9762\u6c94\u6e4e\u817c\u7704", "mie": "\u8511\u706d\u54a9\u881b\u7bfe", "min": "\u6c11\u62bf\u76bf\u654f\u60af\u95fd\u82e0\u5cb7\u95f5\u6cef\u73c9", "ming": "\u660e\u879f\u9e23\u94ed\u540d\u547d\u51a5\u8317\u6e9f\u669d\u7791\u9169", "miu": "\u8c2c", "mo": "\u6478\u6479\u8611\u6a21\u819c\u78e8\u6469\u9b54\u62b9\u672b\u83ab\u58a8\u9ed8\u6cab\u6f20\u5bde\u964c\u8c1f\u8309\u84e6\u998d\u5aeb\u9546\u79e3\u763c\u8031\u87c6\u8c8a\u8c98", "mou": "\u8c0b\u725f\u67d0\u53b6\u54de\u5a7a\u7738\u936a", "mu": "\u62c7\u7261\u4ea9\u59c6\u6bcd\u5893\u66ae\u5e55\u52df\u6155\u6728\u76ee\u7766\u7267\u7a46\u4eeb\u82dc\u5452\u6c90\u6bea\u94bc", "na": "\u62ff\u54ea\u5450\u94a0\u90a3\u5a1c\u7eb3\u5185\u637a\u80ad\u954e\u8872\u7bac", "nai": "\u6c16\u4e43\u5976\u8010\u5948\u9f10\u827f\u8418\u67f0", "nan": "\u5357\u7537\u96be\u56ca\u5583\u56e1\u6960\u8169\u877b\u8d67", "nao": "\u6320\u8111\u607c\u95f9\u5b6c\u57b4\u7331\u7459\u7847\u94d9\u86f2", "ne": "\u6dd6\u5462\u8bb7", "nei": "\u9981", "nen": "\u5ae9\u80fd\u6798\u6041", "ni": "\u59ae\u9713\u502a\u6ce5\u5c3c\u62df\u4f60\u533f\u817b\u9006\u6eba\u4f32\u576d\u730a\u6029\u6ee0\u6635\u65ce\u7962\u615d\u7768\u94cc\u9cb5", "nian": "\u852b\u62c8\u5e74\u78be\u64b5\u637b\u5ff5\u5eff\u8f87\u9ecf\u9c87\u9cb6", "niang": "\u5a18\u917f", "niao": "\u9e1f\u5c3f\u8311\u5b32\u8132\u8885", "nie": "\u634f\u8042\u5b7d\u556e\u954a\u954d\u6d85\u4e5c\u9667\u8616\u55eb\u8080\u989e\u81ec\u8e51", "nin": "\u60a8\u67e0", "ning": "\u72de\u51dd\u5b81\u62e7\u6cde\u4f5e\u84e5\u549b\u752f\u804d", "niu": "\u725b\u626d\u94ae\u7ebd\u72c3\u5ff8\u599e\u86b4", "nong": "\u8113\u6d53\u519c\u4fac", "nu": "\u5974\u52aa\u6012\u5476\u5e11\u5f29\u80ec\u5b65\u9a7d", "nv": "\u5973\u6067\u9495\u8844", "nuan": "\u6696", "nuenue": "\u8650", "nue": "\u759f\u8c11", "nuo": "\u632a\u61e6\u7cef\u8bfa\u50a9\u6426\u558f\u9518", "ou": "\u54e6\u6b27\u9e25\u6bb4\u85d5\u5455\u5076\u6ca4\u6004\u74ef\u8026", "pa": "\u556a\u8db4\u722c\u5e15\u6015\u7436\u8469\u7b62", "pai": "\u62cd\u6392\u724c\u5f98\u6e43\u6d3e\u4ff3\u848e", "pan": "\u6500\u6f58\u76d8\u78d0\u76fc\u7554\u5224\u53db\u723f\u6cee\u88a2\u897b\u87e0\u8e52", "pang": "\u4e53\u5e9e\u65c1\u802a\u80d6\u6ec2\u9004", "pao": "\u629b\u5486\u5228\u70ae\u888d\u8dd1\u6ce1\u530f\u72cd\u5e96\u812c\u75b1", "pei": "\u5478\u80da\u57f9\u88f4\u8d54\u966a\u914d\u4f69\u6c9b\u638a\u8f94\u5e14\u6de0\u65c6\u952b\u9185\u9708", "pen": "\u55b7\u76c6\u6e53", "peng": "\u7830\u62a8\u70f9\u6f8e\u5f6d\u84ec\u68da\u787c\u7bf7\u81a8\u670b\u9e4f\u6367\u78b0\u576f\u580b\u562d\u6026\u87db", "pi": "\u7812\u9739\u6279\u62ab\u5288\u7435\u6bd7\u5564\u813e\u75b2\u76ae\u5339\u75de\u50fb\u5c41\u8b6c\u4e15\u9674\u90b3\u90eb\u572e\u9f19\u64d7\u567c\u5e80\u5ab2\u7eb0\u6787\u7513\u7765\u7f74\u94cd\u75e6\u7656\u758b\u868d\u8c94", "pian": "\u7bc7\u504f\u7247\u9a97\u8c1d\u9a88\u728f\u80fc\u890a\u7fe9\u8e41", "piao": "\u98d8\u6f02\u74e2\u7968\u527d\u560c\u5ad6\u7f25\u6b8d\u779f\u87b5", "pie": "\u6487\u77a5\u4e3f\u82e4\u6c15", "pin": "\u62fc\u9891\u8d2b\u54c1\u8058\u62da\u59d8\u5ad4\u6980\u725d\u98a6", "ping": "\u4e52\u576a\u82f9\u840d\u5e73\u51ed\u74f6\u8bc4\u5c4f\u4fdc\u5a09\u67b0\u9c86", "po": "\u5761\u6cfc\u9887\u5a46\u7834\u9b44\u8feb\u7c95\u53f5\u9131\u6ea5\u73c0\u948b\u94b7\u76a4\u7b38", "pou": "\u5256\u88d2\u8e23", "pu": "\u6251\u94fa\u4ec6\u8386\u8461\u83e9\u84b2\u57d4\u6734\u5703\u666e\u6d66\u8c31\u66dd\u7011\u530d\u5657\u6fee\u749e\u6c06\u9564\u9568\u8e7c", "qi": "\u671f\u6b3a\u6816\u621a\u59bb\u4e03\u51c4\u6f06\u67d2\u6c8f\u5176\u68cb\u5947\u6b67\u7566\u5d0e\u8110\u9f50\u65d7\u7948\u7941\u9a91\u8d77\u5c82\u4e5e\u4f01\u542f\u5951\u780c\u5668\u6c14\u8fc4\u5f03\u6c7d\u6ce3\u8bab\u4e9f\u4e93\u573b\u8291\u840b\u847a\u5601\u5c7a\u5c90\u6c54\u6dc7\u9a90\u7eee\u742a\u7426\u675e\u6864\u69ed\u6b39\u797a\u61a9\u789b\u86f4\u871e\u7da6\u7dae\u8dbf\u8e4a\u9ccd\u9e92", "qia": "\u6390\u6070\u6d3d\u845c", "qian": "\u7275\u6266\u948e\u94c5\u5343\u8fc1\u7b7e\u4edf\u8c26\u4e7e\u9ed4\u94b1\u94b3\u524d\u6f5c\u9063\u6d45\u8c34\u5811\u5d4c\u6b20\u6b49\u4f65\u9621\u828a\u82a1\u8368\u63ae\u5c8d\u60ad\u614a\u9a9e\u6434\u8930\u7f31\u6920\u80b7\u6106\u94a4\u8654\u7b9d", "qiang": "\u67aa\u545b\u8154\u7f8c\u5899\u8537\u5f3a\u62a2\u5af1\u6a2f\u6217\u709d\u9516\u9535\u956a\u8941\u8723\u7f9f\u8deb\u8dc4", "qiao": "\u6a47\u9539\u6572\u6084\u6865\u77a7\u4e54\u4fa8\u5de7\u9798\u64ac\u7fd8\u5ced\u4fcf\u7a8d\u5281\u8bee\u8c2f\u835e\u6100\u6194\u7f32\u6a35\u6bf3\u7857\u8df7\u9792", "qie": "\u5207\u8304\u4e14\u602f\u7a83\u90c4\u553c\u60ec\u59be\u6308\u9532\u7ba7", "qin": "\u94a6\u4fb5\u4eb2\u79e6\u7434\u52e4\u82b9\u64d2\u79bd\u5bdd\u6c81\u82a9\u84c1\u8572\u63ff\u5423\u55ea\u5659\u6eb1\u6a8e\u8793\u887e", "qing": "\u9752\u8f7b\u6c22\u503e\u537f\u6e05\u64ce\u6674\u6c30\u60c5\u9877\u8bf7\u5e86\u5029\u82d8\u570a\u6aa0\u78ec\u873b\u7f44\u7b90\u8b26\u9cad\u9ee5", "qiong": "\u743c\u7a77\u909b\u8315\u7a79\u7b47\u928e", "qiu": "\u79cb\u4e18\u90b1\u7403\u6c42\u56da\u914b\u6cc5\u4fc5\u6c3d\u5def\u827d\u72b0\u6e6b\u9011\u9052\u6978\u8d47\u9e20\u866c\u86af\u8764\u88d8\u7cd7\u9cc5\u9f3d", "qu": "\u8d8b\u533a\u86c6\u66f2\u8eaf\u5c48\u9a71\u6e20\u53d6\u5a36\u9f8b\u8da3\u53bb\u8bce\u52ac\u8556\u8627\u5c96\u8862\u9612\u74a9\u89d1\u6c0d\u795b\u78f2\u766f\u86d0\u883c\u9eb4\u77bf\u9ee2", "quan": "\u5708\u98a7\u6743\u919b\u6cc9\u5168\u75ca\u62f3\u72ac\u5238\u529d\u8be0\u8343\u737e\u609b\u7efb\u8f81\u754e\u94e8\u8737\u7b4c\u9b08", "que": "\u7f3a\u7094\u7638\u5374\u9e4a\u69b7\u786e\u96c0\u9619\u60ab", "qun": "\u88d9\u7fa4\u9021", "ran": "\u7136\u71c3\u5189\u67d3\u82d2\u9aef", "rang": "\u74e4\u58e4\u6518\u56b7\u8ba9\u79b3\u7a70", "rao": "\u9976\u6270\u7ed5\u835b\u5a06\u6861", "ruo": "\u60f9\u82e5\u5f31", "re": "\u70ed\u504c", "ren": "\u58ec\u4ec1\u4eba\u5fcd\u97e7\u4efb\u8ba4\u5203\u598a\u7eab\u4ede\u834f\u845a\u996a\u8f6b\u7a14\u887d", "reng": "\u6254\u4ecd", "ri": "\u65e5", "rong": "\u620e\u8338\u84c9\u8363\u878d\u7194\u6eb6\u5bb9\u7ed2\u5197\u5d58\u72e8\u7f1b\u6995\u877e", "rou": "\u63c9\u67d4\u8089\u7cc5\u8e42\u97a3", "ru": "\u8339\u8815\u5112\u5b7a\u5982\u8fb1\u4e73\u6c5d\u5165\u8925\u84d0\u85b7\u5685\u6d33\u6ebd\u6fe1\u94f7\u8966\u98a5", "ruan": "\u8f6f\u962e\u670a", "rui": "\u854a\u745e\u9510\u82ae\u8564\u777f\u868b", "run": "\u95f0\u6da6", "sa": "\u6492\u6d12\u8428\u5345\u4ee8\u6332\u98d2", "sai": "\u816e\u9cc3\u585e\u8d5b\u567b", "san": "\u4e09\u53c1\u4f1e\u6563\u5f61\u9993\u6c35\u6bf5\u7cc1\u9730", "sang": "\u6851\u55d3\u4e27\u6421\u78c9\u98a1", "sao": "\u6414\u9a9a\u626b\u5ac2\u57fd\u81ca\u7619\u9ccb", "se": "\u745f\u8272\u6da9\u556c\u94e9\u94ef\u7a51", "sen": "\u68ee", "seng": "\u50e7", "sha": "\u838e\u7802\u6740\u5239\u6c99\u7eb1\u50bb\u5565\u715e\u810e\u6b43\u75e7\u88df\u970e\u9ca8", "shai": "\u7b5b\u6652\u917e", "shan": "\u73ca\u82eb\u6749\u5c71\u5220\u717d\u886b\u95ea\u9655\u64c5\u8d61\u81b3\u5584\u6c55\u6247\u7f2e\u5261\u8baa\u912f\u57cf\u829f\u6f78\u59d7\u9a9f\u81bb\u9490\u759d\u87ee\u8222\u8dda\u9cdd", "shang": "\u5892\u4f24\u5546\u8d4f\u664c\u4e0a\u5c1a\u88f3\u57a7\u7ef1\u6b87\u71b5\u89de", "shao": "\u68a2\u634e\u7a0d\u70e7\u828d\u52fa\u97f6\u5c11\u54e8\u90b5\u7ecd\u52ad\u82d5\u6f72\u86f8\u7b24\u7b72\u8244", "she": "\u5962\u8d4a\u86c7\u820c\u820d\u8d66\u6444\u5c04\u6151\u6d89\u793e\u8bbe\u538d\u4f58\u731e\u7572\u9e9d", "shen": "\u7837\u7533\u547b\u4f38\u8eab\u6df1\u5a20\u7ec5\u795e\u6c88\u5ba1\u5a76\u751a\u80be\u614e\u6e17\u8bdc\u8c02\u5432\u54c2\u6e16\u6939\u77e7\u8703", "sheng": "\u58f0\u751f\u7525\u7272\u5347\u7ef3\u7701\u76db\u5269\u80dc\u5723\u4e1e\u6e11\u5ab5\u771a\u7b19", "shi": "\u5e08\u5931\u72ee\u65bd\u6e7f\u8bd7\u5c38\u8671\u5341\u77f3\u62fe\u65f6\u4ec0\u98df\u8680\u5b9e\u8bc6\u53f2\u77e2\u4f7f\u5c4e\u9a76\u59cb\u5f0f\u793a\u58eb\u4e16\u67ff\u4e8b\u62ed\u8a93\u901d\u52bf\u662f\u55dc\u566c\u9002\u4ed5\u4f8d\u91ca\u9970\u6c0f\u5e02\u6043\u5ba4\u89c6\u8bd5\u8c25\u57d8\u83b3\u84cd\u5f11\u5511\u9963\u8f7c\u8006\u8d33\u70bb\u793b\u94c8\u94ca\u87ab\u8210\u7b6e\u8c55\u9ca5\u9cba", "shou": "\u6536\u624b\u9996\u5b88\u5bff\u6388\u552e\u53d7\u7626\u517d\u624c\u72e9\u7ef6\u824f", "shu": "\u852c\u67a2\u68b3\u6b8a\u6292\u8f93\u53d4\u8212\u6dd1\u758f\u4e66\u8d4e\u5b70\u719f\u85af\u6691\u66d9\u7f72\u8700\u9ecd\u9f20\u5c5e\u672f\u8ff0\u6811\u675f\u620d\u7ad6\u5885\u5eb6\u6570\u6f31\u6055\u500f\u587e\u83fd\u5fc4\u6cad\u6d91\u6f8d\u59dd\u7ebe\u6bf9\u8167\u6bb3\u956f\u79eb\u9e6c", "shua": "\u5237\u800d\u5530\u6dae", "shuai": "\u6454\u8870\u7529\u5e05\u87c0", "shuan": "\u6813\u62f4\u95e9", "shuang": "\u971c\u53cc\u723d\u5b40", "shui": "\u8c01\u6c34\u7761\u7a0e", "shun": "\u542e\u77ac\u987a\u821c\u6042", "shuo": "\u8bf4\u7855\u6714\u70c1\u84b4\u6420\u55cd\u6fef\u5981\u69ca\u94c4", "si": "\u65af\u6495\u5636\u601d\u79c1\u53f8\u4e1d\u6b7b\u8086\u5bfa\u55e3\u56db\u4f3a\u4f3c\u9972\u5df3\u53ae\u4fdf\u5155\u83e5\u549d\u6c5c\u6cd7\u6f8c\u59d2\u9a77\u7f0c\u7940\u7960\u9536\u9e36\u801c\u86f3\u7b25", "song": "\u677e\u8038\u6002\u9882\u9001\u5b8b\u8bbc\u8bf5\u51c7\u83d8\u5d27\u5d69\u5fea\u609a\u6dde\u7ae6", "sou": "\u641c\u8258\u64de\u55fd\u53df\u55d6\u55fe\u998a\u6eb2\u98d5\u778d\u953c\u878b", "su": "\u82cf\u9165\u4fd7\u7d20\u901f\u7c9f\u50f3\u5851\u6eaf\u5bbf\u8bc9\u8083\u5919\u8c21\u850c\u55c9\u612b\u7c0c\u89eb\u7a23", "suan": "\u9178\u849c\u7b97", "sui": "\u867d\u968b\u968f\u7ee5\u9ad3\u788e\u5c81\u7a57\u9042\u96a7\u795f\u84d1\u51ab\u8c07\u6fc9\u9083\u71e7\u772d\u7762", "sun": "\u5b59\u635f\u7b0b\u836a\u72f2\u98e7\u69ab\u8de3\u96bc", "suo": "\u68ad\u5506\u7f29\u7410\u7d22\u9501\u6240\u5522\u55e6\u5a11\u686b\u7743\u7fa7", "ta": "\u584c\u4ed6\u5b83\u5979\u5854\u736d\u631e\u8e4b\u8e0f\u95fc\u6ebb\u9062\u69bb\u6c93", "tai": "\u80ce\u82d4\u62ac\u53f0\u6cf0\u915e\u592a\u6001\u6c70\u90b0\u85b9\u80bd\u70b1\u949b\u8dc6\u9c90", "tan": "\u574d\u644a\u8d2a\u762b\u6ee9\u575b\u6a80\u75f0\u6f6d\u8c2d\u8c08\u5766\u6bef\u8892\u78b3\u63a2\u53f9\u70ad\u90ef\u8548\u6619\u94bd\u952c\u8983", "tang": "\u6c64\u5858\u642a\u5802\u68e0\u819b\u5510\u7cd6\u50a5\u9967\u6e8f\u746d\u94f4\u9557\u8025\u8797\u87b3\u7fb0\u91a3", "thang": "\u5018\u8eba\u6dcc", "theng": "\u8d9f\u70eb", "tao": "\u638f\u6d9b\u6ed4\u7ee6\u8404\u6843\u9003\u6dd8\u9676\u8ba8\u5957\u6311\u9f17\u5555\u97ec\u9955", "te": "\u7279", "teng": "\u85e4\u817e\u75bc\u8a8a\u6ed5", "ti": "\u68af\u5254\u8e22\u9511\u63d0\u9898\u8e44\u557c\u4f53\u66ff\u568f\u60d5\u6d95\u5243\u5c49\u8351\u608c\u9016\u7ee8\u7f07\u9e48\u88fc\u918d", "tian": "\u5929\u6dfb\u586b\u7530\u751c\u606c\u8214\u8146\u63ad\u5fdd\u9617\u6b84\u754b\u94bf\u86ba", "tiao": "\u6761\u8fe2\u773a\u8df3\u4f7b\u7967\u94eb\u7a95\u9f86\u9ca6", "tie": "\u8d34\u94c1\u5e16\u841c\u992e", "ting": "\u5385\u542c\u70c3\u6c40\u5ef7\u505c\u4ead\u5ead\u633a\u8247\u839b\u8476\u5a77\u6883\u8713\u9706", "tong": "\u901a\u6850\u916e\u77b3\u540c\u94dc\u5f64\u7ae5\u6876\u6345\u7b52\u7edf\u75db\u4f5f\u50ee\u4edd\u833c\u55f5\u6078\u6f7c\u783c", "tou": "\u5077\u6295\u5934\u900f\u4ea0", "tu": "\u51f8\u79c3\u7a81\u56fe\u5f92\u9014\u6d82\u5c60\u571f\u5410\u5154\u580d\u837c\u83df\u948d\u9174", "tuan": "\u6e4d\u56e2\u7583", "tui": "\u63a8\u9893\u817f\u8715\u892a\u9000\u5fd2\u717a", "tun": "\u541e\u5c6f\u81c0\u9968\u66be\u8c5a\u7a80", "tuo": "\u62d6\u6258\u8131\u9e35\u9640\u9a6e\u9a7c\u692d\u59a5\u62d3\u553e\u4e47\u4f57\u5768\u5eb9\u6cb1\u67dd\u7823\u7ba8\u8204\u8dce\u9f0d", "wa": "\u6316\u54c7\u86d9\u6d3c\u5a03\u74e6\u889c\u4f64\u5a32\u817d", "wai": "\u6b6a\u5916", "wan": "\u8c4c\u5f2f\u6e7e\u73a9\u987d\u4e38\u70f7\u5b8c\u7897\u633d\u665a\u7696\u60cb\u5b9b\u5a49\u4e07\u8155\u525c\u8284\u82cb\u83c0\u7ea8\u7efe\u742c\u8118\u7579\u873f\u7ba2", "wang": "\u6c6a\u738b\u4ea1\u6789\u7f51\u5f80\u65fa\u671b\u5fd8\u5984\u7f54\u5c22\u60d8\u8f8b\u9b4d", "wei": "\u5a01\u5dcd\u5fae\u5371\u97e6\u8fdd\u6845\u56f4\u552f\u60df\u4e3a\u6f4d\u7ef4\u82c7\u840e\u59d4\u4f1f\u4f2a\u5c3e\u7eac\u672a\u851a\u5473\u754f\u80c3\u5582\u9b4f\u4f4d\u6e2d\u8c13\u5c09\u6170\u536b\u502d\u504e\u8bff\u9688\u8473\u8587\u5e0f\u5e37\u5d34\u5d6c\u7325\u732c\u95f1\u6ca9\u6d27\u6da0\u9036\u5a13\u73ae\u97ea\u8ece\u709c\u7168\u71a8\u75ff\u8249\u9c94", "wen": "\u761f\u6e29\u868a\u6587\u95fb\u7eb9\u543b\u7a33\u7d0a\u95ee\u520e\u6120\u960c\u6c76\u74ba\u97eb\u6b81\u96ef", "weng": "\u55e1\u7fc1\u74ee\u84ca\u8579", "wo": "\u631d\u8717\u6da1\u7a9d\u6211\u65a1\u5367\u63e1\u6c83\u83b4\u5e44\u6e25\u674c\u809f\u9f8c", "wu": "\u5deb\u545c\u94a8\u4e4c\u6c61\u8bec\u5c4b\u65e0\u829c\u68a7\u543e\u5434\u6bcb\u6b66\u4e94\u6342\u5348\u821e\u4f0d\u4fae\u575e\u620a\u96fe\u6664\u7269\u52ff\u52a1\u609f\u8bef\u5140\u4ef5\u9622\u90ac\u572c\u82b4\u5e91\u6003\u5fe4\u6d6f\u5be4\u8fd5\u59a9\u9a9b\u727e\u7110\u9e49\u9e5c\u8708\u92c8\u9f2f", "xi": "\u6614\u7199\u6790\u897f\u7852\u77fd\u6670\u563b\u5438\u9521\u727a\u7a00\u606f\u5e0c\u6089\u819d\u5915\u60dc\u7184\u70ef\u6eaa\u6c50\u7280\u6a84\u88ad\u5e2d\u4e60\u5ab3\u559c\u94e3\u6d17\u7cfb\u9699\u620f\u7ec6\u50d6\u516e\u96b0\u90d7\u831c\u8478\u84f0\u595a\u550f\u5f99\u9969\u960b\u6d60\u6dc5\u5c63\u5b09\u73ba\u6a28\u66e6\u89cb\u6b37\u71b9\u798a\u79a7\u94b8\u7699\u7a78\u8725\u87cb\u823e\u7fb2\u7c9e\u7fd5\u91af\u9f37", "xia": "\u778e\u867e\u5323\u971e\u8f96\u6687\u5ce1\u4fa0\u72ed\u4e0b\u53a6\u590f\u5413\u6380\u846d\u55c4\u72ce\u9050\u7455\u7856\u7615\u7f45\u9ee0", "xian": "\u9528\u5148\u4ed9\u9c9c\u7ea4\u54b8\u8d24\u8854\u8237\u95f2\u6d8e\u5f26\u5acc\u663e\u9669\u73b0\u732e\u53bf\u817a\u9985\u7fa1\u5baa\u9677\u9650\u7ebf\u51bc\u85d3\u5c98\u7303\u66b9\u5a34\u6c19\u7946\u9e47\u75eb\u86ac\u7b45\u7c7c\u9170\u8df9", "xiang": "\u76f8\u53a2\u9576\u9999\u7bb1\u8944\u6e58\u4e61\u7fd4\u7965\u8be6\u60f3\u54cd\u4eab\u9879\u5df7\u6a61\u50cf\u5411\u8c61\u8297\u8459\u9977\u5ea0\u9aa7\u7f03\u87d3\u9c9e\u98e8", "xiao": "\u8427\u785d\u9704\u524a\u54ee\u56a3\u9500\u6d88\u5bb5\u6dc6\u6653\u5c0f\u5b5d\u6821\u8096\u5578\u7b11\u6548\u54d3\u54bb\u5d24\u6f47\u900d\u9a81\u7ee1\u67ad\u67b5\u7b71\u7bab\u9b48", "xie": "\u6954\u4e9b\u6b47\u874e\u978b\u534f\u631f\u643a\u90aa\u659c\u80c1\u8c10\u5199\u68b0\u5378\u87f9\u61c8\u6cc4\u6cfb\u8c22\u5c51\u5055\u4eb5\u52f0\u71ee\u85a4\u64b7\u5ee8\u7023\u9082\u7ec1\u7f2c\u69ad\u698d\u6b59\u8e9e", "xin": "\u85aa\u82af\u950c\u6b23\u8f9b\u65b0\u5ffb\u5fc3\u4fe1\u8845\u56df\u99a8\u8398\u6b46\u94fd\u946b", "xing": "\u661f\u8165\u7329\u60fa\u5174\u5211\u578b\u5f62\u90a2\u884c\u9192\u5e78\u674f\u6027\u59d3\u9649\u8347\u8365\u64e4\u60bb\u784e", "xiong": "\u5144\u51f6\u80f8\u5308\u6c79\u96c4\u718a\u828e", "xiu": "\u4f11\u4fee\u7f9e\u673d\u55c5\u9508\u79c0\u8896\u7ee3\u83a0\u5cab\u9990\u5ea5\u9e3a\u8c85\u9af9", "xu": "\u589f\u620c\u9700\u865a\u5618\u987b\u5f90\u8bb8\u84c4\u9157\u53d9\u65ed\u5e8f\u755c\u6064\u7d6e\u5a7f\u7eea\u7eed\u8bb4\u8be9\u5729\u84ff\u6035\u6d2b\u6e86\u987c\u6829\u7166\u7809\u76f1\u80e5\u7cc8\u9191", "xuan": "\u8f69\u55a7\u5ba3\u60ac\u65cb\u7384\u9009\u7663\u7729\u7eda\u5107\u8c16\u8431\u63ce\u9994\u6ceb\u6d35\u6e32\u6f29\u7487\u6966\u6684\u70ab\u714a\u78b9\u94c9\u955f\u75c3", "xue": "\u9774\u859b\u5b66\u7a74\u96ea\u8840\u5671\u6cf6\u9cd5", "xun": "\u52cb\u718f\u5faa\u65ec\u8be2\u5bfb\u9a6f\u5de1\u6b89\u6c5b\u8bad\u8baf\u900a\u8fc5\u5dfd\u57d9\u8340\u85b0\u5ccb\u5f87\u6d54\u66db\u7aa8\u91ba\u9c9f", "ya": "\u538b\u62bc\u9e26\u9e2d\u5440\u4e2b\u82bd\u7259\u869c\u5d16\u8859\u6daf\u96c5\u54d1\u4e9a\u8bb6\u4f22\u63e0\u5416\u5c88\u8fd3\u5a05\u740a\u6860\u6c29\u7811\u775a\u75d6", "yan": "\u7109\u54bd\u9609\u70df\u6df9\u76d0\u4e25\u7814\u8712\u5ca9\u5ef6\u8a00\u989c\u960e\u708e\u6cbf\u5944\u63a9\u773c\u884d\u6f14\u8273\u5830\u71d5\u538c\u781a\u96c1\u5501\u5f66\u7130\u5bb4\u8c1a\u9a8c\u53a3\u9765\u8d5d\u4fe8\u5043\u5156\u8ba0\u8c33\u90fe\u9122\u82ab\u83f8\u5d26\u6079\u95eb\u960f\u6d07\u6e6e\u6edf\u598d\u5ae3\u7430\u664f\u80ed\u814c\u7131\u7f68\u7b75\u917d\u9b47\u990d\u9f39", "yang": "\u6b83\u592e\u9e2f\u79e7\u6768\u626c\u4f6f\u75a1\u7f8a\u6d0b\u9633\u6c27\u4ef0\u75d2\u517b\u6837\u6f3e\u5f89\u600f\u6cf1\u7080\u70ca\u6059\u86d8\u9785", "yao": "\u9080\u8170\u5996\u7476\u6447\u5c27\u9065\u7a91\u8c23\u59da\u54ac\u8200\u836f\u8981\u8000\u592d\u723b\u5406\u5d3e\u5fad\u7039\u5e7a\u73e7\u6773\u66dc\u80b4\u9e5e\u7a88\u7e47\u9cd0", "ye": "\u6930\u564e\u8036\u7237\u91ce\u51b6\u4e5f\u9875\u6396\u4e1a\u53f6\u66f3\u814b\u591c\u6db2\u8c12\u90ba\u63f6\u9980\u6654\u70e8\u94d8", "yi": "\u4e00\u58f9\u533b\u63d6\u94f1\u4f9d\u4f0a\u8863\u9890\u5937\u9057\u79fb\u4eea\u80f0\u7591\u6c82\u5b9c\u59e8\u5f5d\u6905\u8681\u501a\u5df2\u4e59\u77e3\u4ee5\u827a\u6291\u6613\u9091\u5c79\u4ebf\u5f79\u81c6\u9038\u8084\u75ab\u4ea6\u88d4\u610f\u6bc5\u5fc6\u4e49\u76ca\u6ea2\u8be3\u8bae\u8c0a\u8bd1\u5f02\u7ffc\u7fcc\u7ece\u5208\u5293\u4f7e\u8bd2\u572a\u572f\u57f8\u61ff\u82e1\u858f\u5f08\u5955\u6339\u5f0b\u5453\u54a6\u54bf\u566b\u5cc4\u5db7\u7317\u9974\u603f\u6021\u6092\u6f2a\u8fe4\u9a7f\u7f22\u6baa\u8d3b\u65d6\u71a0\u9487\u9552\u9571\u75cd\u7617\u7654\u7fca\u8864\u8734\u8223\u7fbf\u7ff3\u914f\u9edf", "yin": "\u8335\u836b\u56e0\u6bb7\u97f3\u9634\u59fb\u541f\u94f6\u6deb\u5bc5\u996e\u5c39\u5f15\u9690\u5370\u80e4\u911e\u5819\u831a\u5591\u72fa\u5924\u6c24\u94df\u763e\u8693\u972a\u9f88", "ying": "\u82f1\u6a31\u5a74\u9e70\u5e94\u7f28\u83b9\u8424\u8425\u8367\u8747\u8fce\u8d62\u76c8\u5f71\u9896\u786c\u6620\u5b34\u90e2\u8314\u83ba\u8426\u6484\u5624\u81ba\u6ee2\u6f46\u701b\u745b\u748e\u6979\u9e66\u763f\u988d\u7f42", "yo": "\u54df\u5537", "yong": "\u62e5\u4f63\u81c3\u75c8\u5eb8\u96cd\u8e0a\u86f9\u548f\u6cf3\u6d8c\u6c38\u607f\u52c7\u7528\u4fd1\u58c5\u5889\u6175\u9095\u955b\u752c\u9cd9\u9954", "you": "\u5e7d\u4f18\u60a0\u5fe7\u5c24\u7531\u90ae\u94c0\u72b9\u6cb9\u6e38\u9149\u6709\u53cb\u53f3\u4f51\u91c9\u8bf1\u53c8\u5e7c\u5363\u6538\u4f91\u83b8\u5466\u56ff\u5ba5\u67da\u7337\u7256\u94d5\u75a3\u8763\u9c7f\u9edd\u9f2c", "yu": "\u8fc2\u6de4\u4e8e\u76c2\u6986\u865e\u611a\u8206\u4f59\u4fde\u903e\u9c7c\u6109\u6e1d\u6e14\u9685\u4e88\u5a31\u96e8\u4e0e\u5c7f\u79b9\u5b87\u8bed\u7fbd\u7389\u57df\u828b\u90c1\u5401\u9047\u55bb\u5cea\u5fa1\u6108\u6b32\u72f1\u80b2\u8a89\u6d74\u5bd3\u88d5\u9884\u8c6b\u9a6d\u79ba\u6bd3\u4f1b\u4fe3\u8c00\u8c15\u8438\u84e3\u63c4\u5581\u5704\u5709\u5d5b\u72f3\u996b\u5ebe\u9608\u59aa\u59a4\u7ea1\u745c\u6631\u89ce\u8174\u6b24\u65bc\u715c\u71e0\u807f\u94b0\u9e46\u7610\u7600\u7ab3\u8753\u7afd\u8201\u96e9\u9f89", "yuan": "\u9e33\u6e0a\u51a4\u5143\u57a3\u8881\u539f\u63f4\u8f95\u56ed\u5458\u5706\u733f\u6e90\u7f18\u8fdc\u82d1\u613f\u6028\u9662\u586c\u6c85\u5a9b\u7457\u6a7c\u7230\u7722\u9e22\u8788\u9f0b", "yue": "\u66f0\u7ea6\u8d8a\u8dc3\u94a5\u5cb3\u7ca4\u6708\u60a6\u9605\u9fa0\u6a3e\u5216\u94ba", "yun": "\u8018\u4e91\u90e7\u5300\u9668\u5141\u8fd0\u8574\u915d\u6655\u97f5\u5b55\u90d3\u82b8\u72c1\u607d\u7ead\u6b92\u6600\u6c32", "za": "\u531d\u7838\u6742\u62f6\u5482", "zai": "\u683d\u54c9\u707e\u5bb0\u8f7d\u518d\u5728\u54b1\u5d3d\u753e", "zan": "\u6512\u6682\u8d5e\u74d2\u661d\u7c2a\u7ccc\u8db1\u933e", "zang": "\u8d43\u810f\u846c\u5958\u6215\u81e7", "zao": "\u906d\u7cdf\u51ff\u85fb\u67a3\u65e9\u6fa1\u86a4\u8e81\u566a\u9020\u7682\u7076\u71e5\u5523\u7f2b", "ze": "\u8d23\u62e9\u5219\u6cfd\u4ec4\u8d5c\u5567\u8fee\u6603\u7b2e\u7ba6\u8234", "zei": "\u8d3c", "zen": "\u600e\u8c2e", "zeng": "\u589e\u618e\u66fe\u8d60\u7f2f\u7511\u7f7e\u9503", "zha": "\u624e\u55b3\u6e23\u672d\u8f67\u94e1\u95f8\u7728\u6805\u69a8\u548b\u4e4d\u70b8\u8bc8\u63f8\u5412\u54a4\u54f3\u600d\u781f\u75c4\u86b1\u9f44", "zhai": "\u6458\u658b\u5b85\u7a84\u503a\u5be8\u7826", "zhan": "\u77bb\u6be1\u8a79\u7c98\u6cbe\u76cf\u65a9\u8f97\u5d2d\u5c55\u8638\u6808\u5360\u6218\u7ad9\u6e5b\u7efd\u8c35\u640c\u65c3", "zhang": "\u6a1f\u7ae0\u5f70\u6f33\u5f20\u638c\u6da8\u6756\u4e08\u5e10\u8d26\u4ed7\u80c0\u7634\u969c\u4ec9\u9123\u5e5b\u5d82\u7350\u5adc\u748b\u87d1", "zhao": "\u62db\u662d\u627e\u6cbc\u8d75\u7167\u7f69\u5146\u8087\u53ec\u722a\u8bcf\u68f9\u948a\u7b0a", "zhe": "\u906e\u6298\u54f2\u86f0\u8f99\u8005\u9517\u8517\u8fd9\u6d59\u8c2a\u966c\u67d8\u8f84\u78d4\u9e67\u891a\u8707\u8d6d", "zhen": "\u73cd\u659f\u771f\u7504\u7827\u81fb\u8d1e\u9488\u4fa6\u6795\u75b9\u8bca\u9707\u632f\u9547\u9635\u7f1c\u6862\u699b\u8f78\u8d48\u80d7\u6715\u796f\u755b\u9e29", "zheng": "\u84b8\u6323\u7741\u5f81\u72f0\u4e89\u6014\u6574\u62ef\u6b63\u653f\u5e27\u75c7\u90d1\u8bc1\u8be4\u5ce5\u94b2\u94ee\u7b5d", "zhi": "\u829d\u679d\u652f\u5431\u8718\u77e5\u80a2\u8102\u6c41\u4e4b\u7ec7\u804c\u76f4\u690d\u6b96\u6267\u503c\u4f84\u5740\u6307\u6b62\u8dbe\u53ea\u65e8\u7eb8\u5fd7\u631a\u63b7\u81f3\u81f4\u7f6e\u5e1c\u5cd9\u5236\u667a\u79e9\u7a1a\u8d28\u7099\u75d4\u6ede\u6cbb\u7a92\u536e\u965f\u90c5\u57f4\u82b7\u646d\u5e19\u5fee\u5f58\u54ab\u9a98\u6809\u67b3\u6800\u684e\u8f75\u8f7e\u6534\u8d3d\u81a3\u7949\u7957\u9ef9\u96c9\u9e37\u75e3\u86ed\u7d77\u916f\u8dd6\u8e2c\u8e2f\u8c78\u89ef", "zhong": "\u4e2d\u76c5\u5fe0\u949f\u8877\u7ec8\u79cd\u80bf\u91cd\u4ef2\u4f17\u51a2\u953a\u87bd\u8202\u822f\u8e35", "zhou": "\u821f\u5468\u5dde\u6d32\u8bcc\u7ca5\u8f74\u8098\u5e1a\u5492\u76b1\u5b99\u663c\u9aa4\u5544\u7740\u501c\u8bf9\u836e\u9b3b\u7ea3\u80c4\u78a1\u7c40\u8233\u914e\u9cb7", "zhu": "\u73e0\u682a\u86db\u6731\u732a\u8bf8\u8bdb\u9010\u7af9\u70db\u716e\u62c4\u77a9\u5631\u4e3b\u8457\u67f1\u52a9\u86c0\u8d2e\u94f8\u7b51\u4f4f\u6ce8\u795d\u9a7b\u4f2b\u4f8f\u90be\u82ce\u8331\u6d19\u6e1a\u6f74\u9a7a\u677c\u69e0\u6a65\u70b7\u94e2\u75b0\u7603\u86b0\u7afa\u7bb8\u7fe5\u8e85\u9e88", "zhua": "\u6293", "zhuai": "\u62fd", "zhuan": "\u4e13\u7816\u8f6c\u64b0\u8d5a\u7bc6\u629f\u556d\u989b", "zhuang": "\u6869\u5e84\u88c5\u5986\u649e\u58ee\u72b6\u4e2c", "zhui": "\u690e\u9525\u8ffd\u8d58\u5760\u7f00\u8411\u9a93\u7f12", "zhun": "\u8c06\u51c6", "zhuo": "\u6349\u62d9\u5353\u684c\u7422\u8301\u914c\u707c\u6d4a\u502c\u8bfc\u5ef4\u855e\u64e2\u555c\u6d5e\u6dbf\u6753\u712f\u799a\u65ab", "zi": "\u5179\u54a8\u8d44\u59ff\u6ecb\u6dc4\u5b5c\u7d2b\u4ed4\u7c7d\u6ed3\u5b50\u81ea\u6e0d\u5b57\u8c18\u5d6b\u59ca\u5b73\u7f01\u6893\u8f8e\u8d40\u6063\u7726\u9531\u79ed\u8014\u7b2b\u7ca2\u89dc\u8a3e\u9cbb\u9aed", "zong": "\u9b03\u68d5\u8e2a\u5b97\u7efc\u603b\u7eb5\u8159\u7cbd", "zou": "\u90b9\u8d70\u594f\u63cd\u9139\u9cb0", "zu": "\u79df\u8db3\u5352\u65cf\u7956\u8bc5\u963b\u7ec4\u4fce\u83f9\u5550\u5f82\u9a75\u8e74", "zuan": "\u94bb\u7e82\u6525\u7f35", "zui": "\u5634\u9189\u6700\u7f6a", "zun": "\u5c0a\u9075\u6499\u6a3d\u9cdf", "zuo": "\u6628\u5de6\u4f50\u67de\u505a\u4f5c\u5750\u5ea7\u961d\u963c\u80d9\u795a\u9162", "cou": "\u85ae\u6971\u8f8f\u8160", "nang": "\u652e\u54dd\u56d4\u9995\u66e9", "o": "\u5594", "dia": "\u55f2", "chuai": "\u562c\u81aa\u8e39", "cen": "\u5c91\u6d94", "diu": "\u94e5", "nou": "\u8028", "fou": "\u7f36", "bia": "\u9adf" };
- this.polyphone = { "19969": "DZ", "19975": "WM", "19988": "QJ", "20048": "YL", "20056": "SC", "20060": "NM", "20094": "QG", "20127": "QJ", "20167": "QC", "20193": "YG", "20250": "KH", "20256": "ZC", "20282": "SC", "20285": "QJG", "20291": "TD", "20314": "YD", "20340": "NE", "20375": "TD", "20389": "YJ", "20391": "CZ", "20415": "PB", "20446": "YS", "20447": "SQ", "20504": "TC", "20608": "KG", "20854": "QJ", "20857": "ZC", "20911": "PF", "20504": "TC", "20608": "KG", "20854": "QJ", "20857": "ZC", "20911": "PF", "20985": "AW", "21032": "PB", "21048": "XQ", "21049": "SC", "21089": "YS", "21119": "JC", "21242": "SB", "21273": "SC", "21305": "YP", "21306": "QO", "21330": "ZC", "21333": "SDC", "21345": "QK", "21378": "CA", "21397": "SC", "21414": "XS", "21442": "SC", "21477": "JG", "21480": "TD", "21484": "ZS", "21494": "YX", "21505": "YX", "21512": "HG", "21523": "XH", "21537": "PB", "21542": "PF", "21549": "KH", "21571": "E", "21574": "DA", "21588": "TD", "21589": "O", "21618": "ZC", "21621": "KHA", "21632": "ZJ", "21654": "KG", "21679": "LKG", "21683": "KH", "21710": "A", "21719": "YH", "21734": "WOE", "21769": "A", "21780": "WN", "21804": "XH", "21834": "A", "21899": "ZD", "21903": "RN", "21908": "WO", "21939": "ZC", "21956": "SA", "21964": "YA", "21970": "TD", "22003": "A", "22031": "JG", "22040": "XS", "22060": "ZC", "22066": "ZC", "22079": "MH", "22129": "XJ", "22179": "XA", "22237": "NJ", "22244": "TD", "22280": "JQ", "22300": "YH", "22313": "XW", "22331": "YQ", "22343": "YJ", "22351": "PH", "22395": "DC", "22412": "TD", "22484": "PB", "22500": "PB", "22534": "ZD", "22549": "DH", "22561": "PB", "22612": "TD", "22771": "KQ", "22831": "HB", "22841": "JG", "22855": "QJ", "22865": "XQ", "23013": "ML", "23081": "WM", "23487": "SX", "23558": "QJ", "23561": "YW", "23586": "YW", "23614": "YW", "23615": "SN", "23631": "PB", "23646": "ZS", "23663": "ZT", "23673": "YG", "23762": "TD", "23769": "ZS", "23780": "QJ", "23884": "QK", "24055": "XH", "24113": "DC", "24162": "ZC", "24191": "GA", "24273": "QJ", "24324": "NL", "24377": "TD", "24378": "QJ", "24439": "PF", "24554": "ZS", "24683": "TD", "24694": "WE", "24733": "LK", "24925": "TN", "25094": "ZG", "25100": "XQ", "25103": "XH", "25153": "PB", "25170": "PB", "25179": "KG", "25203": "PB", "25240": "ZS", "25282": "FB", "25303": "NA", "25324": "KG", "25341": "ZY", "25373": "WZ", "25375": "XJ", "25384": "A", "25457": "A", "25528": "SD", "25530": "SC", "25552": "TD", "25774": "ZC", "25874": "ZC", "26044": "YW", "26080": "WM", "26292": "PB", "26333": "PB", "26355": "ZY", "26366": "CZ", "26397": "ZC", "26399": "QJ", "26415": "ZS", "26451": "SB", "26526": "ZC", "26552": "JG", "26561": "TD", "26588": "JG", "26597": "CZ", "26629": "ZS", "26638": "YL", "26646": "XQ", "26653": "KG", "26657": "XJ", "26727": "HG", "26894": "ZC", "26937": "ZS", "26946": "ZC", "26999": "KJ", "27099": "KJ", "27449": "YQ", "27481": "XS", "27542": "ZS", "27663": "ZS", "27748": "TS", "27784": "SC", "27788": "ZD", "27795": "TD", "27812": "O", "27850": "PB", "27852": "MB", "27895": "SL", "27898": "PL", "27973": "QJ", "27981": "KH", "27986": "HX", "27994": "XJ", "28044": "YC", "28065": "WG", "28177": "SM", "28267": "QJ", "28291": "KH", "28337": "ZQ", "28463": "TL", "28548": "DC", "28601": "TD", "28689": "PB", "28805": "JG", "28820": "QG", "28846": "PB", "28952": "TD", "28975": "ZC", "29100": "A", "29325": "QJ", "29575": "SL", "29602": "FB", "30010": "TD", "30044": "CX", "30058": "PF", "30091": "YSP", "30111": "YN", "30229": "XJ", "30427": "SC", "30465": "SX", "30631": "YQ", "30655": "QJ", "30684": "QJG", "30707": "SD", "30729": "XH", "30796": "LG", "30917": "PB", "31074": "NM", "31085": "JZ", "31109": "SC", "31181": "ZC", "31192": "MLB", "31293": "JQ", "31400": "YX", "31584": "YJ", "31896": "ZN", "31909": "ZY", "31995": "XJ", "32321": "PF", "32327": "ZY", "32418": "HG", "32420": "XQ", "32421": "HG", "32438": "LG", "32473": "GJ", "32488": "TD", "32521": "QJ", "32527": "PB", "32562": "ZSQ", "32564": "JZ", "32735": "ZD", "32793": "PB", "33071": "PF", "33098": "XL", "33100": "YA", "33152": "PB", "33261": "CX", "33324": "BP", "33333": "TD", "33406": "YA", "33426": "WM", "33432": "PB", "33445": "JG", "33486": "ZN", "33493": "TS", "33507": "QJ", "33540": "QJ", "33544": "ZC", "33564": "XQ", "33617": "YT", "33632": "QJ", "33636": "XH", "33637": "YX", "33694": "WG", "33705": "PF", "33728": "YW", "33882": "SR", "34067": "WM", "34074": "YW", "34121": "QJ", "34255": "ZC", "34259": "XL", "34425": "JH", "34430": "XH", "34485": "KH", "34503": "YS", "34532": "HG", "34552": "XS", "34558": "YE", "34593": "ZL", "34660": "YQ", "34892": "XH", "34928": "SC", "34999": "QJ", "35048": "PB", "35059": "SC", "35098": "ZC", "35203": "TQ", "35265": "JX", "35299": "JX", "35782": "SZ", "35828": "YS", "35830": "E", "35843": "TD", "35895": "YG", "35977": "MH", "36158": "JG", "36228": "QJ", "36426": "XQ", "36466": "DC", "36710": "JC", "36711": "ZYG", "36767": "PB", "36866": "SK", "36951": "YW", "37034": "YX", "37063": "XH", "37218": "ZC", "37325": "ZC", "38063": "PB", "38079": "TD", "38085": "QY", "38107": "DC", "38116": "TD", "38123": "YD", "38224": "HG", "38241": "XTC", "38271": "ZC", "38415": "YE", "38426": "KH", "38461": "YD", "38463": "AE", "38466": "PB", "38477": "XJ", "38518": "YT", "38551": "WK", "38585": "ZC", "38704": "XS", "38739": "LJ", "38761": "GJ", "38808": "SQ", "39048": "JG", "39049": "XJ", "39052": "HG", "39076": "CZ", "39271": "XT", "39534": "TD", "39552": "TD", "39584": "PB", "39647": "SB", "39730": "LG", "39748": "TPB", "40109": "ZQ", "40479": "ND", "40516": "HG", "40536": "HG", "40583": "QJ", "40765": "YQ", "40784": "QJ", "40840": "YK", "40863": "QJG" };
- },
-
- // 提取拼音, 返回首字母大写形式
- getFullChars: function (str) {
- var result = '', name;
- var reg = new RegExp('[a-zA-Z0-9\- ]');
- for (var i = 0, len = str.length; i < len; i++) {
- var ch = str.substr(i, 1), unicode = ch.charCodeAt(0);
- if (unicode > 40869 || unicode < 19968) {
- result += ch;
- } else {
- name = this._getFullChar(ch);
- if (name !== false) {
- result += name;
- }
- }
- }
- return result;
- },
-
- // 提取首字母,返回大写形式
- getCamelChars: function (str) {
- if (typeof (str) !== 'string')
- throw new Error(-1, "函数getFisrt需要字符串类型参数!");
- var chars = []; //保存中间结果的数组
- for (var i = 0, len = str.length; i < len; i++) {
- //获得unicode码
- var ch = str.charAt(i);
- //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理
- chars.push(this._getChar(ch));
- }
- //处理arrResult,返回所有可能的拼音首字母串数组
- return this._getResult(chars);
- },
-
- // 提取第一个字的首字母,返回大写形式
- getCamelFistChar: function (str) {
- if (typeof (str) !== 'string')
- throw new Error(-1, "函数getFisrt需要字符串类型参数!");
- var chars = []; //保存中间结果的数组
-
- //获得第一个汉字的unicode码
- var ch = str.charAt(0);
- //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理
- chars.push(this._getChar(ch));
-
- //处理arrResult,返回所有可能的拼音首字母串数组
- return this._getResult(chars);
- },
-
- // 提取拼音
- _getFullChar: function (str) {
- for (var key in this.full_dict) {
- if (-1 !== this.full_dict[key].indexOf(str)) {
- return this._capitalize(key); break;
- }
- }
- return false;
- },
-
- // 首字母大写
- _capitalize: function (str) {
- if (str.length > 0) {
- var first = str.substr(0, 1).toUpperCase();
- var spare = str.substr(1, str.length);
- return first + spare;
- }
- },
-
- _getChar: function (ch) {
- var unicode = ch.charCodeAt(0);
- //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数
- if (unicode > 40869 || unicode < 19968)
- return ch; //dealWithOthers(ch);
- //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母
- if (!this.options.checkPolyphone)
- return this.char_dict.charAt(unicode - 19968);
- return this.polyphone[unicode] ? this.polyphone[unicode] : this.char_dict.charAt(unicode - 19968);
- },
-
- _getResult: function (chars) {
- if (!this.options.checkPolyphone)
- return chars.join('');
- var result = [''];
- for (var i = 0, len = chars.length; i < len; i++) {
- var str = chars[i], strlen = str.length;
- if (strlen == 1) {
- for (var j = 0; j < result.length; j++) {
- result[k] += str;
- }
- } else {
- var swap1 = result.slice(0);
- result = [];
- for (var j = 0; j < strlen; j++) {
- //复制一个相同的arrRslt
- var swap2 = swap1.slice(0);
- //把当前字符str[k]添加到每个元素末尾
- for (var k = 0; k < swap2.length; k++) {
- swap2[k] += str.charAt(j);
- }
- //把复制并修改后的数组连接到arrRslt上
- result = result.concat(swap2);
- }
- }
- }
- return result;
- }
-
- };
-
- var extend = function (dst, src) {
- for (var property in src) {
- dst[property] = src[property];
- }
- return dst;
- };
-
- return new Pinyin(arguments);
-})();
-
-export default Pinyin
\ No newline at end of file
diff --git a/im-uniapp/common/publicFc.js b/im-uniapp/common/publicFc.js
deleted file mode 100644
index 42042cb..0000000
--- a/im-uniapp/common/publicFc.js
+++ /dev/null
@@ -1,1103 +0,0 @@
-import http from '@/common/request'
-import browser from '@/common/browser'
-import store from '../store'
-import pinyin from '@/common/pinyin.js';
-import dayjs from "dayjs"
-import localForage from 'localforage';
-
-
-export default {
- // 获取字典
- getdict(dict) {
- return new Promise((resolve, reject) => {
- http.request({
- url: '/system/dict/data/type/' + dict,
- success: (res) => {
- if (res.data.code == 200) {
- var data = res.data.data
- var arr = []
- for (var i = 0; i < data.length; i++) {
- arr.push({
- label: data[i].dictLabel,
- value: data[i].dictValue
- })
- }
- // return arr
- resolve(arr);
- } else {
- reject(res);
- }
- },
- fail: (res) => {
- reject(new Error(res.errMsg));
- }
- });
- });
- },
- //文本转json
- returnParse(txt) {
- return JSON.parse(txt);
- },
- //字典翻译
- findLabel(arr, text) {
- for (var i = 0; i < arr.length; i++) {
- if (arr[i].value == text) {
- return arr[i].label
- break;
- }
- }
- },
- //判断按钮权限
- permissions(permissions) {
- var data = store.state.permissions
- var have = data.indexOf(permissions)
- if (have !== -1) {
- return true
- }
- },
- //判断单个角色权限
- hasRole(Role) {
- var data = store.state.userRole
- var have = data.indexOf(Role)
- if (have !== -1) {
- return true
- }
- },
- //判断多个角色权限
- hasRoles(Roles) {
- var data = store.state.userRole
-
- function fidrole(Roles) {
- for (var i = 0; i < Roles.length; i++) {
- var have = data.indexOf(Roles[i])
- if (have !== -1) {
- return true
- }
- }
- return false
- }
- return fidrole(Roles)
- },
- //预览单张图片
- previewImagesolo(File) {
- uni.previewImage({
- urls: [File],
- });
- },
- //预览一组图片(图片组,图片索引)
- previewImages(FilePaths, current) {
- uni.previewImage({
- urls: FilePaths,
- current: current
- });
- },
- //根据后缀判断文件类型
- getFileType(fileName) {
- // 后缀获取
- let suffix = '';
- // 获取类型结果
- let result = '';
- try {
- const flieArr = fileName.split('.');
- suffix = flieArr[flieArr.length - 1];
- } catch (err) {
- suffix = '';
- }
- // fileName无后缀返回 false
- if (!suffix) {
- return false;
- }
- suffix = suffix.toLocaleLowerCase();
- // 图片格式
- const imglist = ['png', 'jpg', 'jpeg', 'bmp', 'gif'];
- // 进行图片匹配
- result = imglist.find(item => item === suffix);
- if (result) {
- return 'image';
- }
- // 匹配txt
- const txtlist = ['txt'];
- result = txtlist.find(item => item === suffix);
- if (result) {
- return 'txt';
- }
- // 匹配 excel
- const excelist = ['xls', 'xlsx'];
- result = excelist.find(item => item === suffix);
- if (result) {
- return 'excel';
- }
- // 匹配 word
- const wordlist = ['doc', 'docx'];
- result = wordlist.find(item => item === suffix);
- if (result) {
- return 'word';
- }
- // 匹配 pdf
- const pdflist = ['pdf'];
- result = pdflist.find(item => item === suffix);
- if (result) {
- return 'pdf';
- }
- // 匹配 ppt
- const pptlist = ['ppt', 'pptx'];
- result = pptlist.find(item => item === suffix);
- if (result) {
- return 'ppt';
- }
- // 匹配 视频
- const videolist = ['mp4', 'm2v', 'mkv', 'rmvb', 'wmv', 'avi', 'flv', 'mov', 'm4v'];
- result = videolist.find(item => item === suffix);
- if (result) {
- return 'video';
- }
- // 匹配 音频
- const radiolist = ['mp3', 'wav', 'wmv'];
- result = radiolist.find(item => item === suffix);
- if (result) {
- return 'radio';
- }
- // 其他 文件类型
- return 'other';
- },
- //新开页面打开文档,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx
- onOpenDoc(e) {
- uni.downloadFile({
- url: e,
- success: function(res) {
- var filePath = res.tempFilePath;
- uni.openDocument({
- filePath: filePath,
- success: function(res) {
- console.log('打开文档成功');
- }
- });
- }
- });
- },
- //模拟浏览器打开第三方链接
- openWebView(url) {
- // #ifndef APP-PLUS
- uni.showToast({
- title: '仅手机端可打开',
- icon: 'none'
- })
- return
- // #endif
- var options = { // 自定义头部参数
- }
- browser.init(options)
- browser.show(url)
- },
- //获取时间format
- getNewDate(format, add0, datetime) {
- //获取当前时间
- function addZero(val) {
- //补零
- if (add0) {
- return val <= 9 ? '0' + val : val;
- } else {
- return val
- }
- }
- var date = new Date()
- if (datetime) {
- date = Date.parse(new Date(datetime))
- }
-
- var year = date.getFullYear(),
- month = addZero(date.getMonth() + 1),
- strDate = addZero(date.getDate()),
- hours = addZero(date.getHours()),
- minutes = addZero(date.getMinutes()),
- seconds = addZero(date.getSeconds());
- switch (format) {
- case 'y':
- return year;
- break;
- case 'm':
- return month;
- break;
- case 'd':
- return strDate;
- break;
- case 'h':
- return hours;
- break;
- case 'mm':
- return minutes;
- break;
- case 'ss':
- return seconds;
- break;
- case 'ymd':
- return year + '/' + month + '/' + strDate;
- break;
- case 'hmmss':
- return hours + ':' + minutes + ':' + seconds;
- break;
- default:
- return year + '/' + month + '/' + strDate + ' ' + hours + ':' + minutes + ':' + seconds;
- break;
- }
- },
- //获取本地存储object/初始化
- getKeyObjectStorage(keyname) {
- try {
- var chatData = uni.getStorageSync(keyname);
- if (chatData) {
- chatData = JSON.parse(chatData)
- return chatData
- } else {
- chatData = new Object()
- return chatData
- uni.setStorageSync(keyname, JSON.stringify(chatData));
- }
- } catch (e) {
- return new Object()
- }
- },
- loadMore({
- url = 'xxx/list/',
- queryParams = {
- refreshing: false,
- pageNum: 1,
- status: 'more', //more loading前 loading loading中 noMore 没有更多了
- pageSize: 10
- },
- status = '0' //0无更多数据 1持续加载 2重新加载 3无数据+清空数据
- }) {
- return new Promise((resolve, reject) => {
- http.request({
- url: url + '&pageNum=' + (queryParams.refreshing ? 1 : queryParams.pageNum) +
- '&pageSize=' + queryParams.pageSize,
- success: res => {
- if (res.data.code == 200) {
- let list = [];
- let data = res.data.rows;
- if (queryParams.refreshing && res.data.rows == '' || queryParams
- .refreshing && res.data.rows.length == 0) {
- queryParams.status = 'noMore'
- resolve({
- queryParams: queryParams,
- list: list,
- status: '3'
- })
- return
- }
- if (res.data.rows == '' || res.data.rows.length == 0) {
- queryParams.status = 'noMore'
- resolve({
- queryParams: queryParams,
- list: list,
- status: '0'
- })
- return
- }
- for (let i = 0, length = data.length; i < length; i++) {
- var item = data[i];
- list.push(item);
- }
- if (queryParams.refreshing) {
- queryParams.refreshing = false;
- queryParams.pageNum = 2;
- queryParams.status = 'more'
- resolve({
- queryParams: queryParams,
- list: list,
- status: '2'
- })
- } else {
- queryParams.pageNum += 1;
- queryParams.status = 'more'
- resolve({
- queryParams: queryParams,
- list: list,
- status: '1'
- })
- }
- } else {
- reject(res);
- }
- },
- fail: (res) => {
- reject(res);
- }
- });
- });
- },
- //接收推送消息
- getPush(resbody) {
- var pushType = resbody.pushType //推送类型
- if (pushType == 'MSG') {
- /*
- if(resbody.msgContent.msgType=='TRTC_VOICE_START'||resbody.msgContent.msgType=='TRTC_VIDEO_START'){
- //音视频开始拦截
- return
- }
- */
- var userId = resbody.userId
- var windowType = 'SINGLE'
- /*
- if(resbody.groupInfo.userId){
- userId=resbody.groupInfo.userId
- windowType='GROUP'
- }
- */
- const _userId = uni.getStorageSync("userId")
-
-
- this.pushInMsg({
- type: resbody.msgContent.msgType == 'ALERT' ? 3 : 1, //显示类型 1左侧 2右侧 3中间
- msgContent: resbody.msgContent.content, //msg内容
- msgType: resbody.msgContent.msgType, //msgType信息类型
- windowType: windowType, //聊天室类型 SINGLE GROUP
- time: resbody.createTime, //时间
- fromInfo: resbody.fromInfo, //来源信息
- groupInfo: resbody.groupInfo, //群信息
- userId: userId, //talktoId
- personId: resbody.fromInfo.userId,
- msgId: resbody.msgId, //消息Id
- disturb: resbody.msgContent.disturb, //是否静默消息
- top: resbody.msgContent.top //是否置顶
- })
-
- return
- }
- if (pushType == 'NOTICE') { //红点通知等
- if (resbody.msgContent.topicReply.count) {
- store.commit('update_topicReply', resbody.msgContent.topicReply)
- }
- if (resbody.msgContent.topicRed.portrait) {
- store.commit('update_topicRed', resbody.msgContent.topicRed)
- }
- if (resbody.msgContent.friendApply.count) {
- store.commit('update_friendApply', resbody.msgContent.friendApply)
- }
- }
- if (pushType == 'BIG') { //大消息
- var bigId = resbody.msgContent.content
- http.request({
- url: '/chat/getBigMsg/' + bigId,
- success: (res) => {
- if (res.data.code == 200) {
- var resbody = res.data.data
- var userId = resbody.fromInfo.userId
- var windowType = 'SINGLE'
- if (resbody.groupInfo.userId) {
- userId = resbody.groupInfo.userId
- windowType = 'GROUP'
- }
- this.pushInMsg({
- type: resbody.msgContent.msgType == 'ALERT' ? 3 : 1, //显示类型 1左侧 2右侧 3中间
- msgContent: resbody.msgContent.content, //msg内容
- msgType: resbody.msgContent.msgType, //msgType信息类型
- windowType: windowType, //聊天室类型 SINGLE GROUP
- time: resbody.createTime, //时间
- fromInfo: resbody.fromInfo, //来源信息
- groupInfo: resbody.groupInfo, //群信息
- userId: userId, //talktoId
- personId: resbody.fromInfo.userId,
- msgId: resbody.msgId, //消息Id
- disturb: resbody.msgContent.disturb, //是否静默消息
- top: resbody.msgContent.top //是否置顶
- })
- }
- }
- });
- return
- }
- },
- // 接收到的聊天推送
- pushInMsg({
- msgId, //消息Id
- msgContent, //内容
- msgType, //消息类型
- windowType, //聊天室类型 SINGLE GROUP
- userId, //聊天对象ID
- personId, //发送人ID
- time, //时间
- type, //显示类型 1左侧 2右侧 3中间
- fromInfo, //来源
- groupInfo, //群信息
- disturb, //是否静默消息
- top //是否置顶
- }) {
- var msgTypeLabel = ''; //消息类型
- if (msgType == 'TEXT') {
- msgTypeLabel = msgContent;
- }
- if (msgType == 'ALERT') {
- msgTypeLabel = msgContent;
- }
- if (msgType == 'IMAGE') {
- msgTypeLabel = '[图片]';
- }
- if (msgType == 'VOICE') {
- msgTypeLabel = '[语音]';
- }
- if (msgType == 'VIDEO') {
- msgTypeLabel = '[视频]';
- }
- if (msgType == 'LOCATION') {
- msgTypeLabel = '[位置]';
- }
- if (msgType == 'COLLECTION') {
- msgTypeLabel = '[收藏]';
- }
- if (msgType == 'CARD') {
- msgTypeLabel = '[名片]';
- }
- if (msgType == 'FILE') {
- msgTypeLabel = '[文件]';
- }
- if (msgType == 'TRTC_VOICE_END') {
- msgTypeLabel = '[语音通话]'
- }
- if (msgType == 'TRTC_VIDEO_END') {
- msgTypeLabel = '[视频通话]'
- }
- store.dispatch('createChatObj', {
- userId: userId,
- windowType: windowType,
- }).then(res => {
- var localData = res.data
- store.dispatch('getchatDatalist');
- store.dispatch('getChatList');
- var chatWindowData = store.state.chatDatalist[userId].list
- var chatListInfo = store.state.chatlist[userId]
-
- var data2 = this.getKeyObjectStorage(store.state.userInfo.userId + '_' +
- 'chatlistData')
- // var _num=data2[userId].num||
-
- // 找到数组中对象属性值一样的对象并返回
- function arrfindobject({
- arr,
- object,
- key
- }) {
- var result = arr.find(item => {
- return item[key] == object[key]
- });
- return result
- }
- var same = arrfindobject({
- arr: chatWindowData,
- object: {
- msgId: msgId
- },
- key: 'msgId'
- })
- if (same) {
- return
- }
- //离线消息体
- var msgOffline = {
- userId: userId,
- personId: personId,
- nickName: fromInfo.nickName,
- portrait: fromInfo.portrait,
- msgType: msgType,
- content: msgContent,
- time: time,
- type: type,
- msgId: msgId,
- windowType: windowType
- }
-
- // 聊天记录体
- var msgList = {}
- if (windowType == 'SINGLE') {
- msgList = {
- userId: userId,
- personId: personId,
- nickName: fromInfo.nickName,
- portrait: fromInfo.portrait,
- content: msgTypeLabel,
- time: dayjs().format("YYYY/MM/DD HH:mm:ss"),
- num: disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num + 1 : 1),
- windowType: windowType,
- disturb: "N", //是否静默消息
- top: "N", //是否置顶
- userType: fromInfo.userType
- }
- }
- if (windowType == 'GROUP') {
- msgList = {
- userId: userId,
- personId: personId,
- nickName: groupInfo.nickName,
- portrait: groupInfo.portrait,
- content: msgTypeLabel,
- time: time,
- num: disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num + 1 : 1),
- windowType: windowType,
- disturb: "N", //是否静默消息
- top: top, //是否置顶
- userType: 'GROUP'
- }
- }
- chatWindowData.push(msgOffline)
- store.dispatch('updateChatById', {
- userId: userId,
- data: chatWindowData
- })
- store.dispatch('updateChatListInfoById', {
- userId: userId,
- data: msgList
- })
- store.dispatch('tabBarpull')
- store.dispatch('updateChatDataState', userId);
- });
- },
- //发送消息
- pushOutMsg({
- msgContent, //内容
- msgType, //消息类型
- windowType, //聊天室类型SINGLE GROUP
- userId
- }) {
- var msgTypeLabel = ''; //消息类型
- if (msgType == 'TEXT') {
- msgTypeLabel = msgContent;
- }
- if (msgType == 'ALERT') {
- msgTypeLabel = msgContent;
- }
- if (msgType == 'IMAGE') {
- msgTypeLabel = '[图片]';
- }
- if (msgType == 'VOICE') {
- msgTypeLabel = '[语音]';
- }
- if (msgType == 'VIDEO') {
- msgTypeLabel = '[视频]';
- }
- if (msgType == 'LOCATION') {
- msgTypeLabel = '[位置]';
- }
- if (msgType == 'COLLECTION') {
- msgTypeLabel = '[收藏]';
- }
- if (msgType == 'CARD') {
- msgTypeLabel = '[名片]';
- }
- if (msgType == 'FILE') {
- msgTypeLabel = '[文件]';
- }
- if (msgType == 'TRTC_VOICE_END') {
- msgTypeLabel = '[语音通话]'
- }
- if (msgType == 'TRTC_VIDEO_END') {
- msgTypeLabel = '[视频通话]'
- }
- var userInfo = store.state.userInfo;
- store.dispatch('createChatObj', {
- userId: userId,
- windowType: windowType,
- }).then(res => {
- var localData = res.data
- store.dispatch('getchatDatalist');
- store.dispatch('getChatList');
- var chatWindowData = store.state.chatDatalist[userId].list
- var chatListInfo = store.state.chatlist[userId]
- var time = this.getNewDate('format', true)
- //在线消息体
- var msgOnlie = {}
- //聊天记录
- var msgList = {}
- var url = ''
- if (windowType == 'SINGLE') {
- msgOnlie = {
- userId: userId,
- msgType: msgType,
- content: msgContent
- }
- url = '/chat/sendMsg'
- msgList = {
- userId: userId,
- personId: userInfo.userId,
- nickName: localData.fromInfo.nickName,
- portrait: localData.fromInfo.portrait,
- content: msgTypeLabel,
- time: time,
- num: chatListInfo.disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num : 0),
- windowType: windowType,
- disturb: chatListInfo.disturb ? chatListInfo.disturb : 'N', //是否静默消息
- top: chatListInfo.top ? chatListInfo.top : 'N', //是否置顶
- userType: localData.fromInfo.userType
- }
- }
- if (windowType == 'GROUP') {
- msgOnlie = {
- groupId: userId,
- msgType: msgType,
- content: msgContent
- }
- url = '/group/sendMsg'
- msgList = {
- userId: userId,
- personId: userInfo.userId,
- nickName: localData.groupInfo.nickName,
- portrait: localData.groupInfo.portrait,
- content: msgTypeLabel,
- time: time,
- num: chatListInfo.disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num : 0),
- windowType: windowType,
- disturb: chatListInfo.disturb ? chatListInfo.disturb : 'N', //是否静默消息
- top: chatListInfo.top ? chatListInfo.top : 'N', //是否置顶
- userType: 'GROUP'
- }
- }
- //离线消息体 自己的消息
- var msgOffline = {
- userId: userInfo.userId,
- personId: userInfo.userId,
- nickName: userInfo.nickName,
- portrait: userInfo.portrait,
- msgType: msgType,
- content: msgContent,
- time: time,
- type: 2,
- msgId: 'local',
- windowType: windowType
- };
- //离线/发送失败错误消息体
- var msgNotSend = {
- userId: userInfo.userId,
- portrait: userInfo.portrait,
- msgType: msgType,
- content: msgContent,
- type: 3
- };
- var msgSendType = 'wating';
- //开始发送消息
- store.dispatch('sendMsg', {
- userId: userId,
- data: msgOnlie
- });
-
- // TODO
- // 发送完成之后设置消息状态
-
- //TODO
- // msgSendType = 'error';
- msgOffline.sendtype = msgSendType;
- msgOffline.msgId = "1231"
- msgNotSend.content = msgOnlie.content;
- msgList.content = msgOnlie.content;
-
- chatWindowData.push(msgOffline);
- if (msgSendType == 'error') {
- chatWindowData.push(msgNotSend);
- }
- store.dispatch('updateChatById', {
- userId: userId,
- data: chatWindowData
- });
- store.dispatch('updateChatListInfoById', {
- userId: userId,
- data: msgList
- });
- store.dispatch('tabBarpull');
- store.dispatch('updateChatDataState', userId);
-
-
- return false;
-
- http.request({
- url: url,
- method: 'POST',
- data: JSON.stringify(msgOnlie),
- success: res => {
- if (res.data.code == 200) {
- if (res.data.data.status !== '0') {
- msgSendType = 'error';
- msgOffline.sendtype = msgSendType;
- msgOffline.msgId = res.data.data.msgId
- msgNotSend.content = res.data.data.statusLabel;
- msgList.content = res.data.data.statusLabel;
- } else {
- msgSendType = 'success';
- }
- } else {
- msgSendType = 'error';
- msgOffline.sendtype = msgSendType;
- msgNotSend.content = res.data.msg;
- }
- chatWindowData.push(msgOffline);
- if (msgSendType == 'error') {
- chatWindowData.push(msgNotSend);
- }
- store.dispatch('updateChatById', {
- userId: userId,
- data: chatWindowData
- });
- store.dispatch('updateChatListInfoById', {
- userId: userId,
- data: msgList
- });
- store.dispatch('tabBarpull');
- store.dispatch('updateChatDataState', userId);
- },
- fail: res => {
- msgSendType = 'error';
- msgOffline.sendtype = msgSendType;
- msgNotSend.content = '发送失败,请检查网络';
- chatWindowData.push(msgOffline);
- chatWindowData.push(msgNotSend);
- store.dispatch('updateChatById', {
- userId: userId,
- data: chatWindowData
- });
- store.dispatch('updateChatListInfoById', {
- userId: userId,
- data: msgList
- });
- store.dispatch('tabBarpull');
- store.dispatch('updateChatDataState', userId);
- }
- });
- });
- },
- //H5保存base64图片
- h5SaveBase64Img({
- base64
- }) {
- var arr = base64.split(',');
- var bytes = atob(arr[1]);
- let ab = new ArrayBuffer(bytes.length);
- let ia = new Uint8Array(ab);
- for (let i = 0; i < bytes.length; i++) {
- ia[i] = bytes.charCodeAt(i);
- }
- var blob = new Blob([ab], {
- type: 'application/octet-stream'
- });
- var url = URL.createObjectURL(blob);
- var a = document.createElement('a');
- a.href = url;
- a.download = new Date().getTime() + ".png";
- var e = document.createEvent('MouseEvents');
- e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
- a.dispatchEvent(e);
- URL.revokeObjectURL(url);
- },
- //APP保存base64图片
- plusSaveBase64Img({
- base64
- }) {
- const bitmap = new plus.nativeObj.Bitmap("test");
- bitmap.loadBase64Data(base64, function() {
- const url = new Date().getTime() + ".png"; // url为时间戳命名方式
- bitmap.save(url, {
- overwrite: true, // 是否覆盖
- }, (i) => {
- uni.saveImageToPhotosAlbum({
- filePath: url,
- success: function() {
- uni.showToast({
- title: '图片保存成功',
- icon: 'none'
- })
- bitmap.clear()
- }
- });
- }, (e) => {
- uni.showToast({
- title: '图片保存失败',
- icon: 'none'
- })
- bitmap.clear()
- });
- }, (e) => {
- uni.showToast({
- title: '图片保存失败',
- icon: 'none'
- })
- bitmap.clear()
- });
- },
- // 寻找数组中的对象中的key对应值的对象
- arrFindkey({
- arr, //数组[{id:'1'}]
- key, //key键值'id'
- val //值 '1'
- }) {
- var item = arr.find(function(obj, i, arr) {
- return obj[key] === val
- })
- var index = arr.findIndex(function(obj, i, arr) {
- return obj[key] === val
- })
- return {
- item: item,
- index: index
- }
- },
- //APP下载文件
- plusDownload({
- onlinePath,
- savePath = 'file://storage/emulated/0/Documents/weiliao/'
- }) {
- return new Promise((resolve, reject) => {
- // #ifdef H5
- reject('下载失败,H5不支持plus')
- return
- // #endif
- var fname = onlinePath.split("/").pop()
- var localPath = savePath + fname
- plus.io.resolveLocalFileSystemURL( //检测本地是否存在
- localPath,
- (entry) => {
- console.log('文件已存在' + entry.name)
- resolve(entry.fullPath)
- },
- (e) => {
- console.log('文件不存在:' + e.message);
- uni.showLoading({
- title: '加载中'
- })
- createDownload(onlinePath)
- }
- );
-
- function createDownload(e) {
- let downloadOptions = {
- method: "GET",
- timeout: 120,
- retryInterval: 10,
- filename: savePath
- };
- // https://www.html5plus.org/doc/zh_cn/downloader.html#plus.downloader.Download
- var dtask = plus.downloader.createDownload(e, downloadOptions, function(download, status) {
- uni.hideLoading()
- // 下载完成
- if (status == 200) {
- resolve(download.filename)
- } else {
- reject({
- status: status,
- msg: '下载失败'
- })
- }
- });
- dtask.start();
- }
- })
- },
- //APP打开文件
- plusOpenFile({
- filePath
- }) {
-
- let system = uni.getSystemInfoSync().platform;
- if (system == 'ios') {
- filePath = encodeURI(filePath);
- }
- uni.openDocument({
- filePath,
- success: res => {
- // console.log('打开文件成功');
- },
- fail: res => {
- console.log(res);
- }
- });
- },
- // 汉字拼音A-Z排序
- sortList({
- list,
- key
- }) {
- var sortKey = [] //字母
- list.forEach(item => {
- let firstChar = ''
- item[key] = item[key] ? item[key].trim() : ""
- if (item[key]) { // 如传入空字符串,getCamelFistChar错误地返回Y
- firstChar = pinyin.getCamelFistChar(item[key]).toUpperCase() // 如字母开头,将返回字母且保留原大小写;一律改为大写
- var reg = /^\d+$/;
- if (reg.test(firstChar)) {
- firstChar = 'Z#'
- }
- item.sort = firstChar
- sortKey.push(firstChar)
- }
- })
- sortKey = [...new Set(sortKey)]
- list.sort((a, b) => a.sort.localeCompare(b.sort, 'zh')) //排序
- sortKey.sort((a, b) => a.localeCompare(b, 'zh')) //排序
- var sortlist = []
- for (var i = 0; i < sortKey.length; i++) {
- var sort = sortKey[i]
- if (sort == 'Z#') {
- sort = '#'
- }
- sortlist.push({
- letter: sort,
- data: []
- })
- for (var j = 0; j < list.length; j++) {
- var item = list[j]
- if (item.sort == 'Z#') {
- item.sort = '#'
- }
- if (item.sort == sort) {
- sortlist[i].data.push(item)
- }
- }
- }
- return sortlist
- },
- saoyisao() { //扫一扫
- // #ifdef APP-PLUS
- uni.scanCode({
- success: (res) => {
- var result = res.result
- var data = res.result.split(':')
- var type = data[0]
- var value = data[1]
- switch (type) {
- case 'group':
- uni.navigateTo({
- url: '../../wx/groupInfo/scanCodeDetail?param=' + result
- })
- break;
- case 'user':
- uni.navigateTo({
- url: '../../wx/personInfo/detail?param=' + value + '&source=1'
- })
- break;
- default:
- break;
- }
- }
- });
- // #endif
- // #ifndef APP-PLUS
- uni.showToast({
- title: '扫一扫',
- icon: 'none'
- })
- // #endif
- },
- // 设置原生titleNView导航文字
- setTitleNViewBtns(index, text) {
- let pages = getCurrentPages();
- let page = pages[pages.length - 1];
- // #ifdef APP-PLUS
- let currentWebview = page.$getAppWebview();
- let titleObj = currentWebview.getStyle().titleNView;
- if (!titleObj.buttons) {
- return;
- }
- titleObj.buttons[index].text = text;
- currentWebview.setStyle({
- titleNView: titleObj
- });
- // #endif
- },
- formatMessage(msg){
- msg.pushType="MSG"
- var msgType="TEXT"
- var data = store.state.addressList
-
- const fromUserData=data.find(item=>item.userId==msg.fromId)
- console.log("*****************查找到通讯录中的数据*****************")
- console.log("*****************查找到通讯录中的数据*****************")
- console.log("*****************查找到通讯录中的数据*****************")
- console.log(fromUserData)
-
-
- const _data=JSON.parse(msg.messageBody)
- // try{
- // console.log("=======================formatMessage")
- // console.log(_data)
- // _data.content=JSON.parse(_data.content)
- // msgType=_data.content.type
- // }catch(e){
- // console.error(e)
- // //TODO handle the exception
- // }
- msg.msgContent={
- msgType:_data.msgType,
- content:_data.content,
- disturb:false,
- top:false,
- }
-
- msg.windowType="SINGLE"
- msg.createTime=msg.messageTime;
- msg.userId=msg.fromId;
- msg.fromInfo={
- userId:msg.fromId,
- userType:1,
- nickName:fromUserData?fromUserData.realname:msg.fromId,
- portrait:"https://shudong2022.oss-cn-hangzhou.aliyuncs.com/common/user/logo.png"
- };
- msg.groupInfo={};
- msg.msgId=msg.messageKey;
-
- return msg
-
- },
- debounce(func, wait = 1000, immediate = true) {
- /**
- * @desc 函数防抖
- * @param func 目标函数
- * @param wait 延迟执行毫秒数
- * @param immediate true - 立即执行, false - 延迟执行
- */
- let timer;
- return function() {
- let args = arguments;
- if (timer) {
- console.log('拦截')
- clearTimeout(timer);
- }
- if (immediate) {
- let callNow = !timer;
- timer = setTimeout(() => {
- timer = null;
- }, wait);
- if (callNow) {
- func.apply(this, args);
- }
- } else {
- timer = setTimeout(() => {
- func.apply(this, args);
- }, wait)
- }
- }
- },
- throttle(func, wait = 1000, type = 1) {
- /**
- * @desc 函数节流
- * @param func 函数
- * @param wait 延迟执行毫秒数
- * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发
- */
- let previous = 0;
- let timeout;
- return function() {
- let context = this;
- let args = arguments;
- if (type === 1) {
- let now = Date.now();
-
- if (now - previous > wait) {
- func.apply(context, args);
- previous = now;
- }
- } else if (type === 2) {
- if (!timeout) {
- timeout = setTimeout(() => {
- timeout = null;
- func.apply(context, args)
- }, wait)
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/im-uniapp/common/request.js b/im-uniapp/common/request.js
deleted file mode 100644
index 21050d4..0000000
--- a/im-uniapp/common/request.js
+++ /dev/null
@@ -1,302 +0,0 @@
-// #ifdef APP-PLUS
-import appUpgrade from '@/common/appUpgrade.js';
-// #endif
-import config from "@/common/config.js"
-let http = {
- 'setBaseUrl': (url) => {
- if (url.charAt(url.length - 1) === "/") {
- url = url.substr(0, url.length - 1)
- }
- http.baseUrl = url;
- },
- 'header': {},
- 'beforeRequestFilter': (config) => {
- return config
- },
- 'beforeResponseFilter': (res) => {
- return res
- },
- 'afterResponseFilter': (successResult) => {},
- 'get': get,
- 'delete': deletE,
- 'post': post,
- 'put': put,
- 'request': request,
- 'uploadFile': uploadFile,
- 'downloadFile': downloadFile
-}
-
-
-function init(con) {
- //url
- let url = http.baseUrl;
- if (url && con.url && !con.url.match(/^(http|https):\/\/([\w.]+\/?)\S*$/)) {
- if (con.url.charAt(0) !== "/") {
- con.url = "/" + con.url;
- }
- con.url = url.concat(con.url);
- }
- //header
- if (http.header != undefined && http.header != null) {
- if (!con.header) {
- con.header = http.header;
- } else {
- Object.keys(http.header).forEach(function(key) {
- con.header[key] = http.header[key]
- });
- }
- }
-}
-
-function request(con) {
- init(con);
- let config = { //判断是否有以下属性没有就赋予默认值
- url: con.url ? con.url : http.baseUrl,
- data: con.data,
- header: con.header,
- method: con.method ? con.method : 'GET',
- dataType: con.dataType ? con.dataType : 'json',
- responseType: con.responseType ? con.responseType : 'text',
- success: con.success ? (res) => {
- http.afterResponseFilter(con.success(http.beforeResponseFilter(res)));
- } : null,
- fail: con.fail ? (res) => {
- con.fail(res);
- } : () => {
- uni.showToast({
- title: '请检查网络',
- icon: 'none'
- });
- uni.hideLoading();
- },
- complete: con.complete ? (res) => {
- con.complete(res);
- } : (res) => {
- if (!res.statusCode) {
- uni.showToast({
- title: '请求失败',
- icon: 'none'
- });
- uni.hideLoading();
- }
- if (res.statusCode !== 200) {
- uni.showToast({
- title: '请求失败',
- icon: 'none'
- });
- uni.hideLoading();
- }
- if (res.statusCode == 200) {
- if (res.data.code == 401) { //登录过期
- // uni.showToast({
- // title: '登录已过期,请重新登录',
- // icon: 'none'
- // });
- // uni.hideLoading();
- // uni.reLaunch({
- // url:'/pages/wxindex/index'
- // })
- }
- // #ifdef APP-PLUS
- if (res.data.code == 601) { //强制拉起升级
- request({
- url: '/common/getVersion',
- success: (res) => {
- appUpgrade.init({
- titleText: '版本更新'+res.data.data.version,
- packageUrl:res.data.data.url,
- content: res.data.data.content,
- forceUpgrade:true
- });
- appUpgrade.show();
- }
- });
- }
- // #endif
- else if (res.data.code && res.data.code !== 200) { //这里code是自己的服务器正确标识
- uni.showToast({
- title: res.data.msg,
- icon: 'none',
- position:'top'
- });
- }
- uni.hideLoading();
- }
- uni.stopPullDownRefresh();
- }
- }
- const AUTH_TOKEN = ["Authorization","device","version"];
- for (var i = 0; i < AUTH_TOKEN.length; i++) {
- if (uni.getStorageSync(AUTH_TOKEN[i])) {
- http.header[AUTH_TOKEN[i]] = uni.getStorageSync(AUTH_TOKEN[i]);
- }
- }
- return uni.request(http.beforeRequestFilter(config));
-}
-
-function get(url, con, success) {
- let conf = {};
- if (con && typeof con == 'function') {
- if (success && typeof success == 'object') {
- conf = success;
- }
- conf.success = con
- } else {
- if (con && typeof con == 'object') {
- conf = con;
- }
- conf.success = success;
- }
-
- if (url) {
- conf.url = url
- }
- conf.method = "GET";
- return request(conf);
-}
-
-function deletE(url, con, success) {
- let conf = {};
- if (con && typeof con == 'function') {
- if (success && typeof success == 'object') {
- conf = success;
- }
- conf.success = con
- } else {
- if (con && typeof con == 'object') {
- conf = con;
- }
- conf.success = success;
- }
-
- if (url) {
- conf.url = url
- }
- conf.method = "DELETE";
- return request(conf);
-}
-
-function post(url, data, con, success) {
- let conf = {};
- if (con && typeof con == 'function') {
- if (success && typeof success == 'object') {
- conf = success
- }
- conf.success = con;
- } else {
- if (con && typeof con == 'object') {
- conf = con;
- }
- conf.success = success;
- }
- if (url) {
- conf.url = url
- }
- if (data) {
- conf.data = data
- }
- conf.method = "POST";
- return request(conf);
-}
-
-function put(url, data, con, success) {
- let conf = {};
- if (con && typeof con == 'function') {
- if (success && typeof success == 'object') {
- conf = success
- }
- conf.success = con;
- } else {
- if (con && typeof con == 'object') {
- conf = con;
- }
- conf.success = success;
- }
- if (url) {
- conf.url = url
- }
- if (data) {
- conf.data = data
- }
- conf.method = "PUT";
- return request(conf);
-}
-
-function uploadFile(con) {
- init(con);
- console.log("========================")
- console.log("========================")
- console.log("========================")
- console.error(con.url)
- console.error(con.url)
- console.error(con.url)
- console.error(con.url)
- let config = {
- url: con.url ? con.url : http.baseUrl,
- files: con.files,
- filesType: con.filesType,
- filePath: con.filePath,
- name: con.name,
- header: con.header,
- formData: con.formData,
- success: con.success ? (res) => {
- http.afterResponseFilter(con.success(http.beforeResponseFilter(res)));
- } : null,
- fail: con.fail ? (res) => {
- con.fail(res);
- } : null,
- complete: con.complete ? (res) => {
- con.complete(res);
- } : null
- }
- const AUTH_TOKEN = ["Authorization","device","version"];
- for (var i = 0; i < AUTH_TOKEN.length; i++) {
- if (uni.getStorageSync(AUTH_TOKEN[i])) {
- http.header[AUTH_TOKEN[i]] = uni.getStorageSync(AUTH_TOKEN[i]);
- }
- }
- return uni.uploadFile(http.beforeRequestFilter(config));
-}
-
-function downloadFile(con) {
- init(con);
- let config = {
- url: con.url ? con.url : http.baseUrl,
- header: con.header,
- success: con.success ? (res) => {
- http.afterResponseFilter(con.success(http.beforeResponseFilter(res)));
- } : null,
- fail: con.fail ? (res) => {
- con.fail(res);
- } : null,
- complete: con.complete ? (res) => {
- con.complete(res);
- } : null
- }
- return uni.downloadFile(http.beforeRequestFilter(config));
-}
-// 使用
-//POST
-// this.$http.request({
-// url: '/xxx',
-// method: 'POST',
-// data:JSON.stringify({id:111}),
-// success: (res) => {
-// if (res.data.code == 200) {
-//
-// }
-// }
-// });
-//GET
-// this.$http.request({
-// url: '/xxx?id=111',
-// success: (res) => {
-// if (res.data.code == 200) {
-//
-// }
-// }
-// });
-// 地址及配置
-http.setBaseUrl(config.getBaseApiUrl()); //在线服务器
-// http.setBaseUrl("http://192.168.0.105:8080"); //离线服务器
-export default http
diff --git a/im-uniapp/common/socketTask.js b/im-uniapp/common/socketTask.js
deleted file mode 100644
index d67b929..0000000
--- a/im-uniapp/common/socketTask.js
+++ /dev/null
@@ -1,192 +0,0 @@
-import config from "@/common/config.js"
-let timer = null
-let retimer = null
-import store from '../store'
-import * as sdk from "@/common/imSdk/lim-sdk.js";
-import lim from "@/common/imSdk/sdk-bridge.js";
-
-import publicFc from '@/common/publicFc';
-import localForage from 'localforage';
-
-
-export default {
- socketTask: null,
- // 连接WebSocket
- connectSocket() {
-
-
-
-
-
- const ListenerMap = {
- onSocketConnectEvent: (option, status, data) => {
- console.log("已建立连接:" + JSON.stringify(status));
- },
- onSocketErrorEvent: (error) => {
- console.log("连接出现错误:" + userId);
- },
- onSocketReConnectEvent: () => {
- console.log("正在重连:");
- },
- onSocketCloseEvent: () => {
- console.log("连接关闭:");
- },
- onSocketReConnectSuccessEvent: () => {
- console.log("重连成功");
- },
- onOfflineMessage: (e) => {
- // console.log("====================拉取到离线消息")
- // console.log(e)
- setTimeout(function() {
- if (e.length > 0) {
- e.map((msg) => {
- setTimeout(()=>{
- const _data = publicFc.formatMessage(msg)
- uni.$emit('onP2PMessage', _data);
- store.dispatch('onP2PMessage', _data)
- },500)
- })
- }
- }, 1000);
-
- },
- onTestMessage: (e) => {
- console.log("onTestMessage :");
- store.dispatch('onP2PMessage', e)
- },
- onP2PMessage: (e) => {
- console.log("onP2PMessag e :::");
- console.log(JSON.parse(e))
- e = JSON.parse(e)
-
- const _data = publicFc.formatMessage(e.data)
-
- uni.$emit('onP2PMessage', _data);
- store.dispatch('onP2PMessage', _data)
-
- },
- onLogin: (uid) => {
- console.log("用户" + uid + "登陆sdk成功");
- }
-
- };
-
-
- const userId = uni.getStorageSync("userId")
-
- const imUserSign = uni.getStorageSync("imUserSign")
-
- var listeners = {};
- for (const v in ListenerMap) {
- listeners[v] = ListenerMap[v];
- }
-
- console.log(lim)
-
- // 防止多次建立ws链接,貌似还没有生效,需要检查
- if (this.socketTask != null) {
- return false
- }
-
- lim.lim.im.init(config.getImApiUrl(), config.getImAppId(), userId, imUserSign, listeners, (
- sdk) => {
- if (sdk) {
- console.warn("====================")
- this.socketTask = sdk;
- console.log(this.socketTask)
-
- console.log('sdk 成功连接的回调, 可以使用 sdk 请求数据了.');
-
-
- sdk.getSingleUserInfo(userId).then(res=>{
- console.log("获取到自己的用户信息")
- console.log(res)
- if(res.code==200){
- uni.setStorageSync('userInfo', res.data);
- }
- })
-
- // sdk.getAllFriend().then(res => {
- // console.warn(res)
- // })
- // sdk.getUserSequence().then(res => {
- // console.warn(res)
- // })
-
- sdk.getUserConversationList(0).then(res => {
- console.warn(res)
- })
-
-
- } else {
- console.log('sdk 初始化失败.');
- }
- })
-
-
- /*
-
- this.socketTask = uni.connectSocket({
- url: 'wss://im-api.q3z3.com/ws?Authorization=' + uni.getStorageSync('Authorization'),
- complete: () => {}
- });
- this.socketTask.onOpen(res => {
- console.log('WebSocket连接已打开!');
- // 设置心跳
- timer = setInterval(() => {
- uni.sendSocketMessage({
- data: 'isConnact',
- success: res => {
- if (res.errMsg == 'sendSocketMessage:ok') {
- console.log('WebSocket已连接')
- } else {
- this.connectSocket()
- }
- }
- })
- }, 5000)
- })
- // 监听接收
- this.socketTask.onMessage(res => {
- if (res.data == 'ok') {
- return
- }
- var data = JSON.parse(res.data);
- fc.getPush(data);
- console.log('WebSocket接收消息!');
- })
- // 监听关闭
- this.socketTask.onClose(res => {
- console.log('WebSocket连接已关闭!');
- let token = uni.getStorageSync('Authorization');
- if (this.socketTask && token) {
- this.socketTaskClose()
- retimer = setTimeout(() => {
- this.connectSocket()
- }, 5000)
- }
- })
- // 监听异常
- this.socketTask.onError(res => {
- console.log('WebSocket连接打开失败,正在尝试重新打开!');
- if (this.socketTask) {
- this.socketTaskClose()
- retimer = setTimeout(() => {
- this.connectSocket()
- }, 5000)
- }
-
- });
- */
-
- },
- // 关闭WebSocket
- socketTaskClose() {
- if (this.socketTask) {
- this.socketTask.close()
- clearInterval(timer)
- clearTimeout(retimer)
- console.log('关闭WebSocket!');
- }
- },
-}
\ No newline at end of file
diff --git a/im-uniapp/common/utils.js b/im-uniapp/common/utils.js
deleted file mode 100644
index ad7ee42..0000000
--- a/im-uniapp/common/utils.js
+++ /dev/null
@@ -1,56 +0,0 @@
-
-export function appInit(ms) {
- return new Promise((resolve, reject) => {
- var i = 0;
- let timer = setInterval(() => {
- var im_imUserSign = uni.getStorageSync("im_imUserSign")
- var hd_userId = uni.getStorageSync("hd_userid")
- if(hd_userId){
- uni.setStorageSync("userId",hd_userId)
-
- }else{
- console.log("============未获取到hd_userid")
- }
- var hd_token = localStorage.getItem("hd_token")
-
- i = 100;
- if (i < 0) {
- reject("error")
- }
- if (im_imUserSign) {
-
- uni.setStorageSync("imUserSign",im_imUserSign)
- uni.setStorageSync("token",hd_token)
-
- if(uni.getStorageSync("userId")!=null&&uni.getStorageSync("imUserSign")!=null&&uni.getStorageSync("token")!=null){
- clearInterval(timer)
- timer = null
- resolve("ok")
- }
-
- }else{
- uni.setStorageSync("initReady",null)
- }
- }, ms);
- })
-}
-
-
-/**
- * getUrlKey 截取地址栏参数
- * @param value
- * @returns {String}
- */
-export function getUrlParam(name) {
- var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
- let url = window.location.href
- let search = url.split('?')[1];
- console.log(search);
- if (search) {
- var r = search.substr(0).match(reg);
- if (r !== null) {
- return unescape(r[2]);
- }
- return null;
- } else return null;
-}
\ No newline at end of file
diff --git a/im-uniapp/common/zmmFormCheck.js b/im-uniapp/common/zmmFormCheck.js
deleted file mode 100644
index 8a12704..0000000
--- a/im-uniapp/common/zmmFormCheck.js
+++ /dev/null
@@ -1,75 +0,0 @@
-// 表单验证
-// zmm2113@qq.com
-/**
- * @property {Object} formData 表单
- * @property {Object} rules 验证规则
- **/
-export default {
- error: '',
- check: function(formData, rules) {
- var formDataKeys = Object.keys(formData)
- for (var i = 0; i < formDataKeys.length; i++) {
- var key = formDataKeys[i]
- if (rules[key]) {
- var itemRules = rules[key].rules
- var itemValue = formData[key]
- for (var j = 0; j < itemRules.length; j++) {
- var rule = itemRules[j]
- switch (rule.checkType){
- case 'required'://必填项
- if(!itemValue) {this.error = rule.errorMsg; return false;}
- break;
-
- case 'phone'://手机号码验证
- var reg = /^1[0-9]{10,10}$/;
- if (!reg.test(itemValue)) { this.error = rule.errorMsg; return false; }
- break;
- case 'email'://邮箱验证
- var reg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
- if (!reg.test(itemValue)) { this.error = rule.errorMsg; return false; }
- break;
- case 'idcard'://15-18位身份证验证
- var reg = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
- if (!reg.test(itemValue)) { this.error = rule.errorMsg; return false; }
- break;
- case 'url'://网址验证
- var reg = /^((ht|f)tps?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/;
- if (!reg.test(itemValue)) { this.error = rule.errorMsg; return false; }
- break;
- case 'reg'://正则验证 checkRule必填
- if(!rule.checkRule){
- this.error=key+' 校验失败'
- console.warn(key+' checkRule规则未填写')
- return false;
- }
- var reg = rule.checkRule;
- if (!reg.test(itemValue)) { this.error = rule.errorMsg; return false; }
- break;
- case 'number'://数字
- var reg = /^\d+$/;
- if (!reg.test(itemValue)) { this.error = rule.errorMsg; return false; }
- break;
- case 'same'://是否相同 checkRule必填
- if(!rule.checkRule){
- this.error=key+' 校验失败'
- console.warn(key+' checkRule规则未填写')
- return false;
- }
- if (itemValue!==formData[rule.checkRule]) { this.error = rule.errorMsg; return false; }
- break;
- case 'string'://字符串 checkRule必填
- if(!rule.checkRule){
- this.error=key+' 校验失败'
- console.warn(key+' checkRule规则未填写')
- return false;
- }
- var reg = new RegExp('^.{' + rule.checkRule + '}$');
- if (!reg.test(itemValue)) { this.error = rule.errorMsg; return false; }
- break;
- }
- }
- }
- }
- return true;
- }
-}
diff --git a/im-uniapp/components/friends-circle-detail/friends-circle-detail.vue b/im-uniapp/components/friends-circle-detail/friends-circle-detail.vue
deleted file mode 100644
index 8ce9858..0000000
--- a/im-uniapp/components/friends-circle-detail/friends-circle-detail.vue
+++ /dev/null
@@ -1,620 +0,0 @@
-
-
-
-
- {{ content.nikeName }}
- {{ content.text }}
-
-
-
-
-
-
-
- {{ content.location.name }}
-
- {{ content.time }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/friends-circle-list-item/friends-circle-list-item.vue b/im-uniapp/components/friends-circle-list-item/friends-circle-list-item.vue
deleted file mode 100644
index d775947..0000000
--- a/im-uniapp/components/friends-circle-list-item/friends-circle-list-item.vue
+++ /dev/null
@@ -1,558 +0,0 @@
-
-
-
-
- {{ v.nickName }}
- {{ v.text }}
-
-
-
-
-
-
-
- {{ v.location.name }}
-
- {{ v.time }}
-
-
-
-
-
-
-
-
-
- {{z.nickName}}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/friends-circle-person-item/friends-circle-person-item.vue b/im-uniapp/components/friends-circle-person-item/friends-circle-person-item.vue
deleted file mode 100644
index c7c00df..0000000
--- a/im-uniapp/components/friends-circle-person-item/friends-circle-person-item.vue
+++ /dev/null
@@ -1,225 +0,0 @@
-
-
-
- {{returnDate(v.createTime,'d')}}
- {{returnDate(v.createTime,'m')}}月
- {{returnDate(v.createTime,'y')}}
- {{v.location.name}}
-
-
-
-
-
-
-
- {{v.text}}
- 共{{v.files.length}}张
-
-
-
-
-
-
-
-
- {{v.text}}
-
-
-
-
- {{v.text}}
-
-
-
-
-
-
- 未发布朋友圈
-
-
-
-
-
-
diff --git a/im-uniapp/components/friends-circle-top/friends-circle-top.vue b/im-uniapp/components/friends-circle-top/friends-circle-top.vue
deleted file mode 100644
index a4bcb9d..0000000
--- a/im-uniapp/components/friends-circle-top/friends-circle-top.vue
+++ /dev/null
@@ -1,327 +0,0 @@
-
-
-
-
-
-
- 换封面
-
-
-
- {{userInfo.nickName}}
-
-
- {{userInfo.intro}}
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/tool-list-wx/tool-list-wx.vue b/im-uniapp/components/tool-list-wx/tool-list-wx.vue
deleted file mode 100644
index 145c041..0000000
--- a/im-uniapp/components/tool-list-wx/tool-list-wx.vue
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-
-
-
-
-
-
- {{ item.title }}
-
- {{ item.title }}
-
-
-
-
-
- {{ v.content }}
- {{ v.content }}
-
-
-
-
-
-
-
-
-
- {{item.title}}
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/top-right-tool-wx/top-right-tool-wx.vue b/im-uniapp/components/top-right-tool-wx/top-right-tool-wx.vue
deleted file mode 100644
index b4604ca..0000000
--- a/im-uniapp/components/top-right-tool-wx/top-right-tool-wx.vue
+++ /dev/null
@@ -1,156 +0,0 @@
-
-
-
-
-
-
-
- 发起群聊
-
-
-
- 添加朋友
-
-
-
- 扫一扫
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/uni-indexed-list-wx/uni-indexed-list-item.vue b/im-uniapp/components/uni-indexed-list-wx/uni-indexed-list-item.vue
deleted file mode 100644
index 7136d09..0000000
--- a/im-uniapp/components/uni-indexed-list-wx/uni-indexed-list-item.vue
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
- {{ list.key }}
-
-
-
-
-
-
-
-
- {{item.data.name}}
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/uni-indexed-list-wx/uni-indexed-list-wx.vue b/im-uniapp/components/uni-indexed-list-wx/uni-indexed-list-wx.vue
deleted file mode 100644
index 872b961..0000000
--- a/im-uniapp/components/uni-indexed-list-wx/uni-indexed-list-wx.vue
+++ /dev/null
@@ -1,456 +0,0 @@
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{v.title}}
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
- {{ lists[touchmoveIndex].key }}
-
-
-
-
-
diff --git a/im-uniapp/components/uni-list-chat-wx/openTool.vue b/im-uniapp/components/uni-list-chat-wx/openTool.vue
deleted file mode 100644
index 76c1743..0000000
--- a/im-uniapp/components/uni-list-chat-wx/openTool.vue
+++ /dev/null
@@ -1,173 +0,0 @@
-
-
-
-
-
- 取消置顶
- 置顶该聊天
-
-
- 删除该聊天
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/uni-list-chat-wx/uni-list-chat-wx.vue b/im-uniapp/components/uni-list-chat-wx/uni-list-chat-wx.vue
deleted file mode 100644
index bbf33b8..0000000
--- a/im-uniapp/components/uni-list-chat-wx/uni-list-chat-wx.vue
+++ /dev/null
@@ -1,583 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {{ badgeText === 'dot' ? '' : badgeText }}
-
-
-
- {{ title }}
- {{ note }}
-
-
-
-
-
-
- |
-
-
-
-
-
-
diff --git a/im-uniapp/components/uni-list-wx/uni-list-wx.vue b/im-uniapp/components/uni-list-wx/uni-list-wx.vue
deleted file mode 100644
index 8ebcf18..0000000
--- a/im-uniapp/components/uni-list-wx/uni-list-wx.vue
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/uni-section/uni-section.vue b/im-uniapp/components/uni-section/uni-section.vue
deleted file mode 100644
index d4a8143..0000000
--- a/im-uniapp/components/uni-section/uni-section.vue
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/watermark/watermark.vue b/im-uniapp/components/watermark/watermark.vue
deleted file mode 100644
index ba9ac5c..0000000
--- a/im-uniapp/components/watermark/watermark.vue
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/zmm-city-picker/zmm-city-picker.vue b/im-uniapp/components/zmm-city-picker/zmm-city-picker.vue
deleted file mode 100644
index 72a51a4..0000000
--- a/im-uniapp/components/zmm-city-picker/zmm-city-picker.vue
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
- {{ placeholder }}
- {{ modelValue }}
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/zmm-radio-group/zmm-radio-group.vue b/im-uniapp/components/zmm-radio-group/zmm-radio-group.vue
deleted file mode 100644
index 31eae45..0000000
--- a/im-uniapp/components/zmm-radio-group/zmm-radio-group.vue
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/zmm-recorder/zmm-recorder.vue b/im-uniapp/components/zmm-recorder/zmm-recorder.vue
deleted file mode 100644
index dc33818..0000000
--- a/im-uniapp/components/zmm-recorder/zmm-recorder.vue
+++ /dev/null
@@ -1,277 +0,0 @@
-
-
-
-
-
- {{formatedRecordTime}}
-
-
-
-
-
-
-
-
-
- {{formatedRecordTime}}
-
-
-
-
-
-
-
-
-
- {{formatedPlayTime}}
- {{formatedRecordTime}}
-
-
-
-
-
-
-
-
-
-
-
-
- {{formatedPlayTime}}
- {{formatedRecordTime}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/zmm-upload-avatar/zmm-upload-avatar.vue b/im-uniapp/components/zmm-upload-avatar/zmm-upload-avatar.vue
deleted file mode 100644
index 9193fc2..0000000
--- a/im-uniapp/components/zmm-upload-avatar/zmm-upload-avatar.vue
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/zmm-upload-image/zmm-upload-image-drag.vue b/im-uniapp/components/zmm-upload-image/zmm-upload-image-drag.vue
deleted file mode 100644
index 7c0a212..0000000
--- a/im-uniapp/components/zmm-upload-image/zmm-upload-image-drag.vue
+++ /dev/null
@@ -1,319 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 松开删除
- 拖动到此处删除
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/zmm-upload-image/zmm-upload-image.vue b/im-uniapp/components/zmm-upload-image/zmm-upload-image.vue
deleted file mode 100644
index 4cc2875..0000000
--- a/im-uniapp/components/zmm-upload-image/zmm-upload-image.vue
+++ /dev/null
@@ -1,437 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/components/zy-search/zy-search.vue b/im-uniapp/components/zy-search/zy-search.vue
deleted file mode 100644
index 3b28057..0000000
--- a/im-uniapp/components/zy-search/zy-search.vue
+++ /dev/null
@@ -1,568 +0,0 @@
-
-
-
-
-
-
- 取消
-
-
-
-
-
- 没有相关信息
-
-
-
-
-
-
- {{item}}
-
-
-
-
-
- {{item}}
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/index.html b/im-uniapp/index.html
deleted file mode 100644
index 7756c1e..0000000
--- a/im-uniapp/index.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/key/weiliao.keystore b/im-uniapp/key/weiliao.keystore
deleted file mode 100644
index e76df50..0000000
Binary files a/im-uniapp/key/weiliao.keystore and /dev/null differ
diff --git a/im-uniapp/main.js b/im-uniapp/main.js
deleted file mode 100644
index dae34f4..0000000
--- a/im-uniapp/main.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import http from '@/common/request'
-import store from './store'
-import md5 from "@/common/md5.js";
-
-
-
-import publicFc from "@/common/publicFc.js";
-// #ifdef H5
-import socketTask from "@/common/socketTask.js";
-// #endif
-import zmmFormCheck from './common/zmmFormCheck.js';
-import pinyin from './common/pinyin.js';
-// #ifndef VUE3
-import Vue from 'vue'
-import App from './App'
-
-
-
-
-Vue.config.productionTip = false
-
-Vue.prototype.$socketTask = socketTask;
-
-Vue.prototype.$http = http
-Vue.prototype.$store = store
-Vue.prototype.$fc = publicFc;
-Vue.prototype.$md5 = md5
-Vue.prototype.$zmmFormCheck = zmmFormCheck;
-Vue.prototype.$pinyin = pinyin;
-// #ifdef H5
-
-
-// uni.lim = lim;
-
-// Vue.prototype.imsdk = lim
-
-
-// #endif
-App.mpType = 'app'
-
-const app = new Vue({
- ...App,
- store
-})
-app.$mount()
-// #endif
-
-// #ifdef VUE3
-import { createSSRApp } from 'vue'
-import App from './App.vue'
-export function createApp() {
- const app = createSSRApp(App)
- app.config.globalProperties.$socketTask = socketTask
-
- app.config.globalProperties.$http = http
- app.config.globalProperties.$fc = publicFc
- app.config.globalProperties.$md5 = md5
- app.config.globalProperties.$zmmFormCheck = zmmFormCheck
- app.config.globalProperties.$pinyin = pinyin
- // #ifdef H5
-
-
- // #endif
- app.use(store);
- return {
- app
- }
-}
-// #endif
\ No newline at end of file
diff --git a/im-uniapp/manifest.json b/im-uniapp/manifest.json
deleted file mode 100644
index 88544d6..0000000
--- a/im-uniapp/manifest.json
+++ /dev/null
@@ -1,224 +0,0 @@
-{
- "name" : "IM",
- "appid" : "__UNI__1A208D0",
- "description" : "HS-IM",
- "versionName" : "1.2.1",
- "versionCode" : 121,
- "developer" : {
- "name" : "zmm2113@qq.com",
- "email" : "zmm2113@qq.com"
- },
- "transformPx" : false,
- "app-plus" : {
- /* 5+App特有相关 */
- "permissions" : {
- "File" : {
- "description" : "文件系统"
- }
- },
- "usingComponents" : true,
- "nvueCompiler" : "uni-app",
- "splashscreen" : {
- "alwaysShowBeforeRender" : false,
- "waiting" : false,
- "autoclose" : false,
- "delay" : 0
- },
- "modules" : {
- "Geolocation" : {},
- "Maps" : {},
- "Push" : {},
- "Speech" : {},
- "VideoPlayer" : {},
- "iBeacon" : {},
- "Barcode" : {},
- "Camera" : {}
- },
- /* 模块配置 */
- "distribute" : {
- /* 应用发布信息 */
- "android" : {
- /* android打包配置 */
- "permissions" : [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ],
- "minSdkVersion" : 21
- },
- "ios" : {
- "dSYMs" : false
- },
- /* ios打包配置 */
- "sdkConfigs" : {
- "geolocation" : {
- "system" : {
- "__platform__" : [ "ios", "android" ]
- },
- "amap" : {
- "__platform__" : [ "ios", "android" ],
- "appkey_ios" : "81cc6c72aeb6a1946510cc1e9f87ee80",
- "appkey_android" : "81cc6c72aeb6a1946510cc1e9f87ee80"
- }
- },
- "maps" : {
- "amap" : {
- "appkey_ios" : "81cc6c72aeb6a1946510cc1e9f87ee80",
- "appkey_android" : "81cc6c72aeb6a1946510cc1e9f87ee80"
- }
- },
- "push" : {
- "unipush" : {}
- },
- "speech" : {
- "ifly" : {}
- },
- "ad" : {}
- },
- "icons" : {
- "android" : {
- "hdpi" : "unpackage/res/icons/72x72.png",
- "xhdpi" : "unpackage/res/icons/96x96.png",
- "xxhdpi" : "unpackage/res/icons/144x144.png",
- "xxxhdpi" : "unpackage/res/icons/192x192.png"
- },
- "ios" : {
- "appstore" : "unpackage/res/icons/1024x1024.png",
- "ipad" : {
- "app" : "unpackage/res/icons/76x76.png",
- "app@2x" : "unpackage/res/icons/152x152.png",
- "notification" : "unpackage/res/icons/20x20.png",
- "notification@2x" : "unpackage/res/icons/40x40.png",
- "proapp@2x" : "unpackage/res/icons/167x167.png",
- "settings" : "unpackage/res/icons/29x29.png",
- "settings@2x" : "unpackage/res/icons/58x58.png",
- "spotlight" : "unpackage/res/icons/40x40.png",
- "spotlight@2x" : "unpackage/res/icons/80x80.png"
- },
- "iphone" : {
- "app@2x" : "unpackage/res/icons/120x120.png",
- "app@3x" : "unpackage/res/icons/180x180.png",
- "notification@2x" : "unpackage/res/icons/40x40.png",
- "notification@3x" : "unpackage/res/icons/60x60.png",
- "settings@2x" : "unpackage/res/icons/58x58.png",
- "settings@3x" : "unpackage/res/icons/87x87.png",
- "spotlight@2x" : "unpackage/res/icons/80x80.png",
- "spotlight@3x" : "unpackage/res/icons/120x120.png"
- }
- }
- },
- "splashscreen" : {
- "androidStyle" : "default",
- "android" : {
- "hdpi" : "unpackage/res/splash/splash480.9.png",
- "xhdpi" : "unpackage/res/splash/splash750.9.png",
- "xxhdpi" : "unpackage/res/splash/splash1080.9.png"
- }
- }
- },
- "uniStatistics" : {
- "enable" : true
- },
- "nativePlugins" : {
- "TUICallingUniPlugin-TUICallingModule" : {
- "__plugin_info__" : {
- "name" : "TUICallingUniPlugin-TUICallingModule",
- "description" : "腾讯云音视频插件",
- "platforms" : "Android,iOS",
- "url" : "",
- "android_package_name" : "",
- "ios_bundle_id" : "",
- "isCloud" : false,
- "bought" : -1,
- "pid" : "",
- "parameters" : {}
- }
- }
- }
- },
- /* SDK配置 */
- "quickapp" : {},
- /* 快应用特有相关 */
- "mp-weixin" : {
- /* 小程序特有相关 */
- "appid" : "",
- "setting" : {
- "urlCheck" : false
- },
- "usingComponents" : true,
- "uniStatistics" : {
- "enable" : true
- }
- },
- "vueVersion" : "3",
- "uniStatistics" : {
- "enable" : true,
- "version" : "1"
- },
- "h5" : {
- "uniStatistics" : {
- "enable" : true
- },
- "sdkConfigs" : {
- "maps" : {
- "qqmap" : {
- "key" : "3U7BZ-AZZKD-IXC4C-HZA7T-2PGKT-EZFER"
- }
- }
- },
- "router" : {
- "base" : "/im-uniapp/",
- "mode" : "history"
- },
- "devServer" : {
- "https" : false
- }
- },
- "mp-alipay" : {
- "uniStatistics" : {
- "enable" : true
- }
- },
- "mp-baidu" : {
- "uniStatistics" : {
- "enable" : true
- }
- },
- "mp-kuaishou" : {
- "uniStatistics" : {
- "enable" : true
- }
- },
- "mp-lark" : {
- "uniStatistics" : {
- "enable" : true
- }
- },
- "mp-qq" : {
- "uniStatistics" : {
- "enable" : true
- }
- },
- "mp-toutiao" : {
- "uniStatistics" : {
- "enable" : true
- }
- }
-}
diff --git a/im-uniapp/package.json b/im-uniapp/package.json
deleted file mode 100644
index 0990ea8..0000000
--- a/im-uniapp/package.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "hs-im",
- "version": "1.1.0",
- "description": "",
- "main": "main.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "repository": {
- "type": "git"
- },
- "author": "php_echo@163.com",
- "license": "ISC",
- "dependencies": {
- "base64-js": "^1.5.1",
- "dayjs": "^1.11.10",
- "js-base64": "^3.7.5",
- "localforage": "^1.10.0",
- "luch-request": "^3.1.1"
- }
-}
diff --git a/im-uniapp/pages.json b/im-uniapp/pages.json
deleted file mode 100644
index 1cc7775..0000000
--- a/im-uniapp/pages.json
+++ /dev/null
@@ -1,718 +0,0 @@
-{
- "pages": [
- // {
- // "path": "wx/tabbar1/index",
- // "name": "wxtabbar1",
- // "aliasPath": "/wxtabbar1",
- // "requireAuth": true,
- // "style": {
- // "navigationBarTitleText": "消息",
- // "app-plus": {
- // "titleNView": {
- // "buttons": [{
- // "text": "\ue657",
- // "fontSrc": "/static/wx_iconfont.ttf",
- // "fontSize": "28px"
- // }, {
- // "text": "\ue636",
- // "fontSrc": "/static/wx_iconfont.ttf",
- // "fontSize": "26px"
- // }]
- // }
- // }
- // }
- // },
- {
- "path": "pages/wxindex/index",
- "name": "wxindex",
- "aliasPath": "/wxindex",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "微信首页",
- "navigationStyle": "custom"
- }
- }, {
- "path": "pages/agreement/index",
- "name": "agreement",
- "aliasPath": "/agreement",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "隐私及服务协议",
- "navigationBarBackgroundColor": "#ffffff",
- "navigationBarTextStyle": "black"
- }
- }
- ],
- "globalStyle": {
- "navigationBarTextStyle": "black",
- "navigationBarTitleText": "uni-app",
- "navigationBarBackgroundColor": "#F8F8F8",
- "backgroundColor": "#F8F8F8",
- "app-plus": {
- "background": "#efeff4"
- }
- },
- "tabBar": { //底部
- "color": "#999999",
- "selectedColor": "#09C160",
- "borderStyle": "black",
- "backgroundColor": "#ffffff",
- "list": [{
- "pagePath": "wx/tabbar1/index",
- "iconPath": "static/wx/n0.png",
- "selectedIconPath": "static/wx/n0_on.png",
- "text": "消息"
- },
- {
- "pagePath": "wx/tabbar2/index",
- "iconPath": "static/wx/n01.png",
- "selectedIconPath": "static/wx/n01_on.png",
- "text": "通讯录"
- }
- ]
- },
- "subPackages": [ //分包,微信小程序单包最大2M
- {
- "root": "wx",
- "pages": [{
- "path": "login/index",
- "name": "wxlogin",
- "aliasPath": "/wxlogin",
- "requireAuth": false,
- "style": {
- "navigationBarTitleText": "登录"
- }
- }, {
- "path": "register/index",
- "name": "wxregister",
- "aliasPath": "/wxregister",
- "requireAuth": false,
- "style": {
- "navigationBarTitleText": "注册"
- }
- }, {
- "path": "forgetPass/index",
- "name": "wxforgetPass",
- "aliasPath": "/wxforgetPass",
- "requireAuth": false,
- "style": {
- "navigationBarTitleText": "忘记密码"
- }
- }, {
- "path": "chatWindow/index",
- "name": "wxchatWindow",
- "aliasPath": "/wxchatWindow",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "聊天窗口",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "\ue623",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "28px"
- }]
- }
- }
- }
- }
- , {
- "path": "tabbar1/index",
- "name": "wxtabbar1",
- "aliasPath": "/wxtabbar1",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "消息"
- }
- }
- , {
- "path": "tabbar2/index",
- "name": "wxtabbar2",
- "aliasPath": "/wxtabbar2",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "通讯录"
- }
- }, {
- "path": "tabbar3/index",
- "name": "wxtabbar3",
- "aliasPath": "/wxtabbar3",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "发现",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "\ue657",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "28px"
- }, {
- "text": "\ue636",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "26px"
- }]
- }
- }
- }
- }, {
- "path": "tabbar4/index",
- "name": "wxtabbar4",
- "aliasPath": "/wxtabbar4",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "我",
- "navigationBarBackgroundColor": "#ffffff"
- }
- }, {
- "path": "group/createGroup",
- "name": "wxcreateGroup",
- "aliasPath": "/wxcreateGroup",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "发起群聊"
- }
- }, {
- "path": "shake/index",
- "name": "wxshake",
- "aliasPath": "/wxshake",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "摇一摇",
- "navigationBarBackgroundColor":"#212121",
- "navigationBarTextStyle":"white"
- }
- }, {
- "path": "nearby/index",
- "name": "wxnearby",
- "aliasPath": "/wxnearby",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "附近的人",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "\ue623",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "28px"
- }]
- }
- }
- }
- }, {
- "path": "friendsCircle/msglist",
- "name": "wxfriendsCirclemsglist",
- "aliasPath": "/wxfriendsCirclemsglist",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "消息",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "清空",
- "fontSize": "16px",
- "width":"44px",
- "fontWeight":"bold"
- }]
- }
- }
- }
- }, {
- "path": "system/index",
- "name": "wxsystem",
- "aliasPath": "/wxsystem",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "设置"
- }
- }, {
- "path": "search/index",
- "name": "wxsearch",
- "aliasPath": "/wxsearch",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "搜索"
- }
- }, {
- "path": "search-friends/index",
- "name": "wxsearch-friends",
- "aliasPath": "/wxsearch-friends",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "新的朋友",
- "enablePullDownRefresh" : true,
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "添加",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "search-friends/add",
- "name": "wxsearch-friends-add",
- "aliasPath": "/search-friends-add",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "朋友验证",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "发送",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "personDetail/index",
- "name": "wxpersonDetail",
- "aliasPath": "/wxpersonDetail",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "个人信息" //个人中心信息
- }
- }, {
- "path": "personInfo/addFriendsDetail",
- "name": "wxpersonInfoAddFriendsDetail",
- "aliasPath": "/wxpersonInfoAddFriendsDetail",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "" //添加好友信息
- }
- }, {
- "path": "personInfo/beizhu",
- "name": "wxpersonInfobeizhu",
- "aliasPath": "/wxpersonInfobeizhu",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "设置备注", //修改备注
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "完成",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "personDetail/editNikeName",
- "name": "wxpersonDetaileditNikeName",
- "aliasPath": "/wxpersonDetaileditNikeName",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "更改名称", //修改备注
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "完成",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "personDetail/editchatNo",
- "name": "wxpersonDetaileditchatNo",
- "aliasPath": "/wxpersonDetaileditchatNo",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "更改微聊号", //修改备注
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "完成",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "personDetail/editIntro",
- "name": "wxpersonDetaileditIntro",
- "aliasPath": "/wxpersonDetaileditIntro",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "更改个性签名",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "完成",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "personDetail/editGender",
- "name": "wxpersonDetaileditGender",
- "aliasPath": "/wxpersonDetaileditGender",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "更改性别",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "完成",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "personDetail/editAddress",
- "name": "wxpersonDetaileditAddress",
- "aliasPath": "/wxpersonDetaileditAddress",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "更改地区",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "完成",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "personDetail/editPass",
- "name": "wxpersonDetaileditPass",
- "aliasPath": "/wxpersonDetaileditPass",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "设置密码",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "完成",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "personInfo/detail",
- "name": "wxpersonInfoDetail",
- "aliasPath": "/wxpersonInfoDetail",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "信息", //好友个人信息
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "\ue623",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "28px"
- }]
- }
- }
- }
- }, {
- "path": "groupInfo/detail",
- "name": "wxgroupInfoDetail",
- "aliasPath": "/wxgroupInfoDetail",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "聊天信息" //群信息
- }
- }, {
- "path": "groupInfo/qunAdd",
- "name": "wxqunAdd",
- "aliasPath": "/wxqunAdd",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "选择联系人"
- }
- }, {
- "path": "groupInfo/qunless",
- "name": "wxqunless",
- "aliasPath": "/wxqunless",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "聊天成员"
- }
- }, {
- "path": "groupInfo/editGroupName",
- "name": "wxgroupInfoeditGroupName",
- "aliasPath": "/wxgroupInfoeditGroupName",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "更改群聊名称", //修改备注
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "完成",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "groupInfo/editGroupNotice",
- "name": "wxgroupInfoeditGroupNotice",
- "aliasPath": "/wxgroupInfoeditGroupNotice",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "更改群公告", //修改备注
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "修改",
- "fontSize": "16px"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "groupInfo/scanCodeDetail",
- "name": "wxgroupInfoscanCodeDetail",
- "aliasPath": "/wxgroupInfoscanCodeDetail",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "群聊信息"
- }
- }, {
- "path": "groupInfo/grouplist",
- "name": "wxgroupInfogrouplist",
- "aliasPath": "/wxgroupInfogrouplist",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "群聊"
- }
- }, {
- "path": "personDetail/QRcode",
- "name": "wxpersonDetailQRcode",
- "aliasPath": "/wxpersonDetailQRcode",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "二维码名片",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "\ue623",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "28px"
- }]
- }
- }
- }
- }, {
- "path": "groupInfo/QRcode",
- "name": "wxgroupInfoQRcode",
- "aliasPath": "/wxgroupInfoQRcode",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "群二维码",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "text": "\ue623",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "28px"
- }]
- }
- }
- }
- }, {
- "path": "personInfo/edit",
- "name": "wxpersonInfoedit",
- "aliasPath": "/wxpersonInfoedit",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "资料设置" //好友资料设置
- }
- }, {
- "path": "friendsCircle/index",
- "name": "wxfriendsCircle",
- "aliasPath": "/wxfriendsCircle",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "朋友圈",
- "enablePullDownRefresh" : true,
- "app-plus": {
- "titleNView": {
- "type": "transparent",
- "titleColor": "#fff",
- "backgroundColor": "#d1d1d1",
- "buttons": [{
- "text": "\ue638",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "24px",
- "background": "rgba(0,0,0,0)"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "friendsCircle/person",
- "name": "wxfriendsCirclePerson",
- "aliasPath": "/wxfriendsCirclePerson",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "我的相册",
- "enablePullDownRefresh" : true,
- "app-plus": {
- "titleNView": {
- "type": "transparent",
- "titleColor": "#fff",
- "backgroundColor": "#d1d1d1",
- "buttons": [{
- "text": "\ue6f4",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "24px",
- "background": "rgba(0,0,0,0)"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "friendsCircle/sendMsg",
- "name": "wxsendMsg",
- "aliasPath": "/wxsendMsg",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "发朋友圈",
- "app-plus": {
- "titleNView": {
- // "type": "transparent",
- // "titleColor": "#333333",
- // "backgroundColor": "#09C160",
- "buttons": [{
- "color": "#09C160",
- "text": "发表",
- // "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "16px",
- "borderRadius": "0px",
- "background": "#09C160"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "feedback/index",
- "name": "wxfeedback",
- "aliasPath": "/wxfeedback",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "建议反馈",
- "app-plus": {
- "titleNView": {
- "buttons": [{
- "color": "#09C160",
- "text": "发表",
- "fontSize": "16px",
- "borderRadius": "0px",
- "background": "#09C160"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }, {
- "path": "favorites/index",
- "name": "wxfavorites",
- "aliasPath": "/wxfavorites",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "收藏",
- "enablePullDownRefresh" : true,
- "app-plus": {
- "titleNView": {
- // "buttons": [{
- // "text": "\ue657",
- // "fontSrc": "/static/wx_iconfont.ttf",
- // "fontSize": "28px"
- // }]
- }
- }
- }
- }, {
- "path": "friendsCircle/detail",
- "name": "wxfriendsCircledetail",
- "aliasPath": "/wxfriendsCircledetail",
- "requireAuth": true,
- "style": {
- "navigationBarTitleText": "详情",
- "app-plus": {
- "titleNView": {
- // "type": "transparent",
- // "titleColor": "#333333",
- // "backgroundColor": "#09C160",
- "buttons": [{
- "text": "\ue623",
- "fontSrc": "/static/wx_iconfont.ttf",
- "fontSize": "24px",
- "background": "rgba(0,0,0,0)"
- }],
- "backButton": {
- "background": "rgba(0,0,0,0)"
- }
- }
- }
- }
- }
- ]
- },
- {
-
- "root": "wl",
- "pages": [{
- "path": "login/index",
- "name": "wllogin",
- "aliasPath": "/wllogin",
- "requireAuth": false,
- "style": {
- "navigationBarTitleText": "登录",
- "navigationStyle": "custom"
- }
- }]
- }
- ]
-}
diff --git a/im-uniapp/pages/agreement/index.vue b/im-uniapp/pages/agreement/index.vue
deleted file mode 100644
index d5e23f1..0000000
--- a/im-uniapp/pages/agreement/index.vue
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/im-uniapp/pages/wxindex/index.vue b/im-uniapp/pages/wxindex/index.vue
deleted file mode 100644
index 3d6ab03..0000000
--- a/im-uniapp/pages/wxindex/index.vue
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
- 登录
- 注册
-
-
-
-
-
-
-
diff --git a/im-uniapp/static/call.mp3 b/im-uniapp/static/call.mp3
deleted file mode 100644
index f136adb..0000000
Binary files a/im-uniapp/static/call.mp3 and /dev/null differ
diff --git a/im-uniapp/static/customicons.css b/im-uniapp/static/customicons.css
deleted file mode 100644
index c836530..0000000
--- a/im-uniapp/static/customicons.css
+++ /dev/null
@@ -1,129 +0,0 @@
-@font-face {
- font-family: "customicons"; /* Project id 2878519 */
- src:url('/static/customicons.ttf') format('truetype');
-}
-
-.customicons {
- font-family: "customicons" !important;
-}
-
-.youxi:before {
- content: "\e60e";
-}
-
-.wenjian:before {
- content: "\e60f";
-}
-
-.zhuanfa:before {
- content: "\e610";
-}
-
-@font-face {
- font-family: "wxfont";
- src:url('/static/wx_iconfont.ttf') format('truetype');
-}
-
-.wxfont{
- font-family: "wxfont" !important;
-}
-
-.tupian:before {
- content: "\e626";
-}
-.caidan:before {
- content: "\e600";
-}
-.zan:before {
- content: "\e6CD";
-}
-.pinglun:before {
- content: "\e662";
-}
-.yuyin3:before {
- content: "\e629";
-}
-.shipin:before {
- content: "\e7dd";
-}
-.faxiaoxi:before {
- content: "\e61c";
-}
-.xiangji:before {
- content: "\e603";
-}
-.jiahaoyou:before {
- content: "\e611";
-}
-.xiaoxi:before {
- content: "\e69e";
-}
-.saoyisao:before {
- content: "\e60a";
-}
-.nan:before {
- content: "\e609";
-}
-.nv:before {
- content: "\e608";
-}
-.msglist:before {
- content: "\e6f4";
-}
-.gengduo:before {
- content: "\e657";
-}
-.dingwei:before {
- content: "\e7e6";
-}
-.dingwei2:before {
- content: "\e675";
-}
-.mingpian:before {
- content: "\e63c";
-}
-.shoucang:before {
- content: "\e646";
-}
-.fssb:before {
- content: "\e61a";
-}
-.yuyin:before {
- content: "\e8c4";
-}
-.yrecord:before {
- content: "\e79d";
-}
-.yuyin2:before {
- content: "\e66c";
-}
-.jianpan:before {
- content: "\e661";
-}
-.bofang:before {
- content: "\e6a6";
-}
-.xiazai:before {
- content: "\e617";
-}
-.wxcopy:before {
- content: "\e75f";
-}
-.wxdelete:before {
- content: "\e63f";
-}
-.jia:before {
- content: "\e620";
-}
-.jian:before {
- content: "\e621";
-}
-.qunl:before {
- content: "\e612";
-}
-.yspin:before {
- content: "\e670";
-}
-.biaoqing:before {
- content: "\e60b";
-}
\ No newline at end of file
diff --git a/im-uniapp/static/customicons.ttf b/im-uniapp/static/customicons.ttf
deleted file mode 100644
index a3c8ab9..0000000
Binary files a/im-uniapp/static/customicons.ttf and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar1.jpg b/im-uniapp/static/img/avatar/avatar1.jpg
deleted file mode 100644
index 5d928d1..0000000
Binary files a/im-uniapp/static/img/avatar/avatar1.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar10.jpg b/im-uniapp/static/img/avatar/avatar10.jpg
deleted file mode 100644
index 4904506..0000000
Binary files a/im-uniapp/static/img/avatar/avatar10.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar11.jpg b/im-uniapp/static/img/avatar/avatar11.jpg
deleted file mode 100644
index 9e03923..0000000
Binary files a/im-uniapp/static/img/avatar/avatar11.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar12.jpg b/im-uniapp/static/img/avatar/avatar12.jpg
deleted file mode 100644
index f24629f..0000000
Binary files a/im-uniapp/static/img/avatar/avatar12.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar13.jpg b/im-uniapp/static/img/avatar/avatar13.jpg
deleted file mode 100644
index d3acaaa..0000000
Binary files a/im-uniapp/static/img/avatar/avatar13.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar14.jpg b/im-uniapp/static/img/avatar/avatar14.jpg
deleted file mode 100644
index 903d4dc..0000000
Binary files a/im-uniapp/static/img/avatar/avatar14.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar15.jpg b/im-uniapp/static/img/avatar/avatar15.jpg
deleted file mode 100644
index c5aee5f..0000000
Binary files a/im-uniapp/static/img/avatar/avatar15.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar16.jpg b/im-uniapp/static/img/avatar/avatar16.jpg
deleted file mode 100644
index 21ba517..0000000
Binary files a/im-uniapp/static/img/avatar/avatar16.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar17.jpg b/im-uniapp/static/img/avatar/avatar17.jpg
deleted file mode 100644
index e81dfce..0000000
Binary files a/im-uniapp/static/img/avatar/avatar17.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar18.jpg b/im-uniapp/static/img/avatar/avatar18.jpg
deleted file mode 100644
index ff69f8d..0000000
Binary files a/im-uniapp/static/img/avatar/avatar18.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar19.jpg b/im-uniapp/static/img/avatar/avatar19.jpg
deleted file mode 100644
index 9f09f5d..0000000
Binary files a/im-uniapp/static/img/avatar/avatar19.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar2.jpg b/im-uniapp/static/img/avatar/avatar2.jpg
deleted file mode 100644
index 7b9e5e6..0000000
Binary files a/im-uniapp/static/img/avatar/avatar2.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar20.jpg b/im-uniapp/static/img/avatar/avatar20.jpg
deleted file mode 100644
index 6123358..0000000
Binary files a/im-uniapp/static/img/avatar/avatar20.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar21.jpg b/im-uniapp/static/img/avatar/avatar21.jpg
deleted file mode 100644
index b6f7539..0000000
Binary files a/im-uniapp/static/img/avatar/avatar21.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar22.jpg b/im-uniapp/static/img/avatar/avatar22.jpg
deleted file mode 100644
index d22f9c2..0000000
Binary files a/im-uniapp/static/img/avatar/avatar22.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar23.jpg b/im-uniapp/static/img/avatar/avatar23.jpg
deleted file mode 100644
index b4cb59b..0000000
Binary files a/im-uniapp/static/img/avatar/avatar23.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar24.jpg b/im-uniapp/static/img/avatar/avatar24.jpg
deleted file mode 100644
index a09eede..0000000
Binary files a/im-uniapp/static/img/avatar/avatar24.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar25.jpg b/im-uniapp/static/img/avatar/avatar25.jpg
deleted file mode 100644
index 26b9378..0000000
Binary files a/im-uniapp/static/img/avatar/avatar25.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar26.jpg b/im-uniapp/static/img/avatar/avatar26.jpg
deleted file mode 100644
index bc5be54..0000000
Binary files a/im-uniapp/static/img/avatar/avatar26.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar27.jpg b/im-uniapp/static/img/avatar/avatar27.jpg
deleted file mode 100644
index 029692a..0000000
Binary files a/im-uniapp/static/img/avatar/avatar27.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar28.jpg b/im-uniapp/static/img/avatar/avatar28.jpg
deleted file mode 100644
index 520f7a7..0000000
Binary files a/im-uniapp/static/img/avatar/avatar28.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar29.jpg b/im-uniapp/static/img/avatar/avatar29.jpg
deleted file mode 100644
index 698d008..0000000
Binary files a/im-uniapp/static/img/avatar/avatar29.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar3.jpg b/im-uniapp/static/img/avatar/avatar3.jpg
deleted file mode 100644
index 2c810f6..0000000
Binary files a/im-uniapp/static/img/avatar/avatar3.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar30.jpg b/im-uniapp/static/img/avatar/avatar30.jpg
deleted file mode 100644
index f79f5a5..0000000
Binary files a/im-uniapp/static/img/avatar/avatar30.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar31.jpg b/im-uniapp/static/img/avatar/avatar31.jpg
deleted file mode 100644
index 4c02d81..0000000
Binary files a/im-uniapp/static/img/avatar/avatar31.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar32.jpg b/im-uniapp/static/img/avatar/avatar32.jpg
deleted file mode 100644
index eec40d1..0000000
Binary files a/im-uniapp/static/img/avatar/avatar32.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar33.jpg b/im-uniapp/static/img/avatar/avatar33.jpg
deleted file mode 100644
index cc0ca76..0000000
Binary files a/im-uniapp/static/img/avatar/avatar33.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar34.jpg b/im-uniapp/static/img/avatar/avatar34.jpg
deleted file mode 100644
index 3a3288d..0000000
Binary files a/im-uniapp/static/img/avatar/avatar34.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar35.jpg b/im-uniapp/static/img/avatar/avatar35.jpg
deleted file mode 100644
index 32d10ef..0000000
Binary files a/im-uniapp/static/img/avatar/avatar35.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar36.jpg b/im-uniapp/static/img/avatar/avatar36.jpg
deleted file mode 100644
index d0c277f..0000000
Binary files a/im-uniapp/static/img/avatar/avatar36.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar37.jpg b/im-uniapp/static/img/avatar/avatar37.jpg
deleted file mode 100644
index 92cb419..0000000
Binary files a/im-uniapp/static/img/avatar/avatar37.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar38.jpg b/im-uniapp/static/img/avatar/avatar38.jpg
deleted file mode 100644
index 784d4df..0000000
Binary files a/im-uniapp/static/img/avatar/avatar38.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar39.jpg b/im-uniapp/static/img/avatar/avatar39.jpg
deleted file mode 100644
index b48acac..0000000
Binary files a/im-uniapp/static/img/avatar/avatar39.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar4.jpg b/im-uniapp/static/img/avatar/avatar4.jpg
deleted file mode 100644
index ed5cb06..0000000
Binary files a/im-uniapp/static/img/avatar/avatar4.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar40.jpg b/im-uniapp/static/img/avatar/avatar40.jpg
deleted file mode 100644
index 101b1e5..0000000
Binary files a/im-uniapp/static/img/avatar/avatar40.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar41.jpg b/im-uniapp/static/img/avatar/avatar41.jpg
deleted file mode 100644
index 26e5109..0000000
Binary files a/im-uniapp/static/img/avatar/avatar41.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar42.jpg b/im-uniapp/static/img/avatar/avatar42.jpg
deleted file mode 100644
index 7557b73..0000000
Binary files a/im-uniapp/static/img/avatar/avatar42.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar43.jpg b/im-uniapp/static/img/avatar/avatar43.jpg
deleted file mode 100644
index 109e2bd..0000000
Binary files a/im-uniapp/static/img/avatar/avatar43.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar44.jpg b/im-uniapp/static/img/avatar/avatar44.jpg
deleted file mode 100644
index b0bbfd1..0000000
Binary files a/im-uniapp/static/img/avatar/avatar44.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar45.jpg b/im-uniapp/static/img/avatar/avatar45.jpg
deleted file mode 100644
index 78ed508..0000000
Binary files a/im-uniapp/static/img/avatar/avatar45.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar5.jpg b/im-uniapp/static/img/avatar/avatar5.jpg
deleted file mode 100644
index b79bfdb..0000000
Binary files a/im-uniapp/static/img/avatar/avatar5.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar6.jpg b/im-uniapp/static/img/avatar/avatar6.jpg
deleted file mode 100644
index c5504ed..0000000
Binary files a/im-uniapp/static/img/avatar/avatar6.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar7.jpg b/im-uniapp/static/img/avatar/avatar7.jpg
deleted file mode 100644
index 6a72dfa..0000000
Binary files a/im-uniapp/static/img/avatar/avatar7.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar8.jpg b/im-uniapp/static/img/avatar/avatar8.jpg
deleted file mode 100644
index 88e6984..0000000
Binary files a/im-uniapp/static/img/avatar/avatar8.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/avatar/avatar9.jpg b/im-uniapp/static/img/avatar/avatar9.jpg
deleted file mode 100644
index 0e03835..0000000
Binary files a/im-uniapp/static/img/avatar/avatar9.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/bf.png b/im-uniapp/static/img/bf.png
deleted file mode 100644
index 0d359b2..0000000
Binary files a/im-uniapp/static/img/bf.png and /dev/null differ
diff --git a/im-uniapp/static/img/f01.png b/im-uniapp/static/img/f01.png
deleted file mode 100644
index e6a32b5..0000000
Binary files a/im-uniapp/static/img/f01.png and /dev/null differ
diff --git a/im-uniapp/static/img/fbg.jpg b/im-uniapp/static/img/fbg.jpg
deleted file mode 100644
index 9dc4c38..0000000
Binary files a/im-uniapp/static/img/fbg.jpg and /dev/null differ
diff --git a/im-uniapp/static/img/l01.png b/im-uniapp/static/img/l01.png
deleted file mode 100644
index 45c647f..0000000
Binary files a/im-uniapp/static/img/l01.png and /dev/null differ
diff --git a/im-uniapp/static/img/l02.png b/im-uniapp/static/img/l02.png
deleted file mode 100644
index c2003ec..0000000
Binary files a/im-uniapp/static/img/l02.png and /dev/null differ
diff --git a/im-uniapp/static/img/l03.png b/im-uniapp/static/img/l03.png
deleted file mode 100644
index da4483e..0000000
Binary files a/im-uniapp/static/img/l03.png and /dev/null differ
diff --git a/im-uniapp/static/img/l04.png b/im-uniapp/static/img/l04.png
deleted file mode 100644
index 37f2469..0000000
Binary files a/im-uniapp/static/img/l04.png and /dev/null differ
diff --git a/im-uniapp/static/img/location.png b/im-uniapp/static/img/location.png
deleted file mode 100644
index 48ea8f9..0000000
Binary files a/im-uniapp/static/img/location.png and /dev/null differ
diff --git a/im-uniapp/static/img/vbg.mp4 b/im-uniapp/static/img/vbg.mp4
deleted file mode 100644
index d1d4179..0000000
Binary files a/im-uniapp/static/img/vbg.mp4 and /dev/null differ
diff --git a/im-uniapp/static/img/vpost.png b/im-uniapp/static/img/vpost.png
deleted file mode 100644
index 60c1f60..0000000
Binary files a/im-uniapp/static/img/vpost.png and /dev/null differ
diff --git a/im-uniapp/static/js/dayjs.min.js b/im-uniapp/static/js/dayjs.min.js
deleted file mode 100644
index ac8df8c..0000000
--- a/im-uniapp/static/js/dayjs.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):t.dayjs=n()}(this,function(){"use strict";var t="millisecond",n="second",e="minute",r="hour",i="day",s="week",u="month",o="quarter",a="year",h=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,f=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,n,e){var r=String(t);return!r||r.length>=n?t:""+Array(n+1-r.length).join(e)+t},d={s:c,z:function(t){var n=-t.utcOffset(),e=Math.abs(n),r=Math.floor(e/60),i=e%60;return(n<=0?"+":"-")+c(r,2,"0")+":"+c(i,2,"0")},m:function(t,n){var e=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(e,u),i=n-r<0,s=t.clone().add(e+(i?-1:1),u);return Number(-(e+(n-r)/(i?r-s:s-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:a,w:s,d:i,D:"date",h:r,m:e,s:n,ms:t,Q:o}[h]||String(h||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},$={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},l="en",m={};m[l]=$;var y=function(t){return t instanceof v},M=function(t,n,e){var r;if(!t)return l;if("string"==typeof t)m[t]&&(r=t),n&&(m[t]=n,r=t);else{var i=t.name;m[i]=t,r=i}return e||(l=r),r},g=function(t,n,e){if(y(t))return t.clone();var r=n?"string"==typeof n?{format:n,pl:e}:n:{};return r.date=t,new v(r)},D=d;D.l=M,D.i=y,D.w=function(t,n){return g(t,{locale:n.$L,utc:n.$u,$offset:n.$offset})};var v=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0),this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var n=t.date,e=t.utc;if(null===n)return new Date(NaN);if(D.u(n))return new Date;if(n instanceof Date)return new Date(n);if("string"==typeof n&&!/Z$/i.test(n)){var r=n.match(h);if(r)return e?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(n)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!("Invalid Date"===this.$d.toString())},d.isSame=function(t,n){var e=g(t);return this.startOf(n)<=e&&e<=this.endOf(n)},d.isAfter=function(t,n){return g(t)>1),r=+i(t[n],e),r<0?o=n+1:(a=n,l=!r);return l?o:~o}function s(t,e){return t>e?1:te?-1:0}function a(t,e,i){if(t[0]<=e)return 0;const n=t.length;if(e<=t[n-1])return n-1;if("function"==typeof i){for(let r=1;r0?r-1:r}return n-1}if(i>0){for(let i=1;i0||i&&0===s)}))}function d(){return!0}function g(){return!1}function f(){}function p(t){let e,i,n,r=!1;return function(){const s=Array.prototype.slice.call(arguments);return r&&this===n&&c(s,i)||(r=!0,n=this,i=s,e=t.apply(this,arguments)),e}}function m(t){return function(){let e;try{e=t()}catch(t){return Promise.reject(t)}return e instanceof Promise?e:Promise.resolve(e)}()}function _(t){for(const e in t)delete t[e]}function y(t){let e;for(e in t)return!1;return!e}var x=class extends n{constructor(t){super(),this.eventTarget_=t,this.pendingRemovals_=null,this.dispatching_=null,this.listeners_=null}addEventListener(t,e){if(!t||!e)return;const i=this.listeners_||(this.listeners_={}),n=i[t]||(i[t]=[]);n.includes(e)||n.push(e)}dispatchEvent(t){const i="string"==typeof t,n=i?t:t.type,r=this.listeners_&&this.listeners_[n];if(!r)return;const s=i?new e(t):t;s.target||(s.target=this.eventTarget_||this);const o=this.dispatching_||(this.dispatching_={}),a=this.pendingRemovals_||(this.pendingRemovals_={});let l;n in o||(o[n]=0,a[n]=0),++o[n];for(let t=0,e=r.length;t0)}removeEventListener(t,e){const i=this.listeners_&&this.listeners_[t];if(i){const n=i.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(i[n]=f,++this.pendingRemovals_[t]):(i.splice(n,1),0===i.length&&delete this.listeners_[t]))}}},v="change",S="error",w="contextmenu",E="click",T="dblclick",C="dragenter",R="dragover",b="drop",P="keydown",L="keypress",F="load",I="touchmove",M="wheel";function A(t,e,i,n,r){if(n&&n!==t&&(i=i.bind(n)),r){const n=i;i=function(){t.removeEventListener(e,i),n.apply(this,arguments)}}const s={target:t,type:e,listener:i};return t.addEventListener(e,i),s}function O(t,e,i,n){return A(t,e,i,n,!0)}function N(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),_(t))}class D extends x{constructor(){super(),this.on=this.onInternal,this.once=this.onceInternal,this.un=this.unInternal,this.revision_=0}changed(){++this.revision_,this.dispatchEvent(v)}getRevision(){return this.revision_}onInternal(t,e){if(Array.isArray(t)){const i=t.length,n=new Array(i);for(let r=0;r0;)this.pop()}extend(t){for(let e=0,i=t.length;ethis.getLength())throw new Error("Index out of bounds: "+t);this.unique_&&this.assertUnique_(e),this.array_.splice(t,0,e),this.updateLength_(),this.dispatchEvent(new Y(V,e,t))}pop(){return this.removeAt(this.getLength()-1)}push(t){this.unique_&&this.assertUnique_(t);const e=this.getLength();return this.insertAt(e,t),this.getLength()}remove(t){const e=this.array_;for(let i=0,n=e.length;i=this.getLength())return;const e=this.array_[t];return this.array_.splice(t,1),this.updateLength_(),this.dispatchEvent(new Y(W,e,t)),e}setAt(t,e){if(t>=this.getLength())return void this.insertAt(t,e);if(t<0)throw new Error("Index out of bounds: "+t);this.unique_&&this.assertUnique_(e,t);const i=this.array_[t];this.array_[t]=e,this.dispatchEvent(new Y(W,i,t)),this.dispatchEvent(new Y(V,e,t))}updateLength_(){this.set(Z,this.array_.length)}assertUnique_(t,e){for(let i=0,n=this.array_.length;it)throw new Error("Tile load sequence violation");this.state=t,this.changed()}load(){j()}getAlpha(t,e){if(!this.transition_)return 1;let i=this.transitionStarts_[t];if(i){if(-1===i)return 1}else i=e,this.transitionStarts_[t]=i;const n=e-i+1e3/60;return n>=this.transition_?1:tt(n/this.transition_)}inTransition(t){return!!this.transition_&&-1!==this.transitionStarts_[t]}endTransition(t){this.transition_&&(this.transitionStarts_[t]=-1)}};const st="undefined"!=typeof navigator&&void 0!==navigator.userAgent?navigator.userAgent.toLowerCase():"",ot=st.includes("firefox"),at=st.includes("safari")&&!st.includes("chrom"),lt=at&&(st.includes("version/15.4")||/cpu (os|iphone os) 15_4 like mac os x/.test(st)),ht=st.includes("webkit")&&!st.includes("edge"),ct=st.includes("macintosh"),ut="undefined"!=typeof devicePixelRatio?devicePixelRatio:1,dt="undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas&&self instanceof WorkerGlobalScope,gt="undefined"!=typeof Image&&Image.prototype.decode,ft="function"==typeof createImageBitmap,pt=function(){let t=!1;try{const e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("_",null,e),window.removeEventListener("_",null,e)}catch(t){}return t}();function mt(t,e,i,n){let r;return r=i&&i.length?i.shift():dt?new OffscreenCanvas(t||300,e||300):document.createElement("canvas"),t&&(r.width=t),e&&(r.height=e),r.getContext("2d",n)}function _t(t){const e=t.canvas;e.width=1,e.height=1,t.clearRect(0,0,1,1)}function yt(t){let e=t.offsetWidth;const i=getComputedStyle(t);return e+=parseInt(i.marginLeft,10)+parseInt(i.marginRight,10),e}function xt(t){let e=t.offsetHeight;const i=getComputedStyle(t);return e+=parseInt(i.marginTop,10)+parseInt(i.marginBottom,10),e}function vt(t,e){const i=e.parentNode;i&&i.replaceChild(t,e)}function St(t){return t&&t.parentNode?t.parentNode.removeChild(t):null}function wt(t){for(;t.lastChild;)t.removeChild(t.lastChild)}function Et(t,e){const i=t.childNodes;for(let n=0;;++n){const r=i[n],s=e[n];if(!r&&!s)break;r!==s&&(r?s?t.insertBefore(s,r):(t.removeChild(r),--n):t.appendChild(s))}}function Tt(t){return t instanceof Image||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageBitmap?t:null}function Ct(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Float32Array||t instanceof DataView?t:null}let Rt=null;function bt(t){Rt||(Rt=mt(t.width,t.height,void 0,{willReadFrequently:!0}));const e=Rt.canvas,i=t.width;e.width!==i&&(e.width=i);const n=t.height;return e.height!==n&&(e.height=n),Rt.clearRect(0,0,i,n),Rt.drawImage(t,0,0),Rt.getImageData(0,0,i,n).data}const Pt=[256,256];var Lt=class extends rt{constructor(t){const e=q;super(t.tileCoord,e,{transition:t.transition,interpolate:t.interpolate}),this.loader_=t.loader,this.data_=null,this.error_=null,this.size_=t.size||null}getSize(){if(this.size_)return this.size_;const t=Tt(this.data_);return t?[t.width,t.height]:Pt}getData(){return this.data_}getError(){return this.error_}load(){if(this.state!==q&&this.state!==J)return;this.state=K,this.changed();const t=this;this.loader_().then((function(e){t.data_=e,t.state=H,t.changed()})).catch((function(e){t.error_=e,t.state=J,t.changed()}))}};function Ft(t,e){if(!t)throw new Error(e)}class It extends X{constructor(t){if(super(),this.on,this.once,this.un,this.id_=void 0,this.geometryName_="geometry",this.style_=null,this.styleFunction_=void 0,this.geometryChangeKey_=null,this.addChangeListener(this.geometryName_,this.handleGeometryChanged_),t)if("function"==typeof t.getSimplifiedGeometry){const e=t;this.setGeometry(e)}else{const e=t;this.setProperties(e)}}clone(){const t=new It(this.hasProperties()?this.getProperties():null);t.setGeometryName(this.getGeometryName());const e=this.getGeometry();e&&t.setGeometry(e.clone());const i=this.getStyle();return i&&t.setStyle(i),t}getGeometry(){return this.get(this.geometryName_)}getId(){return this.id_}getGeometryName(){return this.geometryName_}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}handleGeometryChange_(){this.changed()}handleGeometryChanged_(){this.geometryChangeKey_&&(N(this.geometryChangeKey_),this.geometryChangeKey_=null);const t=this.getGeometry();t&&(this.geometryChangeKey_=A(t,v,this.handleGeometryChange_,this)),this.changed()}setGeometry(t){this.set(this.geometryName_,t)}setStyle(t){this.style_=t,this.styleFunction_=t?Mt(t):void 0,this.changed()}setId(t){this.id_=t,this.changed()}setGeometryName(t){this.removeChangeListener(this.geometryName_,this.handleGeometryChanged_),this.geometryName_=t,this.addChangeListener(this.geometryName_,this.handleGeometryChanged_),this.handleGeometryChanged_()}}function Mt(t){if("function"==typeof t)return t;let e;if(Array.isArray(t))e=t;else{Ft("function"==typeof t.getZIndex,"Expected an `ol/style/Style` or an array of `ol/style/Style.js`");e=[t]}return function(){return e}}var At=It;const Ot=new Array(6);function Nt(){return[1,0,0,1,0,0]}function Dt(t){return Gt(t,1,0,0,1,0,0)}function kt(t,e){const i=t[0],n=t[1],r=t[2],s=t[3],o=t[4],a=t[5],l=e[0],h=e[1],c=e[2],u=e[3],d=e[4],g=e[5];return t[0]=i*l+r*h,t[1]=n*l+s*h,t[2]=i*c+r*u,t[3]=n*c+s*u,t[4]=i*d+r*g+o,t[5]=n*d+s*g+a,t}function Gt(t,e,i,n,r,s,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=r,t[4]=s,t[5]=o,t}function jt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function Bt(t,e){const i=e[0],n=e[1];return e[0]=t[0]*i+t[2]*n+t[4],e[1]=t[1]*i+t[3]*n+t[5],e}function Ut(t,e){const i=Math.cos(e),n=Math.sin(e);return kt(t,Gt(Ot,i,n,-n,i,0,0))}function zt(t,e,i){return kt(t,Gt(Ot,e,0,0,i,0,0))}function Xt(t,e,i){return Gt(t,e,0,0,i,0,0)}function Vt(t,e,i){return kt(t,Gt(Ot,1,0,0,1,e,i))}function Wt(t,e,i,n,r,s,o,a){const l=Math.sin(s),h=Math.cos(s);return t[0]=n*h,t[1]=r*l,t[2]=-n*l,t[3]=r*h,t[4]=o*n*h-a*n*l+e,t[5]=o*r*l+a*r*h+i,t}function Zt(t,e){const i=Yt(e);Ft(0!==i,"Transformation matrix cannot be inverted");const n=e[0],r=e[1],s=e[2],o=e[3],a=e[4],l=e[5];return t[0]=o/i,t[1]=-r/i,t[2]=-s/i,t[3]=n/i,t[4]=(s*l-o*a)/i,t[5]=-(n*l-r*a)/i,t}function Yt(t){return t[0]*t[3]-t[1]*t[2]}let $t;function qt(t){const e="matrix("+t.join(", ")+")";if(dt)return e;const i=$t||($t=document.createElement("div"));return i.style.transform=e,i.style.transform}var Kt={UNKNOWN:0,INTERSECTING:1,ABOVE:2,RIGHT:4,BELOW:8,LEFT:16};function Ht(t){const e=se();for(let i=0,n=t.length;ir&&(l|=Kt.RIGHT),as&&(l|=Kt.ABOVE),l===Kt.UNKNOWN&&(l=Kt.INTERSECTING),l}function se(){return[1/0,1/0,-1/0,-1/0]}function oe(t,e,i,n,r){return r?(r[0]=t,r[1]=e,r[2]=i,r[3]=n,r):[t,e,i,n]}function ae(t){return oe(1/0,1/0,-1/0,-1/0,t)}function le(t,e){const i=t[0],n=t[1];return oe(i,n,i,n,e)}function he(t,e,i,n,r){return pe(ae(r),t,e,i,n)}function ce(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function ue(t,e,i){return Math.abs(t[0]-e[0])t[2]&&(t[2]=e[2]),e[1]t[3]&&(t[3]=e[3]),t}function ge(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function fe(t,e){for(let i=0,n=e.length;ie[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Me(t){return t[2]=o&&p<=l),n||!(s&Kt.RIGHT)||r&Kt.RIGHT||(m=g-(d-l)*f,n=m>=a&&m<=h),n||!(s&Kt.BELOW)||r&Kt.BELOW||(p=d-(g-a)/f,n=p>=o&&p<=l),n||!(s&Kt.LEFT)||r&Kt.LEFT||(m=g-(d-o)*f,n=m>=a&&m<=h)}return n}function De(t,e,i,n){if(Me(t))return ae(i);let r=[];if(n>1){const e=t[2]-t[0],i=t[3]-t[1];for(let s=0;s=i[2])){const e=Fe(i),r=Math.floor((n[0]-i[0])/e)*e;t[0]-=r,t[2]-=r}return t}function Ge(t,e){if(e.canWrapX()){const i=e.getExtent();if(!isFinite(t[0])||!isFinite(t[2]))return[[i[0],t[1],i[2],t[3]]];ke(t,e);const n=Fe(i);if(Fe(t)>n)return[[i[0],t[1],i[2],t[3]]];if(t[0]i[2])return[[t[0],t[1],i[2],t[3]],[i[0],t[1],t[2]-n,t[3]]]}return[t]}const je={9001:"m",9002:"ft",9003:"us-ft",9101:"radians",9102:"degrees"};function Be(t){return je[t]}const Ue={radians:6370997/(2*Math.PI),degrees:2*Math.PI*6370997/360,ft:.3048,m:1,"us-ft":1200/3937};var ze=class{constructor(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}canWrapX(){return this.canWrapX_}getCode(){return this.code_}getExtent(){return this.extent_}getUnits(){return this.units_}getMetersPerUnit(){return this.metersPerUnit_||Ue[this.units_]}getWorldExtent(){return this.worldExtent_}getAxisOrientation(){return this.axisOrientation_}isGlobal(){return this.global_}setGlobal(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)}getDefaultTileGrid(){return this.defaultTileGrid_}setDefaultTileGrid(t){this.defaultTileGrid_=t}setExtent(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)}setWorldExtent(t){this.worldExtent_=t}setGetPointResolution(t){this.getPointResolutionFunc_=t}getPointResolutionFunc(){return this.getPointResolutionFunc_}};const Xe=6378137,Ve=Math.PI*Xe,We=[-Ve,-Ve,Ve,Ve],Ze=[-180,-85,180,85],Ye=Xe*Math.log(Math.tan(Math.PI/2));class $e extends ze{constructor(t){super({code:t,units:"m",extent:We,global:!0,worldExtent:Ze,getPointResolution:function(t,e){return t/Math.cosh(e[1]/Xe)}})}}const qe=[new $e("EPSG:3857"),new $e("EPSG:102100"),new $e("EPSG:102113"),new $e("EPSG:900913"),new $e("http://www.opengis.net/def/crs/EPSG/0/3857"),new $e("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Ke(t,e,i){const n=t.length;i=i>1?i:2,void 0===e&&(e=i>2?t.slice():new Array(n));for(let r=0;rYe?i=Ye:i<-Ye&&(i=-Ye),e[r+1]=i}return e}function He(t,e,i){const n=t.length;i=i>1?i:2,void 0===e&&(e=i>2?t.slice():new Array(n));for(let r=0;r1?(i=r,n=s):l>0&&(i+=o*l,n+=a*l)}return gi(t,e,i,n)}function gi(t,e,i,n){const r=i-t,s=n-e;return r*r+s*s}function fi(t){const e=t.length;for(let i=0;ir&&(r=e,n=s)}if(0===r)return null;const s=t[n];t[n]=t[i],t[i]=s;for(let n=i+1;n=0;n--){i[n]=t[n][e]/t[n][n];for(let r=n-1;r>=0;r--)t[r][e]-=t[r][n]*i[n]}return i}function pi(t){return 180*t/Math.PI}function mi(t){return t*Math.PI/180}function _i(t,e){const i=t%e;return i*e<0?i+e:i}function yi(t,e,i){return t+i*(e-t)}function xi(t,e){const i=Math.pow(10,e);return Math.round(t*i)/i}function vi(t,e){return Math.round(xi(t,e))}function Si(t,e){return Math.floor(xi(t,e))}function wi(t,e){return Math.ceil(xi(t,e))}function Ei(t,e,i){const n=void 0!==i?t.toFixed(i):""+t;let r=n.indexOf(".");return r=-1===r?n.length:r,r>e?n:new Array(1+e-r).join("0")+n}function Ti(t,e){const i=(""+t).split("."),n=(""+e).split(".");for(let t=0;tr)return 1;if(r>e)return-1}return 0}function Ci(t,e){return t[0]+=+e[0],t[1]+=+e[1],t}function Ri(t,e){const i=e.getRadius(),n=e.getCenter(),r=n[0],s=n[1];let o=t[0]-r;const a=t[1]-s;0===o&&0===a&&(o=1);const l=Math.sqrt(o*o+a*a);return[r+i*o/l,s+i*a/l]}function bi(t,e){const i=t[0],n=t[1],r=e[0],s=e[1],o=r[0],a=r[1],l=s[0],h=s[1],c=l-o,u=h-a,d=0===c&&0===u?0:(c*(i-o)+u*(n-a))/(c*c+u*u||0);let g,f;return d<=0?(g=o,f=a):d>=1?(g=l,f=h):(g=o+d*c,f=a+d*u),[g,f]}function Pi(t,e,i){const n=_i(e+180,360)-180,r=Math.abs(3600*n),s=i||0;let o=Math.floor(r/3600),a=Math.floor((r-3600*o)/60),l=xi(r-3600*o-60*a,s);l>=60&&(l=0,a+=1),a>=60&&(a=0,o+=1);let h=o+"°";return 0===a&&0===l||(h+=" "+Ei(a,2)+"′"),0!==l&&(h+=" "+Ei(l,2,s)+"″"),0!==n&&(h+=" "+t.charAt(n<0?1:0)),h}function Li(t,e,i){return t?e.replace("{x}",t[0].toFixed(i)).replace("{y}",t[1].toFixed(i)):""}function Fi(t,e){let i=!0;for(let n=t.length-1;n>=0;--n)if(t[n]!=e[n]){i=!1;break}return i}function Ii(t,e){const i=Math.cos(e),n=Math.sin(e),r=t[0]*i-t[1]*n,s=t[1]*i+t[0]*n;return t[0]=r,t[1]=s,t}function Mi(t,e){return t[0]*=e,t[1]*=e,t}function Ai(t,e){const i=t[0]-e[0],n=t[1]-e[1];return i*i+n*n}function Oi(t,e){return Math.sqrt(Ai(t,e))}function Ni(t,e){return Ai(t,bi(t,e))}function Di(t,e){return Li(t,"{x}, {y}",e)}function ki(t,e){if(e.canWrapX()){const i=Fe(e.getExtent()),n=Gi(t,e,i);n&&(t[0]-=n*i)}return t}function Gi(t,e,i){const n=e.getExtent();let r=0;return e.canWrapX()&&(t[0]n[2])&&(i=i||Fe(n),r=Math.floor((t[0]-n[0])/i)),r}const ji=6371008.8;function Bi(t,e,i){i=i||ji;const n=mi(t[1]),r=mi(e[1]),s=(r-n)/2,o=mi(e[0]-t[0])/2,a=Math.sin(s)*Math.sin(s)+Math.sin(o)*Math.sin(o)*Math.cos(n)*Math.cos(r);return 2*i*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))}function Ui(t,e){let i=0;for(let n=0,r=t.length;nVi.warn||console.warn(...t)}function Yi(...t){Wi>Vi.error||console.error(...t)}let $i=!0;function qi(t){$i=!(void 0===t||t)}function Ki(t,e){if(void 0!==e)for(let i=0,n=t.length;i=o?e[s+t]:r[t]}return i}}function an(t,e,i,n){const r=tn(t),s=tn(e);hi(r,s,on(i)),hi(s,r,on(n))}function ln(t,e){if(t===e)return!0;const i=t.getUnits()===e.getUnits();if(t.getCode()===e.getCode())return i;return hn(t,e)===Ki&&i}function hn(t,e){let i=ci(t.getCode(),e.getCode());return i||(i=Hi),i}function cn(t,e){return hn(tn(t),tn(e))}function un(t,e,i){return cn(e,i)(t,void 0,t.length)}function dn(t,e,i,n){return De(t,cn(e,i),void 0,n)}let gn=null;function fn(t){gn=tn(t)}function pn(){return gn}function mn(t,e){return gn?un(t,e,gn):t}function _n(t,e){return gn?un(t,gn,e):($i&&!Fi(t,[0,0])&&t[0]>=-180&&t[0]<=180&&t[1]>=-90&&t[1]<=90&&($i=!1,Zi("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),t)}function yn(t,e){return gn?dn(t,e,gn):t}function xn(t,e){return gn?dn(t,gn,e):t}function vn(t,e){if(!gn)return t;const i=tn(e).getUnits(),n=gn.getUnits();return i&&n?t*Ue[i]/Ue[n]:t}function Sn(t,e){if(!gn)return t;const i=tn(e).getUnits(),n=gn.getUnits();return i&&n?t*Ue[n]/Ue[i]:t}function wn(t,e,i){return function(n){let r,s;if(t.canWrapX()){const e=t.getExtent(),o=Fe(e);s=Gi(n=n.slice(0),t,o),s&&(n[0]=n[0]-s*o),n[0]=ui(n[0],e[0],e[2]),n[1]=ui(n[1],e[1],e[3]),r=i(n)}else r=i(n);return s&&e.canWrapX()&&(r[0]+=s*Fe(e.getExtent())),r}}function En(){nn(qe),nn(ii),rn(ii,qe,Ke,He)}function Tn(t,e,i,n,r,s){s=s||[];let o=0;for(let a=e;a1)u=i;else{if(d>0){for(let r=0;rr&&(r=a),s=i,o=n}return r}function Nn(t,e,i,n,r){for(let s=0,o=i.length;s0;){const i=h.pop(),s=h.pop();let o=0;const a=t[s],u=t[s+1],d=t[i],g=t[i+1];for(let e=s+n;eo&&(c=e,o=i)}o>r&&(l[(c-e)/n]=1,s+nr&&(s[o++]=h,s[o++]=c,a=h,l=c);return h==a&&c==l||(s[o++]=h,s[o++]=c),o}function Yn(t,e){return e*Math.round(t/e)}function $n(t,e,i,n,r,s,o){if(e==i)return o;let a,l,h=Yn(t[e],r),c=Yn(t[e+1],r);e+=n,s[o++]=h,s[o++]=c;do{if(a=Yn(t[e],r),l=Yn(t[e+1],r),(e+=n)==i)return s[o++]=a,s[o++]=l,o}while(a==h&&l==c);for(;e0&&f>d)&&(g<0&&p0&&p>g)?(a=i,l=u):(s[o++]=a,s[o++]=l,h=a,c=l,a=i,l=u)}return s[o++]=a,s[o++]=l,o}function qn(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;ls&&(i-a)*(s-l)-(r-a)*(n-l)>0&&o++:n<=s&&(i-a)*(s-l)-(r-a)*(n-l)<0&&o--,a=i,l=n}return 0!==o}function hr(t,e,i,n,r,s){if(0===i.length)return!1;if(!lr(t,e,i[0],n,r,s))return!1;for(let e=1,o=i.length;ey&&(c=(u+d)/2,hr(t,e,i,n,c,p)&&(_=c,y=r)),u=d}return isNaN(_)&&(_=r[o]),a?(a.push(_,p,y),a):[_,p,y]}function dr(t,e,i,n,r){let s=[];for(let o=0,a=i.length;o=r[0]&&s[2]<=r[2]||(s[1]>=r[1]&&s[3]<=r[3]||gr(t,e,i,n,(function(t,e){return Ne(r,t,e)})))))}function pr(t,e,i,n,r){for(let s=0,o=i.length;s0}function Sr(t,e,i,n,r){r=void 0!==r&&r;for(let s=0,o=i.length;s{function r(){o(),i(t)}function s(){o(),n(new Error("Image load error"))}function o(){t.removeEventListener("load",r),t.removeEventListener("error",s)}t.addEventListener("load",r),t.addEventListener("error",s),e&&(t.src=e)}))}function Jr(t,e){return e&&(t.src=e),gt?new Promise(((e,i)=>t.decode().then((()=>e(t)),i))):Hr(t)}function Qr(t,e){return e&&(t.src=e),gt&&ft?t.decode().then((()=>createImageBitmap(t))):Jr(t)}var ts=class extends x{constructor(t,e,i,n){super(),this.extent=t,this.pixelRatio_=i,this.resolution=e,this.state="function"==typeof n?Wr:n,this.image_=null,this.loader="function"==typeof n?n:null}changed(){this.dispatchEvent(v)}getExtent(){return this.extent}getImage(){return this.image_}getPixelRatio(){return this.pixelRatio_}getResolution(){return this.resolution}getState(){return this.state}load(){if(this.state==Wr&&this.loader){this.state=Zr,this.changed();const t=this.getResolution(),e=Array.isArray(t)?t[0]:t;m((()=>this.loader(this.getExtent(),e,this.getPixelRatio()))).then((t=>{"image"in t&&(this.image_=t.image),"extent"in t&&(this.extent=t.extent),"resolution"in t&&(this.resolution=t.resolution),"pixelRatio"in t&&(this.pixelRatio_=t.pixelRatio),(t instanceof HTMLImageElement||t instanceof ImageBitmap||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement)&&(this.image_=t),this.state=Yr})).catch((t=>{this.state=$r,console.error(t)})).finally((()=>this.changed()))}}setImage(t){this.image_=t}setResolution(t){this.resolution=t}};var es=class extends ts{constructor(t,e,i,n,r){super(t,e,i,void 0!==r?Wr:Yr),this.loader_=void 0!==r?r:null,this.canvas_=n,this.error_=null}getError(){return this.error_}handleLoad_(t){t?(this.error_=t,this.state=$r):this.state=Yr,this.changed()}load(){this.state==Wr&&(this.state=Zr,this.changed(),this.loader_(this.handleLoad_.bind(this)))}getImage(){return this.canvas_}};var is=class extends rt{constructor(t,e,i,n,r,s){super(t,e,s),this.crossOrigin_=n,this.src_=i,this.key=i,this.image_=new Image,null!==n&&(this.image_.crossOrigin=n),this.unlisten_=null,this.tileLoadFunction_=r}getImage(){return this.image_}setImage(t){this.image_=t,this.state=H,this.unlistenImage_(),this.changed()}handleImageError_(){this.state=J,this.unlistenImage_(),this.image_=function(){const t=mt(1,1);return t.fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas}(),this.changed()}handleImageLoad_(){const t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=H:this.state=Q,this.unlistenImage_(),this.changed()}load(){this.state==J&&(this.state=q,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==q&&(this.state=K,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=Kr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))}unlistenImage_(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)}};var ns=class{constructor(t,e,i){this.decay_=t,this.minVelocity_=e,this.delay_=i,this.points_=[],this.angle_=0,this.initialVelocity_=0}begin(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0}update(t,e){this.points_.push(t,e,Date.now())}end(){if(this.points_.length<6)return!1;const t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]0&&this.points_[i+2]>t;)i-=3;const n=this.points_[e+2]-this.points_[i+2];if(n<1e3/60)return!1;const r=this.points_[e]-this.points_[i],s=this.points_[e+1]-this.points_[i+1];return this.angle_=Math.atan2(s,r),this.initialVelocity_=Math.sqrt(r*r+s*s)/n,this.initialVelocity_>this.minVelocity_}getDistance(){return(this.minVelocity_-this.initialVelocity_)/this.decay_}getAngle(){return this.angle_}};const rs=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,ss=/^([a-z]*)$|^hsla?\(.*\)$/i;function os(t){return"string"==typeof t?t:us(t)}function as(t){const e=document.createElement("div");if(e.style.color=t,""!==e.style.color){document.body.appendChild(e);const t=getComputedStyle(e).color;return document.body.removeChild(e),t}return""}const ls=function(){const t={};let e=0;return function(i){let n;if(t.hasOwnProperty(i))n=t[i];else{if(e>=1024){let i=0;for(const n in t)0==(3&i++)&&(delete t[n],--e)}n=function(t){let e,i,n,r,s;ss.exec(t)&&(t=as(t));if(rs.exec(t)){const o=t.length-1;let a;a=o<=4?1:2;const l=4===o||8===o;e=parseInt(t.substr(1+0*a,a),16),i=parseInt(t.substr(1+1*a,a),16),n=parseInt(t.substr(1+2*a,a),16),r=l?parseInt(t.substr(1+3*a,a),16):255,1==a&&(e=(e<<4)+e,i=(i<<4)+i,n=(n<<4)+n,l&&(r=(r<<4)+r)),s=[e,i,n,r/255]}else if(t.startsWith("rgba("))s=t.slice(5,-1).split(",").map(Number),cs(s);else{if(!t.startsWith("rgb("))throw new Error("Invalid color");s=t.slice(4,-1).split(",").map(Number),s.push(1),cs(s)}return s}(i),t[i]=n,++e}return n}}();function hs(t){return Array.isArray(t)?t:ls(t)}function cs(t){return t[0]=ui(t[0]+.5|0,0,255),t[1]=ui(t[1]+.5|0,0,255),t[2]=ui(t[2]+.5|0,0,255),t[3]=ui(t[3],0,1),t}function us(t){let e=t[0];e!=(0|e)&&(e=e+.5|0);let i=t[1];i!=(0|i)&&(i=i+.5|0);let n=t[2];n!=(0|n)&&(n=n+.5|0);return"rgba("+e+","+i+","+n+","+(void 0===t[3]?1:Math.round(100*t[3])/100)+")"}function ds(t){return ss.test(t)&&(t=as(t)),rs.test(t)||t.startsWith("rgba(")||t.startsWith("rgb(")}class gs{constructor(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}clear(){this.cache_={},this.cacheSize_=0}canExpireCache(){return this.cacheSize_>this.maxCacheSize_}expire(){if(this.canExpireCache()){let t=0;for(const e in this.cache_){const i=this.cache_[e];0!=(3&t++)||i.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}}get(t,e,i){const n=fs(t,e,i);return n in this.cache_?this.cache_[n]:null}set(t,e,i,n){const r=fs(t,e,i);this.cache_[r]=n,++this.cacheSize_}setSize(t){this.maxCacheSize_=t,this.expire()}}function fs(t,e,i){return e+":"+t+":"+(i?os(i):"null")}var ps=gs;const ms=new gs;var _s="opacity",ys="visible",xs="extent",vs="zIndex",Ss="maxResolution",ws="minResolution",Es="maxZoom",Ts="minZoom",Cs="source",Rs="map";var bs=class extends X{constructor(t){super(),this.on,this.once,this.un,this.background_=t.background;const e=Object.assign({},t);"object"==typeof t.properties&&(delete e.properties,Object.assign(e,t.properties)),e[_s]=void 0!==t.opacity?t.opacity:1,Ft("number"==typeof e[_s],"Layer opacity must be a number"),e[ys]=void 0===t.visible||t.visible,e[vs]=t.zIndex,e[Ss]=void 0!==t.maxResolution?t.maxResolution:1/0,e[ws]=void 0!==t.minResolution?t.minResolution:0,e[Ts]=void 0!==t.minZoom?t.minZoom:-1/0,e[Es]=void 0!==t.maxZoom?t.maxZoom:1/0,this.className_=void 0!==e.className?e.className:"ol-layer",delete e.className,this.setProperties(e),this.state_=null}getBackground(){return this.background_}getClassName(){return this.className_}getLayerState(t){const e=this.state_||{layer:this,managed:void 0===t||t},i=this.getZIndex();return e.opacity=ui(Math.round(100*this.getOpacity())/100,0,1),e.visible=this.getVisible(),e.extent=this.getExtent(),e.zIndex=void 0!==i||e.managed?i:1/0,e.maxResolution=this.getMaxResolution(),e.minResolution=Math.max(this.getMinResolution(),0),e.minZoom=this.getMinZoom(),e.maxZoom=this.getMaxZoom(),this.state_=e,e}getLayersArray(t){return j()}getLayerStatesArray(t){return j()}getExtent(){return this.get(xs)}getMaxResolution(){return this.get(Ss)}getMinResolution(){return this.get(ws)}getMinZoom(){return this.get(Ts)}getMaxZoom(){return this.get(Es)}getOpacity(){return this.get(_s)}getSourceState(){return j()}getVisible(){return this.get(ys)}getZIndex(){return this.get(vs)}setBackground(t){this.background_=t,this.changed()}setExtent(t){this.set(xs,t)}setMaxResolution(t){this.set(Ss,t)}setMinResolution(t){this.set(ws,t)}setMaxZoom(t){this.set(Es,t)}setMinZoom(t){this.set(Ts,t)}setOpacity(t){Ft("number"==typeof t,"Layer opacity must be a number"),this.set(_s,t)}setVisible(t){this.set(ys,t)}setZIndex(t){this.set(vs,t)}disposeInternal(){this.state_&&(this.state_.layer=null,this.state_=null),super.disposeInternal()}},Ps="prerender",Ls="postrender",Fs="precompose",Is="postcompose",Ms="rendercomplete",As=0,Os=1,Ns={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"};const Ds=42,ks=256;function Gs(t,e,i){return function(n,r,s,o,a){if(!n)return;if(!r&&!e)return n;const l=e?0:s[0]*r,h=e?0:s[1]*r,c=a?a[0]:0,u=a?a[1]:0;let d=t[0]+l/2+c,g=t[2]-l/2+c,f=t[1]+h/2+u,p=t[3]-h/2+u;d>g&&(d=(g+d)/2,g=d),f>p&&(f=(p+f)/2,p=f);let m=ui(n[0],d,g),_=ui(n[1],f,p);if(o&&i&&r){const t=30*r;m+=-t*Math.log(1+Math.max(0,d-n[0])/t)+t*Math.log(1+Math.max(0,n[0]-g)/t),_+=-t*Math.log(1+Math.max(0,f-n[1])/t)+t*Math.log(1+Math.max(0,n[1]-p)/t)}return[m,_]}}function js(t){return t}function Bs(t,e,i,n){const r=Fe(e)/i[0],s=Re(e)/i[1];return n?Math.min(t,Math.max(r,s)):Math.min(t,Math.min(r,s))}function Us(t,e,i){let n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,i&&(n=Math.max(n,i),n/=Math.log(1+50*Math.max(0,i/t-1))/50+1),ui(n,i/2,2*e)}function zs(t,e,i,n){return e=void 0===e||e,function(r,s,o,l){if(void 0!==r){const h=t[0],c=t[t.length-1],u=i?Bs(h,i,o,n):h;if(l)return e?Us(r,u,c):ui(r,c,u);const d=Math.min(u,r),g=Math.floor(a(t,d,s));return t[g]>u&&g1&&"function"==typeof arguments[i-1]&&(e=arguments[i-1],--i);let n=0;for(;n0}getInteracting(){return this.hints_[Os]>0}cancelAnimations(){let t;this.setHint(As,-this.hints_[As]);for(let e=0,i=this.animations_.length;e=0;--i){const n=this.animations_[i];let r=!0;for(let i=0,s=n.length;i0?o/s.duration:1;a>=1?(s.complete=!0,a=1):r=!1;const l=s.easing(a);if(s.sourceCenter){const t=s.sourceCenter[0],e=s.sourceCenter[1],i=s.targetCenter[0],n=s.targetCenter[1];this.nextCenter_=s.targetCenter;const r=t+l*(i-t),o=e+l*(n-e);this.targetCenter_=[r,o]}if(s.sourceResolution&&s.targetResolution){const t=1===l?s.targetResolution:s.sourceResolution+l*(s.targetResolution-s.sourceResolution);if(s.anchor){const e=this.getViewportSize_(this.getRotation()),i=this.constraints_.resolution(t,0,e,!0);this.targetCenter_=this.calculateCenterZoom(i,s.anchor)}this.nextResolution_=s.targetResolution,this.targetResolution_=t,this.applyTargetState_(!0)}if(void 0!==s.sourceRotation&&void 0!==s.targetRotation){const t=1===l?_i(s.targetRotation+Math.PI,2*Math.PI)-Math.PI:s.sourceRotation+l*(s.targetRotation-s.sourceRotation);if(s.anchor){const e=this.constraints_.rotation(t,!0);this.targetCenter_=this.calculateCenterRotate(e,s.anchor)}this.nextRotation_=s.targetRotation,this.targetRotation_=t}if(this.applyTargetState_(!0),e=!0,!s.complete)break}if(r){this.animations_[i]=null,this.setHint(As,-1),this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN;const t=n[0].callback;t&&qs(t,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}calculateCenterRotate(t,e){let i;const n=this.getCenterInternal();return void 0!==n&&(i=[n[0]-e[0],n[1]-e[1]],Ii(i,t-this.getRotation()),Ci(i,e)),i}calculateCenterZoom(t,e){let i;const n=this.getCenterInternal(),r=this.getResolution();if(void 0!==n&&void 0!==r){i=[e[0]-t*(e[0]-n[0])/r,e[1]-t*(e[1]-n[1])/r]}return i}getViewportSize_(t){const e=this.viewportSize_;if(t){const i=e[0],n=e[1];return[Math.abs(i*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(i*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e}setViewportSize(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)}getCenter(){const t=this.getCenterInternal();return t?mn(t,this.getProjection()):t}getCenterInternal(){return this.get(Ns.CENTER)}getConstraints(){return this.constraints_}getConstrainResolution(){return this.get("constrainResolution")}getHints(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()}calculateExtent(t){return yn(this.calculateExtentInternal(t),this.getProjection())}calculateExtentInternal(t){t=t||this.getViewportSizeMinusPadding_();const e=this.getCenterInternal();Ft(e,"The view center is not defined");const i=this.getResolution();Ft(void 0!==i,"The view resolution is not defined");const n=this.getRotation();return Ft(void 0!==n,"The view rotation is not defined"),Te(e,i,n,t)}getMaxResolution(){return this.maxResolution_}getMinResolution(){return this.minResolution_}getMaxZoom(){return this.getZoomForResolution(this.minResolution_)}setMaxZoom(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))}getMinZoom(){return this.getZoomForResolution(this.maxResolution_)}setMinZoom(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))}setConstrainResolution(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))}getProjection(){return this.projection_}getResolution(){return this.get(Ns.RESOLUTION)}getResolutions(){return this.resolutions_}getResolutionForExtent(t,e){return this.getResolutionForExtentInternal(xn(t,this.getProjection()),e)}getResolutionForExtentInternal(t,e){e=e||this.getViewportSizeMinusPadding_();const i=Fe(t)/e[0],n=Re(t)/e[1];return Math.max(i,n)}getResolutionForValueFunction(t){t=t||2;const e=this.getConstrainedResolution(this.maxResolution_),i=this.minResolution_,n=Math.log(e/i)/Math.log(t);return function(i){return e/Math.pow(t,i*n)}}getRotation(){return this.get(Ns.ROTATION)}getValueForResolutionFunction(t){const e=Math.log(t||2),i=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,r=Math.log(i/n)/e;return function(t){return Math.log(i/t)/e/r}}getViewportSizeMinusPadding_(t){let e=this.getViewportSize_(t);const i=this.padding_;return i&&(e=[e[0]-i[1]-i[3],e[1]-i[0]-i[2]]),e}getState(){const t=this.getProjection(),e=this.getResolution(),i=this.getRotation();let n=this.getCenterInternal();const r=this.padding_;if(r){const t=this.getViewportSizeMinusPadding_();n=to(n,this.getViewportSize_(),[t[0]/2+r[3],t[1]/2+r[0]],e,i)}return{center:n.slice(0),projection:void 0!==t?t:null,resolution:e,nextCenter:this.nextCenter_,nextResolution:this.nextResolution_,nextRotation:this.nextRotation_,rotation:i,zoom:this.getZoom()}}getViewStateAndExtent(){return{viewState:this.getState(),extent:this.calculateExtent()}}getZoom(){let t;const e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t}getZoomForResolution(t){let e,i,n=this.minZoom_||0;if(this.resolutions_){const r=a(this.resolutions_,t,1);n=r,e=this.resolutions_[r],i=r==this.resolutions_.length-1?2:e/this.resolutions_[r+1]}else e=this.maxResolution_,i=this.zoomFactor_;return n+Math.log(e/t)/Math.log(i)}getResolutionForZoom(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;const e=ui(Math.floor(t),0,this.resolutions_.length-2),i=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(i,ui(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)}fit(t,e){let i;if(Ft(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,"Invalid extent or geometry provided as `geometry`"),Array.isArray(t)){Ft(!Me(t),"Cannot fit empty extent provided as `geometry`");i=Lr(xn(t,this.getProjection()))}else if("Circle"===t.getType()){const e=xn(t.getExtent(),this.getProjection());i=Lr(e),i.rotate(this.getRotation(),we(e))}else{const e=pn();i=e?t.clone().transform(e,this.getProjection()):t}this.fitInternal(i,e)}rotatedExtentForGeometry(t){const e=this.getRotation(),i=Math.cos(e),n=Math.sin(-e),r=t.getFlatCoordinates(),s=t.getStride();let o=1/0,a=1/0,l=-1/0,h=-1/0;for(let t=0,e=r.length;t=t.maxResolution)return!1;const n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}var no=class extends bs{constructor(t){const e=Object.assign({},t);delete e.source,super(e),this.on,this.once,this.un,this.mapPrecomposeKey_=null,this.mapRenderKey_=null,this.sourceChangeKey_=null,this.renderer_=null,this.sourceReady_=!1,this.rendered=!1,t.render&&(this.render=t.render),t.map&&this.setMap(t.map),this.addChangeListener(Cs,this.handleSourcePropertyChange_);const i=t.source?t.source:null;this.setSource(i)}getLayersArray(t){return(t=t||[]).push(this),t}getLayerStatesArray(t){return(t=t||[]).push(this.getLayerState()),t}getSource(){return this.get(Cs)||null}getRenderSource(){return this.getSource()}getSourceState(){const t=this.getSource();return t?t.getState():"undefined"}handleSourceChange_(){this.changed(),this.sourceReady_||"ready"!==this.getSource().getState()||(this.sourceReady_=!0,this.dispatchEvent("sourceready"))}handleSourcePropertyChange_(){this.sourceChangeKey_&&(N(this.sourceChangeKey_),this.sourceChangeKey_=null),this.sourceReady_=!1;const t=this.getSource();t&&(this.sourceChangeKey_=A(t,v,this.handleSourceChange_,this),"ready"===t.getState()&&(this.sourceReady_=!0,setTimeout((()=>{this.dispatchEvent("sourceready")}),0))),this.changed()}getFeatures(t){return this.renderer_?this.renderer_.getFeatures(t):Promise.resolve([])}getData(t){return this.renderer_&&this.rendered?this.renderer_.getData(t):null}isVisible(t){let e;const i=this.getMapInternal();let n;!t&&i&&(t=i.getView()),e=t instanceof eo?{viewState:t.getState(),extent:t.calculateExtent()}:t,!e.layerStatesArray&&i&&(e.layerStatesArray=i.getLayerGroup().getLayerStatesArray()),n=e.layerStatesArray?e.layerStatesArray.find((t=>t.layer===this)):this.getLayerState();const r=this.getExtent();return io(n,e.viewState)&&(!r||Ie(r,e.extent))}getAttributions(t){if(!this.isVisible(t))return[];let e;const i=this.getSource();if(i&&(e=i.getAttributions()),!e)return[];let n=e(t instanceof eo?t.getViewStateAndExtent():t);return Array.isArray(n)||(n=[n]),n}render(t,e){const i=this.getRenderer();return i.prepareFrame(t)?(this.rendered=!0,i.renderFrame(t,e)):null}unrender(){this.rendered=!1}setMapInternal(t){t||this.unrender(),this.set(Rs,t)}getMapInternal(){return this.get(Rs)}setMap(t){this.mapPrecomposeKey_&&(N(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(N(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=A(t,Fs,(function(t){const e=t.frameState.layerStatesArray,i=this.getLayerState(!1);Ft(!e.some((function(t){return t.layer===i.layer})),"A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both."),e.push(i)}),this),this.mapRenderKey_=A(this,v,t.render,t),this.changed())}setSource(t){this.set(Cs,t)}getRenderer(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_}hasRenderer(){return!!this.renderer_}createRenderer(){return null}disposeInternal(){this.renderer_&&(this.renderer_.dispose(),delete this.renderer_),this.setSource(null),super.disposeInternal()}};function ro(t,e){ms.expire()}var so=class extends n{constructor(t){super(),this.map_=t}dispatchRenderEvent(t,e){j()}calculateMatrices2D(t){const e=t.viewState,i=t.coordinateToPixelTransform,n=t.pixelToCoordinateTransform;Wt(i,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),Zt(n,i)}forEachFeatureAtCoordinate(t,e,i,n,r,s,o,a){let l;const h=e.viewState;function c(t,e,i,n){return r.call(s,e,t?i:null,n)}const u=h.projection,d=ki(t.slice(),u),g=[[0,0]];if(u.canWrapX()&&n){const t=Fe(u.getExtent());g.push([-t,0],[t,0])}const f=e.layerStatesArray,p=f.length,m=[],_=[];for(let n=0;n=0;--r){const s=f[r],u=s.layer;if(u.hasRenderer()&&io(s,h)&&o.call(a,u)){const r=u.getRenderer(),o=u.getSource();if(r&&o){const a=o.getWrapX()?d:t,h=c.bind(null,s.managed);_[0]=a[0]+g[n][0],_[1]=a[1]+g[n][1],l=r.forEachFeatureAtCoordinate(_,e,i,h,m)}if(l)return l}}if(0===m.length)return;const y=1/m.length;return m.forEach(((t,e)=>t.distanceSq+=e*y)),m.sort(((t,e)=>t.distanceSq-e.distanceSq)),m.some((t=>l=t.callback(t.feature,t.layer,t.geometry))),l}hasFeatureAtCoordinate(t,e,i,n,r,s){return void 0!==this.forEachFeatureAtCoordinate(t,e,i,n,d,this,r,s)}getMap(){return this.map_}renderFrame(t){j()}flushDeclutterItems(t){}scheduleExpireIconCache(t){ms.canExpireCache()&&t.postRenderFunctions.push(ro)}};var oo=class extends e{constructor(t,e,i,n){super(t),this.inversePixelTransform=e,this.frameState=i,this.context=n}};const ao="ol-hidden",lo="ol-selectable",ho="ol-unselectable",co="ol-unsupported",uo="ol-control",go="ol-collapsed",fo=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),po=["style","variant","weight","size","lineHeight","family"],mo=function(t){const e=t.match(fo);if(!e)return null;const i={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"};for(let t=0,n=po.length;tMath.max(e,Oo(t,i))),0);return i[e]=n,n}function Do(t,e){const i=[],n=[],r=[];let s=0,o=0,a=0,l=0;for(let h=0,c=e.length;h<=c;h+=2){const u=e[h];if("\n"===u||h===c){s=Math.max(s,o),r.push(o),o=0,a+=l;continue}const d=e[h+1]||t.font,g=Oo(d,u);i.push(g),o+=g;const f=Mo(d);n.push(f),l=Math.max(l,f)}return{width:s,height:a,widths:i,heights:n,lineWidths:r}}function ko(t,e,i,n,r,s,o,a,l,h,c){t.save(),1!==i&&(t.globalAlpha*=i),e&&t.transform.apply(t,e),n.contextInstructions?(t.translate(l,h),t.scale(c[0],c[1]),function(t,e){const i=t.contextInstructions;for(let t=0,n=i.length;t=0;--i)e[i].renderDeclutter(t);e.length=0}};class jo extends e{constructor(t,e){super(t),this.layer=e}}const Bo="layers";class Uo extends bs{constructor(t){t=t||{};const e=Object.assign({},t);delete e.layers;let i=t.layers;super(e),this.on,this.once,this.un,this.layersListenerKeys_=[],this.listenerKeys_={},this.addChangeListener(Bo,this.handleLayersChanged_),i?Array.isArray(i)?i=new $(i.slice(),{unique:!0}):Ft("function"==typeof i.getArray,"Expected `layers` to be an array or a `Collection`"):i=new $(void 0,{unique:!0}),this.setLayers(i)}handleLayerChange_(){this.changed()}handleLayersChanged_(){this.layersListenerKeys_.forEach(N),this.layersListenerKeys_.length=0;const t=this.getLayers();this.layersListenerKeys_.push(A(t,V,this.handleLayersAdd_,this),A(t,W,this.handleLayersRemove_,this));for(const t in this.listenerKeys_)this.listenerKeys_[t].forEach(N);_(this.listenerKeys_);const e=t.getArray();for(let t=0,i=e.length;t{this.clickTimeoutId_=void 0;const e=new Vo(Wo.SINGLECLICK,this.map_,t);this.dispatchEvent(e)}),250)}updateActivePointers_(t){const e=t,i=e.pointerId;if(e.type==Wo.POINTERUP||e.type==Wo.POINTERCANCEL){delete this.trackedTouches_[i];for(const t in this.trackedTouches_)if(this.trackedTouches_[t].target!==e.target){delete this.trackedTouches_[t];break}}else e.type!=Wo.POINTERDOWN&&e.type!=Wo.POINTERMOVE||(this.trackedTouches_[i]=e);this.activePointers_=Object.values(this.trackedTouches_)}handlePointerUp_(t){this.updateActivePointers_(t);const e=new Vo(Wo.POINTERUP,this.map_,t,void 0,void 0,this.activePointers_);this.dispatchEvent(e),this.emulateClicks_&&!e.defaultPrevented&&!this.dragging_&&this.isMouseActionButton_(t)&&this.emulateClick_(this.down_),0===this.activePointers_.length&&(this.dragListenerKeys_.forEach(N),this.dragListenerKeys_.length=0,this.dragging_=!1,this.down_=null)}isMouseActionButton_(t){return 0===t.button}handlePointerDown_(t){this.emulateClicks_=0===this.activePointers_.length,this.updateActivePointers_(t);const e=new Vo(Wo.POINTERDOWN,this.map_,t,void 0,void 0,this.activePointers_);if(this.dispatchEvent(e),this.down_=new PointerEvent(t.type,t),Object.defineProperty(this.down_,"target",{writable:!1,value:t.target}),0===this.dragListenerKeys_.length){const t=this.map_.getOwnerDocument();this.dragListenerKeys_.push(A(t,Wo.POINTERMOVE,this.handlePointerMove_,this),A(t,Wo.POINTERUP,this.handlePointerUp_,this),A(this.element_,Wo.POINTERCANCEL,this.handlePointerUp_,this)),this.element_.getRootNode&&this.element_.getRootNode()!==t&&this.dragListenerKeys_.push(A(this.element_.getRootNode(),Wo.POINTERUP,this.handlePointerUp_,this))}}handlePointerMove_(t){if(this.isMoving_(t)){this.updateActivePointers_(t),this.dragging_=!0;const e=new Vo(Wo.POINTERDRAG,this.map_,t,this.dragging_,void 0,this.activePointers_);this.dispatchEvent(e)}}relayMoveEvent_(t){this.originalPointerMoveEvent_=t;const e=!(!this.down_||!this.isMoving_(t));this.dispatchEvent(new Vo(Wo.POINTERMOVE,this.map_,t,e))}handleTouchMove_(t){const e=this.originalPointerMoveEvent_;e&&!e.defaultPrevented||"boolean"==typeof t.cancelable&&!0!==t.cancelable||t.preventDefault()}isMoving_(t){return this.dragging_||Math.abs(t.clientX-this.down_.clientX)>this.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_}disposeInternal(){this.relayedListenerKey_&&(N(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(I,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(N(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(N),this.dragListenerKeys_.length=0,this.element_=null,super.disposeInternal()}},Ho="postrender",Jo="movestart",Qo="moveend",ta="loadstart",ea="loadend",ia="layergroup",na="size",ra="target",sa="view";const oa=1/0;var aa=class{constructor(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}clear(){this.elements_.length=0,this.priorities_.length=0,_(this.queuedElements_)}dequeue(){const t=this.elements_,e=this.priorities_,i=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));const n=this.keyFunction_(i);return delete this.queuedElements_[n],i}enqueue(t){Ft(!(this.keyFunction_(t)in this.queuedElements_),"Tried to enqueue an `element` that was already added to the queue");const e=this.priorityFunction_(t);return e!=oa&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)}getCount(){return this.elements_.length}getLeftChildIndex_(t){return 2*t+1}getRightChildIndex_(t){return 2*t+2}getParentIndex_(t){return t-1>>1}heapify_(){let t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)}isEmpty(){return 0===this.elements_.length}isKeyQueued(t){return t in this.queuedElements_}isQueued(t){return this.isKeyQueued(this.keyFunction_(t))}siftUp_(t){const e=this.elements_,i=this.priorities_,n=e.length,r=e[t],s=i[t],o=t;for(;t>1;){const r=this.getLeftChildIndex_(t),s=this.getRightChildIndex_(t),o=st;){const t=this.getParentIndex_(e);if(!(n[t]>s))break;i[e]=i[t],n[e]=n[t],e=t}i[e]=r,n[e]=s}reprioritize(){const t=this.priorityFunction_,e=this.elements_,i=this.priorities_;let n=0;const r=e.length;let s,o,a;for(o=0;o0;)n=this.dequeue()[0],r=n.getKey(),i=n.getState(),i!==q||r in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[r]=!0,++this.tilesLoading_,++s,n.load())}};function ha(t,e,i,n,r){if(!t||!(i in t.wantedTiles))return oa;if(!t.wantedTiles[i][e.getKey()])return oa;const s=t.viewState.center,o=n[0]-s[0],a=n[1]-s[1];return 65536*Math.log(r)+Math.sqrt(o*o+a*a)/r}var ca=class extends X{constructor(t){super();const e=t.element;!e||t.target||e.style.pointerEvents||(e.style.pointerEvents="auto"),this.element=e||null,this.target_=null,this.map_=null,this.listenerKeys=[],t.render&&(this.render=t.render),t.target&&this.setTarget(t.target)}disposeInternal(){St(this.element),super.disposeInternal()}getMap(){return this.map_}setMap(t){this.map_&&St(this.element);for(let t=0,e=this.listenerKeys.length;te.getAttributions(t))))),i=!this.getMap().getAllLayers().some((t=>t.getSource()&&!1===t.getSource().getAttributionsCollapsible()));return this.overrideCollapsible_||this.setCollapsible(i),e}updateElement_(t){if(!t)return void(this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1));const e=this.collectSourceAttributions_(t),i=e.length>0;if(this.renderedVisible_!=i&&(this.element.style.display=i?"":"none",this.renderedVisible_=i),!c(e,this.renderedAttributions_)){wt(this.ulElement_);for(let t=0,i=e.length;t0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:et}):t.setRotation(0))}render(t){const e=t.frameState;if(!e)return;const i=e.viewState.rotation;if(i!=this.rotation_){const t="rotate("+i+"rad)";if(this.autoHide_){const t=this.element.classList.contains(ao);t||0!==i?t&&0!==i&&this.element.classList.remove(ao):this.element.classList.add(ao)}this.label_.style.transform=t}this.rotation_=i}};var ga=class extends ca{constructor(t){t=t||{},super({element:document.createElement("div"),target:t.target});const e=void 0!==t.className?t.className:"ol-zoom",i=void 0!==t.delta?t.delta:1,n=void 0!==t.zoomInClassName?t.zoomInClassName:e+"-in",r=void 0!==t.zoomOutClassName?t.zoomOutClassName:e+"-out",s=void 0!==t.zoomInLabel?t.zoomInLabel:"+",o=void 0!==t.zoomOutLabel?t.zoomOutLabel:"–",a=void 0!==t.zoomInTipLabel?t.zoomInTipLabel:"Zoom in",l=void 0!==t.zoomOutTipLabel?t.zoomOutTipLabel:"Zoom out",h=document.createElement("button");h.className=n,h.setAttribute("type","button"),h.title=a,h.appendChild("string"==typeof s?document.createTextNode(s):s),h.addEventListener(E,this.handleClick_.bind(this,i),!1);const c=document.createElement("button");c.className=r,c.setAttribute("type","button"),c.title=l,c.appendChild("string"==typeof o?document.createTextNode(o):o),c.addEventListener(E,this.handleClick_.bind(this,-i),!1);const u=e+" "+ho+" "+uo,d=this.element;d.className=u,d.appendChild(h),d.appendChild(c),this.duration_=void 0!==t.duration?t.duration:250}handleClick_(t,e){e.preventDefault(),this.zoomByDelta_(t)}zoomByDelta_(t){const e=this.getMap().getView();if(!e)return;const i=e.getZoom();if(void 0!==i){const n=e.getConstrainedZoom(i+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:et})):e.setZoom(n)}}};function fa(t){t=t||{};const e=new $;(void 0===t.zoom||t.zoom)&&e.push(new ga(t.zoomOptions));(void 0===t.rotate||t.rotate)&&e.push(new da(t.rotateOptions));return(void 0===t.attribution||t.attribution)&&e.push(new ua(t.attributionOptions)),e}var pa="active";function ma(t,e,i){const n=t.getCenterInternal();if(n){const r=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==i?i:250,easing:nt,center:t.getConstrainedCenter(r)})}}function _a(t,e,i,n){const r=t.getZoom();if(void 0===r)return;const s=t.getConstrainedZoom(r+e),o=t.getResolutionForZoom(s);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:o,anchor:i,duration:void 0!==n?n:250,easing:et})}var ya=class extends X{constructor(t){super(),this.on,this.once,this.un,t&&t.handleEvent&&(this.handleEvent=t.handleEvent),this.map_=null,this.setActive(!0)}getActive(){return this.get(pa)}getMap(){return this.map_}handleEvent(t){return!0}setActive(t){this.set(pa,t)}setMap(t){this.map_=t}};var xa=class extends ya{constructor(t){super(),t=t||{},this.delta_=t.delta?t.delta:1,this.duration_=void 0!==t.duration?t.duration:250}handleEvent(t){let e=!1;if(t.type==Wo.DBLCLICK){const i=t.originalEvent,n=t.map,r=t.coordinate,s=i.shiftKey?-this.delta_:this.delta_;_a(n.getView(),s,r,this.duration_),i.preventDefault(),e=!0}return!e}};function va(t){const e=t.length;let i=0,n=0;for(let r=0;r0}}else if(t.type==Wo.POINTERDOWN){const i=this.handleDownEvent(t);this.handlingDownUpSequence=i,e=this.stopDown(i)}else t.type==Wo.POINTERMOVE&&this.handleMoveEvent(t);return!e}handleMoveEvent(t){}handleUpEvent(t){return!1}stopDown(t){return t}updateTrackedPointers_(t){t.activePointers&&(this.targetPointers=t.activePointers)}};function wa(t){const e=arguments;return function(t){let i=!0;for(let n=0,r=e.length;n0&&this.condition_(t)){const e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1}};var Ga=class extends Sa{constructor(t){t=t||{},super({stopDown:g}),this.condition_=t.condition?t.condition:Ta,this.lastAngle_=void 0,this.duration_=void 0!==t.duration?t.duration:250}handleDragEvent(t){if(!Na(t))return;const e=t.map,i=e.getView();if(i.getConstraints().rotation===Ws)return;const n=e.getSize(),r=t.pixel,s=Math.atan2(n[1]/2-r[1],r[0]-n[0]/2);if(void 0!==this.lastAngle_){const t=s-this.lastAngle_;i.adjustRotationInternal(-t)}this.lastAngle_=s}handleUpEvent(t){if(!Na(t))return!0;return t.map.getView().endInteraction(this.duration_),!1}handleDownEvent(t){if(!Na(t))return!1;if(Pa(t)&&this.condition_(t)){return t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0}return!1}};var ja=class extends n{constructor(t){super(),this.geometry_=null,this.element_=document.createElement("div"),this.element_.style.position="absolute",this.element_.style.pointerEvents="auto",this.element_.className="ol-box "+t,this.map_=null,this.startPixel_=null,this.endPixel_=null}disposeInternal(){this.setMap(null)}render_(){const t=this.startPixel_,e=this.endPixel_,i="px",n=this.element_.style;n.left=Math.min(t[0],e[0])+i,n.top=Math.min(t[1],e[1])+i,n.width=Math.abs(e[0]-t[0])+i,n.height=Math.abs(e[1]-t[1])+i}setMap(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);const t=this.element_.style;t.left="inherit",t.top="inherit",t.width="inherit",t.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)}setPixels(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()}createOrUpdateGeometry(){const t=this.startPixel_,e=this.endPixel_,i=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);i[4]=i[0].slice(),this.geometry_?this.geometry_.setCoordinates([i]):this.geometry_=new br([i])}getGeometry(){return this.geometry_}};const Ba="boxstart",Ua="boxdrag",za="boxend",Xa="boxcancel";class Va extends e{constructor(t,e,i){super(t),this.coordinate=e,this.mapBrowserEvent=i}}var Wa=class extends Sa{constructor(t){super(),this.on,this.once,this.un,t=t||{},this.box_=new ja(t.className||"ol-dragbox"),this.minArea_=void 0!==t.minArea?t.minArea:64,t.onBoxEnd&&(this.onBoxEnd=t.onBoxEnd),this.startPixel_=null,this.condition_=t.condition?t.condition:Pa,this.boxEndCondition_=t.boxEndCondition?t.boxEndCondition:this.defaultBoxEndCondition}defaultBoxEndCondition(t,e,i){const n=i[0]-e[0],r=i[1]-e[1];return n*n+r*r>=this.minArea_}getGeometry(){return this.box_.getGeometry()}handleDragEvent(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new Va(Ua,t.coordinate,t))}handleUpEvent(t){this.box_.setMap(null);const e=this.boxEndCondition_(t,this.startPixel_,t.pixel);return e&&this.onBoxEnd(t),this.dispatchEvent(new Va(e?za:Xa,t.coordinate,t)),!1}handleDownEvent(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new Va(Ba,t.coordinate,t)),!0)}onBoxEnd(t){}};var Za=class extends Wa{constructor(t){super({condition:(t=t||{}).condition?t.condition:Aa,className:t.className||"ol-dragzoom",minArea:t.minArea}),this.duration_=void 0!==t.duration?t.duration:200,this.out_=void 0!==t.out&&t.out}onBoxEnd(t){const e=this.getMap().getView();let i=this.getGeometry();if(this.out_){const t=e.rotatedExtentForGeometry(i),n=e.getResolutionForExtentInternal(t),r=e.getResolution()/n;i=i.clone(),i.scale(r*r)}e.fitInternal(i,{duration:this.duration_,easing:et})}},Ya="ArrowLeft",$a="ArrowUp",qa="ArrowRight",Ka="ArrowDown";var Ha=class extends ya{constructor(t){super(),t=t||{},this.defaultCondition_=function(t){return Ia(t)&&Oa(t)},this.condition_=void 0!==t.condition?t.condition:this.defaultCondition_,this.duration_=void 0!==t.duration?t.duration:100,this.pixelDelta_=void 0!==t.pixelDelta?t.pixelDelta:128}handleEvent(t){let e=!1;if(t.type==P){const i=t.originalEvent,n=i.key;if(this.condition_(t)&&(n==Ka||n==Ya||n==qa||n==$a)){const r=t.map.getView(),s=r.getResolution()*this.pixelDelta_;let o=0,a=0;n==Ka?a=-s:n==Ya?o=-s:n==qa?o=s:a=s;const l=[o,a];Ii(l,r.getRotation()),ma(r,l,this.duration_),i.preventDefault(),e=!0}}return!e}};var Ja=class extends ya{constructor(t){super(),t=t||{},this.condition_=t.condition?t.condition:function(t){return!Ma(t)&&Oa(t)},this.delta_=t.delta?t.delta:1,this.duration_=void 0!==t.duration?t.duration:100}handleEvent(t){let e=!1;if(t.type==P||t.type==L){const i=t.originalEvent,n=i.key;if(this.condition_(t)&&("+"===n||"-"===n)){const r=t.map,s="+"===n?this.delta_:-this.delta_;_a(r.getView(),s,void 0,this.duration_),i.preventDefault(),e=!0}}return!e}};var Qa=class extends ya{constructor(t){super(t=t||{}),this.totalDelta_=0,this.lastDelta_=0,this.maxDelta_=void 0!==t.maxDelta?t.maxDelta:1,this.duration_=void 0!==t.duration?t.duration:250,this.timeout_=void 0!==t.timeout?t.timeout:80,this.useAnchor_=void 0===t.useAnchor||t.useAnchor,this.constrainResolution_=void 0!==t.constrainResolution&&t.constrainResolution;const e=t.condition?t.condition:ba;this.condition_=t.onFocusOnly?wa(Ra,e):e,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_,this.mode_=void 0,this.trackpadEventGap_=400,this.trackpadTimeoutId_,this.deltaPerZoom_=300}endInteraction_(){this.trackpadTimeoutId_=void 0;const t=this.getMap();if(!t)return;t.getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)}handleEvent(t){if(!this.condition_(t))return!0;if(t.type!==M)return!0;const e=t.map,i=t.originalEvent;let n;if(i.preventDefault(),this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==M&&(n=i.deltaY,ot&&i.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(n/=ut),i.deltaMode===WheelEvent.DOM_DELTA_LINE&&(n*=40)),0===n)return!1;this.lastDelta_=n;const r=Date.now();void 0===this.startTime_&&(this.startTime_=r),(!this.mode_||r-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(n)<4?"trackpad":"wheel");const s=e.getView();if("trackpad"===this.mode_&&!s.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(s.getAnimating()&&s.cancelAnimations(),s.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),s.adjustZoom(-n/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=r,!1;this.totalDelta_+=n;const o=Math.max(this.timeout_-(r-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,e),o),!1}handleWheelZoom_(t){const e=t.getView();e.getAnimating()&&e.cancelAnimations();let i=-ui(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(i=i?i>0?1:-1:0),_a(e,i,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0}setMouseAnchor(t){this.useAnchor_=t,t||(this.lastAnchor_=null)}};var tl=class extends Sa{constructor(t){const e=t=t||{};e.stopDown||(e.stopDown=g),super(e),this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.threshold_=void 0!==t.threshold?t.threshold:.3,this.duration_=void 0!==t.duration?t.duration:250}handleDragEvent(t){let e=0;const i=this.targetPointers[0],n=this.targetPointers[1],r=Math.atan2(n.clientY-i.clientY,n.clientX-i.clientX);if(void 0!==this.lastAngle_){const t=r-this.lastAngle_;this.rotationDelta_+=t,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=t}this.lastAngle_=r;const s=t.map,o=s.getView();o.getConstraints().rotation!==Ws&&(this.anchor_=s.getCoordinateFromPixelInternal(s.getEventPixel(va(this.targetPointers))),this.rotating_&&(s.render(),o.adjustRotationInternal(e,this.anchor_)))}handleUpEvent(t){if(this.targetPointers.length<2){return t.map.getView().endInteraction(this.duration_),!1}return!0}handleDownEvent(t){if(this.targetPointers.length>=2){const e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1}};var el=class extends Sa{constructor(t){const e=t=t||{};e.stopDown||(e.stopDown=g),super(e),this.anchor_=null,this.duration_=void 0!==t.duration?t.duration:400,this.lastDistance_=void 0,this.lastScaleDelta_=1}handleDragEvent(t){let e=1;const i=this.targetPointers[0],n=this.targetPointers[1],r=i.clientX-n.clientX,s=i.clientY-n.clientY,o=Math.sqrt(r*r+s*s);void 0!==this.lastDistance_&&(e=this.lastDistance_/o),this.lastDistance_=o;const a=t.map,l=a.getView();1!=e&&(this.lastScaleDelta_=e),this.anchor_=a.getCoordinateFromPixelInternal(a.getEventPixel(va(this.targetPointers))),a.render(),l.adjustResolutionInternal(e,this.anchor_)}handleUpEvent(t){if(this.targetPointers.length<2){const e=t.map.getView(),i=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,i),!1}return!0}handleDownEvent(t){if(this.targetPointers.length>=2){const e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1}};function il(t){t=t||{};const e=new $,i=new ns(-.005,.05,100);(void 0===t.altShiftDragRotate||t.altShiftDragRotate)&&e.push(new Ga);(void 0===t.doubleClickZoom||t.doubleClickZoom)&&e.push(new xa({delta:t.zoomDelta,duration:t.zoomDuration}));(void 0===t.dragPan||t.dragPan)&&e.push(new ka({onFocusOnly:t.onFocusOnly,kinetic:i}));(void 0===t.pinchRotate||t.pinchRotate)&&e.push(new tl);(void 0===t.pinchZoom||t.pinchZoom)&&e.push(new el({duration:t.zoomDuration}));(void 0===t.keyboard||t.keyboard)&&(e.push(new Ha),e.push(new Ja({delta:t.zoomDelta,duration:t.zoomDuration})));(void 0===t.mouseWheelZoom||t.mouseWheelZoom)&&e.push(new Qa({onFocusOnly:t.onFocusOnly,duration:t.zoomDuration}));return(void 0===t.shiftDragZoom||t.shiftDragZoom)&&e.push(new Za({duration:t.zoomDuration})),e}function nl(t){return t[0]>0&&t[1]>0}function rl(t,e,i){return void 0===i&&(i=[0,0]),i[0]=t[0]*e+.5|0,i[1]=t[1]*e+.5|0,i}function sl(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}function ol(t){t instanceof no?t.setMapInternal(null):t instanceof zo&&t.getLayers().forEach(ol)}function al(t,e){if(t instanceof no)t.setMapInternal(e);else if(t instanceof zo){const i=t.getLayers().getArray();for(let t=0,n=i.length;tthis.updateSize())),this.controls=e.controls||fa(),this.interactions=e.interactions||il({onFocusOnly:!0}),this.overlays_=e.overlays,this.overlayIdIndex_={},this.renderer_=null,this.postRenderFunctions_=[],this.tileQueue_=new la(this.getTilePriority.bind(this),this.handleTileChange_.bind(this)),this.addChangeListener(ia,this.handleLayerGroupChanged_),this.addChangeListener(sa,this.handleViewChanged_),this.addChangeListener(na,this.handleSizeChanged_),this.addChangeListener(ra,this.handleTargetChanged_),this.setProperties(e.values);const i=this;!t.view||t.view instanceof eo||t.view.then((function(t){i.setView(new eo(t))})),this.controls.addEventListener(V,(t=>{t.element.setMap(this)})),this.controls.addEventListener(W,(t=>{t.element.setMap(null)})),this.interactions.addEventListener(V,(t=>{t.element.setMap(this)})),this.interactions.addEventListener(W,(t=>{t.element.setMap(null)})),this.overlays_.addEventListener(V,(t=>{this.addOverlayInternal_(t.element)})),this.overlays_.addEventListener(W,(t=>{const e=t.element.getId();void 0!==e&&delete this.overlayIdIndex_[e.toString()],t.element.setMap(null)})),this.controls.forEach((t=>{t.setMap(this)})),this.interactions.forEach((t=>{t.setMap(this)})),this.overlays_.forEach(this.addOverlayInternal_.bind(this))}addControl(t){this.getControls().push(t)}addInteraction(t){this.getInteractions().push(t)}addLayer(t){this.getLayerGroup().getLayers().push(t)}handleLayerAdd_(t){al(t.layer,this)}addOverlay(t){this.getOverlays().push(t)}addOverlayInternal_(t){const e=t.getId();void 0!==e&&(this.overlayIdIndex_[e.toString()]=t),t.setMap(this)}disposeInternal(){this.controls.clear(),this.interactions.clear(),this.overlays_.clear(),this.resizeObserver_.disconnect(),this.setTarget(null),super.disposeInternal()}forEachFeatureAtPixel(t,e,i){if(!this.frameState_||!this.renderer_)return;const n=this.getCoordinateFromPixelInternal(t),r=void 0!==(i=void 0!==i?i:{}).hitTolerance?i.hitTolerance:0,s=void 0!==i.layerFilter?i.layerFilter:d,o=!1!==i.checkWrapped;return this.renderer_.forEachFeatureAtCoordinate(n,this.frameState_,r,o,e,null,s,null)}getFeaturesAtPixel(t,e){const i=[];return this.forEachFeatureAtPixel(t,(function(t){i.push(t)}),e),i}getAllLayers(){const t=[];return function e(i){i.forEach((function(i){i instanceof zo?e(i.getLayers()):t.push(i)}))}(this.getLayers()),t}hasFeatureAtPixel(t,e){if(!this.frameState_||!this.renderer_)return!1;const i=this.getCoordinateFromPixelInternal(t),n=void 0!==(e=void 0!==e?e:{}).layerFilter?e.layerFilter:d,r=void 0!==e.hitTolerance?e.hitTolerance:0,s=!1!==e.checkWrapped;return this.renderer_.hasFeatureAtCoordinate(i,this.frameState_,r,s,n,null)}getEventCoordinate(t){return this.getCoordinateFromPixel(this.getEventPixel(t))}getEventCoordinateInternal(t){return this.getCoordinateFromPixelInternal(this.getEventPixel(t))}getEventPixel(t){const e=this.viewport_.getBoundingClientRect(),i=this.getSize(),n=e.width/i[0],r=e.height/i[1],s="changedTouches"in t?t.changedTouches[0]:t;return[(s.clientX-e.left)/n,(s.clientY-e.top)/r]}getTarget(){return this.get(ra)}getTargetElement(){return this.targetElement_}getCoordinateFromPixel(t){return mn(this.getCoordinateFromPixelInternal(t),this.getView().getProjection())}getCoordinateFromPixelInternal(t){const e=this.frameState_;return e?Bt(e.pixelToCoordinateTransform,t.slice()):null}getControls(){return this.controls}getOverlays(){return this.overlays_}getOverlayById(t){const e=this.overlayIdIndex_[t.toString()];return void 0!==e?e:null}getInteractions(){return this.interactions}getLayerGroup(){return this.get(ia)}setLayers(t){const e=this.getLayerGroup();if(t instanceof $)return void e.setLayers(t);const i=e.getLayers();i.clear(),i.extend(t)}getLayers(){return this.getLayerGroup().getLayers()}getLoadingOrNotReady(){const t=this.getLayerGroup().getLayerStatesArray();for(let e=0,i=t.length;e=0;i--){const n=e[i];if(n.getMap()!==this||!n.getActive()||!this.getTargetElement())continue;if(!n.handleEvent(t)||t.propagationStopped)break}}}handlePostRender(){const t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){let i=this.maxTilesLoading_,n=i;if(t){const e=t.viewHints;if(e[As]||e[Os]){const e=Date.now()-t.time>8;i=e?0:8,n=e?0:2}}e.getTilesLoading(){this.postRenderTimeoutHandle_=void 0,this.handlePostRender()}),0))}setLayerGroup(t){const e=this.getLayerGroup();e&&this.handleLayerRemove_(new jo("removelayer",e)),this.set(ia,t)}setSize(t){this.set(na,t)}setTarget(t){this.set(ra,t)}setView(t){if(!t||t instanceof eo)return void this.set(sa,t);this.set(sa,new eo);const e=this;t.then((function(t){e.setView(new eo(t))}))}updateSize(){const t=this.getTargetElement();let e;if(t){const i=getComputedStyle(t),n=t.offsetWidth-parseFloat(i.borderLeftWidth)-parseFloat(i.paddingLeft)-parseFloat(i.paddingRight)-parseFloat(i.borderRightWidth),r=t.offsetHeight-parseFloat(i.borderTopWidth)-parseFloat(i.paddingTop)-parseFloat(i.paddingBottom)-parseFloat(i.borderBottomWidth);isNaN(n)||isNaN(r)||(e=[n,r],!nl(e)&&(t.offsetWidth||t.offsetHeight||t.getClientRects().length)&&Zi("No map visible because the map container's width or height are 0."))}const i=this.getSize();!e||i&&c(e,i)||(this.setSize(e),this.updateViewportSize_())}updateViewportSize_(){const t=this.getView();if(t){let e;const i=getComputedStyle(this.viewport_);i.width&&i.height&&(e=[parseInt(i.width,10),parseInt(i.height,10)]),t.setViewportSize(e)}}};const hl="element",cl="map",ul="offset",dl="position",gl="positioning";var fl=class extends X{constructor(t){super(),this.on,this.once,this.un,this.options=t,this.id=t.id,this.insertFirst=void 0===t.insertFirst||t.insertFirst,this.stopEvent=void 0===t.stopEvent||t.stopEvent,this.element=document.createElement("div"),this.element.className=void 0!==t.className?t.className:"ol-overlay-container "+lo,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.autoPan=!0===t.autoPan?{}:t.autoPan||void 0,this.rendered={transform_:"",visible:!0},this.mapPostrenderListenerKey=null,this.addChangeListener(hl,this.handleElementChanged),this.addChangeListener(cl,this.handleMapChanged),this.addChangeListener(ul,this.handleOffsetChanged),this.addChangeListener(dl,this.handlePositionChanged),this.addChangeListener(gl,this.handlePositioningChanged),void 0!==t.element&&this.setElement(t.element),this.setOffset(void 0!==t.offset?t.offset:[0,0]),this.setPositioning(t.positioning||"top-left"),void 0!==t.position&&this.setPosition(t.position)}getElement(){return this.get(hl)}getId(){return this.id}getMap(){return this.get(cl)||null}getOffset(){return this.get(ul)}getPosition(){return this.get(dl)}getPositioning(){return this.get(gl)}handleElementChanged(){wt(this.element);const t=this.getElement();t&&this.element.appendChild(t)}handleMapChanged(){this.mapPostrenderListenerKey&&(St(this.element),N(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);const t=this.getMap();if(t){this.mapPostrenderListenerKey=A(t,Ho,this.render,this),this.updatePixelPosition();const e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}}render(){this.updatePixelPosition()}handleOffsetChanged(){this.updatePixelPosition()}handlePositionChanged(){this.updatePixelPosition(),this.performAutoPan()}handlePositioningChanged(){this.updatePixelPosition()}setElement(t){this.set(hl,t)}setMap(t){this.set(cl,t)}setOffset(t){this.set(ul,t)}setPosition(t){this.set(dl,t)}performAutoPan(){this.autoPan&&this.panIntoView(this.autoPan)}panIntoView(t){const e=this.getMap();if(!e||!e.getTargetElement()||!this.get(dl))return;const i=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),r=this.getRect(n,[yt(n),xt(n)]),s=void 0===(t=t||{}).margin?20:t.margin;if(!ie(i,r)){const n=r[0]-i[0],o=i[2]-r[2],a=r[1]-i[1],l=i[3]-r[3],h=[0,0];if(n<0?h[0]=n-s:o<0&&(h[0]=Math.abs(o)+s),a<0?h[1]=a-s:l<0&&(h[1]=Math.abs(l)+s),0!==h[0]||0!==h[1]){const i=e.getView().getCenterInternal(),n=e.getPixelFromCoordinateInternal(i);if(!n)return;const r=[n[0]+h[0],n[1]+h[1]],s=t.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(r),duration:s.duration,easing:s.easing})}}}getRect(t,e){const i=t.getBoundingClientRect(),n=i.left+window.pageXOffset,r=i.top+window.pageYOffset;return[n,r,n+e[0],r+e[1]]}setPositioning(t){this.set(gl,t)}setVisible(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)}updatePixelPosition(){const t=this.getMap(),e=this.getPosition();if(!t||!t.isRendered()||!e)return void this.setVisible(!1);const i=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(i,n)}updateRenderedPosition(t,e){const i=this.element.style,n=this.getOffset(),r=this.getPositioning();this.setVisible(!0);let s="0%",o="0%";"bottom-right"==r||"center-right"==r||"top-right"==r?s="-100%":"bottom-center"!=r&&"center-center"!=r&&"top-center"!=r||(s="-50%"),"bottom-left"==r||"bottom-center"==r||"bottom-right"==r?o="-100%":"center-left"!=r&&"center-center"!=r&&"center-right"!=r||(o="-50%");const a=`translate(${s}, ${o}) translate(${Math.round(t[0]+n[0])+"px"}, ${Math.round(t[1]+n[1])+"px"})`;this.rendered.transform_!=a&&(this.rendered.transform_=a,i.transform=a)}getOptions(){return this.options}};var pl=class{constructor(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}canExpireCache(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark}expireCache(t){for(;this.canExpireCache();)this.pop()}clear(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}containsKey(t){return this.entries_.hasOwnProperty(t)}forEach(t){let e=this.oldest_;for(;e;)t(e.value_,e.key_,this),e=e.newer}get(t,e){const i=this.entries_[t];return Ft(void 0!==i,"Tried to get a value for a key that does not exist in the cache"),i===this.newest_||(i===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(i.newer.older=i.older,i.older.newer=i.newer),i.newer=null,i.older=this.newest_,this.newest_.newer=i,this.newest_=i),i.value_}remove(t){const e=this.entries_[t];return Ft(void 0!==e,"Tried to get a value for a key that does not exist in the cache"),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_}getCount(){return this.count_}getKeys(){const t=new Array(this.count_);let e,i=0;for(e=this.newest_;e;e=e.older)t[i++]=e.key_;return t}getValues(){const t=new Array(this.count_);let e,i=0;for(e=this.newest_;e;e=e.older)t[i++]=e.value_;return t}peekLast(){return this.oldest_.value_}peekLastKey(){return this.oldest_.key_}peekFirstKey(){return this.newest_.key_}peek(t){if(this.containsKey(t))return this.entries_[t].value_}pop(){const t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_}replace(t,e){this.get(t),this.entries_[t].value_=e}set(t,e){Ft(!(t in this.entries_),"Tried to set a value for a key that is used already");const i={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=i:this.oldest_=i,this.newest_=i,this.entries_[t]=i,++this.count_}setSize(t){this.highWaterMark=t}};function ml(t,e,i,n){return void 0!==n?(n[0]=t,n[1]=e,n[2]=i,n):[t,e,i]}function _l(t,e,i){return t+"/"+e+"/"+i}function yl(t){return _l(t[0],t[1],t[2])}function xl(t){const[e,i,n]=t.substring(t.lastIndexOf("/")+1,t.length).split(",").map(Number);return _l(e,i,n)}function vl(t){return t.split("/").map(Number)}function Sl(t){return(t[1]<i||i>e.getMaxZoom())return!1;const s=e.getFullTileRange(i);return!s||s.containsXY(n,r)}var El=class extends pl{clear(){for(;this.getCount()>0;)this.pop().release();super.clear()}expireCache(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}}pruneExceptNewestZ(){if(0===this.getCount())return;const t=vl(this.peekFirstKey())[0];this.forEach((e=>{e.tileCoord[0]!==t&&(this.remove(yl(e.tileCoord)),e.release())}))}};class Tl{constructor(t,e,i,n){this.minX=t,this.maxX=e,this.minY=i,this.maxY=n}contains(t){return this.containsXY(t[1],t[2])}containsTileRange(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY}containsXY(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY}equals(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY}extend(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)}getHeight(){return this.maxY-this.minY+1}getSize(){return[this.getWidth(),this.getHeight()]}getWidth(){return this.maxX-this.minX+1}intersects(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY}}function Cl(t,e,i,n,r){return void 0!==r?(r.minX=t,r.maxX=e,r.minY=i,r.maxY=n,r):new Tl(t,e,i,n)}var Rl=Tl;const bl=[];var Pl=class extends rt{constructor(t,e,i,n){super(t,e,{transition:0}),this.context_={},this.executorGroups={},this.declutterExecutorGroups={},this.loadingSourceTiles=0,this.hitDetectionImageData={},this.replayState_={},this.sourceTiles=[],this.errorTileKeys={},this.wantedResolution,this.getSourceTiles=n.bind(void 0,this),this.wrappedTileCoord=i}getContext(t){const e=U(t);return e in this.context_||(this.context_[e]=mt(1,1,bl)),this.context_[e]}hasContext(t){return U(t)in this.context_}getImage(t){return this.hasContext(t)?this.getContext(t).canvas:null}getReplayState(t){const e=U(t);return e in this.replayState_||(this.replayState_[e]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedTileZ:-1}),this.replayState_[e]}load(){this.getSourceTiles()}release(){for(const t in this.context_){const e=this.context_[t];_t(e),bl.push(e.canvas),delete this.context_[t]}super.release()}};var Ll=class extends rt{constructor(t,e,i,n,r,s){super(t,e,s),this.extent=null,this.format_=n,this.features_=null,this.loader_,this.projection=null,this.resolution,this.tileLoadFunction_=r,this.url_=i,this.key=i}getFormat(){return this.format_}getFeatures(){return this.features_}load(){this.state==q&&(this.setState(K),this.tileLoadFunction_(this,this.url_),this.loader_&&this.loader_(this.extent,this.resolution,this.projection))}onLoad(t,e){this.setFeatures(t)}onError(){this.setState(J)}setFeatures(t){this.features_=t,this.setState(H)}setLoader(t){this.loader_=t}};function Fl(t){return Array.isArray(t)?us(t):t}let Il,Ml=!1;function Al(t,e,i,n,r,s,o){const a=new XMLHttpRequest;a.open("GET","function"==typeof t?t(i,n,r):t,!0),"arraybuffer"==e.getType()&&(a.responseType="arraybuffer"),a.withCredentials=Ml,a.onload=function(t){if(!a.status||a.status>=200&&a.status<300){const t=e.getType();let n;"json"==t||"text"==t?n=a.responseText:"xml"==t?(n=a.responseXML,n||(n=(new DOMParser).parseFromString(a.responseText,"application/xml"))):"arraybuffer"==t&&(n=a.response),n?s(e.readFeatures(n,{extent:i,featureProjection:r}),e.readProjection(n)):o()}else o()},a.onerror=o,a.send()}function Ol(t,e){return function(i,n,r,s,o){const a=this;Al(t,e,i,n,r,(function(t,e){a.addFeatures(t),void 0!==s&&s(t)}),o||f)}}function Nl(t,e){return[[-1/0,-1/0,1/0,1/0]]}function Dl(t,e,i,n){const r=document.createElement("script"),s="olc_"+U(e);function o(){delete window[s],r.parentNode.removeChild(r)}r.async=!0,r.src=t+(t.includes("?")?"&":"?")+(n||"callback")+"="+s;const a=setTimeout((function(){o(),i&&i()}),1e4);window[s]=function(t){clearTimeout(a),o(),e(t)},document.head.appendChild(r)}class kl extends Error{constructor(t){super("Unexpected response status: "+t.status),this.name="ResponseError",this.response=t}}class Gl extends Error{constructor(t){super("Failed to issue request"),this.name="ClientError",this.client=t}}function jl(t){return new Promise((function(e,i){const n=new XMLHttpRequest;n.addEventListener("load",(function(t){const n=t.target;if(!n.status||n.status>=200&&n.status<300){let t;try{t=JSON.parse(n.responseText)}catch(t){const e="Error parsing response text as JSON: "+t.message;return void i(new Error(e))}e(t)}else i(new kl(n))})),n.addEventListener("error",(function(t){i(new Gl(t.target))})),n.open("GET",t),n.setRequestHeader("Accept","application/json"),n.send()}))}function Bl(t,e){return e.includes("://")?e:new URL(e,t).href}var Ul=class{drawCustom(t,e,i,n){}drawGeometry(t){}setStyle(t){}drawCircle(t,e){}drawFeature(t,e){}drawGeometryCollection(t,e){}drawLineString(t,e){}drawMultiLineString(t,e){}drawMultiPoint(t,e){}drawMultiPolygon(t,e){}drawPoint(t,e){}drawPolygon(t,e){}drawText(t,e){}setFillStrokeStyle(t,e){}setImageStyle(t,e){}setTextStyle(t,e){}};var zl=class extends Ul{constructor(t,e,i,n,r,s,o){super(),this.context_=t,this.pixelRatio_=e,this.extent_=i,this.transform_=n,this.transformRotation_=n?xi(Math.atan2(n[1],n[0]),10):0,this.viewRotation_=r,this.squaredTolerance_=s,this.userTransform_=o,this.contextFillState_=null,this.contextStrokeState_=null,this.contextTextState_=null,this.fillState_=null,this.strokeState_=null,this.image_=null,this.imageAnchorX_=0,this.imageAnchorY_=0,this.imageHeight_=0,this.imageOpacity_=0,this.imageOriginX_=0,this.imageOriginY_=0,this.imageRotateWithView_=!1,this.imageRotation_=0,this.imageScale_=[0,0],this.imageWidth_=0,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=!1,this.textRotation_=0,this.textScale_=[0,0],this.textFillState_=null,this.textStrokeState_=null,this.textState_=null,this.pixelCoordinates_=[],this.tmpLocalTransform_=[1,0,0,1,0,0]}drawImages_(t,e,i,n){if(!this.image_)return;const r=Tn(t,e,i,n,this.transform_,this.pixelCoordinates_),s=this.context_,o=this.tmpLocalTransform_,a=s.globalAlpha;1!=this.imageOpacity_&&(s.globalAlpha=a*this.imageOpacity_);let l=this.imageRotation_;0===this.transformRotation_&&(l-=this.viewRotation_),this.imageRotateWithView_&&(l+=this.viewRotation_);for(let t=0,e=r.length;tt*this.pixelRatio_)),lineDashOffset:(r||0)*this.pixelRatio_,lineJoin:void 0!==s?s:So,lineWidth:(void 0!==o?o:1)*this.pixelRatio_,miterLimit:void 0!==a?a:wo,strokeStyle:Fl(t||Eo)}}else this.strokeState_=null}setImageStyle(t){let e;if(!t||!(e=t.getSize()))return void(this.image_=null);const i=t.getPixelRatio(this.pixelRatio_),n=t.getAnchor(),r=t.getOrigin();this.image_=t.getImage(this.pixelRatio_),this.imageAnchorX_=n[0]*i,this.imageAnchorY_=n[1]*i,this.imageHeight_=e[1]*i,this.imageOpacity_=t.getOpacity(),this.imageOriginX_=r[0],this.imageOriginY_=r[1],this.imageRotateWithView_=t.getRotateWithView(),this.imageRotation_=t.getRotation();const s=t.getScaleArray();this.imageScale_=[s[0]*this.pixelRatio_/i,s[1]*this.pixelRatio_/i],this.imageWidth_=e[0]*i}setTextStyle(t){if(t){const e=t.getFill();if(e){const t=e.getColor();this.textFillState_={fillStyle:Fl(t||yo)}}else this.textFillState_=null;const i=t.getStroke();if(i){const t=i.getColor(),e=i.getLineCap(),n=i.getLineDash(),r=i.getLineDashOffset(),s=i.getLineJoin(),o=i.getWidth(),a=i.getMiterLimit();this.textStrokeState_={lineCap:void 0!==e?e:xo,lineDash:n||vo,lineDashOffset:r||0,lineJoin:void 0!==s?s:So,lineWidth:void 0!==o?o:1,miterLimit:void 0!==a?a:wo,strokeStyle:Fl(t||Eo)}}else this.textStrokeState_=null;const n=t.getFont(),r=t.getOffsetX(),s=t.getOffsetY(),o=t.getRotateWithView(),a=t.getRotation(),l=t.getScaleArray(),h=t.getText(),c=t.getTextAlign(),u=t.getTextBaseline();this.textState_={font:void 0!==n?n:_o,textAlign:void 0!==c?c:To,textBaseline:void 0!==u?u:Co},this.text_=void 0!==h?Array.isArray(h)?h.reduce(((t,e,i)=>t+(i%2?" ":e)),""):h:"",this.textOffsetX_=void 0!==r?this.pixelRatio_*r:0,this.textOffsetY_=void 0!==s?this.pixelRatio_*s:0,this.textRotateWithView_=void 0!==o&&o,this.textRotation_=void 0!==a?a:0,this.textScale_=[this.pixelRatio_*l[0],this.pixelRatio_*l[1]]}else this.text_=""}};const Xl=.5,Vl={Point:function(t,e,i,n,r){const s=i.getImage(),o=i.getText();let a;if(s){if(s.getImageState()!=Yr)return;let l=t;if(r){const h=s.getDeclutterMode();if("none"!==h)if(l=r,"obstacle"===h){const r=t.getBuilder(i.getZIndex(),"Image");r.setImageStyle(s,a),r.drawPoint(e,n)}else o&&o.getText()&&(a={})}const h=l.getBuilder(i.getZIndex(),"Image");h.setImageStyle(s,a),h.drawPoint(e,n)}if(o&&o.getText()){let s=t;r&&(s=r);const l=s.getBuilder(i.getZIndex(),"Text");l.setTextStyle(o,a),l.drawText(e,n)}},LineString:function(t,e,i,n,r){const s=i.getStroke();if(s){const r=t.getBuilder(i.getZIndex(),"LineString");r.setFillStrokeStyle(null,s),r.drawLineString(e,n)}const o=i.getText();if(o&&o.getText()){const s=(r||t).getBuilder(i.getZIndex(),"Text");s.setTextStyle(o),s.drawText(e,n)}},Polygon:function(t,e,i,n,r){const s=i.getFill(),o=i.getStroke();if(s||o){const r=t.getBuilder(i.getZIndex(),"Polygon");r.setFillStrokeStyle(s,o),r.drawPolygon(e,n)}const a=i.getText();if(a&&a.getText()){const s=(r||t).getBuilder(i.getZIndex(),"Text");s.setTextStyle(a),s.drawText(e,n)}},MultiPoint:function(t,e,i,n,r){const s=i.getImage(),o=i.getText();let a;if(s){if(s.getImageState()!=Yr)return;let l=t;if(r){const h=s.getDeclutterMode();if("none"!==h)if(l=r,"obstacle"===h){const r=t.getBuilder(i.getZIndex(),"Image");r.setImageStyle(s,a),r.drawMultiPoint(e,n)}else o&&o.getText()&&(a={})}const h=l.getBuilder(i.getZIndex(),"Image");h.setImageStyle(s,a),h.drawMultiPoint(e,n)}if(o&&o.getText()){let s=t;r&&(s=r);const l=s.getBuilder(i.getZIndex(),"Text");l.setTextStyle(o,a),l.drawText(e,n)}},MultiLineString:function(t,e,i,n,r){const s=i.getStroke();if(s){const r=t.getBuilder(i.getZIndex(),"LineString");r.setFillStrokeStyle(null,s),r.drawMultiLineString(e,n)}const o=i.getText();if(o&&o.getText()){const s=(r||t).getBuilder(i.getZIndex(),"Text");s.setTextStyle(o),s.drawText(e,n)}},MultiPolygon:function(t,e,i,n,r){const s=i.getFill(),o=i.getStroke();if(o||s){const r=t.getBuilder(i.getZIndex(),"Polygon");r.setFillStrokeStyle(s,o),r.drawMultiPolygon(e,n)}const a=i.getText();if(a&&a.getText()){const s=(r||t).getBuilder(i.getZIndex(),"Text");s.setTextStyle(a),s.drawText(e,n)}},GeometryCollection:function(t,e,i,n,r){const s=e.getGeometriesArray();let o,a;for(o=0,a=s.length;o2||Math.abs(t[4*e+3]-191.25)>2}function eh(t,e,i,n){const r=un(i,e,t);let s=en(e,n,i);const o=e.getMetersPerUnit();void 0!==o&&(s*=o);const a=t.getMetersPerUnit();void 0!==a&&(s/=a);const l=t.getExtent();if(!l||ee(l,r)){const e=en(t,s,r)/s;isFinite(e)&&e>0&&(s/=e)}return s}function ih(t,e,i,n){const r=we(i);let s=eh(t,e,r,n);return(!isFinite(s)||s<=0)&&ye(i,(function(i){return s=eh(t,e,i,n),isFinite(s)&&s>0})),s}function nh(t,e,i,n,r,s,o,a,l,h,c,u){const d=mt(Math.round(i*t),Math.round(i*e),Jl);if(u||(d.imageSmoothingEnabled=!1),0===l.length)return d.canvas;function g(t){return Math.round(t*i)/i}d.scale(i,i),d.globalCompositeOperation="lighter";const f=[1/0,1/0,-1/0,-1/0];l.forEach((function(t,e,i){de(f,t.extent)}));const p=Fe(f),m=Re(f),_=mt(Math.round(i*p/n),Math.round(i*m/n),Jl);u||(_.imageSmoothingEnabled=!1);const y=i/n;l.forEach((function(t,e,i){const n=t.extent[0]-f[0],r=-(t.extent[3]-f[3]),s=Fe(t.extent),o=Re(t.extent);t.image.width>0&&t.image.height>0&&_.drawImage(t.image,h,h,t.image.width-2*h,t.image.height-2*h,n*y,r*y,s*y,o*y)}));const x=Pe(o);return a.getTriangles().forEach((function(t,e,r){const o=t.source,a=t.target;let l=o[0][0],h=o[0][1],c=o[1][0],p=o[1][1],m=o[2][0],y=o[2][1];const v=g((a[0][0]-x[0])/s),S=g(-(a[0][1]-x[1])/s),w=g((a[1][0]-x[0])/s),E=g(-(a[1][1]-x[1])/s),T=g((a[2][0]-x[0])/s),C=g(-(a[2][1]-x[1])/s),R=l,b=h;l=0,h=0,c-=R,p-=b,m-=R,y-=b;const P=fi([[c,p,0,0,w-v],[m,y,0,0,T-v],[0,0,c,p,E-S],[0,0,m,y,C-S]]);if(P){if(d.save(),d.beginPath(),function(){if(void 0===Hl){const t=mt(6,6,Jl);t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",Ql(t,4,5,4,0),Ql(t,4,5,0,5);const e=t.getImageData(0,0,3,3).data;Hl=th(e,0)||th(e,4)||th(e,8),_t(t),Jl.push(t.canvas)}return Hl}()||!u){d.moveTo(w,E);const t=4,e=v-w,i=S-E;for(let n=0;n=Fe(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?Fe(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?Fe(this.targetProj_.getExtent()):null;const l=Pe(i),h=Le(i),c=Se(i),u=ve(i),d=this.transformInv_(l),g=this.transformInv_(h),f=this.transformInv_(c),p=this.transformInv_(u),m=10+(s?Math.max(0,Math.ceil(Math.log2(xe(i)/(s*s*256*256)))):0);if(this.addQuad_(l,h,c,u,d,g,f,p,m),this.wrapsXInSource_){let t=1/0;this.triangles_.forEach((function(e,i,n){t=Math.min(t,e.source[0][0],e.source[1][0],e.source[2][0])})),this.triangles_.forEach((e=>{if(Math.max(e.source[0][0],e.source[1][0],e.source[2][0])-t>this.sourceWorldWidth_/2){const i=[[e.source[0][0],e.source[0][1]],[e.source[1][0],e.source[1][1]],[e.source[2][0],e.source[2][1]]];i[0][0]-t>this.sourceWorldWidth_/2&&(i[0][0]-=this.sourceWorldWidth_),i[1][0]-t>this.sourceWorldWidth_/2&&(i[1][0]-=this.sourceWorldWidth_),i[2][0]-t>this.sourceWorldWidth_/2&&(i[2][0]-=this.sourceWorldWidth_);const n=Math.min(i[0][0],i[1][0],i[2][0]);Math.max(i[0][0],i[1][0],i[2][0])-n.5&&c<1;let g=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_){g=Fe(Ht([t,e,i,n]))/this.targetWorldWidth_>.25||g}!d&&this.sourceProj_.isGlobal()&&c&&(g=c>.25||g)}if(!g&&this.maxSourceExtent_&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3])&&!Ie(h,this.maxSourceExtent_))return;let f=0;if(!(g||isFinite(r[0])&&isFinite(r[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(a[0])&&isFinite(a[1])))if(l>0)g=!0;else if(f=(isFinite(r[0])&&isFinite(r[1])?0:8)+(isFinite(s[0])&&isFinite(s[1])?0:4)+(isFinite(o[0])&&isFinite(o[1])?0:2)+(isFinite(a[0])&&isFinite(a[1])?0:1),1!=f&&2!=f&&4!=f&&8!=f)return;if(l>0){if(!g){const e=[(t[0]+i[0])/2,(t[1]+i[1])/2],n=this.transformInv_(e);let s;if(d){s=(_i(r[0],u)+_i(o[0],u))/2-_i(n[0],u)}else s=(r[0]+o[0])/2-n[0];const a=(r[1]+o[1])/2-n[1];g=s*s+a*a>this.errorThresholdSquared_}if(g){if(Math.abs(t[0]-i[0])<=Math.abs(t[1]-i[1])){const h=[(e[0]+i[0])/2,(e[1]+i[1])/2],c=this.transformInv_(h),u=[(n[0]+t[0])/2,(n[1]+t[1])/2],d=this.transformInv_(u);this.addQuad_(t,e,h,u,r,s,c,d,l-1),this.addQuad_(u,h,i,n,d,c,o,a,l-1)}else{const h=[(t[0]+e[0])/2,(t[1]+e[1])/2],c=this.transformInv_(h),u=[(i[0]+n[0])/2,(i[1]+n[1])/2],d=this.transformInv_(u);this.addQuad_(t,h,u,n,r,c,d,a,l-1),this.addQuad_(h,e,i,u,c,s,o,d,l-1)}return}}if(d){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&f)&&this.addTriangle_(t,i,n,r,o,a),0==(14&f)&&this.addTriangle_(t,i,e,r,o,s),f&&(0==(13&f)&&this.addTriangle_(e,n,t,s,a,r),0==(7&f)&&this.addTriangle_(e,n,i,s,a,o))}calculateSourceExtent(){const t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,i,n){const r=e.source;ge(t,r[0]),ge(t,r[1]),ge(t,r[2])})),t}getTriangles(){return this.triangles_}};var ah=class extends rt{constructor(t,e,i,n,r,s,o,a,l,h,c,u){super(r,q,{interpolate:!!u}),this.renderEdges_=void 0!==c&&c,this.pixelRatio_=o,this.gutter_=a,this.canvas_=null,this.sourceTileGrid_=e,this.targetTileGrid_=n,this.wrappedTileCoord_=s||r,this.sourceTiles_=[],this.sourcesListenerKeys_=null,this.sourceZ_=0;const d=n.getTileCoordExtent(this.wrappedTileCoord_),g=this.targetTileGrid_.getExtent();let f=this.sourceTileGrid_.getExtent();const p=g?be(d,g):d;if(0===xe(p))return void(this.state=Q);const m=t.getExtent();m&&(f=f?be(f,m):m);const _=n.getResolution(this.wrappedTileCoord_[0]),y=ih(t,i,p,_);if(!isFinite(y)||y<=0)return void(this.state=Q);const x=void 0!==h?h:sh;if(this.triangulation_=new oh(t,i,p,f,y*x,_),0===this.triangulation_.getTriangles().length)return void(this.state=Q);this.sourceZ_=e.getZForResolution(y);let v=this.triangulation_.calculateSourceExtent();if(f&&(t.canWrapX()?(v[1]=ui(v[1],f[1],f[3]),v[3]=ui(v[3],f[1],f[3])):v=be(v,f)),xe(v)){const t=e.getTileRangeForExtentAndZ(v,this.sourceZ_);for(let e=t.minX;e<=t.maxX;e++)for(let i=t.minY;i<=t.maxY;i++){const t=l(this.sourceZ_,e,i,o);t&&this.sourceTiles_.push(t)}0===this.sourceTiles_.length&&(this.state=Q)}else this.state=Q}getImage(){return this.canvas_}reproject_(){const t=[];if(this.sourceTiles_.forEach((e=>{e&&e.getState()==H&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})})),this.sourceTiles_.length=0,0===t.length)this.state=J;else{const e=this.wrappedTileCoord_[0],i=this.targetTileGrid_.getTileSize(e),n="number"==typeof i?i:i[0],r="number"==typeof i?i:i[1],s=this.targetTileGrid_.getResolution(e),o=this.sourceTileGrid_.getResolution(this.sourceZ_),a=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=nh(n,r,this.pixelRatio_,o,this.sourceTileGrid_.getExtent(),s,a,this.triangulation_,t,this.gutter_,this.renderEdges_,this.interpolate),this.state=H}this.changed()}load(){if(this.state==q){this.state=K,this.changed();let t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach((e=>{const i=e.getState();if(i==q||i==K){t++;const i=A(e,v,(function(n){const r=e.getState();r!=H&&r!=J&&r!=Q||(N(i),t--,0===t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(i)}})),0===t?setTimeout(this.reproject_.bind(this),0):this.sourceTiles_.forEach((function(t,e,i){t.getState()==q&&t.load()}))}}unlistenSources_(){this.sourcesListenerKeys_.forEach(N),this.sourcesListenerKeys_=null}release(){this.canvas_&&(_t(this.canvas_.getContext("2d")),Jl.push(this.canvas_),this.canvas_=null),super.release()}},lh="tileloadstart",hh="tileloadend",ch="tileloaderror";function uh(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}var dh=class extends X{constructor(t){super(),this.projection=tn(t.projection),this.attributions_=uh(t.attributions),this.attributionsCollapsible_=void 0===t.attributionsCollapsible||t.attributionsCollapsible,this.loading=!1,this.state_=void 0!==t.state?t.state:"ready",this.wrapX_=void 0!==t.wrapX&&t.wrapX,this.interpolate_=!!t.interpolate,this.viewResolver=null,this.viewRejector=null;const e=this;this.viewPromise_=new Promise((function(t,i){e.viewResolver=t,e.viewRejector=i}))}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(t){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(t){this.attributions_=uh(t),this.changed()}setState(t){this.state_=t,this.changed()}};const gh=[0,0,0];var fh=class{constructor(t){let e;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,Ft(u(this.resolutions_,(function(t,e){return e-t}),!0),"`resolutions` must be sorted in descending order"),!t.origins)for(let t=0,i=this.resolutions_.length-1;t=this.minZoom;){if(2===this.zoomFactor_?(s=Math.floor(s/2),o=Math.floor(o/2),r=Cl(s,s,o,o,i)):r=this.getTileRangeForExtentAndZ(a,l,i),e(l,r))return!0;--l}return!1}getExtent(){return this.extent_}getMaxZoom(){return this.maxZoom}getMinZoom(){return this.minZoom}getOrigin(t){return this.origin_?this.origin_:this.origins_[t]}getResolution(t){return this.resolutions_[t]}getResolutions(){return this.resolutions_}getTileCoordChildTileRange(t,e,i){if(t[0]this.maxZoom||e0?n:Math.max(s/i[0],r/i[1]);const o=e+1,a=new Array(o);for(let t=0;ti.highWaterMark&&(i.highWaterMark=t)}useTile(t,e,i,n){}};function Th(t,e){const i=/\{z\}/g,n=/\{x\}/g,r=/\{y\}/g,s=/\{-y\}/g;return function(o,a,l){if(o)return t.replace(i,o[0].toString()).replace(n,o[1].toString()).replace(r,o[2].toString()).replace(s,(function(){const t=o[0],i=e.getFullTileRange(t);Ft(i,"The {-y} placeholder requires a tile grid with extent");return(i.getHeight()-o[2]-1).toString()}))}}function Ch(t,e){const i=t.length,n=new Array(i);for(let r=0;rthis.getTileInternal(t,e,i,n,s)),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_,this.getInterpolate());return f.key=c,l?(f.interimTile=l,f.refreshInterimChain(),o.replace(h,f)):o.set(h,f),f}getTileInternal(t,e,i,n,r){let s=null;const o=_l(t,e,i),a=this.getKey();if(this.tileCache.containsKey(o)){if(s=this.tileCache.get(o),s.key!=a){const l=s;s=this.createTile_(t,e,i,n,r,a),l.getState()==q?s.interimTile=l.interimTile:s.interimTile=l,s.refreshInterimChain(),this.tileCache.replace(o,s)}}else s=this.createTile_(t,e,i,n,r,a),this.tileCache.set(o,s);return s}setRenderReprojectionEdges(t){if(this.renderReprojectionEdges_!=t){this.renderReprojectionEdges_=t;for(const t in this.tileCacheForProjection)this.tileCacheForProjection[t].clear();this.changed()}}setTileGridForProjection(t,e){const i=tn(t);if(i){const t=U(i);t in this.tileGridForProjection||(this.tileGridForProjection[t]=e)}}clear(){super.clear();for(const t in this.tileCacheForProjection)this.tileCacheForProjection[t].clear()}};function Ah(t){const e=t[0],i=new Array(e);let n,r,s=1<>=1;return i.join("")}var Oh=class extends Mh{constructor(t){const e=void 0!==t.hidpi&&t.hidpi;super({cacheSize:t.cacheSize,crossOrigin:"anonymous",interpolate:t.interpolate,opaque:!0,projection:tn("EPSG:3857"),reprojectionErrorThreshold:t.reprojectionErrorThreshold,state:"loading",tileLoadFunction:t.tileLoadFunction,tilePixelRatio:e?2:1,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.hidpi_=e,this.culture_=void 0!==t.culture?t.culture:"en-us",this.maxZoom_=void 0!==t.maxZoom?t.maxZoom:-1,this.apiKey_=t.key,this.imagerySet_=t.imagerySet,this.placeholderTiles_=t.placeholderTiles;const i="https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+this.imagerySet_+"?uriScheme=https&include=ImageryProviders&key="+this.apiKey_+"&c="+this.culture_;fetch(i).then((t=>t.json())).then((t=>this.handleImageryMetadataResponse(t)))}getApiKey(){return this.apiKey_}getImagerySet(){return this.imagerySet_}handleImageryMetadataResponse(t){if(200!=t.statusCode||"OK"!=t.statusDescription||"ValidCredentials"!=t.authenticationResultCode||1!=t.resourceSets.length||1!=t.resourceSets[0].resources.length)return void this.setState("error");const e=t.resourceSets[0].resources[0],i=-1==this.maxZoom_?e.zoomMax:this.maxZoom_,n=Sh(this.getProjection()),r=this.hidpi_?2:1,s=e.imageWidth==e.imageHeight?e.imageWidth/r:[e.imageWidth/r,e.imageHeight/r],o=yh({extent:n,minZoom:e.zoomMin,maxZoom:i,tileSize:s});this.tileGrid=o;const a=this.culture_,l=this.hidpi_,h=this.placeholderTiles_;if(this.tileUrlFunction=Rh(e.imageUrlSubdomains.map((function(t){const i=[0,0,0],n=e.imageUrl.replace("{subdomain}",t).replace("{culture}",a);return function(t,e,r){if(!t)return;ml(t[0],t[1],t[2],i);const s=new URL(n.replace("{quadkey}",Ah(i))),o=s.searchParams;return l&&(o.set("dpi","d1"),o.set("device","mobile")),!0===h?o.delete("n"):!1===h&&o.set("n","z"),s.toString()}}))),e.imageryProviders){const t=hn(tn("EPSG:4326"),this.getProjection());this.setAttributions((i=>{const n=[],r=i.viewState,s=this.getTileGrid(),o=s.getZForResolution(r.resolution,this.zDirection),a=s.getTileCoordForCoordAndZ(r.center,o)[0];return e.imageryProviders.map((function(e){let r=!1;const s=e.coverageAreas;for(let e=0,n=s.length;e=n.zoomMin&&a<=n.zoomMax){const e=n.bbox;if(Ie(De([e[1],e[0],e[3],e[2]],t),i.extent)){r=!0;break}}}r&&n.push(e.attribution)})),n.push('Terms of Use'),n}))}this.setState("ready")}};var Nh=class extends Mh{constructor(t){const e=void 0!==(t=t||{}).projection?t.projection:"EPSG:3857",i=void 0!==t.tileGrid?t.tileGrid:yh({extent:Sh(e),maxResolution:t.maxResolution,maxZoom:t.maxZoom,minZoom:t.minZoom,tileSize:t.tileSize});super({attributions:t.attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,opaque:t.opaque,projection:e,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileGrid:i,tileLoadFunction:t.tileLoadFunction,tilePixelRatio:t.tilePixelRatio,tileUrlFunction:t.tileUrlFunction,url:t.url,urls:t.urls,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,attributionsCollapsible:t.attributionsCollapsible,zDirection:t.zDirection}),this.gutter_=void 0!==t.gutter?t.gutter:0}getGutter(){return this.gutter_}};var Dh=class extends Nh{constructor(t){super({attributions:t.attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,maxZoom:void 0!==t.maxZoom?t.maxZoom:18,minZoom:t.minZoom,projection:t.projection,transition:t.transition,wrapX:t.wrapX,zDirection:t.zDirection}),this.account_=t.account,this.mapId_=t.map||"",this.config_=t.config||{},this.templateCache_={},this.initializeMap_()}getConfig(){return this.config_}updateConfig(t){Object.assign(this.config_,t),this.initializeMap_()}setConfig(t){this.config_=t||{},this.initializeMap_()}initializeMap_(){const t=JSON.stringify(this.config_);if(this.templateCache_[t])return void this.applyTemplate_(this.templateCache_[t]);let e="https://"+this.account_+".carto.com/api/v1/map";this.mapId_&&(e+="/named/"+this.mapId_);const i=new XMLHttpRequest;i.addEventListener("load",this.handleInitResponse_.bind(this,t)),i.addEventListener("error",this.handleInitError_.bind(this)),i.open("POST",e),i.setRequestHeader("Content-type","application/json"),i.send(JSON.stringify(this.config_))}handleInitResponse_(t,e){const i=e.target;if(!i.status||i.status>=200&&i.status<300){let e;try{e=JSON.parse(i.responseText)}catch(t){return void this.setState("error")}this.applyTemplate_(e),this.templateCache_[t]=e,this.setState("ready")}else this.setState("error")}handleInitError_(t){this.setState("error")}applyTemplate_(t){const e="https://"+t.cdn_url.https+"/"+this.account_+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(e)}};function kh(t,e,i,n,r){Gh(t,e,i||0,n||t.length-1,r||Bh)}function Gh(t,e,i,n,r){for(;n>i;){if(n-i>600){var s=n-i+1,o=e-i+1,a=Math.log(s),l=.5*Math.exp(2*a/3),h=.5*Math.sqrt(a*l*(s-l)/s)*(o-s/2<0?-1:1);Gh(t,e,Math.max(i,Math.floor(e-o*l/s+h)),Math.min(n,Math.floor(e+(s-o)*l/s+h)),r)}var c=t[e],u=i,d=n;for(jh(t,i,e),r(t[n],c)>0&&jh(t,i,n);u0;)d--}0===r(t[i],c)?jh(t,i,d):jh(t,++d,n),d<=e&&(i=d+1),e<=d&&(n=d-1)}}function jh(t,e,i){var n=t[e];t[e]=t[i],t[i]=n}function Bh(t,e){return te?1:0}let Uh=class{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()}all(){return this._all(this.data,[])}search(t){let e=this.data;const i=[];if(!Jh(t,e))return i;const n=this.toBBox,r=[];for(;e;){for(let s=0;s=0&&r[e].children.length>this._maxEntries;)this._split(r,e),e--;this._adjustParentBBoxes(n,r,e)}_split(t,e){const i=t[e],n=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,n);const s=this._chooseSplitIndex(i,r,n),o=Qh(i.children.splice(s,i.children.length-s));o.height=i.height,o.leaf=i.leaf,Xh(i,this.toBBox),Xh(o,this.toBBox),e?t[e-1].children.push(o):this._splitRoot(i,o)}_splitRoot(t,e){this.data=Qh([t,e]),this.data.height=t.height+1,this.data.leaf=!1,Xh(this.data,this.toBBox)}_chooseSplitIndex(t,e,i){let n,r=1/0,s=1/0;for(let o=e;o<=i-e;o++){const e=Vh(t,0,o,this.toBBox),a=Vh(t,o,i,this.toBBox),l=Kh(e,a),h=$h(e)+$h(a);l=e;n--){const e=t.children[n];Wh(o,t.leaf?r(e):e),a+=qh(o)}return a}_adjustParentBBoxes(t,e,i){for(let n=i;n>=0;n--)Wh(e[n],t)}_condense(t){for(let e,i=t.length-1;i>=0;i--)0===t[i].children.length?i>0?(e=t[i-1].children,e.splice(e.indexOf(t[i]),1)):this.clear():Xh(t[i],this.toBBox)}};function zh(t,e,i){if(!i)return e.indexOf(t);for(let n=0;n=t.minX&&e.maxY>=t.minY}function Qh(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function tc(t,e,i,n,r){const s=[e,i];for(;s.length;){if((i=s.pop())-(e=s.pop())<=n)continue;const o=e+Math.ceil((i-e)/n/2)*n;kh(t,o,e,i,r),s.push(e,o,o,i)}}var ec=class{constructor(t){this.rbush_=new Uh(t),this.items_={}}insert(t,e){const i={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};this.rbush_.insert(i),this.items_[U(e)]=i}load(t,e){const i=new Array(e.length);for(let n=0,r=e.length;n{e||(e=!0,this.addFeature(t.element),e=!1)})),t.addEventListener(W,(t=>{e||(e=!0,this.removeFeature(t.element),e=!1)})),this.featuresCollection_=t}clear(t){if(t){for(const t in this.featureChangeKeys_){this.featureChangeKeys_[t].forEach(N)}this.featuresCollection_||(this.featureChangeKeys_={},this.idIndex_={},this.uidIndex_={})}else if(this.featuresRtree_){const t=t=>{this.removeFeatureInternal(t)};this.featuresRtree_.forEach(t);for(const t in this.nullGeometryFeatures_)this.removeFeatureInternal(this.nullGeometryFeatures_[t])}this.featuresCollection_&&this.featuresCollection_.clear(),this.featuresRtree_&&this.featuresRtree_.clear(),this.nullGeometryFeatures_={};const e=new hc(rc);this.dispatchEvent(e),this.changed()}forEachFeature(t){if(this.featuresRtree_)return this.featuresRtree_.forEach(t);this.featuresCollection_&&this.featuresCollection_.forEach(t)}forEachFeatureAtCoordinateDirect(t,e){const i=[t[0],t[1],t[0],t[1]];return this.forEachFeatureInExtent(i,(function(i){if(i.getGeometry().intersectsCoordinate(t))return e(i)}))}forEachFeatureInExtent(t,e){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(t,e);this.featuresCollection_&&this.featuresCollection_.forEach(e)}forEachFeatureIntersectingExtent(t,e){return this.forEachFeatureInExtent(t,(function(i){if(i.getGeometry().intersectsExtent(t)){const t=e(i);if(t)return t}}))}getFeaturesCollection(){return this.featuresCollection_}getFeatures(){let t;return this.featuresCollection_?t=this.featuresCollection_.getArray().slice(0):this.featuresRtree_&&(t=this.featuresRtree_.getAll(),y(this.nullGeometryFeatures_)||h(t,Object.values(this.nullGeometryFeatures_))),t}getFeaturesAtCoordinate(t){const e=[];return this.forEachFeatureAtCoordinateDirect(t,(function(t){e.push(t)})),e}getFeaturesInExtent(t,e){if(this.featuresRtree_){if(!(e&&e.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(t);const i=Ge(t,e);return[].concat(...i.map((t=>this.featuresRtree_.getInExtent(t))))}return this.featuresCollection_?this.featuresCollection_.getArray().slice(0):[]}getClosestFeatureToCoordinate(t,e){const i=t[0],n=t[1];let r=null;const s=[NaN,NaN];let o=1/0;const a=[-1/0,-1/0,1/0,1/0];return e=e||d,this.featuresRtree_.forEachInExtent(a,(function(t){if(e(t)){const e=t.getGeometry(),l=o;if(o=e.closestPointXY(i,n,s,o),o{--this.loadingExtentsCount_,this.dispatchEvent(new hc(ac,void 0,t))}),(()=>{--this.loadingExtentsCount_,this.dispatchEvent(new hc(lc))})),n.insert(s,{extent:s.slice()}))}this.loading=!(this.loader_.length<4)&&this.loadingExtentsCount_>0}refresh(){this.clear(!0),this.loadedExtentsRtree_.clear(),super.refresh()}removeLoadedExtent(t){const e=this.loadedExtentsRtree_;let i;e.forEachInExtent(t,(function(e){if(ce(e.extent,t))return i=e,!0})),i&&e.remove(i)}removeFeature(t){if(!t)return;const e=U(t);e in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[e]:this.featuresRtree_&&this.featuresRtree_.remove(t);this.removeFeatureInternal(t)&&this.changed()}removeFeatureInternal(t){const e=U(t),i=this.featureChangeKeys_[e];if(!i)return;i.forEach(N),delete this.featureChangeKeys_[e];const n=t.getId();return void 0!==n&&delete this.idIndex_[n.toString()],delete this.uidIndex_[e],this.dispatchEvent(new hc(sc,t)),t}removeFromIdIndex_(t){let e=!1;for(const i in this.idIndex_)if(this.idIndex_[i]===t){delete this.idIndex_[i],e=!0;break}return e}setLoader(t){this.loader_=t}setUrl(t){Ft(this.format_,"`format` must be set when `url` is set"),this.url_=t,this.setLoader(Ol(t,this.format_))}};var uc=class extends cc{constructor(t){super({attributions:t.attributions,wrapX:t.wrapX}),this.resolution=void 0,this.distance=void 0!==t.distance?t.distance:20,this.minDistance=t.minDistance||0,this.interpolationRatio=0,this.features=[],this.geometryFunction=t.geometryFunction||function(t){const e=t.getGeometry();return Ft(!e||"Point"===e.getType(),"The default `geometryFunction` can only handle `Point` or null geometries"),e},this.createCustomCluster_=t.createCluster,this.source=null,this.boundRefresh_=this.refresh.bind(this),this.updateDistance(this.distance,this.minDistance),this.setSource(t.source||null)}clear(t){this.features.length=0,super.clear(t)}getDistance(){return this.distance}getSource(){return this.source}loadFeatures(t,e,i){this.source.loadFeatures(t,e,i),e!==this.resolution&&(this.resolution=e,this.refresh())}setDistance(t){this.updateDistance(t,this.minDistance)}setMinDistance(t){this.updateDistance(this.distance,t)}getMinDistance(){return this.minDistance}setSource(t){this.source&&this.source.removeEventListener(v,this.boundRefresh_),this.source=t,t&&t.addEventListener(v,this.boundRefresh_),this.refresh()}refresh(){this.clear(),this.cluster(),this.addFeatures(this.features)}updateDistance(t,e){const i=0===t?0:Math.min(e,t)/t,n=t!==this.distance||this.interpolationRatio!==i;this.distance=t,this.minDistance=e,this.interpolationRatio=i,n&&this.refresh()}cluster(){if(void 0===this.resolution||!this.source)return;const t=[1/0,1/0,-1/0,-1/0],e=this.distance*this.resolution,i=this.source.getFeatures(),n={};for(let r=0,s=i.length;r=0;--e){const n=this.geometryFunction(t[e]);n?Ci(i,n.getCoordinates()):t.splice(e,1)}Mi(i,1/t.length);const n=we(e),r=this.interpolationRatio,s=new or([i[0]*(1-r)+n[0]*r,i[1]*(1-r)+n[1]*r]);return this.createCustomCluster_?this.createCustomCluster_(s,t):new At({geometry:s,features:t})}};var dc=class extends Lt{constructor(t){super({tileCoord:t.tileCoord,loader:()=>Promise.resolve(new Uint8Array(4)),interpolate:t.interpolate,transition:t.transition}),this.pixelRatio_=t.pixelRatio,this.gutter_=t.gutter,this.reprojData_=null,this.reprojError_=null,this.reprojSize_=void 0,this.sourceTileGrid_=t.sourceTileGrid,this.targetTileGrid_=t.targetTileGrid,this.wrappedTileCoord_=t.wrappedTileCoord||t.tileCoord,this.sourceTiles_=[],this.sourcesListenerKeys_=null,this.sourceZ_=0;const e=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_),i=this.targetTileGrid_.getExtent();let n=this.sourceTileGrid_.getExtent();const r=i?be(e,i):e;if(0===xe(r))return void(this.state=Q);const s=t.sourceProj,o=s.getExtent();o&&(n=n?be(n,o):o);const a=this.targetTileGrid_.getResolution(this.wrappedTileCoord_[0]),l=t.targetProj,h=ih(s,l,r,a);if(!isFinite(h)||h<=0)return void(this.state=Q);const c=void 0!==t.errorThreshold?t.errorThreshold:sh;if(this.triangulation_=new oh(s,l,r,n,h*c,a),0===this.triangulation_.getTriangles().length)return void(this.state=Q);this.sourceZ_=this.sourceTileGrid_.getZForResolution(h);let u=this.triangulation_.calculateSourceExtent();if(n&&(s.canWrapX()?(u[1]=ui(u[1],n[1],n[3]),u[3]=ui(u[3],n[1],n[3])):u=be(u,n)),xe(u)){const e=this.sourceTileGrid_.getTileRangeForExtentAndZ(u,this.sourceZ_),i=t.getTileFunction;for(let t=e.minX;t<=e.maxX;t++)for(let n=e.minY;n<=e.maxY;n++){const e=i(this.sourceZ_,t,n,this.pixelRatio_);e&&this.sourceTiles_.push(e)}0===this.sourceTiles_.length&&(this.state=Q)}else this.state=Q}getSize(){return this.reprojSize_}getData(){return this.reprojData_}getError(){return this.reprojError_}reproject_(){const t=[];if(this.sourceTiles_.forEach((e=>{if(!e||e.getState()!==H)return;const i=e.getSize(),n=this.gutter_;let r;const s=Ct(e.getData());r=s||bt(Tt(e.getData()));const o=[i[0]+2*n,i[1]+2*n],a=r instanceof Float32Array,l=o[0]*o[1],h=a?Float32Array:Uint8Array,c=new h(r.buffer),u=h.BYTES_PER_ELEMENT,d=u*c.length/l,g=c.byteLength/o[1],f=Math.floor(g/u/o[0]),p=l*f;let m=c;if(c.length!==p){m=new h(p);let t=0,e=0;const i=o[0]*f;for(let n=0;n=0;--e){const i=[];for(let n=0,r=t.length;n{const i=e.getState();if(i!==q&&i!==K)return;t++;const n=A(e,v,(function(){const i=e.getState();i!=H&&i!=J&&i!=Q||(N(n),t--,0===t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(n)})),0===t?setTimeout(this.reproject_.bind(this),0):this.sourceTiles_.forEach((function(t){t.getState()==q&&t.load()}))}unlistenSources_(){this.sourcesListenerKeys_.forEach(N),this.sourcesListenerKeys_=null}};var gc=class extends Eh{constructor(t){const e=void 0===t.projection?"EPSG:3857":t.projection;let i=t.tileGrid;void 0===i&&e&&(i=yh({extent:Sh(e),maxResolution:t.maxResolution,maxZoom:t.maxZoom,minZoom:t.minZoom,tileSize:t.tileSize})),super({cacheSize:.1,attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,projection:e,tileGrid:i,opaque:t.opaque,state:t.state,wrapX:t.wrapX,transition:t.transition,interpolate:t.interpolate}),this.gutter_=void 0!==t.gutter?t.gutter:0,this.tileSize_=t.tileSize?sl(t.tileSize):null,this.tileSizes_=null,this.tileLoadingKeys_={},this.loader_=t.loader,this.handleTileChange_=this.handleTileChange_.bind(this),this.bandCount=void 0===t.bandCount?4:t.bandCount,this.tileGridForProjection_={},this.tileCacheForProjection_={}}setTileSizes(t){this.tileSizes_=t}getTileSize(t){if(this.tileSizes_)return this.tileSizes_[t];if(this.tileSize_)return this.tileSize_;const e=this.getTileGrid();return e?sl(e.getTileSize(t)):[256,256]}getGutterForProjection(t){const e=this.getProjection();return!e||ln(e,t)?this.gutter_:0}setLoader(t){this.loader_=t}getReprojTile_(t,e,i,n,r){const s=this.getTileCacheForProjection(n),o=_l(t,e,i);if(s.containsKey(o)){const t=s.get(o);if(t&&t.key==this.getKey())return t}const a=this.getTileGrid(),l=Math.max.apply(null,a.getResolutions().map(((t,e)=>{const i=sl(a.getTileSize(e)),n=this.getTileSize(e);return Math.max(n[0]/i[0],n[1]/i[1])}))),h=this.getTileGridForProjection(r),c=this.getTileGridForProjection(n),u=[t,e,i],d=this.getTileCoordForTileUrlFunction(u,n),g=Object.assign({sourceProj:r,sourceTileGrid:h,targetProj:n,targetTileGrid:c,tileCoord:u,wrappedTileCoord:d,pixelRatio:l,gutter:this.getGutterForProjection(r),getTileFunction:(t,e,i,n)=>this.getTile(t,e,i,n,r)},this.tileOptions),f=new dc(g);return f.key=this.getKey(),f}getTile(t,e,i,n,r){const s=this.getProjection();if(s&&r&&!ln(s,r))return this.getReprojTile_(t,e,i,r,s);const o=this.getTileSize(t),a=_l(t,e,i);if(this.tileCache.containsKey(a))return this.tileCache.get(a);const l=this.loader_;const h=Object.assign({tileCoord:[t,e,i],loader:function(){return m((function(){return l(t,e,i)}))},size:o},this.tileOptions),c=new Lt(h);return c.key=this.getKey(),c.addEventListener(v,this.handleTileChange_),this.tileCache.set(a,c),c}handleTileChange_(t){const e=t.target,i=U(e),n=e.getState();let r;n==K?(this.tileLoadingKeys_[i]=!0,r=lh):i in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[i],r=n==J?ch:n==H?hh:void 0),r&&this.dispatchEvent(new wh(r,e))}getTileGridForProjection(t){const e=this.getProjection();if(this.tileGrid&&(!e||ln(e,t)))return this.tileGrid;const i=U(t);return i in this.tileGridForProjection_||(this.tileGridForProjection_[i]=ph(t)),this.tileGridForProjection_[i]}setTileGridForProjection(t,e){const i=tn(t);if(i){const t=U(i);t in this.tileGridForProjection_||(this.tileGridForProjection_[t]=e)}}getTileCacheForProjection(t){const e=this.getProjection();if(!e||ln(e,t))return this.tileCache;const i=U(t);return i in this.tileCacheForProjection_||(this.tileCacheForProjection_[i]=new El(.1)),this.tileCacheForProjection_[i]}expireCache(t,e){const i=this.getTileCacheForProjection(t);this.tileCache.expireCache(this.tileCache==i?e:{});for(const t in this.tileCacheForProjection_){const n=this.tileCacheForProjection_[t];n.expireCache(n==i?e:{})}}clear(){super.clear();for(const t in this.tileCacheForProjection_)this.tileCacheForProjection_[t].clear()}};function fc(t,e){if(!t)return!1;if(!0===t)return!0;if(3!==e.getSamplesPerPixel())return!1;const i=e.fileDirectory.PhotometricInterpretation,n=GeoTIFF.globals.photometricInterpretations;return i===n.CMYK||i===n.YCbCr||i===n.CIELab||i===n.ICCLab}const pc="STATISTICS_MAXIMUM",mc="STATISTICS_MINIMUM";let _c;function yc(t){try{return t.getBoundingBox()}catch(e){return[0,0,t.getWidth(),t.getHeight()]}}function xc(t){try{return t.getOrigin().slice(0,2)}catch(e){return[0,t.getHeight()]}}function vc(t,e){try{return t.getResolution(e)}catch(i){return[e.getWidth()/t.getWidth(),e.getHeight()/t.getHeight()]}}function Sc(t){const e=t.geoKeys;if(!e)return null;if(e.ProjectedCSTypeGeoKey&&32767!==e.ProjectedCSTypeGeoKey){const t="EPSG:"+e.ProjectedCSTypeGeoKey;let i=tn(t);if(!i){const n=Be(e.ProjLinearUnitsGeoKey);n&&(i=new ze({code:t,units:n}))}return i}if(e.GeographicTypeGeoKey&&32767!==e.GeographicTypeGeoKey){const t="EPSG:"+e.GeographicTypeGeoKey;let i=tn(t);if(!i){const n=Be(e.GeogAngularUnitsGeoKey);n&&(i=new ze({code:t,units:n}))}return i}return null}function wc(t){return t.getImageCount().then((function(e){const i=new Array(e);for(let n=0;ni*t)throw new Error(n)}function Cc(t){return t instanceof Int8Array?127:t instanceof Uint8Array||t instanceof Uint8ClampedArray?255:t instanceof Int16Array?32767:t instanceof Uint16Array?65535:t instanceof Int32Array?2147483647:t instanceof Uint32Array?4294967295:t instanceof Float32Array?34e37:255}class Rc extends gc{constructor(t){super({state:"loading",tileGrid:null,projection:t.projection||null,opaque:t.opaque,transition:t.transition,interpolate:!1!==t.interpolate,wrapX:t.wrapX}),this.sourceInfo_=t.sources;const e=this.sourceInfo_.length;this.sourceOptions_=t.sourceOptions,this.sourceImagery_=new Array(e),this.sourceMasks_=new Array(e),this.resolutionFactors_=new Array(e),this.samplesPerPixel_,this.nodataValues_,this.metadata_,this.normalize_=!1!==t.normalize,this.addAlpha_=!1,this.error_=null,this.convertToRGB_=t.convertToRGB||!1,this.setKey(this.sourceInfo_.map((t=>t.url)).join(","));const i=this,n=new Array(e);for(let t=0;t=0;--t){const i=Sc(e[t]);if(i){this.projection=i;break}}}configure_(t){let e,i,n,r,s;const o=new Array(t.length),a=new Array(t.length),l=new Array(t.length);let h=0;const c=t.length;for(let u=0;u{4==(4&(t.fileDirectory.NewSubfileType||0))?d.push(t):c.push(t)}));const g=c.length;if(d.length>0&&d.length!==g)throw new Error(`Expected one mask per image found ${d.length} masks and ${g} images`);let f,p;const m=new Array(g),_=new Array(g),y=new Array(g);a[u]=new Array(g),l[u]=new Array(g);for(let t=0;ty.length&&(h=s.length-y.length);const t=s[s.length-1]/y[y.length-1];this.resolutionFactors_[u]=t;const e=y.map((e=>e*t)),i=`Resolution mismatch for source ${u}, got [${e}] but expected [${s}]`;Tc(s.slice(h,s.length),e,.02,i,this.viewRejector)}else s=y,this.resolutionFactors_[u]=1;n?Tc(n.slice(h,n.length),_,.01,`Tile size mismatch for source ${u}`,this.viewRejector):n=_,r?Tc(r.slice(h,r.length),m,0,`Tile size mismatch for source ${u}`,this.viewRejector):r=m,this.sourceImagery_[u]=c.reverse(),this.sourceMasks_[u]=d.reverse()}for(let t=0,e=this.sourceImagery_.length;tl||s>l;)o.push([Math.ceil(r/l),Math.ceil(s/l)]),l+=l;break;case"truncated":let t=r,e=s;for(;t>l||e>l;)o.push([Math.ceil(t/l),Math.ceil(e/l)]),t>>=1,e>>=1;break;default:throw new Error("Unknown `tierSizeCalculation` configured")}o.push([1,1]),o.reverse();const h=[n],c=[0];for(let t=1,e=o.length;t{f=a,this.changed()})),y.src=_}};const Fc="version1",Ic="version2",Mc="version3",Ac={};Ac[Fc]={level0:{supports:[],formats:[],qualities:["native"]},level1:{supports:["regionByPx","sizeByW","sizeByH","sizeByPct"],formats:["jpg"],qualities:["native"]},level2:{supports:["regionByPx","regionByPct","sizeByW","sizeByH","sizeByPct","sizeByConfinedWh","sizeByWh"],formats:["jpg","png"],qualities:["native","color","grey","bitonal"]}},Ac[Ic]={level0:{supports:[],formats:["jpg"],qualities:["default"]},level1:{supports:["regionByPx","sizeByW","sizeByH","sizeByPct"],formats:["jpg"],qualities:["default"]},level2:{supports:["regionByPx","regionByPct","sizeByW","sizeByH","sizeByPct","sizeByConfinedWh","sizeByDistortedWh","sizeByWh"],formats:["jpg","png"],qualities:["default","bitonal"]}},Ac[Mc]={level0:{supports:[],formats:["jpg"],qualities:["default"]},level1:{supports:["regionByPx","regionSquare","sizeByW","sizeByH","sizeByWh"],formats:["jpg"],qualities:["default"]},level2:{supports:["regionByPx","regionSquare","regionByPct","sizeByW","sizeByH","sizeByPct","sizeByConfinedWh","sizeByWh"],formats:["jpg","png"],qualities:["default"]}},Ac.none={none:{supports:[],formats:[],qualities:[]}};const Oc=/^https?:\/\/library\.stanford\.edu\/iiif\/image-api\/(?:1\.1\/)?compliance\.html#level[0-2]$/,Nc=/^https?:\/\/iiif\.io\/api\/image\/2\/level[0-2](?:\.json)?$/,Dc=/(^https?:\/\/iiif\.io\/api\/image\/3\/level[0-2](?:\.json)?$)|(^level[0-2]$)/;const kc={};kc[Fc]=function(t){let e=t.getComplianceLevelSupportedFeatures();return void 0===e&&(e=Ac[Fc].level0),{url:void 0===t.imageInfo["@id"]?void 0:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),supports:e.supports,formats:[...e.formats,void 0===t.imageInfo.formats?[]:t.imageInfo.formats],qualities:[...e.qualities,void 0===t.imageInfo.qualities?[]:t.imageInfo.qualities],resolutions:t.imageInfo.scale_factors,tileSize:void 0!==t.imageInfo.tile_width?void 0!==t.imageInfo.tile_height?[t.imageInfo.tile_width,t.imageInfo.tile_height]:[t.imageInfo.tile_width,t.imageInfo.tile_width]:null!=t.imageInfo.tile_height?[t.imageInfo.tile_height,t.imageInfo.tile_height]:void 0}},kc[Ic]=function(t){const e=t.getComplianceLevelSupportedFeatures(),i=Array.isArray(t.imageInfo.profile)&&t.imageInfo.profile.length>1,n=i&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],r=i&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],s=i&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:[...e.supports,...n],formats:[...e.formats,...r],qualities:[...e.qualities,...s]}},kc[Mc]=function(t){const e=t.getComplianceLevelSupportedFeatures(),i=void 0===t.imageInfo.extraFormats?e.formats:[...e.formats,...t.imageInfo.extraFormats],n=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return["jpg","png","gif"].includes(t)})).reduce((function(t,e){return void 0===t&&i.includes(e)?e:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?e.supports:[...e.supports,...t.imageInfo.extraFeatures],formats:i,qualities:void 0===t.imageInfo.extraQualities?e.qualities:[...e.qualities,...t.imageInfo.extraQualities],preferredFormat:n}};var Gc=class{constructor(t){this.setImageInfo(t)}setImageInfo(t){this.imageInfo="string"==typeof t?JSON.parse(t):t}getImageApiVersion(){if(void 0===this.imageInfo)return;let t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(let e=0;e0&&"string"==typeof this.imageInfo.profile[0]&&Nc.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}}getComplianceLevelFromProfile(t){const e=this.getComplianceLevelEntryFromProfile(t);if(void 0===e)return;const i=e.match(/level[0-2](?:\.json)?$/g);return Array.isArray(i)?i[0].replace(".json",""):void 0}getComplianceLevelSupportedFeatures(){if(void 0===this.imageInfo)return;const t=this.getImageApiVersion(),e=this.getComplianceLevelFromProfile(t);return void 0===e?Ac.none.none:Ac[t][e]}getTileSourceOptions(t){const e=t||{},i=this.getImageApiVersion();if(void 0===i)return;const n=void 0===i?void 0:kc[i](this);return void 0!==n?{url:n.url,version:i,size:[this.imageInfo.width,this.imageInfo.height],sizes:n.sizes,format:void 0!==e.format&&n.formats.includes(e.format)?e.format:void 0!==n.preferredFormat?n.preferredFormat:"jpg",supports:n.supports,quality:e.quality&&n.qualities.includes(e.quality)?e.quality:n.qualities.includes("native")?"native":"default",resolutions:Array.isArray(n.resolutions)?n.resolutions.sort((function(t,e){return e-t})):void 0,tileSize:n.tileSize}:void 0}};function jc(t){return t.toLocaleString("en",{maximumFractionDigits:10})}var Bc=class extends Mh{constructor(t){const e=t||{};let i=e.url||"";i+=i.lastIndexOf("/")===i.length-1||""===i?"":"/";const n=e.version||Ic,r=e.sizes||[],s=e.size;Ft(null!=s&&Array.isArray(s)&&2==s.length&&!isNaN(s[0])&&s[0]>0&&!isNaN(s[1])&&s[1]>0,"Missing or invalid `size`");const o=s[0],a=s[1],l=e.tileSize,h=e.tilePixelRatio||1,c=e.format||"jpg",u=e.quality||(e.version==Fc?"native":"default");let d=e.resolutions||[];const g=e.supports||[],f=e.extent||[0,-a,o,0],p=null!=r&&Array.isArray(r)&&r.length>0,m=void 0!==l&&("number"==typeof l&&Number.isInteger(l)&&l>0||Array.isArray(l)&&l.length>0),_=null!=g&&Array.isArray(g)&&(g.includes("regionByPx")||g.includes("regionByPct"))&&(g.includes("sizeByWh")||g.includes("sizeByH")||g.includes("sizeByW")||g.includes("sizeByPct"));let y,x,v;if(d.sort((function(t,e){return e-t})),m||_)if(null!=l&&("number"==typeof l&&Number.isInteger(l)&&l>0?(y=l,x=l):Array.isArray(l)&&l.length>0&&((1==l.length||null==l[1]&&Number.isInteger(l[0]))&&(y=l[0],x=l[0]),2==l.length&&(Number.isInteger(l[0])&&Number.isInteger(l[1])?(y=l[0],x=l[1]):null==l[0]&&Number.isInteger(l[1])&&(y=l[1],x=l[1])))),void 0!==y&&void 0!==x||(y=ks,x=ks),0==d.length){v=Math.max(Math.ceil(Math.log(o/y)/Math.LN2),Math.ceil(Math.log(a/x)/Math.LN2));for(let t=v;t>=0;t--)d.push(Math.pow(2,t))}else{const t=Math.max(...d);v=Math.round(Math.log(t)/Math.LN2)}else if(y=o,x=a,d=[],p){r.sort((function(t,e){return t[0]-e[0]})),v=-1;const t=[];for(let e=0;e0&&d[d.length-1]==i?t.push(e):(d.push(i),v++)}if(t.length>0)for(let e=0;ev)return;const S=t[1],w=t[2],E=d[f];if(!(void 0===S||void 0===w||void 0===E||S<0||Math.ceil(o/E/y)<=S||w<0||Math.ceil(a/E/x)<=w)){if(_||m){const t=S*y*E,e=w*x*E;let i=y*E,r=x*E,s=y,c=x;if(t+i>o&&(i=o-t),e+r>a&&(r=a-e),t+y*E>o&&(s=Math.floor((o-t+E-1)/E)),e+x*E>a&&(c=Math.floor((a-e+E-1)/E)),0==t&&i==o&&0==e&&r==a)l="full";else if(!_||g.includes("regionByPx"))l=t+","+e+","+i+","+r;else if(g.includes("regionByPct")){l="pct:"+jc(t/o*100)+","+jc(e/a*100)+","+jc(i/o*100)+","+jc(r/a*100)}n!=Mc||_&&!g.includes("sizeByWh")?!_||g.includes("sizeByW")?h=s+",":g.includes("sizeByH")?h=","+c:g.includes("sizeByWh")?h=s+","+c:g.includes("sizeByPct")&&(h="pct:"+jc(100/E)):h=s+","+c}else if(l="full",p){const t=r[f][0],e=r[f][1];h=n==Mc?t==o&&e==a?"max":t+","+e:t==o?"full":t+","}else h=n==Mc?"max":"full";return i+l+"/"+h+"/0/"+u+"."+c}},transition:e.transition}),this.zDirection=e.zDirection}};var Uc=class extends ts{constructor(t,e,i,n,r,s,o){let a=t.getExtent();a&&t.canWrapX()&&(a=a.slice(),a[0]=-1/0,a[2]=1/0);let l=e.getExtent();l&&e.canWrapX()&&(l=l.slice(),l[0]=-1/0,l[2]=1/0);const h=l?be(i,l):i,c=eh(t,e,we(h),n),u=new oh(t,e,h,a,.5*c,n),d=u.calculateSourceExtent(),g=Me(d)?null:s(d,c,r),f=g?Wr:qr,p=g?g.getPixelRatio():1;super(i,n,p,f),this.targetProj_=e,this.maxSourceExtent_=a,this.triangulation_=u,this.targetResolution_=n,this.targetExtent_=i,this.sourceImage_=g,this.sourcePixelRatio_=p,this.interpolate_=o,this.canvas_=null,this.sourceListenerKey_=null}disposeInternal(){this.state==Zr&&this.unlistenSource_(),super.disposeInternal()}getImage(){return this.canvas_}getProjection(){return this.targetProj_}reproject_(){const t=this.sourceImage_.getState();if(t==Yr){const t=Fe(this.targetExtent_)/this.targetResolution_,e=Re(this.targetExtent_)/this.targetResolution_;this.canvas_=nh(t,e,this.sourcePixelRatio_,rh(this.sourceImage_.getResolution()),this.maxSourceExtent_,this.targetResolution_,this.targetExtent_,this.triangulation_,[{extent:this.sourceImage_.getExtent(),image:this.sourceImage_.getImage()}],0,void 0,this.interpolate_)}this.state=t,this.changed()}load(){if(this.state==Wr){this.state=Zr,this.changed();const t=this.sourceImage_.getState();t==Yr||t==$r?this.reproject_():(this.sourceListenerKey_=A(this.sourceImage_,v,(function(t){const e=this.sourceImage_.getState();e!=Yr&&e!=$r||(this.unlistenSource_(),this.reproject_())}),this),this.sourceImage_.load())}}unlistenSource_(){N(this.sourceListenerKey_),this.sourceListenerKey_=null}};const zc=4,Xc="imageloadstart",Vc="imageloadend",Wc="imageloaderror";class Zc extends e{constructor(t,e){super(t),this.image=e}}function Yc(t,e){t.getImage().src=e}function $c(t,e,i,n){const r=e/i,s=we(t),o=wi(Fe(t)/r,zc),a=wi(Re(t)/r,zc);return Te(s,r,0,[o+2*wi((n-1)*o/2,zc),a+2*wi((n-1)*a/2,zc)])}var qc=class extends dh{constructor(t){super({attributions:t.attributions,projection:t.projection,state:t.state,interpolate:void 0===t.interpolate||t.interpolate}),this.on,this.once,this.un,this.loader=t.loader||null,this.resolutions_=void 0!==t.resolutions?t.resolutions:null,this.reprojectedImage_=null,this.reprojectedRevision_=0,this.image=null,this.wantedExtent_,this.wantedResolution_,this.static_=!!t.loader&&0===t.loader.length}getResolutions(){return this.resolutions_}setResolutions(t){this.resolutions_=t}findNearestResolution(t){const e=this.getResolutions();if(e){t=e[a(e,t,0)]}return t}getImage(t,e,i,n){const r=this.getProjection();if(!r||!n||ln(r,n))return r&&(n=r),this.getImageInternal(t,e,i,n);if(this.reprojectedImage_){if(this.reprojectedRevision_==this.getRevision()&&ln(this.reprojectedImage_.getProjection(),n)&&this.reprojectedImage_.getResolution()==e&&ce(this.reprojectedImage_.getExtent(),t))return this.reprojectedImage_;this.reprojectedImage_.dispose(),this.reprojectedImage_=null}return this.reprojectedImage_=new Uc(r,n,t,e,i,((t,e,i)=>this.getImageInternal(t,e,i,r)),this.getInterpolate()),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}getImageInternal(t,e,i,n){if(this.loader){const n=$c(t,e,i,1),r=this.findNearestResolution(e);if(this.image&&(this.static_||(this.wantedExtent_&&ie(this.wantedExtent_,n)||ie(this.image.getExtent(),n))&&(this.wantedResolution_&&rh(this.wantedResolution_)===r||rh(this.image.getResolution())===r)))return this.image;this.wantedExtent_=n,this.wantedResolution_=r,this.image=new ts(n,r,i,this.loader),this.image.addEventListener(v,this.handleImageChange.bind(this))}return this.image}handleImageChange(t){const e=t.target;let i;switch(e.getState()){case Zr:this.loading=!0,i=Xc;break;case Yr:this.loading=!1,i=Vc;break;case $r:this.loading=!1,i=Wc;break;default:return}this.hasListener(i)&&this.dispatchEvent(new Zc(i,e))}};function Kc(t,e){const i=[];Object.keys(e).forEach((function(t){null!==e[t]&&void 0!==e[t]&&i.push(t+"="+encodeURIComponent(e[t]))}));const n=i.join("&");return t=t.replace(/[?&]$/,""),(t+=t.includes("?")?"&":"?")+n}function Hc(t,e,i,n,r,s){const o=r.getCode().split(/:(?=\d+$)/).pop(),a=i/n,l=[vi(Fe(e)/a,zc),vi(Re(e)/a,zc)];s.SIZE=l[0]+","+l[1],s.BBOX=e.join(","),s.BBOXSR=o,s.IMAGESR=o,s.DPI=Math.round(s.DPI?s.DPI*n:90*n);const h=t.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");if(h==t)throw new Error("`options.featureTypes` should be an Array");return Kc(h,s)}function Jc(t){const e=t.load?t.load:Qr,i=tn(t.projection||"EPSG:3857");return function(n,r,s){s=t.hidpi?s:1;const o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Object.assign(o,t.params),n=$c(n,r,s,t.ratio);const a=Hc(t.url,n,r,s,i,o),l=new Image;return null!==t.crossOrigin&&(l.crossOrigin=t.crossOrigin),e(l,a).then((t=>{const e=Fe(n)/t.width*s;return{image:t,extent:n,resolution:e,pixelRatio:s}}))}}var Qc=class extends qc{constructor(t){super({attributions:(t=t||{}).attributions,interpolate:t.interpolate,projection:t.projection,resolutions:t.resolutions}),this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null,this.hidpi_=void 0===t.hidpi||t.hidpi,this.url_=t.url,this.imageLoadFunction_=void 0!==t.imageLoadFunction?t.imageLoadFunction:Yc,this.params_=t.params||{},this.image_=null,this.imageSize_=[0,0],this.renderedRevision_=0,this.ratio_=void 0!==t.ratio?t.ratio:1.5}getParams(){return this.params_}getImageInternal(t,e,i,n){return void 0===this.url_?null:(this.loader||(this.loader=Jc({crossOrigin:this.crossOrigin_,params:this.params_,projection:n,hidpi:this.hidpi_,url:this.url_,ratio:this.ratio_,load:(t,e)=>(this.image.setImage(t),this.imageLoadFunction_(this.image,e),Qr(t))})),super.getImageInternal(t,e,i,n))}getImageLoadFunction(){return this.imageLoadFunction_}getUrl(){return this.url_}setImageLoadFunction(t){this.image_=null,this.imageLoadFunction_=t,this.changed()}setUrl(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())}updateParams(t){Object.assign(this.params_,t),this.image_=null,this.changed()}};var tu=class extends qc{constructor(t){super({attributions:(t=t||{}).attributions,interpolate:t.interpolate,projection:t.projection,resolutions:t.resolutions,state:t.state}),this.canvasFunction_=t.canvasFunction,this.canvas_=null,this.renderedRevision_=0,this.ratio_=void 0!==t.ratio?t.ratio:1.5}getImageInternal(t,e,i,n){e=this.findNearestResolution(e);let r=this.canvas_;if(r&&this.renderedRevision_==this.getRevision()&&r.getResolution()==e&&r.getPixelRatio()==i&&ie(r.getExtent(),t))return r;Oe(t=t.slice(),this.ratio_);const s=[Fe(t)/e*i,Re(t)/e*i],o=this.canvasFunction_.call(this,t,e,i,s,n);return o&&(r=new es(t,e,i,o)),this.canvas_=r,this.renderedRevision_=this.getRevision(),r}};function eu(t,e,i,n,r,s,o){const a=function(t,e,i,n){const r=Fe(t),s=Re(t),o=e[0],a=e[1],l=.0254/n;return a*r>o*s?r*i/(o*l):s*i/(a*l)}(i,n,s,o),l=we(i),h={OPERATION:r?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:o,SETDISPLAYWIDTH:Math.round(n[0]),SETDISPLAYHEIGHT:Math.round(n[1]),SETVIEWSCALE:a,SETVIEWCENTERX:l[0],SETVIEWCENTERY:l[1]};return Object.assign(h,e),Kc(t,h)}function iu(t){const e=t.load||Qr;return function(i,n,r){const s=new Image;null!==t.crossOrigin&&(s.crossOrigin=t.crossOrigin);const o=Fe(i=$c(i,n,r,t.ratio))/n,a=Re(i)/n,l=[o*r,a*r],h=eu(t.url,t.params,i,l,t.useOverlay,t.metersPerUnit||1,t.displayDpi||96);return e(s,h).then((t=>({image:t,extent:i,pixelRatio:r})))}}var nu=class extends qc{constructor(t){super({interpolate:t.interpolate,projection:t.projection,resolutions:t.resolutions}),this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null,this.displayDpi_=void 0!==t.displayDpi?t.displayDpi:96,this.params_=t.params||{},this.url_=t.url,this.imageLoadFunction_=void 0!==t.imageLoadFunction?t.imageLoadFunction:Yc,this.hidpi_=void 0===t.hidpi||t.hidpi,this.metersPerUnit_=void 0!==t.metersPerUnit?t.metersPerUnit:1,this.ratio_=void 0!==t.ratio?t.ratio:1,this.useOverlay_=void 0!==t.useOverlay&&t.useOverlay,this.image_=null,this.renderedRevision_=0}getParams(){return this.params_}getImageInternal(t,e,i,n){return void 0===this.url_?null:(this.loader||(this.loader=iu({crossOrigin:this.crossOrigin_,params:this.params_,hidpi:this.hidpi_,metersPerUnit:this.metersPerUnit_,url:this.url_,useOverlay:this.useOverlay_,ratio:this.ratio_,load:(t,e)=>(this.image.setImage(t),this.imageLoadFunction_(this.image,e),Qr(t))})),super.getImageInternal(t,e,i,n))}getImageLoadFunction(){return this.imageLoadFunction_}updateParams(t){Object.assign(this.params_,t),this.changed()}setImageLoadFunction(t){this.image_=null,this.imageLoadFunction_=t,this.changed()}};function ru(t){const e=t.load||Qr,i=t.imageExtent,n=new Image;return null!==t.crossOrigin&&(n.crossOrigin=t.crossOrigin),()=>e(n,t.url).then((t=>{const e=Fe(i)/t.width,n=Re(i)/t.height;return{image:t,extent:i,resolution:e!==n?[e,n]:n,pixelRatio:1}}))}var su=class extends qc{constructor(t){const e=void 0!==t.crossOrigin?t.crossOrigin:null,i=void 0!==t.imageLoadFunction?t.imageLoadFunction:Yc;super({attributions:t.attributions,interpolate:t.interpolate,projection:tn(t.projection)}),this.url_=t.url,this.imageExtent_=t.imageExtent,this.image=null,this.image=new ts(this.imageExtent_,void 0,1,ru({url:t.url,imageExtent:t.imageExtent,crossOrigin:e,load:(t,e)=>(this.image.setImage(t),i(this.image,e),Qr(t))})),this.image.addEventListener(v,this.handleImageChange.bind(this))}getImageExtent(){return this.imageExtent_}getImageInternal(t,e,i,n){return Ie(t,this.image.getExtent())?this.image:null}getUrl(){return this.url_}};const ou="1.3.0";function au(t,e,i,n,r){r.WIDTH=i[0],r.HEIGHT=i[1];const s=n.getAxisOrientation();let o;const a=Ti(r.VERSION,"1.3")>=0;return r[a?"CRS":"SRS"]=n.getCode(),o=a&&"ne"==s.substr(0,2)?[e[1],e[0],e[3],e[2]]:e,r.BBOX=o.join(","),Kc(t,r)}function lu(t,e,i,n,r,s,o){s=Object.assign({REQUEST:"GetMap"},s);const a=e/i,l=[vi(Fe(t)/a,zc),vi(Re(t)/a,zc)];if(1!=i)switch(o){case"geoserver":const t=90*i+.5|0;"FORMAT_OPTIONS"in s?s.FORMAT_OPTIONS+=";dpi:"+t:s.FORMAT_OPTIONS="dpi:"+t;break;case"mapserver":s.MAP_RESOLUTION=90*i;break;case"carmentaserver":case"qgis":s.DPI=90*i;break;default:throw new Error("Unknown `serverType` configured")}return au(r,t,l,n,s)}function hu(t,e){return Object.assign({REQUEST:e,SERVICE:"WMS",VERSION:ou,FORMAT:"image/png",STYLES:"",TRANSPARENT:!0},t)}function cu(t){const e=void 0===t.hidpi||t.hidpi,i=tn(t.projection||"EPSG:3857"),n=t.ratio||1.5,r=t.load||Qr;return(s,o,a)=>{s=$c(s,o,a,n),1==a||e&&void 0!==t.serverType||(a=1);const l=lu(s,o,a,i,t.url,hu(t.params,"GetMap"),t.serverType),h=new Image;return null!==t.crossOrigin&&(h.crossOrigin=t.crossOrigin),r(h,l).then((t=>({image:t,extent:s,pixelRatio:a})))}}const uu=[101,101];var du=class extends qc{constructor(t){super({attributions:(t=t||{}).attributions,interpolate:t.interpolate,projection:t.projection,resolutions:t.resolutions}),this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null,this.url_=t.url,this.imageLoadFunction_=void 0!==t.imageLoadFunction?t.imageLoadFunction:Yc,this.params_=t.params,this.serverType_=t.serverType,this.hidpi_=void 0===t.hidpi||t.hidpi,this.renderedRevision_=0,this.ratio_=void 0!==t.ratio?t.ratio:1.5}getFeatureInfoUrl(t,e,i,n){if(void 0===this.url_)return;const r=tn(i),s=this.getProjection();s&&s!==r&&(e=eh(s,r,t,e),t=un(t,r,s));const o=Te(t,e,0,uu),a={QUERY_LAYERS:this.params_.LAYERS};Object.assign(a,hu(this.params_,"GetFeatureInfo"),n);const l=Si((t[0]-o[0])/e,zc),h=Si((o[3]-t[1])/e,zc),c=Ti(a.VERSION,"1.3")>=0;return a[c?"I":"X"]=l,a[c?"J":"Y"]=h,au(this.url_,o,uu,s||r,a)}getLegendUrl(t,e){if(void 0===this.url_)return;const i={SERVICE:"WMS",VERSION:ou,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){const t=this.params_.LAYERS;if(!(!Array.isArray(t)||1===t.length))return;i.LAYER=t}if(void 0!==t){const e=this.getProjection()?this.getProjection().getMetersPerUnit():1,n=28e-5;i.SCALE=t*e/n}return Object.assign(i,e),Kc(this.url_,i)}getParams(){return this.params_}getImageInternal(t,e,i,n){return void 0===this.url_?null:(this.loader||(this.loader=cu({crossOrigin:this.crossOrigin_,params:this.params_,projection:n,serverType:this.serverType_,hidpi:this.hidpi_,url:this.url_,ratio:this.ratio_,load:(t,e)=>(this.image.setImage(t),this.imageLoadFunction_(this.image,e),Qr(t))})),super.getImageInternal(t,e,i,n))}getImageLoadFunction(){return this.imageLoadFunction_}getUrl(){return this.url_}setImageLoadFunction(t){this.imageLoadFunction_=t,this.changed()}setUrl(t){t!=this.url_&&(this.url_=t,this.loader=null,this.changed())}updateParams(t){Object.assign(this.params_,t),this.changed()}changed(){this.image=null,super.changed()}};const gu={"image/png":!0,"image/jpeg":!0,"image/gif":!0,"image/webp":!0},fu={"application/vnd.mapbox-vector-tile":!0,"application/geo+json":!0};function pu(t,e){let i,n;for(let r=0;rt.maxTileCol||u.tileRowt.maxTileRow)return}Object.assign(u,_);const d=i.replace(/\{(\w+?)\}/g,(function(t,e){return u[e]}));return Bl(y,d)}}}function yu(t){return jl(t.url).then((function(e){return function(t,e){const i=e.tileMatrixSetLimits;let n;if("map"===e.dataType)n=pu(e.links,t.mediaType);else{if("vector"!==e.dataType)throw new Error('Expected tileset data type to be "map" or "vector"');n=mu(e.links,t.mediaType,t.supportedMediaTypes)}if(e.tileMatrixSet)return _u(t,e.tileMatrixSet,n,i);const r=e.links.find((t=>"http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme"===t.rel));if(!r)throw new Error("Expected http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme link or tileMatrixSet");const s=r.href;return jl(Bl(t.url,s)).then((function(e){return _u(t,e,n,i)}))}(t,e)}))}var xu=class extends Mh{constructor(t){super({attributions:t.attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:t.projection,reprojectionErrorThreshold:t.reprojectionErrorThreshold,state:"loading",tileLoadFunction:t.tileLoadFunction,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition});yu({url:t.url,projection:this.getProjection(),mediaType:t.mediaType,context:t.context||null}).then(this.handleTileSetInfo_.bind(this)).catch(this.handleError_.bind(this))}handleTileSetInfo_(t){this.tileGrid=t.grid,this.setTileUrlFunction(t.urlFunction,t.urlTemplate),this.setState("ready")}handleError_(t){Yi(t),this.setState("error")}};var vu=class extends Fh{constructor(t){const e=t.projection||"EPSG:3857",i=t.extent||Sh(e),n=t.tileGrid||yh({extent:i,maxResolution:t.maxResolution,maxZoom:void 0!==t.maxZoom?t.maxZoom:22,minZoom:t.minZoom,tileSize:t.tileSize||512});super({attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,cacheSize:t.cacheSize,interpolate:!0,opaque:!1,projection:e,state:t.state,tileGrid:n,tileLoadFunction:t.tileLoadFunction?t.tileLoadFunction:Su,tileUrlFunction:t.tileUrlFunction,url:t.url,urls:t.urls,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:void 0===t.zDirection?1:t.zDirection}),this.format_=t.format?t.format:null,this.sourceTileCache=new El(this.tileCache.highWaterMark),this.overlaps_=null==t.overlaps||t.overlaps,this.tileClass=t.tileClass?t.tileClass:Ll,this.tileGrids_={}}getFeaturesInExtent(t){const e=[],i=this.tileCache;if(0===i.getCount())return e;const n=vl(i.peekFirstKey())[0],r=this.tileGrid;return i.forEach((function(i){if(i.tileCoord[0]!==n||i.getState()!==H)return;const s=i.getSourceTiles();for(let i=0,n=s.length;i{const n=xl(e),r=i.peek(n);if(r){const e=r.sourceTiles;for(let i=0,n=e.length;i{const r=this.tileUrlFunction(n,t,e),s=this.sourceTileCache.containsKey(r)?this.sourceTileCache.get(r):new this.tileClass(n,r?q:Q,r,this.format_,this.tileLoadFunction);i.sourceTiles.push(s);const o=s.getState();if(o{this.handleTileChange(e);const n=s.getState();if(n===H||n===J){const e=s.getKey();e in i.errorTileKeys?s.getState()===H&&delete i.errorTileKeys[e]:i.loadingSourceTiles--,n===J?i.errorTileKeys[e]=!0:s.removeEventListener(v,t),0===i.loadingSourceTiles&&i.setState(y(i.errorTileKeys)?H:J)}};s.addEventListener(v,t),i.loadingSourceTiles++}o===q&&(s.extent=l.getTileCoordExtent(n),s.projection=e,s.resolution=l.getResolution(n[0]),this.sourceTileCache.set(r,s),s.load())})),i.loadingSourceTiles||i.setState(i.sourceTiles.some((t=>t.getState()===J))?J:H)}return i.sourceTiles}getTile(t,e,i,n,r){const s=_l(t,e,i),o=this.getKey();let a;if(this.tileCache.containsKey(s)&&(a=this.tileCache.get(s),a.key===o))return a;const l=[t,e,i];let h=this.getTileCoordForTileUrlFunction(l,r);const c=this.getTileGrid().getExtent(),u=this.getTileGridForProjection(r);if(h&&c){const e=u.getTileCoordExtent(h);Jt(e,-u.getResolution(t),e),Ie(c,e)||(h=null)}let d=!0;if(null!==h){const e=this.tileGrid,i=u.getResolution(t),s=e.getZForResolution(i,1),o=u.getTileCoordExtent(h);Jt(o,-i,o),e.forEachTileCoord(o,s,(t=>{d=d&&!this.tileUrlFunction(t,n,r)}))}const g=new Pl(l,d?Q:q,h,this.getSourceTiles.bind(this,n,r));return g.key=o,a?(g.interimTile=a,g.refreshInterimChain(),this.tileCache.replace(s,g)):this.tileCache.set(s,g),g}getTileGridForProjection(t){const e=t.getCode();let i=this.tileGrids_[e];if(!i){const t=this.tileGrid,n=t.getResolutions().slice(),r=n.map((function(e,i){return t.getOrigin(i)})),s=n.map((function(e,i){return t.getTileSize(i)})),o=Ds+1;for(let t=n.length;t{const s=this.loadedTileCallback.bind(this,i,n);return t.forEachLoadedTile(e,n,r,s)}}forEachFeatureAtCoordinate(t,e,i,n,r){}getLayer(){return this.layer_}handleFontsChanged(){}handleImageChange_(t){const e=t.target;e.getState()!==Yr&&e.getState()!==$r||this.renderIfReadyAndVisible()}loadImage(t){let e=t.getState();return e!=Yr&&e!=$r&&t.addEventListener(v,this.boundHandleImageChange_),e==Wr&&(t.load(),e=t.getState()),e==Yr}renderIfReadyAndVisible(){const t=this.getLayer();t&&t.getVisible()&&"ready"===t.getSourceState()&&t.changed()}disposeInternal(){delete this.layer_,super.disposeInternal()}};const bu=[];let Pu=null;var Lu=class extends Ru{constructor(t){super(t),this.container=null,this.renderedResolution,this.tempTransform=[1,0,0,1,0,0],this.pixelTransform=[1,0,0,1,0,0],this.inversePixelTransform=[1,0,0,1,0,0],this.context=null,this.containerReused=!1,this.pixelContext_=null,this.frameState=null}getImageData(t,e,i){let n;Pu||(Pu=mt(1,1,void 0,{willReadFrequently:!0})),Pu.clearRect(0,0,1,1);try{Pu.drawImage(t,e,i,1,1,0,0,1,1),n=Pu.getImageData(0,0,1,1).data}catch(t){return Pu=null,null}return n}getBackground(t){let e=this.getLayer().getBackground();return"function"==typeof e&&(e=e(t.viewState.resolution)),e||void 0}useContainer(t,e,i){const n=this.getLayer().getClassName();let r,s;if(t&&t.className===n&&(!i||t&&t.style.backgroundColor&&c(hs(t.style.backgroundColor),hs(i)))){const e=t.firstElementChild;e instanceof HTMLCanvasElement&&(s=e.getContext("2d"))}if(s&&s.canvas.style.transform===e?(this.container=t,this.context=s,this.containerReused=!0):this.containerReused?(this.container=null,this.context=null,this.containerReused=!1):this.container&&(this.container.style.backgroundColor=null),!this.container){r=document.createElement("div"),r.className=n;let t=r.style;t.position="absolute",t.width="100%",t.height="100%",s=mt();const e=s.canvas;r.appendChild(e),t=e.style,t.position="absolute",t.left="0",t.transformOrigin="top left",this.container=r,this.context=s}this.containerReused||!i||this.container.style.backgroundColor||(this.container.style.backgroundColor=i)}clipUnrotated(t,e,i){const n=Pe(i),r=Le(i),s=Se(i),o=ve(i);Bt(e.coordinateToPixelTransform,n),Bt(e.coordinateToPixelTransform,r),Bt(e.coordinateToPixelTransform,s),Bt(e.coordinateToPixelTransform,o);const a=this.inversePixelTransform;Bt(a,n),Bt(a,r),Bt(a,s),Bt(a,o),t.save(),t.beginPath(),t.moveTo(Math.round(n[0]),Math.round(n[1])),t.lineTo(Math.round(r[0]),Math.round(r[1])),t.lineTo(Math.round(s[0]),Math.round(s[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.clip()}dispatchRenderEvent_(t,e,i){const n=this.getLayer();if(n.hasListener(t)){const r=new oo(t,this.inversePixelTransform,i,e);n.dispatchEvent(r)}}preRender(t,e){this.frameState=e,this.dispatchRenderEvent_(Ps,t,e)}postRender(t,e){this.dispatchRenderEvent_(Ls,t,e)}getRenderTransform(t,e,i,n,r,s,o){const a=r/2,l=s/2,h=n/e,c=-h,u=-t[0]+o,d=-t[1];return Wt(this.tempTransform,a,l,h,c,-i,u,d)}disposeInternal(){delete this.frameState,super.disposeInternal()}};var Fu=class extends Lu{constructor(t){super(t),this.image_=null}getImage(){return this.image_?this.image_.getImage():null}prepareFrame(t){const e=t.layerStatesArray[t.layerIndex],i=t.pixelRatio,n=t.viewState,r=n.resolution,s=this.getLayer().getSource(),o=t.viewHints;let a=t.extent;if(void 0!==e.extent&&(a=be(a,xn(e.extent,n.projection))),!o[As]&&!o[Os]&&!Me(a))if(s){const t=n.projection,e=s.getImage(a,r,i,t);e&&(this.loadImage(e)?this.image_=e:e.getState()===qr&&(this.image_=null))}else this.image_=null;return!!this.image_}getData(t){const e=this.frameState;if(!e)return null;const i=this.getLayer(),n=Bt(e.pixelToCoordinateTransform,t.slice()),r=i.getExtent();if(r&&!ee(r,n))return null;const s=this.image_.getExtent(),o=this.image_.getImage(),a=Fe(s),l=Math.floor(o.width*((n[0]-s[0])/a));if(l<0||l>=o.width)return null;const h=Re(s),c=Math.floor(o.height*((s[3]-n[1])/h));return c<0||c>=o.height?null:this.getImageData(o,l,c)}renderFrame(t,e){const i=this.image_,n=i.getExtent(),r=i.getResolution(),[s,o]=Array.isArray(r)?r:[r,r],a=i.getPixelRatio(),l=t.layerStatesArray[t.layerIndex],h=t.pixelRatio,c=t.viewState,u=c.center,d=c.resolution,g=h*s/(d*a),f=h*o/(d*a),p=t.extent,m=c.resolution,_=c.rotation,y=Math.round(Fe(p)/m*h),x=Math.round(Re(p)/m*h);Wt(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/h,1/h,_,-y/2,-x/2),Zt(this.inversePixelTransform,this.pixelTransform);const v=qt(this.pixelTransform);this.useContainer(e,v,this.getBackground(t));const S=this.context,w=S.canvas;w.width!=y||w.height!=x?(w.width=y,w.height=x):this.containerReused||S.clearRect(0,0,y,x);let E=!1,T=!0;if(l.extent){const e=xn(l.extent,c.projection);T=Ie(e,t.extent),E=T&&!ie(e,t.extent),E&&this.clipUnrotated(S,t,e)}const C=i.getImage(),R=Wt(this.tempTransform,y/2,x/2,g,f,0,a*(n[0]-u[0])/s,a*(u[1]-n[3])/o);this.renderedResolution=o*h/a;const b=C.width*R[0],P=C.height*R[3];if(this.getLayer().getSource().getInterpolate()||(S.imageSmoothingEnabled=!1),this.preRender(S,t),T&&b>=.5&&P>=.5){const t=R[4],e=R[5],i=l.opacity;let n;1!==i&&(n=S.globalAlpha,S.globalAlpha=i),S.drawImage(C,0,0,+C.width,+C.height,t,e,b,P),1!==i&&(S.globalAlpha=n)}return this.postRender(S,t),E&&S.restore(),S.imageSmoothingEnabled=!0,v!==w.style.transform&&(w.style.transform=v),this.container}};var Iu=class extends Cu{constructor(t){super(t)}createRenderer(){return new Fu(this)}getData(t){return super.getData(t)}},Mu="preload",Au="useInterimTilesOnError";var Ou=class extends no{constructor(t){t=t||{};const e=Object.assign({},t);delete e.preload,delete e.useInterimTilesOnError,super(e),this.on,this.once,this.un,this.setPreload(void 0!==t.preload?t.preload:0),this.setUseInterimTilesOnError(void 0===t.useInterimTilesOnError||t.useInterimTilesOnError)}getPreload(){return this.get(Mu)}setPreload(t){this.set(Mu,t)}getUseInterimTilesOnError(){return this.get(Au)}setUseInterimTilesOnError(t){this.set(Au,t)}getData(t){return super.getData(t)}};var Nu=class extends Lu{constructor(t){super(t),this.extentChanged=!0,this.renderedExtent_=null,this.renderedPixelRatio,this.renderedProjection=null,this.renderedRevision,this.renderedTiles=[],this.newTiles_=!1,this.tmpExtent=[1/0,1/0,-1/0,-1/0],this.tmpTileRange_=new Rl(0,0,0,0)}isDrawableTile(t){const e=this.getLayer(),i=t.getState(),n=e.getUseInterimTilesOnError();return i==H||i==Q||i==J&&!n}getTile(t,e,i,n){const r=n.pixelRatio,s=n.viewState.projection,o=this.getLayer();let a=o.getSource().getTile(t,e,i,r,s);return a.getState()==J&&o.getUseInterimTilesOnError()&&o.getPreload()>0&&(this.newTiles_=!0),this.isDrawableTile(a)||(a=a.getInterimTile()),a}getData(t){const e=this.frameState;if(!e)return null;const i=this.getLayer(),n=Bt(e.pixelToCoordinateTransform,t.slice()),r=i.getExtent();if(r&&!ee(r,n))return null;const s=e.pixelRatio,o=e.viewState.projection,a=e.viewState,l=i.getRenderSource(),h=l.getTileGridForProjection(a.projection),c=l.getTilePixelRatio(e.pixelRatio);for(let t=h.getZForResolution(a.resolution);t>=h.getMinZoom();--t){const e=h.getTileCoordForCoordAndZ(n,t),i=l.getTile(t,e[1],e[2],s,o);if(!(i instanceof is||i instanceof ah)||i instanceof ah&&i.getState()===Q)return null;if(i.getState()!==H)continue;const r=h.getOrigin(t),u=sl(h.getTileSize(t)),d=h.getResolution(t),g=Math.floor(c*((n[0]-r[0])/d-e[1]*u[0])),f=Math.floor(c*((r[1]-n[1])/d-e[2]*u[1])),p=Math.round(c*l.getGutterForProjection(a.projection));return this.getImageData(i.getImage(),g+p,f+p)}return null}loadedTileCallback(t,e,i){return!!this.isDrawableTile(i)&&super.loadedTileCallback(t,e,i)}prepareFrame(t){return!!this.getLayer().getSource()}renderFrame(t,e){const i=t.layerStatesArray[t.layerIndex],n=t.viewState,r=n.projection,o=n.resolution,a=n.center,l=n.rotation,h=t.pixelRatio,c=this.getLayer(),u=c.getSource(),d=u.getRevision(),g=u.getTileGridForProjection(r),f=g.getZForResolution(o,u.zDirection),p=g.getResolution(f);let m=t.extent;const _=t.viewState.resolution,y=u.getTilePixelRatio(h),x=Math.round(Fe(m)/_*h),v=Math.round(Re(m)/_*h),S=i.extent&&xn(i.extent,r);S&&(m=be(m,xn(i.extent,r)));const w=p*x/2/y,E=p*v/2/y,T=[a[0]-w,a[1]-E,a[0]+w,a[1]+E],C=g.getTileRangeForExtentAndZ(m,f),R={};R[f]={};const b=this.createLoadedTileFinder(u,r,R),P=this.tmpExtent,L=this.tmpTileRange_;this.newTiles_=!1;const F=l?Ce(n.center,_,l,t.size):void 0;for(let e=C.minX;e<=C.maxX;++e)for(let n=C.minY;n<=C.maxY;++n){if(l&&!g.tileCoordIntersectsViewport([f,e,n],F))continue;const r=this.getTile(f,e,n,t);if(this.isDrawableTile(r)){const e=U(this);if(r.getState()==H){R[f][r.tileCoord.toString()]=r;let t=r.inTransition(e);t&&1!==i.opacity&&(r.endTransition(e),t=!1),this.newTiles_||!t&&this.renderedTiles.includes(r)||(this.newTiles_=!0)}if(1===r.getAlpha(e,t.time))continue}const s=g.getTileCoordChildTileRange(r.tileCoord,L,P);let o=!1;s&&(o=b(f+1,s)),o||g.forEachTileCoordParentTileRange(r.tileCoord,b,L,P)}const I=p/o*h/y;Wt(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/h,1/h,l,-x/2,-v/2);const M=qt(this.pixelTransform);this.useContainer(e,M,this.getBackground(t));const A=this.context,O=A.canvas;Zt(this.inversePixelTransform,this.pixelTransform),Wt(this.tempTransform,x/2,v/2,I,I,0,-x/2,-v/2),O.width!=x||O.height!=v?(O.width=x,O.height=v):this.containerReused||A.clearRect(0,0,x,v),S&&this.clipUnrotated(A,t,S),u.getInterpolate()||(A.imageSmoothingEnabled=!1),this.preRender(A,t),this.renderedTiles.length=0;let N,D,k,G=Object.keys(R).map(Number);G.sort(s),1!==i.opacity||this.containerReused&&!u.getOpaque(t.viewState.projection)?(N=[],D=[]):G=G.reverse();for(let e=G.length-1;e>=0;--e){const i=G[e],n=u.getTilePixelSize(i,h,r),s=g.getResolution(i)/p,o=n[0]*s*I,a=n[1]*s*I,l=g.getTileCoordForCoordAndZ(Pe(T),i),c=g.getTileCoordExtent(l),d=Bt(this.tempTransform,[y*(c[0]-T[0])/p,y*(T[3]-c[3])/p]),m=y*u.getGutterForProjection(r),_=R[i];for(const e in _){const n=_[e],r=n.tileCoord,s=l[1]-r[1],h=Math.round(d[0]-(s-1)*o),c=l[2]-r[2],g=Math.round(d[1]-(c-1)*a),p=Math.round(d[0]-s*o),y=Math.round(d[1]-c*a),x=h-p,v=g-y,S=f===i,w=S&&1!==n.getAlpha(U(this),t.time);let E=!1;if(!w)if(N){k=[p,y,p+x,y,p+x,y+v,p,y+v];for(let t=0,e=N.length;tthis._maxQueueLength;)this._queue.shift().callback(null,null)}_dispatch(){if(this._running||0===this._queue.length)return;const t=this._queue.shift();this._job=t;const e=t.inputs[0].width,i=t.inputs[0].height,n=t.inputs.map((function(t){return t.data.buffer})),r=this._workers.length;if(this._running=r,1===r)return void this._workers[0].postMessage({buffers:n,meta:t.meta,imageOps:this._imageOps,width:e,height:i},n);const s=t.inputs[0].data.length,o=4*Math.ceil(s/4/r);for(let s=0;sStadia Maps','© OpenMapTiles',Eu];t.layer.startsWith("stamen_")&&l.splice(1,0,'© Stamen Design'),super({attributions:l,cacheSize:t.cacheSize,crossOrigin:"anonymous",interpolate:t.interpolate,maxZoom:void 0!==t.maxZoom?t.maxZoom:n.maxZoom,minZoom:void 0!==t.minZoom?t.minZoom:n.minZoom,opaque:r.opaque,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileLoadFunction:t.tileLoadFunction,transition:t.transition,url:a,tilePixelRatio:o?2:1,wrapX:t.wrapX,zDirection:t.zDirection})}};var td=class extends Mh{constructor(t){super({attributions:(t=t||{}).attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:t.projection,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileGrid:t.tileGrid,tileLoadFunction:t.tileLoadFunction,url:t.url,urls:t.urls,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.params_=t.params||{},this.hidpi_=void 0===t.hidpi||t.hidpi,this.tmpExtent_=[1/0,1/0,-1/0,-1/0],this.setKey(this.getKeyForParams_())}getKeyForParams_(){let t=0;const e=[];for(const i in this.params_)e[t++]=i+"-"+this.params_[i];return e.join("/")}getParams(){return this.params_}getRequestUrl_(t,e,i,n,r,s){const o=this.urls;if(!o)return;let a;if(1==o.length)a=o[0];else{a=o[_i(Sl(t),o.length)]}return Hc(a,i,(this.tileGrid||this.getTileGridForProjection(r)).getResolution(t[0]),n,r,s)}getTilePixelRatio(t){return this.hidpi_?t:1}updateParams(t){Object.assign(this.params_,t),this.setKey(this.getKeyForParams_())}tileUrlFunction(t,e,i){let n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(i)),n.getResolutions().length<=t[0])return;1==e||this.hidpi_||(e=1);const r=n.getTileCoordExtent(t,this.tmpExtent_);let s=sl(n.getTileSize(t[0]),this.tmpSize);1!=e&&(s=rl(s,e,this.tmpSize));const o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return Object.assign(o,this.params_),this.getRequestUrl_(t,s,r,e,i,o)}};var ed=class extends Nh{constructor(t){super({opaque:!1,projection:(t=t||{}).projection,tileGrid:t.tileGrid,wrapX:void 0===t.wrapX||t.wrapX,zDirection:t.zDirection,url:t.template||"z:{z} x:{x} y:{y}",tileLoadFunction:(t,e)=>{const i=t.getTileCoord()[0],n=sl(this.tileGrid.getTileSize(i)),r=mt(n[0],n[1]);r.strokeStyle="grey",r.strokeRect(.5,.5,n[0]+.5,n[1]+.5),r.fillStyle="grey",r.strokeStyle="white",r.textAlign="center",r.textBaseline="middle",r.font="24px sans-serif",r.lineWidth=4,r.strokeText(e,n[0]/2,n[1]/2,n[0]),r.fillText(e,n[0]/2,n[1]/2,n[0]),t.setImage(r.canvas)}})}};var id=class extends Mh{constructor(t){if(super({attributions:t.attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:tn("EPSG:3857"),reprojectionErrorThreshold:t.reprojectionErrorThreshold,state:"loading",tileLoadFunction:t.tileLoadFunction,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.tileJSON_=null,this.tileSize_=t.tileSize,t.url)if(t.jsonp)Dl(t.url,this.handleTileJSONResponse.bind(this),this.handleTileJSONError.bind(this));else{const e=new XMLHttpRequest;e.addEventListener("load",this.onXHRLoad_.bind(this)),e.addEventListener("error",this.onXHRError_.bind(this)),e.open("GET",t.url),e.send()}else{if(!t.tileJSON)throw new Error("Either `url` or `tileJSON` options must be provided");this.handleTileJSONResponse(t.tileJSON)}}onXHRLoad_(t){const e=t.target;if(!e.status||e.status>=200&&e.status<300){let t;try{t=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(t)}else this.handleTileJSONError()}onXHRError_(t){this.handleTileJSONError()}getTileJSON(){return this.tileJSON_}handleTileJSONResponse(t){const e=tn("EPSG:4326"),i=this.getProjection();let n;if(void 0!==t.bounds){const r=hn(e,i);n=De(t.bounds,r)}const r=Sh(i),s=t.minzoom||0,o=yh({extent:r,maxZoom:t.maxzoom||22,minZoom:s,tileSize:this.tileSize_});if(this.tileGrid=o,this.tileUrlFunction=Ch(t.tiles,o),t.attribution&&!this.getAttributions()){const e=void 0!==n?n:r;this.setAttributions((function(i){return Ie(e,i.extent)?[t.attribution]:null}))}this.tileJSON_=t,this.setState("ready")}handleTileJSONError(){this.setState("error")}};var nd=class extends Mh{constructor(t){t=t||{};const e=Object.assign({},t.params),i=!("TRANSPARENT"in e)||e.TRANSPARENT;super({attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,opaque:!i,projection:t.projection,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileClass:t.tileClass,tileGrid:t.tileGrid,tileLoadFunction:t.tileLoadFunction,url:t.url,urls:t.urls,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.gutter_=void 0!==t.gutter?t.gutter:0,this.params_=e,this.v13_=!0,this.serverType_=t.serverType,this.hidpi_=void 0===t.hidpi||t.hidpi,this.tmpExtent_=[1/0,1/0,-1/0,-1/0],this.updateV13_(),this.setKey(this.getKeyForParams_())}getFeatureInfoUrl(t,e,i,n){const r=tn(i),s=this.getProjection()||r;let o=this.getTileGrid();o||(o=this.getTileGridForProjection(s));const a=un(t,r,s),l=eh(s,r,t,e),h=o.getZForResolution(l,this.zDirection),c=o.getResolution(h),u=o.getTileCoordForCoordAndZ(a,h);if(o.getResolutions().length<=u[0])return;let d=o.getTileCoordExtent(u,this.tmpExtent_);const g=this.gutter_;0!==g&&(d=Jt(d,c*g,d));const f={QUERY_LAYERS:this.params_.LAYERS};Object.assign(f,hu(this.params_,"GetFeatureInfo"),n);const p=Math.floor((a[0]-d[0])/c),m=Math.floor((d[3]-a[1])/c);return f[this.v13_?"I":"X"]=p,f[this.v13_?"J":"Y"]=m,this.getRequestUrl_(u,d,1,s||r,f)}getLegendUrl(t,e){if(void 0===this.urls[0])return;const i={SERVICE:"WMS",VERSION:ou,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){const t=this.params_.LAYERS;if(!(!Array.isArray(t)||1===t.length))return;i.LAYER=t}if(void 0!==t){const e=this.getProjection()?this.getProjection().getMetersPerUnit():1,n=28e-5;i.SCALE=t*e/n}return Object.assign(i,e),Kc(this.urls[0],i)}getGutter(){return this.gutter_}getParams(){return this.params_}getRequestUrl_(t,e,i,n,r){const s=this.urls;if(!s)return;let o;if(1==s.length)o=s[0];else{o=s[_i(Sl(t),s.length)]}return lu(e,(this.tileGrid||this.getTileGridForProjection(n)).getResolution(t[0]),i,n,o,r,this.serverType_)}getTilePixelRatio(t){return this.hidpi_&&void 0!==this.serverType_?t:1}getKeyForParams_(){let t=0;const e=[];for(const i in this.params_)e[t++]=i+"-"+this.params_[i];return e.join("/")}updateParams(t){Object.assign(this.params_,t),this.updateV13_(),this.setKey(this.getKeyForParams_())}updateV13_(){const t=this.params_.VERSION||ou;this.v13_=Ti(t,"1.3")>=0}tileUrlFunction(t,e,i){let n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(i)),n.getResolutions().length<=t[0])return;1==e||this.hidpi_&&void 0!==this.serverType_||(e=1);const r=n.getResolution(t[0]);let s=n.getTileCoordExtent(t,this.tmpExtent_);const o=this.gutter_;0!==o&&(s=Jt(s,r*o,s));const a=Object.assign({},hu(this.params_,"GetMap"));return this.getRequestUrl_(t,s,e,i,a)}};class rd extends rt{constructor(t,e,i,n,r,s){super(t,e),this.src_=i,this.extent_=n,this.preemptive_=r,this.grid_=null,this.keys_=null,this.data_=null,this.jsonp_=s}getImage(){return null}getData(t){if(!this.grid_||!this.keys_)return null;const e=(t[0]-this.extent_[0])/(this.extent_[2]-this.extent_[0]),i=(t[1]-this.extent_[1])/(this.extent_[3]-this.extent_[1]),n=this.grid_[Math.floor((1-i)*this.grid_.length)];if("string"!=typeof n)return null;let r=n.charCodeAt(Math.floor(e*n.length));r>=93&&r--,r>=35&&r--,r-=32;let s=null;if(r in this.keys_){const t=this.keys_[r];s=this.data_&&t in this.data_?this.data_[t]:t}return s}forDataAtCoordinate(t,e,i){this.state==Q&&!0===i?(this.state=q,O(this,v,(function(i){e(this.getData(t))}),this),this.loadInternal_()):!0===i?setTimeout((()=>{e(this.getData(t))}),0):e(this.getData(t))}getKey(){return this.src_}handleError_(){this.state=J,this.changed()}handleLoad_(t){this.grid_=t.grid,this.keys_=t.keys,this.data_=t.data,this.state=H,this.changed()}loadInternal_(){if(this.state==q)if(this.state=K,this.jsonp_)Dl(this.src_,this.handleLoad_.bind(this),this.handleError_.bind(this));else{const t=new XMLHttpRequest;t.addEventListener("load",this.onXHRLoad_.bind(this)),t.addEventListener("error",this.onXHRError_.bind(this)),t.open("GET",this.src_),t.send()}}onXHRLoad_(t){const e=t.target;if(!e.status||e.status>=200&&e.status<300){let t;try{t=JSON.parse(e.responseText)}catch(t){return void this.handleError_()}this.handleLoad_(t)}else this.handleError_()}onXHRError_(t){this.handleError_()}load(){this.preemptive_?this.loadInternal_():this.setState(Q)}}var sd=class extends Eh{constructor(t){if(super({projection:tn("EPSG:3857"),state:"loading",zDirection:t.zDirection}),this.preemptive_=void 0===t.preemptive||t.preemptive,this.tileUrlFunction_=bh,this.template_=void 0,this.jsonp_=t.jsonp||!1,t.url)if(this.jsonp_)Dl(t.url,this.handleTileJSONResponse.bind(this),this.handleTileJSONError.bind(this));else{const e=new XMLHttpRequest;e.addEventListener("load",this.onXHRLoad_.bind(this)),e.addEventListener("error",this.onXHRError_.bind(this)),e.open("GET",t.url),e.send()}else{if(!t.tileJSON)throw new Error("Either `url` or `tileJSON` options must be provided");this.handleTileJSONResponse(t.tileJSON)}}onXHRLoad_(t){const e=t.target;if(!e.status||e.status>=200&&e.status<300){let t;try{t=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(t)}else this.handleTileJSONError()}onXHRError_(t){this.handleTileJSONError()}getTemplate(){return this.template_}forDataAtCoordinateAndResolution(t,e,i,n){if(this.tileGrid){const r=this.tileGrid.getZForResolution(e,this.zDirection),s=this.tileGrid.getTileCoordForCoordAndZ(t,r);this.getTile(s[0],s[1],s[2],1,this.getProjection()).forDataAtCoordinate(t,i,n)}else!0===n?setTimeout((function(){i(null)}),0):i(null)}handleTileJSONError(){this.setState("error")}handleTileJSONResponse(t){const e=tn("EPSG:4326"),i=this.getProjection();let n;if(void 0!==t.bounds){const r=hn(e,i);n=De(t.bounds,r)}const r=Sh(i),s=t.minzoom||0,o=yh({extent:r,maxZoom:t.maxzoom||22,minZoom:s});this.tileGrid=o,this.template_=t.template;const a=t.grids;if(a){if(this.tileUrlFunction_=Ch(a,o),void 0!==t.attribution){const e=void 0!==n?n:r;this.setAttributions((function(i){return Ie(e,i.extent)?[t.attribution]:null}))}this.setState("ready")}else this.setState("error")}getTile(t,e,i,n,r){const s=_l(t,e,i);if(this.tileCache.containsKey(s))return this.tileCache.get(s);const o=[t,e,i],a=this.getTileCoordForTileUrlFunction(o,r),l=this.tileUrlFunction_(a,n,r),h=new rd(o,void 0!==l?q:Q,void 0!==l?l:"",this.tileGrid.getTileCoordExtent(o),this.preemptive_,this.jsonp_);return this.tileCache.set(s,h),h}useTile(t,e,i){const n=_l(t,e,i);this.tileCache.containsKey(n)&&this.tileCache.get(n)}};class od extends fh{constructor(t){super({extent:t.extent,origin:t.origin,origins:t.origins,resolutions:t.resolutions,tileSize:t.tileSize,tileSizes:t.tileSizes,sizes:t.sizes}),this.matrixIds_=t.matrixIds}getMatrixId(t){return this.matrixIds_[t]}getMatrixIds(){return this.matrixIds_}}var ad=od;function ld(t,e,i){const n=[],r=[],s=[],o=[],a=[];i=void 0!==i?i:[];const l="TileMatrix",h="Identifier",c="ScaleDenominator",u="TopLeftCorner",d=tn(t.SupportedCRS),g=d.getMetersPerUnit(),f="ne"==d.getAxisOrientation().substr(0,2);return t[l].sort((function(t,e){return e[c]-t[c]})),t[l].forEach((function(e){let d;if(d=!(i.length>0)||i.find((function(i){return e[h]==i[l]||!e[h].includes(":")&&t[h]+":"+e[h]===i[l]})),d){r.push(e[h]);const t=28e-5*e[c]/g,i=e.TileWidth,l=e.TileHeight;f?s.push([e[u][1],e[u][0]]):s.push(e[u]),n.push(t),o.push(i==l?i:[i,l]),a.push([e.MatrixWidth,e.MatrixHeight])}})),new od({extent:e,origins:s,resolutions:n,matrixIds:r,tileSizes:o,sizes:a})}var hd=class extends Mh{constructor(t){const e=void 0!==t.requestEncoding?t.requestEncoding:"KVP",i=t.tileGrid;let n=t.urls;void 0===n&&void 0!==t.url&&(n=Ph(t.url)),super({attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:t.projection,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileClass:t.tileClass,tileGrid:i,tileLoadFunction:t.tileLoadFunction,tilePixelRatio:t.tilePixelRatio,urls:n,wrapX:void 0!==t.wrapX&&t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.version_=void 0!==t.version?t.version:"1.0.0",this.format_=void 0!==t.format?t.format:"image/jpeg",this.dimensions_=void 0!==t.dimensions?t.dimensions:{},this.layer_=t.layer,this.matrixSet_=t.matrixSet,this.style_=t.style,this.requestEncoding_=e,this.setKey(this.getKeyForDimensions_()),n&&n.length>0&&(this.tileUrlFunction=Rh(n.map(this.createFromWMTSTemplate.bind(this))))}setUrls(t){this.urls=t;const e=t.join("\n");this.setTileUrlFunction(Rh(t.map(this.createFromWMTSTemplate.bind(this))),e)}getDimensions(){return this.dimensions_}getFormat(){return this.format_}getLayer(){return this.layer_}getMatrixSet(){return this.matrixSet_}getRequestEncoding(){return this.requestEncoding_}getStyle(){return this.style_}getVersion(){return this.version_}getKeyForDimensions_(){const t=this.urls?this.urls.slice(0):[];for(const e in this.dimensions_)t.push(e+"-"+this.dimensions_[e]);return t.join("/")}updateDimensions(t){Object.assign(this.dimensions_,t),this.setKey(this.getKeyForDimensions_())}createFromWMTSTemplate(t){const e=this.requestEncoding_,i={layer:this.layer_,style:this.style_,tilematrixset:this.matrixSet_};"KVP"==e&&Object.assign(i,{Service:"WMTS",Request:"GetTile",Version:this.version_,Format:this.format_}),t="KVP"==e?Kc(t,i):t.replace(/\{(\w+?)\}/g,(function(t,e){return e.toLowerCase()in i?i[e.toLowerCase()]:t}));const n=this.tileGrid,r=this.dimensions_;return function(i,s,o){if(!i)return;const a={TileMatrix:n.getMatrixId(i[0]),TileCol:i[1],TileRow:i[2]};Object.assign(a,r);let l=t;return l="KVP"==e?Kc(l,a):l.replace(/\{(\w+?)\}/g,(function(t,e){return a[e]})),l}}};const cd=34962,ud=34963,dd=35044,gd=35048,fd=5126,pd=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function md(t,e){e=Object.assign({preserveDrawingBuffer:!0,antialias:!lt},e);const i=pd.length;for(let n=0;n{this.uniforms_.push({value:t.uniforms[i],location:e.getUniformLocation(this.renderTargetProgram_,i)})}))}getGL(){return this.gl_}init(t){const e=this.getGL(),i=[e.drawingBufferWidth*this.scaleRatio_,e.drawingBufferHeight*this.scaleRatio_];if(e.bindFramebuffer(e.FRAMEBUFFER,this.getFrameBuffer()),e.bindRenderbuffer(e.RENDERBUFFER,this.getDepthBuffer()),e.viewport(0,0,i[0],i[1]),!this.renderTargetTextureSize_||this.renderTargetTextureSize_[0]!==i[0]||this.renderTargetTextureSize_[1]!==i[1]){this.renderTargetTextureSize_=i;const t=0,n=e.RGBA,r=0,s=e.RGBA,o=e.UNSIGNED_BYTE,a=null;e.bindTexture(e.TEXTURE_2D,this.renderTargetTexture_),e.texImage2D(e.TEXTURE_2D,t,n,i[0],i[1],r,s,o,a),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.renderTargetTexture_,0),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,i[0],i[1]),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,this.depthBuffer_)}}apply(t,e,i,n){const r=this.getGL(),s=t.size;if(r.bindFramebuffer(r.FRAMEBUFFER,e?e.getFrameBuffer():null),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.renderTargetTexture_),!e){const e=U(r.canvas);if(!t.renderTargets[e]){const i=r.getContextAttributes();i&&i.preserveDrawingBuffer&&(r.clearColor(0,0,0,0),r.clearDepth(1),r.clear(r.COLOR_BUFFER_BIT|r.DEPTH_BUFFER_BIT)),t.renderTargets[e]=!0}}r.disable(r.DEPTH_TEST),r.enable(r.BLEND),r.blendFunc(r.ONE,r.ONE_MINUS_SRC_ALPHA),r.viewport(0,0,r.drawingBufferWidth,r.drawingBufferHeight),r.bindBuffer(r.ARRAY_BUFFER,this.renderTargetVerticesBuffer_),r.useProgram(this.renderTargetProgram_),r.enableVertexAttribArray(this.renderTargetAttribLocation_),r.vertexAttribPointer(this.renderTargetAttribLocation_,2,r.FLOAT,!1,0,0),r.uniform2f(this.renderTargetUniformLocation_,s[0],s[1]),r.uniform1i(this.renderTargetTextureLocation_,0);const o=t.layerStatesArray[t.layerIndex].opacity;r.uniform1f(this.renderTargetOpacityLocation_,o),this.applyUniforms(t),i&&i(r,t),r.drawArrays(r.TRIANGLES,0,6),n&&n(r,t)}getFrameBuffer(){return this.frameBuffer_}getDepthBuffer(){return this.depthBuffer_}applyUniforms(t){const e=this.getGL();let i,n=1;this.uniforms_.forEach((function(r){if(i="function"==typeof r.value?r.value(t):r.value,i instanceof HTMLCanvasElement||i instanceof ImageData)r.texture||(r.texture=e.createTexture()),e.activeTexture(e[`TEXTURE${n}`]),e.bindTexture(e.TEXTURE_2D,r.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),i instanceof ImageData?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,i.width,i.height,0,e.UNSIGNED_BYTE,new Uint8Array(i.data)):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,i),e.uniform1i(r.location,n++);else if(Array.isArray(i))switch(i.length){case 2:return void e.uniform2f(r.location,i[0],i[1]);case 3:return void e.uniform3f(r.location,i[0],i[1],i[2]);case 4:return void e.uniform4f(r.location,i[0],i[1],i[2],i[3]);default:return}else"number"==typeof i&&e.uniform1f(r.location,i)}))}};function Hd(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Jd(t,e){return t[0]=e[0],t[1]=e[1],t[4]=e[2],t[5]=e[3],t[12]=e[4],t[13]=e[5],t}const Qd={PROJECTION_MATRIX:"u_projectionMatrix",SCREEN_TO_WORLD_MATRIX:"u_screenToWorldMatrix",TIME:"u_time",ZOOM:"u_zoom",RESOLUTION:"u_resolution",ROTATION:"u_rotation",VIEWPORT_SIZE_PX:"u_viewportSizePx",PIXEL_RATIO:"u_pixelRatio",HIT_DETECTION:"u_hitDetection"},tg={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:fd},eg={};function ig(t){return"shared/"+t}let ng=0;function rg(t){let e=0;for(let i=0;inew Kd({webGlContext:this.gl_,scaleRatio:t.scaleRatio,vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms}))):[new Kd({webGlContext:this.gl_})],this.shaderCompileErrors_=null,this.startTime_=Date.now()}setUniforms(t){this.uniforms_=[],this.addUniforms(t)}addUniforms(t){for(const e in t)this.uniforms_.push({name:e,value:t[e]})}canvasCacheKeyMatches(t){return this.canvasCacheKey_===ig(t)}getExtension(t){if(t in this.extensionCache_)return this.extensionCache_[t];const e=this.gl_.getExtension(t);return this.extensionCache_[t]=e,e}bindBuffer(t){const e=this.gl_,i=U(t);let n=this.bufferCache_[i];if(!n){n={buffer:t,webGlBuffer:e.createBuffer()},this.bufferCache_[i]=n}e.bindBuffer(t.getType(),n.webGlBuffer)}flushBufferData(t){const e=this.gl_;this.bindBuffer(t),e.bufferData(t.getType(),t.getArray(),t.getUsage())}deleteBuffer(t){const e=this.gl_,i=U(t),n=this.bufferCache_[i];n&&!e.isContextLost()&&e.deleteBuffer(n.webGlBuffer),delete this.bufferCache_[i]}disposeInternal(){const t=this.gl_.canvas;t.removeEventListener($d,this.boundHandleWebGLContextLost_),t.removeEventListener(qd,this.boundHandleWebGLContextRestored_),function(t){const e=eg[t];if(!e)return;if(e.users-=1,e.users>0)return;const i=e.context,n=i.getExtension("WEBGL_lose_context");n&&n.loseContext();const r=i.canvas;r.width=1,r.height=1,delete eg[t]}(this.canvasCacheKey_),delete this.gl_}prepareDraw(t,e,i){const n=this.gl_,r=this.getCanvas(),s=t.size,o=t.pixelRatio;r.width===s[0]*o&&r.height===s[1]*o||(r.width=s[0]*o,r.height=s[1]*o,r.style.width=s[0]+"px",r.style.height=s[1]+"px");for(let e=this.postProcessPasses_.length-1;e>=0;e--)this.postProcessPasses_[e].init(t);n.bindTexture(n.TEXTURE_2D,null),n.clearColor(0,0,0,0),n.depthRange(0,1),n.clearDepth(1),n.clear(n.COLOR_BUFFER_BIT|n.DEPTH_BUFFER_BIT),n.enable(n.BLEND),n.blendFunc(n.ONE,e?n.ZERO:n.ONE_MINUS_SRC_ALPHA),i?(n.enable(n.DEPTH_TEST),n.depthFunc(n.LEQUAL)):n.disable(n.DEPTH_TEST)}bindTexture(t,e,i){const n=this.gl_;n.activeTexture(n.TEXTURE0+e),n.bindTexture(n.TEXTURE_2D,t),n.uniform1i(this.getUniformLocation(i),e)}prepareDrawToRenderTarget(t,e,i,n){const r=this.gl_,s=e.getSize();r.bindFramebuffer(r.FRAMEBUFFER,e.getFramebuffer()),r.bindRenderbuffer(r.RENDERBUFFER,e.getDepthbuffer()),r.viewport(0,0,s[0],s[1]),r.bindTexture(r.TEXTURE_2D,e.getTexture()),r.clearColor(0,0,0,0),r.depthRange(0,1),r.clearDepth(1),r.clear(r.COLOR_BUFFER_BIT|r.DEPTH_BUFFER_BIT),r.enable(r.BLEND),r.blendFunc(r.ONE,i?r.ZERO:r.ONE_MINUS_SRC_ALPHA),n?(r.enable(r.DEPTH_TEST),r.depthFunc(r.LEQUAL)):r.disable(r.DEPTH_TEST)}drawElements(t,e){const i=this.gl_;this.getExtension("OES_element_index_uint");const n=i.UNSIGNED_INT,r=e-t,s=4*t;i.drawElements(i.TRIANGLES,r,n,s)}finalizeDraw(t,e,i){for(let n=0,r=this.postProcessPasses_.length;n{if(i="function"==typeof r.value?r.value(t):r.value,i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof ImageData){r.texture||(r.prevValue=void 0,r.texture=e.createTexture()),this.bindTexture(r.texture,n,r.name),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);(!(i instanceof HTMLImageElement)||i.complete)&&r.prevValue!==i&&(r.prevValue=i,e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,i)),n++}else if(Array.isArray(i)&&6===i.length)this.setUniformMatrixValue(r.name,Jd(this.tmpMat4_,i));else if(Array.isArray(i)&&i.length<=4)switch(i.length){case 2:return void e.uniform2f(this.getUniformLocation(r.name),i[0],i[1]);case 3:return void e.uniform3f(this.getUniformLocation(r.name),i[0],i[1],i[2]);case 4:return void e.uniform4f(this.getUniformLocation(r.name),i[0],i[1],i[2],i[3]);default:return}else"number"==typeof i&&e.uniform1f(this.getUniformLocation(r.name),i)}))}useProgram(t,e){this.gl_.useProgram(t),this.currentProgram_=t,this.applyFrameState(e),this.applyUniforms(e)}compileShader(t,e){const i=this.gl_,n=i.createShader(e);return i.shaderSource(n,t),i.compileShader(n),n}getProgram(t,e){const i=this.gl_,n=this.compileShader(t,i.FRAGMENT_SHADER),r=this.compileShader(e,i.VERTEX_SHADER),s=i.createProgram();if(i.attachShader(s,n),i.attachShader(s,r),i.linkProgram(s),!i.getShaderParameter(n,i.COMPILE_STATUS)){const t=`Fragment shader compilation failed: ${i.getShaderInfoLog(n)}`;throw new Error(t)}if(i.deleteShader(n),!i.getShaderParameter(r,i.COMPILE_STATUS)){const t=`Vertex shader compilation failed: ${i.getShaderInfoLog(r)}`;throw new Error(t)}if(i.deleteShader(r),!i.getProgramParameter(s,i.LINK_STATUS)){const t=`GL program linking failed: ${i.getProgramInfoLog(s)}`;throw new Error(t)}return s}getUniformLocation(t){const e=U(this.currentProgram_);return void 0===this.uniformLocationsByProgram_[e]&&(this.uniformLocationsByProgram_[e]={}),void 0===this.uniformLocationsByProgram_[e][t]&&(this.uniformLocationsByProgram_[e][t]=this.gl_.getUniformLocation(this.currentProgram_,t)),this.uniformLocationsByProgram_[e][t]}getAttributeLocation(t){const e=U(this.currentProgram_);return void 0===this.attribLocationsByProgram_[e]&&(this.attribLocationsByProgram_[e]={}),void 0===this.attribLocationsByProgram_[e][t]&&(this.attribLocationsByProgram_[e][t]=this.gl_.getAttribLocation(this.currentProgram_,t)),this.attribLocationsByProgram_[e][t]}makeProjectionTransform(t,e){const i=t.size,n=t.viewState.rotation,r=t.viewState.resolution,s=t.viewState.center;return Wt(e,0,0,2/(r*i[0]),2/(r*i[1]),-n,-s[0],-s[1]),e}setUniformFloatValue(t,e){this.gl_.uniform1f(this.getUniformLocation(t),e)}setUniformFloatVec2(t,e){this.gl_.uniform2fv(this.getUniformLocation(t),e)}setUniformFloatVec4(t,e){this.gl_.uniform4fv(this.getUniformLocation(t),e)}setUniformMatrixValue(t,e){this.gl_.uniformMatrix4fv(this.getUniformLocation(t),!1,e)}enableAttributeArray_(t,e,i,n,r){const s=this.getAttributeLocation(t);s<0||(this.gl_.enableVertexAttribArray(s),this.gl_.vertexAttribPointer(s,e,i,!1,n,r))}enableAttributes(t){const e=rg(t);let i=0;for(let n=0;nthis.size_[0]||e>=this.size_[1])return lg[0]=0,lg[1]=0,lg[2]=0,lg[3]=0,lg;this.readAll();const i=Math.floor(t)+(this.size_[1]-Math.floor(e)-1)*this.size_[0];return lg[0]=this.data_[4*i],lg[1]=this.data_[4*i+1],lg[2]=this.data_[4*i+2],lg[3]=this.data_[4*i+3],lg}getTexture(){return this.texture_}getFramebuffer(){return this.framebuffer_}getDepthbuffer(){return this.depthbuffer_}updateSize_(){const t=this.size_,e=this.helper_.getGL();this.texture_=this.helper_.createTexture(t,null,this.texture_),e.bindFramebuffer(e.FRAMEBUFFER,this.framebuffer_),e.viewport(0,0,t[0],t[1]),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.texture_,0),e.bindRenderbuffer(e.RENDERBUFFER,this.depthbuffer_),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,t[0],t[1]),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,this.depthbuffer_),this.data_=new Uint8Array(t[0]*t[1]*4)}};function cg(t,e,i){const n=i?t.LINEAR:t.NEAREST;t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,n)}function ug(t,e,i,n,r,s){const o=t.getGL();let a,l;if(i instanceof Float32Array){a=o.FLOAT,t.getExtension("OES_texture_float");l=null!==t.getExtension("OES_texture_float_linear")}else a=o.UNSIGNED_BYTE,l=!0;cg(o,e,s&&l);const h=i.byteLength/n[1];let c,u=1;switch(h%8==0?u=8:h%4==0?u=4:h%2==0&&(u=2),r){case 1:c=o.LUMINANCE;break;case 2:c=o.LUMINANCE_ALPHA;break;case 3:c=o.RGB;break;case 4:c=o.RGBA;break;default:throw new Error(`Unsupported number of bands: ${r}`)}const d=o.getParameter(o.UNPACK_ALIGNMENT);o.pixelStorei(o.UNPACK_ALIGNMENT,u),o.texImage2D(o.TEXTURE_2D,0,c,n[0],n[1],0,c,a,i),o.pixelStorei(o.UNPACK_ALIGNMENT,d)}let dg=null;var gg=class extends Vd{constructor(t){super(t),this.textures=[],this.renderSize_=sl(t.grid.getTileSize(t.tile.tileCoord[0])),this.bandCount=NaN;const e=new Yd(cd,dd);e.fromArray([0,1,1,1,1,0,0,0]),this.helper_.flushBufferData(e),this.coords=e,this.setTile(t.tile)}uploadTile(){const t=this.helper_,e=t.getGL(),i=this.tile;let n;this.textures.length=0,n=i instanceof is||i instanceof ah?i.getImage():i.getData();const r=Tt(n);if(r){const t=e.createTexture();return this.textures.push(t),this.bandCount=4,function(t,e,i,n){cg(t,e,n),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,i)}(e,t,r,i.interpolate),void this.setReady()}n=Ct(n);const s=i.getSize(),o=[s[0]+2*this.gutter_,s[1]+2*this.gutter_],a=n instanceof Float32Array,l=o[0]*o[1],h=a?Float32Array:Uint8Array,c=h.BYTES_PER_ELEMENT,u=n.byteLength/o[1];this.bandCount=Math.floor(u/c/o[0]);const d=Math.ceil(this.bandCount/4);if(1===d){const r=e.createTexture();return this.textures.push(r),ug(t,r,n,o,this.bandCount,i.interpolate),void this.setReady()}const g=new Array(d);for(let t=0;t=f;--r){const i=l.getTileRangeForExtentAndZ(e,r,this.tempTileRange_),o=l.getResolution(r);for(let e=i.minX;e<=i.maxX;++e)for(let g=i.minY;g<=i.maxY;++g){const i=ml(r,e,g,this.tempTileCoord_),f=wg(a,i);let p,m;if(d.containsKey(f)&&(p=d.get(f),m=p.tile),p&&p.tile.key===a.getKey()||(m=a.getTile(r,e,g,t.pixelRatio,s.projection)),xg(n,m))continue;if(p)if(this.isDrawableTile_(m))p.setTile(m);else{const t=m.getInterimTile();p.setTile(t)}else p=this.createTileRepresentation({tile:m,grid:l,helper:this.helper,gutter:h}),d.set(f,p);vg(n,p,r);const _=m.getKey();u[_]=!0,m.getState()===q&&(t.tileQueue.isKeyQueued(_)||t.tileQueue.enqueue([m,c,l.getTileCoordCenter(i),o]))}}}beforeTilesRender(t,e){this.helper.prepareDraw(this.frameState,!e,!0)}renderTile(t,e,i,n,r,s,o,a,l,h,c){}drawTile_(t,e,i,n,r,s,o){if(!e.loaded)return;const a=e.tile.tileCoord,l=yl(a),h=l in s?s[l]:1,c=o.getResolution(i),u=sl(o.getTileSize(i),this.tempSize_),d=o.getOrigin(i),g=o.getTileCoordExtent(a),f=h<1?-1:1/(i+2);h<1&&(t.animate=!0);const p=t.viewState,m=p.center[0],_=p.center[1],y=u[0]+2*n,x=u[1]+2*n,v=y/x,S=(m-d[0])/(u[0]*c),w=(d[1]-_)/(u[1]*c),E=p.resolution/c,T=a[1],C=a[2];Dt(this.tileTransform_),zt(this.tileTransform_,2/(t.size[0]*E/y),-2/(t.size[1]*E/y)),Ut(this.tileTransform_,p.rotation),zt(this.tileTransform_,1,1/v),Vt(this.tileTransform_,(u[0]*(T-S)-n)/y,(u[1]*(C-w)-n)/x),this.renderTile(e,this.tileTransform_,t,r,c,u,d,g,f,n,h)}renderFrame(t){this.frameState=t,this.renderComplete=!0;const e=this.helper.getGL();this.preRender(e,t);const i=t.viewState,n=this.getLayer(),r=n.getRenderSource(),s=r.getTileGridForProjection(i.projection),a=r.getGutterForProjection(i.projection),l=Sg(t,t.extent),h=s.getZForResolution(i.resolution,r.zDirection),c=yg(),u=n.getPreload();if(t.nextExtent){const e=s.getZForResolution(i.nextResolution,r.zDirection),n=Sg(t,t.nextExtent);this.enqueueTiles(t,n,e,c,u)}this.enqueueTiles(t,l,h,c,0),u>0&&setTimeout((()=>{this.enqueueTiles(t,l,h-1,c,u-1)}),0);const d={},g=U(this),f=t.time;let p=!1;for(const t of c.representationsByZ[h]){const e=t.tile;if((e instanceof ah||e instanceof dc)&&e.getState()===Q)continue;const i=e.tileCoord;if(t.loaded){const t=e.getAlpha(g,f);if(1===t){e.endTransition(g);continue}p=!0;d[yl(i)]=t}this.renderComplete=!1;if(this.findAltTiles_(s,i,h+1,c))continue;const n=s.getMinZoom();for(let t=h-1;t>=n;--t){if(this.findAltTiles_(s,i,t,c))break}}this.beforeTilesRender(t,p);const m=c.representationsByZ,_=Object.keys(m).map(Number).sort(o);for(let e=0,i=_.length;et.dispose())),t.clear()}removeHelper(){this.helper&&this.clearCache(),super.removeHelper()}disposeInternal(){super.disposeInternal(),delete this.frameState}};const Tg={...mg,TILE_TEXTURE_ARRAY:"u_tileTextures",TEXTURE_PIXEL_WIDTH:"u_texturePixelWidth",TEXTURE_PIXEL_HEIGHT:"u_texturePixelHeight",TEXTURE_RESOLUTION:"u_textureResolution",TEXTURE_ORIGIN_X:"u_textureOriginX",TEXTURE_ORIGIN_Y:"u_textureOriginY"},Cg={TEXTURE_COORD:"a_textureCoord"},Rg=[{name:Cg.TEXTURE_COORD,size:2,type:tg.FLOAT}];var bg=class extends Eg{constructor(t,e){super(t,e),this.program_,this.vertexShader_=e.vertexShader,this.fragmentShader_=e.fragmentShader,this.indices_=new Yd(ud,dd),this.indices_.fromArray([0,1,3,1,2,3]),this.paletteTextures_=e.paletteTextures||[]}reset(t){super.reset(t),this.vertexShader_=t.vertexShader,this.fragmentShader_=t.fragmentShader,this.helper&&(this.program_=this.helper.getProgram(this.fragmentShader_,this.vertexShader_))}afterHelperCreated(){this.program_=this.helper.getProgram(this.fragmentShader_,this.vertexShader_),this.helper.flushBufferData(this.indices_)}createTileRepresentation(t){return new gg(t)}beforeTilesRender(t,e){super.beforeTilesRender(t,e),this.helper.useProgram(this.program_,t)}renderTile(t,e,i,n,r,s,o,a,l,h,c){const u=this.helper.getGL();this.helper.bindBuffer(t.coords),this.helper.bindBuffer(this.indices_),this.helper.enableAttributes(Rg);let d=0;for(;d0&&(x=a,be(x,n,x)),this.helper.setUniformFloatVec4(Tg.RENDER_EXTENT,x),this.helper.setUniformFloatValue(Tg.RESOLUTION,g.resolution),this.helper.setUniformFloatValue(Tg.ZOOM,g.zoom),this.helper.setUniformFloatValue(Tg.TEXTURE_PIXEL_WIDTH,f),this.helper.setUniformFloatValue(Tg.TEXTURE_PIXEL_HEIGHT,p),this.helper.setUniformFloatValue(Tg.TEXTURE_RESOLUTION,r),this.helper.setUniformFloatValue(Tg.TEXTURE_ORIGIN_X,o[0]+_*s[0]*r-h*r),this.helper.setUniformFloatValue(Tg.TEXTURE_ORIGIN_Y,o[1]-y*s[1]*r+h*r),this.helper.drawElements(0,this.indices_.getSize())}getData(t){if(!this.helper.getGL())return null;const e=this.frameState;if(!e)return null;const i=this.getLayer(),n=Bt(e.pixelToCoordinateTransform,t.slice()),r=e.viewState,s=i.getExtent();if(s&&!ee(xn(s,r.projection),n))return null;const o=i.getSources(Ht([n]),r.resolution);let a,l,h;for(a=o.length-1;a>=0;--a)if(l=o[a],"ready"===l.getState()){if(h=l.getTileGridForProjection(r.projection),l.getWrapX())break;const t=h.getExtent();if(!t||ee(t,n))break}if(a<0)return null;const c=this.tileRepresentationCache;for(let t=h.getZForResolution(r.resolution);t>=h.getMinZoom();--t){const e=h.getTileCoordForCoordAndZ(n,t),i=wg(l,e);if(!c.containsKey(i))continue;const r=c.get(i),s=r.tile;if((s instanceof ah||s instanceof dc)&&s.getState()===Q)return null;if(!r.loaded)continue;const o=h.getOrigin(t),a=sl(h.getTileSize(t)),u=h.getResolution(t),d=(n[0]-o[0])/u-e[1]*a[0],g=(o[1]-n[1])/u-e[2]*a[1];return r.getPixelData(d,g)}return null}disposeInternal(){const t=this.helper;if(t){t.getGL().deleteProgram(this.program_),delete this.program_,t.deleteBuffer(this.indices_)}super.disposeInternal(),delete this.indices_}};const Pg={NUMBER:1,STRING:2,COLOR:4,BOOLEAN:8,NUMBER_ARRAY:16,ANY:31,NONE:0};const Lg={};function Fg(t){if("number"==typeof t)return Pg.NUMBER;if("boolean"==typeof t)return Pg.BOOLEAN;if("string"==typeof t)return ds(t)?Pg.COLOR|Pg.STRING:Pg.STRING;if(!Array.isArray(t))throw new Error(`Unhandled value type: ${JSON.stringify(t)}`);const e=t;if(e.every((function(t){return"number"==typeof t})))return 3===e.length||4===e.length?Pg.COLOR|Pg.NUMBER_ARRAY:Pg.NUMBER_ARRAY;if("string"!=typeof e[0])throw new Error(`Expected an expression operator but received: ${JSON.stringify(e)}`);const i=Lg[e[0]];if(void 0===i)throw new Error(`Unrecognized expression operator: ${JSON.stringify(e)}`);return i.getReturnType(e.slice(1))}function Ig(t){return Math.log2(t)%1==0}function Mg(t){const e=[];return(t&Pg.NUMBER)>0&&e.push("number"),(t&Pg.COLOR)>0&&e.push("color"),(t&Pg.BOOLEAN)>0&&e.push("boolean"),(t&Pg.NUMBER_ARRAY)>0&&e.push("number[]"),(t&Pg.STRING)>0&&e.push("string"),e.length>0?e.join(", "):"(no type)"}function Ag(t){const e=t.toString();return e.includes(".")?e:e+".0"}function Og(t){if(t.length<2||t.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return`vec${t.length}(${t.map(Ag).join(", ")})`}function Ng(t){const e=hs(t),i=e.length>3?e[3]:1;return Og([e[0]/255*i,e[1]/255*i,e[2]/255*i,i])}const Dg={};let kg=0;function Gg(t){return t in Dg||(Dg[t]=kg++),Dg[t]}function jg(t){return Ag(Gg(t))}function Bg(t,e,i){const n=void 0!==i?i:Pg.NUMBER;if(Array.isArray(e)&&"string"==typeof e[0]){const i=Lg[e[0]];if(void 0===i)throw new Error(`Unrecognized expression operator: ${JSON.stringify(e)}`);return i.toGlsl(t,e.slice(1),n)}const r=Fg(e)&n;if(qg(e,r,""),(r&Pg.NUMBER)>0)return Ag(e);if((r&Pg.BOOLEAN)>0)return e.toString();if((r&Pg.STRING)>0)return jg(e.toString());if((r&Pg.COLOR)>0)return Ng(e);if((r&Pg.NUMBER_ARRAY)>0)return Og(e);throw new Error(`Unexpected expression ${e} (expected type ${Mg(n)})`)}function Ug(t){if(0==(Fg(t)&Pg.NUMBER))throw new Error(`A numeric value was expected, got ${JSON.stringify(t)} instead`)}function zg(t){for(let e=0;ee)throw new Error(`At most ${e} arguments were expected, got ${t.length} instead`)}function $g(t){if(t.length%2!=0)throw new Error(`An even amount of arguments was expected, got ${JSON.stringify(t)} instead`)}function qg(t,e,i){if(e===Pg.NONE)throw new Error(`No matching type was found for the following expression ${i}: ${JSON.stringify(t)}`)}function Kg(t,e,i){if(qg(t,e,i),!Ig(e))throw new Error(`Expected to have a unique type for the following expression ${i}: ${JSON.stringify(t)}\nGot the following types instead: ${Mg(e)}`)}function Hg(t,e,i,n){if((e&i)===Pg.NONE)throw new Error(`Expected the ${n} type of the following expression: ${JSON.stringify(t)} to be of the following types: ${Mg(i)}\nGot these types instead: ${Mg(e)}`)}function Jg(t){return"u_var_"+t}Lg.get={getReturnType:function(t){if(2===t.length){return function(t){switch(t){case"string":return Pg.STRING;case"color":return Pg.COLOR;case"number":return Pg.NUMBER;case"boolean":return Pg.BOOLEAN;case"number[]":return Pg.NUMBER_ARRAY;default:throw new Error(`Unrecognized type hint: ${t}`)}}(t[1])}return Pg.ANY},toGlsl:function(t,e,i){Zg(e,1),Yg(e,2),Xg(e[0]);const n=i&Lg.get.getReturnType(e);Kg(["get",...e],n,"");const r=e[0].toString(),s=t.attributes.find((t=>t.name===r));if(s){if(n!==s.type)throw new Error(`The following attribute was used in different places with incompatible types: ${r}\nTypes were: ${Mg(s.type)} and ${Mg(n)}`)}else t.attributes.push({name:r,type:n});return(t.inFragmentShader?"v_":"a_")+r}},Lg.var={getReturnType:function(){return Pg.ANY},toGlsl:function(t,e,i){Wg(e,1),Xg(e[0]);const n=e[0].toString();if(!t.style.variables||void 0===t.style.variables[n])throw new Error(`The following variable is missing from the style: ${n}`);const r=i&Fg(t.style.variables[n]);Kg(["var",...e],r,"");const s=t.variables.find((t=>t.name===n));if(s){if(r!==s.type)throw new Error(`The following variable was used in different places with incompatible types: ${n}\nTypes were: ${Mg(s.type)} and ${Mg(r)}`)}else t.variables.push({name:n,type:r});return Jg(n)}};const Qg="u_paletteTextures";Lg.palette={getReturnType:function(){return Pg.COLOR},toGlsl:function(t,e){Wg(e,2),Ug(e[0]);const i=Bg(t,e[0]),n=e[1];if(!Array.isArray(n))throw new Error("The second argument of palette must be an array");const r=n.length,s=new Uint8Array(4*r);for(let t=0;tBg(e,t,Pg.BOOLEAN))).join(` ${t} `);return n=`(${n})`,n}}}function rf(){return{"fill-color":"rgba(255,255,255,0.4)","stroke-color":"#3399CC","stroke-width":1.25,"circle-radius":5,"circle-fill-color":"rgba(255,255,255,0.4)","circle-stroke-width":1.25,"circle-stroke-color":"#3399CC"}}Lg.band={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){Zg(e,1),Yg(e,3);const i=e[0];if(!(tf in t.functions)){let e="";const i=t.bandCount||1;for(let t=0;t{const e=t.getType();switch(e){case"Point":case"LineString":case"Polygon":return e;case"MultiPoint":case"MultiLineString":case"MultiPolygon":return e.substring(5);case"Circle":return"Polygon";case"GeometryCollection":return n(t.getGeometries()[0])}};t.attributes.find((t=>t.name===i))||t.attributes.push({name:i,type:Pg.STRING,callback:t=>n(t.getGeometry())});return(t.inFragmentShader?"v_":"a_")+i}},Lg["*"]={getReturnType:function(t){let e=Pg.NUMBER|Pg.COLOR;for(let i=0;iBg(t,e,n))).join(" * ")})`}},Lg["/"]={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,2),zg(e),`(${Bg(t,e[0])} / ${Bg(t,e[1])})`}},Lg["+"]={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Zg(e,2),zg(e),`(${e.map((e=>Bg(t,e))).join(" + ")})`}},Lg["-"]={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,2),zg(e),`(${Bg(t,e[0])} - ${Bg(t,e[1])})`}},Lg.clamp={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){Wg(e,3),zg(e);const i=Bg(t,e[1]),n=Bg(t,e[2]);return`clamp(${Bg(t,e[0])}, ${i}, ${n})`}},Lg["%"]={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,2),zg(e),`mod(${Bg(t,e[0])}, ${Bg(t,e[1])})`}},Lg["^"]={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,2),zg(e),`pow(${Bg(t,e[0])}, ${Bg(t,e[1])})`}},Lg.abs={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,1),zg(e),`abs(${Bg(t,e[0])})`}},Lg.floor={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,1),zg(e),`floor(${Bg(t,e[0])})`}},Lg.round={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,1),zg(e),`floor(${Bg(t,e[0])} + 0.5)`}},Lg.ceil={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,1),zg(e),`ceil(${Bg(t,e[0])})`}},Lg.sin={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,1),zg(e),`sin(${Bg(t,e[0])})`}},Lg.cos={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,1),zg(e),`cos(${Bg(t,e[0])})`}},Lg.atan={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Zg(e,1),Yg(e,2),zg(e),2===e.length?`atan(${Bg(t,e[0])}, ${Bg(t,e[1])})`:`atan(${Bg(t,e[0])})`}},Lg.sqrt={getReturnType:function(){return Pg.NUMBER},toGlsl:function(t,e){return Wg(e,1),zg(e),`sqrt(${Bg(t,e[0])})`}},Lg[">"]={getReturnType:function(){return Pg.BOOLEAN},toGlsl:function(t,e){return Wg(e,2),zg(e),`(${Bg(t,e[0])} > ${Bg(t,e[1])})`}},Lg[">="]={getReturnType:function(){return Pg.BOOLEAN},toGlsl:function(t,e){return Wg(e,2),zg(e),`(${Bg(t,e[0])} >= ${Bg(t,e[1])})`}},Lg["<"]={getReturnType:function(){return Pg.BOOLEAN},toGlsl:function(t,e){return Wg(e,2),zg(e),`(${Bg(t,e[0])} < ${Bg(t,e[1])})`}},Lg["<="]={getReturnType:function(){return Pg.BOOLEAN},toGlsl:function(t,e){return Wg(e,2),zg(e),`(${Bg(t,e[0])} <= ${Bg(t,e[1])})`}},Lg["=="]=ef("=="),Lg["!="]=ef("!="),Lg["!"]={getReturnType:function(){return Pg.BOOLEAN},toGlsl:function(t,e){return Wg(e,1),Vg(e[0]),`(!${Bg(t,e[0],Pg.BOOLEAN)})`}},Lg.all=nf("&&"),Lg.any=nf("||"),Lg.between={getReturnType:function(){return Pg.BOOLEAN},toGlsl:function(t,e){Wg(e,3),zg(e);const i=Bg(t,e[1]),n=Bg(t,e[2]),r=Bg(t,e[0]);return`(${r} >= ${i} && ${r} <= ${n})`}},Lg.array={getReturnType:function(){return Pg.NUMBER_ARRAY},toGlsl:function(t,e){Zg(e,2),Yg(e,4),zg(e);const i=e.map((function(e){return Bg(t,e)}));return`vec${e.length}(${i.join(", ")})`}},Lg.color={getReturnType:function(){return Pg.COLOR},toGlsl:function(t,e){Zg(e,3),Yg(e,4),zg(e);const i=e.slice(0,3).map((e=>`${Bg(t,e)} / 255.0`));if(3===e.length)return`vec4(${i.join(", ")}, 1.0)`;return`(${Bg(t,e[3])} * vec4(${i.join(", ")}, 1.0))`}},Lg.interpolate={getReturnType:function(t){let e=Pg.COLOR|Pg.NUMBER;for(let i=3;i=1;i-=2){a=`(${s} == ${Bg(t,e[i],n)} ? ${Bg(t,e[i+1],r)} : ${a||o})`}return a}},Lg.case={getReturnType:function(t){let e=Pg.ANY;for(let i=1;i=0;i-=2){s=`(${Bg(t,e[i],Pg.BOOLEAN)} ? ${Bg(t,e[i+1],n)} : ${s||r})`}return s}},Lg.in={getReturnType:function(t){return Pg.BOOLEAN},toGlsl:function(t,e){Wg(e,2);const i=e[0];let n=e[1];if(!Array.isArray(n))throw new Error('The "in" operator expects an array literal as its second argument.');if("string"==typeof n[0]){if("literal"!==n[0])throw new Error('For the "in" operator, a string array should be wrapped in a "literal" operator to disambiguate from expressions.');if(!Array.isArray(n[1]))throw new Error('The "in" operator was provided a literal value which was not an array as second argument.');n=n[1]}let r=Fg(i);for(let t=0;t 0) {\n if (gl_FragColor.a < 0.05) { discard; };\n gl_FragColor = v_hitColor;\n }\n}`:null}getStrokeVertexShader(){return this.hasStroke_?`${sf}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nattribute vec2 a_position;\nattribute float a_index;\nattribute vec2 a_segmentStart;\nattribute vec2 a_segmentEnd;\nattribute float a_parameters;\nattribute float a_distance;\nattribute vec2 a_joinAngles;\nattribute vec4 a_hitColor;\n${this.attributes_.map((function(t){return"attribute "+t+";"})).join("\n")}\nvarying vec2 v_segmentStart;\nvarying vec2 v_segmentEnd;\nvarying float v_angleStart;\nvarying float v_angleEnd;\nvarying float v_width;\nvarying vec4 v_hitColor;\nvarying float v_distanceOffsetPx;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.vertexShaderFunctions_.join("\n")}\nvec2 worldToPx(vec2 worldPos) {\n vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0);\n return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx;\n}\n\nvec4 pxToScreen(vec2 pxPos) {\n vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n return vec4(screenPos, 0.0, 1.0);\n}\n\nbool isCap(float joinAngle) {\n return joinAngle < -0.1;\n}\n\nvec2 getJoinOffsetDirection(vec2 normalPx, float joinAngle) {\n float halfAngle = joinAngle / 2.0;\n float c = cos(halfAngle);\n float s = sin(halfAngle);\n vec2 angleBisectorNormal = vec2(s * normalPx.x + c * normalPx.y, -c * normalPx.x + s * normalPx.y);\n float length = 1.0 / s;\n return angleBisectorNormal * length;\n}\n\nvec2 getOffsetPoint(vec2 point, vec2 normal, float joinAngle, float offsetPx) {\n // if on a cap or the join angle is too high, offset the line along the segment normal\n if (cos(joinAngle) > 0.998 || isCap(joinAngle)) {\n return point - normal * offsetPx;\n }\n // offset is applied along the inverted normal (positive offset goes "right" relative to line direction)\n return point - getJoinOffsetDirection(normal, joinAngle) * offsetPx;\n}\n\nvoid main(void) {\n v_angleStart = a_joinAngles.x;\n v_angleEnd = a_joinAngles.y;\n float vertexNumber = a_parameters;\n\n float lineWidth = ${this.strokeWidthExpression_};\n float lineOffsetPx = ${this.strokeOffsetExpression_};\n\n // compute segment start/end in px with offset\n vec2 segmentStartPx = worldToPx(a_segmentStart);\n vec2 segmentEndPx = worldToPx(a_segmentEnd);\n vec2 tangentPx = normalize(segmentEndPx - segmentStartPx);\n vec2 normalPx = vec2(-tangentPx.y, tangentPx.x);\n segmentStartPx = getOffsetPoint(segmentStartPx, normalPx, v_angleStart, lineOffsetPx),\n segmentEndPx = getOffsetPoint(segmentEndPx, normalPx, v_angleEnd, lineOffsetPx);\n \n // compute current vertex position\n float normalDir = vertexNumber < 0.5 || (vertexNumber > 1.5 && vertexNumber < 2.5) ? 1.0 : -1.0;\n float tangentDir = vertexNumber < 1.5 ? 1.0 : -1.0;\n float angle = vertexNumber < 1.5 ? v_angleStart : v_angleEnd;\n vec2 joinDirection;\n vec2 positionPx = vertexNumber < 1.5 ? segmentStartPx : segmentEndPx;\n // if angle is too high, do not make a proper join\n if (cos(angle) > 0.985 || isCap(angle)) {\n joinDirection = normalPx * normalDir - tangentPx * tangentDir;\n } else {\n joinDirection = getJoinOffsetDirection(normalPx * normalDir, angle);\n }\n positionPx = positionPx + joinDirection * lineWidth * 0.5;\n gl_Position = pxToScreen(positionPx);\n\n v_segmentStart = segmentStartPx;\n v_segmentEnd = segmentEndPx;\n v_width = lineWidth;\n v_hitColor = a_hitColor;\n v_distanceOffsetPx = a_distance / u_resolution;\n${this.varyings_.map((function(t){return" "+t.name+" = "+t.expression+";"})).join("\n")}\n}`:null}getStrokeFragmentShader(){return this.hasStroke_?`${sf}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nvarying vec2 v_segmentStart;\nvarying vec2 v_segmentEnd;\nvarying float v_angleStart;\nvarying float v_angleEnd;\nvarying float v_width;\nvarying vec4 v_hitColor;\nvarying float v_distanceOffsetPx;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.fragmentShaderFunctions_.join("\n")}\n\nvec2 pxToWorld(vec2 pxPos) {\n vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;\n}\n\nbool isCap(float joinAngle) {\n return joinAngle < -0.1;\n}\n\nfloat segmentDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n vec2 tangent = normalize(end - start);\n vec2 normal = vec2(-tangent.y, tangent.x);\n vec2 startToPoint = point - start;\n return abs(dot(startToPoint, normal)) - width * 0.5;\n}\n\nfloat buttCapDistanceField(vec2 point, vec2 start, vec2 end) {\n vec2 startToPoint = point - start;\n vec2 tangent = normalize(end - start);\n return dot(startToPoint, -tangent);\n}\n\nfloat squareCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n return buttCapDistanceField(point, start, end) - width * 0.5;\n}\n\nfloat roundCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n float onSegment = max(0., 1000. * dot(point - start, end - start)); // this is very high when inside the segment\n return length(point - start) - width * 0.5 - onSegment;\n}\n\nfloat roundJoinDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n return roundCapDistanceField(point, start, end, width);\n}\n\nfloat bevelJoinField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {\n vec2 startToPoint = point - start;\n vec2 tangent = normalize(end - start);\n float c = cos(joinAngle * 0.5);\n float s = sin(joinAngle * 0.5);\n float direction = -sign(sin(joinAngle));\n vec2 bisector = vec2(c * tangent.x - s * tangent.y, s * tangent.x + c * tangent.y);\n float radius = width * 0.5 * s;\n return dot(startToPoint, bisector * direction) - radius;\n}\n\nfloat miterJoinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {\n if (cos(joinAngle) > 0.985) { // avoid risking a division by zero\n return bevelJoinField(point, start, end, width, joinAngle);\n }\n float miterLength = 1. / sin(joinAngle * 0.5);\n float miterLimit = ${this.strokeMiterLimitExpression_};\n if (miterLength > miterLimit) {\n return bevelJoinField(point, start, end, width, joinAngle);\n }\n return -1000.;\n}\n\nfloat capDistanceField(vec2 point, vec2 start, vec2 end, float width, float capType) {\n if (capType == ${jg("butt")}) {\n return buttCapDistanceField(point, start, end);\n } else if (capType == ${jg("square")}) {\n return squareCapDistanceField(point, start, end, width);\n }\n return roundCapDistanceField(point, start, end, width);\n}\n\nfloat joinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float joinType) {\n if (joinType == ${jg("bevel")}) {\n return bevelJoinField(point, start, end, width, joinAngle);\n } else if (joinType == ${jg("miter")}) {\n return miterJoinDistanceField(point, start, end, width, joinAngle);\n }\n return roundJoinDistanceField(point, start, end, width);\n}\n\nfloat computeSegmentPointDistance(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float capType, float joinType) {\n if (isCap(joinAngle)) {\n return capDistanceField(point, start, end, width, capType);\n }\n return joinDistanceField(point, start, end, width, joinAngle, joinType);\n}\n\nvoid main(void) {\n vec2 currentPoint = gl_FragCoord.xy / u_pixelRatio;\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n vec2 v_worldPos = pxToWorld(currentPoint);\n if (\n abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (\n v_worldPos[0] < u_renderExtent[0] ||\n v_worldPos[1] < u_renderExtent[1] ||\n v_worldPos[0] > u_renderExtent[2] ||\n v_worldPos[1] > u_renderExtent[3]\n )\n ) {\n discard;\n }\n #endif\n if (${this.discardExpression_}) { discard; }\n\n float segmentLength = length(v_segmentEnd - v_segmentStart);\n vec2 segmentTangent = (v_segmentEnd - v_segmentStart) / segmentLength;\n vec2 segmentNormal = vec2(-segmentTangent.y, segmentTangent.x);\n vec2 startToPoint = currentPoint - v_segmentStart;\n float currentLengthPx = max(0., min(dot(segmentTangent, startToPoint), segmentLength)) + v_distanceOffsetPx; \n float currentRadiusPx = abs(dot(segmentNormal, startToPoint));\n vec4 color = ${this.strokeColorExpression_} * u_globalAlpha;\n float capType = ${this.strokeCapExpression_};\n float joinType = ${this.strokeJoinExpression_};\n float segmentStartDistance = computeSegmentPointDistance(currentPoint, v_segmentStart, v_segmentEnd, v_width, v_angleStart, capType, joinType);\n float segmentEndDistance = computeSegmentPointDistance(currentPoint, v_segmentEnd, v_segmentStart, v_width, v_angleEnd, capType, joinType);\n float distance = max(\n segmentDistanceField(currentPoint, v_segmentStart, v_segmentEnd, v_width),\n max(segmentStartDistance, segmentEndDistance)\n );\n distance = max(distance, ${this.strokeDistanceFieldExpression_});\n gl_FragColor = color * smoothstep(0., -1., distance);\n if (u_hitDetection > 0) {\n if (gl_FragColor.a < 0.1) { discard; };\n gl_FragColor = v_hitColor;\n }\n}`:null}getFillVertexShader(){return this.hasFill_?`${sf}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nattribute vec2 a_position;\nattribute vec4 a_hitColor;\n${this.attributes_.map((function(t){return"attribute "+t+";"})).join("\n")}\nvarying vec4 v_hitColor;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.vertexShaderFunctions_.join("\n")}\nvoid main(void) {\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n${this.varyings_.map((function(t){return" "+t.name+" = "+t.expression+";"})).join("\n")}\n}`:null}getFillFragmentShader(){return this.hasFill_?`${sf}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nvarying vec4 v_hitColor;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.fragmentShaderFunctions_.join("\n")}\nvec2 pxToWorld(vec2 pxPos) {\n vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;\n}\n\nvoid main(void) {\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n vec2 v_worldPos = pxToWorld(gl_FragCoord.xy / u_pixelRatio);\n if (\n abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (\n v_worldPos[0] < u_renderExtent[0] ||\n v_worldPos[1] < u_renderExtent[1] ||\n v_worldPos[0] > u_renderExtent[2] ||\n v_worldPos[1] > u_renderExtent[3]\n )\n ) {\n discard;\n }\n #endif\n if (${this.discardExpression_}) { discard; }\n gl_FragColor = ${this.fillColorExpression_} * u_globalAlpha;\n if (u_hitDetection > 0) {\n if (gl_FragColor.a < 0.1) { discard; };\n gl_FragColor = v_hitColor;\n }\n}`:null}}function lf(t,e){return 2===e?t:t.filter(((t,i)=>i%e<2))}var hf=class{constructor(){this.polygonBatch={entries:{},geometriesCount:0,verticesCount:0,ringsCount:0},this.pointBatch={entries:{},geometriesCount:0},this.lineStringBatch={entries:{},geometriesCount:0,verticesCount:0}}addFeatures(t){for(let e=0;e0?t[i-1]:null,l=a?a[a.length-1]:0,h=o[o.length-1];o=l>0?o.map((t=>t-l)):o,this.addCoordinates_("Polygon",e.slice(l,h),o,n,r,s)}break;case"MultiLineString":const a=i;for(let t=0,i=a.length;t0?a[t-1]:0;this.addCoordinates_("LinearRing",e.slice(i,a[t]),null,n,r,s)}break;case"MultiPoint":for(let t=0,i=e.length;t0&&vr(e,i,l[t],s))return this.addCoordinates_("Polygon",e.slice(0,i),l.slice(0,t),n,r,s),void this.addCoordinates_("Polygon",e.slice(i),l.slice(t).map((e=>e-l[t-1])),n,r,s)}this.polygonBatch.entries[r]||(this.polygonBatch.entries[r]={feature:n,flatCoordss:[],verticesCount:0,ringsCount:0,ringsVerticesCounts:[]}),o=e.length/s;const h=i.length,c=i.map(((t,e,i)=>e>0?(t-i[e-1])/s:t/s));this.polygonBatch.verticesCount+=o,this.polygonBatch.ringsCount+=h,this.polygonBatch.geometriesCount++,this.polygonBatch.entries[r].flatCoordss.push(lf(e,s)),this.polygonBatch.entries[r].ringsVerticesCounts.push(c),this.polygonBatch.entries[r].verticesCount+=o,this.polygonBatch.entries[r].ringsCount+=h;for(let t=0,i=l.length;t0?l[t-1]:0;this.addCoordinates_("LinearRing",e.slice(i,l[t]),null,n,r,s)}break;case"Point":this.pointBatch.entries[r]||(this.pointBatch.entries[r]={feature:n,flatCoordss:[]}),this.pointBatch.geometriesCount++,this.pointBatch.entries[r].flatCoordss.push(e);break;case"LineString":case"LinearRing":this.lineStringBatch.entries[r]||(this.lineStringBatch.entries[r]={feature:n,flatCoordss:[],verticesCount:0}),o=e.length/s,this.lineStringBatch.verticesCount+=o,this.lineStringBatch.geometriesCount++,this.lineStringBatch.entries[r].flatCoordss.push(lf(e,s)),this.lineStringBatch.entries[r].verticesCount+=o}}changeFeature(t){this.clearFeatureEntryInPointBatch_(t),this.clearFeatureEntryInPolygonBatch_(t),this.clearFeatureEntryInLineStringBatch_(t);const e=t.getGeometry();e&&this.addGeometry_(e,t)}removeFeature(t){this.clearFeatureEntryInPointBatch_(t),this.clearFeatureEntryInPolygonBatch_(t),this.clearFeatureEntryInLineStringBatch_(t)}clear(){this.polygonBatch.entries={},this.polygonBatch.geometriesCount=0,this.polygonBatch.verticesCount=0,this.polygonBatch.ringsCount=0,this.lineStringBatch.entries={},this.lineStringBatch.geometriesCount=0,this.lineStringBatch.verticesCount=0,this.pointBatch.entries={},this.pointBatch.geometriesCount=0}};var cf=class extends Vd{constructor(t,e){super(t),this.batch_=new hf,this.styleRenderers_=e,this.buffers=[],this.setTile(t.tile)}uploadTile(){this.batch_.clear();const t=this.tile.getSourceTiles(),e=t.reduce(((t,e)=>t.concat(e.getFeatures())),[]);this.batch_.addFeatures(e);const i=Vt([1,0,0,1,0,0],-t[0].extent[0],-t[0].extent[1]),n=this.styleRenderers_.map(((t,e)=>t.generateBuffers(this.batch_,i).then((t=>{this.buffers[e]=t}))));Promise.all(n).then((()=>{this.setReady()}))}};function uf(t){const e=hs(t);return[256*e[0]+e[1],256*e[2]+Math.round(255*e[3])]}function df(t){return t===Pg.COLOR?2:t===Pg.NUMBER_ARRAY?4:1}function gf(t){const e=df(t);return e>1?`vec${e}`:"float"}function ff(t,e,i,n){let r;if(`${n}radius`in t&&"icon-"!==n?r=Bg(i,t[`${n}radius`],Pg.NUMBER):`${n}radius1`in t&&"shape-"===n&&(r=Bg(i,t[`${n}radius1`],Pg.NUMBER)),void 0!==r&&(`${n}stroke-width`in t&&(r=`(${r} + ${Bg(i,t[`${n}stroke-width`],Pg.NUMBER)} * 0.5)`),e.setSymbolSizeExpression(`vec2(${r} * 2. + 0.5)`)),`${n}scale`in t){const r=Bg(i,t[`${n}scale`],Pg.NUMBER|Pg.NUMBER_ARRAY);e.setSymbolSizeExpression(`${e.getSymbolSizeExpression()} * ${r}`)}`${n}displacement`in t&&e.setSymbolOffsetExpression(Bg(i,t[`${n}displacement`],Pg.NUMBER_ARRAY)),`${n}rotation`in t&&e.setSymbolRotationExpression(Bg(i,t[`${n}rotation`],Pg.NUMBER)),`${n}rotate-with-view`in t&&e.setSymbolRotateWithView(!!t[`${n}rotate-with-view`])}function pf(t,e,i,n,r){let s="vec4(0.)";if(null!==e&&(s=e),null!==i&&null!==n){s=`mix(${i}, ${s}, ${`smoothstep(-${n} + 0.63, -${n} - 0.58, ${t})`})`}let o=`${s} * ${`(1.0 - smoothstep(-0.63, 0.58, ${t}))`}`;return null!==r&&(o=`${o} * ${r}`),o}function mf(t){const e={inFragmentShader:!1,variables:[],attributes:[],functions:{},style:t},i={inFragmentShader:!0,variables:e.variables,attributes:[],functions:{},style:t},n=new af,r={};if("icon-src"in t||"icon-img"in t?function(t,e,i,n,r){r.functions.samplePremultiplied="vec4 samplePremultiplied(sampler2D sampler, vec2 texCoord) {\n vec4 color = texture2D(sampler, texCoord);\n return vec4(color.rgb * color.a, color.a);\n}";let s,o,a="vec4(1.0)";"icon-color"in t&&(a=Bg(r,t["icon-color"],Pg.COLOR)),"icon-opacity"in t&&(a=`${a} * ${Bg(r,t["icon-opacity"],Pg.NUMBER)}`);const l=U(t);if("icon-src"in t?(s=new Image,s.crossOrigin=void 0===t["icon-cross-origin"]?"anonymous":t["icon-cross-origin"],s.src=t["icon-src"],i[`u_texture${l}_size`]=()=>s.complete?[s.width,s.height]:[0,0],o=`u_texture${l}_size`,e.addUniform(`vec2 u_texture${l}_size`)):(s=t["icon-img"],s instanceof HTMLImageElement?s.complete&&s.width&&s.height?o=Og([s.width,s.height]):(i[`u_texture${l}_size`]=()=>s.complete?[s.width,s.height]:[0,0],o=`u_texture${l}_size`):o=Og([s.width,s.height])),i[`u_texture${l}`]=s,e.addUniform(`sampler2D u_texture${l}`).setSymbolColorExpression(`${a} * samplePremultiplied(u_texture${l}, v_texCoord)`).setSymbolSizeExpression(o),"icon-width"in t&&"icon-height"in t&&e.setSymbolSizeExpression(`vec2(${Bg(n,t["icon-width"],Pg.NUMBER)}, ${Bg(n,t["icon-height"],Pg.NUMBER)})`),"icon-offset"in t&&"icon-size"in t){let i=Bg(n,t["icon-offset"],Pg.NUMBER_ARRAY);const r=Bg(n,t["icon-size"],Pg.NUMBER_ARRAY),s=e.getSymbolSizeExpression();if(e.setSymbolSizeExpression(r),"icon-offset-origin"in t)switch(t["icon-offset-origin"]){case"top-right":i=`vec2(v_quadSizePx.x, 0.) + ${r} * vec2(-1., 0.) + ${i} * vec2(-1., 1.)`;break;case"bottom-left":i=`vec2(0., v_quadSizePx.y) + ${r} * vec2(0., -1.) + ${i} * vec2(1., -1.)`;break;case"bottom-right":i=`v_quadSizePx - ${r} - ${i}`}e.setTextureCoordinateExpression(`(vec4((${i}).xyxy) + vec4(0., 0., ${r})) / (${s}).xyxy`)}if(ff(t,e,n,"icon-"),"icon-anchor"in t){const i=Bg(n,t["icon-anchor"],Pg.NUMBER_ARRAY);let r,s="1.0";"icon-scale"in t&&(s=Bg(n,t["icon-scale"],Pg.NUMBER|Pg.NUMBER_ARRAY)),r="pixels"===t["icon-anchor-x-units"]&&"pixels"===t["icon-anchor-y-units"]?`${i} * ${s}`:"pixels"===t["icon-anchor-x-units"]?`${i} * vec2(vec2(${s}).x, v_quadSizePx.y)`:"pixels"===t["icon-anchor-y-units"]?`${i} * vec2(v_quadSizePx.x, vec2(${s}).x)`:`${i} * v_quadSizePx`;let o=`v_quadSizePx * vec2(0.5, -0.5) + ${r} * vec2(-1., 1.)`;if("icon-anchor-origin"in t)switch(t["icon-anchor-origin"]){case"top-right":o=`v_quadSizePx * -0.5 + ${r}`;break;case"bottom-left":o=`v_quadSizePx * 0.5 - ${r}`;break;case"bottom-right":o=`v_quadSizePx * vec2(-0.5, 0.5) + ${r} * vec2(1., -1.)`}e.setSymbolOffsetExpression(`${e.getSymbolOffsetExpression()} + ${o}`)}}(t,n,r,e,i):"shape-points"in t?function(t,e,i,n,r){r.functions.round="float round(float v) {\n return sign(v) * floor(abs(v) + 0.5);\n}",r.functions.starDistanceField="float starDistanceField(vec2 point, float numPoints, float radiusIn, float radiusOut, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y); \n float alpha = TWO_PI / numPoints; // the angle of one sector\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round(beta / alpha) * alpha; // angle in sector\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n vec2 tipToPoint = inSector + vec2(-radiusOut, 0.);\n vec2 edgeNormal = vec2(radiusIn * sin(alpha * 0.5), -radiusIn * cos(alpha * 0.5) + radiusOut);\n return dot(normalize(edgeNormal), tipToPoint);\n}",r.functions.regularDistanceField="float regularDistanceField(vec2 point, float numPoints, float radius, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y); \n float alpha = TWO_PI / numPoints; // the angle of one sector\n float radiusIn = radius * cos(PI / numPoints);\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round((beta - alpha * 0.5) / alpha) * alpha + alpha * 0.5; // angle in sector from mid\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n return inSector.x - radiusIn;\n}",ff(t,e,n,"shape-");let s=null;"shape-opacity"in t&&(s=Bg(r,t["shape-opacity"],Pg.NUMBER));let o="coordsPx";"shape-scale"in t&&(o=`coordsPx / ${Bg(r,t["shape-scale"],Pg.NUMBER|Pg.NUMBER_ARRAY)}`);let a=null;"shape-fill-color"in t&&(a=Bg(r,t["shape-fill-color"],Pg.COLOR));let l=null;"shape-stroke-color"in t&&(l=Bg(r,t["shape-stroke-color"],Pg.COLOR));let h=null;"shape-stroke-width"in t&&(h=Bg(r,t["shape-stroke-width"],Pg.NUMBER));const c=Bg(r,t["shape-points"],Pg.NUMBER);let u,d="0.";if("shape-angle"in t&&(d=Bg(r,t["shape-angle"],Pg.NUMBER)),"shape-radius"in t){let e=Bg(r,t["shape-radius"],Pg.NUMBER);null!==h&&(e=`${e} + ${h} * 0.5`),u=`regularDistanceField(${o}, ${c}, ${e}, ${d})`}else{let e=Bg(r,t["shape-radius1"],Pg.NUMBER),i=Bg(r,t["shape-radius2"],Pg.NUMBER);null!==h&&(e=`${e} + ${h} * 0.5`,i=`${i} + ${h} * 0.5`),u=`starDistanceField(${o}, ${c}, ${i}, ${e}, ${d})`}const g=pf(u,a,l,h,s);e.setSymbolColorExpression(g)}(t,n,0,e,i):"circle-radius"in t&&function(t,e,i,n,r){r.functions.circleDistanceField="float circleDistanceField(vec2 point, float radius) {\n return length(point) - radius;\n}",ff(t,e,n,"circle-");let s=null;"circle-opacity"in t&&(s=Bg(r,t["circle-opacity"],Pg.NUMBER));let o="coordsPx";"circle-scale"in t&&(o=`coordsPx / ${Bg(r,t["circle-scale"],Pg.NUMBER|Pg.NUMBER_ARRAY)}`);let a=null;"circle-fill-color"in t&&(a=Bg(r,t["circle-fill-color"],Pg.COLOR));let l=null;"circle-stroke-color"in t&&(l=Bg(r,t["circle-stroke-color"],Pg.COLOR));let h=Bg(r,t["circle-radius"],Pg.NUMBER),c=null;"circle-stroke-width"in t&&(c=Bg(r,t["circle-stroke-width"],Pg.NUMBER),h=`(${h} + ${c} * 0.5)`);const u=pf(`circleDistanceField(${o}, ${h})`,a,l,c,s);e.setSymbolColorExpression(u)}(t,n,0,e,i),function(t,e,i,n,r){if("stroke-color"in t&&e.setStrokeColorExpression(Bg(r,t["stroke-color"],Pg.COLOR)),"stroke-width"in t&&e.setStrokeWidthExpression(Bg(n,t["stroke-width"],Pg.NUMBER)),"stroke-offset"in t&&e.setStrokeOffsetExpression(Bg(n,t["stroke-offset"],Pg.NUMBER)),"stroke-line-cap"in t&&e.setStrokeCapExpression(Bg(n,t["stroke-line-cap"],Pg.STRING)),"stroke-line-join"in t&&e.setStrokeJoinExpression(Bg(n,t["stroke-line-join"],Pg.STRING)),"stroke-miter-limit"in t&&e.setStrokeMiterLimitExpression(Bg(n,t["stroke-miter-limit"],Pg.NUMBER)),"stroke-line-dash"in t){r.functions.getSingleDashDistance=`float getSingleDashDistance(float distance, float radius, float dashOffset, float dashLength, float dashLengthTotal, float capType) {\n float localDistance = mod(distance, dashLengthTotal);\n float distanceSegment = abs(localDistance - dashOffset - dashLength * 0.5) - dashLength * 0.5;\n distanceSegment = min(distanceSegment, dashLengthTotal - localDistance);\n if (capType == ${jg("square")}) {\n distanceSegment -= v_width * 0.5;\n } else if (capType == ${jg("round")}) {\n distanceSegment = min(distanceSegment, sqrt(distanceSegment * distanceSegment + radius * radius) - v_width * 0.5);\n }\n return distanceSegment;\n}`;let i=t["stroke-line-dash"].map((t=>Bg(r,t,Pg.NUMBER)));i.length%2==1&&(i=[...i,...i]);let s="0.";"stroke-line-dash-offset"in t&&(s=Bg(n,t["stroke-line-dash-offset"],Pg.NUMBER));let o=JSON.stringify(t["stroke-line-dash"]).split("").reduce(((t,e)=>(t<<5)-t+e.charCodeAt(0)),0);o>>>=0;const a=`dashDistanceField_${o}`,l=i.map(((t,e)=>`float dashLength${e} = ${t};`)),h=i.map(((t,e)=>`dashLength${e}`)).join(" + ");let c="0.",u=`getSingleDashDistance(distance, radius, ${c}, dashLength0, totalDashLength, capType)`;for(let t=2;tGg(t.variables[e.name]):e.type===Pg.COLOR?()=>uf([...hs(t.variables[e.name]||"#eee")]):e.type===Pg.BOOLEAN?()=>t.variables[e.name]?1:0:()=>t.variables[e.name],r[i]=s})),i.attributes.forEach((function(t){e.attributes.find((e=>e.name===t.name))||e.attributes.push(t);let i=gf(t.type),r=`a_${t.name}`;t.type===Pg.COLOR&&(i="vec4",r=`unpackColor(${r})`,n.addVertexShaderFunction("vec4 unpackColor(vec2 packedColor) {\n return fract(packedColor[1] / 256.0) * vec4(\n fract(floor(packedColor[0] / 256.0) / 256.0),\n fract(packedColor[0] / 256.0),\n fract(floor(packedColor[1] / 256.0) / 256.0),\n 1.0\n );\n}")),n.addVarying(`v_${t.name}`,i,r)})),e.attributes.forEach((function(t){n.addAttribute(`${gf(t.type)} a_${t.name}`)}));const s=e.attributes.map((function(t){let e;return e=t.callback?t.callback:t.type===Pg.STRING?e=>Gg(e.get(t.name)):t.type===Pg.COLOR?e=>uf([...hs(e.get(t.name)||"#eee")]):t.type===Pg.BOOLEAN?e=>e.get(t.name)?1:0:e=>e.get(t.name),{name:t.name,size:df(t.type),callback:e}}));for(const t in e.functions)n.addVertexShaderFunction(e.functions[t]);for(const t in i.functions)n.addFragmentShaderFunction(i.functions[t]);return{builder:n,attributes:s.reduce(((t,e)=>({...t,[e.name]:{callback:e.callback,size:e.size}})),{}),uniforms:r}}class _f{constructor(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=sl(t.scale),this.displacement_=t.displacement,this.declutterMode_=t.declutterMode}clone(){const t=this.getScale();return new _f({opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getOpacity(){return this.opacity_}getRotateWithView(){return this.rotateWithView_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getDisplacement(){return this.displacement_}getDeclutterMode(){return this.declutterMode_}getAnchor(){return j()}getImage(t){return j()}getHitDetectionImage(){return j()}getPixelRatio(t){return 1}getImageState(){return j()}getImageSize(){return j()}getOrigin(){return j()}getSize(){return j()}setDisplacement(t){this.displacement_=t}setOpacity(t){this.opacity_=t}setRotateWithView(t){this.rotateWithView_=t}setRotation(t){this.rotation_=t}setScale(t){this.scale_=t,this.scaleArray_=sl(t)}listenImageChange(t){j()}load(){j()}unlistenImageChange(t){j()}}var yf=_f;class xf extends yf{constructor(t){super({opacity:1,rotateWithView:void 0!==t.rotateWithView&&t.rotateWithView,rotation:void 0!==t.rotation?t.rotation:0,scale:void 0!==t.scale?t.scale:1,displacement:void 0!==t.displacement?t.displacement:[0,0],declutterMode:t.declutterMode}),this.canvas_=void 0,this.hitDetectionCanvas_=null,this.fill_=void 0!==t.fill?t.fill:null,this.origin_=[0,0],this.points_=t.points,this.radius_=void 0!==t.radius?t.radius:t.radius1,this.radius2_=t.radius2,this.angle_=void 0!==t.angle?t.angle:0,this.stroke_=void 0!==t.stroke?t.stroke:null,this.size_=null,this.renderOptions_=null,this.render()}clone(){const t=this.getScale(),e=new xf({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return e.setOpacity(this.getOpacity()),e}getAnchor(){const t=this.size_;if(!t)return null;const e=this.getDisplacement(),i=this.getScaleArray();return[t[0]/2-e[0]/i[0],t[1]/2+e[1]/i[1]]}getAngle(){return this.angle_}getFill(){return this.fill_}setFill(t){this.fill_=t,this.render()}getHitDetectionImage(){return this.hitDetectionCanvas_||this.createHitDetectionCanvas_(this.renderOptions_),this.hitDetectionCanvas_}getImage(t){let e=this.canvas_[t];if(!e){const i=this.renderOptions_,n=mt(i.size*t,i.size*t);this.draw_(i,n,t),e=n.canvas,this.canvas_[t]=e}return e}getPixelRatio(t){return t}getImageSize(){return this.size_}getImageState(){return Yr}getOrigin(){return this.origin_}getPoints(){return this.points_}getRadius(){return this.radius_}getRadius2(){return this.radius2_}getSize(){return this.size_}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t,this.render()}listenImageChange(t){}load(){}unlistenImageChange(t){}calculateLineJoinSize_(t,e,i){if(0===e||this.points_===1/0||"bevel"!==t&&"miter"!==t)return e;let n=this.radius_,r=void 0===this.radius2_?n:this.radius2_;if(n{this.image_=t,this.handleImageLoad_()})).catch(this.handleImageError_.bind(this))}}replaceColor_(t){if(!this.color_||this.canvas_[t]||this.imageState_!==Yr)return;const e=this.image_,i=document.createElement("canvas");i.width=Math.ceil(e.width*t),i.height=Math.ceil(e.height*t);const n=i.getContext("2d");n.scale(t,t),n.drawImage(e,0,0),n.globalCompositeOperation="multiply",n.fillStyle=os(this.color_),n.fillRect(0,0,i.width/t,i.height/t),n.globalCompositeOperation="destination-in",n.drawImage(e,0,0),this.canvas_[t]=i}}function bf(t,e,i,n,r){let s=void 0===e?void 0:ms.get(e,i,r);return s||(s=new Rf(t,t instanceof HTMLImageElement?t.src||void 0:e,i,n,r),ms.set(e,i,r,s)),s}var Pf=Rf;function Lf(t,e,i,n){return void 0!==i&&void 0!==n?[i/t,n/e]:void 0!==i?i/t:void 0!==n?n/e:1}class Ff extends yf{constructor(t){const e=void 0!==(t=t||{}).opacity?t.opacity:1,i=void 0!==t.rotation?t.rotation:0,n=void 0!==t.scale?t.scale:1,r=void 0!==t.rotateWithView&&t.rotateWithView;super({opacity:e,rotation:i,scale:n,displacement:void 0!==t.displacement?t.displacement:[0,0],rotateWithView:r,declutterMode:t.declutterMode}),this.anchor_=void 0!==t.anchor?t.anchor:[.5,.5],this.normalizedAnchor_=null,this.anchorOrigin_=void 0!==t.anchorOrigin?t.anchorOrigin:"top-left",this.anchorXUnits_=void 0!==t.anchorXUnits?t.anchorXUnits:"fraction",this.anchorYUnits_=void 0!==t.anchorYUnits?t.anchorYUnits:"fraction",this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null;const s=void 0!==t.img?t.img:null;let o,a=t.src;if(Ft(!(void 0!==a&&s),"`image` and `src` cannot be provided at the same time"),void 0!==a&&0!==a.length||!s||(a=s.src||U(s)),Ft(void 0!==a&&a.length>0,"A defined and non-empty `src` or `image` must be provided"),Ft(!((void 0!==t.width||void 0!==t.height)&&void 0!==t.scale),"`width` or `height` cannot be provided together with `scale`"),void 0!==t.src?o=Wr:void 0!==s&&(o=s instanceof HTMLImageElement?s.complete?s.src?Yr:Wr:Zr:Yr),this.color_=void 0!==t.color?hs(t.color):null,this.iconImage_=bf(s,a,this.crossOrigin_,o,this.color_),this.offset_=void 0!==t.offset?t.offset:[0,0],this.offsetOrigin_=void 0!==t.offsetOrigin?t.offsetOrigin:"top-left",this.origin_=null,this.size_=void 0!==t.size?t.size:null,void 0!==t.width||void 0!==t.height){let e,i;if(t.size)[e,i]=t.size;else{const n=this.getImage(1);if(n.width&&n.height)e=n.width,i=n.height;else if(n instanceof HTMLImageElement){this.initialOptions_=t;const e=()=>{if(this.unlistenImageChange(e),!this.initialOptions_)return;const i=this.iconImage_.getSize();this.setScale(Lf(i[0],i[1],t.width,t.height))};return void this.listenImageChange(e)}}void 0!==e&&this.setScale(Lf(e,i,t.width,t.height))}}clone(){let t,e,i;return this.initialOptions_?(e=this.initialOptions_.width,i=this.initialOptions_.height):(t=this.getScale(),t=Array.isArray(t)?t.slice():t),new Ff({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:t,width:e,height:i,size:null!==this.size_?this.size_.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getAnchor(){let t=this.normalizedAnchor_;if(!t){t=this.anchor_;const e=this.getSize();if("fraction"==this.anchorXUnits_||"fraction"==this.anchorYUnits_){if(!e)return null;t=this.anchor_.slice(),"fraction"==this.anchorXUnits_&&(t[0]*=e[0]),"fraction"==this.anchorYUnits_&&(t[1]*=e[1])}if("top-left"!=this.anchorOrigin_){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),"top-right"!=this.anchorOrigin_&&"bottom-right"!=this.anchorOrigin_||(t[0]=-t[0]+e[0]),"bottom-left"!=this.anchorOrigin_&&"bottom-right"!=this.anchorOrigin_||(t[1]=-t[1]+e[1])}this.normalizedAnchor_=t}const e=this.getDisplacement(),i=this.getScaleArray();return[t[0]-e[0]/i[0],t[1]+e[1]/i[1]]}setAnchor(t){this.anchor_=t,this.normalizedAnchor_=null}getColor(){return this.color_}getImage(t){return this.iconImage_.getImage(t)}getPixelRatio(t){return this.iconImage_.getPixelRatio(t)}getImageSize(){return this.iconImage_.getSize()}getImageState(){return this.iconImage_.getImageState()}getHitDetectionImage(){return this.iconImage_.getHitDetectionImage()}getOrigin(){if(this.origin_)return this.origin_;let t=this.offset_;if("top-left"!=this.offsetOrigin_){const e=this.getSize(),i=this.iconImage_.getSize();if(!e||!i)return null;t=t.slice(),"top-right"!=this.offsetOrigin_&&"bottom-right"!=this.offsetOrigin_||(t[0]=i[0]-e[0]-t[0]),"bottom-left"!=this.offsetOrigin_&&"bottom-right"!=this.offsetOrigin_||(t[1]=i[1]-e[1]-t[1])}return this.origin_=t,this.origin_}getSrc(){return this.iconImage_.getSrc()}getSize(){return this.size_?this.size_:this.iconImage_.getSize()}getWidth(){const t=this.getScaleArray();return this.size_?this.size_[0]*t[0]:this.iconImage_.getImageState()==Yr?this.iconImage_.getSize()[0]*t[0]:void 0}getHeight(){const t=this.getScaleArray();return this.size_?this.size_[1]*t[1]:this.iconImage_.getImageState()==Yr?this.iconImage_.getSize()[1]*t[1]:void 0}setScale(t){delete this.initialOptions_,super.setScale(t)}listenImageChange(t){this.iconImage_.addEventListener(v,t)}load(){this.iconImage_.load()}unlistenImageChange(t){this.iconImage_.removeEventListener(v,t)}}var If=Ff;class Mf{constructor(t){t=t||{},this.color_=void 0!==t.color?t.color:null,this.lineCap_=t.lineCap,this.lineDash_=void 0!==t.lineDash?t.lineDash:null,this.lineDashOffset_=t.lineDashOffset,this.lineJoin_=t.lineJoin,this.miterLimit_=t.miterLimit,this.width_=t.width}clone(){const t=this.getColor();return new Mf({color:Array.isArray(t)?t.slice():t||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})}getColor(){return this.color_}getLineCap(){return this.lineCap_}getLineDash(){return this.lineDash_}getLineDashOffset(){return this.lineDashOffset_}getLineJoin(){return this.lineJoin_}getMiterLimit(){return this.miterLimit_}getWidth(){return this.width_}setColor(t){this.color_=t}setLineCap(t){this.lineCap_=t}setLineDash(t){this.lineDash_=t}setLineDashOffset(t){this.lineDashOffset_=t}setLineJoin(t){this.lineJoin_=t}setMiterLimit(t){this.miterLimit_=t}setWidth(t){this.width_=t}}var Af=Mf;class Of{constructor(t){t=t||{},this.geometry_=null,this.geometryFunction_=jf,void 0!==t.geometry&&this.setGeometry(t.geometry),this.fill_=void 0!==t.fill?t.fill:null,this.image_=void 0!==t.image?t.image:null,this.renderer_=void 0!==t.renderer?t.renderer:null,this.hitDetectionRenderer_=void 0!==t.hitDetectionRenderer?t.hitDetectionRenderer:null,this.stroke_=void 0!==t.stroke?t.stroke:null,this.text_=void 0!==t.text?t.text:null,this.zIndex_=t.zIndex}clone(){let t=this.getGeometry();return t&&"object"==typeof t&&(t=t.clone()),new Of({geometry:t,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer(),stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(t){this.renderer_=t}setHitDetectionRenderer(t){this.hitDetectionRenderer_=t}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(t){this.fill_=t}getImage(){return this.image_}setImage(t){this.image_=t}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t}getText(){return this.text_}setText(t){this.text_=t}getZIndex(){return this.zIndex_}setGeometry(t){"function"==typeof t?this.geometryFunction_=t:"string"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=jf,this.geometry_=t}setZIndex(t){this.zIndex_=t}}function Nf(t){let e;if("function"==typeof t)e=t;else{let i;if(Array.isArray(t))i=t;else{Ft("function"==typeof t.getZIndex,"Expected an `Style` or an array of `Style`");i=[t]}e=function(){return i}}return e}let Df=null;function kf(t,e){if(!Df){const t=new Tf({color:"rgba(255,255,255,0.4)"}),e=new Af({color:"#3399CC",width:1.25});Df=[new Of({image:new wf({fill:t,stroke:e,radius:5}),fill:t,stroke:e})]}return Df}function Gf(){const t={},e=[255,255,255,1],i=[0,153,255,1];return t.Polygon=[new Of({fill:new Tf({color:[255,255,255,.5]})})],t.MultiPolygon=t.Polygon,t.LineString=[new Of({stroke:new Af({color:e,width:5})}),new Of({stroke:new Af({color:i,width:3})})],t.MultiLineString=t.LineString,t.Circle=t.Polygon.concat(t.LineString),t.Point=[new Of({image:new wf({radius:6,fill:new Tf({color:i}),stroke:new Af({color:e,width:1.5})}),zIndex:1/0})],t.MultiPoint=t.Point,t.GeometryCollection=t.Polygon.concat(t.LineString,t.Point),t}function jf(t){return t.getGeometry()}var Bf=Of;class Uf{constructor(t){t=t||{},this.font_=t.font,this.rotation_=t.rotation,this.rotateWithView_=t.rotateWithView,this.scale_=t.scale,this.scaleArray_=sl(void 0!==t.scale?t.scale:1),this.text_=t.text,this.textAlign_=t.textAlign,this.justify_=t.justify,this.repeat_=t.repeat,this.textBaseline_=t.textBaseline,this.fill_=void 0!==t.fill?t.fill:new Tf({color:"#333"}),this.maxAngle_=void 0!==t.maxAngle?t.maxAngle:Math.PI/4,this.placement_=void 0!==t.placement?t.placement:"point",this.overflow_=!!t.overflow,this.stroke_=void 0!==t.stroke?t.stroke:null,this.offsetX_=void 0!==t.offsetX?t.offsetX:0,this.offsetY_=void 0!==t.offsetY?t.offsetY:0,this.backgroundFill_=t.backgroundFill?t.backgroundFill:null,this.backgroundStroke_=t.backgroundStroke?t.backgroundStroke:null,this.padding_=void 0===t.padding?null:t.padding}clone(){const t=this.getScale();return new Uf({font:this.getFont(),placement:this.getPlacement(),repeat:this.getRepeat(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,text:this.getText(),textAlign:this.getTextAlign(),justify:this.getJustify(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0})}getOverflow(){return this.overflow_}getFont(){return this.font_}getMaxAngle(){return this.maxAngle_}getPlacement(){return this.placement_}getRepeat(){return this.repeat_}getOffsetX(){return this.offsetX_}getOffsetY(){return this.offsetY_}getFill(){return this.fill_}getRotateWithView(){return this.rotateWithView_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getStroke(){return this.stroke_}getText(){return this.text_}getTextAlign(){return this.textAlign_}getJustify(){return this.justify_}getTextBaseline(){return this.textBaseline_}getBackgroundFill(){return this.backgroundFill_}getBackgroundStroke(){return this.backgroundStroke_}getPadding(){return this.padding_}setOverflow(t){this.overflow_=t}setFont(t){this.font_=t}setMaxAngle(t){this.maxAngle_=t}setOffsetX(t){this.offsetX_=t}setOffsetY(t){this.offsetY_=t}setPlacement(t){this.placement_=t}setRepeat(t){this.repeat_=t}setRotateWithView(t){this.rotateWithView_=t}setFill(t){this.fill_=t}setRotation(t){this.rotation_=t}setScale(t){this.scale_=t,this.scaleArray_=sl(void 0!==t?t:1)}setStroke(t){this.stroke_=t}setText(t){this.text_=t}setTextAlign(t){this.textAlign_=t}setJustify(t){this.justify_=t}setTextBaseline(t){this.textBaseline_=t}setBackgroundFill(t){this.backgroundFill_=t}setBackgroundStroke(t){this.backgroundStroke_=t}setPadding(t){this.padding_=t}}var zf=Uf;var Xf=class{constructor(t){this.first_,this.last_,this.head_,this.circular_=void 0===t||t,this.length_=0}insertItem(t){const e={prev:void 0,next:void 0,data:t},i=this.head_;if(i){const t=i.next;e.prev=i,e.next=t,i.next=e,t&&(t.prev=e),i===this.last_&&(this.last_=e)}else this.first_=e,this.last_=e,this.circular_&&(e.next=e,e.prev=e);this.head_=e,this.length_++}removeItem(){const t=this.head_;if(t){const e=t.next,i=t.prev;e&&(e.prev=i),i&&(i.next=e),this.head_=e||i,this.first_===this.last_?(this.head_=void 0,this.first_=void 0,this.last_=void 0):this.first_===t?this.first_=this.head_:this.last_===t&&(this.last_=i?this.head_.prev:this.head_),this.length_--}}firstItem(){if(this.head_=this.first_,this.head_)return this.head_.data}lastItem(){if(this.head_=this.last_,this.head_)return this.head_.data}nextItem(){if(this.head_&&this.head_.next)return this.head_=this.head_.next,this.head_.data}getNextItem(){if(this.head_&&this.head_.next)return this.head_.next.data}prevItem(){if(this.head_&&this.head_.prev)return this.head_=this.head_.prev,this.head_.data}getPrevItem(){if(this.head_&&this.head_.prev)return this.head_.prev.data}getCurrItem(){if(this.head_)return this.head_.data}setFirstItem(){this.circular_&&this.head_&&(this.first_=this.head_,this.last_=this.head_.prev)}concat(t){if(t.head_){if(this.head_){const e=this.head_.next;this.head_.next=t.first_,t.first_.prev=this.head_,e.prev=t.last_,t.last_.next=e,this.length_+=t.length_}else this.head_=t.head_,this.first_=t.first_,this.last_=t.last_,this.length_=t.length_;t.head_=void 0,t.first_=void 0,t.last_=void 0,t.length_=0}}getLength(){return this.length_}};let Vf=0;const Wf=1<",GreaterThanOrEqualTo:">=",LessThan:"<",LessThanOrEqualTo:"<=",Multiply:"*",Divide:"/",Add:"+",Subtract:"-",Clamp:"clamp",Mod:"%",Pow:"^",Abs:"abs",Floor:"floor",Ceil:"ceil",Round:"round",Sin:"sin",Cos:"cos",Atan:"atan",Sqrt:"sqrt",Match:"match"},ap={[op.Number]:hp(lp(1,1/0,Kf),Zf),[op.String]:hp(lp(1,1/0,Kf),Yf),[op.Get]:hp((function(t,e){if(2!==t.length)throw new Error("Expected 1 argument for get operation");const i=sp(t[1],e);if(!(i instanceof ip))throw new Error("Expected a literal argument for get operation");if("string"!=typeof i.value)throw new Error("Expected a string argument for get operation");return e.properties.add(i.value),[i]}),Kf),[op.Var]:hp((function(t,e){if(2!==t.length)throw new Error("Expected 1 argument for var operation");const i=sp(t[1],e);if(!(i instanceof ip))throw new Error("Expected a literal argument for var operation");if("string"!=typeof i.value)throw new Error("Expected a string argument for get operation");return e.variables.add(i.value),[i]}),Kf),[op.Resolution]:hp((function(t,e){const i=t[0];if(1!==t.length)throw new Error(`Expected no arguments for ${i} operation`);return[]}),Zf),[op.Any]:hp(lp(2,1/0,Wf),Wf),[op.All]:hp(lp(2,1/0,Wf),Wf),[op.Not]:hp(lp(1,1,Wf),Wf),[op.Equal]:hp(lp(2,2,Kf),Wf),[op.NotEqual]:hp(lp(2,2,Kf),Wf),[op.GreaterThan]:hp(lp(2,2,Kf),Wf),[op.GreaterThanOrEqualTo]:hp(lp(2,2,Kf),Wf),[op.LessThan]:hp(lp(2,2,Kf),Wf),[op.LessThanOrEqualTo]:hp(lp(2,2,Kf),Wf),[op.Multiply]:hp(lp(2,1/0,Zf),Zf),[op.Divide]:hp(lp(2,2,Zf),Zf),[op.Add]:hp(lp(2,1/0,Zf),Zf),[op.Subtract]:hp(lp(2,2,Zf),Zf),[op.Clamp]:hp(lp(3,3,Zf),Zf),[op.Mod]:hp(lp(2,2,Zf),Zf),[op.Pow]:hp(lp(2,2,Zf),Zf),[op.Abs]:hp(lp(1,1,Zf),Zf),[op.Floor]:hp(lp(1,1,Zf),Zf),[op.Ceil]:hp(lp(1,1,Zf),Zf),[op.Round]:hp(lp(1,1,Zf),Zf),[op.Sin]:hp(lp(1,1,Zf),Zf),[op.Cos]:hp(lp(1,1,Zf),Zf),[op.Atan]:hp(lp(1,2,Zf),Zf),[op.Sqrt]:hp(lp(1,1,Zf),Zf),[op.Match]:hp(lp(4,1/0,Yf|Zf),Kf)};function lp(t,e,i){return function(n,r){const s=n[0],o=n.length-1;if(t===e){if(o!==t){throw new Error(`Expected ${t} argument${1===t?"":"s"} for operation ${s}, got ${o}`)}}else if(oe)throw new Error(`Expected ${t} to ${e} arguments for operation ${s}, got ${o}`);const a=new Array(o);for(let t=0;t{for(let e=0;et.properties[n];case op.Var:return t=>t.variables[n];default:throw new Error(`Unsupported accessor operator ${t.operator}`)}}(t);case op.Resolution:return t=>t.resolution;case op.Any:case op.All:case op.Not:return function(t,e){const i=t.operator,n=t.args.length,r=new Array(n);for(let e=0;e{for(let e=0;e{for(let e=0;e!r[0](t);default:throw new Error(`Unsupported logical operator ${i}`)}}(t);case op.Equal:case op.NotEqual:case op.LessThan:case op.LessThanOrEqualTo:case op.GreaterThan:case op.GreaterThanOrEqualTo:return function(t,e){const i=t.operator,n=dp(t.args[0]),r=dp(t.args[1]);switch(i){case op.Equal:return t=>n(t)===r(t);case op.NotEqual:return t=>n(t)!==r(t);case op.LessThan:return t=>n(t)n(t)<=r(t);case op.GreaterThan:return t=>n(t)>r(t);case op.GreaterThanOrEqualTo:return t=>n(t)>=r(t);default:throw new Error(`Unsupported comparison operator ${i}`)}}(t);case op.Multiply:case op.Divide:case op.Add:case op.Subtract:case op.Clamp:case op.Mod:case op.Pow:case op.Abs:case op.Floor:case op.Ceil:case op.Round:case op.Sin:case op.Cos:case op.Atan:case op.Sqrt:return function(t,e){const i=t.operator,n=t.args.length,r=new Array(n);for(let e=0;e{let e=1;for(let i=0;ir[0](t)/r[1](t);case op.Add:return t=>{let e=0;for(let i=0;ir[0](t)-r[1](t);case op.Clamp:return t=>{const e=r[0](t),i=r[1](t);if(en?n:e};case op.Mod:return t=>r[0](t)%r[1](t);case op.Pow:return t=>Math.pow(r[0](t),r[1](t));case op.Abs:return t=>Math.abs(r[0](t));case op.Floor:return t=>Math.floor(r[0](t));case op.Ceil:return t=>Math.ceil(r[0](t));case op.Round:return t=>Math.round(r[0](t));case op.Sin:return t=>Math.sin(r[0](t));case op.Cos:return t=>Math.cos(r[0](t));case op.Atan:return 2===n?t=>Math.atan2(r[0](t),r[1](t)):t=>Math.atan(r[0](t));case op.Sqrt:return t=>Math.sqrt(r[0](t));default:throw new Error(`Unsupported numeric operator ${i}`)}}(t);case op.Match:return function(t,e){const i=t.args.length,n=new Array(i);for(let e=0;e{const e=n[0](t);for(let r=1;r4)throw new Error(`Expected a color with 3 or 4 values for ${e}`);return i}const Np="renderOrder";var Dp=class extends no{constructor(t){t=t||{};const e=Object.assign({},t);delete e.style,delete e.renderBuffer,delete e.updateWhileAnimating,delete e.updateWhileInteracting,super(e),this.declutter_=void 0!==t.declutter&&t.declutter,this.renderBuffer_=void 0!==t.renderBuffer?t.renderBuffer:100,this.style_=null,this.styleFunction_=void 0,this.setStyle(t.style),this.updateWhileAnimating_=void 0!==t.updateWhileAnimating&&t.updateWhileAnimating,this.updateWhileInteracting_=void 0!==t.updateWhileInteracting&&t.updateWhileInteracting}getDeclutter(){return this.declutter_}getFeatures(t){return super.getFeatures(t)}getRenderBuffer(){return this.renderBuffer_}getRenderOrder(){return this.get(Np)}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}getUpdateWhileAnimating(){return this.updateWhileAnimating_}getUpdateWhileInteracting(){return this.updateWhileInteracting_}renderDeclutter(t){t.declutterTree||(t.declutterTree=new Uh(9)),this.getRenderer().renderDeclutter(t)}setRenderOrder(t){this.set(Np,t)}setStyle(t){this.style_=function(t){if(void 0===t)return kf;if(!t)return null;if("function"==typeof t)return t;if(t instanceof Bf)return t;if(!Array.isArray(t))return pp([t]);if(0===t.length)return[];const e=t.length,i=t[0];if(i instanceof Bf){const i=new Array(e);for(let n=0;n80*i){n=s=t[0],r=o=t[1];for(var f=i;fs&&(s=a),l>o&&(o=l);h=0!==(h=Math.max(s-n,o-r))?32767/h:0}return Wp(d,g,i,n,r,h,0),g}function Xp(t,e,i,n,r){var s,o;if(r===gm(t,e,i,n)>0)for(s=e;s=e;s-=n)o=cm(s,t[s],t[s+1],o);return o&&rm(o,o.next)&&(um(o),o=o.next),o}function Vp(t,e){if(!t)return t;e||(e=t);var i,n=t;do{if(i=!1,n.steiner||!rm(n,n.next)&&0!==nm(n.prev,n,n.next))n=n.next;else{if(um(n),(n=e=n.prev)===n.next)break;i=!0}}while(i||n!==e);return e}function Wp(t,e,i,n,r,s,o){if(t){!o&&s&&function(t,e,i,n){var r=t;do{0===r.z&&(r.z=Qp(r.x,r.y,e,i,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,function(t){var e,i,n,r,s,o,a,l,h=1;do{for(i=t,t=null,s=null,o=0;i;){for(o++,n=i,a=0,e=0;e0||l>0&&n;)0!==a&&(0===l||!n||i.z<=n.z)?(r=i,i=i.nextZ,a--):(r=n,n=n.nextZ,l--),s?s.nextZ=r:t=r,r.prevZ=s,s=r;i=n}s.nextZ=null,h*=2}while(o>1)}(r)}(t,n,r,s);for(var a,l,h=t;t.prev!==t.next;)if(a=t.prev,l=t.next,s?Yp(t,n,r,s):Zp(t))e.push(a.i/i|0),e.push(t.i/i|0),e.push(l.i/i|0),um(t),t=l.next,h=l.next;else if((t=l)===h){o?1===o?Wp(t=$p(Vp(t),e,i),e,i,n,r,s,2):2===o&&qp(t,e,i,n,r,s):Wp(Vp(t),e,i,n,r,s,1);break}}}function Zp(t){var e=t.prev,i=t,n=t.next;if(nm(e,i,n)>=0)return!1;for(var r=e.x,s=i.x,o=n.x,a=e.y,l=i.y,h=n.y,c=rs?r>o?r:o:s>o?s:o,g=a>l?a>h?a:h:l>h?l:h,f=n.next;f!==e;){if(f.x>=c&&f.x<=d&&f.y>=u&&f.y<=g&&em(r,a,s,l,o,h,f.x,f.y)&&nm(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function Yp(t,e,i,n){var r=t.prev,s=t,o=t.next;if(nm(r,s,o)>=0)return!1;for(var a=r.x,l=s.x,h=o.x,c=r.y,u=s.y,d=o.y,g=al?a>h?a:h:l>h?l:h,m=c>u?c>d?c:d:u>d?u:d,_=Qp(g,f,e,i,n),y=Qp(p,m,e,i,n),x=t.prevZ,v=t.nextZ;x&&x.z>=_&&v&&v.z<=y;){if(x.x>=g&&x.x<=p&&x.y>=f&&x.y<=m&&x!==r&&x!==o&&em(a,c,l,u,h,d,x.x,x.y)&&nm(x.prev,x,x.next)>=0)return!1;if(x=x.prevZ,v.x>=g&&v.x<=p&&v.y>=f&&v.y<=m&&v!==r&&v!==o&&em(a,c,l,u,h,d,v.x,v.y)&&nm(v.prev,v,v.next)>=0)return!1;v=v.nextZ}for(;x&&x.z>=_;){if(x.x>=g&&x.x<=p&&x.y>=f&&x.y<=m&&x!==r&&x!==o&&em(a,c,l,u,h,d,x.x,x.y)&&nm(x.prev,x,x.next)>=0)return!1;x=x.prevZ}for(;v&&v.z<=y;){if(v.x>=g&&v.x<=p&&v.y>=f&&v.y<=m&&v!==r&&v!==o&&em(a,c,l,u,h,d,v.x,v.y)&&nm(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function $p(t,e,i){var n=t;do{var r=n.prev,s=n.next.next;!rm(r,s)&&sm(r,n,n.next,s)&&lm(r,s)&&lm(s,r)&&(e.push(r.i/i|0),e.push(n.i/i|0),e.push(s.i/i|0),um(n),um(n.next),n=t=s),n=n.next}while(n!==t);return Vp(n)}function qp(t,e,i,n,r,s){var o=t;do{for(var a=o.next.next;a!==o.prev;){if(o.i!==a.i&&im(o,a)){var l=hm(o,a);return o=Vp(o,o.next),l=Vp(l,l.next),Wp(o,e,i,n,r,s,0),void Wp(l,e,i,n,r,s,0)}a=a.next}o=o.next}while(o!==t)}function Kp(t,e){return t.x-e.x}function Hp(t,e){var i=function(t,e){var i,n=e,r=t.x,s=t.y,o=-1/0;do{if(s<=n.y&&s>=n.next.y&&n.next.y!==n.y){var a=n.x+(s-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(a<=r&&a>o&&(o=a,i=n.x=n.x&&n.x>=c&&r!==n.x&&em(si.x||n.x===i.x&&Jp(i,n)))&&(i=n,d=l)),n=n.next}while(n!==h);return i}(t,e);if(!i)return e;var n=hm(i,t);return Vp(n,n.next),Vp(i,i.next)}function Jp(t,e){return nm(t.prev,t,e.prev)<0&&nm(e.next,t,t.next)<0}function Qp(t,e,i,n,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-i)*r|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*r|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function tm(t){var e=t,i=t;do{(e.x=(t-o)*(s-a)&&(t-o)*(n-a)>=(i-o)*(e-a)&&(i-o)*(s-a)>=(r-o)*(n-a)}function im(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var i=t;do{if(i.i!==t.i&&i.next.i!==t.i&&i.i!==e.i&&i.next.i!==e.i&&sm(i,i.next,t,e))return!0;i=i.next}while(i!==t);return!1}(t,e)&&(lm(t,e)&&lm(e,t)&&function(t,e){var i=t,n=!1,r=(t.x+e.x)/2,s=(t.y+e.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&r<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(n=!n),i=i.next}while(i!==t);return n}(t,e)&&(nm(t.prev,t,e.prev)||nm(t,e.prev,e))||rm(t,e)&&nm(t.prev,t,t.next)>0&&nm(e.prev,e,e.next)>0)}function nm(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function rm(t,e){return t.x===e.x&&t.y===e.y}function sm(t,e,i,n){var r=am(nm(t,e,i)),s=am(nm(t,e,n)),o=am(nm(i,n,t)),a=am(nm(i,n,e));return r!==s&&o!==a||(!(0!==r||!om(t,i,e))||(!(0!==s||!om(t,n,e))||(!(0!==o||!om(i,t,n))||!(0!==a||!om(i,e,n)))))}function om(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function am(t){return t>0?1:t<0?-1:0}function lm(t,e){return nm(t.prev,t,t.next)<0?nm(t,e,t.next)>=0&&nm(t,t.prev,e)>=0:nm(t,e,t.prev)<0||nm(t,t.next,e)<0}function hm(t,e){var i=new dm(t.i,t.x,t.y),n=new dm(e.i,e.x,e.y),r=t.next,s=e.prev;return t.next=e,e.prev=t,i.next=r,r.prev=i,n.next=i,i.prev=n,s.next=n,n.prev=s,n}function cm(t,e,i,n){var r=new dm(t,e,i);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function um(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function dm(t,e,i){this.i=t,this.x=e,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function gm(t,e,i,n){for(var r=0,s=e,o=i-n;s0&&(n+=t[r-1].length,i.holes.push(n))}return i};var fm=Bp(Up.exports);const pm=[],mm={vertexPosition:0,indexPosition:0};function _m(t,e,i,n,r){t[e+0]=i,t[e+1]=n,t[e+2]=r}function ym(t,e){const i=256,n=255;return(e=e||[])[0]=Math.floor(t/i/i/i)/n,e[1]=Math.floor(t/i/i)%i/n,e[2]=Math.floor(t/i)%i/n,e[3]=t%i/n,e}function xm(t){let e=0;const i=256,n=255;return e+=Math.round(t[0]*i*i*i*n),e+=Math.round(t[1]*i*i*n),e+=Math.round(t[2]*i*n),e+=Math.round(t[3]*n),e}function vm(){const t='const e="GENERATE_POLYGON_BUFFERS",t="GENERATE_POINT_BUFFERS",n="GENERATE_LINE_STRING_BUFFERS";function r(e,t){const n=t[0],r=t[1];return t[0]=e[0]*n+e[2]*r+e[4],t[1]=e[1]*n+e[3]*r+e[5],t}function x(e,t){const n=(r=t)[0]*r[3]-r[1]*r[2];var r;!function(e,t){if(!e)throw new Error(t)}(0!==n,"Transformation matrix cannot be inverted");const x=t[0],i=t[1],u=t[2],o=t[3],f=t[4],s=t[5];return e[0]=o/n,e[1]=-i/n,e[2]=-u/n,e[3]=x/n,e[4]=(u*s-o*f)/n,e[5]=-(x*s-i*f)/n,e}function i(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}new Array(6);var u={exports:{}};function o(e,t,n){n=n||2;var r,x,i,u,o,s,l,v=t&&t.length,c=v?t[0]*n:e.length,h=f(e,0,c,n,!0),g=[];if(!h||h.next===h.prev)return g;if(v&&(h=function(e,t,n,r){var x,i,u,o=[];for(x=0,i=t.length;x80*n){r=i=e[0],x=u=e[1];for(var b=n;bi&&(i=o),s>u&&(u=s);l=0!==(l=Math.max(i-r,u-x))?32767/l:0}return a(h,g,n,r,x,l,0),g}function f(e,t,n,r,x){var i,u;if(x===O(e,t,n,r)>0)for(i=t;i=t;i-=r)u=P(i,e[i],e[i+1],u);return u&&m(u,u.next)&&(B(u),u=u.next),u}function s(e,t){if(!e)return e;t||(t=e);var n,r=e;do{if(n=!1,r.steiner||!m(r,r.next)&&0!==M(r.prev,r,r.next))r=r.next;else{if(B(r),(r=t=r.prev)===r.next)break;n=!0}}while(n||r!==t);return t}function a(e,t,n,r,x,i,u){if(e){!u&&i&&function(e,t,n,r){var x=e;do{0===x.z&&(x.z=b(x.x,x.y,t,n,r)),x.prevZ=x.prev,x.nextZ=x.next,x=x.next}while(x!==e);x.prevZ.nextZ=null,x.prevZ=null,function(e){var t,n,r,x,i,u,o,f,s=1;do{for(n=e,e=null,i=null,u=0;n;){for(u++,r=n,o=0,t=0;t0||f>0&&r;)0!==o&&(0===f||!r||n.z<=r.z)?(x=n,n=n.nextZ,o--):(x=r,r=r.nextZ,f--),i?i.nextZ=x:e=x,x.prevZ=i,i=x;n=r}i.nextZ=null,s*=2}while(u>1)}(x)}(e,r,x,i);for(var o,f,p=e;e.prev!==e.next;)if(o=e.prev,f=e.next,i?v(e,r,x,i):l(e))t.push(o.i/n|0),t.push(e.i/n|0),t.push(f.i/n|0),B(e),e=f.next,p=f.next;else if((e=f)===p){u?1===u?a(e=c(s(e),t,n),t,n,r,x,i,2):2===u&&h(e,t,n,r,x,i):a(s(e),t,n,r,x,i,1);break}}}function l(e){var t=e.prev,n=e,r=e.next;if(M(t,n,r)>=0)return!1;for(var x=t.x,i=n.x,u=r.x,o=t.y,f=n.y,s=r.y,a=xi?x>u?x:u:i>u?i:u,c=o>f?o>s?o:s:f>s?f:s,h=r.next;h!==t;){if(h.x>=a&&h.x<=v&&h.y>=l&&h.y<=c&&Z(x,o,i,f,u,s,h.x,h.y)&&M(h.prev,h,h.next)>=0)return!1;h=h.next}return!0}function v(e,t,n,r){var x=e.prev,i=e,u=e.next;if(M(x,i,u)>=0)return!1;for(var o=x.x,f=i.x,s=u.x,a=x.y,l=i.y,v=u.y,c=of?o>s?o:s:f>s?f:s,y=a>l?a>v?a:v:l>v?l:v,g=b(c,h,t,n,r),d=b(p,y,t,n,r),w=e.prevZ,m=e.nextZ;w&&w.z>=g&&m&&m.z<=d;){if(w.x>=c&&w.x<=p&&w.y>=h&&w.y<=y&&w!==x&&w!==u&&Z(o,a,f,l,s,v,w.x,w.y)&&M(w.prev,w,w.next)>=0)return!1;if(w=w.prevZ,m.x>=c&&m.x<=p&&m.y>=h&&m.y<=y&&m!==x&&m!==u&&Z(o,a,f,l,s,v,m.x,m.y)&&M(m.prev,m,m.next)>=0)return!1;m=m.nextZ}for(;w&&w.z>=g;){if(w.x>=c&&w.x<=p&&w.y>=h&&w.y<=y&&w!==x&&w!==u&&Z(o,a,f,l,s,v,w.x,w.y)&&M(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;m&&m.z<=d;){if(m.x>=c&&m.x<=p&&m.y>=h&&m.y<=y&&m!==x&&m!==u&&Z(o,a,f,l,s,v,m.x,m.y)&&M(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function c(e,t,n){var r=e;do{var x=r.prev,i=r.next.next;!m(x,i)&&A(x,r,r.next,i)&&F(x,i)&&F(i,x)&&(t.push(x.i/n|0),t.push(r.i/n|0),t.push(i.i/n|0),B(r),B(r.next),r=e=i),r=r.next}while(r!==e);return s(r)}function h(e,t,n,r,x,i){var u=e;do{for(var o=u.next.next;o!==u.prev;){if(u.i!==o.i&&w(u,o)){var f=I(u,o);return u=s(u,u.next),f=s(f,f.next),a(u,t,n,r,x,i,0),void a(f,t,n,r,x,i,0)}o=o.next}u=u.next}while(u!==e)}function p(e,t){return e.x-t.x}function y(e,t){var n=function(e,t){var n,r=t,x=e.x,i=e.y,u=-1/0;do{if(i<=r.y&&i>=r.next.y&&r.next.y!==r.y){var o=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(o<=x&&o>u&&(u=o,n=r.x=r.x&&r.x>=a&&x!==r.x&&Z(in.x||r.x===n.x&&g(n,r)))&&(n=r,v=f)),r=r.next}while(r!==s);return n}(e,t);if(!n)return t;var r=I(n,e);return s(r,r.next),s(n,n.next)}function g(e,t){return M(e.prev,e,t.prev)<0&&M(t.next,e,e.next)<0}function b(e,t,n,r,x){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*x|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*x|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function d(e){var t=e,n=e;do{(t.x=(e-u)*(i-o)&&(e-u)*(r-o)>=(n-u)*(t-o)&&(n-u)*(i-o)>=(x-u)*(r-o)}function w(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&A(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&(F(e,t)&&F(t,e)&&function(e,t){var n=e,r=!1,x=(e.x+t.x)/2,i=(e.y+t.y)/2;do{n.y>i!=n.next.y>i&&n.next.y!==n.y&&x<(n.next.x-n.x)*(i-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==e);return r}(e,t)&&(M(e.prev,e,t.prev)||M(e,t.prev,t))||m(e,t)&&M(e.prev,e,e.next)>0&&M(t.prev,t,t.next)>0)}function M(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function m(e,t){return e.x===t.x&&e.y===t.y}function A(e,t,n,r){var x=z(M(e,t,n)),i=z(M(e,t,r)),u=z(M(n,r,e)),o=z(M(n,r,t));return x!==i&&u!==o||(!(0!==x||!E(e,n,t))||(!(0!==i||!E(e,r,t))||(!(0!==u||!E(n,e,r))||!(0!==o||!E(n,t,r)))))}function E(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function z(e){return e>0?1:e<0?-1:0}function F(e,t){return M(e.prev,e,e.next)<0?M(e,t,e.next)>=0&&M(e,e.prev,t)>=0:M(e,t,e.prev)<0||M(e,e.next,t)<0}function I(e,t){var n=new _(e.i,e.x,e.y),r=new _(t.i,t.x,t.y),x=e.next,i=t.prev;return e.next=t,t.prev=e,n.next=x,x.prev=n,r.next=n,n.prev=r,i.next=r,r.prev=i,r}function P(e,t,n,r){var x=new _(e,t,n);return r?(x.next=r.next,x.prev=r,r.next.prev=x,r.next=x):(x.prev=x,x.next=x),x}function B(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function _(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function O(e,t,n,r){for(var x=0,i=t,u=n-r;i0&&(r+=e[x-1].length,n.holes.push(r))}return n};var N=i(u.exports);const R=[],S={vertexPosition:0,indexPosition:0};function T(e,t,n,r,x){e[t+0]=n,e[t+1]=r,e[t+2]=x}function U(e,t,n,r,x,i){const u=3+x,o=e[t+0],f=e[t+1],s=R;s.length=x;for(let n=0;n0?f:2*Math.PI-f}let b=-1,d=-1;const Z=null!==i;if(null!==x){b=g(p,y,r(s,[...[e[x],e[x+1]]]))}if(Z){d=g(y,p,r(s,[...[e[i],e[i+1]]]))}return u.push(c[0],c[1],h[0],h[1],b,d,a,0),u.push(...f),u.push(c[0],c[1],h[0],h[1],b,d,a,1),u.push(...f),u.push(c[0],c[1],h[0],h[1],b,d,a,2),u.push(...f),u.push(c[0],c[1],h[0],h[1],b,d,a,3),u.push(...f),o.push(v,v+1,v+2,v+1,v+3,v+2),a+Math.sqrt((y[0]-p[0])*(y[0]-p[0])+(y[1]-p[1])*(y[1]-p[1]))}function G(e,t,n,r,x){const i=2+x;let u=t;const o=e.slice(u,u+x);u+=x;const f=e[u++];let s=0;const a=new Array(f-1);for(let t=0;t{const i=r.data;switch(i.type){case t:{const e=3,t=2,n=i.customAttributesSize,r=t+n,x=new Float32Array(i.renderInstructions),u=x.length/r,o=4*u*(n+e),f=new Uint32Array(6*u),s=new Float32Array(o);let a;for(let e=0;e0?c=o+(n-1)*r:l&&(c=i-r);let h=null;n{const e=t.data;if(e.type===Gp){const i=e.projectionTransform;this.verticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.verticesBuffer_),this.indicesBuffer_.fromArrayBuffer(e.indexBuffer),this.helper.flushBufferData(this.indicesBuffer_),this.renderTransform_=i,Zt(this.invertRenderTransform_,this.renderTransform_),this.renderInstructions_=new Float32Array(t.data.renderInstructions),e.id===this.lastSentId&&(this.ready=!0),this.getLayer().changed()}})),this.featureCache_={},this.featureCount_=0;const s=this.getLayer().getSource();this.sourceListenKeys_=[A(s,ic,this.handleSourceFeatureAdded_,this),A(s,nc,this.handleSourceFeatureChanged_,this),A(s,sc,this.handleSourceFeatureDelete_,this),A(s,rc,this.handleSourceFeatureClear_,this)],s.forEachFeature((t=>{this.featureCache_[U(t)]={feature:t,properties:t.getProperties(),geometry:t.getGeometry()},this.featureCount_++}))}afterHelperCreated(){this.program_=this.helper.getProgram(this.fragmentShader_,this.vertexShader_),this.hitDetectionEnabled_&&(this.hitRenderTarget_=new hg(this.helper))}handleSourceFeatureAdded_(t){const e=t.feature;this.featureCache_[U(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()},this.featureCount_++}handleSourceFeatureChanged_(t){const e=t.feature;this.featureCache_[U(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()}}handleSourceFeatureDelete_(t){const e=t.feature;delete this.featureCache_[U(e)],this.featureCount_--}handleSourceFeatureClear_(){this.featureCache_={},this.featureCount_=0}renderFrame(t){const e=this.helper.getGL();this.preRender(e,t);const[i,n,r]=this.getWorldParameters_(t);this.renderWorlds(t,!1,i,n,r),this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent);const s=this.helper.getCanvas();return this.hitDetectionEnabled_&&(this.renderWorlds(t,!0,i,n,r),this.hitRenderTarget_.clearCachedData()),this.postRender(e,t),s}getWorldParameters_(t){const e=t.viewState.projection,i=this.getLayer().getSource().getWrapX()&&e.canWrapX(),n=e.getExtent(),r=t.extent,s=i?Fe(n):null,o=i?Math.ceil((r[2]-n[2])/s)+1:1;return[i?Math.floor((r[0]-n[0])/s):0,o,s]}prepareFrameInternal(t){const e=this.getLayer(),i=e.getSource(),n=t.viewState,r=!t.viewHints[As]&&!t.viewHints[Os],s=!ce(this.previousExtent_,t.extent),o=this.sourceRevision_e+(t[i].size||1)),0)}function Tm(t,e,i,n){const r=(2+Em(i))*t.geometriesCount;e&&e.length===r||(e=new Float32Array(r));const s=[];let o=0;for(const r in t.entries){const a=t.entries[r];for(let t=0,r=a.flatCoordss.length;t({name:`a_${t}`,size:this.customAttributes_[t].size||1,type:tg.FLOAT})));this.polygonAttributesDesc_=[{name:Lm,size:2,type:tg.FLOAT},...n],this.lineStringAttributesDesc_=[{name:Im,size:2,type:tg.FLOAT},{name:Mm,size:2,type:tg.FLOAT},{name:Om,size:2,type:tg.FLOAT},{name:Nm,size:1,type:tg.FLOAT},{name:Am,size:1,type:tg.FLOAT},...n],this.pointAttributesDesc_=[{name:Lm,size:2,type:tg.FLOAT},{name:Fm,size:1,type:tg.FLOAT},...n],i.uniforms&&this.helper_.addUniforms(i.uniforms)}async generateBuffers(t,e){const i=this.generateRenderInstructions_(t,e),[n,r,s]=await Promise.all([this.generateBuffersForType_(i.polygonInstructions,"Polygon",e),this.generateBuffersForType_(i.lineStringInstructions,"LineString",e),this.generateBuffersForType_(i.pointInstructions,"Point",e)]);return{polygonBuffers:n,lineStringBuffers:r,pointBuffers:s,invertVerticesTransform:Zt([1,0,0,1,0,0],e)}}generateRenderInstructions_(t,e){return{polygonInstructions:this.hasFill_?Rm(t.polygonBatch,new Float32Array(0),this.customAttributes_,e):null,lineStringInstructions:this.hasStroke_?Cm(t.lineStringBatch,new Float32Array(0),this.customAttributes_,e):null,pointInstructions:this.hasSymbol_?Tm(t.pointBatch,new Float32Array(0),this.customAttributes_,e):null}}generateBuffersForType_(t,e,i){if(null===t)return null;const n=Pm++;let r;switch(e){case"Polygon":r=kp;break;case"LineString":r=jp;break;case"Point":r=Gp}const s={id:n,type:r,renderInstructions:t.buffer,renderInstructionsTransform:i,customAttributesSize:Em(this.customAttributes_)};return bm.postMessage(s,[t.buffer]),t=null,new Promise((t=>{const e=i=>{const r=i.data;if(r.id!==n)return;if(bm.removeEventListener("message",e),!this.helper_.getGL())return;const s=new Yd(cd,gd).fromArrayBuffer(r.vertexBuffer),o=new Yd(ud,gd).fromArrayBuffer(r.indexBuffer);this.helper_.flushBufferData(s),this.helper_.flushBufferData(o),t([o,s])};bm.addEventListener("message",e)}))}render(t,e,i){this.hasFill_&&this.renderInternal_(t.polygonBuffers[0],t.polygonBuffers[1],this.fillProgram_,this.polygonAttributesDesc_,e,i),this.hasStroke_&&this.renderInternal_(t.lineStringBuffers[0],t.lineStringBuffers[1],this.strokeProgram_,this.lineStringAttributesDesc_,e,i),this.hasSymbol_&&this.renderInternal_(t.pointBuffers[0],t.pointBuffers[1],this.symbolProgram_,this.pointAttributesDesc_,e,i)}renderInternal_(t,e,i,n,r,s){this.helper_.useProgram(i,r),this.helper_.bindBuffer(e),this.helper_.bindBuffer(t),this.helper_.enableAttributes(n),s();const o=t.getSize();this.helper_.drawElements(0,o)}};const km={...Qd,RENDER_EXTENT:"u_renderExtent",GLOBAL_ALPHA:"u_globalAlpha"};var Gm=class extends pg{constructor(t,e){super(t,{uniforms:{[km.RENDER_EXTENT]:[0,0,0,0],[km.GLOBAL_ALPHA]:1},postProcesses:e.postProcesses}),this.sourceRevision_=-1,this.previousExtent_=[1/0,1/0,-1/0,-1/0],this.currentTransform_=[1,0,0,1,0,0],this.tmpTransform_=[1,0,0,1,0,0],this.tmpMat4_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this.currentFrameStateTransform_=[1,0,0,1,0,0],this.styles_=[],this.styleRenderers_=[],this.buffers_=[],this.applyOptions_(e),this.batch_=new hf;const i=this.getLayer().getSource();this.batch_.addFeatures(i.getFeatures()),this.sourceListenKeys_=[A(i,ic,this.handleSourceFeatureAdded_,this),A(i,nc,this.handleSourceFeatureChanged_,this),A(i,sc,this.handleSourceFeatureDelete_,this),A(i,rc,this.handleSourceFeatureClear_,this)]}applyOptions_(t){this.styles_=Array.isArray(t.style)?t.style:[t.style]}createRenderers_(){this.buffers_=[],this.styleRenderers_=this.styles_.map((t=>new Dm(t,this.helper)))}reset(t){this.applyOptions_(t),this.helper&&this.createRenderers_(),super.reset(t)}afterHelperCreated(){this.createRenderers_()}handleSourceFeatureAdded_(t){const e=t.feature;this.batch_.addFeature(e)}handleSourceFeatureChanged_(t){const e=t.feature;this.batch_.changeFeature(e)}handleSourceFeatureDelete_(t){const e=t.feature;this.batch_.removeFeature(e)}handleSourceFeatureClear_(){this.batch_.clear()}applyUniforms_(t){jt(this.tmpTransform_,this.currentFrameStateTransform_),kt(this.tmpTransform_,t),this.helper.setUniformMatrixValue(km.PROJECTION_MATRIX,Jd(this.tmpMat4_,this.tmpTransform_)),Zt(this.tmpTransform_,this.tmpTransform_),this.helper.setUniformMatrixValue(km.SCREEN_TO_WORLD_MATRIX,Jd(this.tmpMat4_,this.tmpTransform_))}renderFrame(t){const e=this.helper.getGL();this.preRender(e,t),this.helper.prepareDraw(t),this.currentFrameStateTransform_=this.helper.makeProjectionTransform(t,this.currentFrameStateTransform_);const i=this.getLayer().getSource(),n=t.viewState.projection,r=i.getWrapX()&&n.canWrapX(),s=n.getExtent(),o=t.extent,a=r?Fe(s):null,l=r?Math.ceil((o[2]-s[2])/a)+1:1;let h=r?Math.floor((o[0]-s[0])/a):0;Vt(this.currentFrameStateTransform_,h*a,0);do{for(let e=0,i=this.styleRenderers_.length;e{this.applyUniforms_(n.invertVerticesTransform)}))}Vt(this.currentFrameStateTransform_,a,0)}while(++ht.generateBuffers(this.batch_,l).then((t=>{this.buffers_[e]=t}))));Promise.all(h).then((()=>{this.ready=!0,this.getLayer().changed()})),this.previousExtent_=t.extent.slice()}return!0}forEachFeatureAtCoordinate(t,e,i,n,r){}disposeInternal(){this.sourceListenKeys_.forEach((function(t){N(t)})),this.sourceListenKeys_=null,super.disposeInternal()}};var jm=class extends Eg{constructor(t,e){super(t,e),this.styles_=[],this.styleRenderers_=[],this.currentFrameStateTransform_=[1,0,0,1,0,0],this.tmpTransform_=[1,0,0,1,0,0],this.tmpMat4_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this.applyOptions_(e)}reset(t){super.reset(t),this.applyOptions_(t),this.helper&&this.createRenderers_()}applyOptions_(t){this.styles_=Array.isArray(t.style)?t.style:[t.style]}createRenderers_(){this.styleRenderers_=this.styles_.map((t=>new Dm(t,this.helper)))}afterHelperCreated(){this.createRenderers_()}createTileRepresentation(t){const e=new cf(t,this.styleRenderers_),i=()=>{e.ready&&(this.getLayer().changed(),e.removeEventListener(v,i))};return e.addEventListener(v,i),e}beforeTilesRender(t,e){super.beforeTilesRender(t,!0),this.helper.makeProjectionTransform(t,this.currentFrameStateTransform_)}applyUniforms_(t,e,i){jt(this.tmpTransform_,this.currentFrameStateTransform_),kt(this.tmpTransform_,i),this.helper.setUniformMatrixValue(mg.PROJECTION_MATRIX,Jd(this.tmpMat4_,this.tmpTransform_)),Zt(this.tmpTransform_,this.currentFrameStateTransform_),this.helper.setUniformMatrixValue(mg.SCREEN_TO_WORLD_MATRIX,Jd(this.tmpMat4_,this.tmpTransform_)),this.helper.setUniformFloatValue(mg.GLOBAL_ALPHA,t),this.helper.setUniformFloatVec4(mg.RENDER_EXTENT,e)}renderTile(t,e,i,n,r,s,o,a,l,h,c){const u=be(a,n,a);for(let e=0,n=this.styleRenderers_.length;e{this.applyUniforms_(c,u,r.invertVerticesTransform)}))}}renderDeclutter(t){}disposeInternal(){super.disposeInternal()}};const Bm=0,Um=1,zm=2,Xm=3,Vm=4,Wm=5,Zm=6,Ym=7,$m=8,qm=9,Km=10,Hm=11,Jm=12,Qm=[$m],t_=[Jm],e_=[Um],i_=[Xm];var n_=class extends Ul{constructor(t,e,i,n){super(),this.tolerance=t,this.maxExtent=e,this.pixelRatio=n,this.maxLineWidth=0,this.resolution=i,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_=null,this.bufferedMaxExtent_=null,this.instructions=[],this.coordinates=[],this.tmpCoordinate_=[],this.hitDetectionInstructions=[],this.state={}}applyPixelRatio(t){const e=this.pixelRatio;return 1==e?t:t.map((function(t){return t*e}))}appendFlatPointCoordinates(t,e){const i=this.getBufferedMaxExtent(),n=this.tmpCoordinate_,r=this.coordinates;let s=r.length;for(let o=0,a=t.length;oo&&(this.instructions.push([Vm,o,l,t,i,Hn]),this.hitDetectionInstructions.push([Vm,o,l,t,n||i,Hn]));break;case"Point":a=t.getFlatCoordinates(),this.coordinates.push(a[0],a[1]),l=this.coordinates.length,this.instructions.push([Vm,o,l,t,i]),this.hitDetectionInstructions.push([Vm,o,l,t,n||i])}this.endGeometry(e)}beginGeometry(t,e){this.beginGeometryInstruction1_=[Bm,e,0,t],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[Bm,e,0,t],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)}finish(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}}reverseHitDetectionInstructions(){const t=this.hitDetectionInstructions;let e;t.reverse();const i=t.length;let n,r,s=-1;for(e=0;ethis.maxLineWidth&&(this.maxLineWidth=i.lineWidth,this.bufferedMaxExtent_=null)}else i.strokeStyle=void 0,i.lineCap=void 0,i.lineDash=null,i.lineDashOffset=void 0,i.lineJoin=void 0,i.lineWidth=void 0,i.miterLimit=void 0}createFill(t){const e=t.fillStyle,i=[Km,e];return"string"!=typeof e&&i.push(!0),i}applyStroke(t){this.instructions.push(this.createStroke(t))}createStroke(t){return[Hm,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]}updateFillStyle(t,e){const i=t.fillStyle;"string"==typeof i&&t.currentFillStyle==i||(void 0!==i&&this.instructions.push(e.call(this,t)),t.currentFillStyle=i)}updateStrokeStyle(t,e){const i=t.strokeStyle,n=t.lineCap,r=t.lineDash,s=t.lineDashOffset,o=t.lineJoin,a=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=i||t.currentLineCap!=n||r!=t.currentLineDash&&!c(t.currentLineDash,r)||t.currentLineDashOffset!=s||t.currentLineJoin!=o||t.currentLineWidth!=a||t.currentMiterLimit!=l)&&(void 0!==i&&e.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=n,t.currentLineDash=r,t.currentLineDashOffset=s,t.currentLineJoin=o,t.currentLineWidth=a,t.currentMiterLimit=l)}endGeometry(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;const e=[Ym,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)}getBufferedMaxExtent(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=Qt(this.maxExtent),this.maxLineWidth>0)){const t=this.resolution*(this.maxLineWidth+1)/2;Jt(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_}};var r_=class extends n_{constructor(t,e,i,n){super(t,e,i,n),this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.anchorX_=void 0,this.anchorY_=void 0,this.height_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.scale_=void 0,this.width_=void 0,this.declutterMode_=void 0,this.declutterImageWithText_=void 0}drawPoint(t,e){if(!this.image_)return;this.beginGeometry(t,e);const i=t.getFlatCoordinates(),n=t.getStride(),r=this.coordinates.length,s=this.appendFlatPointCoordinates(i,n);this.instructions.push([Zm,r,s,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]),this.hitDetectionInstructions.push([Zm,r,s,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(e)}drawMultiPoint(t,e){if(!this.image_)return;this.beginGeometry(t,e);const i=t.getFlatCoordinates(),n=t.getStride(),r=this.coordinates.length,s=this.appendFlatPointCoordinates(i,n);this.instructions.push([Zm,r,s,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]),this.hitDetectionInstructions.push([Zm,r,s,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(e)}finish(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,super.finish()}setImageStyle(t,e){const i=t.getAnchor(),n=t.getSize(),r=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=i[0],this.anchorY_=i[1],this.hitDetectionImage_=t.getHitDetectionImage(),this.image_=t.getImage(this.pixelRatio),this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=r[0],this.originY_=r[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=n[0],this.declutterMode_=t.getDeclutterMode(),this.declutterImageWithText_=e}};var s_=class extends n_{constructor(t,e,i,n){super(t,e,i,n)}drawFlatCoordinates_(t,e,i,n){const r=this.coordinates.length,s=this.appendFlatLineCoordinates(t,e,i,n,!1,!1),o=[qm,r,s];return this.instructions.push(o),this.hitDetectionInstructions.push(o),i}drawLineString(t,e){const i=this.state,n=i.strokeStyle,r=i.lineWidth;if(void 0===n||void 0===r)return;this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Hm,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,vo,0],e_);const s=t.getFlatCoordinates(),o=t.getStride();this.drawFlatCoordinates_(s,0,s.length,o),this.hitDetectionInstructions.push(t_),this.endGeometry(e)}drawMultiLineString(t,e){const i=this.state,n=i.strokeStyle,r=i.lineWidth;if(void 0===n||void 0===r)return;this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Hm,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,vo,0],e_);const s=t.getEnds(),o=t.getFlatCoordinates(),a=t.getStride();let l=0;for(let t=0,e=s.length;t=t){const e=(t-a+u)/u,d=yi(i,h,e),g=yi(n,c,e);l.push(d,g),s.push(l),l=[d,g],a==t&&(o+=r),a=0}else if(a0&&s.push(l),s}function l_(t,e,i,n,r){let s,o,a,l,h,c,u,d,g,f,p=i,m=i,_=0,y=0,x=i;for(o=i;ot&&(y>_&&(_=y,p=x,m=o),y=0,x=o-r)),a=l,u=g,d=f),h=i,c=n}return y+=l,y>_?[x,o]:[p,m]}const h_={left:0,center:.5,right:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1};var c_=class extends n_{constructor(t,e,i,n){super(t,e,i,n),this.labels_=null,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=void 0,this.textRotation_=0,this.textFillState_=null,this.fillStates={},this.fillStates[yo]={fillStyle:yo},this.textStrokeState_=null,this.strokeStates={},this.textState_={},this.textStates={},this.textKey_="",this.fillKey_="",this.strokeKey_="",this.declutterImageWithText_=void 0}finish(){const t=super.finish();return t.textStates=this.textStates,t.fillStates=this.fillStates,t.strokeStates=this.strokeStates,t}drawText(t,e){const i=this.textFillState_,n=this.textStrokeState_,r=this.textState_;if(""===this.text_||!r||!i&&!n)return;const s=this.coordinates;let o=s.length;const a=t.getType();let l=null,h=t.getStride();if("line"!==r.placement||"LineString"!=a&&"MultiLineString"!=a&&"Polygon"!=a&&"MultiPolygon"!=a){let i=r.overflow?null:[];switch(a){case"Point":case"MultiPoint":l=t.getFlatCoordinates();break;case"LineString":l=t.getFlatMidpoint();break;case"Circle":l=t.getCenter();break;case"MultiLineString":l=t.getFlatMidpoints(),h=2;break;case"Polygon":l=t.getFlatInteriorPoint(),r.overflow||i.push(l[2]/this.resolution),h=3;break;case"MultiPolygon":const e=t.getFlatInteriorPoints();l=[];for(let t=0,n=e.length;t{const n=s[2*(t+i)]===l[i*h]&&s[2*(t+i)+1]===l[i*h+1];return n||--t,n}))}this.saveTextStates_(),(r.backgroundFill||r.backgroundStroke)&&(this.setFillStrokeStyle(r.backgroundFill,r.backgroundStroke),r.backgroundFill&&this.updateFillStyle(this.state,this.createFill),r.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(t,e);let c=r.padding;if(c!=Ro&&(r.scale[0]<0||r.scale[1]<0)){let t=r.padding[0],e=r.padding[1],i=r.padding[2],n=r.padding[3];r.scale[0]<0&&(e=-e,n=-n),r.scale[1]<0&&(t=-t,i=-i),c=[t,e,i,n]}const u=this.pixelRatio;this.instructions.push([Zm,o,n,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,void 0,this.declutterImageWithText_,c==Ro?Ro:c.map((function(t){return t*u})),!!r.backgroundFill,!!r.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,i]);const d=1/u,g=this.state.fillStyle;r.backgroundFill&&(this.state.fillStyle=yo,this.hitDetectionInstructions.push(this.createFill(this.state))),this.hitDetectionInstructions.push([Zm,o,n,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[d,d],NaN,void 0,this.declutterImageWithText_,c,!!r.backgroundFill,!!r.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_?yo:this.fillKey_,this.textOffsetX_,this.textOffsetY_,i]),r.backgroundFill&&(this.state.fillStyle=g,this.hitDetectionInstructions.push(this.createFill(this.state))),this.endGeometry(e)}else{if(!Ie(this.getBufferedMaxExtent(),t.getExtent()))return;let i;if(l=t.getFlatCoordinates(),"LineString"==a)i=[l.length];else if("MultiLineString"==a)i=t.getEnds();else if("Polygon"==a)i=t.getEnds().slice(0,1);else if("MultiPolygon"==a){const e=t.getEndss();i=[];for(let t=0,n=e.length;tt[2]}else b=v>C;const P=Math.PI,L=[],F=w+n===e;let I;if(m=0,_=E,d=t[e=w],g=t[e+1],F){y(),I=Math.atan2(g-p,d-f),b&&(I+=I>0?-P:P);const t=(C+v)/2,e=(R+S)/2;return L[0]=[t,e,(T-s)/2,I,r],L}for(let t=0,u=(r=r.replace(/\n/g," ")).length;t0?-P:P),void 0!==I){let t=v-I;if(t+=t>P?-2*P:t<-P?2*P:0,Math.abs(t)>o)return null}I=v;const S=t;let w=0;for(;t0&&t.push("\n",""),t.push(e,""),t}var T_=class{constructor(t,e,i,n){this.overlaps=i,this.pixelRatio=e,this.resolution=t,this.alignFill_,this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderedTransform_=[1,0,0,1,0,0],this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={}}createLabel(t,e,i,n){const r=t+e+i+n;if(this.labels_[r])return this.labels_[r];const s=n?this.strokeStates[n]:null,o=i?this.fillStates[i]:null,a=this.textStates[e],l=this.pixelRatio,h=[a.scale[0]*l,a.scale[1]*l],c=Array.isArray(t),u=a.justify?h_[a.justify]:w_(Array.isArray(t)?t[0]:t,a.textAlign||To),d=n&&s.lineWidth?s.lineWidth:0,g=c?t:t.split("\n").reduce(E_,[]),{width:f,height:p,widths:m,heights:_,lineWidths:y}=Do(a,g),x=f+d,v=[],S=(x+2)*h[0],w=(p+d)*h[1],E={width:S<0?Math.floor(S):Math.ceil(S),height:w<0?Math.floor(w):Math.ceil(w),contextInstructions:v};1==h[0]&&1==h[1]||v.push("scale",h),n&&(v.push("strokeStyle",s.strokeStyle),v.push("lineWidth",d),v.push("lineCap",s.lineCap),v.push("lineJoin",s.lineJoin),v.push("miterLimit",s.miterLimit),v.push("setLineDash",[s.lineDash]),v.push("lineDashOffset",s.lineDashOffset)),i&&v.push("fillStyle",o.fillStyle),v.push("textBaseline","middle"),v.push("textAlign","center");const T=.5-u;let C=u*x+T*d;const R=[],b=[];let P,L=0,F=0,I=0,M=0;for(let t=0,e=g.length;tt?t-l:r,x=s+h>e?e-h:s,v=g[3]+y*u[0]+g[1],S=g[0]+x*u[1]+g[2],w=m-g[3],E=_-g[0];let T;return(f||0!==c)&&(m_[0]=w,x_[0]=w,m_[1]=E,__[1]=E,__[0]=w+v,y_[0]=__[0],y_[1]=E+S,x_[1]=y_[1]),0!==c?(T=Wt([1,0,0,1,0,0],i,n,1,1,c,-i,-n),Bt(T,m_),Bt(T,__),Bt(T,y_),Bt(T,x_),oe(Math.min(m_[0],__[0],y_[0],x_[0]),Math.min(m_[1],__[1],y_[1],x_[1]),Math.max(m_[0],__[0],y_[0],x_[0]),Math.max(m_[1],__[1],y_[1],x_[1]),p_)):oe(Math.min(w,w+v),Math.min(E,E+S),Math.max(w,w+v),Math.max(E,E+S),p_),d&&(m=Math.round(m),_=Math.round(_)),{drawImageX:m,drawImageY:_,drawImageW:y,drawImageH:x,originX:l,originY:h,declutterBox:{minX:p_[0],minY:p_[1],maxX:p_[2],maxY:p_[3],value:p},canvasTransform:T,scale:u}}replayImageOrLabel_(t,e,i,n,r,s,o){const a=!(!s&&!o),l=n.declutterBox,h=t.canvas,c=o?o[2]*n.scale[0]/2:0;return l.minX-c<=h.width/e&&l.maxX+c>=0&&l.minY-c<=h.height/e&&l.maxY+c>=0&&(a&&this.replayTextBackground_(t,m_,__,y_,x_,s,o),ko(t,n.canvasTransform,r,i,n.originX,n.originY,n.drawImageW,n.drawImageH,n.drawImageX,n.drawImageY,n.scale)),!0}fill_(t){if(this.alignFill_){const e=Bt(this.renderedTransform_,[0,0]),i=512*this.pixelRatio;t.save(),t.translate(e[0]%i,e[1]%i),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()}setStrokeStyle_(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.lineDashOffset=e[7],t.setLineDash(e[6])}drawLabelWithPointPlacement_(t,e,i,n){const r=this.textStates[e],s=this.createLabel(t,e,n,i),o=this.strokeStates[i],a=this.pixelRatio,l=w_(Array.isArray(t)?t[0]:t,r.textAlign||To),h=h_[r.textBaseline||Co],c=o&&o.lineWidth?o.lineWidth:0;return{label:s,anchorX:l*(s.width/a-2*r.scale[0])+2*(.5-l)*c,anchorY:h*s.height/a+2*(.5-h)*c}}execute_(t,e,i,n,r,s,o,a){let l;this.pixelCoordinates_&&c(i,this.renderedTransform_)?l=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),l=Tn(this.coordinates,0,this.coordinates.length,2,i,this.pixelCoordinates_),jt(this.renderedTransform_,i));let h=0;const u=n.length;let d,g,f,p,m,_,y,x,v,S,w,E,T=0,C=0,R=0,b=null,P=null;const L=this.coordinateCache_,F=this.viewRotation_,I=Math.round(1e12*Math.atan2(-i[1],i[0]))/1e12,M={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:F},A=this.instructions!=n||this.overlaps?0:200;let O,N,D,k;for(;hA&&(this.fill_(t),C=0),R>A&&(t.stroke(),R=0),C||R||(t.beginPath(),p=NaN,m=NaN),++h;break;case zm:T=i[1];const n=l[T],c=l[T+1],u=l[T+2]-n,G=l[T+3]-c,j=Math.sqrt(u*u+G*G);t.moveTo(n+j,c),t.arc(n,c,j,0,2*Math.PI,!0),++h;break;case Xm:t.closePath(),++h;break;case Vm:T=i[1],d=i[2];const B=i[3],U=i[4],z=6==i.length?i[5]:void 0;M.geometry=B,M.feature=O,h in L||(L[h]=[]);const X=L[h];z?z(l,T,d,2,X):(X[0]=l[T],X[1]=l[T+1],X.length=2),U(X,M),++h;break;case Zm:T=i[1],d=i[2],x=i[3],g=i[4],f=i[5];let V=i[6];const W=i[7],Z=i[8],Y=i[9],$=i[10];let q=i[11];const K=i[12];let H=i[13];const J=i[14],Q=i[15];if(!x&&i.length>=20){v=i[19],S=i[20],w=i[21],E=i[22];const t=this.drawLabelWithPointPlacement_(v,S,w,E);x=t.label,i[3]=x;const e=i[23];g=(t.anchorX-e)*this.pixelRatio,i[4]=g;const n=i[24];f=(t.anchorY-n)*this.pixelRatio,i[5]=f,V=x.height,i[6]=V,H=x.width,i[13]=H}let tt,et,it,nt;i.length>25&&(tt=i[25]),i.length>17?(et=i[16],it=i[17],nt=i[18]):(et=Ro,it=!1,nt=!1),$&&I?q+=F:$||I||(q-=F);let rt=0;for(;Ti)break;let a=n[o];a||(a=[],n[o]=a),a.push(4*((t+r)*e+(t+s))+3),r>0&&a.push(4*((t-r)*e+(t+s))+3),s>0&&(a.push(4*((t+r)*e+(t-s))+3),r>0&&a.push(4*((t-r)*e+(t-s))+3))}const r=[];for(let t=0,e=n.length;t0){if(!o||"Image"!==g&&"Text"!==g||o.includes(t)){const i=(d[s]-3)/4,o=n-i%a,l=n-(i/a|0),h=r(t,e,o*o+l*l);if(h)return h}c.clearRect(0,0,a,a);break}}const p=Object.keys(this.executorsByZIndex_).map(Number);let m,_,y,x,v;for(p.sort(s),m=p.length-1;m>=0;--m){const t=p[m].toString();for(y=this.executorsByZIndex_[t],_=C_.length-1;_>=0;--_)if(g=C_[_],x=y[g],void 0!==x&&(v=x.executeHitDetection(c,l,i,f,u),v))return v}}getClipCoords(t){const e=this.maxExtent_;if(!e)return null;const i=e[0],n=e[1],r=e[2],s=e[3],o=[i,n,i,s,r,s,r,n];return Tn(o,0,8,2,t,o),o}isEmpty(){return y(this.executorsByZIndex_)}execute(t,e,i,n,r,o,a){const l=Object.keys(this.executorsByZIndex_).map(Number);let h,c,u,d,g,f;for(l.sort(s),this.maxExtent_&&(t.save(),this.clip(t,i)),o=o||C_,a&&l.reverse(),h=0,c=l.length;h{if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){const t=[this.context.canvas.width,this.context.canvas.height];Bt(this.pixelTransform,t);const e=this.renderedCenter_,i=this.renderedResolution_,n=this.renderedRotation_,r=this.renderedProjection_,s=this.wrappedRenderedExtent_,o=this.getLayer(),a=[],l=t[0]*L_,h=t[1]*L_;a.push(this.getRenderTransform(e,i,n,L_,l,h,0).slice());const c=o.getSource(),u=r.getExtent();if(c.getWrapX()&&r.canWrapX()&&!ie(u,s)){let t=s[0];const r=Fe(u);let o,c=0;for(;tu[2];)++c,o=r*c,a.push(this.getRenderTransform(e,i,n,L_,l,h,o).slice()),t-=r}this.hitDetectionImageData_=F_(t,a,this.renderedFeatures_,o.getStyleFunction(),s,i,n)}e(I_(t,this.renderedFeatures_,this.hitDetectionImageData_))}))}forEachFeatureAtCoordinate(t,e,i,n,r){if(!this.replayGroup_)return;const s=e.viewState.resolution,o=e.viewState.rotation,a=this.getLayer(),l={},h=function(t,e,i){const s=U(t),o=l[s];if(o){if(!0!==o&&ic=n.forEachFeatureAtCoordinate(t,s,o,i,h,n===this.declutterExecutorGroup&&e.declutterTree?e.declutterTree.all().map((t=>t.value)):null))),c}handleFontsChanged(){const t=this.getLayer();t.getVisible()&&this.replayGroup_&&t.changed()}handleStyleImageChange_(t){this.renderIfReadyAndVisible()}prepareFrame(t){const e=this.getLayer(),i=e.getSource();if(!i)return!1;const n=t.viewHints[As],r=t.viewHints[Os],s=e.getUpdateWhileAnimating(),o=e.getUpdateWhileInteracting();if(this.ready&&!s&&n||!o&&r)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;const a=t.extent,l=t.viewState,h=l.projection,u=l.resolution,d=t.pixelRatio,g=e.getRevision(),f=e.getRenderBuffer();let p=e.getRenderOrder();void 0===p&&(p=Wl);const m=l.center.slice(),_=Jt(a,f*u),y=_.slice(),x=[_.slice()],v=h.getExtent();if(i.getWrapX()&&h.canWrapX()&&!ie(v,t.extent)){const t=Fe(v),e=Math.max(Fe(_)/2,t);_[0]=v[0]-e,_[2]=v[2]+e,ki(m,h);const i=ke(x[0],h);i[0]v[0]&&i[2]>v[2]&&x.push([i[0]-t,i[1],i[2]-t,i[3]])}if(this.ready&&this.renderedResolution_==u&&this.renderedRevision_==g&&this.renderedRenderOrder_==p&&ie(this.wrappedRenderedExtent_,_))return c(this.renderedExtent_,y)||(this.hitDetectionImageData_=null,this.renderedExtent_=y),this.renderedCenter_=m,this.replayGroupChanged=!1,!0;this.replayGroup_=null;const S=new d_(Yl(u,d),_,u,d);let w;this.getLayer().getDeclutter()&&(w=new d_(Yl(u,d),_,u,d));const E=pn();let T;if(E){for(let t=0,e=x.length;t{let i;const n=t.getStyleFunction()||e.getStyleFunction();if(n&&(i=n(t,u)),i){const e=this.renderFeature(t,C,i,S,T,w);R=R&&!e}},P=yn(_,h),L=i.getFeaturesInExtent(P);p&&L.sort(p);for(let t=0,e=L.length;t{if(g.getState()!==Yr)return;this.image_=d?null:g;const t=g.getPixelRatio(),n=rh(g.getResolution())*e/t;this.renderedResolution=n,this.coordinateToVectorPixelTransform_=Wt(this.coordinateToVectorPixelTransform_,a/2,l/2,1/n,-1/n,0,-i.center[0],-i.center[1])})),g.load()}return this.image_&&(this.renderedPixelToCoordinateTransform_=t.pixelToCoordinateTransform.slice()),!!this.image_}preRender(){}postRender(){}renderDeclutter(){}forEachFeatureAtCoordinate(t,e,i,n,r){return this.vectorRenderer_?this.vectorRenderer_.forEachFeatureAtCoordinate(t,e,i,n,r):super.forEachFeatureAtCoordinate(t,e,i,n,r)}};const O_={image:["Polygon","Circle","LineString","Image","Text"],hybrid:["Polygon","LineString"],vector:[]},N_={hybrid:["Image","Text","Default"],vector:["Polygon","Circle","LineString","Image","Text","Default"]};var D_=class extends Nu{constructor(t){super(t),this.boundHandleStyleImageChange_=this.handleStyleImageChange_.bind(this),this.renderedLayerRevision_,this.renderedPixelToCoordinateTransform_=null,this.renderedRotation_,this.tmpTransform_=[1,0,0,1,0,0]}prepareTile(t,e,i){let n;const r=t.getState();return r!==H&&r!==J||(this.updateExecutorGroup_(t,e,i),this.tileImageNeedsRender_(t)&&(n=!0)),n}getTile(t,e,i,n){const r=n.pixelRatio,s=n.viewState,o=s.resolution,a=s.projection,l=this.getLayer(),h=l.getSource().getTile(t,e,i,r,a),c=n.viewHints,u=!(c[As]||c[Os]);!u&&h.wantedResolution||(h.wantedResolution=o);return this.prepareTile(h,r,a)&&(u||Date.now()-n.time<8)&&"vector"!==l.getRenderMode()&&this.renderTileImage_(h,n),super.getTile(t,e,i,n)}isDrawableTile(t){const e=this.getLayer();return super.isDrawableTile(t)&&("vector"===e.getRenderMode()?U(e)in t.executorGroups:t.hasContext(e))}getTileImage(t){return t.getImage(this.getLayer())}prepareFrame(t){const e=this.getLayer().getRevision();return this.renderedLayerRevision_!==e&&(this.renderedLayerRevision_=e,this.renderedTiles.length=0),super.prepareFrame(t)}updateExecutorGroup_(t,e,i){const n=this.getLayer(),r=n.getRevision(),s=n.getRenderOrder()||null,o=t.wantedResolution,a=t.getReplayState(n);if(!a.dirty&&a.renderedResolution===o&&a.renderedRevision==r&&a.renderedRenderOrder==s)return;const l=n.getSource(),h=n.getDeclutter(),c=l.getTileGrid(),u=l.getTileGridForProjection(i).getTileCoordExtent(t.wrappedTileCoord),d=l.getSourceTiles(e,i,t),g=U(n);delete t.hitDetectionImageData[g],t.executorGroups[g]=[],h&&(t.declutterExecutorGroups[g]=[]),a.dirty=!1;for(let i=0,r=d.length;i{const r=n===p?e.declutterTree.all().map((t=>t.value)):null;for(let e=0,a=n.length;e{const n=this.getLayer(),r=U(n),s=n.getSource(),o=this.renderedProjection,a=o.getExtent(),l=this.renderedResolution,h=s.getTileGridForProjection(o),c=Bt(this.renderedPixelToCoordinateTransform_,t.slice()),u=h.getTileCoordForCoordAndResolution(c,l);let d;for(let t=0,e=this.renderedTiles.length;t0)return void e([]);const g=Pe(h.getTileCoordExtent(d.wrappedTileCoord)),f=[(c[0]-g[0])/l,(g[1]-c[1])/l],p=d.getSourceTiles().reduce((function(t,e){return t.concat(e.getFeatures())}),[]);let m=d.hitDetectionImageData[r];if(!m){const t=sl(h.getTileSize(h.getZForResolution(l,s.zDirection))),e=this.renderedRotation_;m=F_(t,[this.getRenderTransform(h.getTileCoordCenter(d.wrappedTileCoord),l,0,L_,t[0]*L_,t[1]*L_,0)],p,n.getStyleFunction(),h.getTileCoordExtent(d.wrappedTileCoord),d.getReplayState(n).renderedResolution,e),d.hitDetectionImageData[r]=m}e(I_(f,p,m))}))}handleFontsChanged(){const t=this.getLayer();t.getVisible()&&void 0!==this.renderedLayerRevision_&&t.changed()}handleStyleImageChange_(t){this.renderIfReadyAndVisible()}renderDeclutter(t){const e=this.context,i=e.globalAlpha;e.globalAlpha=this.getLayer().getOpacity();const n=t.viewHints,r=!(n[As]||n[Os]),s=this.renderedTiles;for(let e=0,i=s.length;e=0;--e)n[e].execute(this.context,1,this.getTileRenderTransform(i,t),t.viewState.rotation,r,void 0,t.declutterTree)}e.globalAlpha=i}getTileRenderTransform(t,e){const i=e.pixelRatio,n=e.viewState,r=n.center,s=n.resolution,o=n.rotation,a=e.size,l=Math.round(a[0]*i),h=Math.round(a[1]*i),c=this.getLayer().getSource().getTileGridForProjection(e.viewState.projection),u=t.tileCoord,d=c.getTileCoordExtent(t.wrappedTileCoord),g=c.getTileCoordExtent(u,this.tmpExtent)[0]-d[0];return kt(zt(this.inversePixelTransform.slice(),1/i,1/i),this.getRenderTransform(r,s,o,i,l,h,g))}postRender(t,e){const i=e.viewHints,n=!(i[As]||i[Os]);this.renderedPixelToCoordinateTransform_=e.pixelToCoordinateTransform.slice(),this.renderedRotation_=e.viewState.rotation;const r=this.getLayer(),s=r.getRenderMode(),o=t.globalAlpha;t.globalAlpha=r.getOpacity();const a=N_[s],l=e.viewState,h=l.rotation,c=r.getSource(),u=c.getTileGridForProjection(l.projection).getZForResolution(l.resolution,c.zDirection),d=this.renderedTiles,g=[],f=[];let p=!0;for(let i=d.length-1;i>=0;--i){const s=d[i];p=p&&!s.getReplayState(r).dirty;const o=s.executorGroups[U(r)].filter((t=>t.hasExecutors(a)));if(0===o.length)continue;const l=this.getTileRenderTransform(s,e),c=s.tileCoord[0];let m=!1;const _=o[0].getClipCoords(l);if(_){for(let e=0,i=g.length;e=e[0]||(t[1]<=e[1]&&t[3]>=e[1]||ye(t,this.intersectsCoordinate.bind(this)))}return!1}setCenter(t){const e=this.stride,i=this.flatCoordinates[e]-this.flatCoordinates[0],n=t.slice();n[e]=n[0]+i;for(let i=1;i1?a:2,o=o||new Array(a);for(let e=0;e>1;r1?new Q_(i,"XY",r):new br(i,"XY",n);default:throw new Error("Invalid geometry type:"+e)}}ey.prototype.getEndss=ey.prototype.getEnds,ey.prototype.getFlatCoordinates=ey.prototype.getOrientedFlatCoordinates;var ny=ey;let ry=null;function sy(t){ry=t;const e=Object.keys(t.defs),i=e.length;let n,r;for(n=0;n0&&c.length>0;)f=c.pop(),r=l.pop(),o=h.pop(),_=f.toString(),_ in u||(n.push(o[0],o[1]),u[_]=!0),p=c.pop(),s=l.pop(),a=h.pop(),m=(f+p)/2,d=t(m),g=e(d),di(g[0],g[1],o[0],o[1],a[0],a[1]){const e=t.get("graticule_label");return this.lonLabelStyleBase_.getText().setText(e),this.lonLabelStyleBase_},this.latLabelStyleBase_=new Bf({text:void 0!==t.latLabelStyle?t.latLabelStyle.clone():new zf({font:"12px Calibri,sans-serif",textAlign:"right",fill:new Tf({color:"rgba(0,0,0,1)"}),stroke:new Af({color:"rgba(255,255,255,1)",width:3})})}),this.latLabelStyle_=t=>{const e=t.get("graticule_label");return this.latLabelStyleBase_.getText().setText(e),this.latLabelStyleBase_},this.meridiansLabels_=[],this.parallelsLabels_=[],this.addEventListener(Ls,this.drawLabels_.bind(this))),this.intervals_=void 0!==t.intervals?t.intervals:dy,this.setSource(new cc({loader:this.loaderFunction.bind(this),strategy:this.strategyFunction.bind(this),features:new $,overlaps:!1,useSpatialIndex:!1,wrapX:t.wrapX})),this.featurePool_=[],this.lineStyle_=new Bf({stroke:this.strokeStyle_}),this.loadedExtent_=null,this.renderedExtent_=null,this.renderedResolution_=null,this.setRenderOrder(null)}strategyFunction(t,e){let i=t.slice();return this.projection_&&this.getSource().getWrapX()&&ke(i,this.projection_),this.loadedExtent_&&(ue(this.loadedExtent_,i,e)?i=this.loadedExtent_.slice():this.getSource().removeLoadedExtent(this.loadedExtent_)),[i]}loaderFunction(t,e,i){this.loadedExtent_=t;const n=this.getSource(),r=be(this.getExtent()||[-1/0,-1/0,1/0,1/0],t);if(this.renderedExtent_&&ce(this.renderedExtent_,r)&&this.renderedResolution_===e)return;if(this.renderedExtent_=r,this.renderedResolution_=e,Me(r))return;const s=we(r),o=e*e/4;(!this.projection_||!ln(this.projection_,i))&&this.updateProjectionInfo_(i),this.createGraticule_(r,s,e,o);let a,l=this.meridians_.length+this.parallels_.length;for(this.meridiansLabels_&&(l+=this.meridians_.length),this.parallelsLabels_&&(l+=this.parallels_.length);l>this.featurePool_.length;)a=new At,this.featurePool_.push(a);const h=n.getFeaturesCollection();h.clear();let c,u,d=0;for(c=0,u=this.meridians_.length;cMath.PI/2}const d=Kl(t);for(let t=a;t<=l;++t){let i,n,c,g,f=this.meridians_.length+this.parallels_.length;if(this.meridiansLabels_)for(n=0,c=this.meridiansLabels_.length;n=a?(t[0]=o[0],t[2]=o[2]):s=!0);const l=[ui(e[0],this.minX_,this.maxX_),ui(e[1],this.minY_,this.maxY_)],h=this.toLonLatTransform_(l);isNaN(h[1])&&(h[1]=Math.abs(this.maxLat_)>=Math.abs(this.minLat_)?this.maxLat_:this.minLat_);let c=ui(h[0],this.minLon_,this.maxLon_),u=ui(h[1],this.minLat_,this.maxLat_);const d=this.maxLines_;let g,f,p,m,_=t;s||(_=[ui(t[0],this.minX_,this.maxX_),ui(t[1],this.minY_,this.maxY_),ui(t[2],this.minX_,this.maxX_),ui(t[3],this.minY_,this.maxY_)]);const y=De(_,this.toLonLatTransform_,void 0,8);let x=y[3],v=y[2],S=y[1],w=y[0];if(s||(ee(_,this.bottomLeft_)&&(w=this.minLon_,S=this.minLat_),ee(_,this.bottomRight_)&&(v=this.maxLon_,S=this.minLat_),ee(_,this.topLeft_)&&(w=this.minLon_,x=this.maxLat_),ee(_,this.topRight_)&&(v=this.maxLon_,x=this.maxLat_),x=ui(x,u,this.maxLat_),v=ui(v,c,this.maxLon_),S=ui(S,this.minLat_,u),w=ui(w,this.minLon_,c)),c=Math.floor(c/r)*r,m=ui(c,this.minLon_,this.maxLon_),f=this.addMeridian_(m,S,x,n,t,0),g=0,s)for(;(m-=r)>=w&&g++n[s]&&(r=s,s=1);const o=Math.max(e[1],n[r]),a=Math.min(e[3],n[s]),l=ui(e[1]+Math.abs(e[1]-e[3])*this.lonLabelPosition_,o,a),h=[n[r-1]+(n[s-1]-n[r-1])*(l-n[r])/(n[s]-n[r]),l],c=this.meridiansLabels_[i].geom;return c.setCoordinates(h),c}getMeridians(){return this.meridians_}getParallel_(t,e,i,n,r){const s=cy(t,e,i,this.projection_,n);let o=this.parallels_[r];return o?(o.setFlatCoordinates("XY",s),o.changed()):o=new Z_(s,"XY"),o}getParallelPoint_(t,e,i){const n=t.getFlatCoordinates();let r=0,s=n.length-2;n[r]>n[s]&&(r=s,s=0);const o=Math.max(e[0],n[r]),a=Math.min(e[2],n[s]),l=ui(e[0]+Math.abs(e[0]-e[2])*this.latLabelPosition_,o,a),h=[l,n[r+1]+(n[s+1]-n[r+1])*(l-n[r])/(n[s]-n[r])],c=this.parallelsLabels_[i].geom;return c.setCoordinates(h),c}getParallels(){return this.parallels_}updateProjectionInfo_(t){const e=tn("EPSG:4326"),i=t.getWorldExtent();this.maxLat_=i[3],this.maxLon_=i[2],this.minLat_=i[1],this.minLon_=i[0];const n=cn(t,e);if(this.minLon_=Math.abs(this.minLat_)?this.maxLat_:this.minLat_),this.projection_=t}};const fy="blur",py="gradient",my="radius",_y=["#00f","#0ff","#0f0","#ff0","#f00"];var yy=class extends Dp{constructor(t){t=t||{};const e=Object.assign({},t);delete e.gradient,delete e.radius,delete e.blur,delete e.weight,super(e),this.gradient_=null,this.addChangeListener(py,this.handleGradientChanged_),this.setGradient(t.gradient?t.gradient:_y),this.setBlur(void 0!==t.blur?t.blur:15),this.setRadius(void 0!==t.radius?t.radius:8);const i=t.weight?t.weight:"weight";this.weightFunction_="string"==typeof i?function(t){return t.get(i)}:i,this.setRenderOrder(null)}getBlur(){return this.get(fy)}getGradient(){return this.get(py)}getRadius(){return this.get(my)}handleGradientChanged_(){this.gradient_=function(t){const e=1,i=256,n=mt(e,i),r=n.createLinearGradient(0,0,e,i),s=1/(t.length-1);for(let e=0,i=t.length;e{const e=this.weightFunction_(t);return void 0!==e?ui(e,0,1):1}}],uniforms:{u_size:()=>2*(this.get(my)+this.get(fy)),u_blurSlope:()=>this.get(my)/Math.max(1,this.get(fy))},hitDetectionEnabled:!0,vertexShader:t.getSymbolVertexShader(),fragmentShader:t.getSymbolFragmentShader(),postProcesses:[{fragmentShader:"\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform sampler2D u_gradientTexture;\n uniform float u_opacity;\n\n varying vec2 v_texCoord;\n\n void main() {\n vec4 color = texture2D(u_image, v_texCoord);\n gl_FragColor.a = color.a * u_opacity;\n gl_FragColor.rgb = texture2D(u_gradientTexture, vec2(0.5, color.a)).rgb;\n gl_FragColor.rgb *= gl_FragColor.a;\n }",uniforms:{u_gradientTexture:()=>this.gradient_,u_opacity:()=>this.getOpacity()}}]})}renderDeclutter(){}};var xy=class extends Dp{constructor(t){t=t||{};const e=Object.assign({},t);delete e.imageRatio,super(e),this.imageRatio_=void 0!==t.imageRatio?t.imageRatio:1}getImageRatio(){return this.imageRatio_}createRenderer(){return new A_(this)}};var vy=class extends Dp{constructor(t){t=t||{};const e=Object.assign({},t);delete e.preload,delete e.useInterimTilesOnError,super(e),this.on,this.once,this.un;const i=t.renderMode||"hybrid";Ft("hybrid"==i||"vector"==i,"`renderMode` must be `'hybrid'` or `'vector'`"),this.renderMode_=i,this.setPreload(t.preload?t.preload:0),this.setUseInterimTilesOnError(void 0===t.useInterimTilesOnError||t.useInterimTilesOnError),this.getBackground,this.setBackground}createRenderer(){return new D_(this)}getFeatures(t){return super.getFeatures(t)}getRenderMode(){return this.renderMode_}getPreload(){return this.get(Mu)}getUseInterimTilesOnError(){return this.get(Au)}setPreload(t){this.set(Mu,t)}setUseInterimTilesOnError(t){this.set(Au,t)}};var Sy=class extends no{constructor(t){super(Object.assign({},t)),this.parseResult_=mf(t.style),this.styleVariables_=t.style.variables||{},this.hitDetectionDisabled_=!!t.disableHitDetection}createRenderer(){const t=Object.keys(this.parseResult_.attributes).map((t=>({name:t,...this.parseResult_.attributes[t]})));return new Sm(this,{vertexShader:this.parseResult_.builder.getSymbolVertexShader(),fragmentShader:this.parseResult_.builder.getSymbolFragmentShader(),hitDetectionEnabled:!this.hitDetectionDisabled_,uniforms:this.parseResult_.uniforms,attributes:t})}updateStyleVariables(t){Object.assign(this.styleVariables_,t),this.changed()}};function wy(t,e){const i=`\n attribute vec2 ${Cg.TEXTURE_COORD};\n uniform mat4 ${Tg.TILE_TRANSFORM};\n uniform float ${Tg.TEXTURE_PIXEL_WIDTH};\n uniform float ${Tg.TEXTURE_PIXEL_HEIGHT};\n uniform float ${Tg.TEXTURE_RESOLUTION};\n uniform float ${Tg.TEXTURE_ORIGIN_X};\n uniform float ${Tg.TEXTURE_ORIGIN_Y};\n uniform float ${Tg.DEPTH};\n\n varying vec2 v_textureCoord;\n varying vec2 v_mapCoord;\n\n void main() {\n v_textureCoord = ${Cg.TEXTURE_COORD};\n v_mapCoord = vec2(\n ${Tg.TEXTURE_ORIGIN_X} + ${Tg.TEXTURE_RESOLUTION} * ${Tg.TEXTURE_PIXEL_WIDTH} * v_textureCoord[0],\n ${Tg.TEXTURE_ORIGIN_Y} - ${Tg.TEXTURE_RESOLUTION} * ${Tg.TEXTURE_PIXEL_HEIGHT} * v_textureCoord[1]\n );\n gl_Position = ${Tg.TILE_TRANSFORM} * vec4(${Cg.TEXTURE_COORD}, ${Tg.DEPTH}, 1.0);\n }\n `,n={inFragmentShader:!0,variables:[],attributes:[],functions:{},bandCount:e,style:t},r=[];if(void 0!==t.color){const e=Bg(n,t.color,Pg.COLOR);r.push(`color = ${e};`)}if(void 0!==t.contrast){const e=Bg(n,t.contrast,Pg.NUMBER);r.push(`color.rgb = clamp((${e} + 1.0) * color.rgb - (${e} / 2.0), vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));`)}if(void 0!==t.exposure){const e=Bg(n,t.exposure,Pg.NUMBER);r.push(`color.rgb = clamp((${e} + 1.0) * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));`)}if(void 0!==t.saturation){const e=Bg(n,t.saturation,Pg.NUMBER);r.push(`\n float saturation = ${e} + 1.0;\n float sr = (1.0 - saturation) * 0.2126;\n float sg = (1.0 - saturation) * 0.7152;\n float sb = (1.0 - saturation) * 0.0722;\n mat3 saturationMatrix = mat3(\n sr + saturation, sr, sr,\n sg, sg + saturation, sg,\n sb, sb, sb + saturation\n );\n color.rgb = clamp(saturationMatrix * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));\n `)}if(void 0!==t.gamma){const e=Bg(n,t.gamma,Pg.NUMBER);r.push(`color.rgb = pow(color.rgb, vec3(1.0 / ${e}));`)}if(void 0!==t.brightness){const e=Bg(n,t.brightness,Pg.NUMBER);r.push(`color.rgb = clamp(color.rgb + ${e}, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));`)}const s={},o=n.variables.length;if(o>1&&!t.variables)throw new Error(`Missing variables in style (expected ${n.variables})`);for(let e=0;e ${Tg.RENDER_EXTENT}[2] ||\n v_mapCoord[1] > ${Tg.RENDER_EXTENT}[3]\n ) {\n discard;\n }\n\n vec4 color = texture2D(${Tg.TILE_TEXTURE_ARRAY}[0], v_textureCoord);\n\n ${r.join("\n")}\n\n gl_FragColor = color;\n gl_FragColor.rgb *= gl_FragColor.a;\n gl_FragColor *= ${Tg.TRANSITION_ALPHA};\n }`,uniforms:s,paletteTextures:n.paletteTextures}}class Ey extends Ou{constructor(t){const e=(t=t?Object.assign({},t):{}).style||{};delete t.style;const i=t.cacheSize;delete t.cacheSize,super(t),this.sources_=t.sources,this.renderedSource_=null,this.renderedResolution_=NaN,this.style_=e,this.cacheSize_=i,this.styleVariables_=this.style_.variables||{},this.addChangeListener(Cs,this.handleSourceUpdate_)}getSources(t,e){const i=this.getSource();return this.sources_?"function"==typeof this.sources_?this.sources_(t,e):this.sources_:i?[i]:[]}getRenderSource(){return this.renderedSource_||this.getSource()}getSourceState(){const t=this.getRenderSource();return t?t.getState():"undefined"}handleSourceUpdate_(){this.hasRenderer()&&this.getRenderer().clearCache(),this.getSource()&&this.setStyle(this.style_)}getSourceBandCount_(){const t=Number.MAX_SAFE_INTEGER,e=this.getSources([-t,-t,t,t],t);return e&&e.length&&"bandCount"in e[0]?e[0].bandCount:4}createRenderer(){const t=wy(this.style_,this.getSourceBandCount_());return new bg(this,{vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms,cacheSize:this.cacheSize_,paletteTextures:t.paletteTextures})}renderSources(t,e){const i=this.getRenderer();let n;for(let r=0,s=e.length;r{"ready"==e.getState()&&(e.removeEventListener("change",t),this.changed())};e.addEventListener("change",t)}r=r&&"ready"==i}const s=this.renderSources(t,n);if(this.getRenderer().renderComplete&&r)return this.renderedResolution_=i.resolution,s;if(this.renderedResolution_>.5*i.resolution){const e=this.getSources(t.extent,this.renderedResolution_).filter((t=>!n.includes(t)));if(e.length>0)return this.renderSources(t,e)}return s}setStyle(t){this.styleVariables_=t.variables||{},this.style_=t;const e=wy(this.style_,this.getSourceBandCount_());this.getRenderer().reset({vertexShader:e.vertexShader,fragmentShader:e.fragmentShader,uniforms:e.uniforms}),this.changed()}updateStyleVariables(t){Object.assign(this.styleVariables_,t),this.changed()}}Ey.prototype.dispose;var Ty=Ey;var Cy=class extends ya{constructor(t){const e=t||{};super(e),e.stopDown&&(this.stopDown=e.stopDown),this.scaleDeltaByPixel_=e.delta?e.delta:.01,this.duration_=void 0!==e.duration?e.duration:250,this.handlingDownUpSequence_=!1,this.handlingDoubleDownSequence_=!1,this.doubleTapTimeoutId_=void 0,this.trackedPointers_={},this.targetPointers=[]}handleEvent(t){if(!t.originalEvent)return!0;let e=!1;if(this.updateTrackedPointers_(t),this.handlingDownUpSequence_){if(t.type==Wo.POINTERDRAG)this.handleDragEvent(t),t.originalEvent.preventDefault();else if(t.type==Wo.POINTERUP){const e=this.handleUpEvent(t);this.handlingDownUpSequence_=e}}else if(t.type==Wo.POINTERDOWN)if(this.handlingDoubleDownSequence_){this.handlingDoubleDownSequence_=!1;const i=this.handleDownEvent(t);this.handlingDownUpSequence_=i,e=this.stopDown(i)}else e=this.stopDown(!1),this.waitForDblTap_();return!e}handleDragEvent(t){let e=1;const i=this.targetPointers[0],n=this.down_.originalEvent,r=i.clientY-n.clientY;void 0!==this.lastDistance_&&(e=1-(this.lastDistance_-r)*this.scaleDeltaByPixel_),this.lastDistance_=r,1!=e&&(this.lastScaleDelta_=e);const s=t.map,o=s.getView();s.render(),o.adjustResolutionInternal(e)}handleDownEvent(t){if(1==this.targetPointers.length){const e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.down_=t,this.handlingDownUpSequence_||e.getView().beginInteraction(),!0}return!1}handleUpEvent(t){if(0==this.targetPointers.length){const e=t.map.getView(),i=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,i),this.handlingDownUpSequence_=!1,this.handlingDoubleDownSequence_=!1,!1}return!0}stopDown(t){return t}updateTrackedPointers_(t){if(function(t){const e=t.type;return e===Wo.POINTERDOWN||e===Wo.POINTERDRAG||e===Wo.POINTERUP}(t)){const e=t.originalEvent,i=e.pointerId.toString();t.type==Wo.POINTERUP?delete this.trackedPointers_[i]:(t.type==Wo.POINTERDOWN||i in this.trackedPointers_)&&(this.trackedPointers_[i]=e),this.targetPointers=Object.values(this.trackedPointers_)}}waitForDblTap_(){void 0!==this.doubleTapTimeoutId_?(clearTimeout(this.doubleTapTimeoutId_),this.doubleTapTimeoutId_=void 0):(this.handlingDoubleDownSequence_=!0,this.doubleTapTimeoutId_=setTimeout(this.endInteraction_.bind(this),250))}endInteraction_(){this.handlingDoubleDownSequence_=!1,this.doubleTapTimeoutId_=void 0}};const Ry="addfeatures";class by extends e{constructor(t,e,i,n){super(t),this.features=i,this.file=e,this.projection=n}}var Py=class extends ya{constructor(t){t=t||{},super({handleEvent:d}),this.on,this.once,this.un,this.readAsBuffer_=!1,this.formats_=[];const e=t.formatConstructors?t.formatConstructors:[];for(let t=0,i=e.length;t0){this.source_&&(this.source_.clear(),this.source_.addFeatures(l)),this.dispatchEvent(new by(Ry,t,l,s));break}}}registerListeners_(){const t=this.getMap();if(t){const e=this.target?this.target:t.getViewport();this.dropListenKeys_=[A(e,b,this.handleDrop,this),A(e,C,this.handleStop,this),A(e,R,this.handleStop,this),A(e,b,this.handleStop,this)]}}setActive(t){!this.getActive()&&t&&this.registerListeners_(),this.getActive()&&!t&&this.unregisterListeners_(),super.setActive(t)}setMap(t){this.unregisterListeners_(),super.setMap(t),this.getActive()&&this.registerListeners_()}tryReadFeatures_(t,e,i){try{return t.readFeatures(e,i)}catch(t){return null}}unregisterListeners_(){this.dropListenKeys_&&(this.dropListenKeys_.forEach(N),this.dropListenKeys_=null)}handleDrop(t){const e=t.dataTransfer.files;for(let t=0,i=e.length;t1?1:-1;return e.endInteraction(this.duration_,i),this.lastScaleDelta_=0,!1}handleDownEvent(t){return!!Na(t)&&(!!this.condition_(t)&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,this.lastMagnitude_=void 0,!0))}};const Fy="drawstart",Iy="drawend",My="drawabort";class Ay extends e{constructor(t,e){super(t),this.feature=e}}function Oy(t,e){return gi(t[0],t[1],e[0],e[1])}function Ny(t,e){const i=t.length;return e<0?t[e+i]:e>=i?t[e-i]:t[e]}function Dy(t,e,i){let n,r;eo){return Oy(zy(t,n),zy(t,r))}let a=0;if(n=i?n-=i:n<0&&(n+=i);let s=n+1;s>=i&&(s-=i);const o=t[n],a=o[0],l=o[1],h=t[s];return[a+(h[0]-a)*r,l+(h[1]-l)*r]}function Xy(){const t=Gf();return function(e,i){return t[e.getGeometry().getType()]}}var Vy=class extends Sa{constructor(t){const e=t;e.stopDown||(e.stopDown=g),super(e),this.on,this.once,this.un,this.shouldHandle_=!1,this.downPx_=null,this.downTimeout_,this.lastDragTime_,this.pointerType_,this.freehand_=!1,this.source_=t.source?t.source:null,this.features_=t.features?t.features:null,this.snapTolerance_=t.snapTolerance?t.snapTolerance:12,this.type_=t.type,this.mode_=function(t){switch(t){case"Point":case"MultiPoint":return"Point";case"LineString":case"MultiLineString":return"LineString";case"Polygon":case"MultiPolygon":return"Polygon";case"Circle":return"Circle";default:throw new Error("Invalid type: "+t)}}(this.type_),this.stopClick_=!!t.stopClick,this.minPoints_=t.minPoints?t.minPoints:"Polygon"===this.mode_?3:2,this.maxPoints_="Circle"===this.mode_?2:t.maxPoints?t.maxPoints:1/0,this.finishCondition_=t.finishCondition?t.finishCondition:d,this.geometryLayout_=t.geometryLayout?t.geometryLayout:"XY";let i=t.geometryFunction;if(!i){const t=this.mode_;if("Circle"===t)i=function(t,e,i){const n=e||new G_([NaN,NaN]),r=_n(t[0],i),s=Ai(r,_n(t[t.length-1],i));n.setCenterAndRadius(r,Math.sqrt(s),this.geometryLayout_);const o=pn();return o&&n.transform(i,o),n};else{let e;"Point"===t?e=or:"LineString"===t?e=Z_:"Polygon"===t&&(e=br),i=function(i,n,r){return n?"Polygon"===t?i[0].length?n.setCoordinates([i[0].concat([i[0][0]])],this.geometryLayout_):n.setCoordinates([],this.geometryLayout_):n.setCoordinates(i,this.geometryLayout_):n=new e(i,this.geometryLayout_),n}}}this.geometryFunction_=i,this.dragVertexDelay_=void 0!==t.dragVertexDelay?t.dragVertexDelay:500,this.finishCoordinate_=null,this.sketchFeature_=null,this.sketchPoint_=null,this.sketchCoords_=null,this.sketchLine_=null,this.sketchLineCoords_=null,this.squaredClickTolerance_=t.clickTolerance?t.clickTolerance*t.clickTolerance:36,this.overlay_=new ay({source:new cc({useSpatialIndex:!1,wrapX:!!t.wrapX&&t.wrapX}),style:t.style?t.style:Xy(),updateWhileInteracting:!0}),this.geometryName_=t.geometryName,this.condition_=t.condition?t.condition:Ia,this.freehandCondition_,t.freehand?this.freehandCondition_=ba:this.freehandCondition_=t.freehandCondition?t.freehandCondition:Aa,this.traceCondition_,this.setTrace(t.trace||!1),this.traceState_={active:!1},this.traceSource_=t.traceSource||t.source||null,this.addChangeListener(pa,this.updateState_)}setTrace(t){let e;e=t?!0===t?ba:t:La,this.traceCondition_=e}setMap(t){super.setMap(t),this.updateState_()}getOverlay(){return this.overlay_}handleEvent(t){t.originalEvent.type===w&&t.originalEvent.preventDefault(),this.freehand_="Point"!==this.mode_&&this.freehandCondition_(t);let e=t.type===Wo.POINTERMOVE,i=!0;if(!this.freehand_&&this.lastDragTime_&&t.type===Wo.POINTERDRAG){Date.now()-this.lastDragTime_>=this.dragVertexDelay_?(this.downPx_=t.pixel,this.shouldHandle_=!this.freehand_,e=!0):this.lastDragTime_=void 0,this.shouldHandle_&&void 0!==this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0)}return this.freehand_&&t.type===Wo.POINTERDRAG&&null!==this.sketchFeature_?(this.addToDrawing_(t.coordinate),i=!1):this.freehand_&&t.type===Wo.POINTERDOWN?i=!1:e&&this.getPointerCount()<2?(i=t.type===Wo.POINTERMOVE,i&&this.freehand_?(this.handlePointerMove_(t),this.shouldHandle_&&t.originalEvent.preventDefault()):("mouse"===t.originalEvent.pointerType||t.type===Wo.POINTERDRAG&&void 0===this.downTimeout_)&&this.handlePointerMove_(t)):t.type===Wo.DBLCLICK&&(i=!1),super.handleEvent(t)&&i}handleDownEvent(t){return this.shouldHandle_=!this.freehand_,this.freehand_?(this.downPx_=t.pixel,this.finishCoordinate_||this.startDrawing_(t.coordinate),!0):this.condition_(t)?(this.lastDragTime_=Date.now(),this.downTimeout_=setTimeout((()=>{this.handlePointerMove_(new Vo(Wo.POINTERMOVE,t.map,t.originalEvent,!1,t.frameState))}),this.dragVertexDelay_),this.downPx_=t.pixel,!0):(this.lastDragTime_=void 0,!1)}deactivateTrace_(){this.traceState_={active:!1}}toggleTraceState_(t){if(!this.traceSource_||!this.traceCondition_(t))return;if(this.traceState_.active)return void this.deactivateTrace_();const e=this.getMap(),i=Ht([e.getCoordinateFromPixel([t.pixel[0]-this.snapTolerance_,t.pixel[1]+this.snapTolerance_]),e.getCoordinateFromPixel([t.pixel[0]+this.snapTolerance_,t.pixel[1]-this.snapTolerance_])]),n=this.traceSource_.getFeaturesInExtent(i);if(0===n.length)return;const r=function(t,e){const i=[];for(let n=0;nt.endIndex||!i&&et.endIndex)&&this.removeTracedCoordinates_(e,t.endIndex):(this.removeTracedCoordinates_(t.startIndex,t.endIndex),this.addTracedCoordinates_(t,t.startIndex,e))}removeTracedCoordinates_(t,e){if(t===e)return;let i=0;if(t0&&this.removeLastPoints_(i)}addTracedCoordinates_(t,e,i){if(e===i)return;const n=[];if(e=s;--e)n.push(Ny(t.coordinates,e))}n.length&&this.appendCoordinates(n)}updateTrace_(t){const e=this.traceState_;if(!e.active)return;if(-1===e.targetIndex&&Oi(e.startPx,t.pixel)i.startIndex?hi.startIndex&&(h-=n.length)),l=h,a=t)}const h=e.targets[a];let c=h.ring;if(e.targetIndex===a&&c){const t=zy(h.coordinates,l);Oi(i.getPixelFromCoordinate(t),e.startPx)>n&&(c=!1)}if(c){const t=h.coordinates,e=t.length,i=h.startIndex,n=l;if(ithis.squaredClickTolerance_:s<=this.squaredClickTolerance_,!this.shouldHandle_)return}this.finishCoordinate_?(this.updateTrace_(t),this.modifyDrawing_(t.coordinate)):this.createOrUpdateSketchPoint_(t.coordinate.slice())}atFinish_(t,e){let i=!1;if(this.sketchFeature_){let n=!1,r=[this.finishCoordinate_];const s=this.mode_;if("Point"===s)i=!0;else if("Circle"===s)i=2===this.sketchCoords_.length;else if("LineString"===s)n=!e&&this.sketchCoords_.length>this.minPoints_;else if("Polygon"===s){const t=this.sketchCoords_;n=t[0].length>this.minPoints_,r=[t[0][0],t[0][t[0].length-2]],r=e?[t[0][0]]:[t[0][0],t[0][t[0].length-2]]}if(n){const e=this.getMap();for(let n=0,s=r.length;n=this.maxPoints_&&(this.freehand_?r.pop():n=!0),r.push(t.slice()),this.geometryFunction_(r,e,i)):"Polygon"===s&&(r=this.sketchCoords_[0],r.length>=this.maxPoints_&&(this.freehand_?r.pop():n=!0),r.push(t.slice()),n&&(this.finishCoordinate_=r[0]),this.geometryFunction_(this.sketchCoords_,e,i)),this.createOrUpdateSketchPoint_(t.slice()),this.updateSketchFeatures_(),n&&this.finishDrawing()}removeLastPoints_(t){if(!this.sketchFeature_)return;const e=this.sketchFeature_.getGeometry(),i=this.getMap().getView().getProjection(),n=this.mode_;for(let r=0;r=2){this.finishCoordinate_=t[t.length-2].slice();const e=this.finishCoordinate_.slice();t[t.length-1]=e,this.createOrUpdateSketchPoint_(e)}this.geometryFunction_(t,e,i),"Polygon"===e.getType()&&this.sketchLine_&&this.createOrUpdateCustomSketchLine_(e)}else if("Polygon"===n){t=this.sketchCoords_[0],t.splice(-2,1);const n=this.sketchLine_.getGeometry();if(t.length>=2){const e=t[t.length-2].slice();t[t.length-1]=e,this.createOrUpdateSketchPoint_(e)}n.setCoordinates(t),this.geometryFunction_(this.sketchCoords_,e,i)}if(1===t.length){this.abortDrawing();break}}this.updateSketchFeatures_()}removeLastPoint(){this.removeLastPoints_(1)}finishDrawing(){const t=this.abortDrawing_();if(!t)return;let e=this.sketchCoords_;const i=t.getGeometry(),n=this.getMap().getView().getProjection();"LineString"===this.mode_?(e.pop(),this.geometryFunction_(e,i,n)):"Polygon"===this.mode_&&(e[0].pop(),this.geometryFunction_(e,i,n),e=i.getCoordinates()),"MultiPoint"===this.type_?t.setGeometry(new K_([e])):"MultiLineString"===this.type_?t.setGeometry(new $_([e])):"MultiPolygon"===this.type_&&t.setGeometry(new Q_([e])),this.dispatchEvent(new Ay(Iy,t)),this.features_&&this.features_.push(t),this.source_&&this.source_.addFeature(t)}abortDrawing_(){this.finishCoordinate_=null;const t=this.sketchFeature_;return this.sketchFeature_=null,this.sketchPoint_=null,this.sketchLine_=null,this.overlay_.getSource().clear(!0),this.deactivateTrace_(),t}abortDrawing(){const t=this.abortDrawing_();t&&this.dispatchEvent(new Ay(My,t))}appendCoordinates(t){const e=this.mode_,i=!this.sketchFeature_;let n;if(i&&this.startDrawing_(t[0]),"LineString"===e||"Circle"===e)n=this.sketchCoords_;else{if("Polygon"!==e)return;n=this.sketchCoords_&&this.sketchCoords_.length?this.sketchCoords_[0]:[]}i&&n.shift(),n.pop();for(let e=0;er?o[1]:o[0]),a}}return null}handlePointerMove_(t){const e=t.pixel,i=t.map;let n=this.snapToVertex_(e,i);n||(n=i.getCoordinateFromPixelInternal(e)),this.createOrUpdatePointerFeature_(n)}createOrUpdateExtentFeature_(t){let e=this.extentFeature_;return e?t?e.setGeometry(Lr(t)):e.setGeometry(void 0):(e=new At(t?Lr(t):{}),this.extentFeature_=e,this.extentOverlay_.getSource().addFeature(e)),e}createOrUpdatePointerFeature_(t){let e=this.vertexFeature_;if(e){e.getGeometry().setCoordinates(t)}else e=new At(new or(t)),this.vertexFeature_=e,this.vertexOverlay_.getSource().addFeature(e);return e}handleEvent(t){return!t.originalEvent||!this.condition_(t)||(t.type!=Wo.POINTERMOVE||this.handlingDownUpSequence||this.handlePointerMove_(t),super.handleEvent(t),!1)}handleDownEvent(t){const e=t.pixel,i=t.map,n=this.getExtentInternal();let r=this.snapToVertex_(e,i);const s=function(t){let e=null,i=null;return t[0]==n[0]?e=n[2]:t[0]==n[2]&&(e=n[0]),t[1]==n[1]?i=n[3]:t[1]==n[3]&&(i=n[1]),null!==e&&null!==i?[e,i]:null};if(r&&n){const t=r[0]==n[0]||r[0]==n[2]?r[0]:null,e=r[1]==n[1]||r[1]==n[3]?r[1]:null;null!==t&&null!==e?this.pointerHandler_=qy(s(r)):null!==t?this.pointerHandler_=Ky(s([t,n[1]]),s([t,n[3]])):null!==e&&(this.pointerHandler_=Ky(s([n[0],e]),s([n[2],e])))}else r=i.getCoordinateFromPixelInternal(e),this.setExtent([r[0],r[1],r[0],r[1]]),this.pointerHandler_=qy(r);return!0}handleDragEvent(t){if(this.pointerHandler_){const e=t.coordinate;this.setExtent(this.pointerHandler_(e)),this.createOrUpdatePointerFeature_(e)}}handleUpEvent(t){this.pointerHandler_=null;const e=this.getExtentInternal();return e&&0!==xe(e)||this.setExtent(null),!1}setMap(t){this.extentOverlay_.setMap(t),this.vertexOverlay_.setMap(t),super.setMap(t)}getExtent(){return yn(this.getExtentInternal(),this.getMap().getView().getProjection())}getExtentInternal(){return this.extent_}setExtent(t){this.extent_=t||null,this.createOrUpdateExtentFeature_(t),this.dispatchEvent(new Zy(this.extent_))}};function Jy(t){return parseFloat(t)}function Qy(t){return function(t){return xi(t,5)}(t).toString()}function tx(t,e){return!isNaN(t)&&t!==Jy(Qy(e))}var ex=class extends ya{constructor(t){let e;super(),e=!0===(t=Object.assign({animate:!0,params:["x","y","z","r","l"],replace:!1,prefix:""},t||{})).animate?{duration:250}:t.animate?t.animate:null,this.animationOptions_=e,this.params_=t.params.reduce(((t,e)=>(t[e]=!0,t)),{}),this.replace_=t.replace,this.prefix_=t.prefix,this.listenerKeys_=[],this.initial_=!0,this.updateState_=this.updateState_.bind(this)}getParamName_(t){return this.prefix_?this.prefix_+t:t}get_(t,e){return t.get(this.getParamName_(e))}set_(t,e,i){e in this.params_&&t.set(this.getParamName_(e),i)}delete_(t,e){e in this.params_&&t.delete(this.getParamName_(e))}setMap(t){const e=this.getMap();super.setMap(t),t!==e&&(e&&this.unregisterListeners_(e),t&&(this.initial_=!0,this.updateState_(),this.registerListeners_(t)))}registerListeners_(t){this.listenerKeys_.push(A(t,Qo,this.updateUrl_,this),A(t.getLayerGroup(),v,this.updateUrl_,this),A(t,"change:layergroup",this.handleChangeLayerGroup_,this)),this.replace_||addEventListener("popstate",this.updateState_)}unregisterListeners_(t){for(let t=0,e=this.listenerKeys_.length;t=0;--t){const n=i[t];for(let t=this.dragSegments_.length-1;t>=0;--t)this.dragSegments_[t][0]===n&&this.dragSegments_.splice(t,1);e.remove(n)}}setActive(t){this.vertexFeature_&&!t&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),super.setActive(t)}setMap(t){this.overlay_.setMap(t),super.setMap(t)}getOverlay(){return this.overlay_}handleSourceAdd_(t){t.feature&&this.features_.push(t.feature)}handleSourceRemove_(t){t.feature&&this.features_.remove(t.feature)}handleFeatureAdd_(t){this.addFeature_(t.element)}handleFeatureChange_(t){if(!this.changingFeature_){const e=t.target;this.removeFeature_(e),this.addFeature_(e)}}handleFeatureRemove_(t){this.removeFeature_(t.element)}writePointGeometry_(t,e){const i=e.getCoordinates(),n={feature:t,geometry:e,segment:[i,i]};this.rBush_.insert(e.getExtent(),n)}writeMultiPointGeometry_(t,e){const i=e.getCoordinates();for(let n=0,r=i.length;n=0;--t)this.insertVertex_(r[t],s)}return!!this.vertexFeature_}handleUpEvent(t){for(let e=this.dragSegments_.length-1;e>=0;--e){const i=this.dragSegments_[e][0],n=i.geometry;if("Circle"===n.getType()){const e=n.getCenter(),r=i.featureSegments[0],s=i.featureSegments[1];r.segment[0]=e,r.segment[1]=e,s.segment[0]=e,s.segment[1]=e,this.rBush_.update(le(e),r);let o=n;const a=pn();if(a){const e=t.map.getView().getProjection();o=o.clone().transform(a,e),o=Fr(o).transform(e,a)}this.rBush_.update(o.getExtent(),s)}else this.rBush_.update(Ht(i.segment),i)}return this.featuresBeingModified_&&(this.dispatchEvent(new ox(sx,this.featuresBeingModified_,t)),this.featuresBeingModified_=null),!1}handlePointerMove_(t){this.lastPixel_=t.pixel,this.handlePointerAtPixel_(t.pixel,t.map,t.coordinate)}handlePointerAtPixel_(t,e,i){const n=i||e.getCoordinateFromPixel(t),r=e.getView().getProjection(),s=function(t,e){return lx(n,t,r)-lx(n,e,r)};let o,a;if(this.hitDetection_){const i="object"==typeof this.hitDetection_?t=>t===this.hitDetection_:void 0;e.forEachFeatureAtPixel(t,((t,e,i)=>{i&&(i=new or(mn(i.getCoordinates(),r)));const n=i||t.getGeometry();if("Point"===n.getType()&&t instanceof At&&this.features_.getArray().includes(t)){a=n;const e=t.getGeometry().getFlatCoordinates().slice(0,2);o=[{feature:t,geometry:a,segment:[e,e]}]}return!0}),{layerFilter:i})}if(!o){const t=yn(Jt(xn(le(n,ix),r),e.getView().getResolution()*this.pixelTolerance_,ix),r);o=this.rBush_.getInExtent(t)}if(o&&o.length>0){const i=o.sort(s)[0],l=i.segment;let h=hx(n,i,r);const c=e.getPixelFromCoordinate(h);let u=Oi(t,c);if(a||u<=this.pixelTolerance_){const t={};if(t[U(l)]=!0,this.snapToPointer_||(this.delta_[0]=h[0]-n[0],this.delta_[1]=h[1]-n[1]),"Circle"===i.geometry.getType()&&1===i.index)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(h,[i.feature],[i.geometry]);else{const n=e.getPixelFromCoordinate(l[0]),r=e.getPixelFromCoordinate(l[1]),s=Ai(c,n),a=Ai(c,r);u=Math.sqrt(Math.min(s,a)),this.snappedToVertex_=u<=this.pixelTolerance_,this.snappedToVertex_&&(h=s>a?l[1]:l[0]),this.createOrUpdateVertexFeature_(h,[i.feature],[i.geometry]);const d={};d[U(i.geometry)]=!0;for(let e=1,i=o.length;e=0;--o)r=t[o],u=r[0],d=U(u.feature),u.depth&&(d+="-"+u.depth.join("-")),d in e||(e[d]={}),0===r[1]?(e[d].right=u,e[d].index=u.index):1==r[1]&&(e[d].left=u,e[d].index=u.index+1);for(d in e){switch(c=e[d].right,l=e[d].left,a=e[d].index,h=a-1,u=void 0!==l?l:c,h<0&&(h=0),s=u.geometry,n=s.getCoordinates(),i=n,g=!1,s.getType()){case"MultiLineString":n[u.depth[0]].length>2&&(n[u.depth[0]].splice(a,1),g=!0);break;case"LineString":n.length>2&&(n.splice(a,1),g=!0);break;case"MultiPolygon":i=i[u.depth[1]];case"Polygon":i=i[u.depth[0]],i.length>4&&(a==i.length-1&&(a=0),i.splice(a,1),g=!0,0===a&&(i.pop(),i.push(i[0]),h=i.length-1))}if(g){this.setGeometryCoordinates_(s,n);const e=[];if(void 0!==l&&(this.rBush_.remove(l),e.push(l.segment[0])),void 0!==c&&(this.rBush_.remove(c),e.push(c.segment[1])),void 0!==l&&void 0!==c){const t={depth:u.depth,feature:u.feature,geometry:u.geometry,index:h,segment:e};this.rBush_.insert(Ht(t.segment),t)}this.updateSegmentIndices_(s,a,u.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),t.length=0}}return g}setGeometryCoordinates_(t,e){this.changingFeature_=!0,t.setCoordinates(e),this.changingFeature_=!1}updateSegmentIndices_(t,e,i,n){this.rBush_.forEachInExtent(t.getExtent(),(function(r){r.geometry===t&&(void 0===i||void 0===r.depth||c(r.depth,i))&&r.index>e&&(r.index+=n)}))}};const dx="select";class gx extends e{constructor(t,e,i,n){super(t),this.selected=e,this.deselected=i,this.mapBrowserEvent=n}}const fx={};class px extends ya{constructor(t){let e;if(super(),this.on,this.once,this.un,t=t||{},this.boundAddFeature_=this.addFeature_.bind(this),this.boundRemoveFeature_=this.removeFeature_.bind(this),this.condition_=t.condition?t.condition:Fa,this.addCondition_=t.addCondition?t.addCondition:La,this.removeCondition_=t.removeCondition?t.removeCondition:La,this.toggleCondition_=t.toggleCondition?t.toggleCondition:Aa,this.multi_=!!t.multi&&t.multi,this.filter_=t.filter?t.filter:d,this.hitTolerance_=t.hitTolerance?t.hitTolerance:0,this.style_=void 0!==t.style?t.style:function(){const t=Gf();return h(t.Polygon,t.LineString),h(t.GeometryCollection,t.LineString),function(e){return e.getGeometry()?t[e.getGeometry().getType()]:null}}(),this.features_=t.features||new $,t.layers)if("function"==typeof t.layers)e=t.layers;else{const i=t.layers;e=function(t){return i.includes(t)}}else e=d;this.layerFilter_=e,this.featureLayerAssociation_={}}addFeatureLayerAssociation_(t,e){this.featureLayerAssociation_[U(t)]=e}getFeatures(){return this.features_}getHitTolerance(){return this.hitTolerance_}getLayer(t){return this.featureLayerAssociation_[U(t)]}setHitTolerance(t){this.hitTolerance_=t}setMap(t){this.getMap()&&this.style_&&this.features_.forEach(this.restorePreviousStyle_.bind(this)),super.setMap(t),t?(this.features_.addEventListener(V,this.boundAddFeature_),this.features_.addEventListener(W,this.boundRemoveFeature_),this.style_&&this.features_.forEach(this.applySelectedStyle_.bind(this))):(this.features_.removeEventListener(V,this.boundAddFeature_),this.features_.removeEventListener(W,this.boundRemoveFeature_))}addFeature_(t){const e=t.element;if(this.style_&&this.applySelectedStyle_(e),!this.getLayer(e)){const t=this.getMap().getAllLayers().find((function(t){if(t instanceof ay&&t.getSource()&&t.getSource().hasFeature(e))return t}));t&&this.addFeatureLayerAssociation_(e,t)}}removeFeature_(t){this.style_&&this.restorePreviousStyle_(t.element)}getStyle(){return this.style_}applySelectedStyle_(t){const e=U(t);e in fx||(fx[e]=t.getStyle()),t.setStyle(this.style_)}restorePreviousStyle_(t){const e=this.getMap().getInteractions().getArray();for(let i=e.length-1;i>=0;--i){const n=e[i];if(n!==this&&n instanceof px&&n.getStyle()&&-1!==n.getFeatures().getArray().lastIndexOf(t))return void t.setStyle(n.getStyle())}const i=U(t);t.setStyle(fx[i]),delete fx[i]}removeFeatureLayerAssociation_(t){delete this.featureLayerAssociation_[U(t)]}handleEvent(t){if(!this.condition_(t))return!0;const e=this.addCondition_(t),i=this.removeCondition_(t),n=this.toggleCondition_(t),r=!e&&!i&&!n,s=t.map,o=this.getFeatures(),a=[],l=[];if(r){_(this.featureLayerAssociation_),s.forEachFeatureAtPixel(t.pixel,((t,e)=>{if(t instanceof At&&this.filter_(t,e))return this.addFeatureLayerAssociation_(t,e),l.push(t),!this.multi_}),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(let t=o.getLength()-1;t>=0;--t){const e=o.item(t),i=l.indexOf(e);i>-1?l.splice(i,1):(o.remove(e),a.push(e))}0!==l.length&&o.extend(l)}else{s.forEachFeatureAtPixel(t.pixel,((t,r)=>{if(t instanceof At&&this.filter_(t,r))return!e&&!n||o.getArray().includes(t)?(i||n)&&o.getArray().includes(t)&&(a.push(t),this.removeFeatureLayerAssociation_(t)):(this.addFeatureLayerAssociation_(t,r),l.push(t)),!this.multi_}),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(let t=a.length-1;t>=0;--t)o.remove(a[t]);o.extend(l)}return(l.length>0||a.length>0)&&this.dispatchEvent(new gx(dx,l,a,t)),!0}}var mx=px;const _x="snap";class yx extends e{constructor(t,e){super(t),this.vertex=e.vertex,this.vertexPixel=e.vertexPixel,this.feature=e.feature}}function xx(t){return t.feature?t.feature:t.element?t.element:null}const vx=[];var Sx=class extends Sa{constructor(t){const e=t=t||{};e.handleDownEvent||(e.handleDownEvent=d),e.stopDown||(e.stopDown=g),super(e),this.on,this.once,this.un,this.source_=t.source?t.source:null,this.vertex_=void 0===t.vertex||t.vertex,this.edge_=void 0===t.edge||t.edge,this.features_=t.features?t.features:null,this.featuresListenerKeys_=[],this.featureChangeListenerKeys_={},this.indexedFeaturesExtents_={},this.pendingFeatures_={},this.pixelTolerance_=void 0!==t.pixelTolerance?t.pixelTolerance:10,this.rBush_=new ec,this.GEOMETRY_SEGMENTERS_={Point:this.segmentPointGeometry_.bind(this),LineString:this.segmentLineStringGeometry_.bind(this),LinearRing:this.segmentLineStringGeometry_.bind(this),Polygon:this.segmentPolygonGeometry_.bind(this),MultiPoint:this.segmentMultiPointGeometry_.bind(this),MultiLineString:this.segmentMultiLineStringGeometry_.bind(this),MultiPolygon:this.segmentMultiPolygonGeometry_.bind(this),GeometryCollection:this.segmentGeometryCollectionGeometry_.bind(this),Circle:this.segmentCircleGeometry_.bind(this)}}addFeature(t,e){e=void 0===e||e;const i=U(t),n=t.getGeometry();if(n){const e=this.GEOMETRY_SEGMENTERS_[n.getType()];if(e){this.indexedFeaturesExtents_[i]=n.getExtent([1/0,1/0,-1/0,-1/0]);const r=[];if(e(r,n),1===r.length)this.rBush_.insert(Ht(r[0]),{feature:t,segment:r[0]});else if(r.length>1){const e=r.map((t=>Ht(t))),i=r.map((e=>({feature:t,segment:e})));this.rBush_.load(e,i)}}}e&&(this.featureChangeListenerKeys_[i]=A(t,v,this.handleFeatureChange_,this))}getFeatures_(){let t;return this.features_?t=this.features_:this.source_&&(t=this.source_.getFeatures()),t}handleEvent(t){const e=this.snapTo(t.pixel,t.coordinate,t.map);return e&&(t.coordinate=e.vertex.slice(0,2),t.pixel=e.vertexPixel,this.dispatchEvent(new yx(_x,{vertex:t.coordinate,vertexPixel:t.pixel,feature:e.feature}))),super.handleEvent(t)}handleFeatureAdd_(t){const e=xx(t);e&&this.addFeature(e)}handleFeatureRemove_(t){const e=xx(t);e&&this.removeFeature(e)}handleFeatureChange_(t){const e=t.target;if(this.handlingDownUpSequence){const t=U(e);t in this.pendingFeatures_||(this.pendingFeatures_[t]=e)}else this.updateFeature_(e)}handleUpEvent(t){const e=Object.values(this.pendingFeatures_);return e.length&&(e.forEach(this.updateFeature_.bind(this)),this.pendingFeatures_={}),!1}removeFeature(t,e){const i=void 0===e||e,n=U(t),r=this.indexedFeaturesExtents_[n];if(r){const e=this.rBush_,i=[];e.forEachInExtent(r,(function(e){t===e.feature&&i.push(e)}));for(let t=i.length-1;t>=0;--t)e.remove(i[t])}i&&(N(this.featureChangeListenerKeys_[n]),delete this.featureChangeListenerKeys_[n])}setMap(t){const e=this.getMap(),i=this.featuresListenerKeys_,n=this.getFeatures_();e&&(i.forEach(N),i.length=0,this.rBush_.clear(),Object.values(this.featureChangeListenerKeys_).forEach(N),this.featureChangeListenerKeys_={}),super.setMap(t),t&&(this.features_?i.push(A(this.features_,V,this.handleFeatureAdd_,this),A(this.features_,W,this.handleFeatureRemove_,this)):this.source_&&i.push(A(this.source_,ic,this.handleFeatureAdd_,this),A(this.source_,sc,this.handleFeatureRemove_,this)),n.forEach((t=>this.addFeature(t))))}snapTo(t,e,i){const n=i.getView().getProjection(),r=_n(e,n),s=yn(Jt(Ht([r]),i.getView().getResolution()*this.pixelTolerance_),n),o=this.rBush_.getInExtent(s),a=o.length;if(0===a)return null;let l,h,c=1/0;const u=this.pixelTolerance_*this.pixelTolerance_,d=()=>{if(l){const e=i.getPixelFromCoordinate(l);if(Ai(t,e)<=u)return{vertex:l,vertexPixel:[Math.round(e[0]),Math.round(e[1])],feature:h}}return null};if(this.vertex_){for(let t=0;t{const i=_n(t,n),s=Ai(r,i);s{t.push([e])}))}segmentMultiPolygonGeometry_(t,e){const i=e.getCoordinates();for(let e=0,n=i.length;e{if(t instanceof At&&this.filter_(t,e)&&(!this.features_||this.features_.getArray().includes(t)))return t}),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_})}getHitTolerance(){return this.hitTolerance_}setHitTolerance(t){this.hitTolerance_=t}setMap(t){const e=this.getMap();super.setMap(t),this.updateState_(e)}handleActiveChanged_(){this.updateState_(null)}updateState_(t){let e=this.getMap();const i=this.getActive();if((!e||!i)&&(e=e||t,e)){e.getViewport().classList.remove("ol-grab","ol-grabbing")}}};function bx(t,e,i,n,r,s){void 0!==r?s=void 0!==s?s:0:(r=[],s=0);let o=e;for(;o=0;e--)r.push(n[t][e]);return{hasZ:i.hasZ,hasM:i.hasM,rings:r}}};function Nx(t,e){if(!t)return null;let i;if("number"==typeof t.x&&"number"==typeof t.y)i="Point";else if(t.points)i="MultiPoint";else if(t.paths){i=1===t.paths.length?"LineString":"MultiLineString"}else if(t.rings){const e=t,n=Dx(e),r=function(t,e){const i=[],n=[],r=[];let s,o;for(s=0,o=t.length;s=0;s--){const i=n[s][0];if(ie(new rr(i).getExtent(),new rr(t).getExtent())){n[s].push(t),e=!0;break}}e||n.push([t.reverse()])}return n}(e.rings,n);1===r.length?(i="Polygon",t=Object.assign({},t,{rings:r[0]})):(i="MultiPolygon",t=Object.assign({},t,{rings:r}))}return Lx((0,Ax[i])(t),!1,e)}function Dx(t){let e="XY";return!0===t.hasZ&&!0===t.hasM?e="XYZM":!0===t.hasZ?e="XYZ":!0===t.hasM&&(e="XYM"),e}function kx(t){const e=t.getLayout();return{hasZ:"XYZ"===e||"XYZM"===e,hasM:"XYM"===e||"XYZM"===e}}function Gx(t,e){return(0,Ox[t.getType()])(Lx(t,!0,e),e)}var jx=class extends Mx{constructor(t){t=t||{},super(),this.geometryName_=t.geometryName}readFeatureFromObject(t,e,i){const n=t,r=Nx(n.geometry,e),s=new At;if(this.geometryName_&&s.setGeometryName(this.geometryName_),s.setGeometry(r),n.attributes){s.setProperties(n.attributes,!0);const t=n.attributes[i];void 0!==t&&s.setId(t)}return s}readFeaturesFromObject(t,e){if(e=e||{},t.features){const i=[],n=t.features;for(let r=0,s=n.length;r0?i[0]:null}readFeatureFromNode(t,e){return null}readFeatures(t,e){if(!t)return[];if("string"==typeof t){const i=Td(t);return this.readFeaturesFromDocument(i,e)}return wd(t)?this.readFeaturesFromDocument(t,e):this.readFeaturesFromNode(t,e)}readFeaturesFromDocument(t,e){const i=[];for(let n=t.firstChild;n;n=n.nextSibling)n.nodeType==Node.ELEMENT_NODE&&h(i,this.readFeaturesFromNode(n,e));return i}readFeaturesFromNode(t,e){return j()}readGeometry(t,e){if(!t)return null;if("string"==typeof t){const i=Td(t);return this.readGeometryFromDocument(i,e)}return wd(t)?this.readGeometryFromDocument(t,e):this.readGeometryFromNode(t,e)}readGeometryFromDocument(t,e){return null}readGeometryFromNode(t,e){return null}readProjection(t){if(!t)return null;if("string"==typeof t){const e=Td(t);return this.readProjectionFromDocument(e)}return wd(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}readProjectionFromDocument(t){return this.dataProjection}readProjectionFromNode(t){return this.dataProjection}writeFeature(t,e){const i=this.writeFeatureNode(t,e);return this.xmlSerializer_.serializeToString(i)}writeFeatureNode(t,e){return null}writeFeatures(t,e){const i=this.writeFeaturesNode(t,e);return this.xmlSerializer_.serializeToString(i)}writeFeaturesNode(t,e){return null}writeGeometry(t,e){const i=this.writeGeometryNode(t,e);return this.xmlSerializer_.serializeToString(i)}writeGeometryNode(t,e){return null}};const Ux="http://www.opengis.net/gml",zx=/^\s*$/;class Xx extends Bx{constructor(t){super(),t=t||{},this.featureType=t.featureType,this.featureNS=t.featureNS,this.srsName=t.srsName,this.schemaLocation="",this.FEATURE_COLLECTION_PARSERS={},this.FEATURE_COLLECTION_PARSERS[this.namespace]={featureMember:Rd(this.readFeaturesInternal),featureMembers:bd(this.readFeaturesInternal)},this.supportedMediaTypes=["application/gml+xml"]}readFeaturesInternal(t,e){const i=t.localName;let n=null;if("FeatureCollection"==i)n=kd([],this.FEATURE_COLLECTION_PARSERS,t,e,this);else if("featureMembers"==i||"featureMember"==i||"member"==i){const r=e[0];let s=r.featureType,o=r.featureNS;const a="p",l="p0";if(!s&&t.childNodes){s=[],o={};for(let e=0,i=t.childNodes.length;e0&&!(t instanceof Ln)){t={_content_:t};for(let e=0;e0){e[e.length-1].push(...i)}},outerBoundaryIs:function(t,e){const i=kd(void 0,vw,t,e);if(i){e[e.length-1][0]=i}}});function aw(t,e){const i=kd({},tw,t,e),n=kd([null],ow,t,e);if(n&&n[0]){const t=n[0],e=[t.length];for(let i=1,r=n.length;i0;let o;const a=r.href;let l,h,c;a?o=a:s&&(o=wS);let u="bottom-left";const d=i.hotSpot;let g;d?(l=[d.x,d.y],h=d.xunits,c=d.yunits,u=d.origin):/^https?:\/\/maps\.(?:google|gstatic)\.com\//.test(o)&&(o.includes("pushpin")?(l=yS,h=xS,c=vS):o.includes("arrow-reverse")?(l=[54,42],h=xS,c=vS):o.includes("paddle")&&(l=[32,1],h=xS,c=vS));const f=r.x,p=r.y;let m;void 0!==f&&void 0!==p&&(g=[f,p]);const _=r.w,y=r.h;let x;void 0!==_&&void 0!==y&&(m=[_,y]);const v=i.heading;void 0!==v&&(x=mi(v));const S=i.scale,w=i.color;if(s){o==wS&&(m=SS);const t=new If({anchor:l,anchorOrigin:u,anchorXUnits:h,anchorYUnits:c,crossOrigin:this.crossOrigin_,offset:g,offsetOrigin:"bottom-left",rotation:x,scale:S,size:m,src:this.iconUrlFunction_(o),color:w}),e=t.getScaleArray()[0],i=t.getSize();if(null===i){const i=t.getImageState();if(i===Wr||i===Zr){const n=function(){const i=t.getImageState();if(i!==Wr&&i!==Zr){const i=t.getSize();if(i&&2==i.length){const n=MS(i);t.setScale(e*n)}t.unlistenImageChange(n)}};t.listenImageChange(n),i===Wr&&t.load()}}else if(2==i.length){const n=MS(i);t.setScale(e*n)}n.imageStyle=t}else n.imageStyle=TS},LabelStyle:function(t,e){const i=kd({},XS,t,e);if(!i)return;const n=e[e.length-1],r=new zf({fill:new Tf({color:"color"in i?i.color:_S}),scale:i.scale});n.textStyle=r},LineStyle:function(t,e){const i=kd({},VS,t,e);if(!i)return;const n=e[e.length-1],r=new Af({color:"color"in i?i.color:_S,width:"width"in i?i.width:1});n.strokeStyle=r},PolyStyle:function(t,e){const i=kd({},WS,t,e);if(!i)return;const n=e[e.length-1],r=new Tf({color:"color"in i?i.color:_S});n.fillStyle=r;const s=i.fill;void 0!==s&&(n.fill=s);const o=i.outline;void 0!==o&&(n.outline=o)}});function hw(t,e){const i=kd({},lw,t,e,this);if(!i)return null;let n="fillStyle"in i?i.fillStyle:ES;const r=i.fill;let s;void 0===r||r||(n=null),"imageStyle"in i?i.imageStyle!=TS&&(s=i.imageStyle):s=CS;const o="textStyle"in i?i.textStyle:PS,a="strokeStyle"in i?i.strokeStyle:bS,l=i.outline;return void 0===l||l?[new Bf({fill:n,image:s,stroke:a,text:o,zIndex:void 0})]:[new Bf({geometry:function(t){const e=t.getGeometry(),i=e.getType();if("GeometryCollection"===i){return new U_(e.getGeometriesArrayRecursive().filter((function(t){const e=t.getType();return"Polygon"!==e&&"MultiPolygon"!==e})))}if("Polygon"!==i&&"MultiPolygon"!==i)return e},fill:n,image:s,stroke:a,text:o,zIndex:void 0}),new Bf({geometry:function(t){const e=t.getGeometry(),i=e.getType();if("GeometryCollection"===i){return new U_(e.getGeometriesArrayRecursive().filter((function(t){const e=t.getType();return"Polygon"===e||"MultiPolygon"===e})))}if("Polygon"===i||"MultiPolygon"===i)return e},fill:n,stroke:null,zIndex:void 0})]}function cw(t,e){const i=e.length,n=new Array(e.length),r=new Array(e.length),s=new Array(e.length);let o,a,l;o=!1,a=!1,l=!1;for(let t=0;t0){const t=Od(r,o);jd(n,Ww,Yw,[{names:o,values:t}],i)}const u=i[0];let d=e.getGeometry();d&&(d=Lx(d,!0,u)),jd(n,Ww,Dw,[d],i)}const qw=Nd(lS,["extrude","tessellate","altitudeMode","coordinates"]),Kw=Nd(lS,{extrude:Fd(Qx),tessellate:Fd(Qx),altitudeMode:Fd(rv),coordinates:Fd((function(t,e,i){const n=i[i.length-1],r=n.layout,s=n.stride;let o;if("XY"==r||"XYM"==r)o=2;else{if("XYZ"!=r&&"XYZM"!=r)throw new Error("Invalid geometry layout");o=3}const a=e.length;let l="";if(a>0){l+=e[0];for(let t=1;t0;else{const e=t.getType();a="Point"===e||"MultiPoint"===e}}a&&(l=s.get("name"),a=a&&!!l,a&&/&[^&]+;/.test(l)&&(FS||(FS=document.createElement("textarea")),FS.innerHTML=l,l=FS.value));let c=i;if(t?c=t:e&&(c=OS(e,i,n)),a){const t=function(t,e){const i=[0,0];let n="start";const r=t.getImage();if(r){const t=r.getSize();if(t&&2==t.length){const e=r.getScaleArray(),s=r.getAnchor();i[0]=e[0]*(t[0]-s[0]),i[1]=e[1]*(t[1]/2-s[1]),n="left"}}let s=t.getText();s?(s=s.clone(),s.setFont(s.getFont()||PS.getFont()),s.setScale(s.getScale()||PS.getScale()),s.setFill(s.getFill()||PS.getFill()),s.setStroke(s.getStroke()||RS)):s=PS.clone();s.setText(e),s.setOffsetX(i[0]),s.setOffsetY(i[1]),s.setTextAlign(n);const o=new Bf({image:r,text:s});return o}(c[0],l);if(h.length>0){t.setGeometry(new U_(h));return[t,new Bf({geometry:c[0].getGeometry(),image:null,fill:c[0].getFill(),stroke:c[0].getStroke(),text:null})].concat(c.slice(1))}return t}return c}}(i.Style,i.styleUrl,this.defaultStyle_,this.sharedStyles_,this.showPointNames_);n.setStyle(t)}return delete i.Style,n.setProperties(i,!0),n}readSharedStyle_(t,e){const i=t.getAttribute("id");if(null!==i){const n=hw.call(this,t,e);if(n){let e,r=t.baseURI;if(r&&"about:blank"!=r||(r=window.location.href),r){e=new URL("#"+i,r).href}else e="#"+i;this.sharedStyles_[e]=n}}}readSharedStyleMap_(t,e){const i=t.getAttribute("id");if(null===i)return;const n=US.call(this,t,e);if(!n)return;let r,s=t.baseURI;if(s&&"about:blank"!=s||(s=window.location.href),s){r=new URL("#"+i,s).href}else r="#"+i;this.sharedStyles_[r]=n}readFeatureFromNode(t,e){if(!lS.includes(t.namespaceURI))return null;const i=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return i||null}readFeaturesFromNode(t,e){if(!lS.includes(t.namespaceURI))return[];let i;const n=t.localName;if("Document"==n||"Folder"==n)return i=this.readDocumentOrFolder_(t,[this.getReadOptions(t,e)]),i||[];if("Placemark"==n){const i=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return i?[i]:[]}if("kml"==n){i=[];for(let n=t.firstElementChild;n;n=n.nextElementSibling){const t=this.readFeaturesFromNode(n,e);t&&h(i,t)}return i}return[]}readName(t){if(t){if("string"==typeof t){const e=Td(t);return this.readNameFromDocument(e)}return wd(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}}readNameFromDocument(t){for(let e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE){const t=this.readNameFromNode(e);if(t)return t}}readNameFromNode(t){for(let e=t.firstElementChild;e;e=e.nextElementSibling)if(lS.includes(e.namespaceURI)&&"name"==e.localName)return Jx(e);for(let e=t.firstElementChild;e;e=e.nextElementSibling){const t=e.localName;if(lS.includes(e.namespaceURI)&&("Document"==t||"Folder"==t||"Placemark"==t||"kml"==t)){const t=this.readNameFromNode(e);if(t)return t}}}readNetworkLinks(t){const e=[];if("string"==typeof t){const i=Td(t);h(e,this.readNetworkLinksFromDocument(i))}else wd(t)?h(e,this.readNetworkLinksFromDocument(t)):h(e,this.readNetworkLinksFromNode(t));return e}readNetworkLinksFromDocument(t){const e=[];for(let i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&h(e,this.readNetworkLinksFromNode(i));return e}readNetworkLinksFromNode(t){const e=[];for(let i=t.firstElementChild;i;i=i.nextElementSibling)if(lS.includes(i.namespaceURI)&&"NetworkLink"==i.localName){const t=kd({},uS,i,[]);e.push(t)}for(let i=t.firstElementChild;i;i=i.nextElementSibling){const t=i.localName;!lS.includes(i.namespaceURI)||"Document"!=t&&"Folder"!=t&&"kml"!=t||h(e,this.readNetworkLinksFromNode(i))}return e}readRegion(t){const e=[];if("string"==typeof t){const i=Td(t);h(e,this.readRegionFromDocument(i))}else wd(t)?h(e,this.readRegionFromDocument(t)):h(e,this.readRegionFromNode(t));return e}readRegionFromDocument(t){const e=[];for(let i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&h(e,this.readRegionFromNode(i));return e}readRegionFromNode(t){const e=[];for(let i=t.firstElementChild;i;i=i.nextElementSibling)if(lS.includes(i.namespaceURI)&&"Region"==i.localName){const t=kd({},fS,i,[]);e.push(t)}for(let i=t.firstElementChild;i;i=i.nextElementSibling){const t=i.localName;!lS.includes(i.namespaceURI)||"Document"!=t&&"Folder"!=t&&"kml"!=t||h(e,this.readRegionFromNode(i))}return e}readCamera(t){const e=[];if("string"==typeof t){const i=Td(t);h(e,this.readCameraFromDocument(i))}else wd(t)?h(e,this.readCameraFromDocument(t)):h(e,this.readCameraFromNode(t));return e}readCameraFromDocument(t){const e=[];for(let i=t.firstChild;i;i=i.nextSibling)i.nodeType===Node.ELEMENT_NODE&&h(e,this.readCameraFromNode(i));return e}readCameraFromNode(t){const e=[];for(let i=t.firstElementChild;i;i=i.nextElementSibling)if(lS.includes(i.namespaceURI)&&"Camera"===i.localName){const t=kd({},gS,i,[]);e.push(t)}for(let i=t.firstElementChild;i;i=i.nextElementSibling){const t=i.localName;!lS.includes(i.namespaceURI)||"Document"!==t&&"Folder"!==t&&"Placemark"!==t&&"kml"!==t||h(e,this.readCameraFromNode(i))}return e}writeFeaturesNode(t,e){e=this.adaptOptions(e);const i=xd(lS[4],"kml"),n="http://www.w3.org/2000/xmlns/";i.setAttributeNS(n,"xmlns:gx",aS[0]),i.setAttributeNS(n,"xmlns:xsi",yd),i.setAttributeNS(yd,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");const r={node:i},s={};t.length>1?s.Document=t:1==t.length&&(s.Placemark=t[0]);const o=pS[i.namespaceURI],a=Od(s,o);return jd(r,mS,Ad,a,[e],o,this),i}},lE={
-/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */
-read:function(t,e,i,n,r){var s,o,a=8*r-n-1,l=(1<>1,c=-7,u=i?r-1:0,d=i?-1:1,g=t[e+u];for(u+=d,s=g&(1<<-c)-1,g>>=-c,c+=a;c>0;s=256*s+t[e+u],u+=d,c-=8);for(o=s&(1<<-c)-1,s>>=-c,c+=n;c>0;o=256*o+t[e+u],u+=d,c-=8);if(0===s)s=1-h;else{if(s===l)return o?NaN:1/0*(g?-1:1);o+=Math.pow(2,n),s-=h}return(g?-1:1)*o*Math.pow(2,s-n)},write:function(t,e,i,n,r,s){var o,a,l,h=8*s-r-1,c=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:s-1,f=n?1:-1,p=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(o++,l/=2),o+u>=c?(a=0,o=c):o+u>=1?(a=(e*l-1)*Math.pow(2,r),o+=u):(a=e*Math.pow(2,u-1)*Math.pow(2,r),o=0));r>=8;t[i+g]=255&a,g+=f,a/=256,r-=8);for(o=o<0;t[i+g]=255&o,g+=f,o/=256,h-=8);t[i+g-f]|=128*p}},hE=uE,cE=lE;function uE(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}uE.Varint=0,uE.Fixed64=1,uE.Bytes=2,uE.Fixed32=5;var dE=4294967296,gE=1/dE,fE="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function pE(t){return t.type===uE.Bytes?t.readVarint()+t.pos:t.pos+1}function mE(t,e,i){return i?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function _E(t,e,i){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));i.realloc(n);for(var r=i.pos-1;r>=t;r--)i.buf[r+n]=i.buf[r]}function yE(t,e){for(var i=0;i>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function LE(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}uE.prototype={destroy:function(){this.buf=null},readFields:function(t,e,i){for(i=i||this.length;this.pos>3,s=this.pos;this.type=7&n,t(r,e,this),this.pos===s&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=bE(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=LE(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=bE(this.buf,this.pos)+bE(this.buf,this.pos+4)*dE;return this.pos+=8,t},readSFixed64:function(){var t=bE(this.buf,this.pos)+LE(this.buf,this.pos+4)*dE;return this.pos+=8,t},readFloat:function(){var t=cE.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=cE.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,i,n=this.buf;return e=127&(i=n[this.pos++]),i<128?e:(e|=(127&(i=n[this.pos++]))<<7,i<128?e:(e|=(127&(i=n[this.pos++]))<<14,i<128?e:(e|=(127&(i=n[this.pos++]))<<21,i<128?e:function(t,e,i){var n,r,s=i.buf;if(r=s[i.pos++],n=(112&r)>>4,r<128)return mE(t,n,e);if(r=s[i.pos++],n|=(127&r)<<3,r<128)return mE(t,n,e);if(r=s[i.pos++],n|=(127&r)<<10,r<128)return mE(t,n,e);if(r=s[i.pos++],n|=(127&r)<<17,r<128)return mE(t,n,e);if(r=s[i.pos++],n|=(127&r)<<24,r<128)return mE(t,n,e);if(r=s[i.pos++],n|=(1&r)<<31,r<128)return mE(t,n,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(i=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&fE?function(t,e,i){return fE.decode(t.subarray(e,i))}(this.buf,e,t):function(t,e,i){var n="",r=e;for(;r239?4:l>223?3:l>191?2:1;if(r+c>i)break;1===c?l<128&&(h=l):2===c?128==(192&(s=t[r+1]))&&(h=(31&l)<<6|63&s)<=127&&(h=null):3===c?(s=t[r+1],o=t[r+2],128==(192&s)&&128==(192&o)&&((h=(15&l)<<12|(63&s)<<6|63&o)<=2047||h>=55296&&h<=57343)&&(h=null)):4===c&&(s=t[r+1],o=t[r+2],a=t[r+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&((h=(15&l)<<18|(63&s)<<12|(63&o)<<6|63&a)<=65535||h>=1114112)&&(h=null)),null===h?(h=65533,c=1):h>65535&&(h-=65536,n+=String.fromCharCode(h>>>10&1023|55296),h=56320|1023&h),n+=String.fromCharCode(h),r+=c}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==uE.Bytes)return t.push(this.readVarint(e));var i=pE(this);for(t=t||[];this.pos127;);else if(e===uE.Bytes)this.pos=this.readVarint()+this.pos;else if(e===uE.Fixed32)this.pos+=4;else{if(e!==uE.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var i,n;t>=0?(i=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(i=~(-t%4294967296))?i=i+1|0:(i=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,i){i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos]=127&t}(i,0,e),function(t,e){var i=(7&t)<<4;if(e.buf[e.pos++]|=i|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,i){for(var n,r,s=0;s55295&&n<57344){if(!r){n>56319||s+1===e.length?(t[i++]=239,t[i++]=191,t[i++]=189):r=n;continue}if(n<56320){t[i++]=239,t[i++]=191,t[i++]=189,r=n;continue}n=r-55296<<10|n-56320|65536,r=null}else r&&(t[i++]=239,t[i++]=191,t[i++]=189,r=null);n<128?t[i++]=n:(n<2048?t[i++]=n>>6|192:(n<65536?t[i++]=n>>12|224:(t[i++]=n>>18|240,t[i++]=n>>12&63|128),t[i++]=n>>6&63|128),t[i++]=63&n|128)}return i}(this.buf,t,this.pos);var i=this.pos-e;i>=128&&_E(e,i,this),this.pos=e-1,this.writeVarint(i),this.pos+=i},writeFloat:function(t){this.realloc(4),cE.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),cE.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var i=0;i=128&&_E(i,n,this),this.pos=i-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,i){this.writeTag(t,uE.Bytes),this.writeRawMessage(e,i)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,yE,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,xE,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,wE,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,vE,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,SE,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,EE,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,TE,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,CE,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,RE,e)},writeBytesField:function(t,e){this.writeTag(t,uE.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,uE.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,uE.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,uE.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,uE.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,uE.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,uE.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,uE.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,uE.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,uE.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};var FE=Bp(hE);function IE(t,e,i){if(3===t){const t={keys:[],values:[],features:[]},n=i.readVarint()+i.pos;i.readFields(ME,t,n),t.length=t.features.length,t.length&&(e[t.name]=t)}}function ME(t,e,i){if(15===t)e.version=i.readVarint();else if(1===t)e.name=i.readString();else if(5===t)e.extent=i.readVarint();else if(2===t)e.features.push(i.pos);else if(3===t)e.keys.push(i.readString());else if(4===t){let n=null;const r=i.readVarint()+i.pos;for(;i.pos>3)?i.readString():2===t?i.readFloat():3===t?i.readDouble():4===t?i.readVarint64():5===t?i.readVarint():6===t?i.readSVarint():7===t?i.readBoolean():null;e.values.push(n)}}function AE(t,e,i){if(1==t)e.id=i.readVarint();else if(2==t){const t=i.readVarint()+i.pos;for(;i.pos>3}if(o--,1===s||2===s)a+=t.readSVarint(),l+=t.readSVarint(),1===s&&h>c&&(n.push(h),c=h),i.push(a,l),h+=2;else{if(7!==s)throw new Error("Invalid command found in the PBF");h>c&&(i.push(i[c],i[c+1]),h+=2)}}h>c&&(n.push(h),c=h)}createFeature_(t,e,i){const n=e.type;if(0===n)return null;let r;const s=e.properties;let o;this.idProperty_?(o=s[this.idProperty_],delete s[this.idProperty_]):o=e.id,s[this.layerName_]=e.layer.name;const a=[],l=[];this.readRawGeometry_(t,e,a,l);const h=function(t,e){let i;1===t?i=1===e?"Point":"MultiPoint":2===t?i=1===e?"LineString":"MultiLineString":3===t&&(i="Polygon");return i}(n,l.length);if(this.featureClass_===ny)r=new this.featureClass_(h,a,l,s,o),r.transform(i.dataProjection);else{let t;if("Polygon"==h){const e=Cr(a,l);t=e.length>1?new Q_(a,"XY",e):new br(a,"XY",l)}else t="Point"===h?new or(a,"XY"):"LineString"===h?new Z_(a,"XY"):"MultiPoint"===h?new K_(a,"XY"):"MultiLineString"===h?new $_(a,"XY",l):null;r=new(0,this.featureClass_),this.geometryName_&&r.setGeometryName(this.geometryName_);const e=Lx(t,!1,i);r.setGeometry(e),void 0!==o&&r.setId(o),r.setProperties(s,!0)}return r}getType(){return"arraybuffer"}readFeatures(t,e){const i=this.layers_,n=tn((e=this.adaptOptions(e)).dataProjection);n.setWorldExtent(e.extent),e.dataProjection=n;const r=new FE(t),s=r.readFields(IE,{}),o=[];for(const t in s){if(i&&!i.includes(t))continue;const a=s[t],l=a?[0,0,a.extent,a.extent]:null;n.setExtent(l);for(let t=0,i=a.length;t>1):i>>1}return e}function gT(t){let e="";for(let i=0,n=t.length;i=32;)e=63+(32|31&t),i+=String.fromCharCode(e),t>>=5;return e=t+63,i+=String.fromCharCode(e),i}var mT=class extends eS{constructor(t){super(),t=t||{},this.dataProjection=tn("EPSG:4326"),this.factor_=t.factor?t.factor:1e5,this.geometryLayout_=t.geometryLayout?t.geometryLayout:"XY"}readFeatureFromText(t,e){const i=this.readGeometryFromText(t,e);return new At(i)}readFeaturesFromText(t,e){return[this.readFeatureFromText(t,e)]}readGeometryFromText(t,e){const i=Fn(this.geometryLayout_),n=lT(t,i,this.factor_);bx(n,0,n.length,i,n);const r=Hn(n,0,n.length,i);return Lx(new Z_(r,this.geometryLayout_),!1,this.adaptOptions(e))}writeFeatureText(t,e){const i=t.getGeometry();if(i)return this.writeGeometryText(i,e);throw new Error("Expected `feature` to have a geometry")}writeFeaturesText(t,e){return this.writeFeatureText(t[0],e)}writeGeometryText(t,e){const i=(t=Lx(t,!0,this.adaptOptions(e))).getFlatCoordinates(),n=t.getStride();return bx(i,0,i.length,n,i),aT(i,n,this.factor_)}};const _T={Point:function(t,e,i){const n=t.coordinates;e&&i&&wT(n,e,i);return new or(n)},LineString:function(t,e){const i=yT(t.arcs,e);return new Z_(i)},Polygon:function(t,e){const i=[];for(let n=0,r=t.arcs.length;n0&&i.pop(),n>=0){const t=e[n];for(let e=0,n=t.length;e=0;--e)i.push(t[e].slice(0))}return i}function xT(t,e,i,n,r,s,o){const a=t.geometries,l=[];for(let t=0,h=a.length;t=2,"At least 2 conditions are required")}};var RT=class extends CT{constructor(t){super("And",Array.prototype.slice.call(arguments))}};var bT=class extends TT{constructor(t,e,i){if(super("BBOX"),this.geometryName=t,this.extent=e,4!==e.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");this.srsName=i}};var PT=class extends TT{constructor(t,e,i,n){super(t),this.geometryName=e||"the_geom",this.geometry=i,this.srsName=n}};var LT=class extends PT{constructor(t,e,i){super("Contains",t,e,i)}};var FT=class extends PT{constructor(t,e,i,n,r){super("DWithin",t,e,r),this.distance=i,this.unit=n}};var IT=class extends PT{constructor(t,e,i){super("Disjoint",t,e,i)}};var MT=class extends TT{constructor(t,e){super(t),this.propertyName=e}};var AT=class extends MT{constructor(t,e,i){super("During",t),this.begin=e,this.end=i}};var OT=class extends MT{constructor(t,e,i,n){super(t,e),this.expression=i,this.matchCase=n}};var NT=class extends OT{constructor(t,e,i){super("PropertyIsEqualTo",t,e,i)}};var DT=class extends OT{constructor(t,e){super("PropertyIsGreaterThan",t,e)}};var kT=class extends OT{constructor(t,e){super("PropertyIsGreaterThanOrEqualTo",t,e)}};var GT=class extends PT{constructor(t,e,i){super("Intersects",t,e,i)}};var jT=class extends MT{constructor(t,e,i){super("PropertyIsBetween",t),this.lowerBoundary=e,this.upperBoundary=i}};var BT=class extends MT{constructor(t,e,i,n,r,s){super("PropertyIsLike",t),this.pattern=e,this.wildCard=void 0!==i?i:"*",this.singleChar=void 0!==n?n:".",this.escapeChar=void 0!==r?r:"!",this.matchCase=s}};var UT=class extends MT{constructor(t){super("PropertyIsNull",t)}};var zT=class extends OT{constructor(t,e){super("PropertyIsLessThan",t,e)}};var XT=class extends OT{constructor(t,e){super("PropertyIsLessThanOrEqualTo",t,e)}};var VT=class extends TT{constructor(t){super("Not"),this.condition=t}};var WT=class extends OT{constructor(t,e,i){super("PropertyIsNotEqualTo",t,e,i)}};var ZT=class extends CT{constructor(t){super("Or",Array.prototype.slice.call(arguments))}};var YT=class extends TT{constructor(t){super("ResourceId"),this.rid=t}};var $T=class extends PT{constructor(t,e,i){super("Within",t,e,i)}};function qT(t){const e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(RT,e))}function KT(t,e,i){return new bT(t,e,i)}const HT={"http://www.opengis.net/gml":{boundedBy:Ld(Vx.prototype.readExtentElement,"bounds")},"http://www.opengis.net/wfs/2.0":{member:Rd(Vx.prototype.readFeaturesInternal)}},JT={"http://www.opengis.net/wfs":{totalInserted:Ld(Kx),totalUpdated:Ld(Kx),totalDeleted:Ld(Kx)},"http://www.opengis.net/wfs/2.0":{totalInserted:Ld(Kx),totalUpdated:Ld(Kx),totalDeleted:Ld(Kx)}},QT={"http://www.opengis.net/wfs":{TransactionSummary:Ld(cC,"transactionSummary"),InsertResults:Ld(fC,"insertIds")},"http://www.opengis.net/wfs/2.0":{TransactionSummary:Ld(cC,"transactionSummary"),InsertResults:Ld(fC,"insertIds")}},tC={"http://www.opengis.net/wfs":{PropertyName:Fd(rv)},"http://www.opengis.net/wfs/2.0":{PropertyName:Fd(rv)}},eC={"http://www.opengis.net/wfs":{Insert:Fd(pC),Update:Fd(xC),Delete:Fd(yC),Property:Fd(vC),Native:Fd(SC)},"http://www.opengis.net/wfs/2.0":{Insert:Fd(pC),Update:Fd(xC),Delete:Fd(yC),Property:Fd(vC),Native:Fd(SC)}},iC="feature",nC="http://www.w3.org/2000/xmlns/",rC={"2.0.0":"http://www.opengis.net/ogc/1.1","1.1.0":"http://www.opengis.net/ogc","1.0.0":"http://www.opengis.net/ogc"},sC={"2.0.0":"http://www.opengis.net/wfs/2.0","1.1.0":"http://www.opengis.net/wfs","1.0.0":"http://www.opengis.net/wfs"},oC={"2.0.0":"http://www.opengis.net/fes/2.0","1.1.0":"http://www.opengis.net/fes","1.0.0":"http://www.opengis.net/fes"},aC={"2.0.0":"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd","1.1.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd","1.0.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"},lC={"2.0.0":mv,"1.1.0":dv,"1.0.0":lv};function hC(t,e,i,n){jd(n,eC,Md(t),e,i)}function cC(t,e){return kd({},JT,t,e)}const uC={"http://www.opengis.net/ogc":{FeatureId:Rd((function(t,e){return t.getAttribute("fid")}))},"http://www.opengis.net/ogc/1.1":{FeatureId:Rd((function(t,e){return t.getAttribute("fid")}))}};function dC(t,e){Dd(uC,t,e)}const gC={"http://www.opengis.net/wfs":{Feature:dC},"http://www.opengis.net/wfs/2.0":{Feature:dC}};function fC(t,e){return kd([],gC,t,e)}function pC(t,e,i){const n=i[i.length-1],r=n.featureType,s=n.featureNS,o=n.gmlVersion,a=xd(s,r);t.appendChild(a),2===o?lv.prototype.writeFeatureElement(a,e,i):3===o?dv.prototype.writeFeatureElement(a,e,i):mv.prototype.writeFeatureElement(a,e,i)}function mC(t,e,i){const n=i[i.length-1].version,r=rC[n],s=xd(r,"Filter"),o=xd(r,"FeatureId");s.appendChild(o),o.setAttribute("fid",e),t.appendChild(s)}function _C(t,e){const i=(t=t||iC)+":";return e.startsWith(i)?e:i+e}function yC(t,e,i){const n=i[i.length-1];Ft(void 0!==e.getId(),"Features must have an id set");const r=n.featureType,s=n.featurePrefix,o=n.featureNS,a=_C(s,r);t.setAttribute("typeName",a),t.setAttributeNS(nC,"xmlns:"+s,o);const l=e.getId();void 0!==l&&mC(t,l,i)}function xC(t,e,i){const n=i[i.length-1];Ft(void 0!==e.getId(),"Features must have an id set");const r=n.version,s=n.featureType,o=n.featurePrefix,a=n.featureNS,l=_C(o,s),h=e.getGeometryName();t.setAttribute("typeName",l),t.setAttributeNS(nC,"xmlns:"+o,a);const c=e.getId();if(void 0!==c){const s=e.getKeys(),o=[];for(let t=0,i=s.length;t{const r=this.combineBboxAndFilter(n.geometryName,n.bbox,t.srsName,t.filter);Object.assign(i,{geometryName:n.geometryName,filter:r}),jC(e,[n.name],[i])}));return e}combineBboxAndFilter(t,e,i,n){const r=KT(t,e,i);return n?qT(n,r):r}writeTransaction(t,e,i,n){const r=[],s=n.version?n.version:this.version_,o=xd(sC[s],"Transaction");let a;o.setAttribute("service","WFS"),o.setAttribute("version",s),n&&(a=n.gmlOptions?n.gmlOptions:{},n.handle&&o.setAttribute("handle",n.handle)),o.setAttributeNS(yd,"xsi:schemaLocation",aC[s]);const l=function(t,e,i,n){const r=n.featurePrefix?n.featurePrefix:iC;let s;"1.0.0"===i?s=2:"1.1.0"===i?s=3:"2.0.0"===i&&(s=3.2);const o=Object.assign({node:t},{version:i,featureNS:n.featureNS,featureType:n.featureType,featurePrefix:r,gmlVersion:s,hasZ:n.hasZ,srsName:n.srsName},e);return o}(o,a,s,n);return t&&hC("Insert",t,r,l),e&&hC("Update",e,r,l),i&&hC("Delete",i,r,l),n.nativeElements&&hC("Native",n.nativeElements,r,l),o}readProjectionFromDocument(t){for(let e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readProjectionFromNode(e);return null}readProjectionFromNode(t){if(t.firstElementChild&&t.firstElementChild.firstElementChild)for(let e=(t=t.firstElementChild.firstElementChild).firstElementChild;e;e=e.nextElementSibling)if(0!==e.childNodes.length&&(1!==e.childNodes.length||3!==e.firstChild.nodeType)){const t=[{}];return this.gmlFormat_.readGeometryElement(e,t),tn(t.pop().srsName)}return null}};const zC=1,XC=2,VC=3,WC=4,ZC=5,YC=6,$C=7,qC=15,KC=16,HC=17;class JC{constructor(t){this.view_=t,this.pos_=0,this.initialized_=!1,this.isLittleEndian_=!1,this.hasZ_=!1,this.hasM_=!1,this.srid_=null,this.layout_="XY"}readUint8(){return this.view_.getUint8(this.pos_++)}readUint32(t){return this.view_.getUint32((this.pos_+=4)-4,void 0!==t?t:this.isLittleEndian_)}readDouble(t){return this.view_.getFloat64((this.pos_+=8)-8,void 0!==t?t:this.isLittleEndian_)}readPoint(){const t=[];return t.push(this.readDouble()),t.push(this.readDouble()),this.hasZ_&&t.push(this.readDouble()),this.hasM_&&t.push(this.readDouble()),t}readLineString(){const t=this.readUint32(),e=[];for(let i=0;i0,i=this.readUint32(e),n=Math.floor((268435455&i)/1e3),r=Boolean(2147483648&i)||1===n||3===n,s=Boolean(1073741824&i)||2===n||3===n,o=Boolean(536870912&i),a=(268435455&i)%1e3,l=["XY",r?"Z":"",s?"M":""].join(""),h=o?this.readUint32(e):null;if(void 0!==t&&t!==a)throw new Error("Unexpected WKB geometry type "+a);if(this.initialized_){if(this.isLittleEndian_!==e)throw new Error("Inconsistent endian");if(this.layout_!==l)throw new Error("Inconsistent geometry layout");if(h&&this.srid_!==h)throw new Error("Inconsistent coordinate system (SRID)")}else this.isLittleEndian_=e,this.hasZ_=r,this.hasM_=s,this.layout_=l,this.srid_=h,this.initialized_=!0;return a}readWkbPayload(t){switch(t){case zC:return this.readPoint();case XC:return this.readLineString();case VC:case HC:return this.readPolygon();case WC:return this.readMultiPoint();case ZC:return this.readMultiLineString();case YC:case qC:case KC:return this.readMultiPolygon();case $C:return this.readGeometryCollection();default:throw new Error("Unsupported WKB geometry type "+t+" is found")}}readWkbBlock(t){return this.readWkbPayload(this.readWkbHeader(t))}readWkbCollection(t,e){const i=this.readUint32(),n=[];for(let r=0;r({[e]:t[i]}))));for(const t of this.layout_)this.writeDouble(t in i?i[t]:this.nodata_[t])}writeLineString(t,e){this.writeUint32(t.length);for(let i=0;it+e[0]),0),e=new ArrayBuffer(t),i=new DataView(e);let n=0;return this.writeQueue_.forEach((t=>{switch(t[0]){case 1:i.setUint8(n,t[1]);break;case 4:i.setUint32(n,t[1],this.isLittleEndian_);break;case 8:i.setFloat64(n,t[1],this.isLittleEndian_)}n+=t[0]})),e}}function tR(t){return"string"==typeof t?function(t){const e=new Uint8Array(t.length/2);for(let i=0;inew At({geometry:t})))}readGeometry(t,e){const i=tR(t);if(!i)return null;const n=new JC(i).readGeometry();return this.viewCache_=i,e=this.getReadOptions(t,e),this.viewCache_=null,Lx(n,!1,e)}readProjection(t){const e=this.viewCache_||tR(t);if(!e)return;const i=new JC(e);return i.readWkbHeader(),i.getSrid()&&tn("EPSG:"+i.getSrid())||void 0}writeFeature(t,e){return this.writeGeometry(t.getGeometry(),e)}writeFeatures(t,e){return this.writeGeometry(new U_(t.map((t=>t.getGeometry()))),e)}writeGeometry(t,e){e=this.adaptOptions(e);const i=new QC({layout:this.layout_,littleEndian:this.littleEndian_,ewkb:this.ewkb_,nodata:{Z:this.nodataZ_,M:this.nodataM_}});let n=Number.isInteger(this.srid_)?Number(this.srid_):null;if(!1!==this.srid_&&!Number.isInteger(this.srid_)){const t=e.dataProjection&&tn(e.dataProjection);if(t){const e=t.getCode();e.startsWith("EPSG:")&&(n=Number(e.substring(5)))}}i.writeGeometry(Lx(t,!0,e),n);const r=i.getBuffer();return this.hex_?function(t){const e=new Uint8Array(t);return Array.from(e.values()).map((t=>(t<16?"0":"")+Number(t).toString(16).toUpperCase())).join("")}(r):r}};const iR={POINT:or,LINESTRING:Z_,POLYGON:br,MULTIPOINT:K_,MULTILINESTRING:$_,MULTIPOLYGON:Q_},nR="EMPTY",rR="Z",sR="M",oR=0,aR=1,lR=2,hR=3,cR=4,uR=5,dR=6,gR={Point:"POINT",LineString:"LINESTRING",Polygon:"POLYGON",MultiPoint:"MULTIPOINT",MultiLineString:"MULTILINESTRING",MultiPolygon:"MULTIPOLYGON",GeometryCollection:"GEOMETRYCOLLECTION",Circle:"CIRCLE"};class fR{constructor(t){this.wkt=t,this.index_=-1}isAlpha_(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"}isNumeric_(t,e){return e=void 0!==e&&e,t>="0"&&t<="9"||"."==t&&!e}isWhiteSpace_(t){return" "==t||"\t"==t||"\r"==t||"\n"==t}nextChar_(){return this.wkt.charAt(++this.index_)}nextToken(){const t=this.nextChar_(),e=this.index_;let i,n=t;if("("==t)i=lR;else if(","==t)i=uR;else if(")"==t)i=hR;else if(this.isNumeric_(t)||"-"==t)i=cR,n=this.readNumber_();else if(this.isAlpha_(t))i=aR,n=this.readText_();else{if(this.isWhiteSpace_(t))return this.nextToken();if(""!==t)throw new Error("Unexpected character: "+t);i=dR}return{position:e,value:n,type:i}}readNumber_(){let t;const e=this.index_;let i=!1,n=!1;do{"."==t?i=!0:"e"!=t&&"E"!=t||(n=!0),t=this.nextChar_()}while(this.isNumeric_(t,i)||!n&&("e"==t||"E"==t)||n&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(e,this.index_--))}readText_(){let t;const e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()}}class pR{constructor(t){this.lexer_=t,this.token_={position:0,type:oR},this.layout_="XY"}consume_(){this.token_=this.lexer_.nextToken()}isTokenType(t){return this.token_.type==t}match(t){const e=this.isTokenType(t);return e&&this.consume_(),e}parse(){return this.consume_(),this.parseGeometry_()}parseGeometryLayout_(){let t="XY";const e=this.token_;if(this.isTokenType(aR)){const i=e.value;i===rR?t="XYZ":i===sR?t="XYM":"ZM"===i&&(t="XYZM"),"XY"!==t&&this.consume_()}return t}parseGeometryCollectionText_(){if(this.match(lR)){const t=[];do{t.push(this.parseGeometry_())}while(this.match(uR));if(this.match(hR))return t}throw new Error(this.formatErrorMessage_())}parsePointText_(){if(this.match(lR)){const t=this.parsePoint_();if(this.match(hR))return t}throw new Error(this.formatErrorMessage_())}parseLineStringText_(){if(this.match(lR)){const t=this.parsePointList_();if(this.match(hR))return t}throw new Error(this.formatErrorMessage_())}parsePolygonText_(){if(this.match(lR)){const t=this.parseLineStringTextList_();if(this.match(hR))return t}throw new Error(this.formatErrorMessage_())}parseMultiPointText_(){if(this.match(lR)){let t;if(t=this.token_.type==lR?this.parsePointTextList_():this.parsePointList_(),this.match(hR))return t}throw new Error(this.formatErrorMessage_())}parseMultiLineStringText_(){if(this.match(lR)){const t=this.parseLineStringTextList_();if(this.match(hR))return t}throw new Error(this.formatErrorMessage_())}parseMultiPolygonText_(){if(this.match(lR)){const t=this.parsePolygonTextList_();if(this.match(hR))return t}throw new Error(this.formatErrorMessage_())}parsePoint_(){const t=[],e=this.layout_.length;for(let i=0;i0&&(n+=" "+e)}return 0===i.length?n+" "+nR:n+"("+i+")"}var SR=class extends eS{constructor(t){super(),t=t||{},this.splitCollection_=void 0!==t.splitCollection&&t.splitCollection}parse_(t){const e=new fR(t);return new pR(e).parse()}readFeatureFromText(t,e){const i=this.readGeometryFromText(t,e),n=new At;return n.setGeometry(i),n}readFeaturesFromText(t,e){let i=[];const n=this.readGeometryFromText(t,e);i=this.splitCollection_&&"GeometryCollection"==n.getType()?n.getGeometriesArray():[n];const r=[];for(let t=0,e=i.length;tc*xb||h>u*xb?this.resetExtent_():ie(s,n)||this.recenter_()}resetExtent_(){const t=this.getMap(),e=this.ovmap_,i=t.getSize(),n=t.getView().calculateExtentInternal(i),r=e.getView(),s=Math.log(7.5)/Math.LN2;Oe(n,1/(Math.pow(2,s/2)*vb)),r.fitInternal(Lr(n))}recenter_(){const t=this.getMap(),e=this.ovmap_,i=t.getView();e.getView().setCenterInternal(i.getCenterInternal())}updateBox_(){const t=this.getMap(),e=this.ovmap_;if(!t.isRendered()||!e.isRendered())return;const i=t.getSize(),n=t.getView(),r=e.getView(),s=this.rotateWithView_?0:-n.getRotation(),o=this.boxOverlay_,a=this.boxOverlay_.getElement(),l=n.getCenterInternal(),h=n.getResolution(),c=r.getResolution(),u=i[0]*h/c,d=i[1]*h/c;if(o.setPosition(l),a){a.style.width=u+"px",a.style.height=d+"px";const t="rotate("+s+"rad)";a.style.transform=t}}updateBoxAfterOvmapIsRendered_(){this.ovmapPostrenderKey_||(this.ovmapPostrenderKey_=O(this.ovmap_,Ho,(function(t){delete this.ovmapPostrenderKey_,this.updateBox_()}),this))}handleClick_(t){t.preventDefault(),this.handleToggle_()}handleToggle_(){this.element.classList.toggle(go),this.collapsed_?vt(this.collapseLabel_,this.label_):vt(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_;const t=this.ovmap_;if(!this.collapsed_){if(t.isRendered())return this.viewExtent_=void 0,void t.render();t.updateSize(),this.resetExtent_(),this.updateBoxAfterOvmapIsRendered_()}}getCollapsible(){return this.collapsible_}setCollapsible(t){this.collapsible_!==t&&(this.collapsible_=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.collapsed_&&this.handleToggle_())}setCollapsed(t){this.collapsible_&&this.collapsed_!==t&&this.handleToggle_()}getCollapsed(){return this.collapsed_}getRotateWithView(){return this.rotateWithView_}setRotateWithView(t){this.rotateWithView_!==t&&(this.rotateWithView_=t,0!==this.getMap().getView().getRotation()&&(this.rotateWithView_?this.handleRotationChanged_():this.ovmap_.getView().setRotation(0),this.viewExtent_=void 0,this.validateExtent_(),this.updateBox_()))}getOverviewMap(){return this.ovmap_}render(t){this.validateExtent_(),this.updateBox_()}};const wb="units",Eb=[1,2,5],Tb=25.4/.28;var Cb=class extends ca{constructor(t){t=t||{};const e=document.createElement("div");e.style.pointerEvents="none",super({element:e,render:t.render,target:t.target}),this.on,this.once,this.un;const i=void 0!==t.className?t.className:t.bar?"ol-scale-bar":"ol-scale-line";this.innerElement_=document.createElement("div"),this.innerElement_.className=i+"-inner",this.element.className=i+" "+ho,this.element.appendChild(this.innerElement_),this.viewState_=null,this.minWidth_=void 0!==t.minWidth?t.minWidth:64,this.maxWidth_=t.maxWidth,this.renderedVisible_=!1,this.renderedWidth_=void 0,this.renderedHTML_="",this.addChangeListener(wb,this.handleUnitsChanged_),this.setUnits(t.units||"metric"),this.scaleBar_=t.bar||!1,this.scaleBarSteps_=t.steps||4,this.scaleBarText_=t.text||!1,this.dpi_=t.dpi||void 0}getUnits(){return this.get(wb)}handleUnitsChanged_(){this.updateElement_()}setUnits(t){this.set(wb,t)}setDpi(t){this.dpi_=t}updateElement_(){const t=this.viewState_;if(!t)return void(this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1));const e=t.center,i=t.projection,n=this.getUnits(),r="degrees"==n?"degrees":"m";let s=en(i,t.resolution,e,r);const o=this.minWidth_*(this.dpi_||Tb)/Tb,a=void 0!==this.maxWidth_?this.maxWidth_*(this.dpi_||Tb)/Tb:void 0;let l=o*s,h="";if("degrees"==n){const t=Ue.degrees;l*=t,l=a){c=g,u=f,d=p;break}if(u>=o)break;g=c,f=u,p=d,++m}const _=this.scaleBar_?this.createScaleBar(u,c,h):c.toFixed(d<0?-d:0)+" "+h;this.renderedHTML_!=_&&(this.innerElement_.innerHTML=_,this.renderedHTML_=_),this.renderedWidth_!=u&&(this.innerElement_.style.width=u+"px",this.renderedWidth_=u),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}createScaleBar(t,e,i){const n=this.getScaleForResolution(),r=n<1?Math.round(1/n).toLocaleString()+" : 1":"1 : "+Math.round(n).toLocaleString(),s=this.scaleBarSteps_,o=t/s,a=[this.createMarker("absolute")];for(let n=0;n`+this.createMarker("relative")+(n%2==0||2===s?this.createStepText(n,t,!1,e,i):"")+"")}a.push(this.createStepText(s,t,!0,e,i));return(this.scaleBarText_?``+r+"
":"")+a.join("")}createMarker(t){return``}createStepText(t,e,i,n,r){const s=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+r);return``+s+"
"}getScaleForResolution(){return en(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center,"m")*(1e3/25.4)*(this.dpi_||Tb)}render(t){const e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()}};const Rb=0,bb=1;var Pb=class extends ca{constructor(e){super({target:(e=e||{}).target,element:document.createElement("div"),render:e.render}),this.dragListenerKeys_=[],this.currentResolution_=void 0,this.direction_=Rb,this.dragging_,this.heightLimit_=0,this.widthLimit_=0,this.startX_,this.startY_,this.thumbSize_=null,this.sliderInitialized_=!1,this.duration_=void 0!==e.duration?e.duration:200;const i=void 0!==e.className?e.className:"ol-zoomslider",n=document.createElement("button");n.setAttribute("type","button"),n.className=i+"-thumb "+ho;const r=this.element;r.className=i+" "+ho+" "+uo,r.appendChild(n),r.addEventListener(Yo,this.handleDraggerStart_.bind(this),!1),r.addEventListener(Zo,this.handleDraggerDrag_.bind(this),!1),r.addEventListener($o,this.handleDraggerEnd_.bind(this),!1),r.addEventListener(E,this.handleContainerClick_.bind(this),!1),n.addEventListener(E,t,!1)}setMap(t){super.setMap(t),t&&t.render()}initSlider_(){const t=this.element;let e=t.offsetWidth,i=t.offsetHeight;if(0===e&&0===i)return this.sliderInitialized_=!1;const n=getComputedStyle(t);e-=parseFloat(n.paddingRight)+parseFloat(n.paddingLeft),i-=parseFloat(n.paddingTop)+parseFloat(n.paddingBottom);const r=t.firstElementChild,s=getComputedStyle(r),o=r.offsetWidth+parseFloat(s.marginRight)+parseFloat(s.marginLeft),a=r.offsetHeight+parseFloat(s.marginTop)+parseFloat(s.marginBottom);return this.thumbSize_=[o,a],e>i?(this.direction_=bb,this.widthLimit_=e-o):(this.direction_=Rb,this.heightLimit_=i-a),this.sliderInitialized_=!0}handleContainerClick_(t){const e=this.getMap().getView(),i=this.getRelativePosition_(t.offsetX-this.thumbSize_[0]/2,t.offsetY-this.thumbSize_[1]/2),n=this.getResolutionForPosition_(i),r=e.getConstrainedZoom(e.getZoomForResolution(n));e.animateInternal({zoom:r,duration:this.duration_,easing:et})}handleDraggerStart_(t){if(!this.dragging_&&t.target===this.element.firstElementChild){const e=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.startX_=t.clientX-parseFloat(e.style.left),this.startY_=t.clientY-parseFloat(e.style.top),this.dragging_=!0,0===this.dragListenerKeys_.length){const t=this.handleDraggerDrag_,e=this.handleDraggerEnd_,i=this.getMap().getOwnerDocument();this.dragListenerKeys_.push(A(i,Zo,t,this),A(i,$o,e,this))}}}handleDraggerDrag_(t){if(this.dragging_){const e=t.clientX-this.startX_,i=t.clientY-this.startY_,n=this.getRelativePosition_(e,i);this.currentResolution_=this.getResolutionForPosition_(n),this.getMap().getView().setResolution(this.currentResolution_)}}handleDraggerEnd_(t){if(this.dragging_){this.getMap().getView().endInteraction(),this.dragging_=!1,this.startX_=void 0,this.startY_=void 0,this.dragListenerKeys_.forEach(N),this.dragListenerKeys_.length=0}}setThumbPosition_(t){const e=this.getPositionForResolution_(t),i=this.element.firstElementChild;this.direction_==bb?i.style.left=this.widthLimit_*e+"px":i.style.top=this.heightLimit_*e+"px"}getRelativePosition_(t,e){let i;return i=this.direction_===bb?t/this.widthLimit_:e/this.heightLimit_,ui(i,0,1)}getResolutionForPosition_(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)}getPositionForResolution_(t){return ui(1-this.getMap().getView().getValueForResolutionFunction()(t),0,1)}render(t){if(!t.frameState)return;if(!this.sliderInitialized_&&!this.initSlider_())return;const e=t.frameState.viewState.resolution;this.currentResolution_=e,this.setThumbPosition_(e)}};var Lb=class extends ca{constructor(t){t=t||{},super({element:document.createElement("div"),target:t.target}),this.extent=t.extent?t.extent:null;const e=void 0!==t.className?t.className:"ol-zoom-extent",i=void 0!==t.label?t.label:"E",n=void 0!==t.tipLabel?t.tipLabel:"Fit to extent",r=document.createElement("button");r.setAttribute("type","button"),r.title=n,r.appendChild("string"==typeof i?document.createTextNode(i):i),r.addEventListener(E,this.handleClick_.bind(this),!1);const s=e+" "+ho+" "+uo,o=this.element;o.className=s,o.appendChild(r)}handleClick_(t){t.preventDefault(),this.handleZoomToExtent()}handleZoomToExtent(){const t=this.getMap().getView(),e=this.extent?this.extent:t.getProjection().getExtent();t.fitInternal(Lr(e))}},Fb={};return Fb.Collection=$,Fb.Collection.CollectionEvent=Y,Fb.DataTile=Lt,Fb.DataTile.asArrayLike=Ct,Fb.DataTile.asImageLike=Tt,Fb.DataTile.toArray=bt,Fb.Disposable=n,Fb.Feature=At,Fb.Feature.createStyleFunction=Mt,Fb.Geolocation=Vr,Fb.Geolocation.GeolocationError=Xr,Fb.Image=ts,Fb.Image.decode=Qr,Fb.Image.decodeFallback=Jr,Fb.Image.listenImage=Kr,Fb.Image.load=Hr,Fb.ImageCanvas=es,Fb.ImageTile=is,Fb.Kinetic=ns,Fb.Map=ll,Fb.MapBrowserEvent=Vo,Fb.MapBrowserEventHandler=Ko,Fb.MapEvent=Xo,Fb.Object=X,Fb.Object.ObjectEvent=z,Fb.Observable=G,Fb.Observable.unByKey=k,Fb.Overlay=fl,Fb.Tile=rt,Fb.TileCache=El,Fb.TileQueue=la,Fb.TileQueue.getTilePriority=ha,Fb.TileRange=Rl,Fb.TileRange.createOrUpdate=Cl,Fb.VectorRenderTile=Pl,Fb.VectorTile=Ll,Fb.View=eo,Fb.View.createCenterConstraint=Ks,Fb.View.createResolutionConstraint=Hs,Fb.View.createRotationConstraint=Js,Fb.View.isNoopAnimation=Qs,Fb.array={},Fb.array.ascending=s,Fb.array.binarySearch=r,Fb.array.descending=o,Fb.array.equals=c,Fb.array.extend=h,Fb.array.isSorted=u,Fb.array.linearFindNearest=a,Fb.array.remove=function(t,e){const i=t.indexOf(e),n=i>-1;return n&&t.splice(i,1),n},Fb.array.reverseSubArray=l,Fb.array.stableSort=function(t,e){const i=t.length,n=Array(t.length);let r;for(r=0;rVi.info||console.log(...t)},Fb.console.setLevel=function(t){Wi=Vi[t]},Fb.console.warn=Zi,Fb.control={},Fb.control.Attribution=ua,Fb.control.Control=ca,Fb.control.FullScreen=pb,Fb.control.MousePosition=yb,Fb.control.OverviewMap=Sb,Fb.control.Rotate=da,Fb.control.ScaleLine=Cb,Fb.control.Zoom=ga,Fb.control.ZoomSlider=Pb,Fb.control.ZoomToExtent=Lb,Fb.control.defaults={},Fb.control.defaults.defaults=fa,Fb.coordinate={},Fb.coordinate.add=Ci,Fb.coordinate.closestOnCircle=Ri,Fb.coordinate.closestOnSegment=bi,Fb.coordinate.createStringXY=function(t){return function(e){return Di(e,t)}},Fb.coordinate.degreesToStringHDMS=Pi,Fb.coordinate.distance=Oi,Fb.coordinate.equals=Fi,Fb.coordinate.format=Li,Fb.coordinate.getWorldsAway=Gi,Fb.coordinate.rotate=Ii,Fb.coordinate.scale=Mi,Fb.coordinate.squaredDistance=Ai,Fb.coordinate.squaredDistanceToSegment=Ni,Fb.coordinate.toStringHDMS=function(t,e){return t?Pi("NS",t[1],e)+" "+Pi("EW",t[0],e):""},Fb.coordinate.toStringXY=Di,Fb.coordinate.wrapX=ki,Fb.css={},Fb.css.CLASS_COLLAPSED=go,Fb.css.CLASS_CONTROL=uo,Fb.css.CLASS_HIDDEN=ao,Fb.css.CLASS_SELECTABLE=lo,Fb.css.CLASS_UNSELECTABLE=ho,Fb.css.CLASS_UNSUPPORTED=co,Fb.css.getFontParameters=mo,Fb.dom={},Fb.dom.createCanvasContext2D=mt,Fb.dom.outerHeight=xt,Fb.dom.outerWidth=yt,Fb.dom.releaseCanvas=_t,Fb.dom.removeChildren=wt,Fb.dom.removeNode=St,Fb.dom.replaceChildren=Et,Fb.dom.replaceNode=vt,Fb.easing={},Fb.easing.easeIn=tt,Fb.easing.easeOut=et,Fb.easing.inAndOut=it,Fb.easing.linear=nt,Fb.easing.upAndDown=function(t){return t<.5?it(2*t):1-it(2*(t-.5))},Fb.events={},Fb.events.Event=e,Fb.events.Event.preventDefault=function(t){t.preventDefault()},Fb.events.Event.stopPropagation=t,Fb.events.SnapEvent={},Fb.events.SnapEvent.SnapEvent=yx,Fb.events.Target=x,Fb.events.condition={},Fb.events.condition.all=wa,Fb.events.condition.altKeyOnly=Ea,Fb.events.condition.altShiftKeysOnly=Ta,Fb.events.condition.always=ba,Fb.events.condition.click=function(t){return t.type==Wo.CLICK},Fb.events.condition.doubleClick=function(t){return t.type==Wo.DBLCLICK},Fb.events.condition.focus=Ca,Fb.events.condition.focusWithTabindex=Ra,Fb.events.condition.mouseActionButton=Pa,Fb.events.condition.mouseOnly=Na,Fb.events.condition.never=La,Fb.events.condition.noModifierKeys=Ia,Fb.events.condition.penOnly=function(t){const e=t.originalEvent;return Ft(void 0!==e,"mapBrowserEvent must originate from a pointer event"),"pen"===e.pointerType},Fb.events.condition.platformModifierKey=Ma,Fb.events.condition.platformModifierKeyOnly=function(t){const e=t.originalEvent;return!e.altKey&&(ct?e.metaKey:e.ctrlKey)&&!e.shiftKey},Fb.events.condition.pointerMove=function(t){return"pointermove"==t.type},Fb.events.condition.primaryAction=Da,Fb.events.condition.shiftKeyOnly=Aa,Fb.events.condition.singleClick=Fa,Fb.events.condition.targetNotEditable=Oa,Fb.events.condition.touchOnly=function(t){const e=t.originalEvent;return Ft(void 0!==e,"mapBrowserEvent must originate from a pointer event"),"touch"===e.pointerType},Fb.events.listen=A,Fb.events.listenOnce=O,Fb.events.unlistenByKey=N,Fb.expr={},Fb.expr.cpu={},Fb.expr.cpu.buildExpression=up,Fb.expr.cpu.newEvaluationContext=cp,Fb.expr.expression={},Fb.expr.expression.AnyType=Kf,Fb.expr.expression.BooleanType=Wf,Fb.expr.expression.CallExpression=np,Fb.expr.expression.ColorType=$f,Fb.expr.expression.LiteralExpression=ip,Fb.expr.expression.NoneType=0,Fb.expr.expression.NumberArrayType=qf,Fb.expr.expression.NumberType=Zf,Fb.expr.expression.Ops=op,Fb.expr.expression.StringType=Yf,Fb.expr.expression.includesType=tp,Fb.expr.expression.isType=function(t,e){return t===e},Fb.expr.expression.newParsingContext=rp,Fb.expr.expression.overlapsType=ep,Fb.expr.expression.parse=sp,Fb.expr.expression.typeName=Qf,Fb.extent={},Fb.extent.applyTransform=De,Fb.extent.approximatelyEquals=ue,Fb.extent.boundingExtent=Ht,Fb.extent.buffer=Jt,Fb.extent.clone=Qt,Fb.extent.closestSquaredDistanceXY=te,Fb.extent.containsCoordinate=ee,Fb.extent.containsExtent=ie,Fb.extent.containsXY=ne,Fb.extent.coordinateRelationship=re,Fb.extent.createEmpty=se,Fb.extent.createOrUpdate=oe,Fb.extent.createOrUpdateEmpty=ae,Fb.extent.createOrUpdateFromCoordinate=le,Fb.extent.createOrUpdateFromCoordinates=function(t,e){return fe(ae(e),t)},Fb.extent.createOrUpdateFromFlatCoordinates=he,Fb.extent.createOrUpdateFromRings=function(t,e){return me(ae(e),t)},Fb.extent.equals=ce,Fb.extent.extend=de,Fb.extent.extendCoordinate=ge,Fb.extent.extendCoordinates=fe,Fb.extent.extendFlatCoordinates=pe,Fb.extent.extendRings=me,Fb.extent.extendXY=_e,Fb.extent.forEachCorner=ye,Fb.extent.getArea=xe,Fb.extent.getBottomLeft=ve,Fb.extent.getBottomRight=Se,Fb.extent.getCenter=we,Fb.extent.getCorner=Ee,Fb.extent.getEnlargedArea=function(t,e){const i=Math.min(t[0],e[0]),n=Math.min(t[1],e[1]);return(Math.max(t[2],e[2])-i)*(Math.max(t[3],e[3])-n)},Fb.extent.getForViewAndSize=Te,Fb.extent.getHeight=Re,Fb.extent.getIntersection=be,Fb.extent.getIntersectionArea=function(t,e){return xe(be(t,e))},Fb.extent.getMargin=function(t){return Fe(t)+Re(t)},Fb.extent.getRotatedViewport=Ce,Fb.extent.getSize=function(t){return[t[2]-t[0],t[3]-t[1]]},Fb.extent.getTopLeft=Pe,Fb.extent.getTopRight=Le,Fb.extent.getWidth=Fe,Fb.extent.intersects=Ie,Fb.extent.intersectsSegment=Ne,Fb.extent.isEmpty=Me,Fb.extent.returnOrUpdate=Ae,Fb.extent.scaleFromCenter=Oe,Fb.extent.wrapAndSliceX=Ge,Fb.extent.wrapX=ke,Fb.featureloader={},Fb.featureloader.loadFeaturesXhr=Al,Fb.featureloader.setWithCredentials=function(t){Ml=t},Fb.featureloader.xhr=Ol,Fb.format={},Fb.format.EsriJSON=jx,Fb.format.Feature=Px,Fb.format.Feature.transformExtentWithOptions=Fx,Fb.format.Feature.transformGeometryWithOptions=Lx,Fb.format.GML=fv,Fb.format.GML2=lv,Fb.format.GML3=dv,Fb.format.GML32=mv,Fb.format.GMLBase=Vx,Fb.format.GMLBase.GMLNS=Ux,Fb.format.GPX=Kv,Fb.format.GeoJSON=Qv,Fb.format.IGC=oS,Fb.format.IIIFInfo=Gc,Fb.format.JSONFeature=Mx,Fb.format.KML=aE,Fb.format.KML.getDefaultFillStyle=function(){return ES},Fb.format.KML.getDefaultImageStyle=function(){return CS},Fb.format.KML.getDefaultStrokeStyle=function(){return bS},Fb.format.KML.getDefaultStyle=function(){return LS},Fb.format.KML.getDefaultStyleArray=function(){return IS},Fb.format.KML.getDefaultTextStyle=function(){return PS},Fb.format.KML.readFlatCoordinates=DS,Fb.format.MVT=NE,Fb.format.OSMXML=UE,Fb.format.OWS=oT,Fb.format.Polyline=mT,Fb.format.Polyline.decodeDeltas=lT,Fb.format.Polyline.decodeFloats=cT,Fb.format.Polyline.decodeSignedIntegers=dT,Fb.format.Polyline.decodeUnsignedIntegers=fT,Fb.format.Polyline.encodeDeltas=aT,Fb.format.Polyline.encodeFloats=hT,Fb.format.Polyline.encodeSignedIntegers=uT,Fb.format.Polyline.encodeUnsignedInteger=pT,Fb.format.Polyline.encodeUnsignedIntegers=gT,Fb.format.TextFeature=eS,Fb.format.TopoJSON=ET,Fb.format.WFS=UC,Fb.format.WFS.writeFilter=function(t,e){const i=xd(BC(e=e||"1.1.0"),"Filter"),n={node:i};return Object.assign(n,{version:e,filter:t}),TC(i,t,[n]),i},Fb.format.WKB=eR,Fb.format.WKT=SR,Fb.format.WMSCapabilities=WR,Fb.format.WMSGetFeatureInfo=ZR,Fb.format.WMTSCapabilities=lb,Fb.format.XML=zE,Fb.format.XMLFeature=Bx,Fb.format.filter={},Fb.format.filter.And=RT,Fb.format.filter.Bbox=bT,Fb.format.filter.Comparison=MT,Fb.format.filter.ComparisonBinary=OT,Fb.format.filter.Contains=LT,Fb.format.filter.DWithin=FT,Fb.format.filter.Disjoint=IT,Fb.format.filter.During=AT,Fb.format.filter.EqualTo=NT,Fb.format.filter.Filter=TT,Fb.format.filter.GreaterThan=DT,Fb.format.filter.GreaterThanOrEqualTo=kT,Fb.format.filter.Intersects=GT,Fb.format.filter.IsBetween=jT,Fb.format.filter.IsLike=BT,Fb.format.filter.IsNull=UT,Fb.format.filter.LessThan=zT,Fb.format.filter.LessThanOrEqualTo=XT,Fb.format.filter.LogicalNary=CT,Fb.format.filter.Not=VT,Fb.format.filter.NotEqualTo=WT,Fb.format.filter.Or=ZT,Fb.format.filter.ResourceId=YT,Fb.format.filter.Spatial=PT,Fb.format.filter.Within=$T,Fb.format.filter.and=qT,Fb.format.filter.bbox=KT,Fb.format.filter.between=function(t,e,i){return new jT(t,e,i)},Fb.format.filter.contains=function(t,e,i){return new LT(t,e,i)},Fb.format.filter.disjoint=function(t,e,i){return new IT(t,e,i)},Fb.format.filter.during=function(t,e,i){return new AT(t,e,i)},Fb.format.filter.dwithin=function(t,e,i,n,r){return new FT(t,e,i,n,r)},Fb.format.filter.equalTo=function(t,e,i){return new NT(t,e,i)},Fb.format.filter.greaterThan=function(t,e){return new DT(t,e)},Fb.format.filter.greaterThanOrEqualTo=function(t,e){return new kT(t,e)},Fb.format.filter.intersects=function(t,e,i){return new GT(t,e,i)},Fb.format.filter.isNull=function(t){return new UT(t)},Fb.format.filter.lessThan=function(t,e){return new zT(t,e)},Fb.format.filter.lessThanOrEqualTo=function(t,e){return new XT(t,e)},Fb.format.filter.like=function(t,e,i,n,r,s){return new BT(t,e,i,n,r,s)},Fb.format.filter.not=function(t){return new VT(t)},Fb.format.filter.notEqualTo=function(t,e,i){return new WT(t,e,i)},Fb.format.filter.or=function(t){const e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(ZT,e))},Fb.format.filter.resourceId=function(t){return new YT(t)},Fb.format.filter.within=function(t,e,i){return new $T(t,e,i)},Fb.format.xlink={},Fb.format.xlink.readHref=VE,Fb.format.xsd={},Fb.format.xsd.readBoolean=Wx,Fb.format.xsd.readBooleanString=Zx,Fb.format.xsd.readDateTime=Yx,Fb.format.xsd.readDecimal=$x,Fb.format.xsd.readDecimalString=qx,Fb.format.xsd.readNonNegativeIntegerString=Hx,Fb.format.xsd.readPositiveInteger=Kx,Fb.format.xsd.readString=Jx,Fb.format.xsd.writeBooleanTextNode=Qx,Fb.format.xsd.writeCDATASection=tv,Fb.format.xsd.writeDateTimeTextNode=ev,Fb.format.xsd.writeDecimalTextNode=iv,Fb.format.xsd.writeNonNegativeIntegerTextNode=nv,Fb.format.xsd.writeStringTextNode=rv,Fb.functions={},Fb.functions.FALSE=g,Fb.functions.TRUE=d,Fb.functions.VOID=f,Fb.functions.memoizeOne=p,Fb.functions.toPromise=m,Fb.geom={},Fb.geom.Circle=G_,Fb.geom.Geometry=Ln,Fb.geom.GeometryCollection=U_,Fb.geom.LineString=Z_,Fb.geom.LinearRing=rr,Fb.geom.MultiLineString=$_,Fb.geom.MultiPoint=K_,Fb.geom.MultiPolygon=Q_,Fb.geom.Point=or,Fb.geom.Polygon=br,Fb.geom.Polygon.circular=Pr,Fb.geom.Polygon.fromCircle=Fr,Fb.geom.Polygon.fromExtent=Lr,Fb.geom.Polygon.makeRegular=Ir,Fb.geom.SimpleGeometry=Mn,Fb.geom.SimpleGeometry.getStrideForLayout=Fn,Fb.geom.SimpleGeometry.transformGeom2D=In,Fb.geom.flat={},Fb.geom.flat.area={},Fb.geom.flat.area.linearRing=tr,Fb.geom.flat.area.linearRings=er,Fb.geom.flat.area.linearRingss=ir,Fb.geom.flat.center={},Fb.geom.flat.center.linearRingss=H_,Fb.geom.flat.closest={},Fb.geom.flat.closest.arrayMaxSquaredDelta=Nn,Fb.geom.flat.closest.assignClosestArrayPoint=Gn,Fb.geom.flat.closest.assignClosestMultiArrayPoint=jn,Fb.geom.flat.closest.assignClosestPoint=kn,Fb.geom.flat.closest.maxSquaredDelta=On,Fb.geom.flat.closest.multiArrayMaxSquaredDelta=Dn,Fb.geom.flat.contains={},Fb.geom.flat.contains.linearRingContainsExtent=ar,Fb.geom.flat.contains.linearRingContainsXY=lr,Fb.geom.flat.contains.linearRingsContainsXY=hr,Fb.geom.flat.contains.linearRingssContainsXY=cr,Fb.geom.flat.deflate={},Fb.geom.flat.deflate.deflateCoordinate=Bn,Fb.geom.flat.deflate.deflateCoordinates=Un,Fb.geom.flat.deflate.deflateCoordinatesArray=zn,Fb.geom.flat.deflate.deflateMultiCoordinatesArray=Xn,Fb.geom.flat.flip={},Fb.geom.flat.flip.flipXY=bx,Fb.geom.flat.geodesic={},Fb.geom.flat.geodesic.greatCircleArc=function(t,e,i,n,r,s){const o=tn("EPSG:4326"),a=Math.cos(mi(e)),l=Math.sin(mi(e)),h=Math.cos(mi(n)),c=Math.sin(mi(n)),u=Math.cos(mi(i-t)),d=Math.sin(mi(i-t)),g=l*c+a*h*u;return ly((function(e){if(1<=g)return[i,n];const r=e*Math.acos(g),s=Math.cos(r),o=Math.sin(r),f=d*h,p=a*c-l*h*u,m=Math.atan2(f,p),_=Math.asin(l*s+a*o*Math.cos(m));return[pi(mi(t)+Math.atan2(Math.sin(m)*o*a,s-l*Math.sin(_))),pi(_)]}),cn(o,r),s)},Fb.geom.flat.geodesic.meridian=hy,Fb.geom.flat.geodesic.parallel=cy,Fb.geom.flat.inflate={},Fb.geom.flat.inflate.inflateCoordinates=Hn,Fb.geom.flat.inflate.inflateCoordinatesArray=Jn,Fb.geom.flat.inflate.inflateMultiCoordinatesArray=Qn,Fb.geom.flat.interiorpoint={},Fb.geom.flat.interiorpoint.getInteriorPointOfArray=ur,Fb.geom.flat.interiorpoint.getInteriorPointsOfMultiArray=dr,Fb.geom.flat.interpolate={},Fb.geom.flat.interpolate.interpolatePoint=z_,Fb.geom.flat.interpolate.lineStringCoordinateAtM=X_,Fb.geom.flat.interpolate.lineStringsCoordinateAtM=V_,Fb.geom.flat.intersectsextent={},Fb.geom.flat.intersectsextent.intersectsLineString=fr,Fb.geom.flat.intersectsextent.intersectsLineStringArray=pr,Fb.geom.flat.intersectsextent.intersectsLinearRing=mr,Fb.geom.flat.intersectsextent.intersectsLinearRingArray=_r,Fb.geom.flat.intersectsextent.intersectsLinearRingMultiArray=yr,Fb.geom.flat.length={},Fb.geom.flat.length.lineStringLength=f_,Fb.geom.flat.length.linearRingLength=function(t,e,i,n){let r=f_(t,e,i,n);const s=t[i-n]-t[e],o=t[i-n+1]-t[e+1];return r+=Math.sqrt(s*s+o*o),r},Fb.geom.flat.orient={},Fb.geom.flat.orient.inflateEnds=Cr,Fb.geom.flat.orient.linearRingIsClockwise=vr,Fb.geom.flat.orient.linearRingsAreOriented=Sr,Fb.geom.flat.orient.linearRingssAreOriented=wr,Fb.geom.flat.orient.orientLinearRings=Er,Fb.geom.flat.orient.orientLinearRingsArray=Tr,Fb.geom.flat.reverse={},Fb.geom.flat.reverse.coordinates=xr,Fb.geom.flat.segments={},Fb.geom.flat.segments.forEach=gr,Fb.geom.flat.simplify={},Fb.geom.flat.simplify.douglasPeucker=Vn,Fb.geom.flat.simplify.douglasPeuckerArray=Wn,Fb.geom.flat.simplify.douglasPeuckerMultiArray=function(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;l3&&!!tr(t,e,i,n)},Fb.geom.flat.transform={},Fb.geom.flat.transform.rotate=Cn,Fb.geom.flat.transform.scale=Rn,Fb.geom.flat.transform.transform2D=Tn,Fb.geom.flat.transform.translate=bn,Fb.has={},Fb.has.CREATE_IMAGE_BITMAP=ft,Fb.has.DEVICE_PIXEL_RATIO=ut,Fb.has.FIREFOX=ot,Fb.has.IMAGE_DECODE=gt,Fb.has.MAC=ct,Fb.has.PASSIVE_EVENT_LISTENERS=pt,Fb.has.SAFARI=at,Fb.has.SAFARI_BUG_237906=lt,Fb.has.WEBKIT=ht,Fb.has.WORKER_OFFSCREEN_CANVAS=dt,Fb.interaction={},Fb.interaction.DblClickDragZoom=Cy,Fb.interaction.DoubleClickZoom=xa,Fb.interaction.DragAndDrop=Py,Fb.interaction.DragAndDrop.DragAndDropEvent=by,Fb.interaction.DragBox=Wa,Fb.interaction.DragBox.DragBoxEvent=Va,Fb.interaction.DragPan=ka,Fb.interaction.DragRotate=Ga,Fb.interaction.DragRotateAndZoom=Ly,Fb.interaction.DragZoom=Za,Fb.interaction.Draw=Vy,Fb.interaction.Draw.DrawEvent=Ay,Fb.interaction.Draw.createBox=function(){return function(t,e,i){const n=Ht([t[0],t[t.length-1]].map((function(t){return _n(t,i)}))),r=[[ve(n),Se(n),Le(n),Pe(n),ve(n)]];e?e.setCoordinates(r):e=new br(r);const s=pn();return s&&e.transform(i,s),e}},Fb.interaction.Draw.createRegularPolygon=function(t,e){return function(i,n,r){const s=_n(i[0],r),o=_n(i[i.length-1],r),a=Math.sqrt(Ai(s,o));n=n||Fr(new G_(s),t);let l=e;if(!e&&0!==e){const t=o[0]-s[0],e=o[1]-s[1];l=Math.atan2(e,t)}Ir(n,s,a,l);const h=pn();return h&&n.transform(r,h),n}},Fb.interaction.Extent=Hy,Fb.interaction.Extent.ExtentEvent=Zy,Fb.interaction.Interaction=ya,Fb.interaction.Interaction.pan=ma,Fb.interaction.Interaction.zoomByDelta=_a,Fb.interaction.KeyboardPan=Ha,Fb.interaction.KeyboardZoom=Ja,Fb.interaction.Link=ex,Fb.interaction.Modify=ux,Fb.interaction.Modify.ModifyEvent=ox,Fb.interaction.MouseWheelZoom=Qa,Fb.interaction.PinchRotate=tl,Fb.interaction.PinchZoom=el,Fb.interaction.Pointer=Sa,Fb.interaction.Pointer.centroid=va,Fb.interaction.Select=mx,Fb.interaction.Select.SelectEvent=gx,Fb.interaction.Snap=Sx,Fb.interaction.Translate=Rx,Fb.interaction.Translate.TranslateEvent=Cx,Fb.interaction.defaults={},Fb.interaction.defaults.defaults=il,Fb.layer={},Fb.layer.Base=bs,Fb.layer.BaseImage=Cu,Fb.layer.BaseTile=Ou,Fb.layer.BaseVector=Dp,Fb.layer.Graticule=gy,Fb.layer.Group=zo,Fb.layer.Group.GroupEvent=jo,Fb.layer.Heatmap=yy,Fb.layer.Image=Iu,Fb.layer.Layer=no,Fb.layer.Layer.inView=io,Fb.layer.Tile=Du,Fb.layer.Vector=ay,Fb.layer.VectorImage=xy,Fb.layer.VectorTile=vy,Fb.layer.WebGLPoints=Sy,Fb.layer.WebGLTile=Ty,Fb.loadingstrategy={},Fb.loadingstrategy.all=Nl,Fb.loadingstrategy.bbox=function(t,e){return[t]},Fb.loadingstrategy.tile=function(t){return function(e,i,n){const r=t.getZForResolution(Sn(i,n)),s=t.getTileRangeForExtentAndZ(xn(e,n),r),o=[],a=[r,0,0];for(a[1]=s.minX;a[1]<=s.maxX;++a[1])for(a[2]=s.minY;a[2]<=s.maxY;++a[2])o.push(yn(t.getTileCoordExtent(a),n));return o}},Fb.math={},Fb.math.ceil=wi,Fb.math.clamp=ui,Fb.math.floor=Si,Fb.math.lerp=yi,Fb.math.modulo=_i,Fb.math.round=vi,Fb.math.solveLinearSystem=fi,Fb.math.squaredDistance=gi,Fb.math.squaredSegmentDistance=di,Fb.math.toDegrees=pi,Fb.math.toFixed=xi,Fb.math.toRadians=mi,Fb.net={},Fb.net.ClientError=Gl,Fb.net.ResponseError=kl,Fb.net.getJSON=jl,Fb.net.jsonp=Dl,Fb.net.overrideXHR=function(t){"undefined"!=typeof XMLHttpRequest&&(Il=XMLHttpRequest),global.XMLHttpRequest=t},Fb.net.resolveUrl=Bl,Fb.net.restoreXHR=function(){global.XMLHttpRequest=Il},Fb.obj={},Fb.obj.clear=_,Fb.obj.isEmpty=y,Fb.proj={},Fb.proj.Projection=ze,Fb.proj.Units={},Fb.proj.Units.METERS_PER_UNIT=Ue,Fb.proj.Units.fromCode=Be,Fb.proj.addCommon=En,Fb.proj.addCoordinateTransforms=an,Fb.proj.addEquivalentProjections=nn,Fb.proj.addEquivalentTransforms=rn,Fb.proj.addProjection=Ji,Fb.proj.addProjections=Qi,Fb.proj.clearAllProjections=function(){ri(),li()},Fb.proj.clearUserProjection=function(){gn=null},Fb.proj.cloneTransform=Ki,Fb.proj.createProjection=sn,Fb.proj.createSafeCoordinateTransform=wn,Fb.proj.createTransformFromCoordinateTransform=on,Fb.proj.disableCoordinateWarning=qi,Fb.proj.epsg3857={},Fb.proj.epsg3857.EXTENT=We,Fb.proj.epsg3857.HALF_SIZE=Ve,Fb.proj.epsg3857.MAX_SAFE_Y=Ye,Fb.proj.epsg3857.PROJECTIONS=qe,Fb.proj.epsg3857.RADIUS=Xe,Fb.proj.epsg3857.WORLD_EXTENT=Ze,Fb.proj.epsg3857.fromEPSG4326=Ke,Fb.proj.epsg3857.toEPSG4326=He,Fb.proj.epsg4326={},Fb.proj.epsg4326.EXTENT=Qe,Fb.proj.epsg4326.METERS_PER_UNIT=ti,Fb.proj.epsg4326.PROJECTIONS=ii,Fb.proj.epsg4326.RADIUS=Je,Fb.proj.equivalent=ln,Fb.proj.fromLonLat=function(t,e){return qi(),un(t,"EPSG:4326",void 0!==e?e:"EPSG:3857")},Fb.proj.fromUserCoordinate=_n,Fb.proj.fromUserExtent=xn,Fb.proj.fromUserResolution=Sn,Fb.proj.get=tn,Fb.proj.getPointResolution=en,Fb.proj.getTransform=cn,Fb.proj.getTransformFromProjections=hn,Fb.proj.getUserProjection=pn,Fb.proj.identityTransform=Hi,Fb.proj.proj4={},Fb.proj.proj4.epsgLookupMapTiler=function(t){return async function(e){const i=await fetch(`https://api.maptiler.com/coordinates/search/code:${e}.json?transformations=true&exports=true&key=${t}`);if(!i.ok)throw new Error(`Unexpected response from maptiler.com: ${i.status}`);return i.json().then((t=>{const i=t.results;if(i?.length>0){const t=i.filter((t=>"EPSG"===t.id?.authority&&t.id?.code===e))[0];if(t){const e=t.transformations;if(e?.length>0){const i=t.default_transformation;if(e.filter((t=>t.id?.authority===i?.authority&&t.id?.code===i?.code&&0===t.grids?.length)).length>0)return t.exports?.proj4;const n=e.filter((t=>0===t.grids?.length&&"EPSG"===t.target_crs?.authority&&4326===t.target_crs?.code&&!1===t.deprecated&&!0===t.usable)).sort(((t,e)=>t.accuracy-e.accuracy))[0]?.exports?.proj4;if(n)return n}return t.exports?.proj4}}}))}},Fb.proj.proj4.fromEPSGCode=async function(t){"string"==typeof t&&(t=parseInt(t.split(":").pop(),10));const e=ry;if(!e)throw new Error("Proj4 must be registered first with register(proj4)");const i="EPSG:"+t;return e.defs(i)||(e.defs(i,await oy(t)),sy(e)),tn(i)},Fb.proj.proj4.getEPSGLookup=function(){return oy},Fb.proj.proj4.isRegistered=function(){return!!ry},Fb.proj.proj4.register=sy,Fb.proj.proj4.setEPSGLookup=function(t){oy=t},Fb.proj.proj4.unregister=function(){ry=null},Fb.proj.projections={},Fb.proj.projections.add=oi,Fb.proj.projections.clear=ri,Fb.proj.projections.get=si,Fb.proj.setUserProjection=fn,Fb.proj.toLonLat=function(t,e){const i=un(t,void 0!==e?e:"EPSG:3857","EPSG:4326"),n=i[0];return(n<-180||n>180)&&(i[0]=_i(n+180,360)-180),i},Fb.proj.toUserCoordinate=mn,Fb.proj.toUserExtent=yn,Fb.proj.toUserResolution=vn,Fb.proj.transform=un,Fb.proj.transformExtent=dn,Fb.proj.transformWithProjections=function(t,e,i){return hn(e,i)(t)},Fb.proj.transforms={},Fb.proj.transforms.add=hi,Fb.proj.transforms.clear=li,Fb.proj.transforms.get=ci,Fb.proj.transforms.remove=function(t,e){const i=t.getCode(),n=e.getCode(),r=ai[i][n];return delete ai[i][n],y(ai[i])&&delete ai[i],r},Fb.proj.useGeographic=function(){fn("EPSG:4326")},Fb.render={},Fb.render.Box=ja,Fb.render.Event=oo,Fb.render.Feature=ny,Fb.render.Feature.toFeature=function(t,e){const i=t.getId(),n=iy(t),r=t.getProperties(),s=new At;return void 0!==e&&s.setGeometryName(e),s.setGeometry(n),void 0!==i&&s.setId(i),s.setProperties(r,!0),s},Fb.render.Feature.toGeometry=iy,Fb.render.VectorContext=Ul,Fb.render.canvas={},Fb.render.canvas.Builder=n_,Fb.render.canvas.BuilderGroup=d_,Fb.render.canvas.Executor=T_,Fb.render.canvas.ExecutorGroup=P_,Fb.render.canvas.ExecutorGroup.getPixelIndexArray=b_,Fb.render.canvas.ImageBuilder=r_,Fb.render.canvas.Immediate=zl,Fb.render.canvas.Instruction={},Fb.render.canvas.Instruction.beginPathInstruction=e_,Fb.render.canvas.Instruction.closePathInstruction=i_,Fb.render.canvas.Instruction.fillInstruction=Qm,Fb.render.canvas.Instruction.strokeInstruction=t_,Fb.render.canvas.LineStringBuilder=s_,Fb.render.canvas.PolygonBuilder=o_,Fb.render.canvas.TextBuilder=c_,Fb.render.canvas.TextBuilder.TEXT_ALIGN=h_,Fb.render.canvas.checkedFonts=bo,Fb.render.canvas.defaultFillStyle=yo,Fb.render.canvas.defaultFont=_o,Fb.render.canvas.defaultLineCap=xo,Fb.render.canvas.defaultLineDash=vo,Fb.render.canvas.defaultLineDashOffset=0,Fb.render.canvas.defaultLineJoin=So,Fb.render.canvas.defaultLineWidth=1,Fb.render.canvas.defaultMiterLimit=wo,Fb.render.canvas.defaultPadding=Ro,Fb.render.canvas.defaultStrokeStyle=Eo,Fb.render.canvas.defaultTextAlign=To,Fb.render.canvas.defaultTextBaseline=Co,Fb.render.canvas.drawImageOrLabel=ko,Fb.render.canvas.getTextDimensions=Do,Fb.render.canvas.hitdetect={},Fb.render.canvas.hitdetect.HIT_DETECT_RESOLUTION=L_,Fb.render.canvas.hitdetect.createHitDetectionImageData=F_,Fb.render.canvas.hitdetect.hitDetect=I_,Fb.render.canvas.measureAndCacheTextWidth=No,Fb.render.canvas.measureTextHeight=Mo,Fb.render.canvas.measureTextWidth=Oo,Fb.render.canvas.registerFont=Io,Fb.render.canvas.rotateAtOffset=function(t,e,i,n){0!==e&&(t.translate(i,n),t.rotate(e),t.translate(-i,-n))},Fb.render.canvas.style={},Fb.render.canvas.style.buildRuleSet=mp,Fb.render.canvas.style.buildStyle=_p,Fb.render.canvas.style.flatStylesToStyleFunction=pp,Fb.render.canvas.style.rulesToStyleFunction=fp,Fb.render.canvas.textHeights=Fo,Fb.render.getRenderPixel=function(t,e){return Bt(t.inversePixelTransform,e.slice(0))},Fb.render.getVectorContext=Kl,Fb.render.toContext=function(t,e){const i=t.canvas,n=(e=e||{}).pixelRatio||ut,r=e.size;r&&(i.width=r[0]*n,i.height=r[1]*n,i.style.width=r[0]+"px",i.style.height=r[1]+"px");const s=[0,0,i.width,i.height],o=zt([1,0,0,1,0,0],n,n);return new zl(t,n,s,o,0)},Fb.render.webgl={},Fb.render.webgl.MixedGeometryBatch=hf,Fb.render.webgl.VectorStyleRenderer=Dm,Fb.render.webgl.renderinstructions={},Fb.render.webgl.renderinstructions.generateLineStringRenderInstructions=Cm,Fb.render.webgl.renderinstructions.generatePointRenderInstructions=Tm,Fb.render.webgl.renderinstructions.generatePolygonRenderInstructions=Rm,Fb.render.webgl.renderinstructions.getCustomAttributesSize=Em,Fb.render.webgl.utils={},Fb.render.webgl.utils.colorDecodeId=xm,Fb.render.webgl.utils.colorEncodeId=ym,Fb.render.webgl.utils.getBlankImageData=function(){const t=document.createElement("canvas").getContext("2d").createImageData(1,1);return t.data[0]=255,t.data[1]=255,t.data[2]=255,t.data[3]=255,t},Fb.render.webgl.utils.writeLineSegmentToBuffers=function(t,e,i,n,r,s,o,a,l,h){const c=8+a.length,u=s.length/c,d=[t[e+0],t[e+1]],g=[t[i],t[i+1]],f=Bt(l,[...d]),p=Bt(l,[...g]);function m(t,e,i){const n=Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),r=[(e[0]-t[0])/n,(e[1]-t[1])/n],s=[-r[1],r[0]],o=Math.sqrt((i[0]-t[0])*(i[0]-t[0])+(i[1]-t[1])*(i[1]-t[1])),a=[(i[0]-t[0])/o,(i[1]-t[1])/o],l=0===n||0===o?0:Math.acos(ui(a[0]*r[0]+a[1]*r[1],-1,1));return a[0]*s[0]+a[1]*s[1]>0?l:2*Math.PI-l}let _=-1,y=-1;const x=null!==r;if(null!==n){_=m(f,p,Bt(l,[...[t[n],t[n+1]]]))}if(x){y=m(p,f,Bt(l,[...[t[r],t[r+1]]]))}return s.push(d[0],d[1],g[0],g[1],_,y,h,0),s.push(...a),s.push(d[0],d[1],g[0],g[1],_,y,h,1),s.push(...a),s.push(d[0],d[1],g[0],g[1],_,y,h,2),s.push(...a),s.push(d[0],d[1],g[0],g[1],_,y,h,3),s.push(...a),o.push(u,u+1,u+2,u+1,u+3,u+2),h+Math.sqrt((p[0]-f[0])*(p[0]-f[0])+(p[1]-f[1])*(p[1]-f[1]))},Fb.render.webgl.utils.writePointFeatureToBuffers=function(t,e,i,n,r,s){const o=3+r,a=t[e+0],l=t[e+1],h=pm;h.length=r;for(let i=0;i