Showing preview only (3,402K chars total). Download the full file or copy to clipboard to get everything.
Repository: pjialin/py12306
Branch: master
Commit: 1d132cb21928
Files: 71
Total size: 3.2 MB
Directory structure:
gitextract_jq9n8v5r/
├── .gitignore
├── .gitpod.yml
├── Dockerfile
├── LICENSE
├── README.md
├── data/
│ ├── cdn.txt
│ └── stations.txt
├── depdencies.txt
├── docker-compose.yml.example
├── env.docker.py.example
├── env.py.example
├── env.slave.py.example
├── main.py
├── py12306/
│ ├── __init__.py
│ ├── app.py
│ ├── cluster/
│ │ ├── __init__.py
│ │ ├── cluster.py
│ │ └── redis.py
│ ├── config.py
│ ├── exceptions/
│ │ └── __init__.py
│ ├── helpers/
│ │ ├── OCR.py
│ │ ├── __init__.py
│ │ ├── api.py
│ │ ├── auth_code.py
│ │ ├── cdn.py
│ │ ├── event.py
│ │ ├── func.py
│ │ ├── notification.py
│ │ ├── qrcode.py
│ │ ├── request.py
│ │ ├── station.py
│ │ └── type.py
│ ├── log/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── cluster_log.py
│ │ ├── common_log.py
│ │ ├── order_log.py
│ │ ├── query_log.py
│ │ ├── redis_log.py
│ │ └── user_log.py
│ ├── order/
│ │ └── order.py
│ ├── query/
│ │ ├── __init__.py
│ │ ├── job.py
│ │ └── query.py
│ ├── user/
│ │ ├── __init__.py
│ │ ├── job.py
│ │ └── user.py
│ ├── vender/
│ │ └── ruokuai/
│ │ └── main.py
│ └── web/
│ ├── __init__.py
│ ├── handler/
│ │ ├── __init__.py
│ │ ├── app.py
│ │ ├── log.py
│ │ ├── query.py
│ │ ├── stat.py
│ │ └── user.py
│ ├── static/
│ │ ├── css/
│ │ │ ├── app.35e2fbd94557d71d1e2bfa0d4bb44d13.css
│ │ │ ├── app.7dba7f569524413218fde54c298188f4.css
│ │ │ └── app.dfb5ffed622907edd7c5f81709f2b782.css
│ │ ├── index.html
│ │ └── js/
│ │ ├── app.680b1bbd04444c6d9d3a.js
│ │ ├── app.7d7d65cccfbfa339beba.js
│ │ ├── app.96ef02c9e5601eb5ebcb.js
│ │ ├── app.cdb00779aeb087dabd94.js
│ │ ├── manifest.82f431004cf9bb6ad2cb.js
│ │ ├── vendor.532ecf213e49d36e5e9e.js
│ │ └── vendor.aebd1de04bf90e88d9c7.js
│ └── web.py
├── requirements.txt
└── runtime/
├── .gitignore
├── query/
│ └── .gitignore
└── user/
└── .gitignore
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.idea
.vscode
.DS_Store
venv
__pycache__
env.py
env.slave.py
env.docker.py
docker-compose.yml
================================================
FILE: .gitpod.yml
================================================
ports:
- port: 8008
onOpen: open-preview
tasks:
- init: pip install -r requirements.txt && cp env.py.example env.py
command: python main.py -t
================================================
FILE: Dockerfile
================================================
FROM python:3.6.6-slim
MAINTAINER <pjialin admin@pjialin.com>
ENV TZ Asia/Shanghai
WORKDIR /code
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN mkdir -p /data/query /data/user
VOLUME /data
COPY . .
COPY env.docker.py.example /config/env.py
CMD [ "python", "main.py" , "-c", "/config/env.py"]
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# 🚂 py12306 购票助手
分布式,多账号,多任务购票
## Features
- [x] 多日期查询余票
- [x] 自动打码下单
- [x] 用户状态恢复
- [x] 电话语音通知
- [x] 多账号、多任务、多线程支持
- [x] 单个任务多站点查询
- [x] 分布式运行
- [x] Docker 支持
- [x] 动态修改配置文件
- [x] 邮件通知
- [x] Web 管理页面
- [x] 微信消息通知
- [ ] 代理池支持 ([pyproxy-async](https://github.com/pjialin/pyproxy-async))
## 使用
py12306 需要运行在 python 3.6 以上版本(其它版本暂未测试)
**1. 安装依赖**
```bash
git clone https://github.com/pjialin/py12306
pip install -r requirements.txt
```
**2. 配置程序**
```bash
cp env.py.example env.py
```
自动打码
(若快已停止服务,目前只能设置**free**打码模式)
free 已对接到打码共享平台,[https://py12306-helper.pjialin.com](https://py12306-helper.pjialin.com/),欢迎参与分享
语音通知
语音验证码使用的是阿里云 API 市场上的一个服务商,需要到 [https://market.aliyun.com/products/56928004/cmapi026600.html](https://market.aliyun.com/products/56928004/cmapi026600.html) 购买后将 appcode 填写到配置中
**3. 启动前测试**
目前提供了一些简单的测试,包括用户账号检测,乘客信息检测,车站检测等
开始测试 -t
```bash
python main.py -t
```
测试通知消息 (语音, 邮件) -t -n
```bash
# 默认不会进行通知测试,要对通知进行测试需要加上 -n 参数
python main.py -t -n
```
**4. 运行程序**
```bash
python main.py
```
### 参数列表
- -t 测试配置信息
- -t -n 测试配置信息以及通知消息
- -c 指定自定义配置文件位置
### 分布式集群
集群依赖于 redis,目前支持情况
- 单台主节点多个子节点同时运行
- 主节点宕机后自动切换提升子节点为主节点
- 主节点恢复后自动恢复为真实主节点
- 配置通过主节点同步到所有子节点
- 主节点配置修改后无需重启子节点,支持自动更新
- 子节点消息实时同步到主节点
**使用**
将配置文件的中 `CLUSTER_ENABLED` 打开即开启分布式
目前提供了一个单独的子节点配置文件 `env.slave.py.example` 将文件修改为 `env.slave.py`, 通过 `python main.py -c env.slave.py` 即可快速启动
## Docker 使用
**1. 将配置文件下载到本地**
```bash
docker run --rm pjialin/py12306 cat /config/env.py > env.py
# 或
curl https://raw.githubusercontent.com/pjialin/py12306/master/env.docker.py.example -o env.py
```
**2. 修改好配置后运行**
```bash
docker run --rm --name py12306 -p 8008:8008 -d -v $(pwd):/config -v py12306:/data pjialin/py12306
```
当前目录会多一个 12306.log 的日志文件, `tail -f 12306.log`
### Docker-compose 中使用
**1. 复制配置文件**
```
cp docker-compose.yml.example docker-compose.yml
```
**2. 从 docker-compose 运行**
在`docker-compose.yml`所在的目录使用命令
```
docker-compose up -d
```
## Web 管理页面
目前支持用户和任务以及实时日志查看,更多功能后续会不断加入
**使用**
打开 Web 功能需要将配置中的 `WEB_ENABLE` 打开,启动程序后访问当前主机地址 + 端口号 (默认 8008) 即可,如 http://127.0.0.1:8008
## 更新
- 19-01-10
- 支持分布式集群
- 19-01-11
- 配置文件支持动态修改
- 19-01-12
- 新增免费打码
- 19-01-14
- 新增 Web 页面支持
- 19-01-15
- 新增 钉钉通知
- 新增 Telegram 通知
- 新增 ServerChan 和 PushBear 微信推送
- 19-01-18
- 新增 CDN 查询
## 截图
### Web 管理页面

### 下单成功

### 关于防封
目前查询和登录操作是分开的,查询是不依赖用户是否登录,放在 A 云 T 云容易被限制 ip,建议在其它网络环境下运行
QQ 交流群 [780289875](https://jq.qq.com/?_wv=1027&k=5PgzDwV),TG 群 [Py12306 交流](https://t.me/joinchat/F3sSegrF3x8KAmsd1mTu7w)
### Online IDE
[](https://gitpod.io#https://github.com/pjialin/py12306)
## Thanks
- 感谢大佬 [testerSunshine](https://github.com/testerSunshine/12306),借鉴了部分实现
- 感谢所有提供 pr 的大佬
- 感谢大佬 [zhaipro](https://github.com/zhaipro/easy12306) 的验证码本地识别模型与算法
## License
[Apache License.](https://github.com/pjialin/py12306/blob/master/LICENSE)
================================================
FILE: data/cdn.txt
================================================
202.108.23.152
112.90.135.238
121.40.16.194
64.233.188.188
47.110.242.124
211.142.194.17
211.142.194.16
116.211.79.27
101.26.37.107
211.142.194.5
150.138.214.85
218.58.206.56
150.138.169.29
103.215.141.42
150.138.214.84
223.111.13.20
123.53.139.60
112.90.135.94
222.221.102.39
218.76.94.38
118.180.15.86
42.123.105.35
202.120.1.61
58.221.28.52
112.90.135.92
101.69.146.41
222.221.102.40
125.90.206.77
125.90.206.81
58.216.109.107
221.235.187.130
125.90.206.80
218.58.206.55
113.104.14.227
125.90.206.82
36.250.74.128
150.138.214.86
58.216.109.187
121.11.81.237
58.51.168.45
119.84.128.22
123.53.139.59
223.111.156.210
117.27.245.97
14.21.78.112
117.145.179.19
58.221.28.51
39.130.253.253
112.90.133.253
125.90.206.248
58.220.71.63
183.214.1.24
58.223.166.253
117.27.245.223
58.216.109.105
222.138.255.252
221.194.180.54
119.84.128.21
183.131.168.148
112.25.81.40
60.220.196.240
58.51.168.46
183.131.124.39
59.80.29.40
114.112.172.123
113.207.0.97
117.27.245.54
117.27.245.227
112.84.104.52
113.207.0.98
183.47.216.87
122.228.237.248
221.194.180.95
125.77.147.254
115.223.7.249
112.240.60.88
183.214.1.25
183.131.124.40
221.194.180.92
110.19.204.254
58.221.28.245
183.214.1.26
115.223.24.254
110.18.244.13
101.69.146.234
58.51.168.47
183.236.28.146
124.236.97.48
58.221.28.54
124.236.28.252
183.240.52.107
123.183.164.34
61.136.167.254
115.223.7.248
150.138.169.238
37.120.161.32
110.18.244.44
112.5.62.12
61.147.228.248
218.58.206.78
112.47.20.209
221.235.187.244
112.90.133.247
221.194.180.93
221.194.180.26
120.226.49.252
39.130.253.48
183.131.124.43
112.240.60.73
114.112.160.31
61.188.191.254
111.62.89.38
112.29.227.251
120.226.48.144
112.28.196.100
58.51.168.202
124.236.28.247
219.138.186.254
117.145.179.248
183.201.225.249
111.161.122.134
114.236.88.254
112.90.133.246
36.250.233.254
122.224.186.252
120.198.197.251
111.161.22.16
124.167.218.117
58.216.109.192
61.147.227.52
219.157.114.72
111.62.92.6
112.51.125.251
36.250.248.252
58.220.71.253
58.20.179.31
123.53.139.252
123.183.164.249
58.216.109.109
183.214.1.253
114.112.160.32
114.112.160.30
118.123.237.254
112.16.227.125
218.12.228.205
61.149.9.239
42.81.144.78
219.147.93.104
36.250.248.254
183.214.132.251
218.29.50.27
118.118.216.252
223.111.196.125
111.6.177.254
222.221.102.254
218.12.228.203
112.30.197.137
120.221.64.251
223.111.203.126
122.225.28.251
120.226.49.87
117.27.245.225
183.240.52.132
120.221.64.77
183.253.58.137
182.34.127.23
36.250.74.127
223.111.19.126
111.19.233.253
120.221.23.39
27.148.151.251
117.149.154.251
218.60.185.215
111.26.157.7
219.138.27.249
36.104.132.103
221.180.208.214
218.12.228.204
219.147.93.62
42.81.144.79
221.180.218.248
14.21.78.47
42.81.144.77
117.27.245.254
183.131.168.146
117.23.2.241
222.186.145.254
219.157.114.70
118.180.15.87
59.63.221.47
124.116.133.63
183.131.168.187
111.161.122.67
123.53.139.253
113.207.81.126
218.76.105.109
183.131.168.147
218.76.105.108
182.242.50.48
123.128.14.254
117.23.2.28
118.180.57.100
153.99.235.112
117.148.128.68
125.39.1.134
60.213.22.57
117.27.241.254
180.97.178.147
58.216.109.110
118.180.57.101
114.112.160.29
61.157.124.252
125.77.130.251
183.56.172.30
118.180.15.252
111.41.54.254
163.177.132.254
61.243.144.244
150.138.214.122
153.101.208.254
124.116.133.126
183.56.172.31
59.63.241.54
118.118.216.46
58.216.23.119
36.250.248.223
61.167.54.31
59.63.221.45
110.242.21.23
111.161.122.181
110.242.21.24
61.162.100.105
61.162.100.102
59.44.30.54
218.12.228.202
59.63.221.44
59.63.221.41
111.19.215.69
124.236.97.49
59.63.221.56
183.62.114.155
122.136.46.119
112.240.60.69
59.63.221.46
150.138.167.51
218.92.209.249
123.138.203.56
122.136.46.120
180.97.178.165
125.74.58.254
27.195.145.124
117.149.155.49
112.240.60.253
61.156.243.246
119.84.128.254
180.97.178.164
223.113.14.230
112.51.121.251
112.17.53.253
219.157.114.71
112.90.135.244
183.216.176.251
36.102.230.254
14.17.80.254
42.176.192.171
106.120.178.20
60.18.86.100
58.223.164.247
59.80.28.254
125.90.206.49
182.140.218.254
119.176.61.99
61.162.100.103
183.216.176.116
183.214.1.251
106.120.178.19
150.138.167.50
58.223.164.233
58.221.28.53
59.56.30.51
183.214.140.238
36.102.238.45
175.43.20.64
111.161.122.128
180.97.178.253
150.138.167.52
117.161.66.125
101.227.99.233
116.207.132.253
61.162.100.252
117.21.217.27
58.51.168.196
118.212.138.106
175.43.20.65
112.25.81.68
36.156.73.254
182.34.127.45
36.250.74.244
117.169.93.247
112.28.196.101
120.220.18.252
117.149.154.237
218.76.129.252
111.161.122.133
14.17.80.253
183.134.53.252
219.157.114.252
218.12.228.224
125.64.102.71
60.210.23.116
112.17.27.55
124.165.125.253
14.21.78.45
219.145.171.40
112.51.125.254
36.102.230.19
61.184.117.22
61.145.100.54
112.25.81.118
218.75.154.40
118.180.57.250
219.145.171.41
183.56.172.251
125.64.102.69
61.184.117.50
180.97.178.172
163.177.243.247
119.36.60.253
111.206.186.37
183.253.58.253
220.249.243.76
113.16.208.143
219.145.171.249
59.56.28.244
183.134.12.254
60.222.200.71
42.81.144.39
106.120.178.253
221.230.141.174
218.21.175.24
182.108.171.150
183.56.172.34
183.236.28.151
123.138.203.21
61.160.209.254
182.108.171.251
223.111.18.161
113.142.88.31
111.161.122.100
61.147.226.185
36.156.73.220
122.228.24.173
123.183.164.141
182.34.127.48
182.140.236.124
113.5.80.102
122.136.46.66
60.210.21.89
36.102.230.22
218.60.185.248
118.123.233.252
223.111.18.162
157.255.76.48
119.36.91.138
202.98.156.253
153.99.174.201
60.213.21.214
36.102.230.21
221.230.141.171
60.210.23.175
60.213.21.252
36.25.241.250
182.108.171.149
61.136.107.57
111.8.9.197
121.11.81.226
61.132.238.126
58.220.220.252
59.83.211.215
117.21.217.98
223.111.18.163
114.112.160.253
221.180.208.190
112.123.33.18
218.12.228.38
124.236.28.254
223.111.156.216
106.120.178.22
113.207.77.121
58.216.21.22
59.83.228.160
111.161.22.62
117.174.21.238
112.240.60.172
117.161.19.126
150.138.111.251
117.21.217.26
58.51.168.127
110.19.204.253
183.62.114.154
218.78.185.251
123.183.164.251
59.49.89.100
59.44.25.8
221.180.192.131
183.240.52.108
113.16.208.251
60.174.243.166
111.47.220.238
112.90.135.99
112.47.27.172
218.12.228.221
221.180.208.50
180.95.178.250
36.25.241.77
182.201.212.79
125.66.85.31
36.25.241.75
125.66.85.108
221.235.187.132
36.25.241.76
125.66.85.30
111.44.244.52
124.167.218.116
123.183.164.35
58.223.164.229
36.104.132.49
221.235.187.66
122.70.142.252
221.235.187.131
221.235.187.129
121.46.248.79
112.25.35.78
112.17.29.230
36.102.230.253
211.144.81.20
111.63.72.126
58.220.71.64
182.242.50.245
175.43.20.118
150.138.167.234
223.113.14.126
61.149.22.254
183.62.114.195
124.167.218.251
122.228.233.208
117.176.232.253
45.124.125.104
36.25.241.249
106.57.180.253
122.136.46.126
221.230.141.224
112.17.27.251
183.66.109.253
111.0.22.116
118.123.251.254
112.29.227.250
153.99.235.217
118.212.138.215
183.214.132.106
122.70.142.147
218.76.105.252
221.178.0.252
112.29.203.244
182.108.171.250
112.17.27.254
111.26.107.19
111.19.233.252
221.15.67.231
111.6.176.248
153.99.174.212
221.15.67.234
117.157.20.99
221.235.187.220
111.40.183.249
59.56.30.250
125.64.102.254
60.18.86.253
119.36.91.182
222.20.147.174
111.161.22.17
183.66.109.51
112.90.135.240
123.138.203.115
222.186.141.186
58.20.179.253
124.167.218.28
116.77.73.165
115.231.20.54
36.159.115.250
122.228.233.182
111.19.233.145
112.240.60.72
122.70.142.148
117.176.232.96
223.113.14.97
59.56.30.62
111.6.176.138
182.242.50.166
218.76.105.50
60.18.86.61
180.169.63.51
119.36.91.135
110.242.21.78
180.169.63.52
183.62.114.189
42.123.117.51
114.112.160.201
182.108.171.36
118.212.138.51
218.242.102.151
150.138.167.191
58.251.112.83
58.251.112.39
125.64.102.193
58.251.111.102
221.230.141.51
125.39.1.191
163.177.89.154
222.20.147.189
182.136.72.131
203.208.40.127
123.138.203.32
122.136.46.91
60.174.241.125
61.149.22.105
61.163.111.73
211.144.81.22
60.220.196.235
113.142.88.21
218.14.200.254
59.34.229.254
211.144.81.24
42.81.144.191
60.174.241.96
60.174.241.97
112.17.27.7
113.142.88.253
183.56.172.35
59.34.229.252
175.43.20.70
211.138.60.159
112.25.81.67
120.241.57.30
60.174.241.120
223.86.219.254
36.102.230.162
59.63.221.250
120.241.57.252
123.138.203.20
117.161.66.88
14.204.74.76
42.81.144.23
113.16.212.21
111.40.183.212
115.54.16.152
218.12.228.85
112.51.125.242
111.32.1.230
183.222.97.246
222.218.87.247
117.180.229.254
110.96.40.225
61.147.210.151
112.30.198.110
211.162.1.168
183.56.168.252
101.226.18.72
101.226.18.29
222.218.87.28
112.16.227.254
218.12.228.126
60.9.0.254
101.69.104.74
101.69.104.20
163.177.90.84
182.136.72.130
222.141.84.250
222.141.84.253
153.101.208.90
222.186.145.87
222.44.151.25
125.66.85.64
125.42.203.63
125.42.203.42
180.97.178.228
36.250.248.216
175.154.186.78
222.52.39.39
172.217.24.46
183.240.52.131
61.162.100.36
180.97.178.231
116.77.75.185
111.0.23.139
58.20.179.8
221.180.192.235
112.29.227.85
221.180.192.49
61.184.117.27
222.218.87.27
202.114.51.35
222.186.145.86
112.51.125.243
203.208.40.36
182.34.127.24
111.32.1.247
222.44.151.24
14.204.74.73
36.25.241.86
101.246.182.209
106.57.180.96
61.184.117.23
222.44.151.191
111.32.1.206
114.236.140.253
211.162.189.223
125.64.102.70
124.14.2.75
112.240.60.75
211.162.212.246
175.188.163.55
101.69.104.63
222.44.151.67
180.163.150.251
123.138.157.93
36.159.115.121
221.230.141.170
222.186.145.84
49.210.3.160
183.240.52.106
60.207.246.98
124.202.166.57
153.99.174.202
120.206.189.253
114.113.88.123
124.14.17.222
113.215.16.247
219.238.2.185
114.113.88.72
113.215.224.9
27.36.62.28
111.47.220.239
222.218.87.26
113.215.16.188
202.122.145.214
210.66.46.19
61.90.241.26
113.21.242.153
8.37.236.5
111.238.60.144
3.0.1.32
180.180.248.185
202.122.145.86
8.37.232.2
8.37.236.4
8.37.232.5
8.37.232.3
8.37.232.4
8.37.236.2
113.215.16.139
139.129.16.1
111.11.31.90
202.120.1.62
113.215.12.229
43.226.162.63
113.215.12.181
103.215.29.56
113.16.209.171
58.216.21.21
222.243.141.217
222.245.77.74
125.89.198.81
182.140.147.77
218.87.111.64
180.88.60.134
61.167.54.109
117.187.19.19
60.174.241.29
43.240.1.57
183.57.28.61
61.188.191.218
118.180.15.113
118.180.15.71
121.18.230.47
123.138.157.109
183.134.9.58
123.138.60.146
111.178.233.87
116.224.87.45
61.188.191.20
122.70.142.143
124.164.8.65
183.134.10.85
60.9.1.129
27.148.151.214
221.230.141.78
122.225.28.145
112.84.104.48
220.202.77.119
125.90.204.32
123.138.60.143
122.70.142.144
180.97.247.157
115.231.171.14
117.187.19.164
117.27.245.62
110.157.233.30
61.167.54.108
182.140.147.63
117.187.19.45
61.188.191.21
218.92.220.55
222.211.64.51
182.140.147.61
222.211.64.89
58.50.31.33
111.20.250.62
115.153.176.80
117.23.2.86
61.188.191.216
182.140.218.64
110.18.244.141
101.69.104.73
220.165.142.40
122.70.142.142
49.79.232.225
61.188.191.28
220.249.243.84
113.107.112.168
182.140.147.58
182.140.147.76
180.97.180.44
115.231.171.13
182.140.147.81
60.222.221.59
218.92.227.121
175.154.189.30
61.188.191.26
113.5.80.93
175.43.124.195
103.37.173.34
117.187.19.18
115.231.22.34
220.194.200.179
220.165.142.38
60.220.194.210
121.18.230.43
183.214.133.48
113.107.57.43
171.217.254.68
106.3.62.211
115.57.125.79
222.138.255.18
58.222.19.50
58.222.19.52
122.228.233.209
117.27.241.99
218.92.220.16
218.7.220.14
175.43.124.143
91.189.92.20
110.18.244.142
106.3.62.198
91.189.92.38
175.43.20.56
110.18.246.10
117.23.6.81
219.146.68.84
218.92.220.78
61.188.191.29
110.18.244.137
116.211.79.31
180.97.180.47
183.224.12.87
36.250.87.27
220.165.142.39
222.245.77.22
61.188.191.19
14.215.100.95
175.43.20.58
218.92.220.14
60.222.221.66
221.235.187.64
60.222.221.65
60.223.235.142
218.92.220.17
58.218.208.199
211.97.73.244
110.157.233.34
117.187.19.17
61.188.191.84
117.27.245.85
182.106.194.107
42.81.28.74
112.65.220.227
150.138.214.95
61.54.219.75
59.49.42.253
182.140.147.80
182.140.147.59
118.212.138.181
125.90.204.34
183.134.9.59
101.66.224.145
113.5.80.100
183.131.192.83
175.43.124.145
124.116.133.50
112.25.35.52
182.243.62.48
220.165.142.35
115.231.171.70
123.138.60.147
116.55.236.37
188.138.33.149
223.111.18.217
115.231.171.15
219.146.68.79
61.188.191.30
110.18.244.14
60.13.41.74
60.220.194.208
218.60.109.74
218.75.225.192
218.92.209.74
183.134.11.90
61.54.219.38
112.25.55.143
218.26.75.207
202.118.10.115
125.39.1.138
219.146.68.78
61.188.191.27
211.162.48.54
211.91.168.40
58.222.19.51
110.18.244.140
121.251.255.237
110.53.72.58
61.54.219.43
117.27.245.75
221.203.4.70
111.62.244.177
182.140.147.78
27.148.163.158
182.140.218.63
121.251.255.226
182.140.147.60
182.140.147.104
116.55.236.36
218.60.51.254
101.70.152.37
113.200.235.16
59.56.30.206
115.231.22.80
113.16.210.132
58.216.21.24
115.57.125.78
125.90.204.31
221.229.167.47
110.18.244.138
111.161.120.199
182.34.127.94
117.27.245.87
125.75.34.27
221.229.202.154
59.56.30.221
58.216.21.93
36.250.248.68
106.3.62.194
115.57.125.106
220.194.200.180
183.224.12.27
115.153.176.78
125.64.134.78
115.156.188.138
60.174.241.30
61.188.191.215
123.138.60.145
60.5.254.10
125.90.204.122
113.107.112.167
61.184.117.53
36.250.87.94
60.211.208.49
115.231.22.33
118.180.15.110
211.138.60.136
117.145.179.175
218.26.75.208
58.222.19.54
61.167.54.239
121.18.168.150
61.147.211.20
121.18.230.46
61.188.191.22
222.211.64.92
59.56.26.49
125.90.204.33
113.107.44.234
115.231.171.17
115.231.22.31
59.49.42.252
111.8.9.204
122.138.54.176
211.161.83.41
150.138.214.83
115.231.22.32
218.60.109.75
182.140.147.62
175.43.20.60
220.165.142.37
36.250.87.26
218.92.220.15
61.188.191.217
58.222.19.61
221.229.167.36
202.98.156.62
116.55.236.35
60.223.235.137
61.167.54.236
220.194.200.178
220.165.142.36
182.201.212.197
61.138.219.85
183.58.18.36
150.138.168.115
60.217.22.146
58.221.78.105
111.23.11.52
182.140.236.27
175.43.20.57
112.25.83.174
113.5.80.125
113.207.72.67
220.194.200.232
121.30.196.117
110.157.233.33
116.55.236.39
58.223.164.87
111.6.192.131
121.18.230.44
121.251.255.227
111.11.31.114
61.167.54.240
59.56.30.207
218.29.50.48
175.43.124.142
211.94.114.66
112.29.203.246
111.62.244.178
61.54.219.39
36.42.32.254
211.142.194.166
182.140.236.28
58.20.197.62
61.138.219.7
182.140.147.106
112.25.35.54
59.56.26.33
182.140.147.79
211.142.194.72
117.23.51.76
211.142.194.185
122.138.54.177
175.43.20.81
211.142.194.7
60.222.221.62
117.27.245.89
36.250.74.83
123.183.164.136
121.18.230.86
125.90.206.144
121.18.230.42
14.21.78.136
106.41.0.37
60.174.241.26
211.142.194.69
120.221.24.123
211.142.194.28
221.229.167.32
220.194.203.66
221.229.167.31
60.174.241.31
121.30.196.116
117.27.245.90
211.142.194.88
163.177.243.251
117.27.245.88
222.163.202.216
61.156.243.247
211.142.194.9
118.212.138.52
218.76.105.168
112.90.212.126
58.222.19.53
211.142.194.68
61.167.54.238
211.142.194.163
183.56.172.114
117.187.19.46
183.131.168.145
36.250.248.66
211.142.194.164
61.138.219.8
58.222.42.9
60.174.241.28
117.21.168.87
64.233.189.188
122.228.233.206
115.231.20.39
58.51.241.34
211.142.194.167
111.11.197.55
220.165.142.51
115.156.188.183
120.221.25.195
58.20.179.92
218.29.49.71
221.182.135.179
218.60.51.253
122.143.27.169
58.216.109.186
61.167.54.237
125.75.32.252
113.107.112.135
117.27.241.176
211.142.194.71
59.63.205.232
118.180.15.94
116.55.236.45
60.28.100.38
110.157.233.35
61.188.191.85
112.25.35.55
112.29.201.149
112.17.26.100
117.23.2.85
113.207.83.12
43.242.182.41
123.128.14.223
175.43.124.146
60.223.235.140
58.63.233.35
211.142.194.67
150.138.169.233
117.187.19.16
211.138.60.135
113.107.112.214
222.89.68.50
219.147.233.232
182.140.130.25
218.77.2.32
115.153.176.66
221.182.135.156
112.84.104.148
116.211.251.37
61.138.219.87
61.54.219.34
111.161.22.27
59.63.244.219
117.21.204.77
106.120.178.48
59.45.42.44
183.134.12.69
61.138.219.6
175.43.124.144
117.169.17.6
221.229.202.149
182.132.33.24
120.192.199.12
118.180.15.72
58.216.21.23
58.20.164.51
183.95.189.36
112.90.246.87
180.97.180.16
211.142.194.70
119.84.111.48
123.161.57.38
218.75.225.80
222.243.110.146
121.18.230.45
222.23.55.114
36.250.76.34
218.60.106.91
113.200.235.17
116.55.236.38
220.162.97.242
222.163.201.28
61.138.219.10
222.163.201.27
150.138.167.169
59.56.26.37
59.50.75.195
121.192.176.198
218.60.106.25
119.90.19.39
115.231.84.169
119.84.111.126
222.23.55.228
120.192.199.4
106.122.250.198
61.174.63.234
222.186.132.123
124.228.90.88
60.174.241.25
220.162.97.245
223.111.16.239
120.221.66.189
115.156.188.137
125.90.204.117
115.156.188.182
123.138.60.192
218.76.105.75
220.162.97.243
182.132.33.22
218.21.175.194
218.77.2.83
222.186.17.100
218.12.228.248
61.174.63.203
162.105.28.232
182.132.33.25
223.111.13.62
180.97.178.210
222.243.110.147
218.12.228.212
112.25.35.53
219.144.78.197
120.221.64.229
119.84.111.44
36.250.76.37
60.223.208.78
222.243.110.148
61.163.117.65
36.250.87.30
118.122.87.99
218.58.222.20
183.131.168.154
121.31.23.53
124.165.216.184
60.215.125.71
183.136.217.75
117.169.17.8
58.51.150.55
220.194.200.234
218.197.116.213
115.231.82.60
58.222.19.59
14.215.100.94
203.208.40.71
219.243.47.166
61.174.63.205
218.86.111.69
119.90.19.40
115.231.84.62
175.43.124.141
222.23.55.115
122.70.142.145
115.231.82.101
119.84.86.112
115.231.82.58
122.70.142.160
61.174.63.232
61.54.219.8
115.231.82.62
119.84.111.47
110.18.247.40
218.12.228.213
117.169.17.46
114.80.143.144
121.18.168.211
112.25.35.79
119.84.111.41
111.1.59.93
111.8.9.209
103.37.173.36
112.253.19.164
210.52.224.11
112.65.220.39
112.253.19.161
59.56.26.35
221.179.172.161
112.253.19.160
101.227.66.150
14.215.9.64
222.23.55.208
183.136.217.73
61.174.63.200
113.5.80.90
113.5.170.35
162.105.28.233
59.56.26.34
175.25.168.40
119.84.111.42
119.84.111.49
117.145.179.96
124.165.204.43
61.174.63.204
112.25.35.56
114.64.222.62
116.57.77.39
111.40.195.169
115.231.84.64
111.26.17.169
113.207.69.18
112.35.15.233
117.169.17.45
101.227.102.198
112.253.19.162
182.132.33.26
60.213.21.210
222.186.132.68
115.231.171.16
220.162.97.136
112.25.35.61
113.207.69.16
163.177.151.110
203.208.40.65
163.177.151.109
203.208.41.94
216.58.220.206
192.243.53.240
216.58.199.14
113.207.69.17
31.13.68.1
144.2.3.1
163.177.89.163
8.7.198.45
58.250.137.86
54.71.116.25
52.22.171.207
115.231.84.65
157.255.47.195
163.177.8.31
192.0.73.2
61.138.219.9
218.60.91.91
203.208.40.63
222.163.201.29
182.132.33.21
113.207.6.55
101.227.66.152
101.227.66.207
113.107.44.248
122.136.46.107
117.169.17.7
113.207.69.72
110.18.247.41
112.253.19.159
111.26.17.170
113.107.44.86
111.11.152.225
60.211.208.217
112.91.129.179
58.221.78.39
125.74.38.251
58.220.44.167
58.222.46.30
117.156.21.51
222.218.45.216
123.183.164.40
218.7.220.16
221.179.172.204
112.90.135.91
36.104.132.151
113.107.44.105
211.144.7.86
113.107.44.106
58.216.109.91
123.183.164.75
61.147.226.152
36.250.74.35
59.56.26.36
183.56.172.124
202.120.1.32
124.236.97.56
219.146.158.202
60.213.21.211
117.144.228.170
112.65.220.20
117.146.64.156
218.197.116.214
118.180.15.69
34.233.67.34
74.86.151.162
36.250.76.204
174.36.196.242
58.215.134.237
103.254.188.39
180.97.180.45
113.207.72.20
222.132.5.100
36.250.76.35
119.84.111.45
111.26.136.222
222.89.68.51
60.8.123.158
59.44.30.44
119.84.111.113
119.84.94.140
220.194.200.177
42.54.0.42
218.199.110.85
60.13.41.78
222.245.77.19
221.229.167.35
125.44.96.185
14.215.9.83
183.134.11.91
120.192.199.3
112.253.19.196
59.47.79.43
222.163.201.30
222.245.77.21
218.60.132.160
112.65.220.18
101.227.66.151
202.194.19.5
202.201.14.181
120.192.199.13
218.58.222.15
220.162.97.241
218.76.94.67
61.240.156.54
120.192.199.26
220.162.97.246
115.231.82.59
36.42.32.68
52.71.148.54
67.228.74.123
172.217.161.142
31.13.65.17
203.208.40.62
185.63.145.1
59.24.3.173
62.4.15.84
203.208.41.64
108.177.97.188
172.217.31.238
144.76.100.52
216.58.221.142
121.11.81.101
183.47.216.19
218.14.200.57
183.47.216.35
14.17.80.77
115.223.7.173
183.47.216.18
183.47.216.36
183.222.97.135
58.220.71.62
103.254.188.40
111.206.186.42
117.148.128.254
103.254.188.216
112.240.60.252
183.236.28.251
101.66.224.248
183.62.114.157
58.223.164.231
111.161.22.18
183.222.101.236
36.25.241.156
14.18.17.241
222.186.145.101
111.161.22.19
61.149.9.136
27.195.145.62
61.188.191.34
125.90.206.79
122.70.142.175
117.145.179.20
125.90.206.78
183.47.216.20
183.236.28.121
110.18.244.134
117.169.93.85
14.17.80.67
14.17.80.84
114.112.172.53
60.220.196.223
123.53.139.36
182.140.218.24
114.112.172.54
219.138.186.44
14.17.80.79
117.149.154.188
116.77.75.133
14.17.80.73
118.123.237.27
14.17.80.70
118.123.237.29
120.198.197.88
101.226.18.32
36.250.248.25
42.81.144.54
121.11.81.102
36.250.248.56
59.34.229.55
218.14.200.56
58.223.166.118
59.34.229.59
124.236.28.95
114.112.172.57
112.240.60.210
111.19.233.99
183.134.53.155
114.112.172.59
221.235.187.56
14.0.45.164
59.80.28.58
183.47.216.37
14.17.80.82
61.184.117.30
120.226.48.27
61.147.228.89
111.161.122.135
59.34.229.62
219.138.27.30
14.17.80.68
114.112.172.56
183.131.169.225
183.134.53.153
61.132.238.92
221.235.187.90
218.242.102.131
14.17.80.75
219.138.27.31
42.81.144.56
183.236.28.123
117.174.21.130
36.104.132.48
61.136.167.20
122.224.186.225
124.116.133.20
61.162.100.41
61.136.167.18
112.30.197.17
122.224.186.226
122.225.28.160
114.112.172.52
124.236.97.45
58.223.166.122
123.53.139.39
14.17.80.76
223.111.19.81
223.111.19.91
58.216.109.95
125.90.206.76
180.163.150.115
42.81.144.53
42.123.117.23
223.111.196.49
123.128.14.71
222.186.141.142
153.101.208.93
14.17.80.71
59.83.228.89
42.81.144.55
120.198.197.87
218.58.206.57
61.167.54.26
117.149.154.187
111.6.177.215
117.169.93.86
14.17.80.69
112.51.125.62
222.138.255.46
117.27.245.52
180.97.178.146
113.207.81.76
121.11.81.104
183.214.1.32
183.236.28.122
221.235.187.119
116.77.75.146
121.11.81.100
125.77.147.67
59.83.228.88
218.76.129.173
180.97.178.166
116.77.75.183
218.76.129.176
112.90.135.97
182.140.218.23
101.226.18.30
125.90.206.43
14.21.78.46
61.156.243.111
61.156.243.110
61.156.243.112
61.156.243.109
61.156.243.108
112.47.14.199
112.47.14.198
112.47.14.200
112.47.14.201
222.74.113.225
222.74.113.229
222.74.113.219
222.74.113.228
222.74.113.231
112.47.27.131
222.74.113.218
112.47.27.132
221.180.218.74
221.180.218.73
60.213.22.34
60.213.21.156
60.213.21.117
60.213.21.118
60.213.21.157
112.51.121.108
112.30.197.16
112.51.121.107
111.19.215.39
111.19.215.40
14.18.17.20
111.178.233.221
14.18.17.27
111.178.233.220
163.177.132.27
163.177.132.30
163.177.132.28
163.177.132.31
27.148.151.176
27.148.151.179
27.148.151.178
27.148.151.174
27.148.151.180
27.148.151.175
27.148.151.177
27.148.151.72
122.225.28.159
122.225.28.161
122.225.28.163
219.147.92.217
219.220.29.189
119.44.24.30
219.220.29.182
219.220.29.175
219.220.29.177
219.220.29.190
125.75.35.173
125.75.35.190
125.75.35.189
211.162.212.213
216.58.203.46
106.15.25.58
122.70.142.172
216.58.203.14
203.208.41.57
113.104.14.28
117.148.128.93
61.145.100.27
42.81.144.180
153.101.208.92
112.84.104.162
111.6.176.97
14.21.78.44
114.113.88.89
114.112.160.124
157.255.76.25
114.112.172.55
52.175.39.99
61.145.100.20
203.208.41.90
218.58.206.37
61.145.100.15
61.147.228.117
58.20.179.74
123.183.164.79
103.254.189.230
121.11.81.103
58.20.179.73
61.145.100.44
222.35.78.33
111.13.100.91
60.9.0.16
221.179.183.53
111.13.100.92
125.77.130.48
183.201.225.73
39.96.132.69
112.29.158.133
47.95.47.253
111.63.49.196
117.122.217.89
140.143.52.226
101.201.173.208
61.149.22.35
58.216.109.108
36.25.241.40
221.235.187.65
114.112.172.60
113.215.12.231
120.241.57.48
14.21.78.48
114.112.160.123
112.17.53.97
112.25.81.69
36.250.233.210
36.25.241.39
180.169.63.59
114.112.172.61
111.63.49.197
122.224.186.221
125.90.206.241
202.198.17.207
113.104.14.27
60.9.0.14
115.223.7.128
163.177.243.10
218.78.185.34
60.9.0.20
218.75.154.94
101.69.146.31
182.201.212.141
61.145.100.33
61.157.124.38
61.149.9.170
157.255.76.30
125.77.130.46
58.220.71.67
61.145.100.45
61.147.226.47
58.220.71.51
125.77.147.63
61.160.209.96
122.224.186.223
112.90.135.93
114.112.172.58
14.21.78.43
182.108.171.171
113.104.14.32
101.227.99.21
114.113.88.88
61.145.100.17
183.66.109.38
140.143.49.61
115.223.7.127
61.147.228.115
61.145.100.30
218.60.185.103
14.17.80.72
113.104.14.29
42.81.144.179
125.90.206.242
42.81.144.31
112.29.227.45
120.204.10.176
58.220.220.118
101.69.146.32
153.101.208.91
125.90.206.42
61.136.107.46
61.136.167.19
58.216.109.96
36.250.248.217
61.147.227.55
203.208.40.58
123.183.164.80
36.250.233.211
111.62.92.60
61.147.227.53
122.228.24.105
120.241.57.161
223.113.14.215
112.240.60.212
61.147.227.54
101.69.146.33
125.90.206.246
113.104.14.24
180.97.178.141
101.227.99.22
223.113.14.17
60.9.0.21
61.149.22.34
112.16.227.101
117.148.128.97
120.226.49.146
218.58.206.49
219.138.186.43
123.183.164.92
122.224.186.222
112.29.227.107
218.58.206.53
61.132.238.91
124.236.28.94
14.17.80.74
222.186.145.85
120.221.64.54
117.149.155.148
60.210.21.85
59.80.29.30
101.69.146.30
122.224.186.227
112.90.135.98
182.140.236.57
58.223.164.234
124.236.28.100
163.177.243.240
183.134.53.157
60.210.23.26
117.161.19.22
59.49.89.45
113.104.14.23
61.147.228.60
114.113.88.84
123.125.50.4
125.90.206.243
58.223.166.119
124.236.28.98
120.241.57.92
122.224.186.224
124.236.28.92
118.123.233.15
123.128.14.70
36.102.230.137
150.138.111.33
112.84.104.163
218.58.206.46
117.27.241.113
114.236.88.46
183.214.1.30
115.223.7.174
183.236.28.124
218.78.185.35
58.220.220.117
120.241.57.57
61.160.209.26
180.169.63.60
203.208.40.45
218.242.102.139
124.116.133.19
183.131.124.38
125.77.147.68
124.116.133.15
180.97.178.142
218.12.228.40
36.250.248.219
36.102.230.138
36.102.230.136
183.236.28.25
112.47.20.77
223.111.156.176
183.134.12.26
122.70.142.176
14.17.80.80
113.104.14.31
112.17.53.98
117.148.128.98
113.104.14.30
124.236.28.96
123.53.139.38
61.147.226.46
58.216.109.106
58.220.71.66
113.104.14.26
182.140.236.58
221.235.187.106
125.90.206.244
115.223.7.126
36.250.248.24
61.149.9.150
223.111.156.173
125.90.206.240
119.176.61.23
61.147.228.61
117.161.66.72
183.236.28.116
61.157.124.42
219.138.186.42
36.159.115.88
36.250.248.221
60.9.0.18
111.6.176.94
183.134.12.27
39.130.253.45
58.51.168.74
120.221.23.62
218.58.206.41
182.108.171.172
120.226.48.25
221.235.187.98
122.228.24.103
120.220.18.113
61.147.226.48
117.161.66.71
153.101.208.89
36.156.73.145
218.58.206.43
60.213.21.245
219.138.186.41
36.250.248.222
222.138.255.45
116.207.132.181
58.220.71.65
183.201.225.74
223.111.156.175
223.111.156.188
124.236.28.91
36.25.241.41
101.69.146.35
122.228.24.106
221.235.187.133
61.243.144.141
61.132.238.93
123.183.164.82
223.113.14.16
221.180.208.46
61.160.209.98
60.174.243.156
118.123.237.28
221.180.192.61
122.228.24.107
111.62.92.59
223.111.203.36
120.206.189.53
183.222.97.165
124.116.133.77
59.63.241.84
117.27.241.76
112.240.60.208
61.147.228.116
101.69.146.34
182.108.171.170
123.183.164.96
182.242.50.46
59.63.241.82
58.223.166.121
115.223.7.176
61.157.124.48
117.149.155.147
182.201.212.142
117.27.241.112
61.132.238.94
58.216.109.99
183.216.176.65
183.222.97.164
219.147.93.105
112.51.125.53
111.19.215.41
58.223.166.120
58.51.168.206
221.180.192.100
36.156.73.146
58.220.220.119
36.250.248.218
114.236.88.47
183.214.1.227
117.174.21.135
218.75.154.89
124.236.28.99
61.157.124.40
122.228.24.114
36.250.233.212
118.123.233.14
60.210.21.88
36.156.73.158
219.157.114.150
112.90.135.95
122.228.237.74
223.111.156.202
59.63.241.83
60.9.0.19
123.128.14.69
36.250.233.214
223.111.19.90
59.49.89.69
112.16.227.103
118.118.216.130
119.36.60.29
125.77.130.49
61.147.228.118
183.134.12.28
112.28.196.53
60.255.160.110
120.41.4.189
112.34.111.26
112.34.111.235
221.179.183.35
112.34.112.78
39.130.253.52
58.220.220.114
119.176.61.26
120.206.189.52
117.27.241.126
221.181.72.244
117.161.13.223
120.221.224.232
222.35.78.49
111.63.56.210
221.181.72.231
111.13.101.192
117.131.213.100
120.221.224.233
120.221.223.236
111.63.49.195
222.35.78.48
111.32.132.45
222.35.78.34
111.32.130.98
117.27.241.125
122.228.237.76
61.147.227.126
183.134.53.223
58.223.166.116
60.213.21.244
112.240.60.211
125.77.130.44
183.214.140.204
221.235.187.121
117.27.243.113
47.95.50.136
203.208.40.57
221.181.72.150
101.201.174.163
203.208.41.75
203.208.40.111
52.114.74.45
61.184.117.33
123.128.14.68
58.216.109.97
36.102.230.20
112.51.125.73
124.236.28.93
218.76.129.174
223.111.196.48
113.104.14.25
114.236.88.48
218.58.206.40
125.90.206.245
113.207.81.81
36.156.73.157
125.77.147.69
113.104.14.33
110.19.204.219
113.104.14.34
58.223.166.117
125.77.147.80
183.214.140.203
163.177.132.29
8.8.8.8
60.9.0.22
59.63.241.81
61.157.124.47
120.226.48.28
52.22.174.247
219.157.114.149
111.40.183.55
111.6.176.95
61.136.167.21
120.226.49.80
120.226.49.81
59.44.30.27
27.195.145.123
125.77.130.47
111.19.233.59
119.36.60.30
223.111.156.174
112.16.227.104
61.184.117.31
114.113.88.85
183.134.53.156
124.236.97.39
117.23.2.30
36.250.248.220
58.51.168.65
61.243.144.142
202.98.156.61
112.51.125.54
115.223.24.81
219.138.27.28
60.210.21.87
59.80.29.22
125.77.147.62
221.180.208.47
111.41.54.80
118.212.138.107
115.223.7.125
14.204.74.95
183.216.176.64
60.210.23.29
112.240.60.213
36.250.248.55
183.134.53.158
60.213.21.243
125.74.58.136
59.44.25.58
120.226.49.83
111.6.177.216
112.51.125.65
112.16.227.102
219.157.114.73
111.62.92.61
114.236.88.45
60.210.23.178
119.36.91.139
101.246.182.214
223.111.203.35
61.147.228.78
58.51.168.62
112.28.196.75
218.92.209.42
59.80.29.33
113.16.208.77
60.174.243.155
219.232.81.226
203.208.41.77
203.208.41.89
125.77.147.83
120.226.49.82
60.9.0.23
219.138.27.108
115.223.24.83
180.97.178.163
117.161.19.19
42.176.192.76
120.226.48.26
183.253.58.102
125.74.58.138
60.174.243.157
123.53.139.37
183.216.176.83
125.77.147.66
124.165.125.126
219.138.27.107
218.58.206.39
112.240.60.209
58.51.168.63
42.176.192.78
221.180.192.39
112.47.20.68
218.60.185.100
60.210.21.86
111.40.183.56
124.236.28.97
124.116.133.17
59.80.29.20
112.47.20.79
117.149.154.186
101.246.182.160
183.216.176.63
115.223.7.175
61.184.117.32
61.136.167.17
111.62.92.55
125.77.147.82
117.23.2.29
223.119.155.107
123.128.14.72
112.28.196.74
123.128.14.49
112.29.227.102
123.183.164.99
203.208.41.33
124.236.97.38
36.250.248.210
221.180.208.48
120.221.64.53
59.63.241.85
58.51.168.64
122.228.237.75
114.113.88.87
218.12.228.39
111.19.233.60
112.47.20.88
111.19.233.87
111.41.54.102
111.62.92.56
111.41.54.103
116.77.75.147
60.9.0.17
114.113.88.86
111.62.69.243
111.62.69.240
111.13.105.106
111.63.56.209
180.95.178.38
61.184.117.24
183.222.97.163
218.76.129.175
222.138.255.47
150.138.169.136
60.18.86.101
118.180.15.33
218.60.185.102
183.66.109.50
120.221.23.64
60.220.196.221
61.136.107.45
125.77.147.88
117.27.241.111
113.215.12.234
60.210.23.25
61.136.167.22
36.250.248.27
202.98.156.60
120.220.18.112
112.51.125.74
120.221.64.161
112.51.125.33
113.16.208.233
120.221.23.63
39.130.253.227
112.29.227.106
113.207.81.77
27.195.145.61
60.210.23.23
218.60.185.47
150.138.111.32
157.255.76.52
117.176.232.83
61.188.191.81
61.162.100.107
125.74.58.135
39.130.253.46
61.188.191.83
60.18.86.91
115.223.7.123
112.84.104.19
116.77.75.170
101.246.182.161
124.165.125.134
182.34.127.22
125.74.58.137
218.60.185.48
101.246.182.219
59.80.29.21
218.60.185.46
112.240.60.217
39.130.253.53
116.77.75.138
182.140.236.133
211.156.178.156
211.156.178.154
116.77.75.137
117.145.179.22
61.188.191.82
60.210.23.177
117.148.128.96
60.174.241.88
127.0.0.1
112.28.196.54
202.150.26.87
52.114.158.91
117.27.241.110
218.78.185.210
60.220.196.220
59.44.30.25
163.171.198.118
59.44.30.121
59.44.30.26
120.221.64.55
218.242.102.137
112.240.59.151
61.241.123.148
112.240.58.253
112.240.59.163
113.142.90.226
112.47.20.67
183.222.97.166
113.16.208.78
124.116.133.18
120.221.64.160
202.98.156.59
59.56.30.52
223.113.14.216
183.253.58.103
117.27.241.213
110.19.204.222
60.220.196.222
118.118.216.129
110.19.204.220
117.27.241.214
39.130.253.226
116.77.73.164
223.113.14.214
124.116.133.16
183.253.58.76
110.19.204.221
111.40.183.65
222.163.201.31
113.207.0.17
115.223.7.124
222.186.141.141
114.236.140.125
218.242.102.138
222.20.147.150
113.142.90.236
104.123.111.225
222.186.141.135
110.18.244.63
113.142.90.235
150.138.169.121
58.63.233.27
112.65.220.52
59.81.64.188
222.20.147.169
222.186.141.143
111.161.22.15
222.186.141.132
222.186.141.145
14.0.42.133
222.20.147.145
113.104.14.229
182.140.236.135
182.140.236.138
116.77.75.145
61.147.226.49
222.20.147.164
222.20.147.184
110.18.244.76
117.27.241.218
112.65.92.116
52.114.128.43
183.66.109.254
60.28.100.248
111.161.122.240
121.31.28.101
222.218.87.252
113.16.212.251
58.18.254.253
124.225.107.254
14.204.186.174
14.204.185.254
14.204.185.123
220.165.142.253
42.123.108.8
42.123.107.43
120.241.66.115
112.90.135.229
183.56.172.113
27.155.108.102
27.155.108.93
61.132.238.115
113.194.59.199
218.64.94.181
122.191.168.109
42.49.185.169
42.49.185.170
175.154.187.252
118.123.233.254
118.123.237.245
123.138.157.122
113.142.80.223
117.23.2.252
218.26.75.236
218.26.75.206
183.131.124.249
36.25.241.251
153.99.235.91
221.230.143.254
120.221.24.14
218.58.205.182
182.34.127.253
150.138.214.124
61.54.7.192
115.54.16.245
218.12.228.246
121.22.247.254
124.236.28.230
218.60.185.251
42.101.72.9
101.69.104.67
101.69.146.44
106.120.178.41
110.242.21.86
111.1.53.254
111.161.122.76
111.161.22.30
111.202.39.149
111.6.176.152
112.17.27.11
112.17.53.119
112.25.81.52
112.28.196.93
112.28.196.95
112.47.14.42
112.47.20.161
112.47.20.163
112.47.20.89
112.51.125.247
112.90.130.66
112.90.133.109
113.104.14.228
113.104.14.230
113.104.14.233
113.142.88.22
113.16.208.129
113.207.0.70
113.207.72.102
113.207.72.103
115.223.24.40
115.223.7.192
115.57.125.113
115.57.125.114
115.57.125.115
117.161.19.121
117.169.93.106
117.169.93.110
117.176.232.104
117.23.2.35
117.27.241.35
118.118.216.45
118.118.216.52
118.118.216.53
118.180.57.87
119.44.24.71
119.44.24.77
119.84.128.86
120.206.189.65
120.206.189.72
120.221.23.221
120.221.23.222
120.221.64.65
120.226.49.103
120.226.49.98
120.241.57.46
122.136.46.92
122.70.142.111
122.70.142.114
123.128.14.122
123.138.203.7
123.53.139.41
123.66.30.25
124.116.133.64
124.236.97.165
125.42.203.62
125.77.130.63
125.77.147.59
125.90.206.51
125.90.206.64
125.90.206.68
14.17.80.103
14.21.78.25
150.138.214.101
157.255.76.46
157.255.76.56
171.217.254.59
171.217.254.62
180.97.178.140
180.97.178.229
183.131.124.77
183.131.168.193
183.201.225.120
183.214.1.243
183.214.1.57
183.56.172.134
183.66.109.52
210.38.3.42
211.156.178.155
211.162.189.194
218.75.153.147
218.76.105.54
219.147.92.131
219.157.114.127
219.157.114.128
219.232.81.196
221.180.208.230
221.194.180.51
221.194.180.91
221.206.126.228
221.229.202.228
221.230.141.52
221.235.187.134
221.235.187.96
222.141.84.142
222.141.84.152
222.218.87.248
222.218.87.29
27.155.72.49
27.155.72.76
36.102.230.168
36.159.115.122
36.250.248.48
36.250.248.49
36.250.74.39
36.99.32.36
36.99.32.37
42.123.117.31
49.210.3.213
58.220.71.55
58.220.71.98
58.223.164.232
58.223.164.28
58.223.164.29
58.223.166.54
59.44.25.17
59.44.25.18
60.174.241.84
60.210.23.185
60.9.0.28
60.9.0.29
61.132.238.113
61.136.167.74
61.167.54.33
61.184.117.29
61.184.117.51
61.188.191.225
61.188.191.39
112.29.227.103
112.28.196.251
112.28.196.249
112.30.197.250
60.174.243.190
103.254.191.203
103.254.191.210
111.200.194.219
103.254.189.229
114.112.172.241
159.226.225.149
159.226.225.154
36.110.141.253
39.134.134.74
159.226.225.139
159.226.225.140
39.134.134.77
112.47.20.250
112.47.56.174
112.47.56.117
112.47.56.118
112.51.125.252
125.77.130.247
125.77.130.45
125.77.140.120
125.77.140.121
125.77.140.30
125.77.140.42
125.77.140.53
125.77.140.54
125.77.140.55
125.77.140.64
125.77.140.91
125.77.140.92
125.77.140.95
27.155.72.251
27.155.72.44
27.155.72.47
36.250.233.185
36.250.233.208
36.250.233.209
36.250.233.228
125.74.58.134
112.90.135.228
112.90.135.96
113.104.14.248
222.186.145.51
222.186.145.54
58.216.21.63
222.186.145.52
121.46.247.75
222.186.145.53
221.235.187.67
58.221.78.58
183.146.22.142
183.146.22.139
121.46.247.72
122.225.83.26
222.186.145.251
116.199.127.50
116.199.127.54
116.199.127.55
116.199.127.56
116.77.75.144
116.77.75.169
119.147.183.43
14.17.80.78
14.17.80.81
14.17.80.83
14.17.80.85
14.17.80.86
14.17.80.88
14.18.17.239
14.18.17.240
14.18.17.249
14.21.78.138
157.255.76.26
183.236.28.27
183.236.28.48
183.240.52.109
183.56.172.32
183.56.172.33
210.38.3.23
210.38.3.24
210.38.3.49
210.38.3.50
210.38.3.60
218.13.52.109
113.16.212.48
113.16.212.49
36.159.115.89
110.242.21.254
110.242.21.243
110.242.21.41
110.242.21.71
110.242.21.70
111.62.194.141
111.62.194.30
111.62.194.31
111.62.194.254
111.63.72.55
121.22.247.202
121.22.247.204
111.63.72.56
121.22.247.203
123.183.164.248
123.183.164.81
123.183.164.91
123.183.164.94
123.183.164.97
124.236.28.67
124.236.28.69
124.236.28.68
124.239.182.115
124.239.182.116
124.239.182.117
124.239.182.118
124.239.182.119
124.239.182.120
124.239.182.95
175.188.163.8
60.9.0.252
111.6.176.208
111.6.176.209
111.6.176.25
115.54.16.151
115.54.16.249
115.54.16.62
115.54.16.252
115.54.16.86
115.54.16.87
115.54.16.88
115.54.16.91
115.54.16.92
218.29.198.42
218.29.198.43
218.29.198.62
221.15.67.155
221.15.67.156
221.15.67.157
221.15.67.158
221.15.67.161
221.15.67.162
221.15.67.163
221.15.67.164
221.15.67.248
222.138.255.250
222.138.255.41
61.54.7.158
61.54.7.174
61.54.7.179
61.54.7.243
113.5.80.251
113.5.80.33
118.203.202.206
118.203.202.207
118.203.202.208
118.203.202.209
118.203.202.222
219.147.93.242
219.147.93.244
219.147.93.243
221.206.126.108
221.206.126.110
221.206.126.111
221.206.126.227
221.206.126.245
61.167.54.242
61.167.54.55
61.167.54.57
111.178.233.197
111.178.233.207
111.47.220.251
111.47.220.66
111.47.220.67
115.156.188.243
115.156.188.247
115.157.63.19
115.157.63.49
115.157.63.50
115.157.63.51
115.157.63.52
115.157.63.62
116.207.132.183
116.207.132.184
202.114.51.32
202.114.51.59
202.114.51.60
202.114.51.65
202.114.51.75
219.138.26.195
219.138.26.196
219.138.26.197
219.138.26.214
222.20.147.143
222.20.147.144
222.20.147.158
222.20.147.183
222.20.147.198
222.20.147.200
222.20.147.201
49.210.3.156
222.20.147.199
49.210.3.177
49.210.3.164
61.184.117.25
61.184.118.86
61.184.118.84
120.226.55.144
120.226.55.151
120.226.55.254
183.214.132.120
183.214.132.16
183.214.132.17
183.214.132.185
183.214.132.186
183.214.132.187
106.41.0.44
106.41.0.45
106.41.0.46
106.41.0.47
106.41.0.61
106.41.0.62
119.52.120.138
119.52.120.139
119.52.120.140
119.52.120.144
119.52.120.145
119.52.120.146
139.209.49.140
139.209.49.138
139.209.49.144
139.209.49.151
139.209.49.152
139.209.49.153
222.163.194.230
222.163.194.27
222.163.194.28
222.163.194.29
222.163.194.30
222.163.202.172
222.163.202.241
222.163.202.212
36.104.132.251
180.97.178.230
180.97.180.164
180.97.180.165
180.97.180.196
218.92.209.12
218.92.209.41
221.230.141.172
222.186.141.146
222.186.141.162
222.186.141.165
222.186.141.166
222.186.141.178
223.111.156.249
223.111.19.124
223.111.198.252
223.111.198.65
223.111.198.75
223.111.22.170
223.111.22.249
58.216.110.36
58.216.21.149
58.216.21.247
58.216.21.250
58.216.21.65
58.216.22.17
58.216.22.20
58.216.22.22
58.216.22.56
58.216.23.100
58.216.23.102
58.220.220.115
58.220.220.251
58.220.71.52
58.221.78.186
58.221.78.229
58.221.78.231
58.221.78.42
58.221.78.45
58.221.78.46
58.221.78.47
58.221.78.48
58.221.78.56
58.221.78.57
58.221.78.70
59.83.232.17
59.83.232.18
59.83.232.50
61.147.210.193
61.147.210.195
61.147.210.242
61.147.227.102
61.147.227.233
61.147.228.201
113.194.59.80
113.194.59.81
117.169.93.249
118.212.150.100
118.212.150.101
118.212.150.102
120.206.189.252
183.216.176.248
183.216.176.74
183.216.176.75
183.216.176.89
59.63.221.253
59.63.221.35
101.246.182.157
101.246.182.251
123.184.108.251
123.184.108.60
123.184.108.61
124.95.148.124
124.95.148.254
124.95.148.30
124.95.148.29
124.95.148.31
182.201.212.140
182.201.212.242
221.180.192.254
221.180.208.252
221.180.208.54
42.176.192.226
42.176.192.77
59.47.227.144
59.47.227.146
59.47.227.148
59.47.227.149
106.40.140.224
106.40.140.222
106.40.140.254
110.18.244.252
222.74.113.196
222.74.113.230
58.18.254.207
58.18.254.221
120.253.100.20
120.253.100.21
120.253.100.22
120.253.100.23
120.253.100.30
211.138.60.189
112.240.60.214
112.240.60.215
112.240.60.216
112.240.60.222
112.240.60.236
112.253.38.37
120.221.64.169
150.138.111.31
150.138.169.120
150.138.169.123
150.138.169.124
150.138.169.137
182.34.127.21
27.195.145.121
27.195.145.249
27.195.145.52
60.210.23.27
61.162.100.44
124.165.125.13
218.26.75.149
218.26.75.150
218.26.75.151
218.26.75.152
218.26.75.153
60.220.196.250
111.19.215.127
113.142.80.69
113.142.80.71
113.142.80.72
123.138.157.85
123.138.157.96
123.138.60.154
124.116.133.76
222.24.122.79
222.24.122.86
222.24.122.89
121.46.247.247
121.46.247.73
121.46.247.74
124.14.20.219
61.151.238.197
61.151.238.222
61.151.238.229
117.176.232.84
118.118.216.131
118.123.233.30
118.123.233.31
118.123.233.32
118.123.237.174
118.123.237.176
118.123.251.19
118.123.251.247
118.123.251.73
118.123.251.76
118.123.251.77
182.140.147.54
182.140.218.25
182.140.218.26
183.222.97.254
211.162.189.192
211.162.189.193
211.162.189.207
223.86.219.65
223.86.219.66
60.255.143.93
60.255.143.94
60.255.143.95
60.255.143.96
111.161.122.137
60.28.100.155
60.28.100.156
60.28.100.157
60.28.100.158
117.180.229.142
106.57.180.62
106.57.180.63
14.204.185.100
14.204.185.101
14.204.185.102
14.204.185.91
220.165.142.137
220.165.142.9
101.69.104.21
101.69.104.29
101.69.104.30
111.0.23.138
112.17.175.197
113.215.16.58
113.215.16.59
115.223.24.80
115.223.24.82
117.149.154.185
117.149.154.250
117.149.155.76
122.224.186.253
122.225.83.25
122.225.83.28
122.228.239.233
122.228.239.234
122.228.239.235
122.228.239.236
122.228.239.238
122.228.239.243
122.228.239.244
122.228.239.246
122.228.6.197
122.228.6.200
122.228.6.201
122.228.6.209
122.228.6.217
122.228.6.220
122.228.6.218
183.131.124.58
183.131.124.59
183.131.124.60
183.131.124.61
183.131.124.62
183.131.171.42
183.131.171.47
183.131.26.41
183.131.26.42
183.131.26.43
183.131.26.44
183.131.26.45
183.131.26.46
183.131.26.47
183.131.26.5
183.131.26.60
183.134.42.153
183.134.42.154
183.134.42.155
183.134.42.156
183.134.42.157
183.134.42.158
183.134.42.159
183.134.42.17
183.134.42.18
183.134.42.19
183.134.42.190
183.134.42.191
183.134.42.20
183.134.42.247
183.134.53.248
183.146.22.135
183.146.22.136
183.146.22.137
183.146.22.138
183.146.22.143
183.146.22.145
183.146.22.146
183.146.22.159
183.146.22.171
183.146.22.179
113.207.10.204
113.207.10.218
113.207.6.210
113.207.6.211
113.207.6.212
113.207.6.213
113.207.70.194
113.207.70.207
113.207.70.208
113.207.70.209
113.207.77.117
113.207.77.118
113.207.77.247
113.207.77.252
113.207.79.17
113.207.79.34
113.207.79.42
113.207.79.37
113.207.81.78
119.84.128.19
183.66.108.204
183.66.108.205
183.66.109.44
183.66.109.45
211.162.212.156
211.162.212.210
211.162.212.211
211.162.212.212
================================================
FILE: data/stations.txt
================================================
@bjb|北京北|VAP|beijingbei|bjb|0@bjd|北京东|BOP|beijingdong|bjd|1@bji|北京|BJP|beijing|bj|2@bjn|北京南|VNP|beijingnan|bjn|3@bjx|北京大兴|IPP|beijingdaxing|bjdx|4@bjx|北京西|BXP|beijingxi|bjx|5@bjy|北京朝阳|IFP|beijingchaoyang|bjcy|6@cqb|重庆北|CUW|chongqingbei|cqb|7@cqi|重庆|CQW|chongqing|cq|8@cqn|重庆南|CRW|chongqingnan|cqn|9@cqx|重庆西|CXW|chongqingxi|cqx|10@sha|上海|SHH|shanghai|sh|11@shn|上海南|SNH|shanghainan|shn|12@shq|上海虹桥|AOH|shanghaihongqiao|shhq|13@shx|上海西|SXH|shanghaixi|shx|14@tjb|天津北|TBP|tianjinbei|tjb|15@tji|天津|TJP|tianjin|tj|16@tjn|天津南|TIP|tianjinnan|tjn|17@tjx|天津西|TXP|tianjinxi|tjx|18@wxi|万象|YTM|wanxiang|wx|19@bji|滨江|BJB|binjiang|bj|20@bla|百浪|BRZ|bailang|bl|21@bmq|班猫箐|BNM|banmaoqing|bmq|22@byi|北营|BIV|beiying|by|23@cch|长春|CCT|changchun|cc|24@ccn|长春南|CET|changchunnan|ccn|25@ccx|长春西|CRT|changchunxi|ccx|26@cdd|成都东|ICW|chengdudong|cdd|27@cdn|成都南|CNW|chengdunan|cdn|28@cdu|成都|CDW|chengdu|cd|29@cdx|成都西|CMW|chengduxi|cdx|30@cgy|陈官营|CAJ|chenguanying|cgy|31@cqi|长清|CNK|changqing|cq|32@csh|长沙|CSQ|changsha|cs|33@csn|长沙南|CWQ|changshanan|csn|34@csx|长沙西|RXQ|changshaxi|csx|35@czh|常庄|CVK|changzhuang|cz|36@dch|大成|DCT|dacheng|dc|37@dni|大拟|DNZ|dani|dn|38@dsp|读书铺|DPM|dushupu|dsp|39@dwt|大王滩|DZZ|dawangtan|dwt|40@dyu|大元|DYZ|dayuan|dy|41@fsc|丰水村|FSJ|fengshuicun|fsc|42@fzh|福州|FZS|fuzhou|fz|43@fzn|福州南|FYS|fuzhounan|fzn|44@gcd|甘草店|GDJ|gancaodian|gcd|45@gch|钢城|GAK|gangcheng|gc|46@gjz|孤家子|GKT|gujiazi|gjz|47@gnw|广南卫|GNM|guangnanwei|gnw|48@gya|贵阳|GIW|guiyang|gy|49@gyb|贵阳北|KQW|guiyangbei|gyb|50@gyd|贵阳东|KEW|guiyangdong|gyd|51@gzb|广州北|GBQ|guangzhoubei|gzb|52@gzd|广州东|GGQ|guangzhoudong|gzd|53@gzh|广州|GZQ|guangzhou|gz|54@gzn|广州南|IZQ|guangzhounan|gzn|55@gzx|广州西|GXQ|guangzhouxi|gzx|56@gzy|广州白云|GBA|guangzhoubaiyun|gzby|57@heb|哈尔滨北|HTB|haerbinbei|hebb|58@heb|哈尔滨|HBB|haerbin|heb|59@hed|哈尔滨东|VBB|haerbindong|hebd|60@hex|哈尔滨西|VAB|haerbinxi|hebx|61@hfc|合肥北城|COH|hefeibeicheng|hfbc|62@hfe|合肥|HFH|hefei|hf|63@hfn|合肥南|ENH|hefeinan|hfn|64@hgt|皇姑屯|HTT|huanggutun|hgt|65@hhd|呼和浩特东|NDC|huhehaotedong|hhhtd|66@hht|呼和浩特|HHC|huhehaote|hhht|67@hkd|海口东|HMQ|haikoudong|hkd|68@hko|海口|VUQ|haikou|hk|69@hzd|杭州东|HGH|hangzhoudong|hzd|70@hzh|杭州|HZH|hangzhou|hz|71@hzn|杭州南|XHH|hangzhounan|hzn|72@jmc|金马村|JMM|jinmacun|jmc|73@jna|济南|JNK|jinan|jn|74@jnd|济南东|MDK|jinandong|jnd|75@jnx|济南西|JGK|jinanxi|jnx|76@kmi|昆明|KMM|kunming|km|77@kmn|昆明南|KOM|kunmingnan|kmn|78@lch|历城|VHK|licheng|lc|79@ljl|蔺家楼|ULK|linjialou|ljl|80@lqs|龙泉寺|UQJ|longquansi|lqs|81@lsa|拉萨|LSO|lasa|ls|82@lsc|乐善村|LUM|leshancun|lsc|83@lsp|林盛堡|LBT|linshengpu|lsp|84@ltx|骆驼巷|LTJ|luotuoxiang|ltx|85@lwb|莱芜北|VIK|laiwubei|lwb|86@lzd|兰州东|LVJ|lanzhoudong|lzd|87@lzh|兰州|LZJ|lanzhou|lz|88@lzq|兰州新区|LQJ|lanzhouxinqu|lzxq|89@lzx|兰州西|LAJ|lanzhouxi|lzx|90@msz|茂舍祖|MOM|maoshezu|msz|91@ncd|南昌东|NUG|nanchangdong|ncd|92@nch|南昌|NCG|nanchang|nc|93@ncn|南昌南|HOG|nanchangnan|ncn|94@ncu|宁村|NCZ|ningcun|nc|95@ncx|南昌西|NXG|nanchangxi|ncx|96@nji|南京|NJH|nanjing|nj|97@njn|南京南|NKH|nanjingnan|njn|98@nlu|那罗|ULZ|naluo|nl|99@nnb|南宁北|NRZ|nanningbei|nnb|100@nnd|南宁东|NFZ|nanningdong|nnd|101@nni|南宁|NNZ|nanning|nn|102@nnx|南宁西|NXZ|nanningxi|nnx|103@npu|那铺|NPZ|napu|np|104@nqu|暖泉|NQJ|nuanquan|nq|105@pdx|坡底下|PXJ|podixia|pdx|106@qdi|七甸|QDM|qidian|qd|107@sby|世博园|ZWT|shiboyuan|sby|108@sjb|石家庄北|VVP|shijiazhuangbei|sjzb|109@sjd|石家庄东|SXP|shijiazhuangdong|sjzd|110@sjt|邵家堂|SJJ|shaojiatang|sjt|111@sjz|石家庄|SJP|shijiazhuang|sjz|112@sjz|施家嘴|SHM|shijiazui|sjz|113@sya|沈阳|SYT|shenyang|sy|114@syb|沈阳北|SBT|shenyangbei|syb|115@syd|沈阳东|SDT|shenyangdong|syd|116@syn|沈阳南|SOT|shenyangnan|syn|117@syu|水源|OYJ|shuiyuan|sy|118@syx|沈阳西|OOT|shenyangxi|syx|119@syz|桑园子|SAJ|sangyuanzi|syz|120@tyb|太原北|TBV|taiyuanbei|tyb|121@tyd|太原东|TDV|taiyuandong|tyd|122@tyn|太原南|TNV|taiyuannan|tyn|123@tyu|太原|TYV|taiyuan|ty|124@wha|武汉|WHN|wuhan|wh|125@whd|武汉东|LFN|wuhandong|whd|126@wjw|王家湾|WJJ|wangjiawan|wjw|127@wln|乌鲁木齐南|WMR|wulumuqinan|wlmqn|128@wlq|乌鲁木齐|WAR|wulumuqi|wlmq|129@wxc|吴圩机场|WJZ|wuxujichang|wxjc|130@wzt|王兆屯|WZB|wangzhaotun|wzt|131@xab|西安北|EAY|xianbei|xab|132@xan|西安|XAY|xian|xa|133@xgc|西固城|XUJ|xigucheng|xgc|134@xjk|西街口|EKM|xijiekou|xjk|135@xjt|许家台|XTJ|xujiatai|xjt|136@xni|西宁|XNO|xining|xn|137@xsh|小哨|XAM|xiaoshao|xs|138@xta|新塘|XWQ|xintang|xt|139@xye|雪野|XYK|xueye|xy|140@ych|银川|YIJ|yinchuan|yc|141@yfy|永丰营|YYM|yongfengying|yfy|142@yjp|一间堡|YJT|yijianpu|yjp|143@yna|宜耐|YVM|yinai|yn|144@ypu|羊堡|ABM|yangpu|yp|145@yst|榆树台|YUT|yushutai|yst|146@yzh|引镇|CAY|yinzhen|yz|147@zjy|朱家窑|ZUJ|zhujiayao|zjy|148@zqn|章丘南|VQK|zhangqiunan|zqn|149@zzd|郑州东|ZAF|zhengzhoudong|zzd|150@zzg|郑州航空港|ZIF|zhengzhouhangkonggang|zzhkg|151@zzh|郑州|ZZF|zhengzhou|zz|152@zzx|郑州西|XPF|zhengzhouxi|zzx|153@aax|昂昂溪|AAX|angangxi|aax|154@acb|阿城北|ABB|achengbei|acb|155@ach|阿城|ACB|acheng|ac|156@aci|安次|ACI|anci|ac|157@ada|安达|ADX|anda|ad|158@ade|安德|ARW|ande|ad|159@aeb|阿尔山北|ARX|aershanbei|aesb|160@aes|阿尔山|ART|aershan|aes|161@aji|安吉|AJU|anji|aj|162@aji|安靖|PYW|anjing|aj|163@aji|安家|AJB|anjia|aj|164@aka|安康|AKY|ankang|ak|165@aks|阿克苏|ASR|akesu|aks|166@akt|阿克陶|AER|aketao|akt|167@ale|阿拉尔|AOR|alaer|ale|168@alh|阿里河|AHX|alihe|alh|169@alk|阿拉山口|AKR|alashankou|alsk|170@alt|阿勒泰|AUR|aletai|alt|171@alu|安陆|ALN|anlu|al|172@alx|安陆西|AXN|anluxi|alx|173@api|安平|APT|anping|ap|174@aqi|安庆|AQH|anqing|aq|175@aqx|安庆西|AIU|anqingxi|aqx|176@ash|安顺|ASW|anshun|as|177@ash|鞍山|AST|anshan|as|178@asx|安顺西|ASE|anshunxi|asx|179@asx|鞍山西|AXT|anshanxi|asx|180@atb|安亭北|ASH|antingbei|atb|181@atx|安亭西|AXU|antingxi|atx|182@aya|安阳|AYF|anyang|ay|183@ayd|安阳东|ADF|anyangdong|ayd|184@ban|北安|BAB|beian|ba|185@bba|博白|BBZ|bobai|bb|186@bbn|蚌埠南|BMH|bengbunan|bbn|187@bbu|蚌埠|BBH|bengbu|bb|188@bch|巴楚|BCR|bachu|bc|189@bch|白城|BCT|baicheng|bc|190@bch|北辰|BII|beichen|bc|191@bdb|宝坻北|BPP|baodibei|bdb|192@bdc|八达岭长城|VLP|badalingchangcheng|bdlcc|193@bdd|保定东|BMP|baodingdong|bdd|194@bdh|北戴河|BEP|beidaihe|bdh|195@bdi|保定|BDP|baoding|bd|196@bdl|八达岭|ILP|badaling|bdl|197@bdo|巴东|BBN|badong|bd|198@bfs|八方山|FGQ|bafangshan|bfs|199@bgu|柏果|BGM|baiguo|bg|200@bha|北海|BHZ|beihai|bh|201@bha|布海|BUT|buhai|bh|202@bha|滨海|YKP|binhai|bh|203@bhb|滨海北|FCP|binhaibei|bhb|204@bhe|白河|BEL|baihe|bh|205@bhx|滨海西|FHP|binhaixi|bhx|206@bji|毕节|BOE|bijie|bj|207@bji|宝鸡|BJY|baoji|bj|208@bji|白涧|BAP|baijian|bj|209@bjn|宝鸡南|BBY|baojinan|bjn|210@bjt|北京丰台|FTP|beijingfengtai|bjft|211@bkp|白奎堡|BKB|baikuipu|bkp|212@bkt|博克图|BKX|boketu|bkt|213@ble|博乐|BER|bole|bl|214@bli|巴林|BLX|balin|bl|215@bli|勃利|BLB|boli|bl|216@bmj|白马井|BFQ|baimajing|bmj|217@bmt|八面通|BMB|bamiantong|bmt|218@bpi|北票|BPT|beipiao|bp|219@bqi|宝清|BUB|baoqing|bq|220@bql|宝泉岭|BQB|baoquanling|bql|221@bse|百色|BIZ|baise|bs|222@bss|白山市|HJL|baishanshi|bss|223@btd|包头东|BDC|baotoudong|btd|224@bto|包头|BTC|baotou|bt|225@bts|北屯市|BXR|beitunshi|bts|226@bxb|宾西北|BBB|binxibei|bxb|227@bxi|本溪|BXT|benxi|bx|228@bxj|步行街|BWW|buxingjie|bxj|229@bya|宾阳|UKZ|binyang|by|230@byb|白云鄂博|BEC|baiyunebo|byeb|231@byb|白云北|BVE|baiyunbei|byb|232@byb|白云机场北|BBA|baiyunjichangbei|byjcb|233@byd|白洋淀|FWP|baiyangdian|byd|234@byh|背荫河|BYB|beiyinhe|byh|235@byi|百宜|FHW|baiyi|by|236@byl|巴彦高勒|BAC|bayangaole|bygl|237@byq|鲅鱼圈|BYT|bayuquan|byq|238@byx|白银西|BXJ|baiyinxi|byx|239@byx|白云西|BXE|baiyunxi|byx|240@bzd|巴中东|BDE|bazhongdong|bzd|241@bzd|彬州东|BFY|binzhoudong|bzd|242@bzh|巴中|IEW|bazhong|bz|243@bzh|滨州|BIK|binzhou|bz|244@bzh|亳州|BZH|bozhou|bz|245@bzh|宾州|BZB|binzhou|bz|246@bzn|亳州南|BNU|bozhounan|bzn|247@cbg|查布嘎|CBC|chabuga|cbg|248@cbi|赤壁|CBN|chibi|cb|249@cbs|长白山|CUL|changbaishan|cbs|250@cde|常德|VGQ|changde|cd|251@cde|承德|CDP|chengde|cd|252@cdn|承德南|IVP|chengdenan|cdn|253@cfd|曹妃甸东|POP|caofeidiandong|cfdd|254@cfe|赤峰|CID|chifeng|cf|255@cfg|曹妃甸港|PGP|caofeidiangang|cfdg|256@cfn|赤峰南|CFD|chifengnan|cfn|257@cga|嵯岗|CAX|cuogang|cg|258@cga|柴岗|CGT|chaigang|cg|259@cgb|柴沟堡|CGV|chaigoubu|cgp|260@cgb|长葛北|CGF|changgebei|cgb|261@cgu|城固|CGY|chenggu|cg|262@cgz|成高子|CZB|chenggaozi|cgz|263@cha|草海|WBW|caohai|ch|264@chd|巢湖东|GUH|chaohudong|chd|265@che|柴河|CHB|chaihe|ch|266@chu|巢湖|CIH|chaohu|ch|267@cji|从江|KNW|congjiang|cj|268@cjy|蔡家崖|EBV|caijiaya|cjy|269@cld|长乐东|CIS|changledong|cld|270@cle|长乐|CAS|changle|cl|271@clh|长临河|FVH|changlinhe|clh|272@cli|慈利|CUQ|cili|cl|273@cli|茶陵|CDG|chaling|cl|274@cli|崇礼|KOP|chongli|cl|275@cli|昌黎|CLP|changli|cl|276@cli|长流|CLA|changliu|cl|277@cln|长乐南|CVS|changlenan|cln|278@cmi|晨明|CMB|chenming|cm|279@cna|苍南|CEH|cangnan|cn|280@cpb|昌平北|VBP|changpingbei|cpb|281@cpd|常平东|FQQ|changpingdong|cpd|282@cpi|翠屏|YBW|cuiping|cp|283@cpi|昌平|CPP|changping|cp|284@cqq|长庆桥|CQJ|changqingqiao|cqq|285@cre|崇仁|CRG|chongren|cr|286@csb|长寿北|COW|changshoubei|csb|287@csh|潮汕|CBQ|chaoshan|cs|288@csq|察素齐|CSC|chasuqi|csq|289@cti|朝天|CTE|chaotian|ct|290@ctn|长汀南|CNS|changtingnan|ctn|291@ctn|朝天南|CTY|chaotiannan|ctn|292@ctu|昌图|CTT|changtu|ct|293@ctx|昌图西|CPT|changtuxi|ctx|294@ctz|长汀镇|CDB|changtingzhen|ctz|295@cwu|长武|CWY|changwu|cw|296@cxi|苍溪|CXE|cangxi|cx|297@cxi|辰溪|CXQ|chenxi|cx|298@cxi|磁县|CIP|cixian|cx|299@cxi|楚雄|CUM|chuxiong|cx|300@cxi|曹县|CXK|caoxian|cx|301@cxi|城西|CIA|chengxi|cx|302@cxn|长兴南|CFH|changxingnan|cxn|303@cxt|陈相屯|CXT|chenxiangtun|cxt|304@cya|春阳|CAL|chunyang|cy|305@cya|潮阳|CNQ|chaoyang|cy|306@cyc|朝阳川|CYL|chaoyangchuan|cyc|307@cyh|朝阳湖|CYE|chaoyanghu|cyh|308@czb|滁州北|CUH|chuzhoubei|czb|309@czb|常州北|ESH|changzhoubei|czb|310@czb|长治北|CBF|changzhibei|czb|311@czd|长治东|CUF|changzhidong|czd|312@czh|长征|CZJ|changzheng|cz|313@czh|池州|IYH|chizhou|cz|314@czh|滁州|CXH|chuzhou|cz|315@czh|郴州|CZQ|chenzhou|cz|316@czh|沧州|COP|cangzhou|cz|317@czh|常州|CZH|changzhou|cz|318@czh|长治|CZF|changzhi|cz|319@czh|崇州|CZE|chongzhou|cz|320@czn|崇左南|COZ|chongzuonan|czn|321@czu|崇左|CZZ|chongzuo|cz|322@czx|郴州西|ICQ|chenzhouxi|czx|323@czx|沧州西|CBP|cangzhouxi|czx|324@dab|大安北|RNT|daanbei|dab|325@dad|东安东|DCZ|dongandong|dad|326@dbc|达坂城|DCR|dabancheng|dbc|327@dbi|定边|DYJ|dingbian|db|328@dch|东岔|DCJ|dongcha|dc|329@ddo|丹东|DUT|dandong|dd|330@dfa|东方|UFQ|dongfang|df|331@dfe|丹凤|DGY|danfeng|df|332@dfe|大丰|KRQ|dafeng|df|333@dfh|东方红|DFB|dongfanghong|dfh|334@dfn|大方南|DNE|dafangnan|dfn|335@dfn|东风南|DPJ|dongfengnan|dfn|336@dgb|东港北|RGT|donggangbei|dgb|337@dgd|东莞东|DMQ|dongguandong|dgd|338@dgn|东莞南|DNA|dongguannan|dgn|339@dgs|大孤山|RMT|dagushan|dgs|340@dgu|东莞|RTQ|dongguan|dg|341@dgx|东莞西|WGQ|dongguanxi|dgx|342@dhq|大红旗|DQD|dahongqi|dhq|343@dhs|大虎山|DHD|dahushan|dhs|344@dhu|敦化|DHL|dunhua|dh|345@dhu|敦煌|DHJ|dunhuang|dh|346@dhu|德惠|DHT|dehui|dh|347@dhx|德惠西|DXT|dehuixi|dhx|348@djc|东京城|DJB|dongjingcheng|djc|349@djg|达家沟|DJT|dajiagou|djg|350@dji|垫江|DJE|dianjiang|dj|351@dji|道滘|RRQ|daojiao|dj|352@dji|大涧|DFP|dajian|dj|353@dji|洞井|FWQ|dongjing|dj|354@djy|都江堰|DDW|dujiangyan|djy|355@dko|洞口|DKA|dongkou|dk|356@dlb|大连北|DFT|dalianbei|dlb|357@dlh|德令哈|DHO|delingha|dlh|358@dlh|达连河|DCB|dalianhe|dlh|359@dli|大荔|DNY|dali|dl|360@dli|大理|DKM|dali|dl|361@dli|大连|DLT|dalian|dl|362@dmh|大明湖|JAK|daminghu|dmh|363@dml|得莫利|DTB|demoli|dml|364@dmx|东明县|DNF|dongmingxian|dmx|365@dna|定南|DNG|dingnan|dn|366@dnn|定南南|DIG|dingnannan|dnn|367@dpu|大埔|DPI|dapu|dp|368@dqd|大庆东|LFX|daqingdong|dqd|369@dqi|大庆|DZX|daqing|dq|370@dqs|对青山|DQB|duiqingshan|dqs|371@dqx|大庆西|RHX|daqingxi|dqx|372@dsh|东胜|DOC|dongsheng|ds|373@dsh|独山|RWW|dushan|ds|374@dsn|砀山南|PRH|dangshannan|dsn|375@dsq|大石桥|DQT|dashiqiao|dsq|376@dsx|东胜西|DYC|dongshengxi|dsx|377@dtn|大同南|DMV|datongnan|dtn|378@dto|大同|DTV|datong|dt|379@dtu|大屯|DNT|datun|dt|380@dtx|大通西|DTO|datongxi|dtx|381@dwk|大武口|DFJ|dawukou|dwk|382@dwu|党武|DWE|dangwu|dw|383@dxb|定西北|DNJ|dingxibei|dxb|384@dxc|大兴机场|IWP|daxingjichang|dxjc|385@dxi|定西|DSJ|dingxi|dx|386@dxi|东乡|DXG|dongxiang|dx|387@dxi|大兴|DXX|daxing|dx|388@dxs|东兴市|RIZ|dongxingshi|dxs|389@dya|德阳|DYW|deyang|dy|390@dya|当阳|DYN|dangyang|dy|391@dya|丹阳|DYH|danyang|dy|392@dyb|大冶北|DBN|dayebei|dyb|393@dyd|大英东|IAW|dayingdong|dyd|394@dyd|都匀东|KJW|duyundong|dyd|395@dyi|东营|DPK|dongying|dy|396@dyi|大邑|DEE|dayi|dy|397@dyn|东营南|DOK|dongyingnan|dyn|398@dys|大杨树|DUX|dayangshu|dys|399@dyu|都匀|RYW|duyun|dy|400@dzd|德州东|DIP|dezhoudong|dzd|401@dzd|定州东|DOP|dingzhoudong|dzd|402@dzd|邓州东|DDF|dengzhoudong|dzd|403@dzh|东至|DCH|dongzhi|dz|404@dzh|达州|RXW|dazhou|dz|405@dzh|德州|DZP|dezhou|dz|406@dzh|定州|DXP|dingzhou|dz|407@dzh|邓州|DOF|dengzhou|dz|408@ebi|峨边|EBW|ebian|eb|409@ees|鄂尔多斯|EEC|eerduosi|eeds|410@ejn|额济纳|EJC|ejina|ejn|411@eli|二连|RLC|erlian|el|412@eme|峨眉|EMW|emei|em|413@ems|峨眉山|IXW|emeishan|ems|414@esh|恩施|ESN|enshi|es|415@ezh|鄂州|ECN|ezhou|ez|416@fcb|防城港北|FBZ|fangchenggangbei|fcgb|417@fdi|福鼎|FES|fuding|fd|418@fdo|肥东|FIH|feidong|fd|419@fdu|丰都|FUW|fengdu|fd|420@fer|发耳|FEM|faer|fe|421@fha|福海|FHR|fuhai|fh|422@fhc|凤凰机场|FJQ|fenghuangjichang|fhjc|423@fhc|凤凰城|FHT|fenghuangcheng|fhc|424@fhe|汾河|FEV|fenhe|fh|425@fhu|奉化|FHH|fenghua|fh|426@fji|富锦|FIB|fujin|fj|427@fjt|范家屯|FTT|fanjiatun|fjt|428@flb|涪陵北|FEW|fulingbei|flb|429@fld|风陵渡|FLV|fenglingdu|fld|430@fld|浮梁东|FVG|fuliangdong|fld|431@fli|涪陵|FLW|fuling|fl|432@flj|富拉尔基|FRX|fulaerji|flej|433@flq|福利区|FLJ|fuliqu|flq|434@fnd|阜宁东|FDU|funingdong|fnd|435@fni|富宁|FNM|funing|fn|436@fqi|福清|FQS|fuqing|fq|437@fqu|福泉|VMW|fuquan|fq|438@frn|芙蓉南|KCQ|furongnan|frn|439@fsb|抚顺北|FET|fushunbei|fsb|440@fsh|富顺|FSE|fushun|fs|441@fsh|佛山|FSQ|foshan|fs|442@fsu|扶绥|FSZ|fusui|fs|443@fsx|佛山西|FOQ|foshanxi|fsx|444@fti|福田|NZQ|futian|ft|445@fxi|凤县|FXY|fengxian|fx|446@fxi|阜新|FOT|fuxin|fx|447@fxi|肥西|FAH|feixi|fx|448@fxn|阜新南|FXD|fuxinnan|fxn|449@fya|阜阳|FYH|fuyang|fy|450@fya|富阳|FYU|fuyang|fy|451@fyb|扶余北|FBT|fuyubei|fyb|452@fyi|分宜|FYG|fenyi|fy|453@fyu|富蕴|FYR|fuyun|fyu|454@fyu|富源|FYM|fuyuan|fy|455@fyu|抚远|FYB|fuyuan|fy|456@fyu|富裕|FYX|fuyu|fy|457@fyx|阜阳西|FXU|fuyangxi|fyx|458@fzh|丰镇|FZC|fengzhen|fz|459@fzh|凤州|FZY|fengzhou|fz|460@fzh|抚州|FZG|fuzhou|fz|461@fzh|方正|FNB|fangzheng|fz|462@gan|广安南|VUW|guangannan|gan|463@gan|广安|VJW|guangan|ga|464@gan|高安|GCG|gaoan|ga|465@gan|贵安|GAE|guian|ga|466@gbk|古北口|GKP|gubeikou|gbk|467@gch|藁城|GEP|gaocheng|gc|468@gcn|藁城南|GUP|gaochengnan|gcn|469@gcu|高村|GCV|gaocun|gc|470@gdo|古东|GDV|gudong|gd|471@gem|格尔木|GRO|geermu|gem|472@gga|贵港|GGZ|guigang|gg|473@ggu|甘谷|GGJ|gangu|gg|474@ghe|根河|GEX|genhe|gh|475@ghu|高花|HGD|gaohua|gh|476@gji|古交|GJV|gujiao|gj|477@gla|皋兰|GEJ|gaolan|gl|478@glb|桂林北|GBZ|guilinbei|glb|479@gle|高楞|GLB|gaoleng|gl|480@gli|桂林|GLZ|guilin|gl|481@gli|古莲|GRX|gulian|gl|482@glu|甘洛|VOW|ganluo|gl|483@gmz|公庙子|GMC|gongmiaozi|gmz|484@gnx|广南县|GXM|guangnanxian|gnx|485@gpi|桂平|GAZ|guiping|gp|486@gqc|共青城|GAG|gongqingcheng|gqc|487@gsh|固始|GXN|gushi|gs|488@gsh|广水|GSN|guangshui|gs|489@gsh|谷山|FFQ|gushan|gs|490@gsl|观沙岭|FKQ|guanshaling|gsl|491@gta|干塘|GNJ|gantang|gt|492@gtb|广通北|GPM|guangtongbei|gtb|493@gtz|古田会址|STS|gutianhuizhi|gthz|494@gxi|高兴|VWW|gaoxing|gx|495@gxi|冠县|GHP|guanxian|gx|496@gya|广阳|LFP|guangyang|gy|497@gyi|高邑|GIP|gaoyi|gy|498@gyi|巩义|GXF|gongyi|gy|499@gyn|巩义南|GYF|gongyinan|gyn|500@gyu|固原|GUJ|guyuan|gy|501@gyu|广元|GYW|guangyuan|gy|502@gyu|赣榆|GYU|ganyu|gy|503@gyx|高邑西|GNP|gaoyixi|gyx|504@gzh|高州|GSQ|gaozhou|gz|505@gzh|赣州|GZG|ganzhou|gz|506@gzl|公主岭|GLT|gongzhuling|gzl|507@gzn|公主岭南|GBT|gongzhulingnan|gzln|508@gzs|冠豸山|GPS|guanzhaishan|gzs|509@gzx|盖州西|GAT|gaizhouxi|gzx|510@gzx|赣州西|GOG|ganzhouxi|gzx|511@had|淮安东|HAU|huaiandong|had|512@han|淮安|AUH|huaian|ha|513@hax|红安西|VXN|honganxi|hax|514@hbe|淮北|HRH|huaibei|hb|515@hbe|鹤北|HMB|hebei|hb|516@hbi|淮滨|HVN|huaibin|hb|517@hbi|河边|HBV|hebian|hb|518@hcd|湖潮东|HCE|huchaodong|hcd|519@hch|韩城|HCY|hancheng|hc|520@hch|合川|WKW|hechuan|hc|521@hch|珲春|HUL|hunchun|hc|522@hch|潢川|KCN|huangchuan|hc|523@hch|海城|HCT|haicheng|hc|524@hcj|花城街|HCA|huachengjie|hcj|525@hcu|黄村|HCP|huangcun|hc|526@hcx|河池西|HIZ|hechixi|hcx|527@hcx|海城西|HXT|haichengxi|hcx|528@hda|邯郸|HDP|handan|hd|529@hdc|河东机场|HFJ|hedongjichang|hdjc|530@hdd|邯郸东|HPP|handandong|hdd|531@hdn|惠东南|KDQ|huidongnan|hdn|532@hdp|哈达铺|HDJ|hadapu|hdp|533@hdu|花都|HAA|huadu|hd|534@hdx|洪洞西|HTV|hongtongxi|hdx|535@hdz|横道河子|HDB|hengdaohezi|hdhz|536@hes|霍尔果斯|HFR|huoerguosi|hegs|537@hga|鹤岗|HGB|hegang|hg|538@hgd|黄冈东|KAN|huanggangdong|hgd|539@hgu|红果|HEM|hongguo|hg|540@hgu|汉沽|HGP|hangu|hg|541@hgz|红光镇|IGW|hongguangzhen|hgz|542@hhe|红河|HHM|honghe|hh|543@hhe|黑河|HJB|heihe|hh|544@hhn|怀化南|KAQ|huaihuanan|hhn|545@hhq|黄河景区|HCF|huanghejingqu|hhjq|546@hhu|怀化|HHQ|huaihua|hh|547@hhu|后湖|IHN|houhu|hh|548@hji|环江|HFZ|huanjiang|hj|549@hji|和静|HJR|hejing|hj|550@hji|河津|HJV|hejin|hj|551@hji|怀集|FAQ|huaiji|hj|552@hji|华家|HJT|huajia|hj|553@hkb|河口北|HBM|hekoubei|hkb|554@hkl|宏克力|OKB|hongkeli|hkl|555@hkn|河口南|HKJ|hekounan|hkn|556@hko|汉口|HKN|hankou|hk|557@hla|呼兰|HUB|hulan|hl|558@hlb|葫芦岛北|HPD|huludaobei|hldb|559@hld|葫芦岛|HLD|huludao|hld|560@hle|海拉尔|HRX|hailaer|hle|561@hlh|哈拉海|HIT|halahai|hlh|562@hli|寒岭|HAT|hanling|hl|563@hli|海林|HRB|hailin|hl|564@hli|虎林|VLB|hulin|hl|565@hll|霍林郭勒|HWD|huolinguole|hlgl|566@hln|黄陵南|VLY|huanglingnan|hln|567@hlu|海伦|HLB|hailun|hl|568@hma|侯马|HMV|houma|hm|569@hmd|黄梅东|HDU|huangmeidong|hmd|570@hme|鲘门|KMQ|houmen|hm|571@hme|海门|HMU|haimen|hm|572@hmi|哈密|HMR|hami|hm|573@hmx|侯马西|HPV|houmaxi|hmx|574@hna|淮南|HAH|huainan|hn|575@hna|桦南|HNB|huanan|hn|576@hnd|淮南东|HOH|huainandong|hnd|577@hnn|淮南南|HNU|huainannan|hnn|578@hnx|海宁西|EUH|hainingxi|hnx|579@hqi|鹤庆|HQM|heqing|hq|580@hrb|怀柔北|HBP|huairoubei|hrb|581@hrd|怀仁东|HFV|huairendong|hrd|582@hrn|怀柔南|IMP|huairounan|hrn|583@hro|怀柔|HRP|huairou|hr|584@hsb|华山北|HDY|huashanbei|hsb|585@hsb|衡水北|IHP|hengshuibei|hsb|586@hsb|黄山北|NYH|huangshanbei|hsb|587@hsd|黄石东|OSN|huangshidong|hsd|588@hsg|和什托洛盖|VSR|heshituoluogai|hstlg|589@hsh|华山|HGY|huashan|hs|590@hsh|和硕|VUR|heshuo|hs|591@hsh|黑水|HOT|heishui|hs|592@hsh|衡水|HSP|hengshui|hs|593@hsh|黄石|HSN|huangshi|hs|594@hsh|黄山|HKH|huangshan|hs|595@hsn|花山南|KNN|huashannan|hsn|596@hss|黑山寺|HVP|heishansi|hss|597@hsw|海石湾|HSO|haishiwan|hsw|598@hsx|黄山西|HWU|huangshanxi|hsx|599@hsz|花山镇|HZA|huashanzhen|hsz|600@htd|黄土店|HKP|huangtudian|htd|601@htg|花土沟|HTO|huatugou|htg|602@hti|和田|VTR|hetian|ht|603@hto|会同|VTQ|huitong|ht|604@hwa|海湾|RWH|haiwan|hw|605@hxc|花溪大学城|HDE|huaxidaxuecheng|hxdxc|606@hxi|环县|KXJ|huanxian|hx|607@hxn|花溪南|HNE|huaxinan|hxn|608@hxx|花溪西|HUE|huaxixi|hxx|609@hya|惠阳|KNQ|huiyang|hy|610@hya|衡阳|HYQ|hengyang|hy|611@hya|海阳|KYK|haiyang|hy|612@hyd|河源东|HEA|heyuandong|hyd|613@hyd|衡阳东|HVQ|hengyangdong|hyd|614@hyi|华蓥|HUW|huaying|hy|615@hyi|鄠邑|KXY|huyi|hyi|616@hyu|汉源|WHW|hanyuan|hy|617@hyu|河源|VIQ|heyuan|hy|618@hyu|湟源|HNO|huangyuan|hy|619@hzb|惠州北|HUA|huizhoubei|hzb|620@hzd|菏泽东|KDK|hezedong|hzd|621@hze|菏泽|HIK|heze|hz|622@hzh|贺州|HXZ|hezhou|hz|623@hzh|华州|HXY|huazhou|hz|624@hzh|湖州|VZH|huzhou|hz|625@hzh|汉中|HOY|hanzhong|hz|626@hzh|惠州|HCQ|huizhou|hz|627@jan|吉安|VAG|jian|ja|628@jan|集安|JAL|jian|ja|629@jan|建安|JUL|jianan|ja|630@jax|吉安西|JIG|jianxi|jax|631@jbc|江边村|JBG|jiangbiancun|jbc|632@jcd|晋城东|JGF|jinchengdong|jcd|633@jch|金昌|JCJ|jinchang|jc|634@jch|晋城|JCF|jincheng|jc|635@jcj|金城江|JJZ|jinchengjiang|jcj|636@jdb|景德镇北|JDG|jingdezhenbei|jdzb|637@jde|建德|JDU|jiande|jd|638@jdo|鸡东|JOB|jidong|jd|639@jdz|景德镇|JCG|jingdezhen|jdz|640@jfe|嘉峰|JFF|jiafeng|jf|641@jgq|加格达奇|JGX|jiagedaqi|jgdq|642@jgs|井冈山|JGG|jinggangshan|jgs|643@jha|近海|JHD|jinhai|jh|644@jha|静海|JHP|jinghai|jh|645@jhe|蛟河|JHL|jiaohe|jh|646@jhn|精河南|JIR|jinghenan|jhn|647@jhn|金华南|RNH|jinhuanan|jhn|648@jhu|金华|JBH|jinhua|jh|649@jhx|蛟河西|JOL|jiaohexi|jhx|650@jhz|金华镇|JZE|jinhuazhen|jhz|651@jji|晋江|JJS|jinjiang|jj|652@jji|九江|JJG|jiujiang|jj|653@jlb|军粮城北|JMP|junliangchengbei|jlcb|654@jlh|贾鲁河|JLF|jialuhe|jlh|655@jli|吉林|JLL|jilin|jl|656@jmb|即墨北|JVK|jimobei|jmb|657@jme|江门|JOQ|jiangmen|jm|658@jme|荆门|JMN|jingmen|jm|659@jmg|剑门关|JME|jianmenguan|jmg|660@jms|佳木斯|JMB|jiamusi|jms|661@jna|井南|JNP|jingnan|jn|662@jnb|建宁县北|JCS|jianningxianbei|jnxb|663@jni|济宁|JIK|jining|jn|664@jni|江宁|JJH|jiangning|jn|665@jnn|集宁南|JAC|jiningnan|jnn|666@jnx|江宁西|OKH|jiangningxi|jnx|667@jpe|经棚|JPC|jingpeng|jp|668@jpi|建平|JAD|jianping|jp|669@jqn|酒泉南|JNJ|jiuquannan|jqn|670@jqu|酒泉|JQJ|jiuquan|jq|671@jsb|金山北|EGH|jinshanbei|jsb|672@jsd|吉首东|JDA|jishoudong|jsd|673@jsh|吉首|JIQ|jishou|js|674@jsh|江山|JUH|jiangshan|js|675@jsh|尖山|JPQ|jianshan|js|676@jsj|建三江|JIB|jiansanjiang|jsj|677@jsn|界首南|JKU|jieshounan|jsn|678@jta|九台|JTL|jiutai|jt|679@jtn|九台南|JNL|jiutainan|jtn|680@jts|镜铁山|JVJ|jingtieshan|jts|681@jxb|绩溪北|NRH|jixibei|jxb|682@jxd|介休东|JDV|jiexiudong|jxd|683@jxi|介休|JXV|jiexiu|jx|684@jxi|靖西|JMZ|jingxi|jx|685@jxi|嘉兴|JXH|jiaxing|jx|686@jxi|鸡西|JXB|jixi|jx|687@jxi|井陉|JJP|jingxing|jx|688@jxi|进贤|JUG|jinxian|jx|689@jxn|嘉兴南|EPH|jiaxingnan|jxn|690@jxn|进贤南|JXG|jinxiannan|jxn|691@jxx|绩溪县|JRH|jixixian|jxx|692@jxx|鸡西西|JAB|jixixi|jxx|693@jya|金阳|JYE|jinyang|jy|694@jye|巨野|JYK|juye|jy|695@jyg|嘉峪关|JGJ|jiayuguan|jyg|696@jyn|嘉峪关南|JBJ|jiayuguannan|jygn|697@jyn|金阳南|JNE|jinyangnan|jyn|698@jyn|简阳南|JOW|jianyangnan|jyn|699@jyo|江油|JFW|jiangyou|jy|700@jyt|金银潭|JTN|jinyintan|jyt|701@jyu|靖宇|JYL|jingyu|jy|702@jzb|锦州北|JFT|jinzhoubei|jzb|703@jzb|蓟州北|JKP|jizhoubei|jzb|704@jzh|荆州|JBN|jingzhou|jz|705@jzh|金寨|JZH|jinzhai|jz|706@jzh|锦州|JZD|jinzhou|jz|707@jzh|金州|JZT|jinzhou|jz|708@jzh|晋州|JXP|jinzhou|jz|709@jzh|蓟州|JIP|jizhou|jz|710@jzn|锦州南|JOD|jinzhounan|jzn|711@jzu|焦作|JOF|jiaozuo|jz|712@jzx|焦作西|JIF|jiaozuoxi|jzx|713@kan|开安|KAT|kaian|ka|714@kch|库车|KCR|kuche|kc|715@kde|库都尔|KDX|kuduer|kde|716@kel|库尔勒|KLR|kuerle|kel|717@kfb|开封北|KBF|kaifengbei|kfb|718@kfe|开封|KFF|kaifeng|kf|719@kfs|开福寺|FLQ|kaifusi|kfs|720@khu|开化|KHU|kaihua|kh|721@kjj|康金井|KJB|kangjinjing|kjj|722@kla|岢岚|KLV|kelan|kl|723@kli|凯里|KLW|kaili|kl|724@kln|凯里南|QKW|kailinan|kln|725@klu|库伦|KLD|kulun|kl|726@klu|开鲁|KLC|kailu|kl|727@kly|克拉玛依|KHR|kelamayi|klmy|728@ksh|喀什|KSR|kashi|ks|729@ksh|昆山|KSH|kunshan|ks|730@ksh|克山|KSB|keshan|ks|731@ksn|昆山南|KNH|kunshannan|ksn|732@ktu|奎屯|KTR|kuitun|kt|733@kya|开阳|KVW|kaiyang|ky|734@kya|昆阳|KAM|kunyang|ky|735@kyu|开原|KYT|kaiyuan|ky|736@kyx|开原西|KXT|kaiyuanxi|kyx|737@kzh|康庄|KZP|kangzhuang|kz|738@kzu|喀左|KZT|kazuo|kz|739@lad|隆安东|IDZ|longandong|lad|740@lan|六安|UAH|luan|la|741@lba|灵宝|LBF|lingbao|lb|742@lbb|来宾北|UCZ|laibinbei|lbb|743@lbx|灵宝西|LPF|lingbaoxi|lbx|744@lby|绿博园|LCF|lvboyuan|lby|745@lca|临沧|LXM|lincang|lc|746@lcb|隆昌北|NWW|longchangbei|lcb|747@lcd|乐昌东|ILQ|lechangdong|lcd|748@lcg|芦潮港|UCH|luchaogang|lcg|749@lch|陆川|LKZ|luchuan|lc|750@lch|龙川|LUQ|longchuan|lc|751@lch|利川|LCN|lichuan|lc|752@lch|临川|LCG|linchuan|lc|753@lch|隆昌|LCW|longchang|lc|754@lch|潞城|UTP|lucheng|lc|755@lch|聊城|UCK|liaocheng|lc|756@lch|陵城|LGK|lingcheng|lc|757@lcx|龙川西|LCA|longchuanxi|lcx|758@lcx|聊城西|VXK|liaochengxi|lcx|759@lcz|老城镇|ACQ|laochengzhen|lcz|760@lda|两当|LDY|liangdang|ld|761@lda|鹿道|LDL|ludao|ld|762@ldb|龙洞堡|FVW|longdongbao|ldb|763@ldi|娄底|LDQ|loudi|ld|764@ldn|娄底南|UOQ|loudinan|ldn|765@ldy|离堆公园|INW|liduigongyuan|ldgy|766@lfa|廊坊|LJP|langfang|lf|767@lfa|娄烦|USV|loufan|lf|768@lfe|陆丰|LLQ|lufeng|lf|769@lfe|临汾|LFV|linfen|lf|770@lfx|临汾西|LXV|linfenxi|lfx|771@lgu|拉古|LGB|lagu|lg|772@lgu|芦官|LAE|luguan|lg|773@lgu|麓谷|BNQ|lugu|lg|774@lgz|良各庄|LGP|lianggezhuang|lgz|775@lhe|临河|LHC|linhe|lh|776@lhe|柳河|LNL|liuhe|lh|777@lhe|漯河|LON|luohe|lh|778@lhe|六合|KLH|liuhe|lh|779@lhn|珞璜南|LNE|luohuangnan|lhn|780@lhu|隆回|LHA|longhui|lh|781@lhu|隆化|UHP|longhua|lh|782@lhu|绿化|LWJ|lvhua|lh|783@lhx|漯河西|LBN|luohexi|lhx|784@ljd|刘家店|UDT|liujiadian|ljd|785@lji|龙井|LJL|longjing|lj|786@lji|临江|LQL|linjiang|lj|787@lji|丽江|LHM|lijiang|lj|788@lji|龙嘉|UJL|longjia|lj|789@lji|庐江|UJH|lujiang|lj|790@lji|连江|LKS|lianjiang|lj|791@ljx|庐江西|LUU|lujiangxi|ljx|792@lka|兰考|LKF|lankao|lk|793@lkn|兰考南|LUF|lankaonan|lkn|794@lko|林口|LKB|linkou|lk|795@lks|龙口市|UKK|longkoushi|lks|796@lli|吕梁|LHV|lvliang|ll|797@lli|醴陵|LLG|liling|ll|798@lli|兰棱|LLB|lanling|ll|799@lli|拉林|LAB|lalin|ll|800@lln|柳林南|LKV|liulinnan|lln|801@lna|陇南|INJ|longnan|ln|802@lny|辽宁朝阳|VET|liaoningchaoyang|lncy|803@lpi|梁平|UQW|liangping|lp|804@lpi|滦平|UPP|luanping|lp|805@lpi|罗平|LPM|luoping|lp|806@lpn|梁平南|LPE|liangpingnan|lpn|807@lpn|临平南|EVH|linpingnan|lpn|808@lps|六盘水|UMW|liupanshui|lps|809@lqi|灵丘|LVV|lingqiu|lq|810@lqi|龙桥|LQU|longqiao|lq|811@lsb|龙山北|LBA|longshanbei|lsb|812@lsd|灵石东|UDV|lingshidong|lsd|813@lsh|乐山|IVW|leshan|ls|814@lsh|陵水|LIQ|lingshui|ls|815@lsh|丽水|USH|lishui|ls|816@lsh|旅顺|LST|lvshun|ls|817@lsh|庐山|LSG|lushan|ls|818@lsh|溧水|LDH|lishui|ls|819@lsx|岚山西|UWK|lanshanxi|lsx|820@lta|黎塘|LTZ|litang|lt|821@lta|芦台|LTP|lutai|lt|822@lto|临潼|LIY|lintong|lt|823@lto|乐同|LEA|letong|lt|824@lwb|灵武北|UWJ|lingwubei|lwb|825@lwd|莱芜东|LWK|laiwudong|lwd|826@lwj|洛湾三江|KRW|luowansanjiang|lwsj|827@lxi|泸县|LXE|luxian|lx|828@lxi|澧县|LEQ|lixian|lx|829@lxi|陇西|LXJ|longxi|lx|830@lxi|陇县|LXY|longxian|lx|831@lxi|临西|UEP|linxi|lx|832@lxi|莱西|LBK|laixi|lx|833@lxi|兰溪|LWH|lanxi|lx|834@lxi|良乡|LAP|liangxiang|lx|835@lya|略阳|LYY|lueyang|ly|836@lya|辽阳|LYT|liaoyang|ly|837@lya|耒阳|LYQ|leiyang|ly|838@lya|溧阳|LEH|liyang|ly|839@lya|龙岩|LYS|longyan|ly|840@lya|洛阳|LYF|luoyang|ly|841@lyb|临沂北|UMK|linyibei|lyb|842@lyd|连云港东|UKH|lianyungangdong|lygd|843@lyd|洛阳东|LDF|luoyangdong|lyd|844@lyg|连云港|UIH|lianyungang|lyg|845@lyi|临沂|LVK|linyi|ly|846@lym|洛阳龙门|LLF|luoyanglongmen|lylm|847@lyn|柳园南|LNR|liuyuannan|lyn|848@lyu|凌源|LYD|lingyuan|ly|849@lyu|辽源|LYL|liaoyuan|ly|850@lyu|柳园|DHR|liuyuan|ly|851@lyu|涟源|LAQ|lianyuan|ly|852@lyu|涞源|LYP|laiyuan|ly|853@lyu|罗源|LVS|luoyuan|ly|854@lyx|耒阳西|LPQ|leiyangxi|lyx|855@lzh|泸州|LUE|luzhou|lz|856@lzh|林芝|LZO|linzhi|lz|857@lzh|柳州|LZZ|liuzhou|lz|858@lzh|六枝|LIW|liuzhi|lz|859@lzh|阆中|LZE|langzhong|lz|860@lzh|龙镇|LZA|longzhen|lz|861@lzh|立志|LZX|lizhi|lz|862@lzh|辽中|LZD|liaozhong|lz|863@mad|马鞍山东|OMH|maanshandong|masd|864@mcb|麻城北|MBN|machengbei|mcb|865@mch|麻城|MCN|macheng|mc|866@mcn|渑池南|MNF|mianchinan|mcn|867@mdh|免渡河|MDX|mianduhe|mdh|868@mdi|磨丁|VBM|moding|md|869@mdj|牡丹江|MDB|mudanjiang|mdj|870@meg|莫尔道嘎|MRX|moerdaoga|medg|871@mes|帽儿山|MRB|maoershan|mes|872@mex|帽儿山西|MUB|mershanxi|mesx|873@mgu|明光|MGH|mingguang|mg|874@mgu|满归|MHX|mangui|mg|875@mgu|孟关|MGE|mengguan|mg|876@mha|磨憨|MHM|mohan|mh|877@mhe|漠河|MVX|mohe|mh|878@mhk|梅河口|MHL|meihekou|mhk|879@mhn|民和南|MNO|minhenan|mhn|880@mjg|孟家岗|MGB|mengjiagang|mjg|881@mla|米兰|MIR|milan|ml|882@mla|勐腊|MWM|mengla|ml|883@mla|美兰|MHQ|meilan|ml|884@mle|弥勒|MLM|mile|ml|885@mli|穆棱|MLB|muling|ml|886@mmi|茂名|MDQ|maoming|mm|887@mmx|茂名西|MMZ|maomingxi|mmx|888@mni|冕宁|UGW|mianning|mn|889@mns|玛纳斯|MSR|manasi|mns|890@mqb|闽清北|MBS|minqingbei|mqb|891@mqu|民权|MQF|minquan|mq|892@msd|眉山东|IUW|meishandong|msd|893@msh|名山|MSE|mingshan|ms|894@msh|密山|MSB|mishan|ms|895@msh|庙山|MSN|miaoshan|ms|896@msj|马三家|MJT|masanjia|msj|897@msz|米沙子|MST|mishazi|msz|898@mwe|麻尾|VAW|mawei|mw|899@mxi|岷县|MXJ|minxian|mx|900@mxi|勉县|MVY|mianxian|mx|901@mya|绵阳|MYW|mianyang|my|902@myb|密云北|MUP|miyunbei|myb|903@myu|孟塬|HSY|mengyuan|my|904@myu|墨玉|MUR|moyu|my|905@myu|门源|MYO|menyuan|my|906@myu|暮云|KIQ|muyun|my|907@myu|密云|MYP|miyun|my|908@mzh|梅州|MOQ|meizhou|mz|909@mzh|孟庄|MZF|mengzhuang|mz|910@mzi|蒙自|MZM|mengzi|mz|911@mzl|满洲里|MLX|manzhouli|mzl|912@mzx|梅州西|MXA|meizhouxi|mzx|913@nan|宁安|NAB|ningan|na|914@nan|农安|NAT|nongan|na|915@nbd|宁波东|NVH|ningbodong|nbd|916@nbo|宁波|NGH|ningbo|nb|917@nbu|南部|NBE|nanbu|nb|918@nca|南曹|NEF|nancao|nc|919@ncb|南充北|NCE|nanchongbei|ncb|920@nch|南充|NCW|nanchong|nc|921@nch|南城|NDG|nancheng|nc|922@nch|南岔|NCB|nancha|nc|923@nda|南丹|NDZ|nandan|nd|924@nde|宁德|NES|ningde|nd|925@ndm|南大庙|NMP|nandamiao|ndm|926@ndn|宁东南|NDJ|ningdongnan|ndn|927@ndo|宁东|NOJ|ningdong|nd|928@nfe|南芬|NFT|nanfen|nf|929@nfe|南丰|NFG|nanfeng|nf|930@nha|宁海|NHH|ninghai|nh|931@nhd|南湖东|NDN|nanhudong|nhd|932@nhe|讷河|NHX|nehe|nh|933@nhl|牛河梁|LKT|niuheliang|nhl|934@njb|内江北|NKW|neijiangbei|njb|935@nji|内江|NJW|neijiang|nj|936@nji|嫩江|NGX|nenjiang|nj|937@nji|南江|FIW|nanjiang|nj|938@nji|牛家|NJB|niujia|nj|939@nko|南口|NKP|nankou|nk|940@nls|牛栏山|NLP|niulanshan|nls|941@nlx|宁陵县|NLF|ninglingxian|nlx|942@nma|奈曼|NMD|naiman|nm|943@nmu|尼木|NMO|nimu|nm|944@nps|南平市|NOS|nanpingshi|nps|945@nqn|宁强南|NOY|ningqiangnan|nqn|946@nqu|那曲|NQO|naqu|nq|947@nto|南通|NUH|nantong|nt|948@ntx|南通西|NXU|nantongxi|ntx|949@nwu|宁武|NWV|ningwu|nw|950@nxb|南翔北|NEH|nanxiangbei|nxb|951@nxi|南雄|NCQ|nanxiong|nx|952@nxi|宁乡|NXQ|ningxiang|nx|953@nya|南阳|NFF|nanyang|ny|954@nyd|南阳东|NOF|nanyangdong|nyd|955@nyo|纳雍|NYE|nayong|ny|956@nyu|南峪|NUP|nanyu|ny|957@nyz|南阳寨|NYF|nanyangzhai|nyz|958@nzs|碾子山|NZX|nianzishan|nzs|959@pan|普安|PAN|puan|pa|960@pcd|蒲城东|PEY|puchengdong|pcd|961@pch|平昌|PCE|pingchang|pc|962@pds|平顶山|PEN|pingdingshan|pds|963@pdu|平度|PNK|pingdu|pd|964@pdx|平度西|PAK|pingduxi|pdx|965@pdx|平顶山西|PDF|pingdingshanxi|pdsx|966@per|普洱|PEM|puer|pe|967@pfa|平房|PFB|pingfang|pf|968@pjb|盘锦北|PBD|panjinbei|pjb|969@pji|盘锦|PVD|panjin|pj|970@pji|蒲江|PJE|pujiang|pj|971@plc|盘龙城|PNN|panlongcheng|plc|972@pld|普兰店|PLT|pulandian|pld|973@pli|平凉|PIJ|pingliang|pl|974@pln|平凉南|POJ|pingliangnan|pln|975@pls|蓬莱市|POK|penglaishi|pls|976@pni|普宁|PEQ|puning|pn|977@pqb|平泉北|PBP|pingquanbei|pqb|978@pqu|平泉|PQP|pingquan|pq|979@psh|皮山|PSR|pishan|ps|980@psh|磐石|PSL|panshi|ps|981@psh|坪石|PSQ|pingshi|ps|982@psh|平山|PSB|pingshan|ps|983@pta|平潭|PIS|pingtan|pt|984@pti|莆田|PTS|putian|pt|985@pxb|萍乡北|PBG|pingxiangbei|pxb|986@pxi|凭祥|PXZ|pingxiang|px|987@pxi|萍乡|PXG|pingxiang|px|988@pxi|普雄|POW|puxiong|px|989@pxi|郫县|PWW|pixian|px|990@pxx|郫县西|PCW|pixianxi|pxx|991@pya|濮阳|PYF|puyang|py|992@pya|平阳|ARH|pingyang|py|993@pyc|平遥古城|PDV|pingyaogucheng|pygc|994@pyd|濮阳东|PUF|puyangdong|pyd|995@pyd|平原东|PUK|pingyuandong|pyd|996@pze|彭泽|PZG|pengze|pz|997@pzh|普者黑|PZM|puzhehei|pzh|998@pzh|盘州|PAE|panzhou|pz|999@pzh|攀枝花|PRW|panzhihua|pzh|1000@pzh|彭州|PMW|pengzhou|pz|1001@pzn|攀枝花南|PNE|panzhihuanan|pzhn|1002@pzn|彭州南|PKW|pengzhounan|pzn|1003@qan|庆安|QAB|qingan|qa|1004@qbd|青白江东|QFW|qingbaijiangdong|qbjd|1005@qch|清城|QCA|qingcheng|qc|1006@qch|蕲春|QRN|qichun|qc|1007@qch|青川|QCE|qingchuan|qc|1008@qcs|青城山|QSW|qingchengshan|qcs|1009@qda|青岛|QDK|qingdao|qd|1010@qdb|青岛北|QHK|qingdaobei|qdb|1011@qdh|千岛湖|QDU|qiandaohu|qdh|1012@qdo|启东|QOU|qidong|qd|1013@qdx|青岛西|QUK|qingdaoxi|qdx|1014@qfd|曲阜东|QAK|qufudong|qfd|1015@qfe|前锋|QFB|qianfeng|qf|1016@qfu|曲阜|QFK|qufu|qf|1017@qha|琼海|QYQ|qionghai|qh|1018@qhc|清河城|QYP|qinghecheng|qhc|1019@qhd|秦皇岛|QTP|qinhuangdao|qhd|1020@qhe|清河|QIP|qinghe|qh|1021@qhy|清华园|QHP|qinghuayuan|qhy|1022@qjb|曲靖北|QBM|qujingbei|qjb|1023@qjd|綦江东|QDE|qijiangdong|qjd|1024@qji|黔江|QNW|qianjiang|qj|1025@qji|曲靖|QJM|qujing|qj|1026@qjz|前进镇|QEB|qianjinzhen|qjz|1027@qla|邛崃|QLE|qionglai|ql|1028@qli|清流|QLS|qingliu|ql|1029@qqe|齐齐哈尔|QHX|qiqihaer|qqhe|1030@qqn|齐齐哈尔南|QNB|qiqihaernan|qqhen|1031@qsh|潜山|QSU|qianshan|qs|1032@qsh|庆盛|QSQ|qingsheng|qs|1033@qsx|曲水县|QSO|qushuixian|qsx|1034@qth|七台河|QTB|qitaihe|qth|1035@qtx|青铜峡|QTJ|qingtongxia|qtx|1036@qtx|七台河西|QXB|qitaihexi|qthx|1037@qxi|渠县|QRW|quxian|qx|1038@qxi|沁县|QVV|qinxian|qx|1039@qxu|清徐|QUV|qingxu|qx|1040@qya|庆阳|QOJ|qingyang|qy|1041@qyu|清远|QBQ|qingyuan|qy|1042@qyu|庆元|QYU|qingyuan|qy|1043@qzd|钦州东|QDZ|qinzhoudong|qzd|1044@qzd|乔庄东|QEP|qiaozhuangdong|qzd|1045@qzh|衢州|QEH|quzhou|qz|1046@qzh|泉州|QYS|quanzhou|qz|1047@qzn|全州南|QNZ|quanzhounan|qzn|1048@qzx|清镇西|QUE|qingzhenxi|qzx|1049@ran|融安|RAZ|rongan|ra|1050@ran|瑞安|RAH|ruian|ra|1051@rcb|荣昌北|RQW|rongchangbei|rcb|1052@rch|荣成|RCK|rongcheng|rc|1053@rdo|如东|RIH|rudong|rd|1054@rjg|汝箕沟|RQJ|rujigou|rjg|1055@rji|瑞金|RJG|ruijin|rj|1056@rkz|日喀则|RKO|rikaze|rkz|1057@rpi|饶平|RVQ|raoping|rp|1058@rqi|若羌|RQR|ruoqiang|rq|1059@rsn|乳山南|REK|rushannan|rsn|1060@rzh|日照|RZK|rizhao|rz|1061@rzx|日照西|KZK|rizhaoxi|rzx|1062@sbe|肃北|SBJ|subei|sb|1063@scb|双城北|SBB|shuangchengbei|scb|1064@scd|舒城东|SDU|shuchengdong|scd|1065@sch|莎车|SCR|shache|sc|1066@sch|沙城|SCP|shacheng|sc|1067@scl|宋城路|SFF|songchenglu|scl|1068@scp|双城堡|SCB|shuangchengpu|scp|1069@sdo|邵东|FIQ|shaodong|sd|1070@sdu|十渡|SEP|shidu|sd|1071@sfb|双峰北|NFQ|shuangfengbei|sfb|1072@sfe|双丰|OFB|shuangfeng|sf|1073@sfh|绥芬河|SFB|suifenhe|sfh|1074@sgd|韶关东|SGQ|shaoguandong|sgd|1075@sgu|韶关|SNQ|shaoguan|sg|1076@she|沙河|SHP|shahe|sh|1077@she|商河|SOK|shanghe|sh|1078@shg|山海关|SHD|shanhaiguan|shg|1079@shs|沙河市|VOP|shaheshi|shs|1080@sht|山河屯|SHL|shanhetun|sht|1081@shu|绥化|SHB|suihua|sh|1082@shz|石河子|SZR|shihezi|shz|1083@sjd|三家店|ODP|sanjiadian|sjd|1084@sjf|三间房|SFX|sanjianfang|sjf|1085@sjh|松江河|SJL|songjianghe|sjh|1086@sjh|水家湖|SQH|shuijiahu|sjh|1087@sji|松江|SAH|songjiang|sj|1088@sji|孙家|SUB|sunjia|sj|1089@sji|沈家|OJB|shenjia|sj|1090@sjn|三江南|SWZ|sanjiangnan|sjn|1091@sjn|石景山南|SRP|shijingshannan|sjsn|1092@sjn|松江南|IMH|songjiangnan|sjn|1093@sjt|苏家屯|SXT|sujiatun|sjt|1094@sjx|三江县|SOZ|sanjiangxian|sjx|1095@sjz|深井子|SWT|shenjingzi|sjz|1096@sks|四棵树|SIR|sikeshu|sks|1097@sla|舒兰|SLL|shulan|sl|1098@slc|双流机场|IPW|shuangliujichang|sljc|1099@slh|双龙湖|OHB|shuanglonghu|slh|1100@sli|绥棱|SIB|suiling|sl|1101@sli|狮岭|SLA|shiling|sl|1102@sli|石林|SLM|shilin|sl|1103@sln|双龙南|SNE|shuanglongnan|sln|1104@slu|商洛|OLY|shangluo|sl|1105@slx|双流西|IQW|shuangliuxi|slx|1106@slx|石林西|SYM|shilinxi|slx|1107@slz|胜利镇|OLB|shenglizhen|slz|1108@smb|石门县北|VFQ|shimenxianbei|smxb|1109@smb|三明北|SHS|sanmingbei|smb|1110@smi|三明|SVS|sanming|sm|1111@smi|嵩明|SVM|songming|sm|1112@sml|树木岭|FMQ|shumuling|sml|1113@smn|神木南|OMY|shenmunan|smn|1114@smn|三门峡南|SCF|sanmenxianan|smxn|1115@smu|神木|HMY|shenmu|sm|1116@smx|三门县|OQH|sanmenxian|smx|1117@smx|三门峡西|SXF|sanmenxiaxi|smxx|1118@smx|三门峡|SMF|sanmenxia|smx|1119@sna|商南|ONY|shangnan|sn|1120@sni|遂宁|NIW|suining|sn|1121@sni|睢宁|SNU|suining|sn|1122@son|宋|SOB|song|son|1123@spa|石牌|SPQ|shipai|sp|1124@spb|沙坪坝|CYW|shapingba|spb|1125@spd|四平东|PPT|sipingdong|spd|1126@spd|山坡东|SBN|shanpodong|spd|1127@spi|四平|SPT|siping|sp|1128@sqb|沈丘北|SKF|shenqiubei|sqb|1129@sqi|宿迁|SQU|suqian|sq|1130@sqi|商丘|SQF|shangqiu|sq|1131@sqx|石泉县|SXY|shiquanxian|sqx|1132@sqz|石桥子|SQT|shiqiaozi|sqz|1133@sra|上饶|SRG|shangrao|sr|1134@src|石人城|SRB|shirencheng|src|1135@ssb|鄯善北|SMR|shanshanbei|ssb|1136@ssd|宿松东|SSU|susongdong|ssd|1137@ssd|蜀山东|HTH|shushandong|ssd|1138@ssh|韶山|SSQ|shaoshan|ss|1139@ssh|神树|SWB|shenshu|ss|1140@ssn|韶山南|INQ|shaoshannan|ssn|1141@sso|宿松|OAH|susong|ss|1142@ssu|三穗|QHW|sansui|ss|1143@sta|松桃|MZQ|songtao|st|1144@stn|汕头南|SNA|shantounan|stn|1145@sto|汕头|OTQ|shantou|st|1146@swe|汕尾|OGQ|shanwei|sw|1147@swu|邵武|SWS|shaowu|sw|1148@sxb|绍兴北|SLH|shaoxingbei|sxb|1149@sxd|绍兴东|SSH|shaoxingdong|sxd|1150@sxi|松溪|SIS|songxi|sx|1151@sxi|涉县|OEP|shexian|sx|1152@sxi|莘县|SNK|shenxian|sx|1153@sxi|绍兴|SOH|shaoxing|sx|1154@sya|三亚|SEQ|sanya|sy|1155@sya|邵阳|SYQ|shaoyang|sy|1156@sya|十堰|SNN|shiyan|sy|1157@sya|双阳|OYT|shuangyang|sy|1158@syd|十堰东|OUN|shiyandong|syd|1159@syi|顺义|SOP|shunyi|sy|1160@syq|三元区|SMS|sanyuanqu|syq|1161@sys|双鸭山|SSB|shuangyashan|sys|1162@syu|松原|VYT|songyuan|sy|1163@syx|双鸭山西|OXB|shuangyashanxi|sysx|1164@syx|顺义西|IKP|shunyixi|syx|1165@szb|深圳北|IOQ|shenzhenbei|szb|1166@szb|苏州北|OHH|suzhoubei|szb|1167@szc|深圳机场|SCA|shenzhenjichang|szjc|1168@szc|嵊州新昌|SKU|shengzhouxinchang|szxc|1169@szd|深圳东|BJQ|shenzhendong|szd|1170@szd|宿州东|SRH|suzhoudong|szd|1171@szh|绥中|SZD|suizhong|sz|1172@szh|朔州|SUV|shuozhou|sz|1173@szh|深圳|SZQ|shenzhen|sz|1174@szh|随州|SZN|suizhou|sz|1175@szh|宿州|OXH|suzhou|sz|1176@szh|苏州|SZH|suzhou|sz|1177@szh|尚志|SZB|shangzhi|sz|1178@szn|随州南|ONN|suizhounan|szn|1179@szn|尚志南|OZB|shangzhinan|szn|1180@szs|深圳坪山|IFQ|shenzhenpingshan|szps|1181@szs|石嘴山|QQJ|shizuishan|szs|1182@szx|石柱县|OSW|shizhuxian|szx|1183@szx|深圳西|OSQ|shenzhenxi|szx|1184@tan|泰安|TMK|taian|ta|1185@tbe|通北|TBB|tongbei|tb|1186@tcd|铜川东|TCY|tongchuandong|tcd|1187@tch|塔城|TZR|tacheng|tc|1188@tch|汤池|TCX|tangchi|tc|1189@tda|通道|TRQ|tongdao|td|1190@tdd|土地堂东|TTN|tuditangdong|tdtd|1191@teq|塔尔气|TVX|taerqi|teq|1192@tgu|潼关|TGY|tongguan|tg|1193@tgu|太谷|TGV|taigu|tg|1194@tgu|塘沽|TGP|tanggu|tg|1195@tha|吐哈|THR|tuha|th|1196@tha|通海|TAM|tonghai|th|1197@tha|塔哈|THX|taha|th|1198@thc|天河机场|TJN|tianhejichang|thjc|1199@the|泰和|THG|taihe|th|1200@the|塔河|TXX|tahe|th|1201@thj|天河街|TEN|tianhejie|thj|1202@thn|太湖南|TAU|taihunan|thn|1203@tht|天河潭|TTE|tianhetan|tht|1204@thu|通化|THL|tonghua|th|1205@thu|太湖|TKH|taihu|th|1206@tji|同江|TJB|tongjiang|tj|1207@tjt|陶家屯|TOT|taojiatun|tjt|1208@tkd|托克托东|TVC|tuoketuodong|tktd|1209@tla|泰来|TLX|tailai|tl|1210@tlb|吐鲁番北|TAR|tulufanbei|tlfb|1211@tlf|吐鲁番|TFR|tulufan|tlf|1212@tli|通辽|TLD|tongliao|tl|1213@tli|铜陵|TJH|tongling|tl|1214@tli|铁岭|TLT|tieling|tl|1215@tli|铁力|TLB|tieli|tl|1216@tlu|桐庐|TLU|tonglu|tl|1217@tlx|铁岭西|PXT|tielingxi|tlx|1218@tlz|陶赖昭|TPT|taolaizhao|tlz|1219@tmb|图们北|QSL|tumenbei|tmb|1220@tme|图们|TML|tumen|tm|1221@tmg|头门港|TMU|toumengang|tmg|1222@tmk|图木舒克|TMR|tumushuke|tmsk|1223@tmn|天门南|TNN|tianmennan|tmn|1224@tna|潼南|TVW|tongnan|tn|1225@tni|泰宁|TNS|taining|tn|1226@tre|铜仁|RDQ|tongren|tr|1227@trn|铜仁南|TNW|tongrennan|trn|1228@tsb|唐山北|FUP|tangshanbei|tsb|1229@tsf|田师府|TFT|tianshifu|tsf|1230@tsh|泰山|TAK|taishan|ts|1231@tsh|唐山|TSP|tangshan|ts|1232@tsh|天水|TSJ|tianshui|ts|1233@tsn|天水南|TIJ|tianshuinan|tsn|1234@twh|汤旺河|THB|tangwanghe|twh|1235@txh|汤逊湖|THN|tangxunhu|txh|1236@txi|土溪|TSW|tuxi|tx|1237@typ|通远堡|TYT|tongyuanpu|typ|1238@tys|太阳升|TQT|taiyangsheng|tys|1239@tyu|通榆|KTT|tongyu|ty|1240@tzb|桐梓北|TBE|tongzibei|tzb|1241@tzc|太子城|IZP|taizicheng|tzc|1242@tzd|滕州东|TEK|tengzhoudong|tzd|1243@tzd|桐梓东|TDE|tongzidong|tzd|1244@tzh|台州|TEU|taizhou|tz|1245@tzh|泰州|UTH|taizhou|tz|1246@tzh|通州|TOP|tongzhou|tz|1247@tzx|台州西|TZH|taizhouxi|tzx|1248@tzx|通州西|TAP|tongzhouxi|tzx|1249@wch|文昌|WEQ|wenchang|wc|1250@wch|武昌|WCN|wuchang|wc|1251@wch|五常|WCB|wuchang|wc|1252@wds|武当山|WRN|wudangshan|wds|1253@wfa|潍坊|WFK|weifang|wf|1254@wfd|瓦房店|WDT|wafangdian|wfd|1255@wft|万发屯|WFB|wanfatun|wft|1256@wfx|瓦房店西|WXT|wafangdianxi|wfdx|1257@wga|王岗|WGB|wanggang|wg|1258@wgo|武功|WGY|wugong|wg|1259@wha|威海|WKK|weihai|wh|1260@wha|乌海|WVC|wuhai|wh|1261@whe|苇河|WHB|weihe|wh|1262@whu|芜湖|WHH|wuhu|wh|1263@whx|乌海西|WXC|wuhaixi|whx|1264@whx|苇河西|WIB|weihexi|whx|1265@wji|温江|WJE|wenjiang|wj|1266@wji|五家|WUB|wujia|wj|1267@wks|五棵树|WKT|wukeshu|wks|1268@wlb|乌兰察布|WPC|wulanchabu|wlcb|1269@wle|万乐|WEB|wanle|wl|1270@wli|温岭|VHH|wenling|wl|1271@wln|乌龙泉南|WFN|wulongquannan|wlqn|1272@wlo|武隆|WLW|wulong|wl|1273@wlq|乌拉特前旗|WQC|wulateqianqi|wltqq|1274@wlt|乌兰浩特|WWT|wulanhaote|wlht|1275@wna|渭南|WNY|weinan|wn|1276@wnb|渭南北|WBY|weinanbei|wnb|1277@wns|五女山|WET|wunvshan|wns|1278@wnx|渭南西|WXY|weinanxi|wnx|1279@wpi|沃皮|WPT|wopi|wp|1280@wqi|汪清|WQL|wangqing|wq|1281@wqi|武清|WWP|wuqing|wq|1282@wsh|武胜|WSE|wusheng|ws|1283@wsh|威舍|WSM|weishe|ws|1284@wsq|乌审旗|WGC|wushenqi|wsq|1285@wsu|乌苏|WSR|wusu|ws|1286@wwe|武威|WUJ|wuwei|ww|1287@wwn|武威南|WWJ|wuweinan|wwn|1288@wwn|无为南|WWU|wuweinan|wwn|1289@wxb|武穴北|WJN|wuxuebei|wxb|1290@wxd|无锡东|WGH|wuxidong|wxd|1291@wxi|无锡|WXH|wuxi|wx|1292@wxi|乌西|WXR|wuxi|wx|1293@wxu|武穴|WXN|wuxue|wx|1294@wxu|吴圩|WYZ|wuxu|wx|1295@wxx|闻喜西|WOV|wenxixi|wxx|1296@wyb|武夷山北|WBS|wuyishanbei|wysb|1297@wyi|五营|WWB|wuying|wy|1298@wyl|乌伊岭|WPB|wuyiling|wyl|1299@wys|武夷山|WAS|wuyishan|wys|1300@wyu|渭源|WEJ|weiyuan|wy|1301@wyu|婺源|WYG|wuyuan|wy|1302@wyu|万源|WYY|wanyuan|wy|1303@wzb|万州北|WZE|wanzhoubei|wzb|1304@wzh|梧州|WZZ|wuzhou|wz|1305@wzh|万州|WYW|wanzhou|wz|1306@wzh|吴忠|WVJ|wuzhong|wz|1307@wzh|温州|RZH|wenzhou|wz|1308@wzn|梧州南|WBZ|wuzhounan|wzn|1309@wzn|温州南|VRH|wenzhounan|wzn|1310@xab|兴安北|XDZ|xinganbei|xab|1311@xan|雄安|IQP|xiongan|xa|1312@xax|西安西|EGY|xianxi|xax|1313@xcd|许昌东|XVF|xuchangdong|xcd|1314@xch|兴城|XCD|xingcheng|xc|1315@xch|宣城|ECH|xuancheng|xc|1316@xch|西昌|ECW|xichang|xc|1317@xch|许昌|XCF|xuchang|xc|1318@xcx|西昌西|XCE|xichangxi|xcx|1319@xdd|新都东|EWW|xindudong|xdd|1320@xfa|香坊|XFB|xiangfang|xf|1321@xfe|咸丰|XFA|xianfeng|xf|1322@xfe|西丰|XFT|xifeng|xf|1323@xfe|息烽|XFW|xifeng|xf|1324@xfe|先锋|NQQ|xianfeng|xf|1325@xfl|湘府路|FVQ|xiangfulu|xfl|1326@xga|轩岗|XGV|xuangang|xg|1327@xgb|孝感北|XJN|xiaoganbei|xgb|1328@xgd|孝感东|GDN|xiaogandong|xgd|1329@xgl|香港西九龙|XJA|hkwestkowloon|xgxjl|1330@xgu|兴国|EUG|xingguo|xg|1331@xgu|西固|XIJ|xigu|xg|1332@xgy|夏官营|XGJ|xiaguanying|xgy|1333@xha|宣汉|XHY|xuanhan|xh|1334@xhb|兴和北|EBC|xinghebei|xhb|1335@xhb|下花园北|OKP|xiahuayuanbei|xhyb|1336@xhn|新化南|EJQ|xinhuanan|xhn|1337@xhu|新会|EFQ|xinhui|xh|1338@xhu|新晃|XLQ|xinhuang|xh|1339@xhx|兴和西|XEC|xinghexi|xhx|1340@xhx|新晃西|EWQ|xinhuangxi|xhx|1341@xji|新津|IRW|xinjin|xj|1342@xji|辛集|ENP|xinji|xj|1343@xji|徐家|XJB|xujia|xj|1344@xjk|小金口|NKQ|xiaojinkou|xjk|1345@xjn|新津南|ITW|xinjinnan|xjn|1346@xjn|辛集南|IJP|xinjinan|xjn|1347@xjz|谢家镇|XMT|xiejiazhen|xjz|1348@xla|西来|XLE|xilai|xl|1349@xld|兴隆店|XDD|xinglongdian|xld|1350@xle|新乐|ELP|xinle|xl|1351@xli|仙林|XPH|xianlin|xl|1352@xli|小岭|XLB|xiaoling|xl|1353@xlt|锡林浩特|XTC|xilinhaote|xlht|1354@xlx|兴隆县|EXP|xinglongxian|xlx|1355@xlz|新立镇|XGT|xinlizhen|xlz|1356@xlz|兴隆镇|XZB|xinglongzhen|xlz|1357@xmb|厦门北|XKS|xiamenbei|xmb|1358@xmb|新民北|XOT|xinminbei|xmb|1359@xme|厦门|XMS|xiamen|xm|1360@xmi|新民|XMD|xinmin|xm|1361@xmq|厦门高崎|XBS|xiamengaoqi|xmgq|1362@xnn|咸宁南|UNN|xianningnan|xnn|1363@xpd|犀浦东|XAW|xipudong|xpd|1364@xpn|溆浦南|EMQ|xupunan|xpn|1365@xpu|霞浦|XOS|xiapu|xp|1366@xpu|溆浦|EPQ|xupu|xp|1367@xpu|犀浦|XIW|xipu|xp|1368@xsh|秀山|ETW|xiushan|xs|1369@xsh|小市|XST|xiaoshi|xs|1370@xsh|兴山|EMN|xingshan|xs|1371@xsn|西双版纳|ENM|xishuangbanna|xsbn|1372@xsp|新松浦|XOB|xinsongpu|xsp|1373@xta|仙桃|VTN|xiantao|xt|1374@xta|湘潭|XTQ|xiangtan|xt|1375@xta|向塘|XTG|xiangtang|xt|1376@xtd|邢台东|EDP|xingtaidong|xtd|1377@xtn|新塘南|NUQ|xintangnan|xtn|1378@xwe|兴文|XNE|xingwen|xw|1379@xwe|宣威|XWM|xuanwei|xw|1380@xwx|修文县|XWE|xiuwenxian|xwx|1381@xxb|萧县北|QSH|xiaoxianbei|xxb|1382@xxb|新香坊北|RHB|xinxiangfangbei|xxfb|1383@xxd|新乡东|EGF|xinxiangdong|xxd|1384@xxi|孝西|XOV|xiaoxi|xx|1385@xxi|西乡|XQY|xixiang|xx|1386@xxi|西峡|XIF|xixia|xx|1387@xxi|新乡|XXF|xinxiang|xx|1388@xxj|小新街|XXM|xiaoxinjie|xxj|1389@xya|信阳|XUN|xinyang|xy|1390@xya|旬阳|XUY|xunyang|xy|1391@xya|咸阳|XYY|xianyang|xy|1392@xya|岫岩|XXT|xiuyan|xy|1393@xya|襄阳|XFN|xiangyang|xy|1394@xyb|叙永北|XEE|xuyongbei|xyb|1395@xyb|新余北|XBG|xinyubei|xyb|1396@xyc|熊岳城|XYT|xiongyuecheng|xyc|1397@xyd|信阳东|OYN|xinyangdong|xyd|1398@xyd|襄阳东|EKN|xiangyangdong|xyd|1399@xyi|兴义|XRZ|xingyi|xy|1400@xyi|信宜|EEQ|xinyi|xy|1401@xyi|秀英|XYA|xiuying|xy|1402@xyu|祥云|XQM|xiangyun|xy|1403@xyu|新余|XUG|xinyu|xy|1404@xyx|咸阳西|XOY|xianyangxi|xyx|1405@xzc|新郑机场|EZF|xinzhengjichang|xzjc|1406@xzd|徐州东|UUH|xuzhoudong|xzd|1407@xzh|忻州|XXV|xinzhou|xz|1408@xzh|新肇|XZT|xinzhao|xz|1409@xzh|襄州|XWN|xiangzhou|xz|1410@xzh|徐州|XCH|xuzhou|xz|1411@xzl|香樟路|FNQ|xiangzhanglu|xzl|1412@xzx|忻州西|IXV|xinzhouxi|xzx|1413@yan|雅安|YAE|yaan|ya|1414@yan|延安|YWY|yanan|ya|1415@yan|永安南|YQS|yongannan|yan|1416@yan|依安|YAX|yian|ya|1417@ybl|迎宾路|YFW|yingbinlu|ybl|1418@ybl|亚布力|YBB|yabuli|ybl|1419@ybn|亚布力南|YWB|yabulinan|ybln|1420@ybs|叶柏寿|YBD|yebaishou|ybs|1421@ybx|宜宾西|YXE|yibinxi|ybx|1422@ybx|亚布力西|YSB|yabulixi|yblx|1423@ycb|运城北|ABV|yunchengbei|ycb|1424@ycb|盐城北|AEH|yanchengbei|ycb|1425@ycd|永川东|WMW|yongchuandong|ycd|1426@ycd|宜昌东|HAN|yichangdong|ycd|1427@ych|岳池|AWW|yuechi|yc|1428@ych|叶城|YER|yecheng|yc|1429@ych|阳春|YQQ|yangchun|yc|1430@ych|宜春|YEG|yichun|yc|1431@ych|运城|YNV|yuncheng|yc|1432@ych|宜昌|YCN|yichang|yc|1433@ych|盐城|AFH|yancheng|yc|1434@ych|伊春|YCB|yichun|yc|1435@yci|榆次|YCV|yuci|yc|1436@ycu|杨村|YBP|yangcun|yc|1437@yde|永登|YDJ|yongdeng|yd|1438@yds|雁荡山|YGH|yandangshan|yds|1439@ydu|于都|YDG|yudu|yd|1440@ydu|姚渡|AOJ|yaodu|yd|1441@ydx|英德西|IIQ|yingdexi|ydx|1442@yfd|云浮东|IXQ|yunfudong|yfd|1443@yga|燕岗|YGW|yangang|yg|1444@yjb|永济北|AJV|yongjibei|yjb|1445@yji|延吉|YJL|yanji|yj|1446@yji|阳江|WRQ|yangjiang|yj|1447@yji|永济|YIV|yongji|yj|1448@yji|燕郊|AJP|yanjiao|yj|1449@yji|姚家|YAT|yaojia|yj|1450@yjs|英吉沙|YIR|yingjisha|yjs|1451@yjx|延吉西|YXL|yanjixi|yjx|1452@ykd|营口东|YGT|yingkoudong|ykd|1453@ykn|永康南|QUH|yongkangnan|ykn|1454@yko|营口|YKT|yingkou|yk|1455@yks|牙克石|YKX|yakeshi|yks|1456@yla|依兰|YEB|yilan|yl|1457@ylb|宜良北|YSM|yiliangbei|ylb|1458@yld|永乐店|YDY|yongledian|yld|1459@yli|玉林|YLZ|yulin|yl|1460@yli|榆林|ALY|yulin|yl|1461@yli|杨陵|YSY|yangling|yl|1462@yli|炎陵|YAG|yanling|yl|1463@yli|阎良|YNY|yanliang|yl|1464@yli|杨林|YLM|yanglin|yl|1465@yln|杨陵南|YEY|yanglingnan|yln|1466@ylp|余粮堡|YLD|yuliangpu|ylp|1467@ylq|杨柳青|YQP|yangliuqing|ylq|1468@ylw|亚龙湾|TWQ|yalongwan|ylw|1469@yma|羊马|YME|yangma|ym|1470@ymb|一面坡北|YXB|yimianpobei|ympb|1471@ymd|云梦东|YRN|yunmengdong|ymd|1472@yme|玉门|YXJ|yumen|ym|1473@ymp|一面坡|YPB|yimianpo|ymp|1474@ymx|元谋西|AMM|yuanmouxi|ymx|1475@yna|郁南|YKQ|yunan|yn|1476@ynd|伊宁东|YNR|yiningdong|ynd|1477@yni|伊宁|YMR|yining|yn|1478@ypd|延平东|ADS|yanpingdong|ypd|1479@ypg|阳平关|YAY|yangpingguan|ypg|1480@ypi|玉屏|YZW|yuping|yp|1481@ypi|延平|YPS|yanping|yp|1482@ypi|原平|YPV|yuanping|yp|1483@ypx|延平西|YWS|yanpingxi|ypx|1484@ypx|原平西|IPV|yuanpingxi|ypx|1485@yqb|阳泉北|YPP|yangquanbei|yqb|1486@yqd|阳泉东|AYP|yangquandong|yqd|1487@yqd|永清东|YDI|yongqingdong|yqd|1488@yqh|雁栖湖|FGP|yanqihu|yqh|1489@yqi|焉耆|YSR|yanqi|yq|1490@yqi|乐清|UPH|yueqing|yq|1491@yqi|延庆|YNP|yanqing|yq|1492@yqq|阳泉曲|YYV|yangquanqu|yqq|1493@yqt|姚千户屯|YQT|yaoqianhutun|yqht|1494@yqu|阳泉|AQP|yangquan|yq|1495@yqu|阳曲|YQV|yangqu|yq|1496@yqu|玉泉|YQB|yuquan|yq|1497@yqx|阳曲西|IQV|yangquxi|yqx|1498@ysh|榆社|YSV|yushe|ys|1499@ysh|玉山|YNG|yushan|ys|1500@ysh|营山|NUW|yingshan|ys|1501@ysh|榆树|YRT|yushu|ys|1502@ysh|元氏|YSP|yuanshi|ys|1503@ysh|燕山|AOP|yanshan|ys|1504@ysn|玉山南|YGG|yushannan|ysn|1505@yst|榆树屯|YSX|yushutun|yst|1506@yta|银滩|CTQ|yintan|yt|1507@yta|烟台|YAK|yantai|yt|1508@yta|鹰潭|YTG|yingtan|yt|1509@yta|永泰|YTS|yongtai|yt|1510@ytb|鹰潭北|YKG|yingtanbei|ytb|1511@yth|伊图里河|YEX|yitulihe|ytlh|1512@ytk|依吞布拉克|YVR|yitunbulake|ytblk|1513@ytn|烟台南|YLK|yantainan|ytn|1514@yts|烟筒山|YSL|yantongshan|yts|1515@ytx|玉田县|ATP|yutianxian|ytx|1516@ywu|义乌|YWH|yiwu|yw|1517@yxi|玉溪|AXM|yuxi|yx|1518@yxi|云霄|YBS|yunxiao|yx|1519@yxi|义县|YXD|yixian|yx|1520@yxi|阳新|YON|yangxin|yx|1521@yxi|宜兴|YUH|yixing|yx|1522@yxi|尤溪|YXS|youxi|yx|1523@yya|益阳|AEQ|yiyang|yy|1524@yya|岳阳|YYQ|yueyang|yy|1525@yyd|岳阳东|YIQ|yueyangdong|yyd|1526@yyn|益阳南|YAA|yiyangnan|yyn|1527@yzd|扬州东|YDU|yangzhoudong|yzd|1528@yzh|崖州|YUQ|yazhou|yz|1529@yzh|永州|AOQ|yongzhou|yz|1530@yzh|兖州|YZK|yanzhou|yz|1531@yzh|扬州|YLH|yangzhou|yz|1532@yzh|榆中|IZJ|yuzhong|yz|1533@zan|诏安|ZDS|zhaoan|za|1534@zbb|淄博北|ZRK|zibobei|zbb|1535@zbo|淄博|ZBK|zibo|zb|1536@zcc|中川机场|ZJJ|zhongchuanjichang|zcjc|1537@zcd|镇城底|ZDV|zhenchengdi|zcd|1538@zdc|正定机场|ZHP|zhengdingjichang|zdjc|1539@zdi|正定|ZDP|zhengding|zd|1540@zdo|准东|ZER|zhundong|zd|1541@zfd|纸坊东|ZMN|zhifangdong|zfd|1542@zga|柘皋|ZGU|zhegao|zg|1543@zgb|自贡北|ZGW|zigongbei|zgb|1544@zgo|自贡|ZGE|zigong|zg|1545@zha|珠海|ZHQ|zhuhai|zh|1546@zhb|庄河北|ZUT|zhuanghebei|zhb|1547@zhb|珠海北|ZIQ|zhuhaibei|zhb|1548@zhc|珠海机场|ZJA|zhuhaijichang|zhjc|1549@zhl|珠海长隆|ZLA|zhuhaichanglong|zhcl|1550@zhm|中华门|VNH|zhonghuamen|zhm|1551@zjc|张家川|ZIJ|zhangjiachuan|zjc|1552@zjg|张家港|ZAU|zhangjiagang|zjg|1553@zji|湛江|ZJZ|zhanjiang|zj|1554@zji|织金|IZW|zhijin|zj|1555@zji|治江|ZIY|zhijiang|zj|1556@zji|芷江|ZPQ|zhijiang|zj|1557@zji|诸暨|ZDH|zhuji|zj|1558@zji|镇江|ZJH|zhenjiang|zj|1559@zji|周家|ZOB|zhoujia|zj|1560@zjj|张家界|DIQ|zhangjiajie|zjj|1561@zjk|张家口|ZMP|zhangjiakou|zjk|1562@zjn|张家口南|IXP|zhangjiakounan|zjkn|1563@zjn|镇江南|ZEH|zhenjiangnan|zjn|1564@zjx|湛江西|ZWQ|zhanjiangxi|zjx|1565@zjx|张家界西|JXA|zhangjiajiexi|zjjx|1566@zkd|周口东|ZKF|zhoukoudong|zkd|1567@zko|周口|ZKN|zhoukou|zk|1568@zla|镇赉|ZLT|zhenlai|zl|1569@zli|庄里|ZLY|zhuangli|zl|1570@zli|左岭|ZSN|zuoling|zl|1571@zlt|扎兰屯|ZTX|zhalantun|zlt|1572@zlx|扎赉诺尔西|ZXX|zhalainuoerxi|zlnex|1573@zmd|驻马店|ZDN|zhumadian|zmd|1574@zmu|中牟|ZGF|zhongmu|zm|1575@zmx|驻马店西|ZLN|zhumadianxi|zmdx|1576@zpi|漳平|ZPS|zhangping|zp|1577@zpu|泽普|ZPR|zepu|zp|1578@zpx|漳平西|ZXG|zhangpingxi|zpx|1579@zqb|章丘北|ZVK|zhangqiubei|zqb|1580@zqd|肇庆东|FCQ|zhaoqingdong|zqd|1581@zqi|肇庆|ZVQ|zhaoqing|zq|1582@zqi|章丘|ZTK|zhangqiu|zq|1583@zsh|柞水|ZSY|zhashui|zs|1584@zsh|珠斯花|ZHD|zhusihua|zsh|1585@zsh|中山|ZSQ|zhongshan|zs|1586@zsh|樟树|ZSG|zhangshu|zs|1587@zsz|朱砂古镇|ZSE|zhushaguzhen|zsgz|1588@zsz|周水子|ZIT|zhoushuizi|zsz|1589@zta|中堂|ZTA|zhongtang|zt|1590@zto|昭通|ZDW|zhaotong|zt|1591@zwe|中卫|ZWJ|zhongwei|zw|1592@zwn|中卫南|ZTJ|zhongweinan|zwn|1593@zxi|镇雄|ZXE|zhenxiong|zx|1594@zya|紫阳|ZVY|ziyang|zy|1595@zya|枣阳|ZYN|zaoyang|zy|1596@zyb|资阳北|FYW|ziyangbei|zyb|1597@zye|张掖|ZYJ|zhangye|zy|1598@zyi|遵义|ZYE|zunyi|zy|1599@zyu|镇远|ZUW|zhenyuan|zy|1600@zyx|遵义西|ZIW|zunyixi|zyx|1601@zyx|张掖西|ZEJ|zhangyexi|zyx|1602@zzb|资中北|WZW|zizhongbei|zzb|1603@zzd|漳州东|GOS|zhangzhoudong|zzd|1604@zzd|涿州东|ZAP|zhuozhoudong|zzd|1605@zzh|枣庄|ZEK|zaozhuang|zz|1606@zzh|漳州|ZUS|zhangzhou|zz|1607@zzh|株洲|ZZQ|zhuzhou|zz|1608@zzh|庄寨|VOK|zhuangzhai|zz|1609@zzn|株洲南|KVQ|zhuzhounan|zzn|1610@zzx|枣庄西|ZFK|zaozhuangxi|zzx|1611@zzx|株洲西|ZAQ|zhuzhouxi|zzx|1612@abq|阿巴嘎旗|AQC|abagaqi|abgq|1613@adi|安定|ADP|anding|ad|1614@adu|安多|ADO|anduo|ad|1615@agu|安广|AGT|anguang|ag|1616@aha|敖汉|YED|aohan|ah|1617@ahe|艾河|AHP|aihe|ah|1618@ahu|安化|PKQ|anhua|ah|1619@ajc|艾家村|AJJ|aijiacun|ajc|1620@ajd|安江东|ADA|anjiangdong|ajd|1621@aji|阿金|AJD|ajin|aj|1622@aji|安匠|MJP|anjiang|aj|1623@aks|阿克塞|AKJ|akesai|aks|1624@aky|安口窑|AYY|ankouyao|aky|1625@alg|敖力布告|ALD|aolibugao|albg|1626@alo|安龙|AUZ|anlong|al|1627@als|阿龙山|ASX|alongshan|als|1628@ame|阿木尔|JTX|amuer|ame|1629@anz|阿南庄|AZM|ananzhuang|anz|1630@are|安仁|ARG|anren|ar|1631@ata|安塘|ATV|antang|at|1632@ats|阿图什|ATR|atushi|ats|1633@atu|安图|ATL|antu|at|1634@atx|安图西|AXL|antuxi|atx|1635@awt|阿瓦提|AWR|awati|awt|1636@axi|安溪|AXS|anxi|ax|1637@bao|博鳌|BWQ|boao|ba|1638@bbg|白壁关|BGV|baibiguan|bbg|1639@bbu|八步|BBE|babu|bb|1640@bch|栟茶|FWH|bencha|bc|1641@bch|板城|BUP|bancheng|bc|1642@bdi|宝坻|BZI|baodi|bd|1643@bdn|宝坻南|BOI|baodinan|bdn|1644@bfe|宝丰|BFF|baofeng|bf|1645@bgo|白沟|FEP|baigou|bg|1646@bhd|白河东|BIY|baihedong|bhd|1647@bhg|滨海港|BGU|binhaigang|bhg|1648@bhs|宝华山|BWH|baohuashan|bhs|1649@bhx|白河县|BEY|baihexian|bhx|1650@bjg|白芨沟|BJJ|baijigou|bjg|1651@bji|北滘|IBQ|beijiao|bj|1652@bji|碧江|BLQ|bijiang|bj|1653@bjp|白鸡坡|BBM|baijipo|bjp|1654@bjs|笔架山|BSB|bijiashan|bjs|1655@bjt|八角台|BTD|bajiaotai|bjt|1656@bjz|北井子|BRT|beijingzi|bjz|1657@bka|保康|BKD|baokang|bk|1658@bkx|保康县|BKN|baokangxian|bkx|1659@bla|白狼|BAT|bailang|bl|1660@blb|博罗北|BLA|boluobei|blb|1661@bld|博乐东|BOR|boledong|bld|1662@bli|北流|BOZ|beiliu|bl|1663@bli|宝林|BNB|baolin|bl|1664@blk|布列开|BLR|buliekai|blk|1665@bls|宝龙山|BND|baolongshan|bls|1666@blx|百里峡|AAP|bailixia|blx|1667@blz|八里甸子|BLT|balidianzi|bldz|1668@bmb|白马北|BME|baimabei|bmb|1669@bmc|八面城|BMD|bamiancheng|bmc|1670@bmz|北马圈子|BRP|beimajuanzi|bmqz|1671@bpn|北票南|RPD|beipiaonan|bpn|1672@bqi|白旗|BQP|baiqi|bq|1673@bqu|白泉|BQL|baiquan|bq|1674@bsh|璧山|FZW|bishan|bs|1675@bsh|巴山|BAY|bashan|bs|1676@bsj|白水江|BSY|baishuijiang|bsj|1677@bsp|白沙铺|BSN|baishapu|bsp|1678@bsp|白沙坡|BPM|baishapo|bsp|1679@bss|白石山|BAL|baishishan|bss|1680@bsx|白水县|BGY|baishuixian|bsx|1681@bsz|白水镇|BUM|baishuizhen|bsz|1682@bta|板塘|NGQ|bantang|bt|1683@bti|坂田|BTQ|bantian|bt|1684@bto|泊头|BZP|botou|bt|1685@btu|北屯|BYP|beitun|bt|1686@bty|巴图营|BWT|batuying|bty|1687@bwd|白文东|BCV|baiwendong|bwd|1688@bxc|本溪新城|BVT|benxixincheng|bxxc|1689@bxi|博兴|BXK|boxing|bx|1690@bxt|八仙筒|VXD|baxiantong|bxt|1691@byg|白音察干|BYC|baiyinchagan|bycg|1692@byi|宝应|BAU|baoying|by|1693@byl|白音他拉|BID|baiyintala|bytl|1694@byn|白音华南|BOD|baiyinhuanan|byhn|1695@bys|白音胡硕|BCD|baiyinhushuo|byhs|1696@bys|白银市|BNJ|baiyinshi|bys|1697@bzb|霸州北|VPP|bazhoubei|bzb|1698@bzh|彬州|BXY|binzhou|bz|1699@bzh|霸州|RMP|bazhou|bz|1700@bzh|北宅|BVP|beizhai|bz|1701@bzx|霸州西|FOP|bazhouxi|bzx|1702@can|长安|CAA|changan|ca|1703@cax|长安西|CXA|changanxi|cax|1704@cbb|赤壁北|CIN|chibibei|cbb|1705@cch|澄城|CUY|chengcheng|cc|1706@cch|长城|CEJ|changcheng|cc|1707@cdb|承德县北|IYP|chengdexianbei|cdxb|1708@cdd|承德东|CCP|chengdedong|cdd|1709@cgb|城固北|CBY|chenggubei|cgb|1710@cge|长葛|CEF|changge|cg|1711@cgh|查干湖|VAT|chaganhu|cgh|1712@che|册亨|CHZ|ceheng|ch|1713@che|翠亨|IHQ|cuiheng|ch|1714@chk|草河口|CKT|caohekou|chk|1715@chk|崔黄口|CHP|cuihuangkou|chk|1716@cjg|蔡家沟|CJT|caijiagou|cjg|1717@cjh|成吉思汗|CJX|chengjisihan|cjsh|1718@cji|岔江|CAM|chajiang|cj|1719@cjn|陈江南|KKQ|chenjiangnan|cjn|1720@cjp|蔡家坡|CJY|caijiapo|cjp|1721@cle|策勒|CLR|cele|cl|1722@cle|昌乐|CLK|changle|cl|1723@clg|超梁沟|CYP|chaolianggou|clg|1724@cln|茶陵南|CNG|chalingnan|cln|1725@clz|长岭子|CLT|changlingzi|clz|1726@cna|潮南|CHA|chaonan|cn|1727@cni|长宁|CNE|changning|cn|1728@cno|长农|CNJ|changnong|cn|1729@cpi|常平|DAQ|changping|cp|1730@cpl|长坡岭|CPM|changpoling|cpl|1731@cpn|常平南|FPQ|changpingnan|cpn|1732@cpn|茌平南|CPK|chipingnan|cpn|1733@cqi|长箐|CQE|changqing|cq|1734@cqi|辰清|CQB|chenqing|cq|1735@csh|长寿|EFW|changshou|cs|1736@csh|长寿湖|CSE|changshouhu|csh|1737@csh|蔡山|CON|caishan|cs|1738@csh|苍石|CST|cangshi|cs|1739@csh|草市|CSL|caoshi|cs|1740@csh|磁山|CSP|cishan|cs|1741@csh|常山|CSU|changshan|cs|1742@csh|常熟|CAU|changshu|cs|1743@csh|楚山|CSB|chushan|cs|1744@cst|长山屯|CVT|changshantun|cst|1745@cti|长汀|CES|changting|ct|1746@cwa|春湾|CQQ|chunwan|cw|1747@cxi|岑溪|CNZ|cenxi|cx|1748@cxi|长兴|CBH|changxing|cx|1749@cxi|磁西|CRP|cixi|cx|1750@cya|磁窑|CYK|ciyao|cy|1751@cya|长阳|CYN|changyang|cy|1752@cya|城阳|CEK|chengyang|cy|1753@cyc|创业村|CEX|chuangyecun|cyc|1754@cyd|朝阳地|CDD|chaoyangdi|cyd|1755@cyi|昌邑|CRK|changyi|cy|1756@cyn|朝阳南|CYD|chaoyangnan|cyn|1757@cyu|长垣|CYF|changyuan|cy|1758@cyz|朝阳镇|CZL|chaoyangzhen|cyz|1759@czh|陈庄|CZY|chenzhuang|cz|1760@czh|潮州|CKQ|chaozhou|cz|1761@czl|曹子里|CFP|caozili|czl|1762@czn|长治南|CAF|changzhinan|czn|1763@czt|城子坦|CWT|chengzitan|czt|1764@czw|车转湾|CWM|chezhuanwan|czw|1765@dan|都安|RUZ|duan|da|1766@dan|大安|RAT|daan|da|1767@dan|德安|DAG|dean|da|1768@dba|大坝|DBJ|daba|db|1769@dba|德保|RBZ|debao|db|1770@dba|到保|RBT|daobao|db|1771@dba|大巴|DBD|daba|db|1772@dba|电白|NWQ|dianbai|db|1773@dba|大板|DBC|daban|db|1774@dbj|东边井|DBB|dongbianjing|dbj|1775@dbs|德伯斯|RDT|debosi|dbs|1776@dcg|打柴沟|DGJ|dachaigou|dcg|1777@dch|德昌|DVW|dechang|dc|1778@dch|大厂|DCI|dachang|dc|1779@dch|都昌|DCG|duchang|dc|1780@dcn|东城南|IYQ|dongchengnan|dcn|1781@dcx|德昌西|DXE|dechangxi|dcx|1782@dda|滴道|DDB|didao|dd|1783@ddg|大磴沟|DKJ|dadenggou|ddg|1784@ddh|东戴河|RDD|dongdaihe|ddh|1785@ddx|丹东西|RWT|dandongxi|ddx|1786@ded|刀尔登|DRD|daoerdeng|ded|1787@dee|得耳布尔|DRX|deerbuer|debe|1788@deh|东二道河|DRB|dongerdaohe|dedh|1789@det|杜尔伯特|TKX|duerbote|debt|1790@dfa|大方|DFE|dafang|df|1791@dfe|东丰|DIL|dongfeng|df|1792@dge|都格|DMM|duge|dg|1793@dgg|东莞港|DGA|dongguangang|dgg|1794@dgn|大港南|DNU|dagangnan|dgn|1795@dgt|大官屯|DTT|daguantun|dgt|1796@dgu|东光|DGP|dongguang|dg|1797@dha|东海|DHB|donghai|dh|1798@dhb|东花园北|QBP|donghuayuanbei|dhyb|1799@dhc|大灰厂|DHP|dahuichang|dhc|1800@dhd|鼎湖东|UWQ|dinghudong|dhd|1801@dhs|鼎湖山|NVQ|dinghushan|dhs|1802@dht|大禾塘|SOQ|shaodong|dh|1803@dhx|东海县|DQH|donghaixian|dhx|1804@dji|东津|DKB|dongjin|dj|1805@djk|丹江口|DON|danjiangkou|djk|1806@djk|董家口|DTK|dongjiakou|djk|1807@dkt|大口屯|DKP|dakoutun|dkt|1808@dla|东来|RVD|donglai|dl|1809@dli|大林|DLD|dalin|dl|1810@dli|带岭|DLB|dailing|dl|1811@dlq|达拉特旗|DIC|dalateqi|dltq|1812@dlt|独立屯|DTX|dulitun|dlt|1813@dlu|豆罗|DLV|douluo|dl|1814@dlx|达拉特西|DNC|dalatexi|dltx|1815@dlx|大连西|GZT|dalianxi|dlx|1816@dlz|大朗镇|KOQ|dalangzhen|dlz|1817@dmc|东明村|DMD|dongmingcun|dmc|1818@dmh|洞庙河|DEP|dongmiaohe|dmh|1819@dpf|大平房|DPD|dapingfang|dpf|1820@dps|大盘石|RPP|dapanshi|dps|1821@dpu|大堡|DVT|dapu|dp|1822@dqg|大青沟|DSD|daqinggou|dqg|1823@dqh|大其拉哈|DQX|daqilaha|dqlh|1824@dqi|德清|DRH|deqing|dq|1825@dqi|杜桥|DQU|duqiao|dq|1826@dqx|德清西|MOH|deqingxi|dqx|1827@dsd|东胜东|RSC|dongshengdong|dsd|1828@dsh|东升|DRQ|dongsheng|ds|1829@dsh|登沙河|DWT|dengshahe|dsh|1830@dsh|砀山|DKH|dangshan|ds|1831@dsn|大石头南|DAL|dashitounan|dstn|1832@dst|大石头|DSL|dashitou|dst|1833@dsz|大石寨|RZT|dashizhai|dsz|1834@dta|灯塔|DGT|dengta|dt|1835@dta|定陶|DQK|dingtao|dt|1836@dta|东台|DBH|dongtai|dt|1837@dtb|大田边|DBM|datianbian|dtb|1838@dtd|当涂东|OWH|dangtudong|dtd|1839@dth|东通化|DTL|dongtonghua|dth|1840@dtu|丹徒|RUH|dantu|dt|1841@dwa|东湾|DRJ|dongwan|dw|1842@dwa|大旺|WWQ|dawang|dw|1843@dwp|低窝铺|DWJ|diwopu|dwp|1844@dxd|德兴东|DDG|dexingdong|dxd|1845@dxg|大兴沟|DXL|daxinggou|dxg|1846@dxi|德兴|DWG|dexing|dx|1847@dxi|定襄|DXV|dingxiang|dx|1848@dxi|代县|DKV|daixian|dx|1849@dxi|甸心|DXM|dianxin|dx|1850@dxs|丹霞山|IRQ|danxiashan|dxs|1851@dxu|东戌|RXP|dongxu|dx|1852@dxz|东辛庄|DXD|dongxinzhuang|dxz|1853@dya|大雁|DYX|dayan|dy|1854@dya|大阳|RET|dayang|dy|1855@dyb|丹阳北|EXH|danyangbei|dyb|1856@dyb|东阳北|DIU|dongyangbei|dyb|1857@dyd|东淤地|DBV|dongyudi|dyd|1858@dyi|大营|DYV|daying|dy|1859@dyu|定远|EWH|dingyuan|dy|1860@dyu|岱岳|RYV|daiyue|dy|1861@dyu|大余|DYG|dayu|dy|1862@dyz|大营子|DZD|dayingzi|dyz|1863@dyz|大营镇|DJP|dayingzhen|dyz|1864@dzc|大战场|DTJ|dazhanchang|dzc|1865@dzh|兑镇|DWV|duizhen|dz|1866@dzh|道州|DFZ|daozhou|dz|1867@dzh|东镇|DNV|dongzhen|dz|1868@dzh|东庄|DZV|dongzhuang|dz|1869@dzh|端州|WZQ|duanzhou|dz|1870@dzh|低庄|DVQ|dizhuang|dz|1871@dzh|豆庄|ROP|douzhuang|dz|1872@dzn|大足南|FQW|dazunan|dzn|1873@dzy|大竹园|DZY|dazhuyuan|dzy|1874@dzz|大杖子|DAP|dazhangzi|dzz|1875@dzz|豆张庄|RZP|douzhangzhuang|dzz|1876@ebn|峨边南|ENE|ebiannan|ebn|1877@edm|二道沟门|RDP|erdaogoumen|edgm|1878@edw|二道湾|RDX|erdaowan|edw|1879@elo|二龙|RLD|erlong|el|1880@elt|二龙山屯|ELA|erlongshantun|elst|1881@emh|二密河|RML|ermihe|emh|1882@emi|额敏|EMR|emin|em|1883@epi|恩平|PXQ|enping|ep|1884@esh|峨山|EVM|eshan|es|1885@eyi|二营|RYJ|erying|ey|1886@ezd|鄂州东|EFN|ezhoudong|ezd|1887@fan|福安|FAS|fuan|fa|1888@fcd|丰城东|FIG|fengchengdong|fcd|1889@fcd|凤城东|FDT|fengchengdong|fcd|1890@fch|富川|FDZ|fuchuan|fc|1891@fch|丰城|FCG|fengcheng|fc|1892@fch|方城|FNF|fangcheng|fc|1893@fcn|丰城南|FNG|fengchengnan|fcn|1894@fcx|繁昌西|PUH|fanchangxi|fcx|1895@fgn|扶沟南|FGF|fugounan|fgn|1896@fha|富海|FHX|fuhai|fh|1897@fhc|凤凰古城|FCA|fenghuanggucheng|fhgc|1898@fhx|福海西|FHA|fuhaixi|fhx|1899@fji|奉节|FJE|fengjie|fj|1900@fli|枫林|FLN|fenglin|fl|1901@flt|福利屯|FTB|fulitun|flt|1902@flz|丰乐镇|FZB|fenglezhen|flz|1903@fna|阜南|FNH|funan|fn|1904@fni|抚宁|FNP|funing|fn|1905@fni|阜宁|AKH|funing|fn|1906@fnn|阜宁南|FNU|funingnan|fnn|1907@fpi|富平|FPY|fuping|fp|1908@fpi|佛坪|FUY|foping|fp|1909@fqi|法启|FQE|faqi|fq|1910@fqx|福清西|FVS|fuqingxi|fqx|1911@frz|芙蓉镇|FRA|furongzhen|frz|1912@fsd|丰顺东|FDA|fengshundong|fsd|1913@fsh|复盛|FAW|fusheng|fs|1914@fsh|丰顺|FUQ|fengshun|fs|1915@fsh|繁峙|FSV|fanshi|fs|1916@fsh|抚顺|FST|fushun|fs|1917@fsk|福山口|FKP|fushankou|fsk|1918@fsn|扶绥南|FNZ|fusuinan|fsn|1919@fso|抚松|FSL|fusong|fs|1920@fsz|福山镇|FZQ|fushanzhen|fsz|1921@ftn|凤台南|FTU|fengtainan|ftn|1922@ftu|冯屯|FTX|fengtun|ft|1923@fty|浮图峪|FYP|futuyu|fty|1924@fxb|费县北|FBK|feixianbei|fxb|1925@fxd|富县东|FDY|fuxiandong|fxd|1926@fxi|富县|FEY|fuxian|fx|1927@fxi|费县|FXK|feixian|fx|1928@fya|汾阳|FAV|fenyang|fy|1929@fya|凤阳|FUH|fengyang|fy|1930@fyb|富源北|FBM|fuyuanbei|fyb|1931@fyu|扶余|FYT|fuyu|fy|1932@fzb|抚州北|FBG|fuzhoubei|fzb|1933@fzd|抚州东|FDG|fuzhoudong|fzd|1934@fzh|范镇|VZK|fanzhen|fz|1935@gad|固安东|GQP|guandong|gad|1936@gan|固安|GFP|guan|ga|1937@gbd|高碑店东|GMP|gaobeidiandong|gbdd|1938@gbd|高碑店|GBP|gaobeidian|gbd|1939@gbz|沟帮子|GBD|goubangzi|gbz|1940@gcb|谷城北|GBN|guchengbei|gcb|1941@gcd|古城东|GUU|guchengdong|gcd|1942@gch|恭城|GCZ|gongcheng|gc|1943@gch|谷城|GCN|gucheng|gc|1944@gcz|古城镇|GZB|guchengzhen|gcz|1945@gdb|贵定北|FMW|guidingbei|gdb|1946@gde|广德|GRH|guangde|gd|1947@gdi|贵定|GTW|guiding|gd|1948@gdn|广德南|GNU|guangdenan|gdn|1949@gdn|葛店南|GNN|gediannan|gdn|1950@gdx|贵定县|KIW|guidingxian|gdx|1951@gga|岗嘎|GAO|gangga|gg|1952@gga|贡嘎|GGO|gongga|gg|1953@gga|官高|GVP|guangao|gg|1954@ggm|葛根庙|GGT|gegenmiao|ggm|1955@ggz|高各庄|GGP|gaogezhuang|ggz|1956@ghb|广汉北|GVW|guanghanbei|ghb|1957@ghe|甘河|GAX|ganhe|gh|1958@gjd|郭家店|GDT|guojiadian|gjd|1959@gji|个旧|JJM|gejiu|gj|1960@gla|古浪|GLJ|gulang|gl|1961@glb|橄榄坝|GVM|ganlanba|glb|1962@glh|归流河|GHT|guiliuhe|glh|1963@gli|关岭|GLE|guanling|gl|1964@gli|关林|GLF|guanlin|gl|1965@gln|甘洛南|GNE|ganluonan|gln|1966@glx|桂林西|GEZ|guilinxi|glx|1967@glz|郭磊庄|GLP|guoleizhuang|glz|1968@gmb|高密北|GVK|gaomibei|gmb|1969@gmc|光明城|IMQ|guangmingcheng|gmc|1970@gmi|高密|GMK|gaomi|gm|1971@gna|灌南|GIU|guannan|gn|1972@gni|广宁|FBQ|guangning|gn|1973@gnn|广宁寺南|GNT|guangningsinan|gnn|1974@gns|广宁寺|GQT|guangningsi|gns|1975@gpd|高平东|GVF|gaopingdong|gpd|1976@gpi|高坪|GGN|gaoping|gp|1977@gpi|广平|GPP|guangping|gp|1978@gpi|高平|GPF|gaoping|gp|1979@gpz|弓棚子|GPT|gongpengzi|gpz|1980@gqb|甘泉北|GEY|ganquanbei|gqb|1981@gqk|甘旗卡|GQD|ganqika|gqk|1982@gqu|甘泉|GQY|ganquan|gq|1983@gqz|高桥镇|GZD|gaoqiaozhen|gqz|1984@gsd|赶水东|GDE|ganshuidong|gsd|1985@gsh|光山|GUN|guangshan|gs|1986@gsh|灌水|GST|guanshui|gs|1987@gsk|孤山口|GSP|gushankou|gsk|1988@gso|果松|GSL|guosong|gs|1989@gsz|嘎什甸子|GXD|gashidianzi|gsdz|1990@gsz|高山子|GSD|gaoshanzi|gsz|1991@gta|高滩|GAY|gaotan|gt|1992@gta|高台|GTJ|gaotai|gt|1993@gtb|古田北|GBS|gutianbei|gtb|1994@gti|古田|GTS|gutian|gt|1995@gti|官厅|GTP|guanting|gt|1996@gtn|高台南|GAJ|gaotainan|gtn|1997@gtx|官厅西|KEP|guantingxi|gtx|1998@gxb|赣县北|GIG|ganxianbei|gxb|1999@gxi|贵溪|GXG|guixi|gx|2000@gya|涡阳|GYH|guoyang|gy|2001@gyb|高邮北|GEU|gaoyoubei|gyb|2002@gyc|观音机场|GCU|guanyinjichang|gyjc|2003@gyo|高邮|GAU|gaoyou|gy|2004@gyu|灌云|GOU|guanyun|gy|2005@gyz|公营子|GYD|gongyingzi|gyz|2006@gze|光泽|GZS|guangze|gz|2007@gzh|果珠|GZE|guozhu|gz|2008@gzh|古镇|GNQ|guzhen|gz|2009@gzh|虢镇|GZY|guozhen|gz|2010@gzh|盖州|GXT|gaizhou|gz|2011@gzh|瓜州|GZJ|guazhou|gz|2012@gzh|固镇|GEH|guzhen|gz|2013@gzj|官字井|GOT|guanzijing|gzj|2014@gzn|冠豸山南|GSS|guanzhaishannan|gzn|2015@gzx|古丈西|GXA|guzhangxi|gzx|2016@han|红安|HWN|hongan|ha|2017@han|海安|HIH|haian|ha|2018@han|淮安南|AMH|huaiannan|han|2019@han|怀安|QAP|huaian|ha|2020@han|惠安|HNS|huian|ha|2021@hap|惠安堡|KBJ|huianpu|hap|2022@hba|黄柏|HBL|huangbai|hb|2023@hbb|淮北北|PLH|huaibeibei|hbb|2024@hbd|鹤壁东|HFF|hebidong|hbd|2025@hbe|海北|HEB|haibei|hb|2026@hbi|鹤壁|HAF|hebi|hb|2027@hcb|会昌北|XEG|huichangbei|hcb|2028@hcg|寒葱沟|HKB|hanconggou|hcg|2029@hch|河唇|HCZ|hechun|hc|2030@hch|华城|VCQ|huacheng|hc|2031@hch|霍城|SER|huocheng|hc|2032@hch|汉川|HCN|hanchuan|hc|2033@hct|黑冲滩|HCJ|heichongtan|hct|2034@hda|红岛|HQK|hongdao|hd|2035@hdd|横道河子东|KUX|hengdaohezidong|hdhzd|2036@hde|化德|HGC|huade|hd|2037@hdl|河东里|KLJ|hedongli|hdl|2038@hdo|海东|LVO|haidong|hd|2039@hdo|洪洞|HDV|hongtong|hd|2040@hdx|海东西|HDO|haidongxi|hdx|2041@hfe|横峰|HFG|hengfeng|hf|2042@hfw|韩府湾|HXJ|hanfuwan|hfw|2043@hga|黄冈|KGN|huanggang|hg|2044@hgd|横沟桥东|HNN|henggouqiaodong|hgqd|2045@hgx|黄冈西|KXN|huanggangxi|hgx|2046@hhe|洪河|HPB|honghe|hh|2047@hhg|红花沟|VHD|honghuagou|hhg|2048@hht|黄花筒|HUD|huanghuatong|hht|2049@hhu|惠环|KHQ|huihuan|hh|2050@hhu|花湖|KHN|huahu|hh|2051@hjd|贺家店|HJJ|hejiadian|hjd|2052@hji|厚街|HJA|houjie|hj|2053@hji|黑井|HIM|heijing|hj|2054@hji|涵江|HJS|hanjiang|hj|2055@hji|获嘉|HJF|huojia|hj|2056@hjq|杭锦后旗|HDC|hangjinhouqi|hjhq|2057@hjx|河间西|HXP|hejianxi|hjx|2058@hjz|花家庄|HJM|huajiazhuang|hjz|2059@hko|黄口|KOH|huangkou|hk|2060@hko|湖口|HKG|hukou|hk|2061@hla|惠来|HGA|huilai|hl|2062@hla|怀来|VQP|huailai|hl|2063@hlb|海林北|KBX|hailinbei|hlb|2064@hlh|浩良河|HHB|haolianghe|hlh|2065@hli|黄流|KLQ|huangliu|hl|2066@hli|黄陵|ULY|huangling|hl|2067@hli|鹤立|HOB|heli|hl|2068@hli|桦林|HIB|hualin|hl|2069@hlo|和龙|HLL|helong|hl|2070@hlo|海龙|HIL|hailong|hl|2071@hls|哈拉苏|HAX|halasu|hls|2072@hlt|呼鲁斯太|VTJ|hulusitai|hlst|2073@hmb|虎门北|HBA|humenbei|hmb|2074@hmd|虎门东|HDA|humendong|hmd|2075@hme|黄梅|VEH|huangmei|hm|2076@hme|虎门|IUQ|humen|hm|2077@hme|洪梅|HMA|hongmei|hm|2078@hmy|韩麻营|HYP|hanmaying|hmy|2079@hna|衡南|HNG|hengnan|hn|2080@hnd|桦南东|KNB|huanandong|hnd|2081@hnh|黄泥河|HHL|huangnihe|hnh|2082@hni|化念|HDM|huanian|hn|2083@hni|海宁|HNH|haining|hn|2084@hni|怀宁|APH|huaining|hn|2085@hno|惠农|HMJ|huinong|hn|2086@hpb|和平北|HPA|hepingbei|hpb|2087@hpi|和平|VAQ|heping|hp|2088@hpu|合浦|HVZ|hepu|hp|2089@hpz|花棚子|HZM|huapengzi|hpz|2090@hqb|横琴北|HOA|hengqinbei|hqb|2091@hqi|霍邱|FBH|huoqiu|hq|2092@hqi|宏庆|HEY|hongqing|hq|2093@hqi|横琴|HQA|hengqin|hq|2094@hqi|花桥|VQH|huaqiao|hq|2095@hqq|红旗渠|HQF|hongqiqu|hqq|2096@hrd|华容东|HPN|huarongdong|hrd|2097@hre|怀仁|HRV|huairen|hr|2098@hrn|华容南|KRN|huarongnan|hrn|2099@hro|华容|HRN|huarong|hr|2100@hsb|红寺堡|HSJ|hongsibu|hsp|2101@hsb|红寺堡北|HEJ|hongsibubei|hsbb|2102@hsb|黑山北|HQT|heishanbei|hsb|2103@hsb|黄石北|KSN|huangshibei|hsb|2104@hsd|贺胜桥东|HLN|heshengqiaodong|hsqd|2105@hsd|黄松甸|HDL|huangsongdian|hsd|2106@hsh|汉寿|HHA|hanshou|hs|2107@hsh|衡山|HSQ|hengshan|hs|2108@hsh|虎什哈|HHP|hushiha|hsh|2109@hsh|惠山|VCH|huishan|hs|2110@hsh|红山|VSB|hongshan|hs|2111@hsn|汉寿南|VSQ|hanshounan|hsn|2112@hsn|含山南|HSU|hanshannan|hsn|2113@hsx|红砂岘|VSJ|hongshaxian|hsx|2114@hsx|衡山西|HEQ|hengshanxi|hsx|2115@hta|荷塘|KXQ|hetang|ht|2116@hta|桓台|VTK|huantai|ht|2117@hta|黑台|HQB|heitai|ht|2118@htb|黄桶北|HBE|huangtongbei|htb|2119@hwa|黑旺|HWK|heiwang|hw|2120@hxi|徽县|HYY|huixian|hx|2121@hxi|红星|VXB|hongxing|hx|2122@hxl|红兴隆|VHB|hongxinglong|hxl|2123@hxt|红岘台|HTJ|hongxiantai|hxt|2124@hxt|换新天|VTB|huanxintian|hxt|2125@hxu|滑浚|HWF|huaxun|hx|2126@hya|合阳|HAY|heyang|hy|2127@hya|海晏|HFO|haiyan|hy|2128@hya|红彦|VIX|hongyan|hy|2129@hyb|合阳北|HTY|heyangbei|hyb|2130@hyb|河源北|HYA|heyuanbei|hyb|2131@hyb|海阳北|HEK|haiyangbei|hyb|2132@hyi|汉阴|HQY|hanyin|hy|2133@hyi|槐荫|IYN|huaiyin|hy|2134@hyk|花园口|HYT|huayuankou|hyk|2135@hyn|淮阳南|HVF|huaiyangnan|hyn|2136@hyt|黄羊滩|HGJ|huangyangtan|hyt|2137@hyu|花园|HUN|huayuan|hy|2138@hyz|黄羊镇|HYJ|huangyangzhen|hyz|2139@hzd|霍州东|HWV|huozhoudong|hzd|2140@hzh|黄州|VON|huangzhou|hz|2141@hzh|壶镇|HUU|huzhen|hz|2142@hzh|化州|HZZ|huazhou|hz|2143@hzh|霍州|HZV|huozhou|hz|2144@hzx|惠州西|VXQ|huizhouxi|hzx|2145@jbi|靖边|JIY|jingbian|jb|2146@jbt|金宝屯|JBD|jinbaotun|jbt|2147@jcb|晋城北|JEF|jinchengbei|jcb|2148@jch|交城|JNV|jiaocheng|jc|2149@jch|建昌|JFD|jianchang|jc|2150@jch|加查|JIO|jiacha|jc|2151@jch|泾川|JAJ|jingchuan|jc|2152@jch|碱厂|JUT|jianchang|jc|2153@jch|鄄城|JCK|juancheng|jc|2154@jde|旌德|NSH|jingde|jd|2155@jde|峻德|JDB|junde|jd|2156@jdi|井店|JFP|jingdian|jd|2157@jdu|江都|UDH|jiangdu|jd|2158@jfe|尖峰|PFQ|jianfeng|jf|2159@jgt|金沟屯|VGP|jingoutun|jgt|2160@jha|江海|JNQ|jianghai|jh|2161@jhe|精河|JHR|jinghe|jh|2162@jhe|金河|JHX|jinhe|jh|2163@jhe|锦河|JHB|jinhe|jh|2164@jhs|九华山|JSU|jiuhuashan|jhs|2165@jhu|江华|JHZ|jianghua|jh|2166@jhu|建湖|AJH|jianhu|jh|2167@jjg|纪家沟|VJD|jijiagou|jjg|2168@jji|锦界|JEY|jinjie|jj|2169@jji|姜家|JJB|jiangjia|jj|2170@jkn|金口河南|JHE|jinkouhenan|jkgn|2171@jle|将乐|JLS|jiangle|jl|2172@jli|芨岭|JLJ|jiling|jl|2173@jls|九郎山|KJQ|jiulangshan|jls|2174@jmd|江门东|JWQ|jiangmendong|jmd|2175@jme|角美|JES|jiaomei|jm|2176@jmx|佳木斯西|JUB|jiamusixi|jmsx|2177@jna|莒南|JOK|junan|jn|2178@jnb|莒南北|VNK|junanbei|jnb|2179@jnb|济宁北|MIK|jiningbei|jnb|2180@jnd|济宁东|MNK|jiningdong|jnd|2181@jnn|建宁南|JQS|jianningnan|jnn|2182@jod|建瓯东|JZS|jianoudong|jod|2183@jou|建瓯|JVS|jianou|jo|2184@jox|建瓯西|JUS|jianouxi|jox|2185@jpu|金普|PWT|jinpu|jp|2186@jqi|建桥|JQA|jianqiao|jq|2187@jqi|江桥|JQX|jiangqiao|jq|2188@jrx|句容西|JWH|jurongxi|jrx|2189@jsa|九三|SSX|jiusan|js|2190@jsh|金山|JSR|jinshan|js|2191@jsh|建始|JRN|jianshi|js|2192@jsh|建水|JSM|jianshui|js|2193@jsh|稷山|JVV|jishan|js|2194@jsh|吉舒|JSL|jishu|js|2195@jsh|建设|JET|jianshe|js|2196@jsh|甲山|JOP|jiashan|js|2197@jsh|京山|JCN|jingshan|js|2198@jsh|嘉善|JSH|jiashan|js|2199@jsn|嘉善南|EAH|jiashannan|jsn|2200@jss|界首市|JUN|jieshoushi|jss|2201@jst|江所田|JOM|jiangsuotian|jst|2202@jst|金山屯|JTB|jinshantun|jst|2203@jsx|吉水西|JSG|jishuixi|jsx|2204@jta|景泰|JTJ|jingtai|jt|2205@jta|金塔|JIJ|jinta|jt|2206@jwa|井湾|JWA|jingwan|jw|2207@jwe|吉文|JWX|jiwen|jw|2208@jxb|嘉祥北|MXK|jiaxiangbei|jxb|2209@jxb|进贤北|JHG|jinxianbei|jxb|2210@jxi|泾县|LOH|jingxian|jx|2211@jxi|莒县|JKK|juxian|jx|2212@jxi|嘉祥|JUK|jiaxiang|jx|2213@jxi|郏县|JXF|jiaxian|jx|2214@jxz|夹心子|JXT|jiaxinzi|jxz|2215@jya|揭阳|JYA|jieyang|jy|2216@jya|建阳|JYS|jianyang|jy|2217@jya|蛟洋|JBS|jiaoyang|jy|2218@jya|姜堰|UEH|jiangyan|jy|2219@jyb|江油北|JBE|jiangyoubei|jyb|2220@jyb|巨野北|MYK|juyebei|jyb|2221@jyc|揭阳机场|JUA|jieyangjichang|jyjc|2222@jyn|揭阳南|JRQ|jieyangnan|jyn|2223@jyo|江永|JYZ|jiangyong|jy|2224@jyu|江源|SZL|jiangyuan|jy|2225@jyu|靖远|JYJ|jingyuan|jy|2226@jyu|缙云|JYH|jinyun|jy|2227@jyu|济源|JYF|jiyuan|jy|2228@jyw|金月湾|PYQ|jinyuewan|jyw|2229@jyx|靖远西|JXJ|jingyuanxi|jyx|2230@jyx|缙云西|PYH|jinyunxi|jyx|2231@jzb|胶州北|JZK|jiaozhoubei|jzb|2232@jzd|焦作东|WEF|jiaozuodong|jzd|2233@jzh|晋中|JZV|jinzhong|jz|2234@jzh|靖州|JEQ|jingzhou|jz|2235@jzh|景州|JEP|jingzhou|jz|2236@jzh|胶州|JXK|jiaozhou|jz|2237@jzw|旧庄窝|JVP|jiuzhuangwo|jzw|2238@jzz|金杖子|JYD|jinzhangzi|jzz|2239@kch|康城|KCP|kangcheng|kc|2240@kdi|宽甸|KDT|kuandian|kd|2241@kdo|克东|KOB|kedong|kd|2242@kdz|昆都仑召|KDC|kundulunzhao|kdlz|2243@key|库尔木依|VPR|kuermuyi|kemy|2244@kji|开江|KAW|kaijiang|kj|2245@klq|喀喇其|KQX|kalaqi|klq|2246@kpn|开平南|PVQ|kaipingnan|kpn|2247@kqi|口前|KQL|kouqian|kq|2248@ksh|奎山|KAB|kuishan|ks|2249@kta|葵潭|KTQ|kuitan|kt|2250@kxl|康熙岭|KXZ|kangxiling|kxl|2251@kyh|克一河|KHX|keyihe|kyh|2252@kyn|开远南|KUM|kaiyuannan|kyn|2253@kyu|昆玉|ESR|kunyu|ky|2254@lba|冷坝|LBE|lengba|lb|2255@lbb|琅勃拉邦|VJM|langbolabang|lblb|2256@lbi|来宾|UBZ|laibin|lb|2257@lbi|老边|LLT|laobian|lb|2258@lbi|灵璧|GMH|lingbi|lb|2259@lbu|寮步|LTQ|liaobu|lb|2260@lcd|洛川东|LRY|luochuandong|lcd|2261@lch|罗城|VCZ|luocheng|lc|2262@lch|乐昌|LCQ|lechang|lc|2263@lch|黎城|UCP|licheng|lc|2264@lch|临城|UUP|lincheng|lc|2265@lcu|蓝村|LCK|lancun|lc|2266@ldo|乐东|UQQ|ledong|ld|2267@ldo|林东|LRC|lindong|ld|2268@ldu|乐都|LDO|ledu|ld|2269@ldx|梁底下|LDP|liangdixia|ldx|2270@ldz|六道河子|LVP|liudaohezi|ldhz|2271@lfa|鲁番|LVM|lufan|lf|2272@lfa|落垡|LOP|luofa|lf|2273@lfd|陆丰东|LDA|lufengdong|lfd|2274@lfe|来凤|LFA|laifeng|lf|2275@lfe|龙丰|KFQ|longfeng|lf|2276@lfn|陆丰南|LAA|lufengnan|lfn|2277@lfn|禄丰南|LQM|lufengnan|lfn|2278@lfu|老府|UFD|laofu|lf|2279@lga|兰岗|LNB|langang|lg|2280@lgd|龙骨甸|LGM|longgudian|lgd|2281@lgn|临高南|KGQ|lingaonan|lgn|2282@lgo|芦沟|LOM|lugou|lg|2283@lgo|龙沟|LGJ|longgou|lg|2284@lha|临海|UFH|linhai|lh|2285@lha|凌海|JID|linghai|lh|2286@lha|拉哈|LHX|laha|lh|2287@lha|林海|LXX|linhai|lh|2288@lhe|滦河|UDP|luanhe|lh|2289@lhn|临海南|LHU|linhainan|lhn|2290@lhn|凌海南|UNT|linghainan|lhn|2291@lhu|龙华|LHP|longhua|lh|2292@lhy|滦河沿|UNP|luanheyan|lhy|2293@lhz|六合镇|LEX|liuhezhen|lhz|2294@ljd|罗江东|IKW|luojiangdong|ljd|2295@ljd|亮甲店|LRT|liangjiadian|ljd|2296@ljh|刘家河|LVT|liujiahe|ljh|2297@lji|廉江|LJZ|lianjiang|lj|2298@lji|罗江|LJW|luojiang|lj|2299@lji|柳江|UQZ|liujiang|lj|2300@lji|两家|UJT|liangjia|lj|2301@lji|李家|LJB|lijia|lj|2302@lji|龙江|LJX|longjiang|lj|2303@ljk|莲江口|LHB|lianjiangkou|ljk|2304@ljn|利津南|LNK|lijinnan|ljn|2305@ljp|李家坪|LIJ|lijiaping|ljp|2306@ljz|厉家寨|UPK|lijiazhai|ljz|2307@lkn|林口南|LRB|linkounan|lkn|2308@lkp|路口铺|LKQ|lukoupu|lkp|2309@lla|老莱|LAX|laolai|ll|2310@llb|龙里北|KFW|longlibei|llb|2311@llb|沥林北|KBQ|lilinbei|llb|2312@llb|兰陵北|COK|lanlingbei|llb|2313@lld|醴陵东|UKQ|lilingdong|lld|2314@lli|临澧|LWQ|linli|ll|2315@lli|零陵|UWZ|lingling|ll|2316@lli|陆良|LRM|luliang|ll|2317@llo|卢龙|UAP|lulong|ll|2318@lmd|喇嘛甸|LMX|lamadian|lmd|2319@lmd|里木店|LMB|limudian|lmd|2320@lme|洛门|LMJ|luomen|lm|2321@lmi|芦庙|LMU|lumiao|lm|2322@lna|龙南|UNG|longnan|ln|2323@lnd|龙南东|LBG|longnandong|lnd|2324@lpb|乐平北|LKG|lepingbei|lpb|2325@lpd|六盘水东|LDE|liupanshuidong|lpsd|2326@lpl|落坡岭|LPP|luopoling|lpl|2327@lps|六盘山|UPJ|liupanshan|lps|2328@lps|乐平市|LPG|lepingshi|lps|2329@lpu|洛浦|LVR|luopu|lp|2330@lqi|临清|UQK|linqing|lq|2331@lqn|礼泉南|UNY|liquannan|lqn|2332@lqs|龙泉市|LVU|longquanshi|lqs|2333@lqu|礼泉|LGY|liquan|lq|2334@lqu|临泉|LOU|linquan|lq|2335@lsb|乐山北|UTW|leshanbei|lsb|2336@lsd|冷水江东|UDQ|lengshuijiangdong|lsjd|2337@lsg|连山关|LGT|lianshanguan|lsg|2338@lsg|流水沟|USP|liushuigou|lsg|2339@lsh|灵石|LSV|lingshi|ls|2340@lsh|露水河|LUL|lushuihe|lsh|2341@lsh|罗山|LRN|luoshan|ls|2342@lsh|涟水|LIU|lianshui|ls|2343@lsh|龙市|LAG|longshi|ls|2344@lsh|梁山|LMK|liangshan|ls|2345@lsh|鲁山|LAF|lushan|ls|2346@lsn|娄山关南|LSE|loushanguannan|lsgn|2347@lst|柳树屯|LSD|liushutun|lst|2348@lsz|龙山镇|LAS|longshanzhen|lsz|2349@lsz|李石寨|LET|lishizhai|lsz|2350@lsz|梨树镇|LSB|lishuzhen|lsz|2351@lta|轮台|LAR|luntai|lt|2352@ltb|龙塘坝|LBM|longtangba|ltb|2353@ltu|濑湍|LVZ|laituan|lt|2354@ltz|龙塘镇|LVB|longtangzhen|ltz|2355@lwa|李旺|VLJ|liwang|lw|2356@lws|狼尾山|LRJ|langweishan|lws|2357@lwu|灵武|LNJ|lingwu|lw|2358@lwx|莱芜西|UXK|laiwuxi|lwx|2359@lxi|岚县|UXV|lanxian|lx|2360@lxi|朗县|LIO|langxian|lx|2361@lxi|芦溪|LUG|luxi|lx|2362@lxi|临湘|LXQ|linxiang|lx|2363@lxi|滦县|UXP|luanxian|lx|2364@lxi|林西|LXC|linxi|lx|2365@lxi|朗乡|LXB|langxiang|lx|2366@lxn|郎溪南|LXU|langxinan|lxn|2367@lxn|莱西南|LXK|laixinan|lxn|2368@lya|莱阳|LYK|laiyang|ly|2369@lyd|凌源东|LDD|lingyuandong|lyd|2370@lyd|临沂东|UYK|linyidong|lyd|2371@lyi|临邑|LUK|linyi|ly|2372@lyi|临颍|LNF|linying|ly|2373@lyn|莱阳南|VEK|laiyangnan|lyn|2374@lyn|龙游南|LYU|longyounan|lyn|2375@lyo|龙游|LMH|longyou|ly|2376@lyu|礼乐|UEQ|liyue|ly|2377@lyu|林源|LYX|linyuan|ly|2378@lzb|鹿寨北|LSZ|luzhaibei|lzb|2379@lzb|临淄北|UEK|linzibei|lzb|2380@lze|临泽|LEJ|linze|lz|2381@lzh|雷州|UAQ|leizhou|lz|2382@lzh|来舟|LZS|laizhou|lz|2383@lzh|鹿寨|LIZ|luzhai|lz|2384@lzh|拉鲊|LEM|lazha|lz|2385@lzn|六枝南|LOE|liuzhinan|lzn|2386@lzn|临泽南|LDJ|linzenan|lzn|2387@mas|马鞍山|MAH|maanshan|mas|2388@mba|毛坝|MBY|maoba|mb|2389@mbg|毛坝关|MGY|maobaguan|mbg|2390@mch|明城|MCL|mingcheng|mc|2391@mch|毛陈|MHN|maochen|mc|2392@mch|渑池|MCF|mianchi|mc|2393@mch|庙城|MAP|miaocheng|mc|2394@mcp|茅草坪|KPM|maocaoping|mcp|2395@mdh|猛洞河|MUQ|mengdonghe|mdh|2396@mds|磨刀石|MOB|modaoshi|mds|2397@mfe|民丰|MFR|minfeng|mf|2398@mga|明港|MGN|minggang|mg|2399@mgd|明港东|MDN|minggangdong|mgd|2400@mhu|马皇|MHZ|mahuang|mh|2401@mji|墨江|MJM|mojiang|mj|2402@mji|闵集|MJN|minji|mj|2403@mla|马兰|MLR|malan|ml|2404@mld|汨罗东|MQQ|miluodong|mld|2405@mle|民乐|MBJ|minle|ml|2406@mlh|马莲河|MHB|malianhe|mlh|2407@mli|茅岭|MLZ|maoling|ml|2408@mli|庙岭|MLL|miaoling|ml|2409@mli|米林|MIO|milin|ml|2410@mli|麻柳|MLY|maliu|ml|2411@mli|茂林|MLD|maolin|ml|2412@mlo|马龙|MGM|malong|ml|2413@mlt|木里图|MUD|mulitu|mlt|2414@mlu|汨罗|MLQ|miluo|ml|2415@mnh|玛纳斯湖|MNR|manasihu|mnsh|2416@mpi|牟平|MBK|muping|mp|2417@mqb|民权北|MIF|minquanbei|mqb|2418@mqh|马桥河|MQB|maqiaohe|mqh|2419@mqi|闽清|MQS|minqing|mq|2420@msa|孟赛|VFM|mengsai|ms|2421@msh|眉山|MSW|meishan|ms|2422@msh|明水河|MUT|mingshuihe|msh|2423@msh|蒙山|MOK|mengshan|ms|2424@msh|麻山|MAB|mashan|ms|2425@msx|马山县|MAZ|mashanxian|msx|2426@mta|马踏|PWQ|mata|mt|2427@mxd|眉县东|CXY|meixiandong|mxd|2428@mxi|美溪|MEB|meixi|mx|2429@mya|麻阳|MVQ|mayang|my|2430@myd|米易东|MDE|miyidong|myd|2431@myu|麦园|MYS|maiyuan|my|2432@myx|麻阳西|MYA|mayangxi|myx|2433@mzh|庙庄|MZJ|miaozhuang|mz|2434@mzh|米脂|MEY|mizhi|mz|2435@mzh|明珠|MFQ|mingzhu|mz|2436@nbs|南博山|NBK|nanboshan|nbs|2437@nch|牛车河|NHA|niuchehe|nch|2438@nch|宁城|NCD|ningcheng|nc|2439@nch|南仇|NCK|nanqiu|nc|2440@ncs|南城司|NSP|nanchengsi|ncs|2441@ndu|宁都|NIG|ningdu|ndu|2442@ner|宁洱|NEM|ninger|ne|2443@nfb|南芬北|NUT|nanfenbei|nfb|2444@ngc|南观村|NGP|nanguancun|ngc|2445@ngd|南宫东|NFP|nangongdong|ngd|2446@ngu|宁国|NNH|ningguo|ng|2447@nhc|南河川|NHJ|nanhechuan|nhc|2448@nhu|南华|NAM|nanhua|nh|2449@nhu|宁化|NHS|ninghua|nh|2450@nhu|内黄|NUF|neihuang|nh|2451@nhz|泥河子|NHD|nihezi|nhz|2452@njd|内江东|NDE|neijiangdong|njd|2453@nji|宁家|NVT|ningjia|nj|2454@nji|能家|NJD|nengjia|nj|2455@nji|南靖|NJS|nanjing|nj|2456@njk|南江口|NDQ|nanjiangkou|njk|2457@nkq|南口前|NKT|nankouqian|nkq|2458@nla|南朗|NNQ|nanlang|nl|2459@nle|南乐|NWF|nanle|nl|2460@nlg|奈林皋|NGT|nailingao|nlg|2461@nli|乃林|NLD|nailin|nl|2462@nli|南陵|LLH|nanling|nl|2463@nlk|尼勒克|NIR|nileke|nlk|2464@nmi|宁明|NMZ|ningming|nm|2465@nmu|南木|NMX|nanmu|nm|2466@npb|南堡北|TLP|nanpubei|npb|2467@nqi|南桥|NQD|nanqiao|nq|2468@nto|南头|NOQ|nantou|nt|2469@ntu|南屯|NTR|nantun|nt|2470@ntu|乃托|YHW|naituo|nt|2471@nwz|南湾子|NWP|nanwanzi|nwz|2472@nxi|泥溪|NIE|nixi|nxi|2473@nxi|宁县|AXJ|ningxian|nx|2474@nxi|内乡|NXF|neixiang|nx|2475@nxx|宁乡西|NXA|ningxiangxi|nxx|2476@nzg|娘子关|NIP|niangziguan|nzg|2477@nzh|南漳|NZN|nanzhang|nz|2478@nzh|南召|NAF|nanzhao|nz|2479@nzm|南杂木|NZT|nanzamu|nzm|2480@pan|蓬安|PAW|pengan|pa|2481@pan|平安|PAL|pingan|pa|2482@pan|磐安南|PNU|panannan|pan|2483@pax|普安县|PUE|puanxian|pax|2484@pay|平安驿|PNO|pinganyi|pay|2485@paz|平安镇|PZT|pinganzhen|paz|2486@paz|磐安镇|PAJ|pananzhen|paz|2487@pbi|屏边|PBM|pingbian|pb|2488@pbn|平坝南|PBE|pingbanan|pbn|2489@pch|蒲城|PCY|pucheng|pc|2490@pde|裴德|PDB|peide|pd|2491@pdi|普定|PGW|puding|pd|2492@pdi|偏店|PRP|piandian|pd|2493@pga|平岗|PGL|pinggang|pg|2494@pgu|平果|PGZ|pingguo|pg|2495@pgu|平关|PGM|pingguan|pg|2496@pgu|盘关|PAM|panguan|pg|2497@phb|徘徊北|PHP|paihuaibei|phb|2498@phk|平河口|PHM|pinghekou|phk|2499@phu|平湖|PHQ|pinghu|ph|2500@pjd|潘家店|PDP|panjiadian|pjd|2501@pkn|皮口南|PKT|pikounan|pk|2502@pko|皮口|PUT|pikou|pk|2503@pna|屏南|PNS|pingnan|pn|2504@pnn|平南南|PAZ|pingnannan|pnn|2505@ppu|朋普|PRM|pengpu|pp|2506@psb|彭山北|PPW|pengshanbei|psb|2507@psh|蒲石|PSY|pushi|ps|2508@psh|彭山|PSW|pengshan|ps|2509@psh|彭水|PHW|pengshui|ps|2510@psh|屏山|PSE|pingshan|psh|2511@psh|平社|PSV|pingshe|ps|2512@psh|盘山|PUD|panshan|ps|2513@psh|坪上|PSK|pingshang|ps|2514@pta|平台|PVT|pingtai|pt|2515@pti|平田|PTM|pingtian|pt|2516@ptq|葡萄菁|PTW|putaojing|ptq|2517@pwa|平旺|PWV|pingwang|pw|2518@pxg|平型关|PGV|pingxingguan|pxg|2519@pxi|蓬溪|KZW|pengxi|px|2520@pya|平遥|PYV|pingyao|py|2521@pya|彭阳|PYJ|pengyang|py|2522@pya|鄱阳|POG|poyang|py|2523@pya|平洋|PYX|pingyang|py|2524@pyb|鄱阳北|PYG|poyangbei|pyb|2525@pyi|平邑|PIK|pingyi|py|2526@pyp|平原堡|PPJ|pingyuanpu|pyp|2527@pyu|平原|PYK|pingyuan|py|2528@pyu|平峪|PYP|pingyu|py|2529@pzb|平庄北|PZD|pingzhuangbei|pzb|2530@pzd|邳州东|PIU|pizhoudong|pzd|2531@pzh|平庄|PAD|pingzhuang|pz|2532@pzh|邳州|PJH|pizhou|pz|2533@pzi|泡子|POD|paozi|pz|2534@pzn|平庄南|PND|pingzhuangnan|pzn|2535@qan|乾安|QOT|qianan|qa|2536@qan|迁安|QQP|qianan|qa|2537@qan|秦安|QGJ|qinan|qa|2538@qch|庆城|QHJ|qingcheng|qc|2539@qcn|蕲春南|QCN|qichunnan|qcn|2540@qdb|祁东北|QRQ|qidongbei|qd|2541@qdc|青岛机场|QJK|qingdaojichang|qdjc|2542@qdo|祁东|QMQ|qidong|qd|2543@qdu|青堆|QET|qingdui|qd|2544@qfn|曲阜南|QQK|qufunan|qfn|2545@qft|奇峰塔|QVP|qifengta|qft|2546@qga|泉港|QGS|quangang|qg|2547@qhb|清河门北|QBD|qinghemenbei|qhmb|2548@qhe|千河|QUY|qianhe|qh|2549@qhe|齐河|QIK|qihe|qh|2550@qhm|清河门|QHD|qinghemen|qhm|2551@qji|渠旧|QJZ|qujiu|qj|2552@qji|潜江|QJN|qianjiang|qj|2553@qji|曲江|QIM|qujiang|qj|2554@qji|全椒|INH|quanjiao|qj|2555@qji|秦家|QJB|qinjia|qj|2556@qjp|祁家堡|QBT|qijiapu|qjp|2557@qjx|清涧县|QNY|qingjianxian|qjx|2558@qjz|秦家庄|QZV|qinjiazhuang|qjz|2559@qlh|七里河|QLD|qilihe|qlh|2560@qli|渠黎|QLZ|quli|ql|2561@qli|秦岭|QLY|qinling|ql|2562@qli|青莲|QEW|qinglian|ql|2563@qlo|青龙|QIB|qinglong|ql|2564@qls|青龙山|QGH|qinglongshan|qls|2565@qme|祁门|QIH|qimen|qm|2566@qmn|祁门南|QNU|qimennan|qmn|2567@qmo|且末|QMR|qiemo|qm|2568@qmt|前磨头|QMP|qianmotou|qmt|2569@qsb|清水北|QEJ|qingshuibei|qsb|2570@qsh|青神|QVW|qingshen|qs|2571@qsh|岐山|QAY|qishan|qs|2572@qsh|前山|QXQ|qianshan|qs|2573@qsh|确山|QSN|queshan|qs|2574@qsh|清水|QUJ|qingshui|qs|2575@qsh|青山|QSB|qingshan|qs|2576@qsx|清水县|QIJ|qingshuixian|qsx|2577@qsy|戚墅堰|QYH|qishuyan|qsy|2578@qti|青田|QVH|qingtian|qt|2579@qto|桥头|QAT|qiaotou|qt|2580@qwe|犍为|JWE|qianwei|qwe|2581@qwe|前卫|QWD|qianwei|qw|2582@qwt|前苇塘|QWP|qianweitang|qwt|2583@qxd|祁县东|QGV|qixiandong|qxd|2584@qxi|黔西|QXE|qianxi|qx|2585@qxi|祁县|QXV|qixian|qx|2586@qxi|乾县|QBY|qianxian|qx|2587@qxi|青县|QXP|qingxian|qx|2588@qxi|桥西|QXJ|qiaoxi|qx|2589@qxn|旗下营南|QNC|qixiayingnan|qxyn|2590@qxy|旗下营|QXC|qixiaying|qxy|2591@qya|泉阳|QYL|quanyang|qy|2592@qya|千阳|QOY|qianyang|qy|2593@qya|祁阳|QWQ|qiyang|qy|2594@qya|沁阳|QYF|qinyang|qy|2595@qyb|祁阳北|QVQ|qiyangbei|qy|2596@qyi|七营|QYJ|qiying|qy|2597@qys|庆阳山|QSJ|qingyangshan|qys|2598@qyu|清原|QYT|qingyuan|qy|2599@qzb|青州市北|QOK|qingzhoushibei|qzsb|2600@qzd|泉州东|QRS|quanzhoudong|qzd|2601@qzh|钦州|QRZ|qinzhou|qz|2602@qzi|曲子|QJJ|quzi|qz|2603@qzn|泉州南|QNS|quanzhounan|qzn|2604@qzs|青州市|QZK|qingzhoushi|qzs|2605@qzw|棋子湾|QZQ|qiziwan|qzw|2606@rbu|仁布|RUO|renbu|rb|2607@rch|瑞昌|RCG|ruichang|rc|2608@rcx|瑞昌西|RXG|ruichangxi|rcx|2609@rga|如皋|RBH|rugao|rg|2610@rgn|如皋南|RNU|rugaonan|rgn|2611@rgu|容桂|RUQ|ronggui|rg|2612@rji|榕江|RVW|rongjiang|rj|2613@rqi|任丘|RQP|renqiu|rq|2614@rsh|融水|RSZ|rongshui|rs|2615@rsh|乳山|ROK|rushan|rs|2616@rxi|容县|RXZ|rongxian|rx|2617@rya|饶阳|RVP|raoyang|ry|2618@rya|汝阳|RYF|ruyang|ry|2619@ryh|绕阳河|RHD|raoyanghe|ryh|2620@rzh|汝州|ROF|ruzhou|rz|2621@sba|石坝|OBJ|shiba|sb|2622@sbc|上板城|SBP|shangbancheng|sbc|2623@sbi|施秉|AQW|shibing|sb|2624@sbn|上板城南|OBP|shangbanchengnan|sbcn|2625@scd|石城东|SDG|shichengdong|scd|2626@sch|商城|SWN|shangcheng|sc|2627@sch|舒城|OCH|shucheng|sc|2628@sch|遂昌|SCU|suichang|sc|2629@sch|顺昌|SCS|shunchang|sc|2630@sch|神池|SMV|shenchi|sc|2631@sch|石城|SCT|shicheng|sc|2632@scz|山城镇|SCL|shanchengzhen|scz|2633@sda|山丹|SDJ|shandan|sd|2634@sdc|山丹马场|JEJ|shandanmachang|sdmc|2635@sde|绥德|ODY|suide|sd|2636@sde|顺德|ORQ|shunde|sd|2637@sdu|商都|SXC|shangdu|sd|2638@sdw|四道湾|OUD|sidaowan|sdw|2639@sdx|三都县|KKW|sanduxian|sdx|2640@sdy|顺德学院|OJQ|shundexueyuan|sdxy|2641@sfa|胜芳|SUP|shengfang|sf|2642@sft|四方台|STB|sifangtai|sft|2643@sfu|水富|OTW|shuifu|sf|2644@sgk|三关口|OKJ|sanguankou|sgk|2645@sgl|桑根达来|OGC|sanggendalai|sgdl|2646@sgz|上高镇|SVK|shanggaozhen|sgz|2647@sha|上杭|SNS|shanghang|sh|2648@she|蜀河|SHY|shuhe|sh|2649@she|松河|SBM|songhe|sh|2650@shk|沙河口|SKT|shahekou|shk|2651@shl|赛汗塔拉|SHC|saihantala|shtl|2652@sho|泗洪|GQH|sihong|sh|2653@shs|双河市|OHR|shuangheshi|shs|2654@shu|四会|AHQ|sihui|sh|2655@shx|三河县|OXP|sanhexian|shx|2656@shy|四合永|OHD|siheyong|shy|2657@shz|双河镇|SEL|shuanghezhen|shz|2658@shz|三合庄|SVP|sanhezhuang|shz|2659@sjb|畲江北|SOA|shejiangbei|sjb|2660@sjh|沈家河|OJJ|shenjiahe|sjh|2661@sji|双吉|SML|shuangji|sj|2662@sji|尚家|SJB|shangjia|sj|2663@sjk|三江口|SKD|sanjiangkou|sjk|2664@sjl|司家岭|OLK|sijialing|sjl|2665@sjx|沙井西|SJA|shajingxi|sjx|2666@sjz|松江镇|OZL|songjiangzhen|sjz|2667@sjz|三井子|OJT|sanjingzi|sjz|2668@sjz|十家子|SJD|shijiazi|sjz|2669@sjz|三家寨|SMM|sanjiazhai|sjz|2670@sld|什里店|OMP|shilidian|sld|2671@sle|疏勒|SUR|shule|sl|2672@slh|舍力虎|VLD|shelihu|slh|2673@slh|疏勒河|SHJ|shulehe|slh|2674@sli|双辽|ZJD|shuangliao|sl|2675@sli|石岭|SOL|shiling|sl|2676@sli|石磷|SPB|shilin|sl|2677@slo|石龙|SLQ|shilong|sl|2678@slq|萨拉齐|SLC|salaqi|slq|2679@slu|索伦|SNT|suolun|sl|2680@slz|沙岭子|SLP|shalingzi|slz|2681@smx|石门县|OMQ|shimenxian|smx|2682@smx|神木西|OUY|shenmuxi|smx|2683@sna|山南|SAO|shannan|sna|2684@sni|肃宁|SYP|suning|sn|2685@snj|神农架|SMN|shennongjia|snj|2686@snq|苏尼特左旗|ONC|sunitezuoqi|sntzq|2687@spa|双牌|SBZ|shuangpai|sp|2688@spi|遂平|SON|suiping|sp|2689@spt|沙坡头|SFJ|shapotou|spt|2690@sqd|商丘东|SIF|shangqiudong|sqd|2691@sqi|石桥|SQE|shiqiao|sq|2692@sqi|沈丘|SQN|shenqiu|sq|2693@sqn|商丘南|SPF|shangqiunan|sqn|2694@squ|水泉|SID|shuiquan|sq|2695@sri|桑日|SRO|sangri|sri|2696@ssb|狮山北|NSQ|shishanbei|ssb|2697@ssb|三水北|ARQ|sanshuibei|ssb|2698@ssb|松山湖北|KUQ|songshanhubei|sshb|2699@ssh|鄯善|SSR|shanshan|ss|2700@ssh|狮山|KSQ|shishan|ss|2701@ssh|松树|SFT|songshu|ss|2702@ssh|三水|SJQ|sanshui|ss|2703@ssh|泗水|OSK|sishui|ss|2704@ssh|山市|SQB|shanshi|ss|2705@ssj|三十家|SRD|sanshijia|ssj|2706@ssn|三水南|RNQ|sanshuinan|ssn|2707@ssn|泗水南|ONK|sishuinan|ssn|2708@ssz|松树镇|SSL|songshuzhen|ssz|2709@ssz|双水镇|PQQ|shuangshuizhen|ssz|2710@sth|索图罕|SHX|suotuhan|sth|2711@sti|石梯|STE|shiti|st|2712@stj|三堂集|SDH|santangji|stj|2713@sto|神头|SEV|shentou|st|2714@sto|石头|OTB|shitou|st|2715@stu|沙沱|SFM|shatuo|st|2716@swa|上万|SWP|shangwan|sw|2717@swn|沙湾南|SWE|shawannan|swn|2718@sws|沙湾市|SXR|shawanshi|sws|2719@swu|孙吴|SKB|sunwu|sw|2720@sxb|歙县北|NPH|shexianbei|sxb|2721@sxi|遂溪|SXZ|suixi|sx|2722@sxi|石岘|SXL|shixian|sx|2723@sxi|寿县|SOU|shouxian|sx|2724@sxi|沙县|SAS|shaxian|sx|2725@sxi|始兴|IPQ|shixing|sx|2726@sxi|随县|OVN|suixian|sx|2727@sxi|歙县|OVH|shexian|sx|2728@sxi|泗县|GPH|sixian|sx|2729@sxi|水茜|SSS|shuixi|sx|2730@sxp|上西铺|SXM|shangxipu|sxp|2731@sxz|石峡子|SXJ|shixiazi|sxz|2732@sya|寿阳|SYV|shouyang|sy|2733@sya|泗阳|MPH|siyang|sy|2734@sya|沭阳|FMH|shuyang|sy|2735@sya|松阳|SUU|songyang|sy|2736@sya|水洋|OYP|shuiyang|sy|2737@sya|三阳|SYU|sanyang|sy|2738@sya|射阳|SAU|sheyang|sy|2739@sya|双洋|SQS|shuangyang|sy|2740@sya|绥阳|SYB|suiyang|sy|2741@syb|松原北|OCT|songyuanbei|syb|2742@syb|邵阳北|OVQ|shaoyangbei|syb|2743@syc|三阳川|SYJ|sanyangchuan|syc|2744@syd|上腰墩|SPJ|shangyaodun|syd|2745@syi|三营|OEJ|sanying|sy|2746@syi|山阴|SNV|shanyin|sy|2747@syn|上虞南|SVU|shangyunan|syn|2748@syp|三源浦|SYL|sanyuanpu|syp|2749@syu|上园|SUD|shangyuan|sy|2750@syu|三原|SAY|sanyuan|sy|2751@syu|上虞|BDH|shangyu|sy|2752@syx|邵阳西|SXA|shaoyangxi|syx|2753@szb|绥中北|SND|suizhongbei|szb|2754@szb|深圳机场北|SBA|shenzhenjichangbei|szjcb|2755@szb|嵊州北|SEU|shengzhoubei|szb|2756@szd|三灶东|SAA|sanzaodong|szd|2757@szh|孙镇|OZY|sunzhen|sz|2758@szh|神州|SRQ|shenzhou|sz|2759@szh|桑植|SZA|sangzhi|sz|2760@szh|深州|OZP|shenzhou|sz|2761@szh|肃州|SRJ|suzhou|sz|2762@szi|松滋|SIN|songzi|sz|2763@szm|十字门|SIA|shizimen|szm|2764@szo|师宗|SEM|shizong|sz|2765@szq|苏州园区|KAH|suzhouyuanqu|szyq|2766@szq|苏州新区|ITH|suzhouxinqu|szxq|2767@tan|台安|TID|taian|ta|2768@tan|台安南|TAD|taiannan|tan|2769@tay|通安驿|TAJ|tonganyi|tay|2770@tba|桐柏|TBF|tongbai|tb|2771@tca|太仓|TCU|taicang|tc|2772@tcb|桃村北|TOK|taocunbei|tcb|2773@tcd|桐城东|TOU|tongchengdong|tcd|2774@tcg|铁厂沟|TJR|tiechanggou|tcg|2775@tch|铁厂|TCL|tiechang|tc|2776@tch|郯城|TZK|tancheng|tc|2777@tch|桐城|TTH|tongcheng|tc|2778@tcn|桐城南|TUU|tongchengnan|tcn|2779@tcn|太仓南|TNU|taicangnan|tcn|2780@tcs|铁刹山|PST|tiechashan|tcs|2781@tcu|桃村|TCK|taocun|tc|2782@tdb|田东北|TBZ|tiandongbei|tdb|2783@tdo|田东|TDZ|tiandong|td|2784@tga|天岗|TGL|tiangang|tg|2785@tgd|太谷东|TEV|taigudong|tgd|2786@tgk|铁干里克|VAR|tieganlike|tglk|2787@tgl|土贵乌拉|TGC|tuguiwula|tgwl|2788@tgx|太谷西|TIV|taiguxi|tgx|2789@thb|太和北|JYN|taihebei|thb|2790@thd|太和东|TDU|taihedong|thd|2791@the|唐河|THF|tanghe|th|2792@thn|唐海南|IEP|tanghainan|thn|2793@thx|通化县|TXL|tonghuaxian|thx|2794@tji|团结|TIX|tuanjie|tj|2795@tjj|谭家井|TNJ|tanjiajing|tjj|2796@tjw|唐家湾|PDQ|tangjiawan|tjw|2797@tjz|统军庄|TZP|tongjunzhuang|tjz|2798@tlb|铜陵北|KXH|tonglingbei|tlb|2799@tld|吐列毛杜|TMD|tuliemaodu|tlmd|2800@tlh|图里河|TEX|tulihe|tlh|2801@tli|亭亮|TIZ|tingliang|tl|2802@tli|田林|TFZ|tianlin|tl|2803@tme|天门|TMN|tianmen|tm|2804@tms|太姥山|TLS|taimushan|tms|2805@tmt|土牧尔台|TRC|tumuertai|tmet|2806@tmz|土门子|TCJ|tumenzi|tmz|2807@tna|洮南|TVT|taonan|tn|2808@tpc|太平川|TIT|taipingchuan|tpc|2809@tpz|太平镇|TEB|taipingzhen|tpz|2810@tqi|台前|TTK|taiqian|tq|2811@tqi|图强|TQX|tuqiang|tq|2812@tql|天桥岭|TQL|tianqiaoling|tql|2813@tqz|土桥子|TQJ|tuqiaozi|tqz|2814@tsb|甜水堡|TUJ|tianshuibu|tsb|2815@tsc|汤山城|TCT|tangshancheng|tsc|2816@tsh|台山|PUQ|taishan|ts|2817@tsh|桃山|TAB|taoshan|ts|2818@tsx|唐山西|TSI|tangshanxi|tsx|2819@tts|天台山|TIU|tiantaishan|tts|2820@ttu|通途|TUT|tongtu|tt|2821@twe|通渭|TWJ|tongwei|tw|2822@txd|田心东|KQQ|tianxindong|txd|2823@txi|藤县|TAZ|tengxian|tx|2824@txi|同心|TXJ|tongxin|tx|2825@txi|桐乡|TCH|tongxiang|tx|2826@tya|田阳|TRZ|tianyang|ty|2827@tyi|天义|TND|tianyi|ty|2828@tyi|汤阴|TYF|tangyin|ty|2829@tyl|驼腰岭|TIL|tuoyaoling|tyl|2830@tys|太阳山|TYJ|taiyangshan|tys|2831@tyu|桃源|TYA|taoyuan|ty|2832@tyu|汤原|TYB|tangyuan|ty|2833@tyx|通远堡西|TST|tongyuanpuxi|typx|2834@tyy|塔崖驿|TYP|tayayi|tyy|2835@tzh|滕州|TXK|tengzhou|tz|2836@tzh|天镇|TZV|tianzhen|tz|2837@tzh|天祝|TZJ|tianzhu|tz|2838@tzs|天柱山|QWH|tianzhushan|tzs|2839@wan|武安|WAP|wuan|wa|2840@wan|文安|WBP|wenan|wa|2841@wax|万安县|WAG|wananxian|wax|2842@waz|王安镇|WVP|wanganzhen|waz|2843@wbu|吴堡|WUY|wubu|wb|2844@wcg|五叉沟|WCT|wuchagou|wcg|2845@wch|吴川|WAQ|wuchuan|wc|2846@wch|温春|WDB|wenchun|wc|2847@wdc|五大连池|WRB|wudalianchi|wdlc|2848@wdd|文登东|WGK|wendengdong|wdd|2849@wde|文登|WBK|wendeng|wd|2850@wdg|五道沟|WDL|wudaogou|wdg|2851@wdh|五道河|WHP|wudaohe|wdh|2852@wdi|文地|WNZ|wendi|wd|2853@wdn|文登南|WWK|wendengnan|wdn|2854@wdo|卫东|WVT|weidong|wd|2855@wdu|望都|WDP|wangdu|wd|2856@wdx|武当山西|WWN|wudangshanxi|wdsx|2857@weh|乌尔旗汗|WHX|wuerqihan|weqh|2858@wfb|潍坊北|WJK|weifangbei|wfb|2859@wfs|五府山|WFG|wufushan|wfs|2860@wfu|王府|WUT|wangfu|wf|2861@wgo|湾沟|WGL|wangou|wg|2862@wgt|吴官田|WGM|wuguantian|wgt|2863@whb|威虎岭北|WBL|weihulingbei|whlb|2864@whb|威海北|WHK|weihaibei|whb|2865@whb|芜湖北|WBU|wuhubei|whb|2866@whh|威海南海|WRK|weihainanhai|whnh|2867@whn|芜湖南|RVH|wuhunan|whn|2868@whn|卫辉南|WVF|weihuinan|whn|2869@whu|卫辉|WHF|weihui|wh|2870@wjc|吴家川|WCJ|wujiachuan|wjc|2871@wji|渭津|WJL|weijin|wj|2872@wji|午汲|WJP|wuji|wj|2873@wji|威箐|WAM|weiqing|wj|2874@wjq|魏家泉|WJR|weijiaquan|wjq|2875@wke|倭肯|WQB|woken|wk|2876@wla|乌兰|WIO|wulan|wl|2877@wlb|五龙背|WBT|wulongbei|wlb|2878@wld|五龙背东|WMT|wulongbeidong|wlbd|2879@wlg|瓦拉干|WVX|walagan|wlg|2880@wli|五莲|WLK|wulian|wl|2881@wls|卧龙寺|WLY|wolongsi|wls|2882@wlt|乌兰木图|VLT|wulanmutu|wlmt|2883@wlt|卧里屯|WLX|wolitun|wlt|2884@wnd|望牛墩|WNA|wangniudun|wnd|2885@wne|乌奴耳|WRX|wunuer|wne|2886@wni|万宁|WNQ|wanning|wn|2887@wni|万年|WWG|wannian|wn|2888@wnn|渭南南|WVY|weinannan|wnn|2889@wnz|渭南镇|WNJ|weinanzhen|wnz|2890@wpi|武平|WPS|wuping|wp|2891@wqi|吴桥|WUP|wuqiao|wq|2892@wro|万荣|VOM|wanrong|wr|2893@wsh|巫山|WOE|wushan|ws|2894@wsh|文水|WEV|wenshui|ws|2895@wsh|巍山|WOM|weishan|ws|2896@wsh|武山|WSJ|wushan|ws|2897@wsx|瓦石峡|WHR|washixia|wsx|2898@wsz|魏善庄|WSP|weishanzhuang|wsz|2899@wto|五通|WTZ|wutong|wt|2900@wto|王瞳|WTP|wangtong|wt|2901@wts|五台山|WSV|wutaishan|wts|2902@wtz|王团庄|WZJ|wangtuanzhuang|wtz|2903@wwe|无为|IIH|wuwei|ww|2904@wws|瓦屋山|WAH|wawushan|wws|2905@wwu|五五|WVR|wuwu|ww|2906@wxd|武乡东|WVV|wuxiangdong|wxd|2907@wxi|威信|WXE|weixin|wx|2908@wxi|武乡|WUV|wuxiang|wx|2909@wxi|闻喜|WXV|wenxi|wx|2910@wxi|卫星|WVB|weixing|wx|2911@wxq|无锡新区|IFH|wuxixinqu|wxxq|2912@wya|王杨|WYB|wangyang|wy|2913@wyb|武义北|WDH|wuyibei|wyb|2914@wyi|武义|RYH|wuyi|wy|2915@wyt|瓦窑田|WIM|wayaotian|wyt|2916@wyu|五原|WYC|wuyuan|wy|2917@wza|湾仔|WZA|wanzai|wz|2918@wzb|湾仔北|WBA|wanzaibei|wzb|2919@wzb|温州北|URH|wenzhoubei|yj|2920@wzg|苇子沟|WZL|weizigou|wzg|2921@wzh|韦庄|WZY|weizhuang|wz|2922@wzh|五寨|WZV|wuzhai|wz|2923@wzh|武陟|WIF|wuzhi|wz|2924@wzn|湾沚南|WNU|wanzhinan|wzn|2925@wzz|魏杖子|WKD|weizhangzi|wzz|2926@wzz|微子镇|WQP|weizizhen|wzz|2927@xan|兴安|XAZ|xingan|xa|2928@xan|新安|EAM|xinan|xa|2929@xax|新安县|XAF|xinanxian|xax|2930@xba|新保安|XAP|xinbaoan|xba|2931@xbc|下板城|EBP|xiabancheng|xbc|2932@xbl|西八里|XLP|xibali|xbl|2933@xcb|新昌北|XBU|xinchangbei|xcb|2934@xcb|许昌北|EBF|xuchangbei|xcb|2935@xch|项城|ERN|xiangcheng|xc|2936@xcu|小村|XEM|xiaocun|xc|2937@xcx|兴城西|XXD|xingchengxi|xcx|2938@xcy|新绰源|XRX|xinchuoyuan|xcy|2939@xcz|下城子|XCB|xiachengzi|xcz|2940@xde|喜德|EDW|xide|xd|2941@xdj|小得江|EJM|xiaodejiang|xdj|2942@xdm|西大庙|XMP|xidamiao|xdm|2943@xdo|小董|XEZ|xiaodong|xd|2944@xdo|小东|XOD|xiaodong|xd|2945@xdu|西渡|XDA|xidu|xd|2946@xdx|喜德西|XXE|xidexi|xdx|2947@xfe|襄汾|XFV|xiangfen|xf|2948@xfe|信丰|EFG|xinfeng|xf|2949@xfx|襄汾西|XTV|xiangfenxi|xfx|2950@xfx|信丰西|XFG|xinfengxi|xfx|2951@xga|新干|EGG|xingan|xg|2952@xga|孝感|XGN|xiaogan|xg|2953@xgd|新干东|XGG|xingandong|xgd|2954@xgx|兴国西|XIG|xingguoxi|xgx|2955@xgz|夏格庄|XZK|xiagezhuang|xgz|2956@xgz|西岗子|NBB|xigangzi|xgz|2957@xhb|宣化北|VJP|xuanhuabei|xhb|2958@xhd|西湖东|WDQ|xihudong|xhd|2959@xhe|新和|XIR|xinhe|xh|2960@xhe|宣和|XWJ|xuanhe|xh|2961@xhe|香河|XHI|xianghe|xh|2962@xhe|襄河|XXB|xianghe|xh|2963@xhj|斜河涧|EEP|xiehejian|xhj|2964@xht|新华屯|XAX|xinhuatun|xht|2965@xhu|新华|XHB|xinhua|xh|2966@xhu|新化|EHQ|xinhua|xh|2967@xhu|宣化|XHP|xuanhua|xh|2968@xhu|西华|EHF|xihua|xh|2969@xhy|下花园|XYP|xiahuayuan|xhy|2970@xhz|小河镇|EKY|xiaohezhen|xhz|2971@xjd|徐家店|HYK|xujiadian|xjd|2972@xji|峡江|EJG|xiajiang|xj|2973@xji|新绛|XJV|xinjiang|xj|2974@xjn|仙居南|XNU|xianjunan|xjn|2975@xjt|许家屯|XJT|xujiatun|xjt|2976@xka|兴凯|EKB|xingkai|xk|2977@xko|溪口|XKU|xikou|xk|2978@xla|小榄|EAQ|xiaolan|xl|2979@xla|香兰|XNB|xianglan|xl|2980@xli|新李|XLJ|xinli|xl|2981@xli|西柳|GCT|xiliu|xl|2982@xli|西林|XYB|xilin|xl|2983@xli|新林|XPX|xinlin|xl|2984@xlt|新立屯|XLD|xinlitun|xlt|2985@xlx|兴隆县西|IRP|xilongxianxi|xlxx|2986@xms|西麻山|XMB|ximashan|xms|2987@xmt|下马塘|XAT|xiamatang|xmt|2988@xna|孝南|XNV|xiaonan|xn|2989@xnb|咸宁北|XRN|xianningbei|xnb|2990@xnd|咸宁东|XKN|xianningdong|xnd|2991@xni|兴宁|ENQ|xingning|xn|2992@xni|咸宁|XNN|xianning|xn|2993@xpi|兴平|XPY|xingping|xp|2994@xpi|西平|XPN|xiping|xp|2995@xpt|新坪田|XPM|xinpingtian|xpt|2996@xpx|西平西|EGQ|xipingxi|xpx|2997@xqi|新邱|XQD|xinqiu|xq|2998@xqi|新青|XQB|xinqing|xq|2999@xqp|兴泉堡|XQJ|xingquanbu|xqp|3000@xrq|仙人桥|XRL|xianrenqiao|xrq|3001@xsg|小寺沟|ESP|xiaosigou|xsg|3002@xsh|夏石|XIZ|xiashi|xs|3003@xsh|浠水|XZN|xishui|xs|3004@xsh|杏树|XSB|xingshu|xs|3005@xsh|下社|XSV|xiashe|xs|3006@xsh|徐水|XSP|xushui|xs|3007@xsn|浠水南|VNN|xishuinan|xsn|3008@xst|杏树屯|XDT|xingshutun|xst|3009@xsw|许三湾|XSJ|xusanwan|xsw|3010@xsx|响水县|XSU|xiangshuixian|xsx|3011@xta|邢台|XTP|xingtai|xt|3012@xtb|湘潭北|EDQ|xiangtanbei|xtb|3013@xtx|仙桃西|XAN|xiantaoxi|xtx|3014@xtz|下台子|EIP|xiataizi|xtz|3015@xwd|小湾东|XNM|xiaowandong|xwd|3016@xwe|徐闻|XJQ|xuwen|xw|3017@xwn|兴文南|XAE|xingwennan|xwn|3018@xwp|新窝铺|EPD|xinwopu|xwp|3019@xwq|西乌旗|XWD|xiwuqi|xwq|3020@xwu|修武|XWF|xiuwu|xw|3021@xwx|修武西|EXF|xiuwuxi|xwx|3022@xxi|新县|XSN|xinxian|xx|3023@xxi|息县|ENN|xixian|xx|3024@xxi|湘乡|XXQ|xiangxiang|xx|3025@xxi|萧县|EOH|xiaoxian|xx|3026@xxn|新乡南|ENF|xinxiangnan|xxn|3027@xxx|新兴县|XGQ|xinxingxian|xxx|3028@xxz|西小召|XZC|xixiaozhao|xxz|3029@xxz|小西庄|XXP|xiaoxizhuang|xxz|3030@xya|向阳|XDB|xiangyang|xy|3031@xyb|旬阳北|XBY|xunyangbei|xyb|3032@xyb|咸阳北|EBY|xianyangbei|xyb|3033@xyd|襄垣东|EAF|xiangyuandong|xyd|3034@xye|兴业|SNZ|xingye|xy|3035@xyg|小雨谷|XHM|xiaoyugu|xyg|3036@xyi|新沂|VIH|xinyi|xy|3037@xyj|小月旧|XFM|xiaoyuejiu|xyj|3038@xyn|新沂南|XYU|xinyinan|xyn|3039@xyo|仙游|XWS|xianyou|xy|3040@xyq|小扬气|XYX|xiaoyangqi|xyq|3041@xyu|襄垣|EIF|xiangyuan|xy|3042@xyx|夏邑县|EJH|xiayixian|xyx|3043@xyy|新友谊|EYB|xinyouyi|xyy|3044@xyz|新阳镇|XZJ|xinyangzhen|xyz|3045@xzf|新帐房|XZX|xinzhangfang|xzf|3046@xzh|悬钟|XRP|xuanzhong|xz|3047@xzi|汐子|XZD|xizi|xz|3048@xzm|西哲里木|XRD|xizhelimu|xzlm|3049@xzz|新杖子|ERP|xinzhangzi|xzz|3050@yan|永安|YAS|yongan|ya|3051@yax|永安乡|YNB|yonganxiang|yax|3052@yaz|永安镇|YQZ|yonganzhen|yaz|3053@ybi|盐边|YBE|yanbian|yb|3054@yca|羊草|YAB|yangcao|yc|3055@ycb|永城北|RGH|yongchengbei|ycb|3056@ycd|秧草地|YKM|yangcaodi|ycd|3057@ycd|禹城东|YSK|yuchengdong|ycd|3058@ycf|盐城大丰|YFU|yanchengdafeng|ycdf|3059@ych|砚川|YYY|yanchuan|yc|3060@ych|盐池|YKJ|yanchi|yc|3061@ych|阳岔|YAL|yangcha|yc|3062@ych|应城|YHN|yingcheng|yc|3063@ych|宜城|YIN|yicheng|yc|3064@ych|郓城|YPK|yuncheng|yc|3065@ych|晏城|YEK|yancheng|yc|3066@ych|禹城|YCK|yucheng|yc|3067@ych|阳澄湖|AIH|yangchenghu|ych|3068@ych|阳城|YNF|yangcheng|yc|3069@ych|迎春|YYB|yingchun|yc|3070@ych|雁翅|YAP|yanchi|yc|3071@ycl|云彩岭|ACP|yuncailing|ycl|3072@ycx|虞城县|IXH|yuchengxian|ycx|3073@ycz|营城子|YCT|yingchengzi|ycz|3074@ydb|于都北|YYG|yudubei|ydb|3075@yde|英德|YDQ|yingde|yd|3076@ydh|云东海|NAQ|yundonghai|ydh|3077@ydi|尹地|YDM|yindi|yd|3078@ydi|永定|YGS|yongding|yd|3079@ydo|阳东|WLQ|yangdong|yd|3080@ydu|园墩|YAJ|yuandun|yd|3081@yfn|永福南|YBZ|yongfunan|yfn|3082@yga|余干|YFG|yugan|yg|3083@yga|阳高|YOV|yanggao|yg|3084@yga|杨岗|YRB|yanggang|yg|3085@yge|雨格|VTM|yuge|yg|3086@ygn|阳高南|AGV|yanggaonan|ygn|3087@ygu|阳谷|YIK|yanggu|yg|3088@yha|友好|YOB|youhao|yh|3089@yhc|沿河城|YHP|yanhecheng|yhc|3090@yhe|洋河|GTH|yanghe|yh|3091@yhu|岩会|AEP|yanhui|yh|3092@yjh|羊臼河|YHM|yangjiuhe|yjh|3093@yji|元江|AJM|yuanjiang|yj|3094@yji|叶集|YCH|yeji|yj|3095@yji|营街|YAM|yingjie|yj|3096@yji|余江|YHG|yujiang|yj|3097@yjj|岳家井|YGJ|yuejiajing|yjj|3098@yjs|云居寺|AFP|yunjusi|yjs|3099@yjz|燕家庄|AZK|yanjiazhuang|yjz|3100@yka|永康|RFH|yongkang|yk|3101@ykl|英库勒|YLR|yinfkule|ykl|3102@yla|银浪|YJX|yinlang|yl|3103@yle|以勒|YPE|yile|yl|3104@ylh|运粮河|YEF|yunlianghe|ylh|3105@ylh|伊拉哈|YLX|yilaha|ylh|3106@yli|尉犁|WRR|yuli|yl|3107@yli|鄢陵|YIF|yanling|yl|3108@yli|伊林|YLB|yilin|yl|3109@ylt|月亮田|YUM|yueliangtian|ylt|3110@yma|义马|YMF|yima|ym|3111@ymb|阳明堡|YVV|yangmingbu|ymb|3112@yme|云梦|YMN|yunmeng|ym|3113@ymi|伊敏|YMX|yimin|ym|3114@yms|一面山|YST|yimianshan|yms|3115@yna|沂南|YNK|yinan|yn|3116@yny|云南驿|ANM|yunnanyi|yny|3117@ypi|银瓶|KPQ|yinping|yp|3118@yps|营盘水|YZJ|yingpanshui|yps|3119@yqd|乐清东|OLH|yueqingdong|yqd|3120@yqi|永庆|YQL|yongqing|yq|3121@yqi|杨桥|YQA|yangqiao|yq|3122@yqi|源迁|AQK|yuanqian|yq|3123@yqz|玉泉镇|YFR|yuquanzhen|yqz|3124@yre|永仁|ARM|yongren|yr|3125@ysb|颍上北|YBU|yingshangbei|ysb|3126@ysg|野三关|BNN|yesanguan|ysg|3127@ysg|榆树沟|YGP|yushugou|ysg|3128@ysh|玉石|YSJ|yushi|ys|3129@ysh|阳朔|YCZ|yangshuo|ys|3130@ysh|永寿|ASY|yongshou|ys|3131@ysh|云山|KZQ|yunshan|ys|3132@ysh|窑上|ASP|yaoshang|ys|3133@ysh|玉舍|AUM|yushe|ys|3134@ysh|沂水|YUK|yishui|ys|3135@ysh|颍上|YVH|yingshang|ys|3136@ysh|偃师|YSF|yanshi|ys|3137@ysh|月山|YBF|yueshan|ys|3138@ysl|杨树岭|YAD|yangshuling|ysl|3139@ysn|雁石南|YMS|yanshinan|ysn|3140@ysp|野三坡|AIP|yesanpo|ysp|3141@ysx|榆社西|AXV|yushexi|ysx|3142@ysx|永寿西|AUY|yongshouxi|ysx|3143@ysz|鹰手营子|YIP|yingshouyingzi|ysyz|3144@yta|源潭|YTQ|yuantan|yt|3145@yti|于田|YWR|yutian|yt|3146@ytn|玉田南|YTI|yutiannan|ytn|3147@yto|伊通|YTL|yitong|yt|3148@ytp|牙屯堡|YTZ|yatunpu|ytp|3149@ytt|烟筒屯|YUX|yantongtun|ytt|3150@ytx|烟台西|YTK|yantaixi|ytx|3151@yws|羊尾哨|YWM|yangweishao|yws|3152@yxd|黟县东|YIU|yixiandong|yxd|3153@yxg|野象谷|AGM|yexianggu|yxg|3154@yxi|阳西|WMQ|yangxi|yx|3155@yxi|云县|AIM|yunxian|yx|3156@yxi|阳信|YVK|yangxin|yx|3157@yxi|应县|YZV|yingxian|yx|3158@yxi|攸县|YOG|youxian|yx|3159@yxi|永修|ACG|yongxiu|yx|3160@yxn|攸县南|YXG|youxiannan|yxn|3161@yxx|洋县西|YXY|yangxianxi|yxx|3162@yxx|义县西|YSD|yixianxi|yxx|3163@yya|云阳|YUE|yunyang|yy|3164@yya|酉阳|AFW|youyang|yy|3165@yya|弋阳|YIG|yiyang|yy|3166@yya|余姚|YYH|yuyao|yy|3167@yyb|余姚北|CTH|yuyaobei|yyb|3168@yyi|阳邑|ARP|yangyi|yy|3169@yyu|杨源|AYS|yangyuan|yy|3170@yyz|鸳鸯镇|YYJ|yuanyangzhen|yyz|3171@yzb|燕子砭|YZY|yanzibian|yzb|3172@yzh|宜州|YSZ|yizhou|yz|3173@yzh|银盏|YZA|yinzhan|yz|3174@yzh|仪征|UZH|yizheng|yz|3175@yzh|耀州|YOY|yaozhou|yz|3176@yzh|禹州|YZF|yuzhou|yz|3177@yzi|迤资|YQM|yizi|yz|3178@yzw|羊者窝|AEM|yangzhewo|yzw|3179@yzz|杨杖子|YZD|yangzhangzi|yzz|3180@zan|镇安|ZEY|zhenan|za|3181@zan|治安|ZAD|zhian|za|3182@zba|招柏|ZBP|zhaobai|zb|3183@zbw|张百湾|ZUP|zhangbaiwan|zbw|3184@zch|子长|ZHY|zichang|zc|3185@zch|赵城|ZCV|zhaocheng|zc|3186@zch|枝城|ZCN|zhicheng|zc|3187@zch|邹城|ZIK|zoucheng|zc|3188@zch|诸城|ZQK|zhucheng|zc|3189@zda|章党|ZHT|zhangdang|zd|3190@zdo|肇东|ZDB|zhaodong|zd|3191@zfp|照福铺|ZFM|zhaofupu|zfp|3192@zge|准格尔|ZEC|zhungeer|zge|3193@zgt|章古台|ZGD|zhanggutai|zgt|3194@zgu|赵光|ZGB|zhaoguang|zg|3195@zhe|政和|ZES|zhenghe|zh|3196@zhe|中和|ZHX|zhonghe|zh|3197@zjb|织金北|ZJE|zhijinbei|zjb|3198@zjb|枝江北|ZIN|zhijiangbei|zjb|3199@zjc|钟家村|ZJY|zhongjiacun|zjc|3200@zjg|紫荆关|ZYP|zijingguan|zjg|3201@zjg|朱家沟|ZUB|zhujiagou|zjg|3202@zjt|周家屯|ZOD|zhoujiatun|zjt|3203@zjw|褚家湾|CWJ|zhujiawan|zjw|3204@zka|仲恺|ZKA|zhongkai|zk|3205@zko|曾口|ZKE|zengkou|zk|3206@zla|张兰|ZLV|zhanglan|zl|3207@zli|珠琳|ZOM|zhulin|zl|3208@zli|枣林|ZIV|zaolin|zl|3209@zlt|扎鲁特|ZLD|zhalute|zlt|3210@zmd|樟木头东|ZRQ|zhangmutoudong|zmtd|3211@zmt|樟木头|ZOQ|zhangmutou|zmt|3212@zna|扎囊|ZNO|zhanang|zn|3213@znd|中宁东|ZDJ|zhongningdong|znd|3214@zni|中宁|VNJ|zhongning|zn|3215@zni|周宁|ZNS|zhouning|zn|3216@znn|中宁南|ZNJ|zhongningnan|znn|3217@zpi|邹平|ZLK|zouping|zp|3218@zpi|镇平|ZPF|zhenping|zp|3219@zpu|漳浦|ZCS|zhangpu|zp|3220@zqi|张桥|ZQY|zhangqiao|zq|3221@zqi|枣强|ZVP|zaoqiang|zq|3222@zqi|庄桥|ZQH|zhuangqiao|zq|3223@zrh|朱日和|ZRC|zhurihe|zrh|3224@zsb|中山北|ZGQ|zhongshanbei|zsb|3225@zsd|樟树东|ZOG|zhangshudong|zsd|3226@zsh|钟山|ZSZ|zhongshan|zs|3227@zsh|昭山|KWQ|zhaoshan|zs|3228@zsx|钟山西|ZAZ|zhongshanxi|zsx|3229@zts|支提山|ZIS|zhitishan|zts|3230@zwo|珠窝|ZOP|zhuwo|zw|3231@zwt|张维屯|ZWB|zhangweitun|zwt|3232@zwu|彰武|ZWD|zhangwu|zw|3233@zxi|漳县|ZXJ|zhangxian|zx|3234@zxi|资溪|ZXS|zixi|zx|3235@zxi|棕溪|ZOY|zongxi|zx|3236@zxi|镇西|ZVT|zhenxi|zx|3237@zxi|钟祥|ZTN|zhongxiang|zx|3238@zxi|张辛|ZIP|zhangxin|zx|3239@zxq|正镶白旗|ZXC|zhengxiangbaiqi|zxbq|3240@zyn|遵义南|ZNE|zunyinan|zyn|3241@zyu|竹园|ZUM|zhuyuan|zy|3242@zzd|枣庄东|ZNK|zaozhuangdong|zzd|3243@zzd|卓资东|ZDC|zhuozidong|zzd|3244@zzh|子洲|ZZY|zizhou|zz|3245@zzh|涿州|ZXP|zhuozhou|zz|3246@zzh|中寨|ZZM|zhongzhai|zz|3247@zzh|壮志|ZUX|zhuangzhi|zz|3248@zzi|咋子|ZAL|zhazi|zz|3249@zzs|卓资山|ZZC|zhuozishan|zzs|3250@axd|安溪东|ANS|anxidong|axd|3251@azh|安州|AZE|anzhou|az|3252@blu|博罗|BOA|boluo|bl|3253@bsh|保山|BAM|baoshan|bs|3254@bta|北滩|BEJ|beitan|bt|3255@byn|白银南|BVJ|baiyinnan|byn|3256@cka|茶卡|CVO|chaka|ck|3257@cpi|茌平|CHK|chiping|cp|3258@dhu|德化|DKS|dehua|dh|3259@dsd|独山东|DDE|dushandong|dsd|3260@dtb|大田北|DTS|datianbei|dtb|3261@fyx|富阳西|FUU|fuyangxi|fyx|3262@gch|高川|GCE|gaochuan|gc|3263@gju|革居|GEM|geju|gj|3264@glu|古路|GOE|gulu|gl|3265@hbs|花博山|KBT|huaboshan|hbs|3266@hdo|惠东|KDA|huidong|hd|3267@hsh|黄水|SZE|huangshui|hs|3268@hto|海头|FTQ|haitou|ht|3269@hzn|惠州南|KNA|huizhounan|hzn|3270@hzx|杭州西|HVU|hangzhouxi|hzx|3271@jbc|江北机场|JCE|jiangbeijichang|jbjc|3272@jro|句容|JRU|jurong|jr|3273@jta|金坛|JTU|jintan|jt|3274@jyb|靖远北|JOJ|jingyuanbei|jyb|3275@jyi|江阴|KYH|jiangyin|jy|3276@jzh|绛帐|JZY|jiangzhang|jz|3277@lbo|荔波|UBE|libo|lb|3278@lfs|罗浮山|LVA|luofushan|lfs|3279@lhd|珞璜东|LHE|luohuangdong|lhd|3280@lxi|龙兴|LIE|longxing|lx|3281@mxi|茂县|MXE|maoxian|mx|3282@mxi|明溪|MOS|mingxi|mx|3283@mzn|绵竹南|MNE|mianzhunan|mzn|3284@nab|南安北|NUS|nananbei|nab|3285@npe|南彭|NAE|nanpeng|np|3286@nqi|宁强|NQY|ningqiang|nq|3287@nxb|南溪北|NOE|nanxibei|nxb|3288@pcx|平川西|PCJ|pingchuanxi|pcx|3289@qwc|秦王川|QWJ|qinwangchuan|qwc|3290@sch|三岔湖|SCE|sanchahu|sch|3291@sfx|什邡西|SFE|shifangxi|sfx|3292@slb|商洛北|SBY|shangluobei|slb|3293@stu|水土|SUE|shuitu|st|3294@sxd|三星堆|SDE|sanxingdui|sxd|3295@syx|三元西|SRS|sanyuanxi|syx|3296@tfc|天府机场|TIE|tianfujichang|tfjc|3297@tji|统景|TOE|tongjing|tj|3298@tld|桐庐东|TBU|tongludong|tld|3299@tmg|铁门关|XAR|tiemenguan|tmg|3300@wji|武进|WJU|wujin|wj|3301@wyu|威远|WYE|weiyuan|wy|3302@xgl|香格里拉|EUM|xianggelila|xgll|3303@xyc|西阳村|XQF|xiyangcun|xyc|3304@xzd|小中甸|EDM|xiaozhongdian|xzd|3305@ybd|宜宾东|EDE|yibindong|ybd|3306@ybi|宜宾|YKE|yibin|yb|3307@ybi|漾濞|AVM|yangbi|yb|3308@ych|永春|ACS|yongchun|yc|3309@yhu|银花|YWE|yinhua|yh|3310@ylo|迎龙|YVE|yinglong|yl|3311@ypx|永平县|APM|yongpingxian|ypx|3312@yta|沿滩|YTE|yantan|yt|3313@yxi|越西|YIE|yuexi|yx|3314@zch|增城|ZCA|zengcheng|zc|3315@zjg|镇江关|ZEE|zhenjiangguan|zjg|3316@zyx|资阳西|ZIE|ziyangxi|zyx|3317@zzx|资中西|ZZE|zizhongxi|zzx|3318
================================================
FILE: depdencies.txt
================================================
Python 3.8.10
Package Version
----------------------- --------------------
absl-py 1.2.0
appdirs 1.4.3
astunparse 1.6.3
attrs 19.3.0
Automat 0.8.0
autopep8 1.7.0
beautifulsoup4 4.7.0
blinker 1.4
browser-cookie3 0.16.1
bs4 0.0.1
cachetools 4.2.4
certifi 2021.5.30
chardet 3.0.4
charset-normalizer 2.1.1
Click 7.0
cloud-init 22.2
colorama 0.4.3
command-not-found 0.3
configobj 5.0.6
constantly 15.1.0
cryptography 2.8
cssselect 1.0.3
dbus-python 1.2.16
DingtalkChatbot 1.3.0
distro 1.4.0
distro-info 0.23ubuntu1
entrypoints 0.3
fake-useragent 0.1.11
Flask 1.0.2
Flask-JWT-Extended 3.15.0
gast 0.3.3
google-auth 1.35.0
google-auth-oauthlib 0.4.6
google-pasta 0.2.0
grpcio 1.48.1
h5py 2.10.0
httplib2 0.14.0
hyperlink 19.0.0
idna 2.8
importlib-metadata 4.12.0
incremental 16.10.1
itsdangerous 1.1.0
Jinja2 2.10
jsonpatch 1.22
jsonpointer 2.0
jsonschema 3.2.0
Keras 2.4.0
Keras-Preprocessing 1.1.2
keyring 18.0.1
language-selector 0.1
launchpadlib 1.10.13
lazr.restfulclient 0.14.2
lazr.uri 1.0.3
lightpush 0.1.3
lxml 4.6.3
lz4 4.0.2
Markdown 3.4.1
MarkupSafe 2.0.1
more-itertools 4.2.0
netifaces 0.10.4
numpy 1.18.5
oauthlib 3.1.0
opencv-python 4.6.0.66
opt-einsum 3.3.0
p5py 1.0.0
parse 1.9.0
pbkdf2 1.3
pbr 5.10.0
pep517 0.13.0
pexpect 4.6.0
pip 22.2.2
protobuf 3.9.2
pyaes 1.6.1
pyasn1 0.4.2
pyasn1-modules 0.2.1
pycodestyle 2.9.1
pycryptodome 3.15.0
pyee 6.0.0
PyGObject 3.36.0
PyHamcrest 1.9.0
PyJWT 1.7.1
pymacaroons 0.13.0
PyNaCl 1.3.0
pyOpenSSL 19.0.0
pypng 0.20220715.0
pyppeteer 0.0.25
pyppeteer-box 0.0.27
pyquery 1.4.0
pyrsistent 0.15.5
pyserial 3.4
python-apt 2.0.0+ubuntu0.20.4.8
PyYAML 5.3.1
redis 3.0.1
requests 2.28.1
requests-html 0.9.0
requests-oauthlib 1.3.1
requests-unixsocket 0.2.0
rsa 4.9
scipy 1.4.1
SecretStorage 2.3.1
service-identity 18.1.0
setuptools 65.3.0
simplejson 3.16.0
six 1.15.0
sos 4.3
soupsieve 1.6.2
ssh-import-id 5.10
systemd-python 234
tensorboard 2.10.0
tensorboard-data-server 0.6.1
tensorboard-plugin-wit 1.8.1
tensorflow 2.3.0
tensorflow-estimator 2.3.0
termcolor 2.0.1
testresources 2.0.1
toml 0.10.2
tomli 2.0.1
tqdm 4.64.1
Twisted 18.9.0
typing_extensions 4.3.0
ubuntu-advantage-tools 27.10
ufw 0.36
unattended-upgrades 0.1
urllib3 1.26.12
w3lib 1.19.0
wadllib 1.3.3
websockets 7.0
Werkzeug 0.15.5
wheel 0.37.1
wrapt 1.14.1
zipp 1.0.0
zope.interface 4.7.1
================================================
FILE: docker-compose.yml.example
================================================
version: "2"
services:
py12306:
build: .
volumes:
# - ./runtime:/code/runtime # 未使用 env.docker.py.example 可以打开此项
- ./env.py:/config/env.py
- py12306:/data
ports:
- 8008:8008
volumes:
py12306:
================================================
FILE: env.docker.py.example
================================================
# -*- coding: utf-8 -*-
# 12306 账号
USER_ACCOUNTS = [
# 目前已支持仅查询,不下单,屏蔽掉下面的账号即可
{
'key': 0, # 如使用多个账号 key 不能重复
'user_name': 'your user name',
'password': '忽略',
'type': 'qr' # qr 为扫码登录,填写其他为密码登录
},
# {
# 'key': 'wangwu',
# 'user_name': 'wangwu@qq.com',
# 'password': 'wangwu',
# 'type': ''
# }
]
# 查询间隔(指每一个任务中每一个日期的间隔 / 单位秒)
# 默认取间隔/2 到 间隔之间的随机数 如设置为 1 间隔则为 0.5 ~ 1 之间的随机数
# 接受字典形式 格式: {'min': 0.5, 'max': 1}
QUERY_INTERVAL = 1
# 用户心跳检测间隔 格式同上
USER_HEARTBEAT_INTERVAL = 120
# 多线程查询
QUERY_JOB_THREAD_ENABLED = 0 # 是否开启多线程查询,开启后第个任务会单独分配线程处理
# 打码平台账号
# 目前只支持免费打码接口 和 若快打码,注册地址:http://www.ruokuai.com/login
AUTO_CODE_PLATFORM = 'free' # 免费填写 free 若快 ruokuai # 免费打码无法保证持续可用,如失效请手动切换 #个人本地打码填写 user,并修改 API_USER_CODE_QCR_API
API_USER_CODE_QCR_API = ''
AUTO_CODE_ACCOUNT = {
'user': 'your user name',
'pwd': 'your password'
}
# 语音验证码
# 没找到比较好用的,现在用的这个是阿里云 API 市场上的,基本满足要求,价格也便宜
# 购买成功后到控制台找到 APPCODE 放在下面就可以了
# 地址:易源 https://market.aliyun.com/products/57126001/cmapi019902.html
# 2019-01-18 更新
# 增加新的服务商 鼎信 https://market.aliyun.com/products/56928004/cmapi026600.html?spm=5176.2020520132.101.2.e27e7218KQttQS
NOTIFICATION_BY_VOICE_CODE = 1 # 开启语音通知
NOTIFICATION_VOICE_CODE_TYPE = 'dingxin' # 语音验证码服务商 可用项 dingxin yiyuan
NOTIFICATION_API_APP_CODE = 'your app code'
NOTIFICATION_VOICE_CODE_PHONE = 'your phone' # 接受通知的手机号
# 钉钉通知
DINGTALK_ENABLED = 0
DINGTALK_WEBHOOK = 'https://oapi.dingtalk.com/robot/send?access_token=your token'
# Telegram消息推送
# 目前共有两个Bot:
# 1:https://t.me/notificationme_bot
# 2:https://t.me/RE_Link_Push_bot
# 任选一个Bot,关注获取URL链接,如果没有回复则发送给Bot这条信息: /start
# 将获取的URL填入下面对应位置
# 注意:因为以上Bot都由他人公益提供,无法保证随时可用,如以上Bot都无法使用,请使用其他消息推送方式
# Bot1来源:https://github.com/Fndroid/tg_push_bot
# Bot2来源:https://szc.me/post/2.html
TELEGRAM_ENABLED = 0
TELEGRAM_BOT_API_URL = 'https://tgbot.lbyczf.com/sendMessage/:your_token'
# ServerChan 和 PushBear 微信消息推送
# 使用说明
# ServerChan http://sc.ftqq.com
# PushBear http://pushbear.ftqq.com
SERVERCHAN_ENABLED = 0
SERVERCHAN_KEY = ''
PUSHBEAR_ENABLED = 0
PUSHBEAR_KEY = ''
# Bark 推送到ios设备
# 参考 https://www.v2ex.com/t/467407
BARK_ENABLED = 0
BARK_PUSH_URL = 'https://api.day.app/:your_token'
# 输出日志到文件 (Docker 中不建议修改此组配置项)
OUT_PUT_LOG_TO_FILE_ENABLED = 1
OUT_PUT_LOG_TO_FILE_PATH = '/config/12306.log' # 日志目录
RUNTIME_DIR = '/data/'
QUERY_DATA_DIR = '/data/query/'
USER_DATA_DIR = '/data/user/'
# 分布式集群配置
CLUSTER_ENABLED = 0 # 集群状态
NODE_IS_MASTER = 1 # 是否是主节点 同时只能启用 1 个主节点
NODE_SLAVE_CAN_BE_MASTER = 1 # 主节点宕机后,子节点是否可以自动提升为主节点(建议打开)
NODE_NAME = 'master' # 节点名称,不能重复
REDIS_HOST = 'localhost' # Redis host
REDIS_PORT = '6379' # Redis port
REDIS_PASSWORD = '' # Redis 密码 没有可以留空
# 邮箱配置
EMAIL_ENABLED = 0 # 是否开启邮件通知
EMAIL_SENDER = 'sender@example.com' # 邮件发送者
EMAIL_RECEIVER = 'receiver@example.com' # 邮件接受者 # 可以多个 [email1@gmail.com, email2@gmail.com]
EMAIL_SERVER_HOST = 'localhost' # 邮件服务 host
EMAIL_SERVER_USER = '' # 邮件服务登录用户名
EMAIL_SERVER_PASSWORD = '' # 邮件服务登录密码
# Web 管理
WEB_ENABLE = 1 # 是否打开 Web 管理
WEB_USER = { # 登录信息
'username': 'admin',
'password': 'password'
}
WEB_PORT = 8008 # 监听端口
# 是否开启 CDN 查询
CDN_ENABLED = 0
CDN_CHECK_TIME_OUT = 1 # 检测单个 cdn 是否可用超时时间
# 查询任务
QUERY_JOBS = [
{
# 'job_name': 'bj -> sz', # 任务名称,不填默认会以车站名命名,不可重复
'account_key': 0, # 将会使用指定账号下单
'left_dates': [ # 出发日期 :Array
"2019-01-25",
"2019-01-26",
],
'stations': { # 车站 支持多个车站同时查询 :Dict or :List
'left': '北京',
'arrive': '深圳',
},
# # 多个车站示例 (建议添加多个,有时多买几站成功率会高一点)
# 'stations': [{
# 'left': '北京',
# 'arrive': '深圳',
# },{ # 多个车站示例
# 'left': '北京',
# 'arrive': '广州',
# }],
'members': [ # 乘客姓名,会根据当前账号自动识别乘客类型 购买儿童票 设置两个相同的姓名即可,程序会自动识别 如 ['张三', '张三']
"张三",
"王五",
# 7, # 支持通过序号确定唯一乘客,序号查看可通过 python main.py -t 登录成功之后在 runtime/user/ 下找到对应的 用户名_passengers.json 文件,找到对应的 code 填入
],
'allow_less_member': 0, # 是否允许余票不足时提交部分乘客
'seats': [ # 筛选座位 有先后顺序 :Array
# 可用值: 特等座, 商务座, 一等座, 二等座, 软卧, 硬卧, 动卧, 软座, 硬座, 无座
'硬卧',
'硬座'
],
'train_numbers': [ # 筛选车次 可以为空,为空则所有车次都可以提交 如 [] 注意大小写需要保持一致
"K356",
"K1172",
"K4184"
],
'except_train_numbers': [ # 筛选车次,排除车次 train_numbers 和 except_train_numbers 不可同时存在
],
'period': { # 筛选时间
'from': '00:00',
'to': '24:00'
}
},
# {
# 'job_name': 'cd -> gz', # 任务名称,不填默认会以车站名命名,不可重复
# 'account_key': 0, # 将会使用指定账号下单
# 'left_dates': [
# "2019-01-27",
# "2019-01-28"
# ],
# 'stations': {
# 'left': '成都',
# 'arrive': '广州',
# },
# 'members': [
# "小王",
# ],
# 'allow_less_member': 0,
# 'seats': [
# '硬卧',
# ],
# 'train_numbers': []
# }
]
================================================
FILE: env.py.example
================================================
# -*- coding: utf-8 -*-
# 12306 账号
USER_ACCOUNTS = [
# 目前已支持仅查询,不下单,屏蔽掉下面的账号即可
{
'key': 0, # 如使用多个账号 key 不能重复
'user_name': 'your user name',
'password': '忽略',
'type': 'qr' # qr 为扫码登录,填写其他为密码登录
},
# {
# 'key': 'wangwu',
# 'user_name': 'wangwu@qq.com',
# 'password': 'wangwu',
# 'type': ''
# }
]
# 查询间隔(指每一个任务中每一个日期的间隔 / 单位秒)
# 默认取间隔/2 到 间隔之间的随机数 如设置为 1 间隔则为 0.5 ~ 1 之间的随机数
# 接受字典形式 格式: {'min': 0.5, 'max': 1}
QUERY_INTERVAL = 1
# 网络请求重试次数
REQUEST_MAX_RETRY = 5
# 用户心跳检测间隔 格式同上
USER_HEARTBEAT_INTERVAL = 120
# 多线程查询
QUERY_JOB_THREAD_ENABLED = 0 # 是否开启多线程查询,开启后第个任务会单独分配线程处理
# 打码平台账号
# 目前只支持免费打码接口 和 若快打码,注册地址:http://www.ruokuai.com/login
AUTO_CODE_PLATFORM = 'free' # 免费填写 free 若快 ruokuai # 免费打码无法保证持续可用,如失效请手动切换; 个人打码填写 user 并修改API_USER_CODE_QCR_API 为自己地址
API_USER_CODE_QCR_API = ''
AUTO_CODE_ACCOUNT = { # 使用 free 可用省略
'user': 'your user name',
'pwd': 'your password'
}
# 语音验证码
# 没找到比较好用的,现在用的这个是阿里云 API 市场上的,基本满足要求,价格也便宜
# 购买成功后到控制台找到 APPCODE 放在下面就可以了
# 地址:易源 https://market.aliyun.com/products/57126001/cmapi019902.html
# 2019-01-18 更新
# 增加新的服务商 鼎信 https://market.aliyun.com/products/56928004/cmapi026600.html?spm=5176.2020520132.101.2.e27e7218KQttQS
NOTIFICATION_BY_VOICE_CODE = 1 # 开启语音通知
NOTIFICATION_VOICE_CODE_TYPE = 'dingxin' # 语音验证码服务商 可用项 dingxin yiyuan
NOTIFICATION_API_APP_CODE = 'your app code'
NOTIFICATION_VOICE_CODE_PHONE = 'your phone' # 接受通知的手机号
# 钉钉通知
# 使用说明 https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1
DINGTALK_ENABLED = 0
DINGTALK_WEBHOOK = 'https://oapi.dingtalk.com/robot/send?access_token=your token'
# Telegram消息推送
# 目前共有两个Bot:
# 1:https://t.me/notificationme_bot
# 2:https://t.me/RE_Link_Push_bot
# 任选一个Bot,关注获取URL链接,如果没有回复则发送给Bot这条信息: /start
# 将获取的URL填入下面对应位置
# 注意:因为以上Bot都由他人公益提供,无法保证随时可用,如以上Bot都无法使用,请使用其他消息推送方式
# Bot1来源:https://github.com/Fndroid/tg_push_bot
# Bot2来源:https://szc.me/post/2.html
TELEGRAM_ENABLED = 0
TELEGRAM_BOT_API_URL = 'https://tgbot.lbyczf.com/sendMessage/:your_token'
# ServerChan 和 PushBear 微信消息推送
# 使用说明
# ServerChan http://sc.ftqq.com
# PushBear http://pushbear.ftqq.com
SERVERCHAN_ENABLED = 0
SERVERCHAN_KEY = ''
PUSHBEAR_ENABLED = 0
PUSHBEAR_KEY = ''
# Bark 推送到ios设备
# 参考 https://www.v2ex.com/t/467407
BARK_ENABLED = 0
BARK_PUSH_URL = 'https://api.day.app/:your_token'
# 输出日志到文件
OUT_PUT_LOG_TO_FILE_ENABLED = 0
OUT_PUT_LOG_TO_FILE_PATH = 'runtime/12306.log' # 日志目录
# 分布式集群配置
CLUSTER_ENABLED = 0 # 集群状态
NODE_IS_MASTER = 1 # 是否是主节点 同时只能启用 1 个主节点
NODE_SLAVE_CAN_BE_MASTER = 1 # 主节点宕机后,子节点是否可以自动提升为主节点(建议打开)
NODE_NAME = 'master' # 节点名称,不能重复
REDIS_HOST = 'localhost' # Redis host
REDIS_PORT = '6379' # Redis port
REDIS_PASSWORD = '' # Redis 密码 没有可以留空
# 邮箱配置
EMAIL_ENABLED = 0 # 是否开启邮件通知
EMAIL_SENDER = 'sender@example.com' # 邮件发送者
EMAIL_RECEIVER = 'receiver@example.com' # 邮件接受者 # 可以多个 [email1@gmail.com, email2@gmail.com]
EMAIL_SERVER_HOST = 'localhost' # 邮件服务 host
EMAIL_SERVER_USER = '' # 邮件服务登录用户名
EMAIL_SERVER_PASSWORD = '' # 邮件服务登录密码
# Web 管理
WEB_ENABLE = 1 # 是否打开 Web 管理
WEB_USER = { # 登录信息
'username': 'admin',
'password': 'password'
}
WEB_PORT = 8008 # 监听端口
# 是否开启 CDN 查询
CDN_ENABLED = 0
CDN_CHECK_TIME_OUT = 1 # 检测单个 cdn 是否可用超时时间
# 是否使用浏览器缓存中的RAIL_EXPIRATION 和 RAIL_DEVICEID
CACHE_RAIL_ID_ENABLED = 0
RAIL_EXPIRATION = '' #浏览12306 网站中的Cache的RAIL_EXPIRATION 值
RAIL_DEVICEID = '' #浏览12306 网站中的Cache的RAIL_DEVICEID 值
# 查询任务
QUERY_JOBS = [
{
# 'job_name': 'bj -> sz', # 任务名称,不填默认会以车站名命名,不可重复
'account_key': 0, # 将会使用指定账号下单
'left_dates': [ # 出发日期 :Array
"2020-01-25",
"2020-01-26",
],
'stations': { # 车站 支持多个车站同时查询 :Dict or :List
'left': '北京',
'arrive': '深圳',
},
# # 多个车站示例 (建议添加多个,有时多买几站成功率会高一点)
# 'stations': [{
# 'left': '北京',
# 'arrive': '深圳',
# },{ # 多个车站示例
# 'left': '北京',
# 'arrive': '广州',
# }],
'members': [ # 乘客姓名,会根据当前账号自动识别乘客类型 购买儿童票 设置两个相同的姓名即可,程序会自动识别 如 ['张三', '张三']
"张三",
#"*王五", #在姓名前加*表示学生购买成人票
# 7, # 支持通过序号确定唯一乘客,序号查看可通过 python main.py -t 登录成功之后在 runtime/user/ 下找到对应的 用户名_passengers.json 文件,找到对应的 code 填入
],
'allow_less_member': 0, # 是否允许余票不足时提交部分乘客
'seats': [ # 筛选座位 有先后顺序 :Array
# 可用值: 特等座, 商务座, 一等座, 二等座, 软卧, 硬卧, 动卧, 软座, 硬座, 无座
'硬卧',
'硬座'
],
'train_numbers': [ # 筛选车次 可以为空,为空则所有车次都可以提交 如 [] 注意大小写需要保持一致
"K356",
"K1172",
"K4184"
],
'except_train_numbers': [ # 筛选车次,排除车次 train_numbers 和 except_train_numbers 不可同时存在
],
'period': { # 筛选时间
'from': '00:00',
'to': '24:00'
}
},
# {
# 'job_name': 'cd -> gz', # 任务名称,不填默认会以车站名命名,不可重复
# 'account_key': 0, # 将会使用指定账号下单
# 'left_dates': [
# "2019-01-27",
# "2019-01-28"
# ],
# 'stations': {
# 'left': '成都',
# 'arrive': '广州',
# },
# 'members': [
# "小王",
# ],
# 'allow_less_member': 0,
# 'seats': [
# '硬卧',
# ],
# 'train_numbers': []
# }
]
================================================
FILE: env.slave.py.example
================================================
# -*- coding: utf-8 -*-
# 分布式子节点配置文件示例
# 分布式集群配置
CLUSTER_ENABLED = 1 # 集群状态
NODE_IS_MASTER = 0 # 是否是主节点
NODE_NAME = 'slave 1' # 节点名称,不能重复
REDIS_HOST = 'localhost' # Redis host
REDIS_PORT = '6379' # Redis port
REDIS_PASSWORD = '' # Redis 密码 没有可以留空
# 没了,其它配置会自动从主节点同步
================================================
FILE: main.py
================================================
# -*- coding: utf-8 -*-
import sys
from py12306.app import *
from py12306.helpers.cdn import Cdn
from py12306.log.common_log import CommonLog
from py12306.query.query import Query
from py12306.user.user import User
from py12306.web.web import Web
def main():
load_argvs()
CommonLog.print_welcome()
App.run()
CommonLog.print_configs()
App.did_start()
App.run_check()
Query.check_before_run()
####### 运行任务
Web.run()
Cdn.run()
User.run()
Query.run()
if not Const.IS_TEST:
while True:
sleep(10000)
else:
if Config().is_cluster_enabled(): stay_second(5) # 等待接受完通知
CommonLog.print_test_complete()
def test():
"""
功能检查
包含:
账号密码验证 (打码)
座位验证
乘客验证
语音验证码验证
通知验证
:return:
"""
Const.IS_TEST = True
Config.OUT_PUT_LOG_TO_FILE_ENABLED = False
if '--test-notification' in sys.argv or '-n' in sys.argv:
Const.IS_TEST_NOTIFICATION = True
pass
def load_argvs():
if '--test' in sys.argv or '-t' in sys.argv: test()
config_index = None
if '--config' in sys.argv: config_index = sys.argv.index('--config')
if '-c' in sys.argv: config_index = sys.argv.index('-c')
if config_index:
Config.CONFIG_FILE = sys.argv[config_index + 1:config_index + 2].pop()
if __name__ == '__main__':
main()
================================================
FILE: py12306/__init__.py
================================================
================================================
FILE: py12306/app.py
================================================
# -*- coding: utf-8 -*-
import signal
import sys
from py12306.helpers.func import *
from py12306.config import Config
from py12306.helpers.notification import Notification
from py12306.log.common_log import CommonLog
from py12306.log.order_log import OrderLog
def app_available_check():
if Config().IS_DEBUG:
return True
now = time_now()
if now.weekday() == 1 and (now.hour > 23 and now.minute > 30 or now.hour < 5):
CommonLog.add_quick_log(CommonLog.MESSAGE_12306_IS_CLOSED.format(time_now())).flush()
open_time = datetime.datetime(now.year, now.month, now.day, 5)
if open_time < now:
open_time += datetime.timedelta(1)
sleep((open_time - now).seconds)
elif 1 < now.hour < 5:
CommonLog.add_quick_log(CommonLog.MESSAGE_12306_IS_CLOSED.format(time_now())).flush()
open_time = datetime.datetime(now.year, now.month, now.day, 5)
sleep((open_time - now).seconds)
return True
@singleton
class App:
"""
程序主类
TODO 代码需要优化
"""
@classmethod
def run(cls):
self = cls()
self.register_sign()
self.start()
def start(self):
Config().run()
self.init_class()
@classmethod
def did_start(cls):
self = cls()
from py12306.helpers.station import Station
Station() # 防止多线程时初始化出现问题
# if Config.is_cluster_enabled():
# from py12306.cluster.cluster import Cluster
# Cluster().run()
def init_class(self):
from py12306.cluster.cluster import Cluster
if Config.is_cluster_enabled():
Cluster().run()
def register_sign(self):
is_windows = os.name == 'nt'
# if is_windows:
signs = [signal.SIGINT, signal.SIGTERM]
# else:
# signs = [signal.SIGINT, signal.SIGHUP, signal.SIGTERM] # SIGHUP 会导致终端退出,程序也退出,暂时去掉
for sign in signs:
signal.signal(sign, self.handler_exit)
pass
def handler_exit(self, *args, **kwargs):
"""
程序退出
:param args:
:param kwargs:
:return:
"""
if Config.is_cluster_enabled():
from py12306.cluster.cluster import Cluster
Cluster().left_cluster()
sys.exit()
@classmethod
def check_auto_code(cls):
if Config().AUTO_CODE_PLATFORM == 'free' or Config().AUTO_CODE_PLATFORM == 'user': return True
if not Config().AUTO_CODE_ACCOUNT.get('user') or not Config().AUTO_CODE_ACCOUNT.get('pwd'):
return False
return True
@classmethod
def check_user_account_is_empty(cls):
if Config().USER_ACCOUNTS:
for account in Config().USER_ACCOUNTS:
if account:
return False
return True
@staticmethod
def check_data_dir_exists():
os.makedirs(Config().QUERY_DATA_DIR, exist_ok=True)
os.makedirs(Config().USER_DATA_DIR, exist_ok=True)
touch_file(Config().OUT_PUT_LOG_TO_FILE_PATH)
@classmethod
def test_send_notifications(cls):
if Config().NOTIFICATION_BY_VOICE_CODE: # 语音通知
CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_VOICE_CODE).flush()
if Config().NOTIFICATION_VOICE_CODE_TYPE == 'dingxin':
voice_content = {'left_station': '广州', 'arrive_station': '深圳', 'set_type': '硬座', 'orderno': 'E123542'}
else:
voice_content = OrderLog.MESSAGE_ORDER_SUCCESS_NOTIFICATION_OF_VOICE_CODE_CONTENT.format('北京',
'深圳')
Notification.voice_code(Config().NOTIFICATION_VOICE_CODE_PHONE, '张三', voice_content)
if Config().EMAIL_ENABLED: # 邮件通知
CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_EMAIL).flush()
Notification.send_email(Config().EMAIL_RECEIVER, '测试发送邮件', 'By py12306')
if Config().DINGTALK_ENABLED: # 钉钉通知
CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_DINGTALK).flush()
Notification.dingtalk_webhook('测试发送信息')
if Config().TELEGRAM_ENABLED: # Telegram通知
CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_TELEGRAM).flush()
Notification.send_to_telegram('测试发送信息')
if Config().SERVERCHAN_ENABLED: # ServerChan通知
CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_SERVER_CHAN).flush()
Notification.server_chan(Config().SERVERCHAN_KEY, '测试发送消息', 'By py12306')
if Config().PUSHBEAR_ENABLED: # PushBear通知
CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_PUSH_BEAR).flush()
Notification.push_bear(Config().PUSHBEAR_KEY, '测试发送消息', 'By py12306')
if Config().BARK_ENABLED: # Bark通知
CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_PUSH_BARK).flush()
Notification.push_bark('测试发送信息')
@classmethod
def run_check(cls):
"""
待优化
:return:
"""
cls.check_data_dir_exists()
if not cls.check_user_account_is_empty():
# CommonLog.add_quick_log(CommonLog.MESSAGE_CHECK_EMPTY_USER_ACCOUNT).flush(exit=True, publish=False) # 不填写用户则不自动下单
if not cls.check_auto_code():
CommonLog.add_quick_log(CommonLog.MESSAGE_CHECK_AUTO_CODE_FAIL).flush(exit=True, publish=False)
if Const.IS_TEST_NOTIFICATION: cls.test_send_notifications()
# Expand
class Dict(dict):
def get(self, key, default=None, sep='.'):
keys = key.split(sep)
for i, key in enumerate(keys):
try:
value = self[key]
if len(keys[i + 1:]) and isinstance(value, Dict):
return value.get(sep.join(keys[i + 1:]), default=default, sep=sep)
return value
except:
return self.dict_to_dict(default)
def __getitem__(self, k):
return self.dict_to_dict(super().__getitem__(k))
@staticmethod
def dict_to_dict(value):
return Dict(value) if isinstance(value, dict) else value
================================================
FILE: py12306/cluster/__init__.py
================================================
================================================
FILE: py12306/cluster/cluster.py
================================================
import json
import os
import pickle
import sys
import time
import redis
from redis.client import PubSub
from py12306.cluster.redis import Redis
from py12306.config import Config
from py12306.helpers.func import *
from py12306.log.cluster_log import ClusterLog
@singleton
class Cluster():
KEY_PREFIX = 'py12306_' # 目前只能手动
KEY_QUERY_COUNT = KEY_PREFIX + 'query_count'
KEY_QUERY_LAST_TIME = KEY_PREFIX + 'query_last_time'
KEY_CONFIGS = KEY_PREFIX + 'configs'
KEY_NODES = KEY_PREFIX + 'nodes'
KEY_CHANNEL_LOG = KEY_PREFIX + 'channel_log'
KEY_CHANNEL_EVENT = KEY_PREFIX + 'channel_even'
KEY_USER_COOKIES = KEY_PREFIX + 'user_cookies'
KEY_USER_INFOS = KEY_PREFIX + 'user_infos'
KEY_USER_LAST_HEARTBEAT = KEY_PREFIX + 'user_last_heartbeat'
KEY_NODES_ALIVE_PREFIX = KEY_PREFIX + 'nodes_alive_'
KEY_CDN_AVAILABLE_ITEMS = KEY_PREFIX + 'cdn_available_items'
KEY_CDN_LAST_CHECK_AT = KEY_PREFIX + 'cdn_last_check_at'
# 锁
KEY_LOCK_INIT_USER = KEY_PREFIX + 'lock_init_user' # 暂未使用
KEY_LOCK_DO_ORDER = KEY_PREFIX + 'lock_do_order' # 订单锁
lock_do_order_time = 60 * 1 # 订单锁超时时间
lock_prefix = KEY_PREFIX + 'lock_' # 锁键前缀
lock_info_prefix = KEY_PREFIX + 'info_'
KEY_MASTER = 1
KEY_SLAVE = 0
session: Redis = None
pubsub: PubSub = None
refresh_channel_time = 0.5
retry_time = 2
keep_alive_time = 3 # 报告存活间隔
lost_alive_time = keep_alive_time * 2
nodes = {}
node_name = None
is_ready = False
is_master = False
def __init__(self, *args):
if Config.is_cluster_enabled():
self.session = Redis()
return self
@classmethod
def run(cls):
self = cls()
self.start()
def start(self):
self.pubsub = self.session.pubsub()
self.pubsub.subscribe(self.KEY_CHANNEL_LOG, self.KEY_CHANNEL_EVENT)
create_thread_and_run(self, 'subscribe', wait=False)
self.is_ready = True
self.get_nodes() # 提前获取节点列表
self.check_nodes() # 防止 节点列表未清空
self.join_cluster()
create_thread_and_run(self, 'keep_alive', wait=False)
create_thread_and_run(self, 'refresh_data', wait=False)
def join_cluster(self):
"""
加入到集群
:return:
"""
self.node_name = node_name = Config().NODE_NAME
if Config().NODE_IS_MASTER:
if self.node_name in self.nodes: # 重复运行主节点
ClusterLog.add_quick_log(ClusterLog.MESSAGE_MASTER_NODE_ALREADY_RUN.format(node_name)).flush(
publish=False)
os._exit(1)
if self.have_master(): # 子节点提升为主节点情况,交回控制
message = ClusterLog.MESSAGE_NODE_BECOME_MASTER_AGAIN.format(node_name)
self.publish_log_message(message)
self.make_nodes_as_slave()
elif not self.have_master(): # 只能通过主节点启动
ClusterLog.add_quick_log(ClusterLog.MESSAGE_MASTER_NODE_NOT_FOUND).flush(publish=False)
os._exit(1)
if node_name in self.nodes:
self.node_name = node_name = node_name + '_' + str(dict_count_key_num(self.nodes, node_name))
ClusterLog.add_quick_log(ClusterLog.MESSAGE_NODE_ALREADY_IN_CLUSTER.format(node_name)).flush()
self.session.hset(self.KEY_NODES, node_name, Config().NODE_IS_MASTER)
message = ClusterLog.MESSAGE_JOIN_CLUSTER_SUCCESS.format(self.node_name, ClusterLog.get_print_nodes(
self.get_nodes())) # 手动 get nodes
self.publish_log_message(message)
def left_cluster(self, node_name=None):
node_name = node_name if node_name else self.node_name
self.session.hdel(self.KEY_NODES, node_name)
message = ClusterLog.MESSAGE_LEFT_CLUSTER.format(node_name, ClusterLog.get_print_nodes(self.get_nodes()))
self.publish_log_message(message, node_name)
def make_nodes_as_slave(self):
"""
将所有节点设为主节点
:return:
"""
for node in self.nodes:
self.session.hset(self.KEY_NODES, node, self.KEY_SLAVE)
def publish_log_message(self, message, node_name=None):
"""
发布订阅消息
:return:
"""
node_name = node_name if node_name else self.node_name
message = ClusterLog.MESSAGE_SUBSCRIBE_NOTIFICATION.format(node_name, message)
self.session.publish(self.KEY_CHANNEL_LOG, message)
def publish_event(self, name, data={}):
"""
发布事件消息
:return:
"""
data = {'event': name, 'data': data}
self.session.publish(self.KEY_CHANNEL_EVENT, json.dumps(data))
def get_nodes(self) -> dict:
res = self.session.hgetall(self.KEY_NODES)
res = res if res else {}
self.nodes = res
return res
def refresh_data(self):
"""
单独进程处理数据同步
:return:
"""
while True:
self.get_nodes()
self.check_locks()
self.check_nodes()
self.check_master()
stay_second(self.retry_time)
def check_master(self):
"""
检测主节点是否可用
:return:
"""
master = self.have_master()
if master == self.node_name: # 动态提升
self.is_master = True
else:
self.is_master = False
if not master:
if Config().NODE_SLAVE_CAN_BE_MASTER:
# 提升子节点为主节点
slave = list(self.nodes)[0]
self.session.hset(self.KEY_NODES, slave, self.KEY_MASTER)
self.publish_log_message(ClusterLog.MESSAGE_ASCENDING_MASTER_NODE.format(slave,
ClusterLog.get_print_nodes(
self.get_nodes())))
return True
else:
self.publish_log_message(ClusterLog.MESSAGE_MASTER_DID_LOST.format(self.retry_time))
stay_second(self.retry_time)
os._exit(1) # 退出整个程序
def have_master(self):
return dict_find_key_by_value(self.nodes, str(self.KEY_MASTER), False)
def check_nodes(self):
"""
检查节点是否存活
:return:
"""
for node in self.nodes:
if not self.session.exists(self.KEY_NODES_ALIVE_PREFIX + node):
self.left_cluster(node)
# def kick_out_from_nodes(self, node_name):
# pass
def keep_alive(self):
while True:
if self.node_name not in self.get_nodes(): # 已经被 kict out 重新加下
self.join_cluster()
self.session.set(self.KEY_NODES_ALIVE_PREFIX + self.node_name, Config().NODE_IS_MASTER, ex=self.lost_alive_time)
stay_second(self.keep_alive_time)
def subscribe(self):
while True:
try:
message = self.pubsub.get_message()
except RuntimeError as err:
if 'args' in dir(err) and err.args[0].find('pubsub connection not set') >= 0: # 失去重连
self.pubsub.subscribe(self.KEY_CHANNEL_LOG, self.KEY_CHANNEL_EVENT)
continue
if message:
if message.get('type') == 'message' and message.get('channel') == self.KEY_CHANNEL_LOG and message.get(
'data'):
msg = message.get('data')
if self.node_name:
msg = msg.replace(ClusterLog.MESSAGE_SUBSCRIBE_NOTIFICATION_PREFIX.format(self.node_name), '')
ClusterLog.add_quick_log(msg).flush(publish=False)
elif message.get('channel') == self.KEY_CHANNEL_EVENT:
create_thread_and_run(self, 'handle_events', args=(message,))
stay_second(self.refresh_channel_time)
def handle_events(self, message):
# 这里应该分开处理,先都在这处理了
if message.get('type') != 'message': return
result = json.loads(message.get('data', {}))
event_name = result.get('event')
data = result.get('data')
from py12306.helpers.event import Event
method = getattr(Event(), event_name)
if method:
create_thread_and_run(Event(), event_name, Const.IS_TEST, kwargs={'data': data, 'callback': True})
def get_lock(self, key: str, timeout=1, info={}):
timeout = int(time.time()) + timeout
res = self.session.setnx(key, timeout)
if res:
if info: self.session.set_dict(self.lock_info_prefix + key.replace(self.KEY_PREFIX, ''), info) # 存储额外信息
return True
return False
def get_lock_info(self, key, default={}):
return self.session.get_dict(self.lock_info_prefix + key.replace(self.KEY_PREFIX, ''), default=default)
def release_lock(self, key):
self.session.delete(key)
self.session.delete(self.lock_info_prefix + key.replace(self.KEY_PREFIX, ''))
def check_locks(self):
locks = self.session.keys(self.lock_prefix + '*')
for key in locks:
val = self.session.get(key)
if val and int(val) <= time_int():
self.release_lock(key)
@classmethod
def get_user_cookie(cls, key, default=None):
self = cls()
res = self.session.hget(Cluster.KEY_USER_COOKIES, key)
return pickle.loads(res.encode()) if res else default
@classmethod
def set_user_cookie(cls, key, value):
self = cls()
return self.session.hset(Cluster.KEY_USER_COOKIES, key, pickle.dumps(value, 0).decode())
@classmethod
def set_user_info(cls, key, info):
self = cls()
return self.session.hset(Cluster.KEY_USER_INFOS, key, pickle.dumps(info, 0).decode())
@classmethod
def get_user_info(cls, key, default=None):
self = cls()
res = self.session.hget(Cluster.KEY_USER_INFOS, key)
return pickle.loads(res.encode()) if res else default
================================================
FILE: py12306/cluster/redis.py
================================================
import json
import pickle
import redis
from py12306.config import Config
from py12306.helpers.func import *
from py12306.log.redis_log import RedisLog
from redis import Redis as PyRedis
@singleton
class Redis(PyRedis):
# session = None
def __init__(self, *args):
if Config.is_cluster_enabled():
args = {
'host': Config().REDIS_HOST,
'port': Config().REDIS_PORT,
'db': 0,
'password': Config().REDIS_PASSWORD,
'decode_responses': True
}
super().__init__(**args)
RedisLog.add_quick_log(RedisLog.MESSAGE_REDIS_INIT_SUCCESS)
else:
super().__init__(**args)
return self
def get(self, name, default=None):
res = super().get(name)
# if decode: res = res.decode()
return res if res else default
def set(self, name, value, ex=None, px=None, nx=False, xx=False):
return super().set(name, available_value(value), ex=ex, px=px, nx=nx, xx=xx)
def set_dict(self, name, value):
return self.set_pickle(name, value)
# return self.set(name, json.dumps(value))
def get_dict(self, name, default={}):
return self.get_pickle(name, default)
# res = self.get(name)
# if res:
# return json.loads(res)
# return default
def set_pickle(self, name, value):
return self.set(name, pickle.dumps(value, 0).decode())
def get_pickle(self, name, default=None):
res = self.get(name)
return pickle.loads(res.encode()) if res else default
# def smembers(self, name, default=[]):
# res = super().smembers(name)
# return [val.decode() for val in list(res)] if res else default
================================================
FILE: py12306/config.py
================================================
# -*- coding: utf-8 -*-
import json
import re
from os import path
# 12306 账号
from py12306.helpers.func import *
@singleton
class Config:
IS_DEBUG = False
USER_ACCOUNTS = []
# 查询任务
QUERY_JOBS = []
# 查询间隔
QUERY_INTERVAL = 1
# 查询重试次数
REQUEST_MAX_RETRY = 5
# 用户心跳检测间隔
USER_HEARTBEAT_INTERVAL = 120
# 多线程查询
QUERY_JOB_THREAD_ENABLED = 0
# 打码平台账号
AUTO_CODE_PLATFORM = ''
#用户打码平台地址
API_USER_CODE_QCR_API = ''
AUTO_CODE_ACCOUNT = {'user': '', 'pwd': ''}
# 输出日志到文件
OUT_PUT_LOG_TO_FILE_ENABLED = 0
OUT_PUT_LOG_TO_FILE_PATH = 'runtime/12306.log'
SEAT_TYPES = {'特等座': 25, '商务座': 32, '一等座': 31, '二等座': 30, '软卧': 23, '硬卧': 28, '硬座': 29, '无座': 26, }
ORDER_SEAT_TYPES = {'特等座': 'P', '商务座': 9, '一等座': 'M', '二等座': 'O', '软卧': 4, '硬卧': 3, '硬座': 1, '无座': 1}
PROJECT_DIR = path.dirname(path.dirname(path.abspath(__file__))) + '/'
# Query
RUNTIME_DIR = PROJECT_DIR + 'runtime/'
QUERY_DATA_DIR = RUNTIME_DIR + 'query/'
USER_DATA_DIR = RUNTIME_DIR + 'user/'
USER_PASSENGERS_FILE = RUNTIME_DIR + 'user/%s_passengers.json'
STATION_FILE = PROJECT_DIR + 'data/stations.txt'
CONFIG_FILE = PROJECT_DIR + 'env.py'
# 语音验证码
NOTIFICATION_BY_VOICE_CODE = 0
NOTIFICATION_VOICE_CODE_TYPE = ''
NOTIFICATION_VOICE_CODE_PHONE = ''
NOTIFICATION_API_APP_CODE = ''
# 集群配置
CLUSTER_ENABLED = 0
NODE_SLAVE_CAN_BE_MASTER = 1
NODE_IS_MASTER = 1
NODE_NAME = ''
REDIS_HOST = ''
REDIS_PORT = '6379'
REDIS_PASSWORD = ''
# 钉钉配置
DINGTALK_ENABLED = 0
DINGTALK_WEBHOOK = ''
# Telegram推送配置
TELEGRAM_ENABLED = 0
TELEGRAM_BOT_API_URL = ''
# Bark 推送配置
BARK_ENABLED = 0
BARK_PUSH_URL = ''
# ServerChan和PushBear配置
SERVERCHAN_ENABLED = 0
SERVERCHAN_KEY = '8474-ca071ADSFADSF'
PUSHBEAR_ENABLED = 0
PUSHBEAR_KEY = 'SCUdafadsfasfdafdf45234234234'
# 邮箱配置
EMAIL_ENABLED = 0
EMAIL_SENDER = ''
EMAIL_RECEIVER = ''
EMAIL_SERVER_HOST = ''
EMAIL_SERVER_USER = ''
EMAIL_SERVER_PASSWORD = ''
WEB_ENABLE = 0
WEB_USER = {}
WEB_PORT = 8080
WEB_ENTER_HTML_PATH = PROJECT_DIR + 'py12306/web/static/index.html'
# CDN
CDN_ENABLED = 0
CDN_CHECK_TIME_OUT = 2
CDN_ITEM_FILE = PROJECT_DIR + 'data/cdn.txt'
CDN_ENABLED_AVAILABLE_ITEM_FILE = QUERY_DATA_DIR + 'available.json'
CACHE_RAIL_ID_ENABLED = 0
RAIL_EXPIRATION = ''
RAIL_DEVICEID = ''
# Default time out
TIME_OUT_OF_REQUEST = 5
envs = []
retry_time = 5
last_modify_time = 0
disallow_update_configs = [
'CLUSTER_ENABLED',
'NODE_IS_MASTER',
'NODE_NAME',
'REDIS_HOST',
'REDIS_PORT',
'REDIS_PASSWORD',
]
def __init__(self):
self.init_envs()
self.last_modify_time = get_file_modify_time(self.CONFIG_FILE)
if Config().is_slave():
self.refresh_configs(True)
else:
create_thread_and_run(self, 'watch_file_change', False)
@classmethod
def run(cls):
self = cls()
self.start()
# @classmethod
# def keep_work(cls):
# self = cls()
def start(self):
self.save_to_remote()
create_thread_and_run(self, 'refresh_configs', wait=Const.IS_TEST)
def refresh_configs(self, once=False):
if not self.is_cluster_enabled(): return
while True:
remote_configs = self.get_remote_config()
self.update_configs_from_remote(remote_configs, once)
if once or Const.IS_TEST: return
stay_second(self.retry_time)
def get_remote_config(self):
if not self.is_cluster_enabled(): return
from py12306.cluster.cluster import Cluster
return Cluster().session.get_pickle(Cluster().KEY_CONFIGS, {})
def save_to_remote(self):
if not self.is_master(): return
from py12306.cluster.cluster import Cluster
Cluster().session.set_pickle(Cluster().KEY_CONFIGS, self.envs)
def init_envs(self):
self.envs = EnvLoader.load_with_file(self.CONFIG_FILE)
self.update_configs(self.envs)
def update_configs(self, envs):
for key, value in envs:
setattr(self, key, value)
def watch_file_change(self):
"""
监听配置文件修改
:return:
"""
if Config().is_slave(): return
from py12306.log.common_log import CommonLog
while True:
value = get_file_modify_time(self.CONFIG_FILE)
if value > self.last_modify_time:
self.last_modify_time = value
CommonLog.add_quick_log(CommonLog.MESSAGE_CONFIG_FILE_DID_CHANGED).flush()
envs = EnvLoader.load_with_file(self.CONFIG_FILE)
self.update_configs_from_remote(envs)
if Config().is_master(): # 保存配置
self.save_to_remote()
stay_second(self.retry_time)
def update_configs_from_remote(self, envs, first=False):
if envs == self.envs: return
from py12306.query.query import Query
from py12306.user.user import User
from py12306.helpers.cdn import Cdn
self.envs = envs
for key, value in envs:
if key in self.disallow_update_configs: continue
if value != -1:
old = getattr(self, key)
setattr(self, key, value)
if not first and old != value:
if key == 'USER_ACCOUNTS':
User().update_user_accounts(auto=True, old=old)
elif key == 'QUERY_JOBS':
Query().update_query_jobs(auto=True) # 任务修改
elif key == 'QUERY_INTERVAL':
Query().update_query_interval(auto=True)
elif key == 'CDN_ENABLED':
Cdn().update_cdn_status(auto=True)
@staticmethod
def is_master(): # 是不是 主
from py12306.cluster.cluster import Cluster
return Config().CLUSTER_ENABLED and (Config().NODE_IS_MASTER or Cluster().is_master)
@staticmethod
def is_slave(): # 是不是 从
return Config().CLUSTER_ENABLED and not Config.is_master()
@staticmethod
def is_cluster_enabled():
return Config().CLUSTER_ENABLED
@staticmethod
def is_cdn_enabled():
return Config().CDN_ENABLED
@staticmethod
def is_cache_rail_id_enabled():
return Config().CACHE_RAIL_ID_ENABLED
class EnvLoader:
envs = []
def __init__(self):
self.envs = []
@classmethod
def load_with_file(cls, file):
self = cls()
if path.exists(file):
env_content = open(file, encoding='utf8').read()
content = re.sub(r'^([A-Z]+)_', r'self.\1_', env_content, flags=re.M)
exec(content)
return self.envs
def __setattr__(self, key, value):
super().__setattr__(key, value)
if re.search(r'^[A-Z]+_', key):
self.envs.append(([key, value]))
================================================
FILE: py12306/exceptions/__init__.py
================================================
================================================
FILE: py12306/helpers/OCR.py
================================================
import math
import random
from py12306.config import Config
from py12306.helpers.api import API_FREE_CODE_QCR_API
from py12306.helpers.request import Request
from py12306.log.common_log import CommonLog
from py12306.vender.ruokuai.main import RKClient
class OCR:
"""
图片识别
"""
session = None
def __init__(self):
self.session = Request()
@classmethod
def get_img_position(cls, img):
"""
获取图像坐标
:param img_path:
:return:
"""
self = cls()
if Config().AUTO_CODE_PLATFORM == 'free' or Config().AUTO_CODE_PLATFORM == 'user':
return self.get_image_by_free_site(img)
return self.get_img_position_by_ruokuai(img)
def get_img_position_by_ruokuai(self, img):
ruokuai_account = Config().AUTO_CODE_ACCOUNT
soft_id = '119671'
soft_key = '6839cbaca1f942f58d2760baba5ed987'
rc = RKClient(ruokuai_account.get('user'), ruokuai_account.get('pwd'), soft_id, soft_key)
result = rc.rk_create(img, 6113)
if "Result" in result:
return self.get_image_position_by_offset(list(result['Result']))
CommonLog.print_auto_code_fail(result.get("Error", CommonLog.MESSAGE_RESPONSE_EMPTY_ERROR))
return None
def get_image_position_by_offset(self, offsets):
positions = []
width = 75
height = 75
for offset in offsets:
random_x = random.randint(-5, 5)
random_y = random.randint(-5, 5)
offset = int(offset)
x = width * ((offset - 1) % 4 + 1) - width / 2 + random_x
y = height * math.ceil(offset / 4) - height / 2 + random_y
positions.append(int(x))
positions.append(int(y))
return positions
def get_image_by_free_site(self, img):
data = {
'img': img
}
if Config().AUTO_CODE_PLATFORM == 'free':
response = self.session.post(API_FREE_CODE_QCR_API, data=data, timeout=30)
else:
response = self.session.post(Config().API_USER_CODE_QCR_API, data=data, timeout=30)
result = response.json()
if result.get('msg') == 'success':
pos = result.get('result')
return self.get_image_position_by_offset(pos)
CommonLog.print_auto_code_fail(CommonLog.MESSAGE_GET_RESPONSE_FROM_FREE_AUTO_CODE)
return None
if __name__ == '__main__':
pass
# code_result = AuthCode.get_auth_code()
================================================
FILE: py12306/helpers/__init__.py
================================================
================================================
FILE: py12306/helpers/api.py
================================================
# coding=utf-8
HOST_URL_OF_12306 = 'kyfw.12306.cn'
BASE_URL_OF_12306 = 'https://' + HOST_URL_OF_12306
LEFT_TICKETS
gitextract_jq9n8v5r/
├── .gitignore
├── .gitpod.yml
├── Dockerfile
├── LICENSE
├── README.md
├── data/
│ ├── cdn.txt
│ └── stations.txt
├── depdencies.txt
├── docker-compose.yml.example
├── env.docker.py.example
├── env.py.example
├── env.slave.py.example
├── main.py
├── py12306/
│ ├── __init__.py
│ ├── app.py
│ ├── cluster/
│ │ ├── __init__.py
│ │ ├── cluster.py
│ │ └── redis.py
│ ├── config.py
│ ├── exceptions/
│ │ └── __init__.py
│ ├── helpers/
│ │ ├── OCR.py
│ │ ├── __init__.py
│ │ ├── api.py
│ │ ├── auth_code.py
│ │ ├── cdn.py
│ │ ├── event.py
│ │ ├── func.py
│ │ ├── notification.py
│ │ ├── qrcode.py
│ │ ├── request.py
│ │ ├── station.py
│ │ └── type.py
│ ├── log/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── cluster_log.py
│ │ ├── common_log.py
│ │ ├── order_log.py
│ │ ├── query_log.py
│ │ ├── redis_log.py
│ │ └── user_log.py
│ ├── order/
│ │ └── order.py
│ ├── query/
│ │ ├── __init__.py
│ │ ├── job.py
│ │ └── query.py
│ ├── user/
│ │ ├── __init__.py
│ │ ├── job.py
│ │ └── user.py
│ ├── vender/
│ │ └── ruokuai/
│ │ └── main.py
│ └── web/
│ ├── __init__.py
│ ├── handler/
│ │ ├── __init__.py
│ │ ├── app.py
│ │ ├── log.py
│ │ ├── query.py
│ │ ├── stat.py
│ │ └── user.py
│ ├── static/
│ │ ├── css/
│ │ │ ├── app.35e2fbd94557d71d1e2bfa0d4bb44d13.css
│ │ │ ├── app.7dba7f569524413218fde54c298188f4.css
│ │ │ └── app.dfb5ffed622907edd7c5f81709f2b782.css
│ │ ├── index.html
│ │ └── js/
│ │ ├── app.680b1bbd04444c6d9d3a.js
│ │ ├── app.7d7d65cccfbfa339beba.js
│ │ ├── app.96ef02c9e5601eb5ebcb.js
│ │ ├── app.cdb00779aeb087dabd94.js
│ │ ├── manifest.82f431004cf9bb6ad2cb.js
│ │ ├── vendor.532ecf213e49d36e5e9e.js
│ │ └── vendor.aebd1de04bf90e88d9c7.js
│ └── web.py
├── requirements.txt
└── runtime/
├── .gitignore
├── query/
│ └── .gitignore
└── user/
└── .gitignore
SYMBOL INDEX (1737 symbols across 37 files)
FILE: main.py
function main (line 12) | def main():
function test (line 35) | def test():
function load_argvs (line 53) | def load_argvs():
FILE: py12306/app.py
function app_available_check (line 12) | def app_available_check():
class App (line 30) | class App:
method run (line 37) | def run(cls):
method start (line 42) | def start(self):
method did_start (line 47) | def did_start(cls):
method init_class (line 55) | def init_class(self):
method register_sign (line 60) | def register_sign(self):
method handler_exit (line 71) | def handler_exit(self, *args, **kwargs):
method check_auto_code (line 85) | def check_auto_code(cls):
method check_user_account_is_empty (line 92) | def check_user_account_is_empty(cls):
method check_data_dir_exists (line 100) | def check_data_dir_exists():
method test_send_notifications (line 106) | def test_send_notifications(cls):
method run_check (line 140) | def run_check(cls):
class Dict (line 154) | class Dict(dict):
method get (line 155) | def get(self, key, default=None, sep='.'):
method __getitem__ (line 166) | def __getitem__(self, k):
method dict_to_dict (line 170) | def dict_to_dict(value):
FILE: py12306/cluster/cluster.py
class Cluster (line 17) | class Cluster():
method __init__ (line 56) | def __init__(self, *args):
method run (line 62) | def run(cls):
method start (line 66) | def start(self):
method join_cluster (line 77) | def join_cluster(self):
method left_cluster (line 106) | def left_cluster(self, node_name=None):
method make_nodes_as_slave (line 112) | def make_nodes_as_slave(self):
method publish_log_message (line 120) | def publish_log_message(self, message, node_name=None):
method publish_event (line 129) | def publish_event(self, name, data={}):
method get_nodes (line 137) | def get_nodes(self) -> dict:
method refresh_data (line 143) | def refresh_data(self):
method check_master (line 155) | def check_master(self):
method have_master (line 180) | def have_master(self):
method check_nodes (line 183) | def check_nodes(self):
method keep_alive (line 195) | def keep_alive(self):
method subscribe (line 202) | def subscribe(self):
method handle_events (line 221) | def handle_events(self, message):
method get_lock (line 232) | def get_lock(self, key: str, timeout=1, info={}):
method get_lock_info (line 240) | def get_lock_info(self, key, default={}):
method release_lock (line 243) | def release_lock(self, key):
method check_locks (line 247) | def check_locks(self):
method get_user_cookie (line 255) | def get_user_cookie(cls, key, default=None):
method set_user_cookie (line 261) | def set_user_cookie(cls, key, value):
method set_user_info (line 266) | def set_user_info(cls, key, info):
method get_user_info (line 271) | def get_user_info(cls, key, default=None):
FILE: py12306/cluster/redis.py
class Redis (line 13) | class Redis(PyRedis):
method __init__ (line 16) | def __init__(self, *args):
method get (line 31) | def get(self, name, default=None):
method set (line 36) | def set(self, name, value, ex=None, px=None, nx=False, xx=False):
method set_dict (line 39) | def set_dict(self, name, value):
method get_dict (line 43) | def get_dict(self, name, default={}):
method set_pickle (line 50) | def set_pickle(self, name, value):
method get_pickle (line 53) | def get_pickle(self, name, default=None):
FILE: py12306/config.py
class Config (line 11) | class Config:
method __init__ (line 121) | def __init__(self):
method run (line 130) | def run(cls):
method start (line 138) | def start(self):
method refresh_configs (line 142) | def refresh_configs(self, once=False):
method get_remote_config (line 150) | def get_remote_config(self):
method save_to_remote (line 155) | def save_to_remote(self):
method init_envs (line 160) | def init_envs(self):
method update_configs (line 164) | def update_configs(self, envs):
method watch_file_change (line 168) | def watch_file_change(self):
method update_configs_from_remote (line 186) | def update_configs_from_remote(self, envs, first=False):
method is_master (line 208) | def is_master(): # 是不是 主
method is_slave (line 213) | def is_slave(): # 是不是 从
method is_cluster_enabled (line 217) | def is_cluster_enabled():
method is_cdn_enabled (line 221) | def is_cdn_enabled():
method is_cache_rail_id_enabled (line 225) | def is_cache_rail_id_enabled():
class EnvLoader (line 229) | class EnvLoader:
method __init__ (line 232) | def __init__(self):
method load_with_file (line 236) | def load_with_file(cls, file):
method __setattr__ (line 244) | def __setattr__(self, key, value):
FILE: py12306/helpers/OCR.py
class OCR (line 11) | class OCR:
method __init__ (line 17) | def __init__(self):
method get_img_position (line 21) | def get_img_position(cls, img):
method get_img_position_by_ruokuai (line 32) | def get_img_position_by_ruokuai(self, img):
method get_image_position_by_offset (line 43) | def get_image_position_by_offset(self, offsets):
method get_image_by_free_site (line 57) | def get_image_by_free_site(self, img):
FILE: py12306/helpers/auth_code.py
class AuthCode (line 15) | class AuthCode:
method __init__ (line 23) | def __init__(self, session):
method get_auth_code (line 28) | def get_auth_code(cls, session):
method retry_get_auth_code (line 41) | def retry_get_auth_code(self): # TODO 安全次数检测
method download_code (line 46) | def download_code(self):
method check_code (line 64) | def check_code(self, answer):
FILE: py12306/helpers/cdn.py
class Cdn (line 16) | class Cdn:
method __init__ (line 41) | def __init__(self):
method init_data (line 46) | def init_data(self):
method init_config (line 54) | def init_config(self):
method update_cdn_status (line 57) | def update_cdn_status(self, auto=False):
method run (line 66) | def run(cls):
method start (line 73) | def start(self):
method load_items (line 81) | def load_items(self):
method restore_items (line 86) | def restore_items(self):
method is_need_to_recheck (line 119) | def is_need_to_recheck(self):
method get_unchecked_item (line 129) | def get_unchecked_item(self):
method check_available (line 137) | def check_available(self):
method watch_cdn (line 143) | def watch_cdn(self):
method destroy (line 158) | def destroy(self):
method check_item_available (line 167) | def check_item_available(self, item, try_num=0):
method check_did_finished (line 192) | def check_did_finished(self):
method save_available_items (line 205) | def save_available_items(self):
method check_is_ready (line 216) | def check_is_ready(self):
method get_cdn (line 223) | def get_cdn(cls):
FILE: py12306/helpers/event.py
class Event (line 6) | class Event():
method __init__ (line 16) | def __init__(self):
method job_destroy (line 20) | def job_destroy(self, data={}, callback=False): # 停止查询任务
method user_loaded (line 29) | def user_loaded(self, data={}, callback=False): # 用户初始化完成
method user_job_destroy (line 41) | def user_job_destroy(self, data={}, callback=False):
FILE: py12306/helpers/func.py
function singleton (line 15) | def singleton(cls):
function init_interval_by_number (line 50) | def init_interval_by_number(number):
function get_interval_num (line 63) | def get_interval_num(interval, decimal=2):
function stay_second (line 67) | def stay_second(second, call_back=None):
function sleep_forever (line 73) | def sleep_forever():
function is_main_thread (line 82) | def is_main_thread():
function current_thread_id (line 86) | def current_thread_id():
function time_now (line 90) | def time_now():
function timestamp_to_time (line 94) | def timestamp_to_time(timestamp):
function get_file_modify_time (line 99) | def get_file_modify_time(filePath):
function get_file_total_line_num (line 104) | def get_file_total_line_num(file, encoding='utf-8'):
function touch_file (line 109) | def touch_file(path):
function pick_file_lines (line 113) | def pick_file_lines(file, lines):
function str_to_time (line 117) | def str_to_time(str):
function time_int (line 121) | def time_int():
function time_int_ms (line 124) | def time_int_ms():
function is_number (line 127) | def is_number(val):
function create_thread_and_run (line 133) | def create_thread_and_run(jobs, callback_name, wait=True, daemon=True, a...
function jobs_do (line 145) | def jobs_do(jobs, do):
function dict_find_key_by_value (line 151) | def dict_find_key_by_value(data, value, default=None):
function objects_find_object_by_key_value (line 156) | def objects_find_object_by_key_value(objects, key, value, default=None):
function dict_count_key_num (line 161) | def dict_count_key_num(data: dict, key, like=False):
function array_dict_find_by_key_value (line 171) | def array_dict_find_by_key_value(data, key, value, default=None):
function get_true_false_text (line 176) | def get_true_false_text(value, true='', false=''):
function sleep_forever_when_in_test (line 181) | def sleep_forever_when_in_test():
function expand_class (line 185) | def expand_class(cls, key, value, keep_old=True):
function available_value (line 192) | def available_value(value):
function md5 (line 198) | def md5(value):
class Const (line 203) | class Const:
FILE: py12306/helpers/notification.py
class Notification (line 9) | class Notification():
method __init__ (line 15) | def __init__(self):
method voice_code (line 19) | def voice_code(cls, phone, name='', content=''):
method dingtalk_webhook (line 27) | def dingtalk_webhook(cls, content=''):
method send_email (line 32) | def send_email(cls, to, title='', content=''):
method send_email_with_qrcode (line 37) | def send_email_with_qrcode(cls, to, title='', qrcode_path=''):
method send_to_telegram (line 42) | def send_to_telegram(cls, content=''):
method server_chan (line 47) | def server_chan(cls, skey='', title='', content=''):
method push_bear (line 52) | def push_bear(cls, skey='', title='', content=''):
method push_bark (line 57) | def push_bark(cls, content=''):
method send_voice_code_of_yiyuan (line 61) | def send_voice_code_of_yiyuan(self, phone, name='', content=''):
method send_voice_code_of_dingxin (line 93) | def send_voice_code_of_dingxin(self, phone, name='', info={}):
method send_email_by_smtp (line 122) | def send_email_by_smtp(self, to, title, content):
method send_email_by_smtp_with_qrcode (line 142) | def send_email_by_smtp_with_qrcode(self, to, title, qrcode_path):
method send_dingtalk_by_webbook (line 182) | def send_dingtalk_by_webbook(self, content):
method send_to_telegram_bot (line 189) | def send_to_telegram_bot(self, content):
method push_to_bark (line 205) | def push_to_bark(self, content):
method send_serverchan (line 219) | def send_serverchan(self, skey, title, content):
method send_pushbear (line 229) | def send_pushbear(self, skey, title, content):
FILE: py12306/helpers/qrcode.py
function print_qrcode (line 6) | def print_qrcode(path):
FILE: py12306/helpers/request.py
class Request (line 10) | class Request(HTMLSession):
method save_to_file (line 16) | def save_to_file(self, url, path):
method _handle_response (line 24) | def _handle_response(response, **kwargs) -> HTMLResponse:
method add_response_hook (line 35) | def add_response_hook(self, hook):
method json (line 43) | def json(self, default={}):
method request (line 55) | def request(self, *args, **kwargs): # 拦截所有错误
method cdn_request (line 73) | def cdn_request(self, url: str, cdn=None, method='GET', **kwargs):
method dump_cookies (line 81) | def dump_cookies(self):
FILE: py12306/helpers/station.py
class Station (line 8) | class Station:
method __init__ (line 12) | def __init__(self):
method get_station_by_name (line 27) | def get_station_by_name(cls, name):
method get_station_by (line 31) | def get_station_by(cls, value, field):
method get_station_key_by_name (line 39) | def get_station_key_by_name(cls, name):
method get_station_name_by_key (line 44) | def get_station_name_by_key(cls, key):
FILE: py12306/helpers/type.py
class UserType (line 5) | class UserType:
class OrderSeatType (line 20) | class OrderSeatType:
class SeatType (line 36) | class SeatType:
FILE: py12306/log/base.py
class BaseLog (line 10) | class BaseLog:
method add_log (line 16) | def add_log(cls, content=''):
method flush (line 28) | def flush(cls, sep='\n', end='\n', file=None, exit=False, publish=True):
method get_logs (line 48) | def get_logs(self):
method empty_logs (line 58) | def empty_logs(self, logs=None):
method add_quick_log (line 68) | def add_quick_log(cls, content=''):
method notification (line 73) | def notification(self, title, content=''):
FILE: py12306/log/cluster_log.py
class ClusterLog (line 6) | class ClusterLog(BaseLog):
method get_print_nodes (line 33) | def get_print_nodes(nodes):
FILE: py12306/log/common_log.py
class CommonLog (line 7) | class CommonLog(BaseLog):
method __init__ (line 64) | def __init__(self):
method init_data (line 68) | def init_data(self):
method print_welcome (line 72) | def print_welcome(cls):
method print_configs (line 90) | def print_configs(cls):
method print_test_complete (line 132) | def print_test_complete(cls):
method print_auto_code_fail (line 139) | def print_auto_code_fail(cls, reason):
method print_auth_code_info (line 146) | def print_auth_code_info(cls, reason):
FILE: py12306/log/order_log.py
class OrderLog (line 6) | class OrderLog(BaseLog):
method print_passenger_did_deleted (line 45) | def print_passenger_did_deleted(cls, passengers):
method print_ticket_did_ordered (line 53) | def print_ticket_did_ordered(cls, order_id):
method get_order_success_notification_info (line 60) | def get_order_success_notification_info(cls, query):
FILE: py12306/log/query_log.py
class QueryLog (line 14) | class QueryLog(BaseLog):
method __init__ (line 47) | def __init__(self):
method init_data (line 53) | def init_data(cls):
method get_data_from_cluster (line 74) | def get_data_from_cluster(self):
method refresh_data_of_cluster (line 81) | def refresh_data_of_cluster(self):
method print_init_jobs (line 88) | def print_init_jobs(cls, jobs):
method print_ticket_num_less_than_specified (line 118) | def print_ticket_num_less_than_specified(cls, rest_num, job):
method print_ticket_seat_available (line 128) | def print_ticket_seat_available(cls, left_date, train_number, seat_typ...
method print_ticket_available (line 140) | def print_ticket_available(cls, left_date, train_number, rest_num):
method print_query_error (line 150) | def print_query_error(cls, reason, code=None):
method print_job_start (line 161) | def print_job_start(cls, job_name):
method add_query_time_log (line 173) | def add_query_time_log(cls, time, is_cdn):
method add_stay_log (line 177) | def add_stay_log(cls, second):
method print_data_restored (line 182) | def print_data_restored(self):
method refresh_data (line 190) | def refresh_data(self):
method save_data (line 198) | def save_data(self):
FILE: py12306/log/redis_log.py
class RedisLog (line 6) | class RedisLog(BaseLog):
FILE: py12306/log/user_log.py
class UserLog (line 6) | class UserLog(BaseLog):
method __init__ (line 38) | def __init__(self):
method init_data (line 42) | def init_data(self):
method print_init_users (line 46) | def print_init_users(cls, users):
method print_welcome_user (line 57) | def print_welcome_user(cls, user):
method print_start_login (line 64) | def print_start_login(cls, user):
method print_user_passenger_init_success (line 71) | def print_user_passenger_init_success(cls, passengers):
method print_user_expired (line 79) | def print_user_expired(cls):
FILE: py12306/order/order.py
class DomBounding (line 16) | class DomBounding:
method __init__ (line 17) | def __init__(self, rect: dict) -> None:
class Browser (line 26) | class Browser:
method __init__ (line 30) | def __init__(self) -> None:
method request_init_slide (line 33) | def request_init_slide(self, session, html):
method __request_init_slide (line 39) | async def __request_init_slide(self, session, html):
method request_init_slide2 (line 84) | def request_init_slide2(self, session, data):
method __request_init_slide2 (line 90) | async def __request_init_slide2(self, data):
class Order (line 151) | class Order:
method __init__ (line 174) | def __init__(self, query, user):
method order (line 186) | def order(self):
method normal_order (line 199) | def normal_order(self):
method order_did_success (line 231) | def order_did_success(self):
method send_notification (line 238) | def send_notification(self):
method submit_order_request (line 284) | def submit_order_request(self):
method check_order_info (line 310) | def check_order_info(self, slide_info=None):
method get_queue_count (line 361) | def get_queue_count(self):
method confirm_single_for_queue (line 433) | def confirm_single_for_queue(self):
method query_order_wait_time (line 494) | def query_order_wait_time(self):
method make_passenger_ticket_str (line 577) | def make_passenger_ticket_str(self):
FILE: py12306/query/job.py
class Job (line 18) | class Job:
method __init__ (line 71) | def __init__(self, info, query):
method init_data (line 77) | def init_data(self, info):
method update_interval (line 107) | def update_interval(self):
method run (line 110) | def run(self):
method start (line 113) | def start(self):
method judge_date_legal (line 141) | def judge_date_legal(self, date):
method query_by_date (line 158) | def query_by_date(self, date):
method handle_response (line 176) | def handle_response(self, response):
method handle_seats (line 201) | def handle_seats(self, allow_seats, ticket_info):
method do_order (line 252) | def do_order(self, user):
method get_results (line 257) | def get_results(self, response):
method is_has_ticket (line 272) | def is_has_ticket(self, ticket_info):
method is_has_ticket_by_seat (line 275) | def is_has_ticket_by_seat(self, seat):
method is_trains_number_valid (line 278) | def is_trains_number_valid(self):
method is_member_number_valid (line 292) | def is_member_number_valid(self, seat):
method destroy (line 295) | def destroy(self):
method safe_stay (line 308) | def safe_stay(self):
method set_passengers (line 315) | def set_passengers(self, passengers):
method set_seat (line 319) | def set_seat(self, seat):
method get_user (line 324) | def get_user(self):
method check_passengers (line 331) | def check_passengers(self):
method refresh_station (line 341) | def refresh_station(self, station):
method get_info_of_left_date (line 348) | def get_info_of_left_date(self):
method get_info_of_ticket_num (line 351) | def get_info_of_ticket_num(self):
method get_info_of_train_number (line 354) | def get_info_of_train_number(self):
method get_info_of_train_no (line 357) | def get_info_of_train_no(self):
method get_info_of_left_station (line 360) | def get_info_of_left_station(self):
method get_info_of_arrive_station (line 363) | def get_info_of_arrive_station(self):
method get_info_of_order_text (line 366) | def get_info_of_order_text(self):
method get_info_of_secret_str (line 369) | def get_info_of_secret_str(self):
method get_info_of_train_left_time (line 372) | def get_info_of_train_left_time(self):
method get_info_of_train_arrive_time (line 375) | def get_info_of_train_arrive_time(self):
FILE: py12306/query/query.py
class Query (line 13) | class Query:
method __init__ (line 31) | def __init__(self):
method update_query_interval (line 39) | def update_query_interval(self, auto=False):
method update_query_jobs (line 44) | def update_query_jobs(self, auto=False):
method run (line 53) | def run(cls):
method check_before_run (line 60) | def check_before_run(cls):
method start (line 65) | def start(self):
method refresh_jobs (line 92) | def refresh_jobs(self):
method init_jobs (line 112) | def init_jobs(self):
method init_job (line 117) | def init_job(self, job):
method request_device_id (line 122) | def request_device_id(self, force_renew = False):
method request_device_id2 (line 155) | def request_device_id2(self):
method wait_for_ready (line 182) | def wait_for_ready(cls):
method job_by_name (line 189) | def job_by_name(cls, name) -> Job:
method job_by_name (line 196) | def job_by_name(cls, name) -> Job:
method job_by_account_key (line 201) | def job_by_account_key(cls, account_key) -> Job:
method get_query_api_type (line 206) | def get_query_api_type(cls):
FILE: py12306/user/job.py
class UserJob (line 21) | class UserJob:
method __init__ (line 49) | def __init__(self, info):
method init_data (line 53) | def init_data(self, info):
method update_user (line 61) | def update_user(self):
method run (line 66) | def run(self):
method start (line 71) | def start(self):
method check_heartbeat (line 86) | def check_heartbeat(self):
method get_last_heartbeat (line 98) | def get_last_heartbeat(self):
method set_last_heartbeat (line 104) | def set_last_heartbeat(self, time=None):
method is_first_time (line 111) | def is_first_time(self):
method handle_login (line 116) | def handle_login(self, expire=False):
method login (line 125) | def login(self):
method qr_login (line 162) | def qr_login(self):
method login2 (line 211) | def login2(self):
method download_code (line 251) | def download_code(self):
method check_user_is_login (line 284) | def check_user_is_login(self):
method auth_uamtk (line 297) | def auth_uamtk(self):
method auth_uamauthclient (line 311) | def auth_uamauthclient(self, tk):
method request_device_id (line 322) | def request_device_id(self, force_renew = False):
method request_device_id2 (line 360) | def request_device_id2(self):
method login_did_success (line 386) | def login_did_success(self):
method welcome_user (line 398) | def welcome_user(self):
method get_cookie_path (line 402) | def get_cookie_path(self):
method update_user_info (line 405) | def update_user_info(self, info):
method get_name (line 408) | def get_name(self):
method save_user (line 411) | def save_user(self):
method did_loaded_user (line 418) | def did_loaded_user(self):
method user_did_load (line 434) | def user_did_load(self):
method get_user_info (line 444) | def get_user_info(self):
method load_user (line 459) | def load_user(self):
method load_user_from_remote (line 471) | def load_user_from_remote(self):
method check_is_ready (line 492) | def check_is_ready(self):
method wait_for_ready (line 495) | def wait_for_ready(self):
method destroy (line 501) | def destroy(self):
method response_login_check (line 509) | def response_login_check(self, response, **kwargs):
method get_user_passengers (line 513) | def get_user_passengers(self):
method can_access_passengers (line 533) | def can_access_passengers(self):
method get_passengers_by_members (line 551) | def get_passengers_by_members(self, members):
method request_init_dc_page (line 603) | def request_init_dc_page(self):
FILE: py12306/user/user.py
class User (line 10) | class User:
method __init__ (line 17) | def __init__(self):
method update_user_accounts (line 22) | def update_user_accounts(self, auto=False, old=None):
method update_interval (line 28) | def update_interval(self, auto=False):
method run (line 33) | def run(cls):
method start (line 39) | def start(self):
method init_users (line 45) | def init_users(self):
method init_user (line 49) | def init_user(self, info):
method refresh_users (line 54) | def refresh_users(self, old):
method is_empty (line 70) | def is_empty(cls):
method get_user (line 75) | def get_user(cls, key) -> UserJob:
method get_passenger_for_members (line 82) | def get_passenger_for_members(cls, members, key):
FILE: py12306/vender/ruokuai/main.py
class RKClient (line 5) | class RKClient(object):
method __init__ (line 7) | def __init__(self, username, password, soft_id, soft_key):
method rk_create (line 24) | def rk_create(self, image, im_type, timeout=20):
method rk_report_error (line 38) | def rk_report_error(self, im_id):
FILE: py12306/web/handler/app.py
function index (line 16) | def index():
function menus (line 32) | def menus():
function actions (line 48) | def actions():
FILE: py12306/web/handler/log.py
function log_output (line 18) | def log_output():
FILE: py12306/web/handler/query.py
function query_lists (line 14) | def query_lists():
function convert_job_to_info (line 24) | def convert_job_to_info(job: Job):
FILE: py12306/web/handler/stat.py
function dashboard (line 14) | def dashboard():
function clusters (line 38) | def clusters():
FILE: py12306/web/handler/user.py
function login (line 14) | def login():
function users (line 30) | def users():
function user_info (line 42) | def user_info():
function convert_job_to_info (line 53) | def convert_job_to_info(job: UserJob):
FILE: py12306/web/static/js/manifest.82f431004cf9bb6ad2cb.js
function t (line 1) | function t(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{...
FILE: py12306/web/static/js/vendor.532ecf213e49d36e5e9e.js
function y (line 1) | function y(){if(!g){g=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+)...
function r (line 1) | function r(){var e=this.__cachedImgObj;this.onload=this.onerror=this.__c...
function a (line 1) | function a(e){return e&&e.width&&e.height}
function r (line 1) | function r(e){this._setting=e||{},this._extent=[1/0,-1/0],this._interval...
function s (line 1) | function s(e){return e>o||e<-o}
function h (line 1) | function h(e){if(null==e||"object"!=typeof e)return e;var t=e,a=r.call(e...
function f (line 1) | function f(e,t,n){if(!b(t)||!b(e))return n?h(t):e;for(var i in t)if(t.ha...
function p (line 1) | function p(e,t,n){for(var i in t)t.hasOwnProperty(i)&&(n?null!=t[i]:null...
function g (line 1) | function g(e,t,n){if(e&&t)if(e.forEach&&e.forEach===o)e.forEach(t,n);els...
function y (line 1) | function y(e,t){var n=l.call(arguments,2);return function(){return e.app...
function _ (line 1) | function _(e){return"[object Array]"===r.call(e)}
function b (line 1) | function b(e){var t=typeof e;return"function"===t||!!e&&"object"==t}
function x (line 1) | function x(e){return!!n[r.call(e)]}
function w (line 1) | function w(e){return"object"==typeof e&&"number"==typeof e.nodeType&&"ob...
function k (line 1) | function k(e){return e[C]}
function S (line 1) | function S(e){var t=_(e);this.data={};var n=this;function i(e,i){t?n.set...
function i (line 1) | function i(){}
function m (line 1) | function m(e,t,n){if(n||null!=t.get(e)){for(var i=0;null!=t.get(e+i);)i+...
function M (line 1) | function M(e,t,n){null!=p.get(t)?e.otherDims[t]=n:(e.coordDim=t,e.coordD...
function i (line 6) | function i(e,t){0}
function r (line 6) | function r(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}
function d (line 6) | function d(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.spl...
function h (line 6) | function h(e){var t=e?Object.keys(e).map(function(t){var n=e[t];if(void ...
function p (line 6) | function p(e,t,n,i){var r=i&&i.options.stringifyQuery,a=t.query||{};try{...
function m (line 6) | function m(e){if(Array.isArray(e))return e.map(m);if(e&&"object"==typeof...
function g (line 6) | function g(e,t){var n=e.path,i=e.query;void 0===i&&(i={});var r=e.hash;r...
function y (line 6) | function y(e,t){return t===v?e===t:!!t&&(e.path&&t.path?e.path.replace(f...
function _ (line 6) | function _(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e...
function k (line 6) | function k(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.default...
function S (line 6) | function S(e){if(!S.installed||b!==e){S.installed=!0,b=e;var t=function(...
function T (line 6) | function T(e,t,n){var i=e.charAt(0);if("/"===i)return e;if("?"===i||"#"=...
function O (line 6) | function O(e){return e.replace(/\/\//g,"/")}
function L (line 6) | function L(e,t){for(var n,i=[],r=0,a=0,o="",s=t&&t.delimiter||"/";null!=...
function F (line 6) | function F(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%...
function z (line 6) | function z(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"=...
function R (line 6) | function R(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}
function B (line 6) | function B(e){return e.replace(/([=!:$\/()])/g,"\\$1")}
function j (line 6) | function j(e,t){return e.keys=t,e}
function V (line 6) | function V(e){return e.sensitive?"":"i"}
function H (line 6) | function H(e,t,n){E(t)||(n=t||n,t=[]);for(var i=(n=n||{}).strict,r=!1!==...
function q (line 6) | function q(e,t,n){return E(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp...
function G (line 6) | function G(e,t,n){try{return(W[e]||(W[e]=D.compile(e)))(t||{},{pretty:!0...
function Y (line 6) | function Y(e,t,n,i){var r=t||[],a=n||Object.create(null),o=i||Object.cre...
function U (line 6) | function U(e,t,n,i){var r="string"==typeof e?{path:e}:e;if(r.name||r._no...
function K (line 6) | function K(e,t){for(var n in t)e[n]=t[n];return e}
function X (line 6) | function X(e,t){var n=Y(e),i=n.pathList,r=n.pathMap,a=n.nameMap;function...
function Z (line 6) | function Z(e,t,n){var i=t.match(e);if(!i)return!1;if(!n)return!0;for(var...
function Q (line 6) | function Q(){window.history.replaceState({key:de()},""),window.addEventL...
function ee (line 6) | function ee(e,t,n,i){if(e.app){var r=e.options.scrollBehavior;r&&e.app.$...
function te (line 6) | function te(){var e=de();e&&(J[e]={x:window.pageXOffset,y:window.pageYOf...
function ne (line 6) | function ne(e){return re(e.x)||re(e.y)}
function ie (line 6) | function ie(e){return{x:re(e.x)?e.x:window.pageXOffset,y:re(e.y)?e.y:win...
function re (line 6) | function re(e){return"number"==typeof e}
function ae (line 6) | function ae(e,t){var n,i="object"==typeof e;if(i&&"string"==typeof e.sel...
function ce (line 6) | function ce(){return le.now().toFixed(3)}
function de (line 6) | function de(){return ue}
function he (line 6) | function he(e,t){te();var n=window.history;try{t?n.replaceState({key:ue}...
function fe (line 6) | function fe(e){he(e,!0)}
function pe (line 6) | function pe(e,t,n){var i=function(r){r>=e.length?n():e[r]?t(e[r],functio...
function me (line 6) | function me(e){return function(t,n,i){var a=!1,o=0,s=null;ve(e,function(...
function ve (line 6) | function ve(e,t){return ge(e.map(function(e){return Object.keys(e.compon...
function ge (line 6) | function ge(e){return Array.prototype.concat.apply([],e)}
function _e (line 6) | function _e(e){var t=!1;return function(){for(var n=[],i=arguments.lengt...
function xe (line 6) | function xe(e,t,n,i){var r=ve(e,function(e,i,r,a){var o=function(e,t){"f...
function we (line 6) | function we(e,t){if(t)return function(){return e.apply(t,arguments)}}
function t (line 6) | function t(t,n){var i=this;e.call(this,t,n);var r=t.options.scrollBehavi...
function ke (line 6) | function ke(e){var t=window.location.pathname;return e&&0===t.indexOf(e)...
function t (line 6) | function t(t,n,i){e.call(this,t,n),i&&function(e){var t=ke(e);if(!/^\/#/...
function Me (line 6) | function Me(){var e=Te();return"/"===e.charAt(0)||(De("/"+e),!1)}
function Te (line 6) | function Te(){var e=window.location.href,t=e.indexOf("#");return-1===t?"...
function Oe (line 6) | function Oe(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t...
function Ee (line 6) | function Ee(e){se?he(Oe(e)):window.location.hash=e}
function De (line 6) | function De(e){se?fe(Oe(e)):window.location.replace(Oe(e))}
function t (line 6) | function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}
function $e (line 6) | function $e(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e....
function n (line 6) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function o (line 6) | function o(e){return e&&e.__esModule?e:{default:e}}
function P (line 6) | function P(e,t,n,i){var a=r.createFromString(e,t);return n&&("center"===...
function A (line 6) | function A(e,t){var n,i=t.width/t.height,r=e.height*i;return n=r<=e.widt...
function $ (line 6) | function $(e,t){if(e.applyTransform){var n=e.getBoundingRect().calculate...
function N (line 6) | function N(e,t,n){var i=T(2*e);return(i+T(t))%2==0?i/2:(i+(n?1:-1))/2}
function L (line 6) | function L(e){return null!=e&&"none"!==e}
function R (line 6) | function R(e){var t=e.__hoverStl;if(t&&!e.__highlighted){var n=e.useHove...
function B (line 6) | function B(e,t,n){!L(t[n])&&L(e[n])&&(e[n]=function(e){if("string"!=type...
function j (line 6) | function j(e){e.__highlighted&&(!function(e){var t=e.__highlighted;if("l...
function V (line 6) | function V(e,t){e.isGroup?e.traverse(function(e){!e.isGroup&&t(e)}):t(e)}
function H (line 6) | function H(e,t){t=e.__hoverStl=!1!==t&&(t||{}),e.__hoverStlDirty=!0,e.__...
function q (line 6) | function q(e){this.__hoverSilentOnTouch&&e.zrByTouch||!this.__isEmphasis...
function W (line 6) | function W(e){this.__hoverSilentOnTouch&&e.zrByTouch||!this.__isEmphasis...
function G (line 6) | function G(){this.__isEmphasisEntered=!0,V(this,R)}
function Y (line 6) | function Y(){this.__isEmphasisEntered=!1,V(this,j)}
function U (line 6) | function U(e,t){var n=!1===t;if(e.__hoverSilentOnTouch=null!=t&&t.hoverS...
function K (line 6) | function K(e,t,n,r,a){return X(e,t,r,a),n&&i.extend(e,n),e}
function X (line 6) | function X(e,t,n,r){if((n=n||D).isRectText){var a=t.getShallow("position...
function Z (line 6) | function Z(e,t,n,r,a,o){n=!a&&n||D,e.textFill=J(t.getShallow("color"),r)...
function J (line 6) | function J(e,t){return"auto"!==e?e:t&&t.autoColor?t.autoColor:null}
function Q (line 6) | function Q(e){var t=e.insideRollbackOpt;if(t&&null==e.textFill){var n,i=...
function ee (line 6) | function ee(e){var t=e.insideRollback;t&&(e.textFill=t.textFill,e.textSt...
function te (line 6) | function te(e,t,n,i,r,a){if("function"==typeof r&&(a=r,r=null),i&&i.isAn...
function ne (line 6) | function ne(e,t,n,i,r){te(!0,e,t,n,i,r)}
function ie (line 6) | function ie(e,t,n){return t&&!i.isArrayLike(t)&&(t=u.getLocalTransform(t...
function l (line 6) | function l(e){var t={position:s.clone(e.position),rotation:e.rotation};r...
function n (line 6) | function n(e){return e}
function i (line 6) | function i(e,t,i,r,a){this._old=e,this._new=t,this._oldKeyGetter=i||n,th...
function r (line 6) | function r(e,t,n,i,r){for(var a=0;a<e.length;a++){var o="_ec_"+r[i](e[a]...
function i (line 6) | function i(e){return e&&"object"==typeof e&&"default"in e?e.default:e}
function d (line 6) | function d(e,t){Object.keys(t).forEach(function(n){t[n]&&(e[n]=t[n])})}
function c (line 6) | function c(e,t,n,i,r){var a=0,o=0;null==i&&(i=1/0),null==r&&(r=1/0);var ...
function p (line 6) | function p(e,t,n){n=o.normalizeCssArray(n||0);var i=t.width,s=t.height,l...
function m (line 6) | function m(e,t){return t&&e&&s(l,function(n){t.hasOwnProperty(n)&&(e[n]=...
function l (line 6) | function l(n,i){var a={},o=0,l={},u=0;if(s(n,function(t){l[t]=e[t]}),s(n...
function c (line 6) | function c(e,t){return e.hasOwnProperty(t)}
function d (line 6) | function d(e,t){return null!=e[t]&&"auto"!==e[t]}
function h (line 6) | function h(e,t,n){s(e,function(e){t[e]=n[e]})}
function l (line 6) | function l(e,t,n){a.Group.call(this),this.updateData(e,t,n)}
function d (line 6) | function d(e){return[e[0]/2,e[1]/2]}
function h (line 6) | function h(e,t){this.parent.drift(e,t)}
function g (line 6) | function g(){!a.isInEmphasis(this)&&_.call(this)}
function y (line 6) | function y(){!a.isInEmphasis(this)&&b.call(this)}
function _ (line 6) | function _(){if(!this.incremental&&!this.useHoverLayer){var e=this.__sym...
function b (line 6) | function b(){this.incremental||this.useHoverLayer||this.animateTo({scale...
function m (line 6) | function m(e,t){var n=(e[1]-e[0])/t/2;e[0]+=n,e[1]-=n}
function d (line 6) | function d(e,t){return c?e>t:e<t}
function v (line 6) | function v(e,t,n,i,r,a,o,s,l,c){if(c>t&&c>i&&c>a&&c>s||c<t&&c<i&&c<a&&c<...
function g (line 6) | function g(e,t,n,i,r,a,o,s){if(s>t&&s>i&&s>a||s<t&&s<i&&s<a)return 0;var...
function y (line 6) | function y(e,t,n,i,r,a,o,s){if((s-=t)>n||s<-n)return 0;var u=Math.sqrt(n...
function _ (line 6) | function _(e,t,n,i,l){for(var u,h,p=0,m=0,_=0,b=0,x=0,w=0;w<e.length;){v...
function r (line 6) | function r(e,t,n,i,r,a,o){var s=.5*(n-e),l=.5*(i-t);return(2*(t-n)+s+l)*...
function p (line 6) | function p(e,t){if(!e||!t)return!1;if(-1!==t.indexOf(" "))throw new Erro...
function g (line 6) | function g(e,t){var n=e+":"+(t=t||m);if(d[n])return d[n];for(var i=(e+""...
function y (line 6) | function y(e,t,n){return"right"===n?e-=t:"center"===n&&(e-=t/2),e}
function _ (line 6) | function _(e,t,n){return"middle"===n?e-=t/2:"bottom"===n&&(e-=t),e}
function b (line 6) | function b(e,t,n,i,r){if(!t)return"";var a=(e+"").split("\n");r=x(t,n,i,...
function x (line 6) | function x(e,t,n,i){(i=s({},i)).font=t;n=l(n,"...");i.maxIterations=l(i....
function w (line 6) | function w(e,t){var n=t.containerWidth,i=t.font,r=t.contentWidth;if(!n)r...
function C (line 6) | function C(e,t,n,i){for(var r=0,a=0,o=e.length;a<o&&r<t;a++){var s=e.cha...
function k (line 6) | function k(e){return g("国",e)}
function S (line 6) | function S(e,t){return v.measureText(e,t)}
function M (line 6) | function M(e,t,n,i){null!=e&&(e+="");var r=k(t),a=e?e.split("\n"):[],o=a...
function T (line 6) | function T(e,t){var n={lines:[],width:0,height:0};if(null!=e&&(e+=""),!e...
function O (line 6) | function O(e,t,n){for(var i=""===t,r=t.split("\n"),a=e.lines,o=0;o<r.len...
function f (line 6) | function f(e,t){var n,r,a,o=e.type,l=t.getMin(),h=t.getMax(),f=null!=l,p...
function p (line 6) | function p(e){var t,n=e.getLabelModel().get("formatter"),i="category"===...
function m (line 6) | function m(e,t){return"category"===e.type?e.scale.getLabel(t):t}
function h (line 6) | function h(e,t,n,i,r,a,c,d){o(i)?(a=r,r=i,i=0):s(r)?(a=r,r="linear",i=0)...
function f (line 6) | function f(e,t,n,i){if(t){var r={};r[t]={},r[t][n]=i,e.attr(r)}else e.at...
function o (line 6) | function o(e,t,n,i,o,l){var u=a.getAxisPointerClass(e.axisPointerClass);...
function s (line 6) | function s(e,t,n){var i=e._axisPointer;i&&i.dispose(t,n),e._axisPointer=...
function g (line 6) | function g(e,t){d.isInstance(e)||(e=d.seriesDataToSource(e)),this._sourc...
function b (line 6) | function b(){return this._data.length}
function x (line 6) | function x(e){return this._data[e]}
function w (line 6) | function w(e){for(var t=0;t<e.length;t++)this._data.push(e[t])}
function k (line 6) | function k(e,t,n,i){return null!=n?e[n]:e}
function M (line 6) | function M(e,t,n,i){return T(e[i],this._dimensionInfos[t])}
function T (line 6) | function T(e,t){var n=t&&t.type;if("ordinal"===n){var i=t&&t.ordinalMeta...
function a (line 6) | function a(e){r.call(this,e)}
function y (line 6) | function y(e,t,n){return e.getCoordSysModel()===t}
function _ (line 6) | function _(e,t,n){this._coordsMap={},this._coordsList=[],this._axesMap={...
function x (line 6) | function x(e,t,n,i){n.getAxesOnZeroOf=function(){return r?[r]:[]};var r,...
function w (line 6) | function w(e){return e&&"category"!==e.type&&"time"!==e.type&&d(e)}
function o (line 6) | function o(){a(r,function(e){var t=e.isHorizontal(),n=t?[0,i.width]:[0,i...
function s (line 6) | function s(t){return function(n,a){if(y(n,e)){var s=n.get("position");"x...
function n (line 6) | function n(e,t,n){a(e.mapDimension(t.dim,!0),function(n){t.scale.unionEx...
function k (line 6) | function k(e,t){return o(C,function(t){return e.getReferringComponents(t...
function S (line 6) | function S(e){return"cartesian2d"===e.get("coordinateSystem")}
function f (line 6) | function f(e,t,n){var i=e.cpx2,r=e.cpy2;return null===i||null===r?[(n?d:...
function a (line 6) | function a(e,t,n){var i,a={},o="toggleSelected"===e;return n.eachCompone...
function i (line 12) | function i(e){return void 0===e||null===e}
function r (line 12) | function r(e){return void 0!==e&&null!==e}
function a (line 12) | function a(e){return!0===e}
function o (line 12) | function o(e){return"string"==typeof e||"number"==typeof e||"symbol"==ty...
function s (line 12) | function s(e){return null!==e&&"object"==typeof e}
function u (line 12) | function u(e){return"[object Object]"===l.call(e)}
function c (line 12) | function c(e){return"[object RegExp]"===l.call(e)}
function d (line 12) | function d(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t...
function h (line 12) | function h(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null...
function f (line 12) | function f(e){var t=parseFloat(e);return isNaN(t)?e:t}
function p (line 12) | function p(e,t){for(var n=Object.create(null),i=e.split(","),r=0;r<i.len...
function g (line 12) | function g(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(...
function _ (line 12) | function _(e,t){return y.call(e,t)}
function b (line 12) | function b(e){var t=Object.create(null);return function(n){return t[n]||...
function n (line 12) | function n(n){var i=arguments.length;return i?i>1?e.apply(t,arguments):e...
function T (line 12) | function T(e,t){t=t||0;for(var n=e.length-t,i=new Array(n);n--;)i[n]=e[n...
function O (line 12) | function O(e,t){for(var n in t)e[n]=t[n];return e}
function E (line 12) | function E(e){for(var t={},n=0;n<e.length;n++)e[n]&&O(t,e[n]);return t}
function D (line 12) | function D(e,t,n){}
function I (line 12) | function I(e,t){if(e===t)return!0;var n=s(e),i=s(t);if(!n||!i)return!n&&...
function $ (line 12) | function $(e,t){for(var n=0;n<e.length;n++)if(I(e[n],t))return n;return-1}
function N (line 12) | function N(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments...
function B (line 12) | function B(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}
function j (line 12) | function j(e,t,n,i){Object.defineProperty(e,t,{value:n,enumerable:!!i,wr...
function re (line 12) | function re(e){return"function"==typeof e&&/native code/.test(e.toString...
function e (line 12) | function e(){this.set=Object.create(null)}
function de (line 12) | function de(e){ue.target&&ce.push(ue.target),ue.target=e}
function he (line 12) | function he(){ue.target=ce.pop()}
function ve (line 12) | function ve(e){return new fe(void 0,void 0,void 0,String(e))}
function ge (line 12) | function ge(e){var t=new fe(e.tag,e.data,e.children,e.text,e.elm,e.conte...
function we (line 12) | function we(e){xe=e}
function ke (line 12) | function ke(e,t,n){e.__proto__=t}
function Se (line 12) | function Se(e,t,n){for(var i=0,r=n.length;i<r;i++){var a=n[i];j(e,a,t[a])}}
function Me (line 12) | function Me(e,t){var n;if(s(e)&&!(e instanceof fe))return _(e,"__ob__")&...
function Te (line 12) | function Te(e,t,n,i,r){var a=new ue,o=Object.getOwnPropertyDescriptor(e,...
function Oe (line 12) | function Oe(e,t,n){if(Array.isArray(e)&&d(t))return e.length=Math.max(e....
function Ee (line 12) | function Ee(e,t){if(Array.isArray(e)&&d(t))e.splice(t,1);else{var n=e.__...
function Pe (line 12) | function Pe(e,t){if(!t)return e;for(var n,i,r,a=Object.keys(t),o=0;o<a.l...
function Ae (line 12) | function Ae(e,t,n){return n?function(){var i="function"==typeof t?t.call...
function Ie (line 12) | function Ie(e,t){return t?e?e.concat(t):Array.isArray(t)?t:[t]:e}
function $e (line 12) | function $e(e,t,n,i){var r=Object.create(e||null);return t?O(r,t):r}
function Le (line 12) | function Le(e,t,n){"function"==typeof t&&(t=t.options),function(e,t){var...
function Fe (line 12) | function Fe(e,t,n,i){if("string"==typeof n){var r=e[t];if(_(r,n))return ...
function ze (line 12) | function ze(e,t,n,i){var r=t[e],a=!_(n,e),o=n[e],s=je(Boolean,r.type);if...
function Re (line 12) | function Re(e){var t=e&&e.toString().match(/^\s*function (\w+)/);return ...
function Be (line 12) | function Be(e,t){return Re(e)===Re(t)}
function je (line 12) | function je(e,t){if(!Array.isArray(t))return Be(t,e)?0:-1;for(var n=0,i=...
function Ve (line 12) | function Ve(e,t,n){if(t)for(var i=t;i=i.$parent;){var r=i.$options.error...
function He (line 12) | function He(e,t,n){if(R.errorHandler)try{return R.errorHandler.call(null...
function qe (line 12) | function qe(e,t,n){if(!W&&!G||"undefined"==typeof console)throw e;consol...
function Ke (line 12) | function Ke(){Ue=!1;var e=Ye.slice(0);Ye.length=0;for(var t=0;t<e.length...
function et (line 12) | function et(e,t){var n;if(Ye.push(function(){if(e)try{e.call(t)}catch(e)...
function nt (line 12) | function nt(e){!function e(t,n){var i,r;var a=Array.isArray(t);if(!a&&!s...
function at (line 12) | function at(e){function t(){var e=arguments,n=t.fns;if(!Array.isArray(n)...
function ot (line 12) | function ot(e,t,n,r,a){var o,s,l,u;for(o in e)s=e[o],l=t[o],u=rt(o),i(s)...
function st (line 12) | function st(e,t,n){var o;e instanceof fe&&(e=e.data.hook||(e.data.hook={...
function lt (line 12) | function lt(e,t,n,i,a){if(r(t)){if(_(t,n))return e[n]=t[n],a||delete t[n...
function ut (line 12) | function ut(e){return o(e)?[ve(e)]:Array.isArray(e)?function e(t,n){var ...
function ct (line 12) | function ct(e){return r(e)&&r(e.text)&&!1===e.isComment}
function dt (line 12) | function dt(e,t){return(e.__esModule||oe&&"Module"===e[Symbol.toStringTa...
function ht (line 12) | function ht(e){return e.isComment&&e.asyncFactory}
function ft (line 12) | function ft(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t...
function pt (line 12) | function pt(e,t,n){n?it.$once(e,t):it.$on(e,t)}
function mt (line 12) | function mt(e,t){it.$off(e,t)}
function vt (line 12) | function vt(e,t,n){it=e,ot(t,n||{},pt,mt),it=void 0}
function gt (line 12) | function gt(e,t){var n={};if(!e)return n;for(var i=0,r=e.length;i<r;i++)...
function yt (line 12) | function yt(e){return e.isComment&&!e.asyncFactory||" "===e.text}
function _t (line 12) | function _t(e,t){t=t||{};for(var n=0;n<e.length;n++)Array.isArray(e[n])?...
function xt (line 12) | function xt(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}
function wt (line 12) | function wt(e,t){if(t){if(e._directInactive=!1,xt(e))return}else if(e._d...
function Ct (line 12) | function Ct(e,t){de();var n=e.$options[t];if(n)for(var i=0,r=n.length;i<...
function Dt (line 12) | function Dt(){var e,t;for(Ot=!0,kt.sort(function(e,t){return e.id-t.id})...
function $t (line 12) | function $t(e,t,n){It.get=function(){return this[t][n]},It.set=function(...
function Nt (line 12) | function Nt(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){va...
function Ft (line 12) | function Ft(e,t,n){var i=!ne();"function"==typeof n?(It.get=i?zt(t):n,It...
function zt (line 12) | function zt(e){return function(){var t=this._computedWatchers&&this._com...
function Rt (line 12) | function Rt(e,t,n,i){return u(n)&&(i=n,n=n.handler),"string"==typeof n&&...
function Bt (line 12) | function Bt(e,t){if(e){for(var n=Object.create(null),i=oe?Reflect.ownKey...
function jt (line 12) | function jt(e,t){var n,i,a,o,l;if(Array.isArray(e)||"string"==typeof e)f...
function Vt (line 12) | function Vt(e,t,n,i){var r,a=this.$scopedSlots[e];if(a)n=n||{},i&&(n=O(O...
function Ht (line 12) | function Ht(e){return Fe(this.$options,"filters",e)||A}
function qt (line 12) | function qt(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}
function Wt (line 12) | function Wt(e,t,n,i,r){var a=R.keyCodes[t]||n;return r&&i&&!R.keyCodes[t...
function Gt (line 12) | function Gt(e,t,n,i,r){if(n)if(s(n)){var a;Array.isArray(n)&&(n=E(n));va...
function Yt (line 12) | function Yt(e,t){var n=this._staticTrees||(this._staticTrees=[]),i=n[e];...
function Ut (line 12) | function Ut(e,t,n){return Kt(e,"__once__"+t+(n?"_"+n:""),!0),e}
function Kt (line 12) | function Kt(e,t,n){if(Array.isArray(e))for(var i=0;i<e.length;i++)e[i]&&...
function Xt (line 12) | function Xt(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}
function Zt (line 12) | function Zt(e,t){if(t)if(u(t)){var n=e.on=e.on?O({},e.on):{};for(var i i...
function Jt (line 12) | function Jt(e){e._o=Ut,e._n=f,e._s=h,e._l=jt,e._t=Vt,e._q=I,e._i=$,e._m=...
function Qt (line 12) | function Qt(e,t,i,r,o){var s,l=o.options;_(r,"_uid")?(s=Object.create(r)...
function en (line 12) | function en(e,t,n,i){var r=ge(e);return r.fnContext=n,r.fnOptions=i,t.sl...
function tn (line 12) | function tn(e,t){for(var n in t)e[w(n)]=t[n]}
function an (line 12) | function an(e,t,o,l,u){if(!i(e)){var c=o.$options._base;if(s(e)&&(e=c.ex...
function ln (line 12) | function ln(e,t,n,l,u,c){return(Array.isArray(n)||o(n))&&(u=l,l=n,n=void...
function cn (line 12) | function cn(e){var t=e.options;if(e.super){var n=cn(e.super);if(n!==e.su...
function dn (line 12) | function dn(e,t,n){if(Array.isArray(e)){var i=[];n=Array.isArray(n)?n:[n...
function hn (line 12) | function hn(e){this._init(e)}
function fn (line 12) | function fn(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,i...
function pn (line 12) | function pn(e){return e&&(e.Ctor.options.name||e.tag)}
function mn (line 12) | function mn(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"==typeo...
function vn (line 12) | function vn(e,t){var n=e.cache,i=e.keys,r=e._vnode;for(var a in n){var o...
function gn (line 12) | function gn(e,t,n,i){var r=e[t];!r||i&&r.tag===i.tag||r.componentInstanc...
function i (line 12) | function i(){n.$off(e,i),t.apply(n,arguments)}
function En (line 12) | function En(e){for(var t=e.data,n=e,i=e;r(i.componentInstance);)(i=i.com...
function Dn (line 12) | function Dn(e,t){return{staticClass:Pn(e.staticClass,t.staticClass),clas...
function Pn (line 12) | function Pn(e,t){return e?t?e+" "+t:e:t||""}
function An (line 12) | function An(e){return Array.isArray(e)?function(e){for(var t,n="",i=0,a=...
function Fn (line 12) | function Fn(e){return Nn(e)?"svg":"math"===e?"math":void 0}
function Bn (line 12) | function Bn(e){if("string"==typeof e){var t=document.querySelector(e);re...
function Hn (line 12) | function Hn(e,t){var n=e.data.ref;if(r(n)){var i=e.context,a=e.component...
function Gn (line 12) | function Gn(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.i...
function Yn (line 12) | function Yn(e,t,n){var i,a,o={};for(i=t;i<=n;++i)r(a=e[i].key)&&(o[a]=i)...
function Kn (line 12) | function Kn(e,t){(e.data.directives||t.data.directives)&&function(e,t){v...
function Zn (line 12) | function Zn(e,t){var n,i,r=Object.create(null);if(!e)return r;for(n=0;n<...
function Jn (line 12) | function Jn(e){return e.rawName||e.name+"."+Object.keys(e.modifiers||{})...
function Qn (line 12) | function Qn(e,t,n,i,r){var a=e.def&&e.def[t];if(a)try{a(n.elm,e,n,i,r)}c...
function ti (line 12) | function ti(e,t){var n=t.componentOptions;if(!(r(n)&&!1===n.Ctor.options...
function ni (line 12) | function ni(e,t,n){e.tagName.indexOf("-")>-1?ii(e,t,n):kn(t)?On(n)?e.rem...
function ii (line 12) | function ii(e,t,n){if(On(n))e.removeAttribute(t);else{if(K&&!X&&"TEXTARE...
function ai (line 12) | function ai(e,t){var n=t.elm,a=t.data,o=e.data;if(!(i(a.staticClass)&&i(...
function pi (line 12) | function pi(e){var t,n,i,r,a,o=!1,s=!1,l=!1,u=!1,c=0,d=0,h=0,f=0;for(i=0...
function mi (line 12) | function mi(e,t){var n=t.indexOf("(");if(n<0)return'_f("'+t+'")('+e+")";...
function vi (line 12) | function vi(e){console.error("[Vue compiler]: "+e)}
function gi (line 12) | function gi(e,t){return e?e.map(function(e){return e[t]}).filter(functio...
function yi (line 12) | function yi(e,t,n){(e.props||(e.props=[])).push({name:t,value:n}),e.plai...
function _i (line 12) | function _i(e,t,n){(e.attrs||(e.attrs=[])).push({name:t,value:n}),e.plai...
function bi (line 12) | function bi(e,t,n){e.attrsMap[t]=n,e.attrsList.push({name:t,value:n})}
function xi (line 12) | function xi(e,t,n,i,r,a){(e.directives||(e.directives=[])).push({name:t,...
function wi (line 12) | function wi(e,t,i,r,a,o){var s;(r=r||n).capture&&(delete r.capture,t="!"...
function Ci (line 12) | function Ci(e,t,n){var i=ki(e,":"+t)||ki(e,"v-bind:"+t);if(null!=i)retur...
function ki (line 12) | function ki(e,t,n){var i;if(null!=(i=e.attrsMap[t]))for(var r=e.attrsLis...
function Si (line 12) | function Si(e,t,n){var i=n||{},r=i.number,a="$$v";i.trim&&(a="(typeof $$...
function Mi (line 12) | function Mi(e,t){var n=function(e){if(e=e.trim(),oi=e.length,e.indexOf("...
function Ti (line 12) | function Ti(){return si.charCodeAt(++ui)}
function Oi (line 12) | function Oi(){return ui>=oi}
function Ei (line 12) | function Ei(e){return 34===e||39===e}
function Di (line 12) | function Di(e){var t=1;for(ci=ui;!Oi();)if(Ei(e=Ti()))Pi(e);else if(91==...
function Pi (line 12) | function Pi(e){for(var t=e;!Oi()&&(e=Ti())!==t;);}
function Ni (line 12) | function Ni(e,t,n,i,r){var a;t=(a=t)._withTask||(a._withTask=function(){...
function Li (line 12) | function Li(e,t,n,i){(i||Ai).removeEventListener(e,t._withTask||t,n)}
function Fi (line 12) | function Fi(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},a=...
function Ri (line 12) | function Ri(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,a,o=...
function Bi (line 12) | function Bi(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t...
function Hi (line 12) | function Hi(e){var t=qi(e.style);return e.staticStyle?O(e.staticStyle,t):t}
function qi (line 12) | function qi(e){return Array.isArray(e)?E(e):"string"==typeof e?Vi(e):e}
function Zi (line 12) | function Zi(e,t){var n=t.data,a=e.data;if(!(i(n.staticStyle)&&i(n.style)...
function Qi (line 12) | function Qi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.s...
function er (line 12) | function er(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.s...
function tr (line 12) | function tr(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&O...
function dr (line 12) | function dr(e){cr(function(){cr(e)})}
function hr (line 12) | function hr(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n...
function fr (line 12) | function fr(e,t){e._transitionClasses&&g(e._transitionClasses,t),er(e,t)}
function pr (line 12) | function pr(e,t,n){var i=vr(e,t),r=i.type,a=i.timeout,o=i.propCount;if(!...
function vr (line 12) | function vr(e,t){var n,i=window.getComputedStyle(e),r=i[or+"Delay"].spli...
function gr (line 12) | function gr(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.a...
function yr (line 12) | function yr(e){return 1e3*Number(e.slice(0,-1))}
function _r (line 12) | function _r(e,t){var n=e.elm;r(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._...
function br (line 12) | function br(e,t){var n=e.elm;r(n._enterCb)&&(n._enterCb.cancelled=!0,n._...
function xr (line 12) | function xr(e){return"number"==typeof e&&!isNaN(e)}
function wr (line 12) | function wr(e){if(i(e))return!1;var t=e.fns;return r(t)?wr(Array.isArray...
function Cr (line 12) | function Cr(e,t){!0!==t.data.show&&_r(t)}
function c (line 12) | function c(e){var t=u.parentNode(e);r(t)&&u.removeChild(t,e)}
function d (line 12) | function d(e,t,n,i,o,l,c){if(r(e.elm)&&r(l)&&(e=l[c]=ge(e)),e.isRootInse...
function h (line 12) | function h(e,t){r(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingI...
function f (line 12) | function f(e,t,n){r(e)&&(r(n)?n.parentNode===e&&u.insertBefore(e,t,n):u....
function m (line 12) | function m(e,t,n){if(Array.isArray(t))for(var i=0;i<t.length;++i)d(t[i],...
function v (line 12) | function v(e){for(;e.componentInstance;)e=e.componentInstance._vnode;ret...
function g (line 12) | function g(e,n){for(var i=0;i<s.create.length;++i)s.create[i](qn,e);r(t=...
function y (line 12) | function y(e){var t;if(r(t=e.fnScopeId))u.setStyleScope(e.elm,t);else fo...
function _ (line 12) | function _(e,t,n,i,r,a){for(;i<=r;++i)d(n[i],a,e,t,!1,n,i)}
function b (line 12) | function b(e){var t,n,i=e.data;if(r(i))for(r(t=i.hook)&&r(t=t.destroy)&&...
function x (line 12) | function x(e,t,n,i){for(;n<=i;++n){var a=t[n];r(a)&&(r(a.tag)?(w(a),b(a)...
function w (line 12) | function w(e,t){if(r(t)||r(e.data)){var n,i=s.remove.length+1;for(r(t)?t...
function C (line 12) | function C(e,t,n,i){for(var a=n;a<i;a++){var o=t[a];if(r(o)&&Gn(e,o))ret...
function k (line 12) | function k(e,t,n,o){if(e!==t){var l=t.elm=e.elm;if(a(e.isAsyncPlaceholde...
function S (line 12) | function S(e,t,n){if(a(n)&&r(e.parent))e.parent.data.pendingInsert=t;els...
function T (line 12) | function T(e,t,n,i){var o,s=t.tag,l=t.data,u=t.children;if(i=i||l&&l.pre...
function Mr (line 12) | function Mr(e,t,n){Tr(e,t,n),(K||Z)&&setTimeout(function(){Tr(e,t,n)},0)}
function Tr (line 12) | function Tr(e,t,n){var i=t.value,r=e.multiple;if(!r||Array.isArray(i)){f...
function Or (line 12) | function Or(e,t){return t.every(function(t){return!I(t,e)})}
function Er (line 12) | function Er(e){return"_value"in e?e._value:e.value}
function Dr (line 12) | function Dr(e){e.target.composing=!0}
function Pr (line 12) | function Pr(e){e.target.composing&&(e.target.composing=!1,Ar(e.target,"i...
function Ar (line 12) | function Ar(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,...
function Ir (line 12) | function Ir(e){return!e.componentInstance||e.data&&e.data.transition?e:I...
function Lr (line 12) | function Lr(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abst...
function Fr (line 12) | function Fr(e){var t={},n=e.$options;for(var i in n.propsData)t[i]=e[i];...
function zr (line 12) | function zr(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{...
function jr (line 12) | function jr(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._ent...
function Vr (line 12) | function Vr(e){e.data.newPos=e.elm.getBoundingClientRect()}
function Hr (line 12) | function Hr(e){var t=e.data.pos,n=e.data.newPos,i=t.left-n.left,r=t.top-...
function Ur (line 12) | function Ur(e,t){var n=t?Yr(t):Wr;if(n.test(e)){for(var i,r,a,o=[],s=[],...
function _a (line 12) | function _a(e,t){var n=t?va:ma;return e.replace(n,function(e){return pa[...
function Fa (line 12) | function Fa(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:function(e){...
function za (line 12) | function za(e,t){ba=t.warn||vi,Sa=t.isPreTag||P,Ma=t.mustUseProp||P,Ta=t...
function Ra (line 12) | function Ra(e,t){var n,i;(i=Ci(n=e,"key"))&&(n.key=i),e.plain=!e.key&&!e...
function Ba (line 12) | function Ba(e){var t;if(t=ki(e,"v-for")){var n=function(e){var t=e.match...
function ja (line 12) | function ja(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push...
function Va (line 12) | function Va(e){var t=e.match(Na);if(t){var n={};return t.forEach(functio...
function Wa (line 12) | function Wa(e){return Fa(e.tag,e.attrsList.slice(),e.parent)}
function Za (line 12) | function Za(e,t){e&&(Ya=Xa(t.staticKeys||""),Ua=t.isReservedTag||P,funct...
function ro (line 12) | function ro(e,t,n){var i=t?"nativeOn:{":"on:{";for(var r in e)i+='"'+r+'...
function ao (line 12) | function ao(e,t){if(!t)return"function(){}";if(Array.isArray(t))return"[...
function oo (line 12) | function oo(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var...
function uo (line 12) | function uo(e,t){var n=new lo(t);return{render:"with(this){return "+(e?c...
function co (line 12) | function co(e,t){if(e.staticRoot&&!e.staticProcessed)return ho(e,t);if(e...
function ho (line 12) | function ho(e,t){return e.staticProcessed=!0,t.staticRenderFns.push("wit...
function fo (line 12) | function fo(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return po(e,...
function po (line 12) | function po(e,t,n,i){return e.ifProcessed=!0,function e(t,n,i,r){if(!t.l...
function mo (line 12) | function mo(e,t){var n="{",i=function(e,t){var n=e.directives;if(!n)retu...
function vo (line 12) | function vo(e,t,n){return t.for&&!t.forProcessed?function(e,t,n){var i=t...
function go (line 12) | function go(e,t,n,i,r){var a=e.children;if(a.length){var o=a[0];if(1===a...
function yo (line 12) | function yo(e){return void 0!==e.for||"template"===e.tag||"slot"===e.tag}
function _o (line 12) | function _o(e,t){return 1===e.type?co(e,t):3===e.type&&e.isComment?(i=e,...
function bo (line 12) | function bo(e){for(var t="",n=0;n<e.length;n++){var i=e[n];t+='"'+i.name...
function xo (line 12) | function xo(e){return e.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"...
function wo (line 12) | function wo(e,t){try{return new Function(e)}catch(n){return t.push({err:...
function t (line 12) | function t(t,n){var i=Object.create(e),r=[],a=[];if(i.warn=function(e,t)...
function Mo (line 12) | function Mo(e){return(ko=ko||document.createElement("div")).innerHTML=e?...
function l (line 12) | function l(e){return e&&e.__esModule?e:{default:e}}
function f (line 12) | function f(e,t){t.dispatchAction({type:"legendToggleSelect",name:e})}
function p (line 12) | function p(e,t,n,i){var r=n.getZr().storage.getDisplayList()[0];r&&r.use...
function m (line 12) | function m(e,t,n,i){var r=n.getZr().storage.getDisplayList()[0];r&&r.use...
function u (line 12) | function u(e){r(c,function(t){t[0]in e&&!(t[1]in e)&&(e[t[1]]=e[t[0]])})}
function h (line 12) | function h(e,t,n,i){n<0&&(e+=n,n=-n),i<0&&(t+=i,i=-i),this.x=e,this.y=t,...
function s (line 12) | function s(e,t){return e.zlevel===t.zlevel?e.z===t.z?e.z2-t.z2:e.z-t.z:e...
function s (line 12) | function s(e){for(var t in e=e||{},a.call(this,e),e)e.hasOwnProperty(t)&...
function m (line 12) | function m(e){return e>-l&&e<l}
function v (line 12) | function v(e){return e>l||e<-l}
function g (line 12) | function g(e,t,n,i,r){var a=1-r;return a*a*(a*e+3*r*t)+r*r*(r*i+3*a*n)}
function y (line 12) | function y(e,t,n,i){var r=1-i;return r*(r*e+2*i*t)+i*i*n}
function a (line 12) | function a(e,t,n){for(var i=[],r=t[0],a=t[1],o=0;o<e.length;o+=2){var s=...
function s (line 12) | function s(e,t,n){if(this.name=e,this.geometries=t,n)n=[n[0],n[1]];else{...
function o (line 12) | function o(e){var t={main:"",sub:""};return e&&(e=e.split(r),t.main=e[0]...
function l (line 12) | function l(e,t){var n=i.slice(arguments,2);return this.superClass.protot...
function u (line 12) | function u(e,t,n){return this.superClass.prototype[t].apply(e,n)}
function i (line 12) | function i(e){return Math.sqrt(a(e))}
function a (line 12) | function a(e){return e[0]*e[0]+e[1]*e[1]}
function s (line 12) | function s(e,t){return Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[...
function u (line 12) | function u(e,t){return(e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])}
function s (line 12) | function s(e,t){return e[t]}
function l (line 12) | function l(e,t,n){e[t]=n}
function u (line 12) | function u(e,t,n){return(t-e)*n+e}
function c (line 12) | function c(e,t,n){return n>.5?t:e}
function d (line 12) | function d(e,t,n,i,r){var a=e.length;if(1==r)for(var o=0;o<a;o++)i[o]=u(...
function h (line 12) | function h(e,t,n){var i=e.length,r=t.length;if(i!==r)if(i>r)e.length=r;e...
function f (line 12) | function f(e,t,n){if(e===t)return!0;var i=e.length;if(i!==t.length)retur...
function p (line 12) | function p(e,t,n,i,r,a,o,s,l){var u=e.length;if(1==l)for(var c=0;c<u;c++...
function m (line 12) | function m(e,t,n,i,r,a,o){var s=.5*(n-e),l=.5*(i-t);return(2*(t-n)+s+l)*...
function v (line 12) | function v(e){if(a(e)){var t=e.length;if(a(e[0])){for(var n=[],i=0;i<t;i...
function g (line 12) | function g(e){return e[0]=Math.floor(e[0]),e[1]=Math.floor(e[1]),e[2]=Ma...
function y (line 12) | function y(e,t,n,o,s,l){var v=e._getter,y=e._setter,_="spline"===t,b=o.l...
function u (line 12) | function u(e,t){var n={};return n[t.dim+"AxisIndex"]=t.index,e.getCartes...
function d (line 12) | function d(e){return"x"===e.dim?0:1}
function r (line 12) | function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(...
function r (line 12) | function r(e){return(e=Math.round(e))<0?0:e>255?255:e}
function a (line 12) | function a(e){return e<0?0:e>1?1:e}
function o (line 12) | function o(e){return e.length&&"%"===e.charAt(e.length-1)?r(parseFloat(e...
function s (line 12) | function s(e){return e.length&&"%"===e.charAt(e.length-1)?a(parseFloat(e...
function l (line 12) | function l(e,t,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?e+(t-e)*n*6:2*n<1?t:...
function u (line 12) | function u(e,t,n){return e+(t-e)*n}
function c (line 12) | function c(e,t,n,i,r){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e}
function d (line 12) | function d(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}
function p (line 12) | function p(e,t){f&&d(f,t),f=h.put(e,f||t.slice())}
function m (line 12) | function m(e,t){if(e){t=t||[];var n=h.get(e);if(n)return d(t,n);var r,a=...
function v (line 12) | function v(e,t){var n=(parseFloat(e[0])%360+360)%360/360,i=s(e[1]),a=s(e...
function g (line 12) | function g(e,t,n){if(t&&t.length&&e>=0&&e<=1){n=n||[];var i=e*(t.length-...
function _ (line 12) | function _(e,t,n){if(t&&t.length&&e>=0&&e<=1){var i=e*(t.length-1),o=Mat...
function x (line 12) | function x(e,t){if(e&&e.length){var n=e[0]+","+e[1]+","+e[2];return"rgba...
function s (line 12) | function s(e,t,n){e.handler("leave",null,n)}
function l (line 12) | function l(e,t,n,i){t.handler(e,n,i)}
function n (line 12) | function n(n,i){e.on(n,function(n){var r=function(e){var t={showTip:[],h...
function m (line 12) | function m(e){return{renderMode:r,content:s(l(e)),style:f}}
function m (line 12) | function m(e,n){var i=v.getDimensionInfo(n);if(i&&!1!==i.otherDims.toolt...
function k (line 12) | function k(e){var t=e.name;c.isNameSpecified(e)||(e.name=function(e){var...
function S (line 12) | function S(e){return e.model.getRawData().count()}
function M (line 12) | function M(e){var t=e.model;return t.setData(t.getRawData().cloneShallow...
function T (line 12) | function T(e,t){e.end>t.outputData.count()&&t.model.getRawData().cloneSh...
function O (line 12) | function O(e,t){i.each(e.CHANGABLE_METHODS,function(n){e.wrapMethod(n,i....
function E (line 12) | function E(e){var t=D(e);t&&t.setOutputEnd(this.count())}
function D (line 12) | function D(e){var t=(e.ecModel||{}).scheduler,n=t&&t.getPipeline(e.uid);...
function n (line 12) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function r (line 12) | function r(e){var i=e;return t&&(n.setAttribute("href",i),i=n.href),n.se...
function n (line 12) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function c (line 12) | function c(e){i.call(this,e),this.path=null}
function u (line 12) | function u(e){return null==e?"":(e+"").replace(s,function(e,t){return l[...
function h (line 12) | function h(e,t){return"0000".substr(0,t-(e+="").length)+e}
function n (line 12) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function l (line 12) | function l(e){return e&&e.__esModule?e:{default:e}}
function r (line 13) | function r(e){"use strict";var t={omitExtraWLInCodeBlocks:{defaultValue:...
function d (line 13) | function d(e,t){"use strict";var n=t?"Error in "+t+" extension->":"Error...
function h (line 13) | function h(e,t){"use strict";return"¨E"+t.charCodeAt(0)+"E"}
function f (line 13) | function f(e,t){if(t=t||null,a.helper.isString(e)){if(t=e=a.helper.stdEx...
function p (line 13) | function p(e,t){if(!a.helper.isString(e))throw Error("Invalid argument i...
function i (line 13) | function i(e){return"¨C"+(n.gHtmlSpans.push(e)-1)+"C"}
function l (line 13) | function l(e){var i,r;if(t.customizedHeaderId){var o=e.match(/\{([^{]+?)...
function i (line 13) | function i(e,t,i,r,o,s,l,u){var c=n.gUrls,d=n.gTitles,h=n.gDimensions;if...
function i (line 13) | function i(e,t,n){return t+e+n}
function i (line 13) | function i(e,i){n.gListLevel++,e=e.replace(/\n{2,}$/,"\n");var r=/(\n)?(...
function r (line 13) | function r(e,t){if("ol"===t){var n=e.match(/^ *(\d+)\./);if(n&&"1"!==n[1...
function o (line 13) | function o(e,n,a){var o=t.disableForced4SpacesIndentedSublists?/^ ?\d+\....
function i (line 13) | function i(e){n.metadata.raw=e,(e=(e=e.replace(/&/g,"&").replace(/"/...
function i (line 13) | function i(e,i){return"<td"+i+">"+a.subParser("spanGamut")(e,t,n)+"</td>...
function r (line 13) | function r(e){var r,o=e.split("\n");for(r=0;r<o.length;++r)/^ {0,3}\|/.t...
function r (line 13) | function r(e,t,n,i){var r=t+1;if(r===n)return 1;if(i(e[r++],e[t])<0){for...
function a (line 13) | function a(e,t,n,i,r){for(i===t&&i++;i<n;i++){for(var a,o=e[i],s=t,l=i;s...
function o (line 13) | function o(e,t,n,i,r,a){var o=0,s=0,l=1;if(a(e,t[n+r])>0){for(s=i-r;l<s&...
function s (line 13) | function s(e,t,n,i,r,a){var o=0,s=0,l=1;if(a(e,t[n+r])<0){for(s=r+1;l<s&...
function l (line 13) | function l(e,t){var n,r,a,l=i,u=0;n=e.length;var c=[];function d(n){var ...
function h (line 13) | function h(e){return parseInt(e,10)}
function t (line 13) | function t(e){i&&(i.__endIndex!==e&&(i.__dirty=!0),i.__endIndex=e)}
function d (line 13) | function d(e,t,n){return function(){var i=arguments.length>0&&void 0!==a...
function j (line 13) | function j(e){return function(t,n,i){t=t&&t.toLowerCase(),l.prototype[e]...
function V (line 13) | function V(){l.call(this)}
function H (line 13) | function H(e,t,n){n=n||{},"string"==typeof t&&(t=fe[t]),this.id,this.gro...
function W (line 13) | function W(e,t,n){var i,r=this._model,a=this._coordSysMgr.getCoordinateS...
function Y (line 13) | function Y(e){var t=e._model,n=e._scheduler;n.restorePipelines(t),n.prep...
function U (line 13) | function U(e,t,n,i,a){var o=e._model;if(i){var s={};s[i+"Id"]=n[i+"Id"],...
function K (line 13) | function K(e,t){var n=e._chartsMap,i=e._scheduler;t.eachSeries(function(...
function X (line 13) | function X(e,t){var n=e.type,i=e.escapeConnect,a=se[n],o=a.actionInfo,s=...
function Z (line 13) | function Z(e){for(var t=this._pendingActions;t.length;){var n=t.shift();...
function J (line 13) | function J(e){!e&&this.trigger("updated")}
function Q (line 13) | function Q(e,t,n,i){for(var r="component"===t,a=r?e._componentsViews:e._...
function ee (line 13) | function ee(e){e.clearColorPalette(),e.eachSeries(function(e){e.clearCol...
function te (line 13) | function te(e,t,n,i){!function(e,t,n,i,r){D(r||e._componentsViews,functi...
function ne (line 13) | function ne(e,t,n,i,r){var a,s=e._scheduler;t.eachSeries(function(t){var...
function ie (line 13) | function ie(e,t){D(de,function(n){n(e,t)})}
function ae (line 13) | function ae(e,t){var n=e.get("z"),i=e.get("zlevel");t.group.traverse(fun...
function oe (line 13) | function oe(){this.eventInfo}
function c (line 13) | function c(e,t,n,i){return null==e[n]||t[i||n]===e[n]}
function be (line 13) | function be(e){ve[e]=!1}
function we (line 13) | function we(e){return me[b.getAttribute(e,_e)]}
function Ce (line 13) | function Ce(e,t){fe[e]=t}
function ke (line 13) | function ke(e){ce.push(e)}
function Se (line 13) | function Se(e,t){Oe(ue,e,t,$)}
function Me (line 13) | function Me(e,t,n){"function"==typeof t&&(n=t,t="");var i=A(e)?e.type:[e...
function Te (line 13) | function Te(e,t){Oe(he,e,t,L,"visual")}
function Oe (line 13) | function Oe(e,t,n,i,r){(P(t)||A(t))&&(n=t,t=i);var a=S.wrapStageHandler(...
function Ee (line 13) | function Ee(e,t){pe[e]=t}
function n (line 13) | function n(e,n){for(var i=0;i<e.length;i++)e[i][t]=n}
function a (line 13) | function a(e){var t=e[1][0]-e[0][0],n=e[1][1]-e[0][1];return Math.sqrt(t...
function o (line 13) | function o(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e[...
function s (line 13) | function s(e){i.call(this,e)}
function f (line 13) | function f(e){return isNaN(e[0])||isNaN(e[1])}
function p (line 13) | function p(e,t,n,i,a,p,m,v,g,y,_){return"none"!==y&&y?function(e,t,n,i,r...
function m (line 13) | function m(e,t){var n=[1/0,1/0],i=[-1/0,-1/0];if(t)for(var r=0;r<e.lengt...
function a (line 13) | function a(e,t){return Math.abs(e-t)<r}
function n (line 13) | function n(e,n,i){this._reference=e.jquery?e[0]:e,this.state={};var r=vo...
function i (line 13) | function i(t){var n=t.style.display,i=t.style.visibility;t.style.display...
function r (line 13) | function r(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"...
function a (line 13) | function a(e){var t=Object.assign({},e);return t.right=t.left+t.width,t....
function o (line 13) | function o(e,t){var n,i=0;for(n in e){if(e[n]===t)return i;i++}return null}
function s (line 13) | function s(t,n){return e.getComputedStyle(t,null)[n]}
function l (line 13) | function l(t){var n=t.offsetParent;return n!==e.document.body&&n?n:e.doc...
function u (line 13) | function u(t){var n=t.parentNode;return n?n===e.document?e.document.body...
function c (line 13) | function c(e,t){Object.keys(t).forEach(function(n){var i,r="";-1!==["wid...
function d (line 13) | function d(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.of...
function h (line 13) | function h(e){var t=e.getBoundingClientRect(),n=-1!=navigator.userAgent....
function f (line 13) | function f(t){for(var n=["","ms","webkit","moz","o"],i=0;i<n.length;i++)...
function s (line 13) | function s(e,t){t.forEach(function(t){e.classList.add(t)})}
function l (line 13) | function l(e,t){t.forEach(function(t){e.setAttribute(t.split(":")[0],t.s...
function n (line 18) | function n(){var e=this.$options;e.store?this.$store="function"==typeof ...
function a (line 18) | function a(e,t){Object.keys(e).forEach(function(n){return t(e[n],n)})}
function h (line 18) | function h(e,t){return t.indexOf(e)<0&&t.push(e),function(){var n=t.inde...
function f (line 18) | function f(e,t){e._actions=Object.create(null),e._mutations=Object.creat...
function p (line 18) | function p(e,t,n){var i=e._vm;e.getters={};var r={};a(e._wrappedGetters,...
function m (line 18) | function m(e,t,n,i,r){var a=!n.length,o=e._modules.getNamespace(n);if(i....
function v (line 18) | function v(e,t){return t.length?t.reduce(function(e,t){return e[t]},e):e}
function g (line 18) | function g(e,t,n){var i;return null!==(i=e)&&"object"==typeof i&&e.type&...
function y (line 18) | function y(e){u&&e===u||i(u=e)}
function C (line 18) | function C(e){return Array.isArray(e)?e.map(function(e){return{key:e,val...
function k (line 18) | function k(e){return function(t,n){return"string"!=typeof t?(n=t,t=""):"...
function S (line 18) | function S(e,t,n){return e._modulesNamespaceMap[n]}
function s (line 18) | function s(){return!1}
function l (line 18) | function l(e,t,n){var r=i.createCanvas(),a=t.getWidth(),o=t.getHeight(),...
function h (line 18) | function h(){}
function f (line 18) | function f(e,t,n,r){(function e(t,n){if(i.isObject(t)&&i.isObject(n)){va...
function p (line 18) | function p(e,t){e[t.get("label.show")?"show":"hide"]()}
function m (line 18) | function m(e){return{position:e.position.slice(),rotation:e.rotation||0}}
function v (line 18) | function v(e,t,n){var i=t.get("z"),r=t.get("zlevel");e&&e.traverse(funct...
function m (line 18) | function m(e,t,n){this.parentModel=t,this.ecModel=n,this.option=e}
function v (line 18) | function v(e,t,n){for(var i=0;i<t.length&&(!t[i]||null!=(e=e&&"object"==...
function g (line 18) | function g(e,t){var n=p(e).getParent;return n?n.call(e,t):e.parentModel}
function s (line 18) | function s(e,t){return"all"===e||i.isArray(e)&&i.indexOf(e,t)>=0||e===t}
function l (line 18) | function l(e){var t=(e.ecModel.getComponent("axisPointer")||{}).coordSys...
function u (line 18) | function u(e){return!!e.get("handle.show")}
function c (line 18) | function c(e){return e.type+"||"+e.id}
function x (line 18) | function x(o,l,p){var v=p.model.getModel("axisPointer",d),y=v.get("show"...
function a (line 18) | function a(e,t,n){var i,r,a,o,s,l=0,u=0,c=null;function d(){u=(new Date)...
function f (line 18) | function f(e,t){if("string"!=typeof e)return e;var n=e;return i.each(t,f...
function p (line 18) | function p(e){var t=n.get(e);if(null==t){for(var i=e.split("."),a=r.aria...
function n (line 18) | function n(e){return!!e.constructor&&"function"==typeof e.constructor.is...
function v (line 25) | function v(e){return e._rawCount>65535?p:m}
function _ (line 25) | function _(e,t){i.each(g.concat(t.__wrappedMethods||[]),function(n){t.ha...
function w (line 25) | function w(e,t,n){var i;if(null!=t){var r=e._chunkSize,a=Math.floor(n/r)...
function C (line 25) | function C(e){return e}
function k (line 25) | function k(e){return e<this._count&&e>=0?this._indices[e]:-1}
function S (line 25) | function S(e,t){var n=e._idList[t];return null==n&&(n=w(e,e._idDimIdx,t)...
function M (line 25) | function M(e){return i.isArray(e)||(e=[e]),e}
function T (line 25) | function T(e,t){var n=e.dimensions,r=new b(i.map(n,e.getDimensionInfo,e)...
function O (line 25) | function O(e){for(var t,n,i=new Array(e.length),r=0;r<e.length;r++)i[r]=...
function E (line 25) | function E(){return[1/0,-1/0]}
function S (line 25) | function S(e,t){e._seriesIndicesMap=d(e._seriesIndices=o(t,function(e){r...
function M (line 25) | function M(e,t){return t.hasOwnProperty("subType")?a(e,function(e){retur...
function n (line 25) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function l (line 25) | function l(e,t){var n,r=u(e,"labels"),a=p(t),o=c(r,a);return o||d(r,a,{l...
function u (line 25) | function u(e,t){return s(e)[t]||(s(e)[t]=[])}
function c (line 25) | function c(e,t){for(var n=0;n<e.length;n++)if(e[n].key===t)return e[n].v...
function d (line 25) | function d(e,t,n){return e.push({key:t,value:n}),n}
function h (line 25) | function h(e,t,n){var i=o(e),r=e.scale,a=r.getExtent(),s=e.getLabelModel...
function f (line 25) | function f(e,t,n){var r=e.scale,a=o(e),s=[];return i.each(r.getTicks(),f...
function p (line 25) | function p(e){var t=e.get("interval");return null==t?"auto":t}
function i (line 25) | function i(i,r){return s.type="throw",s.arg=e,t.next=i,r&&(t.method="nex...
function b (line 25) | function b(e,t,n,i){var r=t&&t.prototype instanceof w?t:w,a=Object.creat...
function x (line 25) | function x(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){ret...
function w (line 25) | function w(){}
function C (line 25) | function C(){}
function k (line 25) | function k(){}
function S (line 25) | function S(e){["next","throw","return"].forEach(function(t){e[t]=functio...
function M (line 25) | function M(e){var t;this._invoke=function(n,i){function a(){return new P...
function T (line 25) | function T(e,t){var i=e.iterator[t.method];if(i===n){if(t.delegate=null,...
function O (line 25) | function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.f...
function E (line 25) | function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.comp...
function D (line 25) | function D(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.r...
function P (line 25) | function P(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==type...
function A (line 25) | function A(){return{value:n,done:!0}}
function n (line 25) | function n(){this.on("mousedown",this._dragStart,this),this.on("mousemov...
function i (line 25) | function i(e,t){return{target:e,topTarget:t&&t.topTarget}}
function s (line 25) | function s(e,t,n,i){return n=n||{},i||!r.canvasSupported?l(e,t,n):r.brow...
function l (line 25) | function l(e,t,n){var i=function(e){return e.getBoundingClientRect?e.get...
function a (line 25) | function a(){throw new Error("setTimeout has not been defined")}
function o (line 25) | function o(){throw new Error("clearTimeout has not been defined")}
function s (line 25) | function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===a||!n)&&s...
function h (line 25) | function h(){c&&l&&(c=!1,l.length?u=l.concat(u):d=-1,u.length&&f())}
function f (line 25) | function f(){if(!c){var e=s(h);c=!0;for(var t=u.length;t;){for(l=u,u=[];...
function p (line 25) | function p(e,t){this.fun=e,this.array=t}
function m (line 25) | function m(){}
function C (line 25) | function C(e){for(var t=e.pop();e.length;){var n=e.pop();n&&(f.isInstanc...
function k (line 25) | function k(e,t){return e.dispatchAction||r.bind(t.dispatchAction,t)}
function S (line 25) | function S(e){return"center"===e||"middle"===e}
function u (line 25) | function u(e,t,n,i){var r=e.toString().split("."),a=t-(i||0),o=2===r.len...
function c (line 25) | function c(e,t,n,r){var c=Math.abs(t),d=!1,h=!1,f="",p="",m=!1,v=void 0,...
function d (line 25) | function d(e,t){Object.keys(t).forEach(function(n){e[n]=t[n]})}
function p (line 25) | function p(e,t,n){return function(e,t,n){t=t||h.defaultFormat,n=n||Math....
function s (line 25) | function s(e){this.defaults=e,this.interceptors={request:new a,response:...
function l (line 39) | function l(e){var t=0,n=0,i=0,r=0;return"detail"in e&&(n=e.detail),"whee...
function h (line 39) | function h(){this.group=new r,this.uid=a.getUID("viewChart"),this.render...
function p (line 39) | function p(e,t){if(e&&(e.trigger(t),"group"===e.type))for(var n=0;n<e.ch...
function m (line 39) | function m(e,t,n){var r=s.queryDataIndex(e,t);null!=r?i(s.normalizeToArr...
function v (line 39) | function v(e){return d(e.model)}
function g (line 39) | function g(e){var t=e.model,n=e.ecModel,i=e.api,r=e.payload,a=t.pipeline...
function e (line 39) | function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Ca...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function d (line 39) | function d(e){var t,n,a=[],d=e.get("transitionDuration"),h=e.get("backgr...
function h (line 39) | function h(e,t){if(o.wxa)return null;var n=document.createElement("div")...
function o (line 39) | function o(e){return"[object Array]"===a.call(e)}
function s (line 39) | function s(e){return null!==e&&"object"==typeof e}
function l (line 39) | function l(e){return"[object Function]"===a.call(e)}
function u (line 39) | function u(e,t){if(null!==e&&void 0!==e)if("object"!=typeof e&&(e=[e]),o...
function n (line 39) | function n(n,i){"object"==typeof t[i]&&"object"==typeof n?t[i]=e(t[i],n)...
function g (line 39) | function g(e,t){if(e.length===t.length){for(var n=0;n<e.length;n++){var ...
function y (line 39) | function y(e){return"number"==typeof e?e:e?.5:0}
function _ (line 39) | function _(e){var t=e.getGlobalExtent();if(e.onBand){var n=e.getBandWidt...
function b (line 39) | function b(e,t,n,i){return"polar"===e.type?function(e,t,n,i){var r=e.get...
function x (line 39) | function x(e,t,n){for(var i=t.getBaseAxis(),r="x"===i.dim||"radius"===i....
function w (line 39) | function w(e,t,n){var r=e.get("showAllSymbol"),o="auto"===r;if(!r||o){va...
function r (line 39) | function r(e){if("function"!=typeof e)throw new TypeError("executor must...
function r (line 39) | function r(e){return this._axes[e]}
function o (line 39) | function o(e,t,n){var i=null==t.x?0:t.x,r=null==t.x2?1:t.x2,a=null==t.y?...
function s (line 39) | function s(e,t,n){var i=n.width,r=n.height,a=Math.min(i,r),o=null==t.x?....
function f (line 39) | function f(e,t,n,i,r,a,c,f,p,m,v){var g=p*(u/180),y=l(g)*(e-n)/2+s(g)*(t...
function v (line 39) | function v(e,t){var n=function(e){if(!e)return new r;for(var t,n=0,i=0,a...
function i (line 39) | function i(){var e=new n(6);return r(e),e}
function r (line 39) | function r(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e[4]=0,e[5]=0,e}
function a (line 39) | function a(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4]...
function i (line 39) | function i(e){this.message=e}
function o (line 39) | function o(e){this.group=new i.Group,this._symbolCtor=e||r}
function l (line 39) | function l(e,t,n,i){return t&&!isNaN(t[0])&&!isNaN(t[1])&&!(i.isIgnore&&...
function u (line 39) | function u(e){return null==e||a(e)||(e={isIgnore:e}),e||{}}
function c (line 39) | function c(e){var t=e.hostModel;return{itemStyle:t.getModel("itemStyle")...
function i (line 39) | function i(e){e.isGroup||(e.incremental=e.useHoverLayer=!0)}
function c (line 39) | function c(e,t,n,r,a){var o=e.axis;if(!o.scale.isBlank()&&o.containData(...
function d (line 39) | function d(e,t,n,i){e[t.key]={value:n,payloadBatch:i}}
function h (line 39) | function h(e,t,n,i){var r=n.payloadBatch,o=t.axis,s=o.model,l=t.axisPoin...
function f (line 39) | function f(e){var t=e.axis.model,n={},i=n.axisDim=e.axis.dim;return n.ax...
function p (line 39) | function p(e){return!e||null==e[0]||isNaN(e[0])||null==e[1]||isNaN(e[1])}
function a (line 39) | function a(e,t){"outside"===e.textPosition&&(e.textPosition=t)}
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function b (line 39) | function b(e){return e&&e.__esModule?e:{default:e}}
function m (line 39) | function m(e){return"mousewheel"===e&&u.browser.firefox?"DOMMouseScroll":e}
function v (line 39) | function v(e,t,n){var i=e._gestureMgr;"start"===n&&i.clear();var r=i.rec...
function g (line 39) | function g(e){e._touching=!0,clearTimeout(e._touchTimer),e._touchTimer=s...
function _ (line 39) | function _(e){var t=e.pointerType;return"pen"===t||"touch"===t}
function b (line 39) | function b(e){var t;function n(t,n){s.each(t,function(t){r(e,m(t),n._han...
function f (line 39) | function f(e,t,n){n.style.text=null,a.updateProps(n,{shape:{width:0}},t,...
function p (line 39) | function p(e,t,n){n.style.text=null,a.updateProps(n,{shape:{r:n.shape.r0...
function v (line 39) | function v(e,t,n,i,s,l,u,c){var d=t.getItemVisual(n,"color"),h=t.getItem...
function y (line 39) | function y(e,t,n){var i=e.getData(),r=[],a=i.getLayout("valueAxisHorizon...
function c (line 39) | function c(e,t){for(var n=[],i=0,r=e.length;i<r;i++)n.push(e[i].substr(0...
function d (line 39) | function d(e){return function(t,n,i){var r=i[e].indexOf(n.charAt(0).toUp...
function h (line 39) | function h(e,t){for(e=String(e),t=t||2;e.length<t;)e="0"+e;return e}
function l (line 39) | function l(e,t){return t.type||(t.data?"category":"value")}
function d (line 39) | function d(e){this._api=e,this._timelineOptions=[],this._mediaList=[],th...
function h (line 39) | function h(e,t,n){var r={width:t,height:n,aspectratio:t/n},a=!0;return i...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){a(e,function(t,n){var i=[],r=[NaN,NaN],a=[t.stackResultDim...
function r (line 39) | function r(){this.handlers=[]}
function a (line 39) | function a(e){e=e||{},this._reset=e.reset,this._plan=e.plan,this._count=...
function h (line 39) | function h(e){return!(e>=1)&&(e=1),e}
function o (line 39) | function o(){return t<e?t++:null}
function s (line 39) | function s(){var a=t%r*n+Math.ceil(t/r),o=t>=e?null:a<i?a:t;return t++,o}
function l (line 39) | function l(e,t,n,i,r,a){s.reset(n,i,r,a),e._callingProgress=t,e._calling...
function n (line 39) | function n(e,t){return e[t]||(e[t]={predecessor:[],successor:[]}),e[t]}
function p (line 39) | function p(e){l[e].entryCount--,0===l[e].entryCount&&u.push(e)}
function m (line 39) | function m(e){c[e]=!0,p(e)}
function a (line 39) | function a(e,t){var n;return t&&!0===t.clone&&i(e)?s((n=e,Array.isArray(...
function o (line 39) | function o(e,t,n){var r=e.slice();return t.forEach(function(t,o){void 0=...
function s (line 39) | function s(e,t,n){var r=Array.isArray(t);return r===Array.isArray(e)?r?(...
function s (line 39) | function s(e){this.categories=e.categories||[],this._needCollect=e.needC...
function u (line 39) | function u(e){return e._map||(e._map=r(e.categories))}
function c (line 39) | function c(e){return a(e)&&null!=e.value?e.value:e+""}
function k (line 39) | function k(e){y(e)&&(e=(new DOMParser).parseFromString(e,"text/xml"));fo...
function S (line 39) | function S(){this._defs={},this._root=null,this._isDefine=!1,this._isTex...
function O (line 39) | function O(e,t){e&&e.__inheritedStyle&&(t.__inheritedStyle||(t.__inherit...
function E (line 39) | function E(e){for(var t=x(e).split(C),n=[],i=0;i<t.length;i+=2){var r=pa...
function P (line 39) | function P(e,t,n,i){var r=t.__inheritedStyle||{},a="text"===t.type;if(1=...
function I (line 39) | function I(e,t){var n=t&&e&&e.match(A);return n?t[x(n[1])]:e}
function L (line 39) | function L(e,t,n){var i=t/e.width,r=n/e.height,a=Math.min(i,r);return{sc...
function u (line 39) | function u(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=argu...
function c (line 39) | function c(e,t){return void 0===e||null===e||(!("array"!==t||!Array.isAr...
function d (line 39) | function d(e,t,n){var i=0,r=e.length;!function a(o){if(o&&o.length)n(o);...
function h (line 39) | function h(e,t,n,i){if(t.first)return d(function(e){var t=[];return Obje...
function f (line 39) | function f(e){return function(t){return t&&t.message?(t.field=t.field||e...
function p (line 39) | function p(e,t){if(t)for(var n in t)if(t.hasOwnProperty(n)){var i=t[n];"...
function k (line 39) | function k(){return{default:"Validation error on field %s",required:"%s ...
function M (line 39) | function M(e){this.rules=null,this._messages=S,this.define(e)}
function a (line 39) | function a(e,t){return r()({},t,{fullField:n.fullField+"."+e})}
function c (line 39) | function c(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function p (line 39) | function p(e,t){if("image"!==this.type){var n=this.style,i=this.shape;i&...
function T (line 39) | function T(e){if(e){var t=l();return c(e,function(e,n){if(null==(e=v({},...
function O (line 39) | function O(e,t,n,i){if(null==i&&(i=1/0),t===S)for(var r=0;r<n.length&&r<...
function E (line 39) | function E(e,t,n,i,r,o){var s,l;if(p(e))return!1;if(i&&(l=i[o],l=f(l)?l....
function u (line 39) | function u(e){s.stop(this.event)}
function c (line 39) | function c(){}
function f (line 39) | function f(e,t,n){if(e[e.rectHover?"rectContain":"contain"](t,n)){for(va...
function u (line 39) | function u(e){return e.get("stack")||s+e.seriesIndex}
function c (line 39) | function c(e){return e.dim+e.index}
function d (line 39) | function d(e,t){var n=[];return t.eachSeriesByType(e,function(e){v(e)&&!...
function h (line 39) | function h(e){var t=[];return i.each(e,function(e){var n=e.getData(),i=e...
function f (line 39) | function f(e){var t={};i.each(e,function(e,n){var i=e.axisKey,r=e.bandWi...
function p (line 39) | function p(e,t,n){if(e&&t){var i=e[c(t)];return null!=i&&null!=n&&(i=i[u...
function v (line 39) | function v(e){return e.coordinateSystem&&"cartesian2d"===e.coordinateSys...
function g (line 39) | function g(e){return e.pipelineContext&&e.pipelineContext.large}
function y (line 39) | function y(e,t,n){var i,r,a=t.getGlobalExtent();a[0]>a[1]?(i=a[1],r=a[0]...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function i (line 39) | function i(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(...
function a (line 39) | function a(e){this._zr=e.getZr(),this._show=!1,this._hideTimeout}
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function d (line 39) | function d(e){var t=e.innerRows,n=e.dimAxisName,i=e.dimension,r=e.axisVi...
function h (line 39) | function h(e){var t,n=e.innerRows,i=e.metrics,o=e.stack,s=e.axisSite,u=e...
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e,t){return!!t&&t===e.getCalculationInfo("stackedDimension")}
function y (line 39) | function y(e){if(e){e.font=d.makeFont(e);var t=e.textAlign;"middle"===t&...
function _ (line 39) | function _(e,t,n,i,r){if(n&&t.textRotation){var a=t.textOrigin;"center"=...
function b (line 39) | function b(e,t,n,i,o,s,l,u){var c=i.rich[n.styleName]||{};c.text=n.text;...
function x (line 39) | function x(e){return e.textBackgroundColor||e.textBorderWidth&&e.textBor...
function w (line 39) | function w(e,t,n,i,r,a,o){var s=n.textBackgroundColor,d=n.textBorderWidt...
function C (line 39) | function C(e,t){t.image=e}
function k (line 39) | function k(e,t,n){var i=t.x||0,r=t.y||0,a=t.textAlign,o=t.textVerticalAl...
function S (line 39) | function S(e,t,n){return e[t]=p(e,t,n),e[t]}
function M (line 39) | function M(e,t){return null==e||t<=0||"transparent"===e||"none"===e?null...
function T (line 39) | function T(e){return null==e||"none"===e?null:e.image||e.colorStops?"#00...
function O (line 39) | function O(e,t){return"string"==typeof e?e.lastIndexOf("%")>=0?parseFloa...
function E (line 39) | function E(e,t,n){return"right"===t?e-n[1]:"center"===t?e+n[3]/2-n[1]/2:...
function r (line 39) | function r(e,t){var n=e._$eventProcessor;return null!=t&&n&&n.normalizeQ...
function a (line 39) | function a(){this._coordinateSystems=[]}
function f (line 39) | function f(e){this.fromDataset=e.fromDataset,this.data=e.data||(e.source...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function s (line 39) | function s(e){var t=new a(e),n=r(a.prototype.request,t);return i.extend(...
function o (line 39) | function o(e){r.call(this,e),this._displayables=[],this._temporaryDispla...
function r (line 39) | function r(){this.message="String contains an invalid character"}
function i (line 39) | function i(e,t){var n=null;return function(){var i=this,r=arguments;clea...
function r (line 39) | function r(e,t,n){var i=null,r=null;return function(){var a=this,o=argum...
function a (line 39) | function a(e,t,n){if(t){var i=e,r=t.split(".");r.forEach(function(e,t){t...
function o (line 39) | function o(e,t,n){if(!t)return e;var i=e;return t.split(".").some(functi...
function s (line 39) | function s(e){try{return JSON.parse(window.localStorage.getItem(e))}catc...
function l (line 39) | function l(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}cat...
function c (line 39) | function c(e){return Object.prototype.toString.call(e)}
function d (line 39) | function d(e){return void 0===e?"undefined":u(e)}
function h (line 39) | function h(e){return"[object Object]"===c(e)}
function f (line 39) | function f(e){return"[object Array]"===c(e)}
function p (line 39) | function p(e){return"[object Function]"===c(e)}
function m (line 39) | function m(e){return"[object String]"===c(e)}
function v (line 39) | function v(e){return"[object Boolean]"===c(e)}
function g (line 39) | function g(e){return h(e)&&!Object.keys(e).length}
function y (line 39) | function y(e){return"[object Number]"===c(e)}
function _ (line 39) | function _(e){return h(e)?Object.assign({},e):f(e)?e.slice():void 0}
function b (line 39) | function b(e){return JSON.parse(JSON.stringify(e))}
function x (line 39) | function x(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCa...
function w (line 39) | function w(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}
function C (line 39) | function C(e){var t=[];return e.forEach(function(e){~t.indexOf(e)||t.pus...
function k (line 39) | function k(e,t,n,i,r){var a=(i-t)/(n-e),o=t-e*a;return null==r?{k:a,b:o}...
function S (line 39) | function S(e,t){return p(e)?e(t):h(e)&&null!=e[t]?e[t]:t}
function M (line 39) | function M(e,t){return e.filter(function(e){return t!==e})}
function O (line 39) | function O(e){return Math.min.apply(null,e)}
function E (line 39) | function E(e){return Math.max.apply(null,e)}
function D (line 39) | function D(e){return Array.prototype.slice.call(e)}
function P (line 39) | function P(){}
function A (line 39) | function A(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
function $ (line 39) | function $(e,t){if(e===t)return!0;if(null===e||null===t||"object"!==d(e)...
function u (line 39) | function u(){a=Number(new Date),n.apply(o,l)}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e instanceof Array?e:null==e?[]:[e]}
function c (line 39) | function c(e){return o(e)&&e.id&&0===(e.id+"").indexOf("\0_ec_\0")}
function h (line 39) | function h(e,t){return e&&e.hasOwnProperty(t)}
function r (line 39) | function r(e,t,n){for(var i=0,r=e.length;i<r;i++)for(var a=e[i].seriesId...
function a (line 39) | function a(e,t){var n=[];for(var i in e)if(e.hasOwnProperty(i)&&null!=e[...
function y (line 39) | function y(e){var t={componentType:e.mainType,componentIndex:e.component...
function w (line 39) | function w(e){var t=e.get("tooltip");return e.get("silent")||!(e.get("tr...
function C (line 39) | function C(e){e&&(e.ignore=!0)}
function k (line 39) | function k(e,t,n){var i=e&&e.getBoundingRect().clone(),r=t&&t.getBoundin...
function S (line 39) | function S(e){return"middle"===e||"center"===e}
function p (line 39) | function p(e,t,n,i){this.ecInstance=e,this.api=t,this.unfinished;n=this....
function v (line 39) | function v(e,t,n,i,a){var o;function s(e,t){return e.setDirty&&(!e.dirty...
function c (line 39) | function c(n){var o=n.uid,s=a.get(o)||a.set(o,u({plan:w,reset:C,count:M}...
function p (line 39) | function p(t){var n=t.uid,i=l.get(n);i||(i=l.set(n,u({reset:_,onDirty:x}...
function y (line 39) | function y(e){e.overallReset(e.ecModel,e.api,e.payload)}
function _ (line 39) | function _(e,t){return e.overallProgress&&b}
function b (line 39) | function b(){this.agent.dirty(),this.getDownstream().dirty()}
function x (line 39) | function x(){this.agent&&this.agent.dirty()}
function w (line 39) | function w(e){return e.plan&&e.plan(e.model,e.ecModel,e.api,e.payload)}
function C (line 39) | function C(e){e.useClearVisual&&e.data.clearAllVisual();var t=e.resetDef...
function S (line 39) | function S(e){return function(t,n){var i=n.data,r=n.resetDefines[e];if(r...
function M (line 39) | function M(e){return e.data.count()}
function T (line 39) | function T(e,t,n){var i=t.uid,r=e._pipelineMap.get(i);!r.head&&(r.head=n...
function P (line 39) | function P(e,t){for(var n in t.prototype)e[n]=l}
function a (line 39) | function a(e){return i.getPrecisionSafe(e)+2}
function o (line 39) | function o(e,t,n){e[t]=Math.max(Math.min(e[t],n[1]),n[0])}
function s (line 39) | function s(e,t){!isFinite(e[0])&&(e[0]=t[0]),!isFinite(e[1])&&(e[1]=t[1]...
function o (line 39) | function o(e){return Math.floor(Math.log(e)/Math.LN10)}
function v (line 39) | function v(e,t){return c(e,u(t))}
function u (line 39) | function u(e){e.cancelToken&&e.cancelToken.throwIfRequested()}
function l (line 39) | function l(e){var t=e&&e.itemStyle;if(t)for(var n=0,r=s.length;n<r;n++){...
function u (line 39) | function u(e,t,n){if(e&&e[t]&&(e[t].normal||e[t].emphasis)){var r=e[t].n...
function c (line 39) | function c(e){u(e,"itemStyle"),u(e,"lineStyle"),u(e,"areaStyle"),u(e,"la...
function d (line 39) | function d(e,t){var n=o(e)&&e[t],i=o(n)&&n.textStyle;if(i)for(var a=0,s=...
function h (line 39) | function h(e){e&&(c(e),d(e,"label"),e.emphasis&&d(e.emphasis,"label"))}
function f (line 39) | function f(e){return i.isArray(e)?e:e?[e]:[]}
function p (line 39) | function p(e){return(i.isArray(e)?e[0]:e)||{}}
function s (line 39) | function s(e,t){for(var n in t)e[n]=t[n];return e}
function r (line 39) | function r(e){this._target=e.target,this._life=e.life||1e3,this._delay=e...
function e (line 39) | function e(e,t){var n=-1;return e.some(function(e,i){return e[0]===t&&(n...
function t (line 39) | function t(){this.__entries__=[]}
function e (line 39) | function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutati...
function p (line 39) | function p(e){return parseFloat(e)||0}
function m (line 39) | function m(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n...
function v (line 39) | function v(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return f;va...
function y (line 39) | function y(e){return i?g(e)?function(e){var t=e.getBBox();return _(0,0,t...
function _ (line 39) | function _(e,t,n,i){return{x:e,y:t,width:n,height:i}}
function e (line 39) | function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentR...
function e (line 39) | function e(e,t,i){if(this.activeObservations_=[],this.observations_=new ...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function c (line 39) | function c(e,t,n,i,r){var s=d(n.get("value"),t.axis,t.ecModel,n.get("ser...
function d (line 39) | function d(e,t,n,r,a){e=t.scale.parse(e);var o=t.scale.getLabel(e,{preci...
function h (line 39) | function h(e,t,n){var i=s.create();return s.rotate(i,i,n.rotation),s.tra...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function m (line 39) | function m(e,t,n,i){for(var r=t;r<n;r++)e[r]=i}
function e (line 39) | function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new ...
function be (line 39) | function be(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function d (line 39) | function d(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function b (line 39) | function b(e){return e&&e.__esModule?e:{default:e}}
function p (line 39) | function p(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function e (line 39) | function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new ...
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function h (line 39) | function h(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(){}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function e (line 39) | function e(t){var n=this;for(var i in function(e,t){if(!(e instanceof t)...
function e (line 39) | function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.en...
function e (line 39) | function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new ...
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(){}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function f (line 39) | function f(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function d (line 39) | function d(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return"category"===e.get("type")}
FILE: py12306/web/static/js/vendor.aebd1de04bf90e88d9c7.js
function b (line 1) | function b(){if(!g){g=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+)...
function i (line 6) | function i(e,t){0}
function r (line 6) | function r(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}
function d (line 6) | function d(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.spl...
function h (line 6) | function h(e){var t=e?Object.keys(e).map(function(t){var n=e[t];if(void ...
function p (line 6) | function p(e,t,n,i){var r=i&&i.options.stringifyQuery,o=t.query||{};try{...
function m (line 6) | function m(e){if(Array.isArray(e))return e.map(m);if(e&&"object"==typeof...
function g (line 6) | function g(e,t){var n=e.path,i=e.query;void 0===i&&(i={});var r=e.hash;r...
function b (line 6) | function b(e,t){return t===v?e===t:!!t&&(e.path&&t.path?e.path.replace(f...
function y (line 6) | function y(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e...
function k (line 6) | function k(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.default...
function S (line 6) | function S(e){if(!S.installed||_!==e){S.installed=!0,_=e;var t=function(...
function $ (line 6) | function $(e,t,n){var i=e.charAt(0);if("/"===i)return e;if("?"===i||"#"=...
function E (line 6) | function E(e){return e.replace(/\/\//g,"/")}
function F (line 6) | function F(e,t){for(var n,i=[],r=0,o=0,s="",a=t&&t.delimiter||"/";null!=...
function L (line 6) | function L(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%...
function j (line 6) | function j(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"=...
function z (line 6) | function z(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}
function B (line 6) | function B(e){return e.replace(/([=!:$\/()])/g,"\\$1")}
function V (line 6) | function V(e,t){return e.keys=t,e}
function R (line 6) | function R(e){return e.sensitive?"":"i"}
function H (line 6) | function H(e,t,n){O(t)||(n=t||n,t=[]);for(var i=(n=n||{}).strict,r=!1!==...
function W (line 6) | function W(e,t,n){return O(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp...
function G (line 6) | function G(e,t,n){try{return(q[e]||(q[e]=T.compile(e)))(t||{},{pretty:!0...
function K (line 6) | function K(e,t,n,i){var r=t||[],o=n||Object.create(null),s=i||Object.cre...
function U (line 6) | function U(e,t,n,i){var r="string"==typeof e?{path:e}:e;if(r.name||r._no...
function Y (line 6) | function Y(e,t){for(var n in t)e[n]=t[n];return e}
function X (line 6) | function X(e,t){var n=K(e),i=n.pathList,r=n.pathMap,o=n.nameMap;function...
function J (line 6) | function J(e,t,n){var i=t.match(e);if(!i)return!1;if(!n)return!0;for(var...
function Q (line 6) | function Q(){window.history.replaceState({key:de()},""),window.addEventL...
function ee (line 6) | function ee(e,t,n,i){if(e.app){var r=e.options.scrollBehavior;r&&e.app.$...
function te (line 6) | function te(){var e=de();e&&(Z[e]={x:window.pageXOffset,y:window.pageYOf...
function ne (line 6) | function ne(e){return re(e.x)||re(e.y)}
function ie (line 6) | function ie(e){return{x:re(e.x)?e.x:window.pageXOffset,y:re(e.y)?e.y:win...
function re (line 6) | function re(e){return"number"==typeof e}
function oe (line 6) | function oe(e,t){var n,i="object"==typeof e;if(i&&"string"==typeof e.sel...
function ce (line 6) | function ce(){return le.now().toFixed(3)}
function de (line 6) | function de(){return ue}
function he (line 6) | function he(e,t){te();var n=window.history;try{t?n.replaceState({key:ue}...
function fe (line 6) | function fe(e){he(e,!0)}
function pe (line 6) | function pe(e,t,n){var i=function(r){r>=e.length?n():e[r]?t(e[r],functio...
function me (line 6) | function me(e){return function(t,n,i){var o=!1,s=0,a=null;ve(e,function(...
function ve (line 6) | function ve(e,t){return ge(e.map(function(e){return Object.keys(e.compon...
function ge (line 6) | function ge(e){return Array.prototype.concat.apply([],e)}
function ye (line 6) | function ye(e){var t=!1;return function(){for(var n=[],i=arguments.lengt...
function we (line 6) | function we(e,t,n,i){var r=ve(e,function(e,i,r,o){var s=function(e,t){"f...
function xe (line 6) | function xe(e,t){if(t)return function(){return e.apply(t,arguments)}}
function t (line 6) | function t(t,n){var i=this;e.call(this,t,n);var r=t.options.scrollBehavi...
function ke (line 6) | function ke(e){var t=window.location.pathname;return e&&0===t.indexOf(e)...
function t (line 6) | function t(t,n,i){e.call(this,t,n),i&&function(e){var t=ke(e);if(!/^\/#/...
function Me (line 6) | function Me(){var e=$e();return"/"===e.charAt(0)||(Te("/"+e),!1)}
function $e (line 6) | function $e(){var e=window.location.href,t=e.indexOf("#");return-1===t?"...
function Ee (line 6) | function Ee(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t...
function Oe (line 6) | function Oe(e){ae?he(Ee(e)):window.location.hash=e}
function Te (line 6) | function Te(e){ae?fe(Ee(e)):window.location.replace(Ee(e))}
function t (line 6) | function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}
function Ne (line 6) | function Ne(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e....
function n (line 6) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function s (line 6) | function s(e){return e&&e.__esModule?e:{default:e}}
function p (line 6) | function p(e,t){if(!e||!t)return!1;if(-1!==t.indexOf(" "))throw new Erro...
function i (line 12) | function i(e){return void 0===e||null===e}
function r (line 12) | function r(e){return void 0!==e&&null!==e}
function o (line 12) | function o(e){return!0===e}
function s (line 12) | function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==ty...
function a (line 12) | function a(e){return null!==e&&"object"==typeof e}
function u (line 12) | function u(e){return"[object Object]"===l.call(e)}
function c (line 12) | function c(e){return"[object RegExp]"===l.call(e)}
function d (line 12) | function d(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t...
function h (line 12) | function h(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null...
function f (line 12) | function f(e){var t=parseFloat(e);return isNaN(t)?e:t}
function p (line 12) | function p(e,t){for(var n=Object.create(null),i=e.split(","),r=0;r<i.len...
function g (line 12) | function g(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(...
function y (line 12) | function y(e,t){return b.call(e,t)}
function _ (line 12) | function _(e){var t=Object.create(null);return function(n){return t[n]||...
function n (line 12) | function n(n){var i=arguments.length;return i?i>1?e.apply(t,arguments):e...
function $ (line 12) | function $(e,t){t=t||0;for(var n=e.length-t,i=new Array(n);n--;)i[n]=e[n...
function E (line 12) | function E(e,t){for(var n in t)e[n]=t[n];return e}
function O (line 12) | function O(e){for(var t={},n=0;n<e.length;n++)e[n]&&E(t,e[n]);return t}
function T (line 12) | function T(e,t,n){}
function A (line 12) | function A(e,t){if(e===t)return!0;var n=a(e),i=a(t);if(!n||!i)return!n&&...
function N (line 12) | function N(e,t){for(var n=0;n<e.length;n++)if(A(e[n],t))return n;return-1}
function I (line 12) | function I(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments...
function B (line 12) | function B(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}
function V (line 12) | function V(e,t,n,i){Object.defineProperty(e,t,{value:n,enumerable:!!i,wr...
function re (line 12) | function re(e){return"function"==typeof e&&/native code/.test(e.toString...
function e (line 12) | function e(){this.set=Object.create(null)}
function de (line 12) | function de(e){ue.target&&ce.push(ue.target),ue.target=e}
function he (line 12) | function he(){ue.target=ce.pop()}
function ve (line 12) | function ve(e){return new fe(void 0,void 0,void 0,String(e))}
function ge (line 12) | function ge(e){var t=new fe(e.tag,e.data,e.children,e.text,e.elm,e.conte...
function xe (line 12) | function xe(e){we=e}
function ke (line 12) | function ke(e,t,n){e.__proto__=t}
function Se (line 12) | function Se(e,t,n){for(var i=0,r=n.length;i<r;i++){var o=n[i];V(e,o,t[o])}}
function Me (line 12) | function Me(e,t){var n;if(a(e)&&!(e instanceof fe))return y(e,"__ob__")&...
function $e (line 12) | function $e(e,t,n,i,r){var o=new ue,s=Object.getOwnPropertyDescriptor(e,...
function Ee (line 12) | function Ee(e,t,n){if(Array.isArray(e)&&d(t))return e.length=Math.max(e....
function Oe (line 12) | function Oe(e,t){if(Array.isArray(e)&&d(t))e.splice(t,1);else{var n=e.__...
function Pe (line 12) | function Pe(e,t){if(!t)return e;for(var n,i,r,o=Object.keys(t),s=0;s<o.l...
function De (line 12) | function De(e,t,n){return n?function(){var i="function"==typeof t?t.call...
function Ae (line 12) | function Ae(e,t){return t?e?e.concat(t):Array.isArray(t)?t:[t]:e}
function Ne (line 12) | function Ne(e,t,n,i){var r=Object.create(e||null);return t?E(r,t):r}
function Fe (line 12) | function Fe(e,t,n){"function"==typeof t&&(t=t.options),function(e,t){var...
function Le (line 12) | function Le(e,t,n,i){if("string"==typeof n){var r=e[t];if(y(r,n))return ...
function je (line 12) | function je(e,t,n,i){var r=t[e],o=!y(n,e),s=n[e],a=Ve(Boolean,r.type);if...
function ze (line 12) | function ze(e){var t=e&&e.toString().match(/^\s*function (\w+)/);return ...
function Be (line 12) | function Be(e,t){return ze(e)===ze(t)}
function Ve (line 12) | function Ve(e,t){if(!Array.isArray(t))return Be(t,e)?0:-1;for(var n=0,i=...
function Re (line 12) | function Re(e,t,n){if(t)for(var i=t;i=i.$parent;){var r=i.$options.error...
function He (line 12) | function He(e,t,n){if(z.errorHandler)try{return z.errorHandler.call(null...
function We (line 12) | function We(e,t,n){if(!q&&!G||"undefined"==typeof console)throw e;consol...
function Ye (line 12) | function Ye(){Ue=!1;var e=Ke.slice(0);Ke.length=0;for(var t=0;t<e.length...
function et (line 12) | function et(e,t){var n;if(Ke.push(function(){if(e)try{e.call(t)}catch(e)...
function nt (line 12) | function nt(e){!function e(t,n){var i,r;var o=Array.isArray(t);if(!o&&!a...
function ot (line 12) | function ot(e){function t(){var e=arguments,n=t.fns;if(!Array.isArray(n)...
function st (line 12) | function st(e,t,n,r,o){var s,a,l,u;for(s in e)a=e[s],l=t[s],u=rt(s),i(a)...
function at (line 12) | function at(e,t,n){var s;e instanceof fe&&(e=e.data.hook||(e.data.hook={...
function lt (line 12) | function lt(e,t,n,i,o){if(r(t)){if(y(t,n))return e[n]=t[n],o||delete t[n...
function ut (line 12) | function ut(e){return s(e)?[ve(e)]:Array.isArray(e)?function e(t,n){var ...
function ct (line 12) | function ct(e){return r(e)&&r(e.text)&&!1===e.isComment}
function dt (line 12) | function dt(e,t){return(e.__esModule||se&&"Module"===e[Symbol.toStringTa...
function ht (line 12) | function ht(e){return e.isComment&&e.asyncFactory}
function ft (line 12) | function ft(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t...
function pt (line 12) | function pt(e,t,n){n?it.$once(e,t):it.$on(e,t)}
function mt (line 12) | function mt(e,t){it.$off(e,t)}
function vt (line 12) | function vt(e,t,n){it=e,st(t,n||{},pt,mt),it=void 0}
function gt (line 12) | function gt(e,t){var n={};if(!e)return n;for(var i=0,r=e.length;i<r;i++)...
function bt (line 12) | function bt(e){return e.isComment&&!e.asyncFactory||" "===e.text}
function yt (line 12) | function yt(e,t){t=t||{};for(var n=0;n<e.length;n++)Array.isArray(e[n])?...
function wt (line 12) | function wt(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}
function xt (line 12) | function xt(e,t){if(t){if(e._directInactive=!1,wt(e))return}else if(e._d...
function Ct (line 12) | function Ct(e,t){de();var n=e.$options[t];if(n)for(var i=0,r=n.length;i<...
function Tt (line 12) | function Tt(){var e,t;for(Et=!0,kt.sort(function(e,t){return e.id-t.id})...
function Nt (line 12) | function Nt(e,t,n){At.get=function(){return this[t][n]},At.set=function(...
function It (line 12) | function It(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){va...
function Lt (line 12) | function Lt(e,t,n){var i=!ne();"function"==typeof n?(At.get=i?jt(t):n,At...
function jt (line 12) | function jt(e){return function(){var t=this._computedWatchers&&this._com...
function zt (line 12) | function zt(e,t,n,i){return u(n)&&(i=n,n=n.handler),"string"==typeof n&&...
function Bt (line 12) | function Bt(e,t){if(e){for(var n=Object.create(null),i=se?Reflect.ownKey...
function Vt (line 12) | function Vt(e,t){var n,i,o,s,l;if(Array.isArray(e)||"string"==typeof e)f...
function Rt (line 12) | function Rt(e,t,n,i){var r,o=this.$scopedSlots[e];if(o)n=n||{},i&&(n=E(E...
function Ht (line 12) | function Ht(e){return Le(this.$options,"filters",e)||D}
function Wt (line 12) | function Wt(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}
function qt (line 12) | function qt(e,t,n,i,r){var o=z.keyCodes[t]||n;return r&&i&&!z.keyCodes[t...
function Gt (line 12) | function Gt(e,t,n,i,r){if(n)if(a(n)){var o;Array.isArray(n)&&(n=O(n));va...
function Kt (line 12) | function Kt(e,t){var n=this._staticTrees||(this._staticTrees=[]),i=n[e];...
function Ut (line 12) | function Ut(e,t,n){return Yt(e,"__once__"+t+(n?"_"+n:""),!0),e}
function Yt (line 12) | function Yt(e,t,n){if(Array.isArray(e))for(var i=0;i<e.length;i++)e[i]&&...
function Xt (line 12) | function Xt(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}
function Jt (line 12) | function Jt(e,t){if(t)if(u(t)){var n=e.on=e.on?E({},e.on):{};for(var i i...
function Zt (line 12) | function Zt(e){e._o=Ut,e._n=f,e._s=h,e._l=Vt,e._t=Rt,e._q=A,e._i=N,e._m=...
function Qt (line 12) | function Qt(e,t,i,r,s){var a,l=s.options;y(r,"_uid")?(a=Object.create(r)...
function en (line 12) | function en(e,t,n,i){var r=ge(e);return r.fnContext=n,r.fnOptions=i,t.sl...
function tn (line 12) | function tn(e,t){for(var n in t)e[x(n)]=t[n]}
function on (line 12) | function on(e,t,s,l,u){if(!i(e)){var c=s.$options._base;if(a(e)&&(e=c.ex...
function ln (line 12) | function ln(e,t,n,l,u,c){return(Array.isArray(n)||s(n))&&(u=l,l=n,n=void...
function cn (line 12) | function cn(e){var t=e.options;if(e.super){var n=cn(e.super);if(n!==e.su...
function dn (line 12) | function dn(e,t,n){if(Array.isArray(e)){var i=[];n=Array.isArray(n)?n:[n...
function hn (line 12) | function hn(e){this._init(e)}
function fn (line 12) | function fn(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,i...
function pn (line 12) | function pn(e){return e&&(e.Ctor.options.name||e.tag)}
function mn (line 12) | function mn(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"==typeo...
function vn (line 12) | function vn(e,t){var n=e.cache,i=e.keys,r=e._vnode;for(var o in n){var s...
function gn (line 12) | function gn(e,t,n,i){var r=e[t];!r||i&&r.tag===i.tag||r.componentInstanc...
function i (line 12) | function i(){n.$off(e,i),t.apply(n,arguments)}
function On (line 12) | function On(e){for(var t=e.data,n=e,i=e;r(i.componentInstance);)(i=i.com...
function Tn (line 12) | function Tn(e,t){return{staticClass:Pn(e.staticClass,t.staticClass),clas...
function Pn (line 12) | function Pn(e,t){return e?t?e+" "+t:e:t||""}
function Dn (line 12) | function Dn(e){return Array.isArray(e)?function(e){for(var t,n="",i=0,o=...
function Ln (line 12) | function Ln(e){return In(e)?"svg":"math"===e?"math":void 0}
function Bn (line 12) | function Bn(e){if("string"==typeof e){var t=document.querySelector(e);re...
function Hn (line 12) | function Hn(e,t){var n=e.data.ref;if(r(n)){var i=e.context,o=e.component...
function Gn (line 12) | function Gn(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.i...
function Kn (line 12) | function Kn(e,t,n){var i,o,s={};for(i=t;i<=n;++i)r(o=e[i].key)&&(s[o]=i)...
function Yn (line 12) | function Yn(e,t){(e.data.directives||t.data.directives)&&function(e,t){v...
function Jn (line 12) | function Jn(e,t){var n,i,r=Object.create(null);if(!e)return r;for(n=0;n<...
function Zn (line 12) | function Zn(e){return e.rawName||e.name+"."+Object.keys(e.modifiers||{})...
function Qn (line 12) | function Qn(e,t,n,i,r){var o=e.def&&e.def[t];if(o)try{o(n.elm,e,n,i,r)}c...
function ti (line 12) | function ti(e,t){var n=t.componentOptions;if(!(r(n)&&!1===n.Ctor.options...
function ni (line 12) | function ni(e,t,n){e.tagName.indexOf("-")>-1?ii(e,t,n):kn(t)?En(n)?e.rem...
function ii (line 12) | function ii(e,t,n){if(En(n))e.removeAttribute(t);else{if(Y&&!X&&"TEXTARE...
function oi (line 12) | function oi(e,t){var n=t.elm,o=t.data,s=e.data;if(!(i(o.staticClass)&&i(...
function pi (line 12) | function pi(e){var t,n,i,r,o,s=!1,a=!1,l=!1,u=!1,c=0,d=0,h=0,f=0;for(i=0...
function mi (line 12) | function mi(e,t){var n=t.indexOf("(");if(n<0)return'_f("'+t+'")('+e+")";...
function vi (line 12) | function vi(e){console.error("[Vue compiler]: "+e)}
function gi (line 12) | function gi(e,t){return e?e.map(function(e){return e[t]}).filter(functio...
function bi (line 12) | function bi(e,t,n){(e.props||(e.props=[])).push({name:t,value:n}),e.plai...
function yi (line 12) | function yi(e,t,n){(e.attrs||(e.attrs=[])).push({name:t,value:n}),e.plai...
function _i (line 12) | function _i(e,t,n){e.attrsMap[t]=n,e.attrsList.push({name:t,value:n})}
function wi (line 12) | function wi(e,t,n,i,r,o){(e.directives||(e.directives=[])).push({name:t,...
function xi (line 12) | function xi(e,t,i,r,o,s){var a;(r=r||n).capture&&(delete r.capture,t="!"...
function Ci (line 12) | function Ci(e,t,n){var i=ki(e,":"+t)||ki(e,"v-bind:"+t);if(null!=i)retur...
function ki (line 12) | function ki(e,t,n){var i;if(null!=(i=e.attrsMap[t]))for(var r=e.attrsLis...
function Si (line 12) | function Si(e,t,n){var i=n||{},r=i.number,o="$$v";i.trim&&(o="(typeof $$...
function Mi (line 12) | function Mi(e,t){var n=function(e){if(e=e.trim(),si=e.length,e.indexOf("...
function $i (line 12) | function $i(){return ai.charCodeAt(++ui)}
function Ei (line 12) | function Ei(){return ui>=si}
function Oi (line 12) | function Oi(e){return 34===e||39===e}
function Ti (line 12) | function Ti(e){var t=1;for(ci=ui;!Ei();)if(Oi(e=$i()))Pi(e);else if(91==...
function Pi (line 12) | function Pi(e){for(var t=e;!Ei()&&(e=$i())!==t;);}
function Ii (line 12) | function Ii(e,t,n,i,r){var o;t=(o=t)._withTask||(o._withTask=function(){...
function Fi (line 12) | function Fi(e,t,n,i){(i||Di).removeEventListener(e,t._withTask||t,n)}
function Li (line 12) | function Li(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},o=...
function zi (line 12) | function zi(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,o,s=...
function Bi (line 12) | function Bi(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t...
function Hi (line 12) | function Hi(e){var t=Wi(e.style);return e.staticStyle?E(e.staticStyle,t):t}
function Wi (line 12) | function Wi(e){return Array.isArray(e)?O(e):"string"==typeof e?Ri(e):e}
function Ji (line 12) | function Ji(e,t){var n=t.data,o=e.data;if(!(i(n.staticStyle)&&i(n.style)...
function Qi (line 12) | function Qi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.s...
function er (line 12) | function er(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.s...
function tr (line 12) | function tr(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&E...
function dr (line 12) | function dr(e){cr(function(){cr(e)})}
function hr (line 12) | function hr(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n...
function fr (line 12) | function fr(e,t){e._transitionClasses&&g(e._transitionClasses,t),er(e,t)}
function pr (line 12) | function pr(e,t,n){var i=vr(e,t),r=i.type,o=i.timeout,s=i.propCount;if(!...
function vr (line 12) | function vr(e,t){var n,i=window.getComputedStyle(e),r=i[sr+"Delay"].spli...
function gr (line 12) | function gr(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.a...
function br (line 12) | function br(e){return 1e3*Number(e.slice(0,-1))}
function yr (line 12) | function yr(e,t){var n=e.elm;r(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._...
function _r (line 12) | function _r(e,t){var n=e.elm;r(n._enterCb)&&(n._enterCb.cancelled=!0,n._...
function wr (line 12) | function wr(e){return"number"==typeof e&&!isNaN(e)}
function xr (line 12) | function xr(e){if(i(e))return!1;var t=e.fns;return r(t)?xr(Array.isArray...
function Cr (line 12) | function Cr(e,t){!0!==t.data.show&&yr(t)}
function c (line 12) | function c(e){var t=u.parentNode(e);r(t)&&u.removeChild(t,e)}
function d (line 12) | function d(e,t,n,i,s,l,c){if(r(e.elm)&&r(l)&&(e=l[c]=ge(e)),e.isRootInse...
function h (line 12) | function h(e,t){r(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingI...
function f (line 12) | function f(e,t,n){r(e)&&(r(n)?n.parentNode===e&&u.insertBefore(e,t,n):u....
function m (line 12) | function m(e,t,n){if(Array.isArray(t))for(var i=0;i<t.length;++i)d(t[i],...
function v (line 12) | function v(e){for(;e.componentInstance;)e=e.componentInstance._vnode;ret...
function g (line 12) | function g(e,n){for(var i=0;i<a.create.length;++i)a.create[i](Wn,e);r(t=...
function b (line 12) | function b(e){var t;if(r(t=e.fnScopeId))u.setStyleScope(e.elm,t);else fo...
function y (line 12) | function y(e,t,n,i,r,o){for(;i<=r;++i)d(n[i],o,e,t,!1,n,i)}
function _ (line 12) | function _(e){var t,n,i=e.data;if(r(i))for(r(t=i.hook)&&r(t=t.destroy)&&...
function w (line 12) | function w(e,t,n,i){for(;n<=i;++n){var o=t[n];r(o)&&(r(o.tag)?(x(o),_(o)...
function x (line 12) | function x(e,t){if(r(t)||r(e.data)){var n,i=a.remove.length+1;for(r(t)?t...
function C (line 12) | function C(e,t,n,i){for(var o=n;o<i;o++){var s=t[o];if(r(s)&&Gn(e,s))ret...
function k (line 12) | function k(e,t,n,s){if(e!==t){var l=t.elm=e.elm;if(o(e.isAsyncPlaceholde...
function S (line 12) | function S(e,t,n){if(o(n)&&r(e.parent))e.parent.data.pendingInsert=t;els...
function $ (line 12) | function $(e,t,n,i){var s,a=t.tag,l=t.data,u=t.children;if(i=i||l&&l.pre...
function Mr (line 12) | function Mr(e,t,n){$r(e,t,n),(Y||J)&&setTimeout(function(){$r(e,t,n)},0)}
function $r (line 12) | function $r(e,t,n){var i=t.value,r=e.multiple;if(!r||Array.isArray(i)){f...
function Er (line 12) | function Er(e,t){return t.every(function(t){return!A(t,e)})}
function Or (line 12) | function Or(e){return"_value"in e?e._value:e.value}
function Tr (line 12) | function Tr(e){e.target.composing=!0}
function Pr (line 12) | function Pr(e){e.target.composing&&(e.target.composing=!1,Dr(e.target,"i...
function Dr (line 12) | function Dr(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,...
function Ar (line 12) | function Ar(e){return!e.componentInstance||e.data&&e.data.transition?e:A...
function Fr (line 12) | function Fr(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abst...
function Lr (line 12) | function Lr(e){var t={},n=e.$options;for(var i in n.propsData)t[i]=e[i];...
function jr (line 12) | function jr(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{...
function Vr (line 12) | function Vr(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._ent...
function Rr (line 12) | function Rr(e){e.data.newPos=e.elm.getBoundingClientRect()}
function Hr (line 12) | function Hr(e){var t=e.data.pos,n=e.data.newPos,i=t.left-n.left,r=t.top-...
function Ur (line 12) | function Ur(e,t){var n=t?Kr(t):qr;if(n.test(e)){for(var i,r,o,s=[],a=[],...
function _o (line 12) | function _o(e,t){var n=t?go:vo;return e.replace(n,function(e){return mo[...
function jo (line 12) | function jo(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:function(e){...
function zo (line 12) | function zo(e,t){wo=t.warn||vi,Mo=t.isPreTag||P,$o=t.mustUseProp||P,Eo=t...
function Bo (line 12) | function Bo(e,t){var n,i;(i=Ci(n=e,"key"))&&(n.key=i),e.plain=!e.key&&!e...
function Vo (line 12) | function Vo(e){var t;if(t=ki(e,"v-for")){var n=function(e){var t=e.match...
function Ro (line 12) | function Ro(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push...
function Ho (line 12) | function Ho(e){var t=e.match(Fo);if(t){var n={};return t.forEach(functio...
function Go (line 12) | function Go(e){return jo(e.tag,e.attrsList.slice(),e.parent)}
function Zo (line 12) | function Zo(e,t){e&&(Uo=Jo(t.staticKeys||""),Yo=t.isReservedTag||P,funct...
function os (line 12) | function os(e,t,n){var i=t?"nativeOn:{":"on:{";for(var r in e)i+='"'+r+'...
function ss (line 12) | function ss(e,t){if(!t)return"function(){}";if(Array.isArray(t))return"[...
function as (line 12) | function as(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var...
function cs (line 12) | function cs(e,t){var n=new us(t);return{render:"with(this){return "+(e?d...
function ds (line 12) | function ds(e,t){if(e.staticRoot&&!e.staticProcessed)return hs(e,t);if(e...
function hs (line 12) | function hs(e,t){return e.staticProcessed=!0,t.staticRenderFns.push("wit...
function fs (line 12) | function fs(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return ps(e,...
function ps (line 12) | function ps(e,t,n,i){return e.ifProcessed=!0,function e(t,n,i,r){if(!t.l...
function ms (line 12) | function ms(e,t){var n="{",i=function(e,t){var n=e.directives;if(!n)retu...
function vs (line 12) | function vs(e,t,n){return t.for&&!t.forProcessed?function(e,t,n){var i=t...
function gs (line 12) | function gs(e,t,n,i,r){var o=e.children;if(o.length){var s=o[0];if(1===o...
function bs (line 12) | function bs(e){return void 0!==e.for||"template"===e.tag||"slot"===e.tag}
function ys (line 12) | function ys(e,t){return 1===e.type?ds(e,t):3===e.type&&e.isComment?(i=e,...
function _s (line 12) | function _s(e){for(var t="",n=0;n<e.length;n++){var i=e[n];t+='"'+i.name...
function ws (line 12) | function ws(e){return e.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"...
function xs (line 12) | function xs(e,t){try{return new Function(e)}catch(n){return t.push({err:...
function t (line 12) | function t(t,n){var i=Object.create(e),r=[],o=[];if(i.warn=function(e,t)...
function Ms (line 12) | function Ms(e){return(ks=ks||document.createElement("div")).innerHTML=e?...
function l (line 12) | function l(e){return e&&e.__esModule?e:{default:e}}
function r (line 12) | function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(...
function n (line 12) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function r (line 12) | function r(e){var i=e;return t&&(n.setAttribute("href",i),i=n.href),n.se...
function n (line 12) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function n (line 12) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function l (line 12) | function l(e){return e&&e.__esModule?e:{default:e}}
function r (line 13) | function r(e){"use strict";var t={omitExtraWLInCodeBlocks:{defaultValue:...
function d (line 13) | function d(e,t){"use strict";var n=t?"Error in "+t+" extension->":"Error...
function h (line 13) | function h(e,t){"use strict";return"¨E"+t.charCodeAt(0)+"E"}
function f (line 13) | function f(e,t){if(t=t||null,o.helper.isString(e)){if(t=e=o.helper.stdEx...
function p (line 13) | function p(e,t){if(!o.helper.isString(e))throw Error("Invalid argument i...
function i (line 13) | function i(e){return"¨C"+(n.gHtmlSpans.push(e)-1)+"C"}
function l (line 13) | function l(e){var i,r;if(t.customizedHeaderId){var s=e.match(/\{([^{]+?)...
function i (line 13) | function i(e,t,i,r,s,a,l,u){var c=n.gUrls,d=n.gTitles,h=n.gDimensions;if...
function i (line 13) | function i(e,t,n){return t+e+n}
function i (line 13) | function i(e,i){n.gListLevel++,e=e.replace(/\n{2,}$/,"\n");var r=/(\n)?(...
function r (line 13) | function r(e,t){if("ol"===t){var n=e.match(/^ *(\d+)\./);if(n&&"1"!==n[1...
function s (line 13) | function s(e,n,o){var s=t.disableForced4SpacesIndentedSublists?/^ ?\d+\....
function i (line 13) | function i(e){n.metadata.raw=e,(e=(e=e.replace(/&/g,"&").replace(/"/...
function i (line 13) | function i(e,i){return"<td"+i+">"+o.subParser("spanGamut")(e,t,n)+"</td>...
function r (line 13) | function r(e){var r,s=e.split("\n");for(r=0;r<s.length;++r)/^ {0,3}\|/.t...
function d (line 13) | function d(e,t,n){return function(){var i=arguments.length>0&&void 0!==a...
function s (line 13) | function s(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e[...
function n (line 13) | function n(e,n,i){this._reference=e.jquery?e[0]:e,this.state={};var r=vo...
function i (line 13) | function i(t){var n=t.style.display,i=t.style.visibility;t.style.display...
function r (line 13) | function r(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"...
function o (line 13) | function o(e){var t=Object.assign({},e);return t.right=t.left+t.width,t....
function s (line 13) | function s(e,t){var n,i=0;for(n in e){if(e[n]===t)return i;i++}return null}
function a (line 13) | function a(t,n){return e.getComputedStyle(t,null)[n]}
function l (line 13) | function l(t){var n=t.offsetParent;return n!==e.document.body&&n?n:e.doc...
function u (line 13) | function u(t){var n=t.parentNode;return n?n===e.document?e.document.body...
function c (line 13) | function c(e,t){Object.keys(t).forEach(function(n){var i,r="";-1!==["wid...
function d (line 13) | function d(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.of...
function h (line 13) | function h(e){var t=e.getBoundingClientRect(),n=-1!=navigator.userAgent....
function f (line 13) | function f(t){for(var n=["","ms","webkit","moz","o"],i=0;i<n.length;i++)...
function a (line 13) | function a(e,t){t.forEach(function(t){e.classList.add(t)})}
function l (line 13) | function l(e,t){t.forEach(function(t){e.setAttribute(t.split(":")[0],t.s...
function n (line 18) | function n(){var e=this.$options;e.store?this.$store="function"==typeof ...
function o (line 18) | function o(e,t){Object.keys(e).forEach(function(n){return t(e[n],n)})}
function h (line 18) | function h(e,t){return t.indexOf(e)<0&&t.push(e),function(){var n=t.inde...
function f (line 18) | function f(e,t){e._actions=Object.create(null),e._mutations=Object.creat...
function p (line 18) | function p(e,t,n){var i=e._vm;e.getters={};var r={};o(e._wrappedGetters,...
function m (line 18) | function m(e,t,n,i,r){var o=!n.length,s=e._modules.getNamespace(n);if(i....
function v (line 18) | function v(e,t){return t.length?t.reduce(function(e,t){return e[t]},e):e}
function g (line 18) | function g(e,t,n){var i;return null!==(i=e)&&"object"==typeof i&&e.type&...
function b (line 18) | function b(e){u&&e===u||i(u=e)}
function C (line 18) | function C(e){return Array.isArray(e)?e.map(function(e){return{key:e,val...
function k (line 18) | function k(e){return function(t,n){return"string"!=typeof t?(n=t,t=""):"...
function S (line 18) | function S(e,t,n){return e._modulesNamespaceMap[n]}
function n (line 18) | function n(e){return!!e.constructor&&"function"==typeof e.constructor.is...
function n (line 25) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function i (line 25) | function i(i,r){return a.type="throw",a.arg=e,t.next=i,r&&(t.method="nex...
function _ (line 25) | function _(e,t,n,i){var r=t&&t.prototype instanceof x?t:x,o=Object.creat...
function w (line 25) | function w(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){ret...
function x (line 25) | function x(){}
function C (line 25) | function C(){}
function k (line 25) | function k(){}
function S (line 25) | function S(e){["next","throw","return"].forEach(function(t){e[t]=functio...
function M (line 25) | function M(e){var t;this._invoke=function(n,i){function o(){return new P...
function $ (line 25) | function $(e,t){var i=e.iterator[t.method];if(i===n){if(t.delegate=null,...
function E (line 25) | function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.f...
function O (line 25) | function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.comp...
function T (line 25) | function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.r...
function P (line 25) | function P(e){if(e){var t=e[s];if(t)return t.call(e);if("function"==type...
function D (line 25) | function D(){return{value:n,done:!0}}
function o (line 25) | function o(){throw new Error("setTimeout has not been defined")}
function s (line 25) | function s(){throw new Error("clearTimeout has not been defined")}
function a (line 25) | function a(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&s...
function h (line 25) | function h(){c&&l&&(c=!1,l.length?u=l.concat(u):d=-1,u.length&&f())}
function f (line 25) | function f(){if(!c){var e=a(h);c=!0;for(var t=u.length;t;){for(l=u,u=[];...
function p (line 25) | function p(e,t){this.fun=e,this.array=t}
function m (line 25) | function m(){}
function a (line 25) | function a(e){this.defaults=e,this.interceptors={request:new o,response:...
function l (line 39) | function l(e){var t=0,n=0,i=0,r=0;return"detail"in e&&(n=e.detail),"whee...
function e (line 39) | function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Ca...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return"[object Array]"===o.call(e)}
function a (line 39) | function a(e){return null!==e&&"object"==typeof e}
function l (line 39) | function l(e){return"[object Function]"===o.call(e)}
function u (line 39) | function u(e,t){if(null!==e&&void 0!==e)if("object"!=typeof e&&(e=[e]),s...
function n (line 39) | function n(n,i){"object"==typeof t[i]&&"object"==typeof n?t[i]=e(t[i],n)...
function r (line 39) | function r(e){if("function"!=typeof e)throw new TypeError("executor must...
function i (line 39) | function i(e){this.message=e}
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function _ (line 39) | function _(e){return e&&e.__esModule?e:{default:e}}
function c (line 39) | function c(e,t){for(var n=[],i=0,r=e.length;i<r;i++)n.push(e[i].substr(0...
function d (line 39) | function d(e){return function(t,n,i){var r=i[e].indexOf(n.charAt(0).toUp...
function h (line 39) | function h(e,t){for(e=String(e),t=t||2;e.length<t;)e="0"+e;return e}
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function r (line 39) | function r(){this.handlers=[]}
function o (line 39) | function o(e,t){var n;return t&&!0===t.clone&&i(e)?a((n=e,Array.isArray(...
function s (line 39) | function s(e,t,n){var r=e.slice();return t.forEach(function(t,s){void 0=...
function a (line 39) | function a(e,t,n){var r=Array.isArray(t);return r===Array.isArray(e)?r?(...
function u (line 39) | function u(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=argu...
function c (line 39) | function c(e,t){return void 0===e||null===e||(!("array"!==t||!Array.isAr...
function d (line 39) | function d(e,t,n){var i=0,r=e.length;!function o(s){if(s&&s.length)n(s);...
function h (line 39) | function h(e,t,n,i){if(t.first)return d(function(e){var t=[];return Obje...
function f (line 39) | function f(e){return function(t){return t&&t.message?(t.field=t.field||e...
function p (line 39) | function p(e,t){if(t)for(var n in t)if(t.hasOwnProperty(n)){var i=t[n];"...
function k (line 39) | function k(){return{default:"Validation error on field %s",required:"%s ...
function M (line 39) | function M(e){this.rules=null,this._messages=S,this.define(e)}
function o (line 39) | function o(e,t){return r()({},t,{fullField:n.fullField+"."+e})}
function c (line 39) | function c(){var s=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function i (line 39) | function i(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function a (line 39) | function a(e){var t=new o(e),n=r(o.prototype.request,t);return i.extend(...
function r (line 39) | function r(){this.message="String contains an invalid character"}
function u (line 39) | function u(){o=Number(new Date),n.apply(s,l)}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){e.cancelToken&&e.cancelToken.throwIfRequested()}
function a (line 39) | function a(e,t){for(var n in t)e[n]=t[n];return e}
function e (line 39) | function e(e,t){var n=-1;return e.some(function(e,i){return e[0]===t&&(n...
function t (line 39) | function t(){this.__entries__=[]}
function e (line 39) | function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutati...
function p (line 39) | function p(e){return parseFloat(e)||0}
function m (line 39) | function m(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n...
function v (line 39) | function v(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return f;va...
function b (line 39) | function b(e){return i?g(e)?function(e){var t=e.getBBox();return y(0,0,t...
function y (line 39) | function y(e,t,n,i){return{x:e,y:t,width:n,height:i}}
function e (line 39) | function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentR...
function e (line 39) | function e(e,t,i){if(this.activeObservations_=[],this.observations_=new ...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function n (line 39) | function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{...
function m (line 39) | function m(e,t,n,i){for(var r=t;r<n;r++)e[r]=i}
function e (line 39) | function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new ...
function _e (line 39) | function _e(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function d (line 39) | function d(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function _ (line 39) | function _(e){return e&&e.__esModule?e:{default:e}}
function p (line 39) | function p(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function e (line 39) | function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new ...
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function h (line 39) | function h(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function c (line 39) | function c(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(){}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function e (line 39) | function e(t){var n=this;for(var i in function(e,t){if(!(e instanceof t)...
function e (line 39) | function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.en...
function e (line 39) | function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new ...
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function u (line 39) | function u(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(){}
function o (line 39) | function o(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function s (line 39) | function s(e){return e&&e.__esModule?e:{default:e}}
function f (line 39) | function f(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
function d (line 39) | function d(e){return e&&e.__esModule?e:{default:e}}
function l (line 39) | function l(e){return e&&e.__esModule?e:{default:e}}
function a (line 39) | function a(e){return e&&e.__esModule?e:{default:e}}
FILE: py12306/web/web.py
class Web (line 15) | class Web:
method __init__ (line 20) | def __init__(self):
method register_blueprint (line 30) | def register_blueprint(self):
method run (line 43) | def run(cls):
method start (line 47) | def start(self):
method run_session (line 54) | def run_session(self):
Condensed preview — 71 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,479K chars).
[
{
"path": ".gitignore",
"chars": 93,
"preview": ".idea\n.vscode\n.DS_Store\nvenv\n__pycache__\nenv.py\nenv.slave.py\nenv.docker.py\ndocker-compose.yml"
},
{
"path": ".gitpod.yml",
"chars": 147,
"preview": "ports:\n- port: 8008\n onOpen: open-preview\ntasks:\n- init: pip install -r requirements.txt && cp env.py.example env.py\n "
},
{
"path": "Dockerfile",
"chars": 332,
"preview": "FROM python:3.6.6-slim\n\nMAINTAINER <pjialin admin@pjialin.com>\nENV TZ Asia/Shanghai\n\nWORKDIR /code\n\nCOPY requirements.tx"
},
{
"path": "LICENSE",
"chars": 11356,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 3091,
"preview": "# 🚂 py12306 购票助手\n分布式,多账号,多任务购票\n\n## Features\n- [x] 多日期查询余票\n- [x] 自动打码下单\n- [x] 用户状态恢复\n- [x] 电话语音通知\n- [x] 多账号、多任务、多线程支持\n- ["
},
{
"path": "data/cdn.txt",
"chars": 42122,
"preview": "202.108.23.152\n112.90.135.238\n121.40.16.194\n64.233.188.188\n47.110.242.124\n211.142.194.17\n211.142.194.16\n116.211.79.27\n10"
},
{
"path": "data/stations.txt",
"chars": 96009,
"preview": "@bjb|北京北|VAP|beijingbei|bjb|0@bjd|北京东|BOP|beijingdong|bjd|1@bji|北京|BJP|beijing|bj|2@bjn|北京南|VNP|beijingnan|bjn|3@bjx|北京大"
},
{
"path": "depdencies.txt",
"chars": 4096,
"preview": "Python 3.8.10\nPackage Version\n----------------------- --------------------\nabsl-py 1.2.0"
},
{
"path": "docker-compose.yml.example",
"chars": 234,
"preview": "version: \"2\"\nservices:\n py12306:\n build: .\n volumes:\n # - ./runtime:/code/runtime # 未使用 env.docker.py.examp"
},
{
"path": "env.docker.py.example",
"chars": 5122,
"preview": "# -*- coding: utf-8 -*-\n\n# 12306 账号\nUSER_ACCOUNTS = [\n # 目前已支持仅查询,不下单,屏蔽掉下面的账号即可\n {\n 'key': 0, # 如使用多个账号 k"
},
{
"path": "env.py.example",
"chars": 5362,
"preview": "# -*- coding: utf-8 -*-\n\n# 12306 账号\nUSER_ACCOUNTS = [\n # 目前已支持仅查询,不下单,屏蔽掉下面的账号即可\n {\n 'key': 0, # 如使用多个账号 k"
},
{
"path": "env.slave.py.example",
"chars": 277,
"preview": "# -*- coding: utf-8 -*-\n# 分布式子节点配置文件示例\n\n# 分布式集群配置\nCLUSTER_ENABLED = 1 # 集群状态\nNODE_IS_MASTER = 0 # 是否是主节点\nNODE_NAME = '"
},
{
"path": "main.py",
"chars": 1380,
"preview": "# -*- coding: utf-8 -*-\nimport sys\n\nfrom py12306.app import *\nfrom py12306.helpers.cdn import Cdn\nfrom py12306.log.commo"
},
{
"path": "py12306/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "py12306/app.py",
"chars": 6124,
"preview": "# -*- coding: utf-8 -*-\nimport signal\nimport sys\n\nfrom py12306.helpers.func import *\nfrom py12306.config import Config\nf"
},
{
"path": "py12306/cluster/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "py12306/cluster/cluster.py",
"chars": 9952,
"preview": "import json\nimport os\nimport pickle\nimport sys\nimport time\n\nimport redis\nfrom redis.client import PubSub\n\nfrom py12306.c"
},
{
"path": "py12306/cluster/redis.py",
"chars": 1778,
"preview": "import json\nimport pickle\n\nimport redis\n\nfrom py12306.config import Config\nfrom py12306.helpers.func import *\nfrom py123"
},
{
"path": "py12306/config.py",
"chars": 7056,
"preview": "# -*- coding: utf-8 -*-\nimport json\nimport re\nfrom os import path\n\n# 12306 账号\nfrom py12306.helpers.func import *\n\n\n@sing"
},
{
"path": "py12306/exceptions/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "py12306/helpers/OCR.py",
"chars": 2487,
"preview": "import math\nimport random\n\nfrom py12306.config import Config\nfrom py12306.helpers.api import API_FREE_CODE_QCR_API\nfrom "
},
{
"path": "py12306/helpers/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "py12306/helpers/api.py",
"chars": 2499,
"preview": "# coding=utf-8\n\nHOST_URL_OF_12306 = 'kyfw.12306.cn'\nBASE_URL_OF_12306 = 'https://' + HOST_URL_OF_12306\n\nLEFT_TICKETS = {"
},
{
"path": "py12306/helpers/auth_code.py",
"chars": 2759,
"preview": "import random\nimport time\n\nfrom requests.exceptions import SSLError\n\nfrom py12306.config import Config\nfrom py12306.help"
},
{
"path": "py12306/helpers/cdn.py",
"chars": 8028,
"preview": "import random\nimport json\nfrom datetime import timedelta\nfrom os import path\n\nfrom py12306.cluster.cluster import Cluste"
},
{
"path": "py12306/helpers/event.py",
"chars": 1659,
"preview": "from py12306.helpers.func import *\nfrom py12306.config import Config\n\n\n@singleton\nclass Event():\n \"\"\"\n 处理事件\n \"\""
},
{
"path": "py12306/helpers/func.py",
"chars": 4672,
"preview": "# -*- coding: utf-8 -*-\nimport datetime\nimport hashlib\nimport json\nimport os\nimport random\nimport threading\nimport funct"
},
{
"path": "py12306/helpers/notification.py",
"chars": 9957,
"preview": "import urllib\n\nfrom py12306.config import Config\nfrom py12306.helpers.api import *\nfrom py12306.helpers.request import R"
},
{
"path": "py12306/helpers/qrcode.py",
"chars": 2879,
"preview": "# -*- coding: utf-8 -*-\n\nimport png\n\n\ndef print_qrcode(path):\n \"\"\"\n 将二维码输出到控制台\n 需要终端尺寸足够大才能显示\n\n :param path:"
},
{
"path": "py12306/helpers/request.py",
"chars": 3085,
"preview": "import requests\nfrom requests.exceptions import *\n\nfrom py12306.helpers.func import *\nfrom requests_html import HTMLSess"
},
{
"path": "py12306/helpers/station.py",
"chars": 1265,
"preview": "from os import path\n\nfrom py12306.config import Config\nfrom py12306.helpers.func import *\n\n\n@singleton\nclass Station:\n "
},
{
"path": "py12306/helpers/type.py",
"chars": 731,
"preview": "from py12306.helpers.func import *\n\n\n@singleton\nclass UserType:\n ADULT = 1\n CHILD = 2\n STUDENT = 3\n SOLDIER "
},
{
"path": "py12306/log/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "py12306/log/base.py",
"chars": 2560,
"preview": "import os\nimport sys\nimport io\nfrom contextlib import redirect_stdout\n\nfrom py12306.config import Config\nfrom py12306.he"
},
{
"path": "py12306/log/cluster_log.py",
"chars": 1032,
"preview": "from py12306.log.base import BaseLog\nfrom py12306.helpers.func import *\n\n\n@singleton\nclass ClusterLog(BaseLog):\n # 这里"
},
{
"path": "py12306/log/common_log.py",
"chars": 6158,
"preview": "from py12306.log.base import BaseLog\nfrom py12306.config import *\nfrom py12306.helpers.func import *\n\n\n@singleton\nclass "
},
{
"path": "py12306/log/order_log.py",
"chars": 3299,
"preview": "from py12306.log.base import BaseLog\nfrom py12306.helpers.func import *\n\n\n@singleton\nclass OrderLog(BaseLog):\n # 这里如果"
},
{
"path": "py12306/log/query_log.py",
"chars": 7176,
"preview": "# -*- coding:utf-8 -*-\nimport datetime\nimport json\nimport sys\nfrom os import path\n\nfrom py12306.config import Config\nfro"
},
{
"path": "py12306/log/redis_log.py",
"chars": 244,
"preview": "from py12306.log.base import BaseLog\nfrom py12306.helpers.func import *\n\n\n@singleton\nclass RedisLog(BaseLog):\n # 这里如果"
},
{
"path": "py12306/log/user_log.py",
"chars": 2490,
"preview": "from py12306.log.base import BaseLog\nfrom py12306.helpers.func import *\n\n\n@singleton\nclass UserLog(BaseLog):\n # 这里如果不"
},
{
"path": "py12306/order/order.py",
"chars": 26507,
"preview": "import asyncio\nimport urllib\n\n# from py12306.config import UserType\nfrom pyppeteer import launch\n\nfrom py12306.config im"
},
{
"path": "py12306/query/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "py12306/query/job.py",
"chars": 14477,
"preview": "from datetime import timedelta\nfrom datetime import datetime\n\nfrom py12306.app import app_available_check\nfrom py12306.c"
},
{
"path": "py12306/query/query.py",
"chars": 8136,
"preview": "from base64 import b64decode\nfrom py12306.config import Config\nfrom py12306.cluster.cluster import Cluster\nfrom py12306."
},
{
"path": "py12306/user/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "py12306/user/job.py",
"chars": 24429,
"preview": "import base64\nimport pickle\nimport re\nfrom os import path\n\nfrom py12306.cluster.cluster import Cluster\nfrom py12306.help"
},
{
"path": "py12306/user/user.py",
"chars": 2775,
"preview": "from py12306.app import *\nfrom py12306.cluster.cluster import Cluster\nfrom py12306.helpers.event import Event\nfrom py123"
},
{
"path": "py12306/vender/ruokuai/main.py",
"chars": 1499,
"preview": "import requests\nfrom hashlib import md5\n\n\nclass RKClient(object):\n\n def __init__(self, username, password, soft_id, s"
},
{
"path": "py12306/web/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "py12306/web/handler/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "py12306/web/handler/app.py",
"chars": 1491,
"preview": "import json\nimport re\n\nfrom flask import Blueprint, request, send_file\nfrom flask.json import jsonify\nfrom flask_jwt_ext"
},
{
"path": "py12306/web/handler/log.py",
"chars": 1561,
"preview": "import linecache\n\nfrom flask import Blueprint, request\nfrom flask.json import jsonify\nfrom flask_jwt_extended import (jw"
},
{
"path": "py12306/web/handler/query.py",
"chars": 947,
"preview": "from flask import Blueprint, request\nfrom flask.json import jsonify\nfrom flask_jwt_extended import (jwt_required)\n\nfrom "
},
{
"path": "py12306/web/handler/stat.py",
"chars": 1391,
"preview": "from flask import Blueprint, request\nfrom flask.json import jsonify\nfrom flask_jwt_extended import (jwt_required)\n\nfrom "
},
{
"path": "py12306/web/handler/user.py",
"chars": 1637,
"preview": "from flask import Blueprint, request\nfrom flask.json import jsonify\nfrom flask_jwt_extended import (jwt_required, create"
},
{
"path": "py12306/web/static/css/app.35e2fbd94557d71d1e2bfa0d4bb44d13.css",
"chars": 289229,
"preview": ".el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-pagination--small .arrow.disable"
},
{
"path": "py12306/web/static/css/app.7dba7f569524413218fde54c298188f4.css",
"chars": 289243,
"preview": ".el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-pagination--small .arrow.disable"
},
{
"path": "py12306/web/static/css/app.dfb5ffed622907edd7c5f81709f2b782.css",
"chars": 289061,
"preview": ".el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-pagination--small .arrow.disable"
},
{
"path": "py12306/web/static/index.html",
"chars": 622,
"preview": "<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content=\"width=device-width,initial-scale=1\"><title>p"
},
{
"path": "py12306/web/static/js/app.680b1bbd04444c6d9d3a.js",
"chars": 24237,
"preview": "webpackJsonp([1],{\"5ZdE\":function(t,e){},E5Rs:function(t,e){},GpBP:function(t,e){},NHnr:function(t,e,a){\"use strict\";Obj"
},
{
"path": "py12306/web/static/js/app.7d7d65cccfbfa339beba.js",
"chars": 25759,
"preview": "webpackJsonp([1],{\"5ZdE\":function(t,e){},E5Rs:function(t,e){},GpBP:function(t,e){},NHnr:function(t,e,a){\"use strict\";Obj"
},
{
"path": "py12306/web/static/js/app.96ef02c9e5601eb5ebcb.js",
"chars": 24156,
"preview": "webpackJsonp([1],{\"5ZdE\":function(t,e){},E5Rs:function(t,e){},GpBP:function(t,e){},NHnr:function(t,e,a){\"use strict\";Obj"
},
{
"path": "py12306/web/static/js/app.cdb00779aeb087dabd94.js",
"chars": 25827,
"preview": "webpackJsonp([1],{\"5ZdE\":function(t,e){},E5Rs:function(t,e){},GpBP:function(t,e){},NHnr:function(t,e,a){\"use strict\";Obj"
},
{
"path": "py12306/web/static/js/manifest.82f431004cf9bb6ad2cb.js",
"chars": 804,
"preview": "!function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a<e.length;a++)i=e[a],"
},
{
"path": "py12306/web/static/js/vendor.532ecf213e49d36e5e9e.js",
"chars": 1232995,
"preview": "webpackJsonp([0],{\"++K3\":function(e,t){var n,i,r,a,o,s,l,u,c,d,h,f,p,m,v,g=!1;function y(){if(!g){g=!0;var e=navigator.u"
},
{
"path": "py12306/web/static/js/vendor.aebd1de04bf90e88d9c7.js",
"chars": 843145,
"preview": "webpackJsonp([0],{\"++K3\":function(e,t){var n,i,r,o,s,a,l,u,c,d,h,f,p,m,v,g=!1;function b(){if(!g){g=!0;var e=navigator.u"
},
{
"path": "py12306/web/web.py",
"chars": 1789,
"preview": "# -*- coding: utf-8 -*-\nimport json\nimport logging\nfrom datetime import timedelta\n\nfrom flask import Flask, request\nfrom"
},
{
"path": "requirements.txt",
"chars": 569,
"preview": "-i https://pypi.tuna.tsinghua.edu.cn/simple\nappdirs==1.4.3\nbeautifulsoup4==4.7.0\nbs4==0.0.1\ncertifi==2023.11.17\nchardet="
},
{
"path": "runtime/.gitignore",
"chars": 26,
"preview": "*\n!.gitignore\n!query\n!user"
},
{
"path": "runtime/query/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "runtime/user/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
}
]
About this extraction
This page contains the full source code of the pjialin/py12306 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 71 files (3.2 MB), approximately 850.8k tokens, and a symbol index with 1737 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.