xy-map 1.1.73 → 1.1.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xy-map",
3
- "version": "1.1.73",
3
+ "version": "1.1.75",
4
4
  "description": "雄越地图",
5
5
  "main": "xy-map.umd.min.js",
6
6
  "scripts": {
package/xy-map.common.js CHANGED
@@ -224,7 +224,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".snow[data-v-20664206]{position:absolu
224
224
 
225
225
  /***/ }),
226
226
 
227
- /***/ 619:
227
+ /***/ 2554:
228
228
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
229
229
 
230
230
  "use strict";
@@ -238,7 +238,7 @@ __webpack_require__.r(__webpack_exports__);
238
238
 
239
239
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
240
240
  // Module
241
- ___CSS_LOADER_EXPORT___.push([module.id, ".tools[data-v-4c4ff58c]{position:absolute;left:0;top:0;margin:15px;background-color:hsla(0,0%,100%,.9);padding:14px;border-radius:5px}.tools .tools-bar[data-v-4c4ff58c]{cursor:pointer}.right-fixed[data-v-4c4ff58c]{position:absolute;right:0;top:0;margin:15px}.split-tooltip[data-v-4c4ff58c]{position:fixed;background-color:rgba(0,0,0,.8);color:#fff;padding:5px 10px;border-radius:4px;font-size:12px;pointer-events:none;z-index:1000}", ""]);
241
+ ___CSS_LOADER_EXPORT___.push([module.id, ".tools[data-v-782e8856]{position:absolute;left:0;top:0;margin:15px;background-color:hsla(0,0%,100%,.9);padding:14px;border-radius:5px}.tools .tools-bar[data-v-782e8856]{cursor:pointer}.right-fixed[data-v-782e8856]{position:absolute;right:0;top:0;margin:15px}.split-tooltip[data-v-782e8856]{position:fixed;background-color:rgba(0,0,0,.8);color:#fff;padding:5px 10px;border-radius:4px;font-size:12px;pointer-events:none;z-index:1000}", ""]);
242
242
  // Exports
243
243
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
244
244
 
@@ -43505,19 +43505,19 @@ var update = add("4a7b31d4", content, true, {"sourceMap":false,"shadowMode":fals
43505
43505
 
43506
43506
  /***/ }),
43507
43507
 
43508
- /***/ 2812:
43508
+ /***/ 9936:
43509
43509
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43510
43510
 
43511
43511
  // style-loader: Adds some css to the DOM by adding a <style> tag
43512
43512
 
43513
43513
  // load the styles
43514
- var content = __webpack_require__(619);
43514
+ var content = __webpack_require__(2554);
43515
43515
  if(content.__esModule) content = content.default;
43516
43516
  if(typeof content === 'string') content = [[module.id, content, '']];
43517
43517
  if(content.locals) module.exports = content.locals;
43518
43518
  // add the styles to the DOM
43519
43519
  var add = (__webpack_require__(7037)/* ["default"] */ .Z)
43520
- var update = add("1615f2cd", content, true, {"sourceMap":false,"shadowMode":false});
43520
+ var update = add("1af20d73", content, true, {"sourceMap":false,"shadowMode":false});
43521
43521
 
43522
43522
  /***/ }),
43523
43523
 
@@ -121188,8 +121188,8 @@ var mapStyle_component = normalizeComponent(
121188
121188
  )
121189
121189
 
121190
121190
  /* harmony default export */ var mapStyle = (mapStyle_component.exports);
121191
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/package/draw/index.vue?vue&type=template&id=4c4ff58c&scoped=true&
121192
- var drawvue_type_template_id_4c4ff58c_scoped_true_render = function render() {
121191
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/package/draw/index.vue?vue&type=template&id=782e8856&scoped=true&
121192
+ var drawvue_type_template_id_782e8856_scoped_true_render = function render() {
121193
121193
  var _vm = this,
121194
121194
  _c = _vm._self._c;
121195
121195
  return _c('div', [_c('div', {
@@ -121355,7 +121355,7 @@ var drawvue_type_template_id_4c4ff58c_scoped_true_render = function render() {
121355
121355
  style: _vm.tooltip.style
121356
121356
  }, [_vm._v(_vm._s(_vm.tooltip.text))]) : _vm._e()]);
121357
121357
  };
121358
- var drawvue_type_template_id_4c4ff58c_scoped_true_staticRenderFns = [];
121358
+ var drawvue_type_template_id_782e8856_scoped_true_staticRenderFns = [];
121359
121359
 
121360
121360
  // EXTERNAL MODULE: ./node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css
121361
121361
  var dist_mapbox_gl_draw = __webpack_require__(6957);
@@ -122211,26 +122211,50 @@ var shpFile_component = normalizeComponent(
122211
122211
  lines = polygonFeature.geometry.coordinates.map(coords => es_polygon(coords));
122212
122212
  }
122213
122213
  const splitter = lineString(splitLine.geometry.coordinates);
122214
- let splitResults = [];
122214
+ let splitResults = []; //拆分后的线段
122215
+ let noSplitResults = []; //未拆分线段
122216
+ let isSucess = false; // 是否有效分割
122217
+ console.log('拆分线', lines);
122215
122218
  // 对每条线进行分割
122216
122219
  lines.forEach(line => {
122217
122220
  const split = line_split_dist_es(line, splitter);
122218
- if (split.features.length == 0) splitResults.push(line); //当线段无法拆分时,返回本身对象
122219
- else splitResults = splitResults.concat(split.features);
122221
+ if (split.features.length == 0) {
122222
+ //当线段无法拆分时,返回本身对象
122223
+ noSplitResults.push(line);
122224
+ } else {
122225
+ splitResults = splitResults.concat(split.features);
122226
+ isSucess = true;
122227
+ }
122220
122228
  });
122229
+ console.log('拆分线结果', splitResults, noSplitResults);
122221
122230
 
122222
- // 转换为 Mapbox Draw 格式
122223
- const newLines = splitResults.map((feature, index) => ({
122231
+ // 拆分后的线段转换为 Mapbox Draw 格式
122232
+ let newLines = splitResults.map((feature, index) => ({
122224
122233
  type: 'Feature',
122225
122234
  id: `${oldFeature.id}_${index}`,
122226
122235
  geometry: feature.geometry,
122227
122236
  properties: Object.assign({}, oldFeature.properties)
122228
122237
  }));
122229
122238
 
122239
+ //未被成功拆分的线段 多线、多面应该自动合并回多线面模式
122240
+ if (noSplitResults.length > 0) {
122241
+ newLines.push({
122242
+ type: 'Feature',
122243
+ id: `${oldFeature.id}_${newLines.length}`,
122244
+ geometry: {
122245
+ coordinates: noSplitResults.length === 1 ? noSplitResults[0].geometry.coordinates : noSplitResults.map(item => item.geometry.coordinates),
122246
+ type: oldFeature.geometry.type
122247
+ },
122248
+ properties: Object.assign({}, oldFeature.properties)
122249
+ });
122250
+ }
122251
+ console.log('拆分线结果', newLines);
122252
+
122230
122253
  // 删除拆分线
122231
122254
  this.draw.delete(splitLine.id);
122232
- if (newLines.length == 1) {
122233
- this.$message.error('拆分失败,拆分线之间无交集!');
122255
+ if (!isSucess) {
122256
+ this.$emit('unconbine-fail');
122257
+ this.$message.warning('拆分失败,拆分线之间无交集!');
122234
122258
  return;
122235
122259
  }
122236
122260
 
@@ -122336,9 +122360,9 @@ var shpFile_component = normalizeComponent(
122336
122360
  });
122337
122361
  ;// CONCATENATED MODULE: ./src/package/draw/index.vue?vue&type=script&lang=js&
122338
122362
  /* harmony default export */ var package_drawvue_type_script_lang_js_ = (drawvue_type_script_lang_js_);
122339
- // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/package/draw/index.vue?vue&type=style&index=0&id=4c4ff58c&prod&lang=scss&scoped=true&
122340
- var drawvue_type_style_index_0_id_4c4ff58c_prod_lang_scss_scoped_true_ = __webpack_require__(2812);
122341
- ;// CONCATENATED MODULE: ./src/package/draw/index.vue?vue&type=style&index=0&id=4c4ff58c&prod&lang=scss&scoped=true&
122363
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/package/draw/index.vue?vue&type=style&index=0&id=782e8856&prod&lang=scss&scoped=true&
122364
+ var drawvue_type_style_index_0_id_782e8856_prod_lang_scss_scoped_true_ = __webpack_require__(9936);
122365
+ ;// CONCATENATED MODULE: ./src/package/draw/index.vue?vue&type=style&index=0&id=782e8856&prod&lang=scss&scoped=true&
122342
122366
 
122343
122367
  ;// CONCATENATED MODULE: ./src/package/draw/index.vue
122344
122368
 
@@ -122351,11 +122375,11 @@ var drawvue_type_style_index_0_id_4c4ff58c_prod_lang_scss_scoped_true_ = __webpa
122351
122375
 
122352
122376
  var draw_component = normalizeComponent(
122353
122377
  package_drawvue_type_script_lang_js_,
122354
- drawvue_type_template_id_4c4ff58c_scoped_true_render,
122355
- drawvue_type_template_id_4c4ff58c_scoped_true_staticRenderFns,
122378
+ drawvue_type_template_id_782e8856_scoped_true_render,
122379
+ drawvue_type_template_id_782e8856_scoped_true_staticRenderFns,
122356
122380
  false,
122357
122381
  null,
122358
- "4c4ff58c",
122382
+ "782e8856",
122359
122383
  null
122360
122384
 
122361
122385
  )
package/xy-map.umd.js CHANGED
@@ -234,7 +234,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".snow[data-v-20664206]{position:absolu
234
234
 
235
235
  /***/ }),
236
236
 
237
- /***/ 7994:
237
+ /***/ 3867:
238
238
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
239
239
 
240
240
  "use strict";
@@ -248,7 +248,7 @@ __webpack_require__.r(__webpack_exports__);
248
248
 
249
249
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
250
250
  // Module
251
- ___CSS_LOADER_EXPORT___.push([module.id, ".tools[data-v-4c4ff58c]{position:absolute;left:0;top:0;margin:15px;background-color:hsla(0,0%,100%,.9);padding:14px;border-radius:5px}.tools .tools-bar[data-v-4c4ff58c]{cursor:pointer}.right-fixed[data-v-4c4ff58c]{position:absolute;right:0;top:0;margin:15px}.split-tooltip[data-v-4c4ff58c]{position:fixed;background-color:rgba(0,0,0,.8);color:#fff;padding:5px 10px;border-radius:4px;font-size:12px;pointer-events:none;z-index:1000}", ""]);
251
+ ___CSS_LOADER_EXPORT___.push([module.id, ".tools[data-v-782e8856]{position:absolute;left:0;top:0;margin:15px;background-color:hsla(0,0%,100%,.9);padding:14px;border-radius:5px}.tools .tools-bar[data-v-782e8856]{cursor:pointer}.right-fixed[data-v-782e8856]{position:absolute;right:0;top:0;margin:15px}.split-tooltip[data-v-782e8856]{position:fixed;background-color:rgba(0,0,0,.8);color:#fff;padding:5px 10px;border-radius:4px;font-size:12px;pointer-events:none;z-index:1000}", ""]);
252
252
  // Exports
253
253
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
254
254
 
@@ -43515,19 +43515,19 @@ var update = add("33a2ac54", content, true, {"sourceMap":false,"shadowMode":fals
43515
43515
 
43516
43516
  /***/ }),
43517
43517
 
43518
- /***/ 3685:
43518
+ /***/ 4723:
43519
43519
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43520
43520
 
43521
43521
  // style-loader: Adds some css to the DOM by adding a <style> tag
43522
43522
 
43523
43523
  // load the styles
43524
- var content = __webpack_require__(7994);
43524
+ var content = __webpack_require__(3867);
43525
43525
  if(content.__esModule) content = content.default;
43526
43526
  if(typeof content === 'string') content = [[module.id, content, '']];
43527
43527
  if(content.locals) module.exports = content.locals;
43528
43528
  // add the styles to the DOM
43529
43529
  var add = (__webpack_require__(208)/* ["default"] */ .Z)
43530
- var update = add("38dc8d4d", content, true, {"sourceMap":false,"shadowMode":false});
43530
+ var update = add("3db8a7f3", content, true, {"sourceMap":false,"shadowMode":false});
43531
43531
 
43532
43532
  /***/ }),
43533
43533
 
@@ -121206,8 +121206,8 @@ var mapStyle_component = normalizeComponent(
121206
121206
  )
121207
121207
 
121208
121208
  /* harmony default export */ var mapStyle = (mapStyle_component.exports);
121209
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/package/draw/index.vue?vue&type=template&id=4c4ff58c&scoped=true&
121210
- var drawvue_type_template_id_4c4ff58c_scoped_true_render = function render() {
121209
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/package/draw/index.vue?vue&type=template&id=782e8856&scoped=true&
121210
+ var drawvue_type_template_id_782e8856_scoped_true_render = function render() {
121211
121211
  var _vm = this,
121212
121212
  _c = _vm._self._c;
121213
121213
  return _c('div', [_c('div', {
@@ -121373,7 +121373,7 @@ var drawvue_type_template_id_4c4ff58c_scoped_true_render = function render() {
121373
121373
  style: _vm.tooltip.style
121374
121374
  }, [_vm._v(_vm._s(_vm.tooltip.text))]) : _vm._e()]);
121375
121375
  };
121376
- var drawvue_type_template_id_4c4ff58c_scoped_true_staticRenderFns = [];
121376
+ var drawvue_type_template_id_782e8856_scoped_true_staticRenderFns = [];
121377
121377
 
121378
121378
  // EXTERNAL MODULE: ./node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css
121379
121379
  var dist_mapbox_gl_draw = __webpack_require__(5620);
@@ -122229,26 +122229,50 @@ var shpFile_component = normalizeComponent(
122229
122229
  lines = polygonFeature.geometry.coordinates.map(coords => es_polygon(coords));
122230
122230
  }
122231
122231
  const splitter = lineString(splitLine.geometry.coordinates);
122232
- let splitResults = [];
122232
+ let splitResults = []; //拆分后的线段
122233
+ let noSplitResults = []; //未拆分线段
122234
+ let isSucess = false; // 是否有效分割
122235
+ console.log('拆分线', lines);
122233
122236
  // 对每条线进行分割
122234
122237
  lines.forEach(line => {
122235
122238
  const split = line_split_dist_es(line, splitter);
122236
- if (split.features.length == 0) splitResults.push(line); //当线段无法拆分时,返回本身对象
122237
- else splitResults = splitResults.concat(split.features);
122239
+ if (split.features.length == 0) {
122240
+ //当线段无法拆分时,返回本身对象
122241
+ noSplitResults.push(line);
122242
+ } else {
122243
+ splitResults = splitResults.concat(split.features);
122244
+ isSucess = true;
122245
+ }
122238
122246
  });
122247
+ console.log('拆分线结果', splitResults, noSplitResults);
122239
122248
 
122240
- // 转换为 Mapbox Draw 格式
122241
- const newLines = splitResults.map((feature, index) => ({
122249
+ // 拆分后的线段转换为 Mapbox Draw 格式
122250
+ let newLines = splitResults.map((feature, index) => ({
122242
122251
  type: 'Feature',
122243
122252
  id: `${oldFeature.id}_${index}`,
122244
122253
  geometry: feature.geometry,
122245
122254
  properties: Object.assign({}, oldFeature.properties)
122246
122255
  }));
122247
122256
 
122257
+ //未被成功拆分的线段 多线、多面应该自动合并回多线面模式
122258
+ if (noSplitResults.length > 0) {
122259
+ newLines.push({
122260
+ type: 'Feature',
122261
+ id: `${oldFeature.id}_${newLines.length}`,
122262
+ geometry: {
122263
+ coordinates: noSplitResults.length === 1 ? noSplitResults[0].geometry.coordinates : noSplitResults.map(item => item.geometry.coordinates),
122264
+ type: oldFeature.geometry.type
122265
+ },
122266
+ properties: Object.assign({}, oldFeature.properties)
122267
+ });
122268
+ }
122269
+ console.log('拆分线结果', newLines);
122270
+
122248
122271
  // 删除拆分线
122249
122272
  this.draw.delete(splitLine.id);
122250
- if (newLines.length == 1) {
122251
- this.$message.error('拆分失败,拆分线之间无交集!');
122273
+ if (!isSucess) {
122274
+ this.$emit('unconbine-fail');
122275
+ this.$message.warning('拆分失败,拆分线之间无交集!');
122252
122276
  return;
122253
122277
  }
122254
122278
 
@@ -122354,9 +122378,9 @@ var shpFile_component = normalizeComponent(
122354
122378
  });
122355
122379
  ;// CONCATENATED MODULE: ./src/package/draw/index.vue?vue&type=script&lang=js&
122356
122380
  /* harmony default export */ var package_drawvue_type_script_lang_js_ = (drawvue_type_script_lang_js_);
122357
- // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-64.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.use[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/package/draw/index.vue?vue&type=style&index=0&id=4c4ff58c&prod&lang=scss&scoped=true&
122358
- var drawvue_type_style_index_0_id_4c4ff58c_prod_lang_scss_scoped_true_ = __webpack_require__(3685);
122359
- ;// CONCATENATED MODULE: ./src/package/draw/index.vue?vue&type=style&index=0&id=4c4ff58c&prod&lang=scss&scoped=true&
122381
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-64.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.use[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/package/draw/index.vue?vue&type=style&index=0&id=782e8856&prod&lang=scss&scoped=true&
122382
+ var drawvue_type_style_index_0_id_782e8856_prod_lang_scss_scoped_true_ = __webpack_require__(4723);
122383
+ ;// CONCATENATED MODULE: ./src/package/draw/index.vue?vue&type=style&index=0&id=782e8856&prod&lang=scss&scoped=true&
122360
122384
 
122361
122385
  ;// CONCATENATED MODULE: ./src/package/draw/index.vue
122362
122386
 
@@ -122369,11 +122393,11 @@ var drawvue_type_style_index_0_id_4c4ff58c_prod_lang_scss_scoped_true_ = __webpa
122369
122393
 
122370
122394
  var draw_component = normalizeComponent(
122371
122395
  package_drawvue_type_script_lang_js_,
122372
- drawvue_type_template_id_4c4ff58c_scoped_true_render,
122373
- drawvue_type_template_id_4c4ff58c_scoped_true_staticRenderFns,
122396
+ drawvue_type_template_id_782e8856_scoped_true_render,
122397
+ drawvue_type_template_id_782e8856_scoped_true_staticRenderFns,
122374
122398
  false,
122375
122399
  null,
122376
- "4c4ff58c",
122400
+ "782e8856",
122377
122401
  null
122378
122402
 
122379
122403
  )