@dan-uni/dan-any 0.9.9 → 1.0.0

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.
@@ -10272,7 +10272,7 @@
10272
10272
  function _isUint8Array(obj) {
10273
10273
  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
10274
10274
  }
10275
- var debugUtil = __webpack_require__("?14dd");
10275
+ var debugUtil = __webpack_require__("?8beb");
10276
10276
  var debug;
10277
10277
  debug = debugUtil && debugUtil.debuglog ? debugUtil.debuglog('stream') : function() {};
10278
10278
  var BufferList = __webpack_require__("../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/buffer_list.js");
@@ -11653,7 +11653,7 @@
11653
11653
  return ("string" === hint ? String : Number)(input);
11654
11654
  }
11655
11655
  var _require = __webpack_require__("../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js"), Buffer = _require.Buffer;
11656
- var _require2 = __webpack_require__("?fe28"), inspect = _require2.inspect;
11656
+ var _require2 = __webpack_require__("?c028"), inspect = _require2.inspect;
11657
11657
  var custom = inspect && inspect.custom || 'inspect';
11658
11658
  function copyBuffer(src, target, offset) {
11659
11659
  Buffer.prototype.copy.call(src, target, offset);
@@ -13153,13 +13153,13 @@
13153
13153
  }
13154
13154
  exports1.callbackify = callbackify;
13155
13155
  },
13156
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isByteLength.js": function(module1, exports1, __webpack_require__) {
13156
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isByteLength.js": function(module1, exports1, __webpack_require__) {
13157
13157
  "use strict";
13158
13158
  Object.defineProperty(exports1, "__esModule", {
13159
13159
  value: true
13160
13160
  });
13161
13161
  exports1["default"] = isByteLength;
13162
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13162
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13163
13163
  function _interopRequireDefault(e) {
13164
13164
  return e && e.__esModule ? e : {
13165
13165
  default: e
@@ -13189,18 +13189,18 @@
13189
13189
  module1.exports = exports1["default"];
13190
13190
  module1.exports["default"] = exports1["default"];
13191
13191
  },
13192
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isEmail.js": function(module1, exports1, __webpack_require__) {
13192
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isEmail.js": function(module1, exports1, __webpack_require__) {
13193
13193
  "use strict";
13194
13194
  Object.defineProperty(exports1, "__esModule", {
13195
13195
  value: true
13196
13196
  });
13197
13197
  exports1["default"] = isEmail;
13198
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13199
- var _checkHost = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/checkHost.js"));
13200
- var _isByteLength = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isByteLength.js"));
13201
- var _isFQDN = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isFQDN.js"));
13202
- var _isIP = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isIP.js"));
13203
- var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/merge.js"));
13198
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13199
+ var _checkHost = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/checkHost.js"));
13200
+ var _isByteLength = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isByteLength.js"));
13201
+ var _isFQDN = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isFQDN.js"));
13202
+ var _isIP = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isIP.js"));
13203
+ var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/merge.js"));
13204
13204
  function _interopRequireDefault(e) {
13205
13205
  return e && e.__esModule ? e : {
13206
13206
  default: e
@@ -13296,14 +13296,14 @@
13296
13296
  module1.exports = exports1["default"];
13297
13297
  module1.exports["default"] = exports1["default"];
13298
13298
  },
13299
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isFQDN.js": function(module1, exports1, __webpack_require__) {
13299
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isFQDN.js": function(module1, exports1, __webpack_require__) {
13300
13300
  "use strict";
13301
13301
  Object.defineProperty(exports1, "__esModule", {
13302
13302
  value: true
13303
13303
  });
13304
13304
  exports1["default"] = isFQDN;
13305
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13306
- var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/merge.js"));
13305
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13306
+ var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/merge.js"));
13307
13307
  function _interopRequireDefault(e) {
13308
13308
  return e && e.__esModule ? e : {
13309
13309
  default: e
@@ -13342,13 +13342,13 @@
13342
13342
  module1.exports = exports1["default"];
13343
13343
  module1.exports["default"] = exports1["default"];
13344
13344
  },
13345
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isIP.js": function(module1, exports1, __webpack_require__) {
13345
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isIP.js": function(module1, exports1, __webpack_require__) {
13346
13346
  "use strict";
13347
13347
  Object.defineProperty(exports1, "__esModule", {
13348
13348
  value: true
13349
13349
  });
13350
13350
  exports1["default"] = isIP;
13351
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13351
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13352
13352
  function _interopRequireDefault(e) {
13353
13353
  return e && e.__esModule ? e : {
13354
13354
  default: e
@@ -13382,15 +13382,15 @@
13382
13382
  module1.exports = exports1["default"];
13383
13383
  module1.exports["default"] = exports1["default"];
13384
13384
  },
13385
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isJSON.js": function(module1, exports1, __webpack_require__) {
13385
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isJSON.js": function(module1, exports1, __webpack_require__) {
13386
13386
  "use strict";
13387
13387
  Object.defineProperty(exports1, "__esModule", {
13388
13388
  value: true
13389
13389
  });
13390
13390
  exports1["default"] = isJSON;
13391
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13392
- var _includesArray = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/includesArray.js"));
13393
- var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/merge.js"));
13391
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13392
+ var _includesArray = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/includesArray.js"));
13393
+ var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/merge.js"));
13394
13394
  function _interopRequireDefault(e) {
13395
13395
  return e && e.__esModule ? e : {
13396
13396
  default: e
@@ -13424,7 +13424,7 @@
13424
13424
  module1.exports = exports1["default"];
13425
13425
  module1.exports["default"] = exports1["default"];
13426
13426
  },
13427
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js": function(module1, exports1) {
13427
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js": function(module1, exports1) {
13428
13428
  "use strict";
13429
13429
  Object.defineProperty(exports1, "__esModule", {
13430
13430
  value: true
@@ -13437,7 +13437,7 @@
13437
13437
  module1.exports = exports1["default"];
13438
13438
  module1.exports["default"] = exports1["default"];
13439
13439
  },
13440
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/checkHost.js": function(module1, exports1) {
13440
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/checkHost.js": function(module1, exports1) {
13441
13441
  "use strict";
13442
13442
  Object.defineProperty(exports1, "__esModule", {
13443
13443
  value: true
@@ -13456,7 +13456,7 @@
13456
13456
  module1.exports = exports1["default"];
13457
13457
  module1.exports["default"] = exports1["default"];
13458
13458
  },
13459
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/includesArray.js": function(module1, exports1) {
13459
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/includesArray.js": function(module1, exports1) {
13460
13460
  "use strict";
13461
13461
  Object.defineProperty(exports1, "__esModule", {
13462
13462
  value: true
@@ -13471,7 +13471,7 @@
13471
13471
  module1.exports = exports1["default"];
13472
13472
  module1.exports["default"] = exports1["default"];
13473
13473
  },
13474
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/merge.js": function(module1, exports1) {
13474
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/merge.js": function(module1, exports1) {
13475
13475
  "use strict";
13476
13476
  Object.defineProperty(exports1, "__esModule", {
13477
13477
  value: true
@@ -13564,8 +13564,8 @@
13564
13564
  return number + '';
13565
13565
  };
13566
13566
  },
13567
- "?fe28": function() {},
13568
- "?14dd": function() {},
13567
+ "?c028": function() {},
13568
+ "?8beb": function() {},
13569
13569
  "../../node_modules/.pnpm/available-typed-arrays@1.0.7/node_modules/available-typed-arrays/index.js": function(module1, __unused_webpack_exports, __webpack_require__) {
13570
13570
  "use strict";
13571
13571
  var possibleNames = __webpack_require__("../../node_modules/.pnpm/possible-typed-array-names@1.1.0/node_modules/possible-typed-array-names/index.js");
@@ -14211,11 +14211,11 @@ and limitations under the License.
14211
14211
  "use strict";
14212
14212
  __webpack_require__.r(__webpack_exports__);
14213
14213
  __webpack_require__.d(__webpack_exports__, {
14214
- UniDMTools: ()=>dm_gen_namespaceObject,
14215
- UniIDTools: ()=>id_gen_namespaceObject,
14216
- UniDM: ()=>UniDM,
14217
14214
  platform: ()=>platform_namespaceObject,
14218
- UniPool: ()=>src_UniPool
14215
+ UniDM: ()=>UniDM,
14216
+ UniDMTools: ()=>dm_gen_namespaceObject,
14217
+ UniPool: ()=>src_UniPool,
14218
+ UniIDTools: ()=>id_gen_namespaceObject
14219
14219
  });
14220
14220
  var platform_namespaceObject = {};
14221
14221
  __webpack_require__.r(platform_namespaceObject);
@@ -14246,7 +14246,7 @@ and limitations under the License.
14246
14246
  UniDM: ()=>UniDM
14247
14247
  });
14248
14248
  __webpack_require__("../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/ReflectLite.js");
14249
- var isJSON = __webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isJSON.js");
14249
+ var isJSON = __webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isJSON.js");
14250
14250
  var isJSON_default = /*#__PURE__*/ __webpack_require__.n(isJSON);
14251
14251
  function IsJSON_isJSON(value) {
14252
14252
  return 'string' == typeof value && isJSON_default()(value);
@@ -15086,6 +15086,15 @@ and limitations under the License.
15086
15086
  this.saveTextToParentTag = saveTextToParentTag;
15087
15087
  this.addChild = addChild;
15088
15088
  this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);
15089
+ if (this.options.stopNodes && this.options.stopNodes.length > 0) {
15090
+ this.stopNodesExact = new Set();
15091
+ this.stopNodesWildcard = new Set();
15092
+ for(let i = 0; i < this.options.stopNodes.length; i++){
15093
+ const stopNodeExp = this.options.stopNodes[i];
15094
+ if ('string' == typeof stopNodeExp) if (stopNodeExp.startsWith("*.")) this.stopNodesWildcard.add(stopNodeExp.substring(2));
15095
+ else this.stopNodesExact.add(stopNodeExp);
15096
+ }
15097
+ }
15089
15098
  }
15090
15099
  }
15091
15100
  function addExternalEntities(externalEntities) {
@@ -15245,7 +15254,7 @@ and limitations under the License.
15245
15254
  }
15246
15255
  if (tagName !== xmlObj.tagname) jPath += jPath ? "." + tagName : tagName;
15247
15256
  const startIndex = i;
15248
- if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {
15257
+ if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {
15249
15258
  let tagContent = "";
15250
15259
  if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) {
15251
15260
  if ("/" === tagName[tagName.length - 1]) {
@@ -15330,12 +15339,9 @@ and limitations under the License.
15330
15339
  }
15331
15340
  return textData;
15332
15341
  }
15333
- function isItStopNode(stopNodes, jPath, currentTagName) {
15334
- const allNodesExp = "*." + currentTagName;
15335
- for(const stopNodePath in stopNodes){
15336
- const stopNodeExp = stopNodes[stopNodePath];
15337
- if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;
15338
- }
15342
+ function isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName) {
15343
+ if (stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;
15344
+ if (stopNodesExact && stopNodesExact.has(jPath)) return true;
15339
15345
  return false;
15340
15346
  }
15341
15347
  function tagExpWithClosingIndex(xmlData, i, closingChar = ">") {
@@ -17077,10 +17083,14 @@ and limitations under the License.
17077
17083
  function reflect_reflect(messageDesc, message, check = true) {
17078
17084
  return new ReflectMessageImpl(messageDesc, message, check);
17079
17085
  }
17086
+ const messageSortedFields = new WeakMap();
17080
17087
  class ReflectMessageImpl {
17081
17088
  get sortedFields() {
17082
- var _a;
17083
- return null != (_a = this._sortedFields) ? _a : this._sortedFields = this.desc.fields.concat().sort((a, b)=>a.number - b.number);
17089
+ const cached = messageSortedFields.get(this.desc);
17090
+ if (cached) return cached;
17091
+ const sortedFields = this.desc.fields.concat().sort((a, b)=>a.number - b.number);
17092
+ messageSortedFields.set(this.desc, sortedFields);
17093
+ return sortedFields;
17084
17094
  }
17085
17095
  constructor(messageDesc, message, check = true){
17086
17096
  this.lists = new Map();
@@ -20981,11 +20991,11 @@ and limitations under the License.
20981
20991
  function timestamp_timestampMs(timestamp) {
20982
20992
  return 1000 * Number(timestamp.seconds) + Math.round(timestamp.nanos / 1000000);
20983
20993
  }
20984
- var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"0.9.9","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
20994
+ var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"1.0.0","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
20985
20995
  const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
20986
20996
  const DmSegMobileReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 30);
20987
20997
  const DmWebViewReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 39);
20988
- const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLCAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSEAoIcGxhdGZvcm0YDSABKAkSEgoFZXh0cmEYDiABKAlIAIgBAUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
20998
+ const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLUAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSFQoIcGxhdGZvcm0YDSABKAlIAIgBARISCgVleHRyYRgOIAEoCUgBiAEBQgsKCV9wbGF0Zm9ybUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
20989
20999
  file_google_protobuf_timestamp
20990
21000
  ]);
20991
21001
  const DanmakuReplySchema = /*@__PURE__*/ message_messageDesc(file_danuni, 2);
@@ -22016,7 +22026,7 @@ and limitations under the License.
22016
22026
  if ('string' == typeof schemaNameOrObject) return container_getFromContainer(Validator_Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions);
22017
22027
  return container_getFromContainer(Validator_Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions);
22018
22028
  }
22019
- var isEmail = __webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isEmail.js");
22029
+ var isEmail = __webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isEmail.js");
22020
22030
  var isEmail_default = /*#__PURE__*/ __webpack_require__.n(isEmail);
22021
22031
  var IS_EMAIL = 'isEmail';
22022
22032
  function IsEmail_isEmail(value, options) {
@@ -23431,6 +23441,7 @@ and limitations under the License.
23431
23441
  return this.options.dmid(this);
23432
23442
  }
23433
23443
  isSameAs(dan, options) {
23444
+ if (this === dan) return true;
23434
23445
  if (4 === this.mode || 4 === dan.mode) return false;
23435
23446
  if (!options?.skipDanuniMerge && (this.extra.danuni?.merge || dan.extra.danuni?.merge)) return false;
23436
23447
  const isSame = (k)=>this[k] === dan[k];
@@ -23444,26 +23455,22 @@ and limitations under the License.
23444
23455
  return checks;
23445
23456
  }
23446
23457
  minify() {
23447
- const def = UniDM.create();
23448
- const dan = UniDM.create(this);
23449
- const shouldKeep = (key, value)=>{
23450
- if ('SOID' === key) return true;
23451
- if (null == value) return false;
23452
- if (value === def[key]) return false;
23453
- if ('attr' === key && Array.isArray(value) && 0 === value.length) return false;
23454
- if ('extraStr' === key && '{}' === value) return false;
23455
- return true;
23456
- };
23458
+ const def = new UniDM();
23457
23459
  const result = {
23458
- SOID: dan.SOID
23460
+ SOID: this.SOID
23459
23461
  };
23460
- for (const key of Object.keys(dan)){
23461
- const value = dan[key];
23462
- if (shouldKeep(key, value)) {
23463
- if ('SOID' === key) continue;
23464
- Reflect.set(result, key, value);
23465
- }
23466
- }
23462
+ if (this.progress !== def.progress) result.progress = this.progress;
23463
+ if (this.mode !== def.mode) result.mode = this.mode;
23464
+ if (this.fontsize !== def.fontsize) result.fontsize = this.fontsize;
23465
+ if (this.color !== def.color) result.color = this.color;
23466
+ if (this.senderID !== def.senderID) result.senderID = this.senderID;
23467
+ if (this.content !== def.content) result.content = this.content;
23468
+ if (this.weight !== def.weight) result.weight = this.weight;
23469
+ if (this.pool !== def.pool) result.pool = this.pool;
23470
+ if (this.attr.length > 0) result.attr = this.attr;
23471
+ if (void 0 !== this.platform) result.platform = this.platform;
23472
+ if (this.extraStr && '{}' !== this.extraStr) result.extraStr = this.extraStr;
23473
+ if (void 0 !== this.DMID) result.DMID = this.DMID;
23467
23474
  return result;
23468
23475
  }
23469
23476
  downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {}) {
@@ -24015,46 +24022,91 @@ and limitations under the License.
24015
24022
  return fn(this);
24016
24023
  }
24017
24024
  get shared() {
24018
- const isShared = (key)=>this.dans.every((d)=>d[key]);
24019
- return {
24020
- SOID: isShared('SOID') ? this.dans[0].SOID : void 0,
24021
- senderID: isShared('senderID') ? this.dans[0].senderID : void 0,
24022
- platform: isShared('platform') ? this.dans[0].platform : void 0,
24023
- pool: isShared('pool') ? this.dans[0].pool : void 0,
24024
- mode: isShared('mode') ? this.dans[0].mode : void 0,
24025
- color: isShared('color') ? this.dans[0].color : void 0
24026
- };
24025
+ if (0 === this.dans.length) return {};
24026
+ const keys = [
24027
+ 'SOID',
24028
+ 'senderID',
24029
+ 'platform',
24030
+ 'pool',
24031
+ 'mode',
24032
+ 'color'
24033
+ ];
24034
+ const result = {};
24035
+ for (const key of keys){
24036
+ const sharedVal = this.getShared(key);
24037
+ if (void 0 !== sharedVal) result[key] = sharedVal;
24038
+ }
24039
+ return result;
24027
24040
  }
24028
24041
  getShared(key) {
24029
- const isShared = (key)=>this.dans.every((d)=>d[key]);
24030
- return isShared(key) ? this.dans[0][key] : void 0;
24042
+ if (0 === this.dans.length) return;
24043
+ const firstVal = this.dans[0][key];
24044
+ for(let i = 1; i < this.dans.length; i++)if (this.dans[i][key] !== firstVal) return;
24045
+ return firstVal;
24031
24046
  }
24032
24047
  getStat(key) {
24033
- const default_stat = [];
24034
- const stats = this.dans.reduce((stat, dan)=>{
24035
- const valWithCount = stat.find((i)=>i.val === dan[key]);
24036
- if (valWithCount) valWithCount.count++;
24037
- else stat.push({
24038
- val: dan[key],
24039
- count: 1
24040
- });
24041
- return stat;
24042
- }, default_stat);
24043
- return stats;
24048
+ const statMap = new Map();
24049
+ for (const dan of this.dans){
24050
+ const val = dan[key];
24051
+ statMap.set(val, (statMap.get(val) || 0) + 1);
24052
+ }
24053
+ return statMap;
24044
24054
  }
24045
24055
  getMost(key) {
24046
- return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
24056
+ const stats = this.getStat(key);
24057
+ if (0 === stats.size) return {
24058
+ val: void 0,
24059
+ count: 0
24060
+ };
24061
+ let mostVal;
24062
+ let maxCount = 0;
24063
+ for (const [val, count] of stats.entries())if (count > maxCount) {
24064
+ maxCount = count;
24065
+ mostVal = val;
24066
+ }
24067
+ return {
24068
+ val: mostVal,
24069
+ count: maxCount
24070
+ };
24047
24071
  }
24048
24072
  get most() {
24073
+ const keys = [
24074
+ 'mode',
24075
+ 'fontsize',
24076
+ 'color',
24077
+ 'senderID',
24078
+ 'content',
24079
+ 'weight',
24080
+ 'pool',
24081
+ 'platform'
24082
+ ];
24083
+ const statMaps = new Map();
24084
+ for (const dan of this.dans)for (const key of keys){
24085
+ if (!statMaps.has(key)) statMaps.set(key, new Map());
24086
+ const statMap = statMaps.get(key);
24087
+ const val = dan[key];
24088
+ statMap.set(val, (statMap.get(val) || 0) + 1);
24089
+ }
24090
+ const result = {};
24091
+ for (const key of keys){
24092
+ const statMap = statMaps.get(key);
24093
+ let mostVal;
24094
+ let maxCount = 0;
24095
+ for (const [val, count] of statMap.entries())if (count > maxCount) {
24096
+ maxCount = count;
24097
+ mostVal = val;
24098
+ }
24099
+ result[key] = mostVal;
24100
+ }
24049
24101
  return {
24050
- mode: this.getMost('mode').val,
24051
- fontsize: this.getMost('fontsize').val,
24052
- color: this.getMost('color').val,
24053
- senderID: this.getMost('senderID').val,
24054
- content: this.getMost('content').val,
24055
- weight: this.getMost('weight').val,
24056
- pool: this.getMost('pool').val,
24057
- platform: this.getMost('platform').val
24102
+ mode: result.mode,
24103
+ fontsize: result.fontsize,
24104
+ color: result.color,
24105
+ senderID: result.senderID,
24106
+ content: result.content,
24107
+ weight: result.weight,
24108
+ pool: result.pool,
24109
+ platform: result.platform
24058
24110
  };
24059
24111
  }
24060
24112
  static create(options) {
@@ -24082,7 +24134,7 @@ and limitations under the License.
24082
24134
  return this;
24083
24135
  }
24084
24136
  split(key) {
24085
- if (this.shared[key]) return [
24137
+ if (this.getShared(key)) return [
24086
24138
  this
24087
24139
  ];
24088
24140
  const set = new Set(this.dans.map((d)=>d[key]));
@@ -24104,44 +24156,27 @@ and limitations under the License.
24104
24156
  this.options.dedupe = false;
24105
24157
  }
24106
24158
  merge(lifetime = 0) {
24107
- if (!this.shared.SOID) {
24159
+ if (!this.getShared('SOID')) {
24108
24160
  console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
24109
24161
  return this;
24110
24162
  }
24111
24163
  if (lifetime <= 0) return this;
24112
- const mergeContext = this.dans.reduce(([result, cache, mergeObj], danmaku)=>{
24113
- const key = [
24114
- 'content',
24115
- 'mode',
24116
- 'pool',
24117
- 'platform'
24118
- ].map((k)=>danmaku[k]).join('|');
24164
+ const result = [];
24165
+ const cache = {};
24166
+ const mergeObj = {};
24167
+ for (const danmaku of this.dans){
24168
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
24119
24169
  const cached = cache[key];
24120
- const lastAppearTime = cached?.progress || 0;
24121
- if (cached && danmaku.progress - lastAppearTime <= lifetime && danmaku.isSameAs(cached, {
24170
+ if (cached && danmaku.progress - cached.progress <= lifetime && danmaku.isSameAs(cached, {
24122
24171
  skipDanuniMerge: true
24123
24172
  })) {
24124
- const senders = mergeObj[key].senders;
24125
- senders.push(danmaku.senderID);
24126
- const extra = danmaku.extra;
24127
- extra.danuni = extra.danuni || {};
24128
- extra.danuni.merge = {
24129
- count: senders.length,
24130
- duration: Number.parseFloat((danmaku.progress - cached.progress).toFixed(3)),
24131
- senders,
24132
- taolu_count: senders.length,
24133
- taolu_senders: senders
24134
- };
24135
- danmaku.extraStr = src_JSON.stringify(extra);
24173
+ mergeObj[key].senders.push(danmaku.senderID);
24174
+ mergeObj[key].count = mergeObj[key].senders.length;
24175
+ mergeObj[key].taolu_count = mergeObj[key].count;
24176
+ mergeObj[key].taolu_senders = mergeObj[key].senders;
24177
+ mergeObj[key].duration = Number.parseFloat((danmaku.progress - cached.progress).toFixed(3));
24136
24178
  cache[key] = danmaku;
24137
- mergeObj[key] = extra.danuni.merge;
24138
- return [
24139
- result,
24140
- cache,
24141
- mergeObj
24142
- ];
24143
- }
24144
- {
24179
+ } else {
24145
24180
  mergeObj[key] = {
24146
24181
  count: 1,
24147
24182
  duration: 0,
@@ -24154,55 +24189,31 @@ and limitations under the License.
24154
24189
  ]
24155
24190
  };
24156
24191
  cache[key] = danmaku;
24157
- const extra = danmaku.extra;
24158
- extra.danuni = extra.danuni || {};
24159
- extra.danuni.merge = mergeObj[key];
24160
- danmaku.extraStr = src_JSON.stringify(extra);
24161
24192
  result.push(danmaku);
24162
- return [
24163
- result,
24164
- cache,
24165
- mergeObj
24166
- ];
24167
24193
  }
24168
- }, [
24169
- [],
24170
- {},
24171
- {}
24172
- ]);
24173
- const [result, _cache, mergeObj] = mergeContext;
24174
- result.forEach((danmaku, i)=>{
24175
- const key = [
24176
- 'content',
24177
- 'mode',
24178
- 'platform',
24179
- 'pool'
24180
- ].map((k)=>danmaku[k]).join('|');
24181
- const extra = result[i].extra;
24194
+ }
24195
+ for (const danmaku of result){
24196
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
24182
24197
  const mergeData = mergeObj[key];
24183
- result[i].extraStr = src_JSON.stringify({
24184
- ...extra,
24185
- danuni: {
24186
- ...extra.danuni,
24187
- merge: mergeData
24188
- }
24189
- });
24190
- if (mergeData?.count) if (mergeData.count <= 1) {
24191
- const updatedExtra = {
24192
- ...extra
24193
- };
24194
- if (updatedExtra.danuni) {
24195
- delete updatedExtra.danuni.merge;
24196
- if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
24197
- }
24198
- result[i].extraStr = Object.keys(updatedExtra).length > 0 ? src_JSON.stringify(updatedExtra) : void 0;
24199
- } else {
24200
- result[i].senderID = 'merge[bot]@dan-any';
24201
- result[i].attr ? result[i].attr.push(dm_gen_DMAttr.Protect) : result[i].attr = [
24198
+ const extra = danmaku.extra;
24199
+ if (mergeData.count > 1) {
24200
+ danmaku.senderID = 'merge[bot]@dan-any';
24201
+ if (danmaku.attr) {
24202
+ if (!danmaku.attr.includes(dm_gen_DMAttr.Protect)) danmaku.attr.push(dm_gen_DMAttr.Protect);
24203
+ } else danmaku.attr = [
24202
24204
  dm_gen_DMAttr.Protect
24203
24205
  ];
24206
+ extra.danuni = extra.danuni || {};
24207
+ extra.danuni.merge = mergeData;
24208
+ danmaku.extraStr = src_JSON.stringify(extra);
24209
+ } else {
24210
+ if (extra.danuni?.merge) {
24211
+ delete extra.danuni.merge;
24212
+ if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
24213
+ }
24214
+ danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON.stringify(extra) : void 0;
24204
24215
  }
24205
- });
24216
+ }
24206
24217
  return new UniPool(result, this.options, this.info);
24207
24218
  }
24208
24219
  minify() {
@@ -24225,7 +24236,7 @@ and limitations under the License.
24225
24236
  pool: this.fromArtplayer(json, json.danuni?.data ?? '', void 0, options),
24226
24237
  fmt: 'artplayer.json'
24227
24238
  };
24228
- if (json.count && json.comments && json.comments.every((d)=>d.m)) return {
24239
+ if (json.count && json.comments && Array.isArray(json.comments) && json.comments.every((d)=>d.m)) return {
24229
24240
  pool: this.fromDDPlay(json, json.danuni?.data ?? '', options),
24230
24241
  fmt: 'ddplay.json'
24231
24242
  };
@@ -24404,7 +24415,7 @@ and limitations under the License.
24404
24415
  source: 'k-v',
24405
24416
  danuni: {
24406
24417
  ...DanUniConvertTipTemplate,
24407
- data: this.shared.SOID
24418
+ data: this.getShared('SOID')
24408
24419
  },
24409
24420
  d: this.dans.map((dan)=>dan.toBiliXML(options))
24410
24421
  }
@@ -24543,7 +24554,7 @@ and limitations under the License.
24543
24554
  substyle: {}
24544
24555
  };
24545
24556
  const finalOptions = options ?? defaultOptions;
24546
- const fn = this.shared.SOID;
24557
+ const fn = this.getShared('SOID');
24547
24558
  return generateASS(this, {
24548
24559
  filename: fn,
24549
24560
  title: fn,
@@ -24752,10 +24763,10 @@ and limitations under the License.
24752
24763
  return `${hour}:${pad(minute)}:${pad(second)}.${minorSecond}`;
24753
24764
  };
24754
24765
  const encode = (text)=>text.toString().replaceAll('{', '{').replaceAll('}', '}').replaceAll(/\r|\n/g, '');
24755
- const scrollCommand = ({ start, end, top })=>`\\move(${start},${top},${end},${top})`;
24756
- const fixCommand = ({ top, left })=>`\\an8\\pos(${left},${top})`;
24757
- const colorCommand = (color)=>`\\c${formatColor(color)}`;
24758
- const borderColorCommand = (color)=>`\\3c${formatColor(color)}`;
24766
+ const scrollCommand = ({ start, end, top })=>String.raw`\move(${start},${top},${end},${top})`;
24767
+ const fixCommand = ({ top, left })=>String.raw`\an8\pos(${left},${top})`;
24768
+ const colorCommand = (color)=>String.raw`\c${formatColor(color)}`;
24769
+ const borderColorCommand = (color)=>String.raw`\3c${formatColor(color)}`;
24759
24770
  const dialogue = (danmaku, config)=>{
24760
24771
  const { fontSizeType, content, time } = danmaku;
24761
24772
  const { scrollTime, fixTime } = config;
@@ -25023,46 +25034,91 @@ and limitations under the License.
25023
25034
  return fn(this);
25024
25035
  }
25025
25036
  get shared() {
25026
- const isShared = (key)=>this.dans.every((d)=>d[key]);
25027
- return {
25028
- SOID: isShared('SOID') ? this.dans[0].SOID : void 0,
25029
- senderID: isShared('senderID') ? this.dans[0].senderID : void 0,
25030
- platform: isShared('platform') ? this.dans[0].platform : void 0,
25031
- pool: isShared('pool') ? this.dans[0].pool : void 0,
25032
- mode: isShared('mode') ? this.dans[0].mode : void 0,
25033
- color: isShared('color') ? this.dans[0].color : void 0
25034
- };
25037
+ if (0 === this.dans.length) return {};
25038
+ const keys = [
25039
+ 'SOID',
25040
+ 'senderID',
25041
+ 'platform',
25042
+ 'pool',
25043
+ 'mode',
25044
+ 'color'
25045
+ ];
25046
+ const result = {};
25047
+ for (const key of keys){
25048
+ const sharedVal = this.getShared(key);
25049
+ if (void 0 !== sharedVal) result[key] = sharedVal;
25050
+ }
25051
+ return result;
25035
25052
  }
25036
25053
  getShared(key) {
25037
- const isShared = (key)=>this.dans.every((d)=>d[key]);
25038
- return isShared(key) ? this.dans[0][key] : void 0;
25054
+ if (0 === this.dans.length) return;
25055
+ const firstVal = this.dans[0][key];
25056
+ for(let i = 1; i < this.dans.length; i++)if (this.dans[i][key] !== firstVal) return;
25057
+ return firstVal;
25039
25058
  }
25040
25059
  getStat(key) {
25041
- const default_stat = [];
25042
- const stats = this.dans.reduce((stat, dan)=>{
25043
- const valWithCount = stat.find((i)=>i.val === dan[key]);
25044
- if (valWithCount) valWithCount.count++;
25045
- else stat.push({
25046
- val: dan[key],
25047
- count: 1
25048
- });
25049
- return stat;
25050
- }, default_stat);
25051
- return stats;
25060
+ const statMap = new Map();
25061
+ for (const dan of this.dans){
25062
+ const val = dan[key];
25063
+ statMap.set(val, (statMap.get(val) || 0) + 1);
25064
+ }
25065
+ return statMap;
25052
25066
  }
25053
25067
  getMost(key) {
25054
- return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
25068
+ const stats = this.getStat(key);
25069
+ if (0 === stats.size) return {
25070
+ val: void 0,
25071
+ count: 0
25072
+ };
25073
+ let mostVal;
25074
+ let maxCount = 0;
25075
+ for (const [val, count] of stats.entries())if (count > maxCount) {
25076
+ maxCount = count;
25077
+ mostVal = val;
25078
+ }
25079
+ return {
25080
+ val: mostVal,
25081
+ count: maxCount
25082
+ };
25055
25083
  }
25056
25084
  get most() {
25085
+ const keys = [
25086
+ 'mode',
25087
+ 'fontsize',
25088
+ 'color',
25089
+ 'senderID',
25090
+ 'content',
25091
+ 'weight',
25092
+ 'pool',
25093
+ 'platform'
25094
+ ];
25095
+ const statMaps = new Map();
25096
+ for (const dan of this.dans)for (const key of keys){
25097
+ if (!statMaps.has(key)) statMaps.set(key, new Map());
25098
+ const statMap = statMaps.get(key);
25099
+ const val = dan[key];
25100
+ statMap.set(val, (statMap.get(val) || 0) + 1);
25101
+ }
25102
+ const result = {};
25103
+ for (const key of keys){
25104
+ const statMap = statMaps.get(key);
25105
+ let mostVal;
25106
+ let maxCount = 0;
25107
+ for (const [val, count] of statMap.entries())if (count > maxCount) {
25108
+ maxCount = count;
25109
+ mostVal = val;
25110
+ }
25111
+ result[key] = mostVal;
25112
+ }
25057
25113
  return {
25058
- mode: this.getMost('mode').val,
25059
- fontsize: this.getMost('fontsize').val,
25060
- color: this.getMost('color').val,
25061
- senderID: this.getMost('senderID').val,
25062
- content: this.getMost('content').val,
25063
- weight: this.getMost('weight').val,
25064
- pool: this.getMost('pool').val,
25065
- platform: this.getMost('platform').val
25114
+ mode: result.mode,
25115
+ fontsize: result.fontsize,
25116
+ color: result.color,
25117
+ senderID: result.senderID,
25118
+ content: result.content,
25119
+ weight: result.weight,
25120
+ pool: result.pool,
25121
+ platform: result.platform
25066
25122
  };
25067
25123
  }
25068
25124
  static create(options) {
@@ -25090,7 +25146,7 @@ and limitations under the License.
25090
25146
  return this;
25091
25147
  }
25092
25148
  split(key) {
25093
- if (this.shared[key]) return [
25149
+ if (this.getShared(key)) return [
25094
25150
  this
25095
25151
  ];
25096
25152
  const set = new Set(this.dans.map((d)=>d[key]));
@@ -25112,44 +25168,27 @@ and limitations under the License.
25112
25168
  this.options.dedupe = false;
25113
25169
  }
25114
25170
  merge(lifetime = 0) {
25115
- if (!this.shared.SOID) {
25171
+ if (!this.getShared('SOID')) {
25116
25172
  console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
25117
25173
  return this;
25118
25174
  }
25119
25175
  if (lifetime <= 0) return this;
25120
- const mergeContext = this.dans.reduce(([result, cache, mergeObj], danmaku)=>{
25121
- const key = [
25122
- 'content',
25123
- 'mode',
25124
- 'pool',
25125
- 'platform'
25126
- ].map((k)=>danmaku[k]).join('|');
25176
+ const result = [];
25177
+ const cache = {};
25178
+ const mergeObj = {};
25179
+ for (const danmaku of this.dans){
25180
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
25127
25181
  const cached = cache[key];
25128
- const lastAppearTime = cached?.progress || 0;
25129
- if (cached && danmaku.progress - lastAppearTime <= lifetime && danmaku.isSameAs(cached, {
25182
+ if (cached && danmaku.progress - cached.progress <= lifetime && danmaku.isSameAs(cached, {
25130
25183
  skipDanuniMerge: true
25131
25184
  })) {
25132
- const senders = mergeObj[key].senders;
25133
- senders.push(danmaku.senderID);
25134
- const extra = danmaku.extra;
25135
- extra.danuni = extra.danuni || {};
25136
- extra.danuni.merge = {
25137
- count: senders.length,
25138
- duration: Number.parseFloat((danmaku.progress - cached.progress).toFixed(3)),
25139
- senders,
25140
- taolu_count: senders.length,
25141
- taolu_senders: senders
25142
- };
25143
- danmaku.extraStr = src_JSON_0.stringify(extra);
25185
+ mergeObj[key].senders.push(danmaku.senderID);
25186
+ mergeObj[key].count = mergeObj[key].senders.length;
25187
+ mergeObj[key].taolu_count = mergeObj[key].count;
25188
+ mergeObj[key].taolu_senders = mergeObj[key].senders;
25189
+ mergeObj[key].duration = Number.parseFloat((danmaku.progress - cached.progress).toFixed(3));
25144
25190
  cache[key] = danmaku;
25145
- mergeObj[key] = extra.danuni.merge;
25146
- return [
25147
- result,
25148
- cache,
25149
- mergeObj
25150
- ];
25151
- }
25152
- {
25191
+ } else {
25153
25192
  mergeObj[key] = {
25154
25193
  count: 1,
25155
25194
  duration: 0,
@@ -25162,55 +25201,31 @@ and limitations under the License.
25162
25201
  ]
25163
25202
  };
25164
25203
  cache[key] = danmaku;
25165
- const extra = danmaku.extra;
25166
- extra.danuni = extra.danuni || {};
25167
- extra.danuni.merge = mergeObj[key];
25168
- danmaku.extraStr = src_JSON_0.stringify(extra);
25169
25204
  result.push(danmaku);
25170
- return [
25171
- result,
25172
- cache,
25173
- mergeObj
25174
- ];
25175
25205
  }
25176
- }, [
25177
- [],
25178
- {},
25179
- {}
25180
- ]);
25181
- const [result, _cache, mergeObj] = mergeContext;
25182
- result.forEach((danmaku, i)=>{
25183
- const key = [
25184
- 'content',
25185
- 'mode',
25186
- 'platform',
25187
- 'pool'
25188
- ].map((k)=>danmaku[k]).join('|');
25189
- const extra = result[i].extra;
25206
+ }
25207
+ for (const danmaku of result){
25208
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
25190
25209
  const mergeData = mergeObj[key];
25191
- result[i].extraStr = src_JSON_0.stringify({
25192
- ...extra,
25193
- danuni: {
25194
- ...extra.danuni,
25195
- merge: mergeData
25196
- }
25197
- });
25198
- if (mergeData?.count) if (mergeData.count <= 1) {
25199
- const updatedExtra = {
25200
- ...extra
25201
- };
25202
- if (updatedExtra.danuni) {
25203
- delete updatedExtra.danuni.merge;
25204
- if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
25205
- }
25206
- result[i].extraStr = Object.keys(updatedExtra).length > 0 ? src_JSON_0.stringify(updatedExtra) : void 0;
25207
- } else {
25208
- result[i].senderID = 'merge[bot]@dan-any';
25209
- result[i].attr ? result[i].attr.push(dm_gen_DMAttr.Protect) : result[i].attr = [
25210
+ const extra = danmaku.extra;
25211
+ if (mergeData.count > 1) {
25212
+ danmaku.senderID = 'merge[bot]@dan-any';
25213
+ if (danmaku.attr) {
25214
+ if (!danmaku.attr.includes(dm_gen_DMAttr.Protect)) danmaku.attr.push(dm_gen_DMAttr.Protect);
25215
+ } else danmaku.attr = [
25210
25216
  dm_gen_DMAttr.Protect
25211
25217
  ];
25218
+ extra.danuni = extra.danuni || {};
25219
+ extra.danuni.merge = mergeData;
25220
+ danmaku.extraStr = src_JSON_0.stringify(extra);
25221
+ } else {
25222
+ if (extra.danuni?.merge) {
25223
+ delete extra.danuni.merge;
25224
+ if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
25225
+ }
25226
+ danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON_0.stringify(extra) : void 0;
25212
25227
  }
25213
- });
25228
+ }
25214
25229
  return new src_UniPool(result, this.options, this.info);
25215
25230
  }
25216
25231
  minify() {
@@ -25233,7 +25248,7 @@ and limitations under the License.
25233
25248
  pool: this.fromArtplayer(json, json.danuni?.data ?? '', void 0, options),
25234
25249
  fmt: 'artplayer.json'
25235
25250
  };
25236
- if (json.count && json.comments && json.comments.every((d)=>d.m)) return {
25251
+ if (json.count && json.comments && Array.isArray(json.comments) && json.comments.every((d)=>d.m)) return {
25237
25252
  pool: this.fromDDPlay(json, json.danuni?.data ?? '', options),
25238
25253
  fmt: 'ddplay.json'
25239
25254
  };
@@ -25412,7 +25427,7 @@ and limitations under the License.
25412
25427
  source: 'k-v',
25413
25428
  danuni: {
25414
25429
  ...src_DanUniConvertTipTemplate,
25415
- data: this.shared.SOID
25430
+ data: this.getShared('SOID')
25416
25431
  },
25417
25432
  d: this.dans.map((dan)=>dan.toBiliXML(options))
25418
25433
  }
@@ -25551,7 +25566,7 @@ and limitations under the License.
25551
25566
  substyle: {}
25552
25567
  };
25553
25568
  const finalOptions = options ?? defaultOptions;
25554
- const fn = this.shared.SOID;
25569
+ const fn = this.getShared('SOID');
25555
25570
  return generateASS(this, {
25556
25571
  filename: fn,
25557
25572
  title: fn,