@dan-uni/dan-any 0.9.3 → 0.9.5

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/dist/index.js CHANGED
@@ -60,7 +60,7 @@ __webpack_require__.d(dm_gen_namespaceObject, {
60
60
  Pools: ()=>dm_gen_Pools,
61
61
  UniDM: ()=>UniDM
62
62
  });
63
- var package_namespaceObject = JSON.parse('{"u2":"@dan-uni/dan-any","i8":"0.9.3","e8":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
63
+ var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"0.9.5","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
64
64
  const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
65
65
  const DmSegMobileReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 30);
66
66
  const DmWebViewReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 39);
@@ -216,16 +216,16 @@ var dm_gen_ExtraDanUniChapterType = /*#__PURE__*/ function(ExtraDanUniChapterTyp
216
216
  }({});
217
217
  const ExtraDanUniChapterTypeDict = {
218
218
  chs: {
219
- ch: "\u5176\u5B83\u7247\u6BB5",
220
- rev: "\u56DE\u987E",
221
- op: "\u7247\u5934",
222
- int: "\u4E2D\u573A",
223
- ed: "\u7247\u5C3E",
224
- prvw: "\u9884\u544A",
225
- cut: "\u5220\u51CF",
226
- dup: "\u8865\u6863",
227
- biz: "\u5546\u4E1A\u5E7F\u544A",
228
- promo: "\u63A8\u5E7F"
219
+ ch: '其它片段',
220
+ rev: '回顾',
221
+ op: '片头',
222
+ int: '中场',
223
+ ed: '片尾',
224
+ prvw: '预告',
225
+ cut: '删减',
226
+ dup: '补档',
227
+ biz: '商业广告',
228
+ promo: '推广'
229
229
  }
230
230
  };
231
231
  var dm_gen_ExtraDanUniChapterAction = /*#__PURE__*/ function(ExtraDanUniChapterAction) {
@@ -324,22 +324,27 @@ class UniDM {
324
324
  minify() {
325
325
  const def = UniDM.create();
326
326
  const dan = UniDM.create(this);
327
- for(const key in dan){
328
- const k = key;
329
- const v = dan[k];
330
- if ('SOID' !== key) if (v) if (v === def[k]) delete dan[k];
331
- else {
332
- if ('attr' === k && Array.isArray(v) && 0 === v.length) delete dan[k];
333
- if ('extraStr' === k && '{}' === v) delete dan[k];
327
+ const shouldKeep = (key, value)=>{
328
+ if ('SOID' === key) return true;
329
+ if (null == value) return false;
330
+ if (value === def[key]) return false;
331
+ if ('attr' === key && Array.isArray(value) && 0 === value.length) return false;
332
+ if ('extraStr' === key && '{}' === value) return false;
333
+ return true;
334
+ };
335
+ const result = {
336
+ SOID: dan.SOID
337
+ };
338
+ for (const key of Object.keys(dan)){
339
+ const value = dan[key];
340
+ if (shouldKeep(key, value)) {
341
+ if ('SOID' === key) continue;
342
+ Reflect.set(result, key, value);
334
343
  }
335
- else delete dan[k];
336
344
  }
337
- return dm_gen_JSON.parse(dm_gen_JSON.stringify(dan));
345
+ return result;
338
346
  }
339
- downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {
340
- include: [],
341
- exclude: []
342
- }) {
347
+ downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {}) {
343
348
  if (!this.extra) return this;
344
349
  {
345
350
  if (!include) include = [];
@@ -354,16 +359,16 @@ class UniDM {
354
359
  clone.content = `${this.content} x${merge.count}`;
355
360
  } else if (danuni.chapter) {
356
361
  const chapter = danuni.chapter;
357
- if ("cut" === chapter.type) clone.content = `[\u{63D0}\u{793A}]${clone.platform}\u{6E90}${ExtraDanUniChapterTypeDict.chs[chapter.type]}\u{4E86}${chapter.duration}\u{79D2}`;
358
- else if ("dup" === chapter.type) clone.content = `[\u{63D0}\u{793A}(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${clone.platform}\u{6E90}-${chapter.duration}\u{79D2}`;
359
- else clone.content = `[\u{7A7A}\u{964D}(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${hh_mm_ss.fromS(clone.progress + chapter.duration)}`;
362
+ if ("cut" === chapter.type) clone.content = `[提示]${clone.platform}源${ExtraDanUniChapterTypeDict.chs[chapter.type]}了${chapter.duration}秒`;
363
+ else if ("dup" === chapter.type) clone.content = `[提示(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${clone.platform}源-${chapter.duration}秒`;
364
+ else clone.content = `[空降(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${hh_mm_ss.fromS(clone.progress + chapter.duration)}`;
360
365
  }
361
366
  } else if (check('bili') && clone.extra.bili) {
362
367
  const bili = clone.extra.bili;
363
- if (7 === bili.mode && bili.adv) clone.content = `[B\u{7AD9}\u{9AD8}\u{7EA7}\u{5F39}\u{5E55}]${dm_gen_JSON.parse(bili.adv)[4] || ''}`;
368
+ if (7 === bili.mode && bili.adv) clone.content = `[B站高级弹幕]${dm_gen_JSON.parse(bili.adv)[4] || ''}`;
364
369
  else if (bili.command) {
365
370
  const command = bili.command;
366
- clone.content = `[B\u{7AD9}\u{6307}\u{4EE4}\u{5F39}\u{5E55}]${command.content}`;
371
+ clone.content = `[B站指令弹幕]${command.content}`;
367
372
  clone.fontsize = 36;
368
373
  }
369
374
  }
@@ -478,7 +483,7 @@ class UniDM {
478
483
  mode,
479
484
  senderID: senderID.toString(),
480
485
  ctime: this.transCtime(args.ctime, 's'),
481
- weight: args.weight ? args.weight : 3 === pool ? 1 : 0,
486
+ weight: args.weight || (3 === pool ? 1 : 0),
482
487
  pool,
483
488
  attr: DMAttrUtils.fromBin(args.attr, platform_PlatformVideoSource.Bilibili),
484
489
  platform: platform_PlatformVideoSource.Bilibili,
@@ -852,7 +857,7 @@ const src_JSON = json_bigint({
852
857
  });
853
858
  const DanUniConvertTipTemplate = {
854
859
  meassage: 'Converted by DanUni!',
855
- version: `JS/TS ${package_namespaceObject.u2} (v${package_namespaceObject.i8})`
860
+ version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
856
861
  };
857
862
  class UniPool {
858
863
  constructor(dans, options = {}, info = {
@@ -899,7 +904,7 @@ class UniPool {
899
904
  return stats;
900
905
  }
901
906
  getMost(key) {
902
- return this.getStat(key).sort((a, b)=>b.count - a.count)[0];
907
+ return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
903
908
  }
904
909
  get most() {
905
910
  return {
@@ -961,7 +966,7 @@ class UniPool {
961
966
  }
962
967
  merge(lifetime = 0) {
963
968
  if (!this.shared.SOID) {
964
- console.error("\u672C\u529F\u80FD\u4EC5\u652F\u6301\u540C\u5F39\u5E55\u5E93\u5185\u4F7F\u7528\uFF0C\u53EF\u5148 .split('SOID') \u5728\u5206\u522B\u4F7F\u7528");
969
+ console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
965
970
  return this;
966
971
  }
967
972
  if (lifetime <= 0) return this;
@@ -1064,8 +1069,13 @@ class UniPool {
1064
1069
  minify() {
1065
1070
  return this.dans.map((d)=>d.minify());
1066
1071
  }
1067
- static import(file, options) {
1068
- const err = "\u65E0\u6CD5\u8BC6\u522B\u8BE5\u6587\u4EF6\uFF0C\u8BF7\u624B\u52A8\u6307\u5B9A\u683C\u5F0F\uFF01";
1072
+ static import(file, options, mod) {
1073
+ if (!mod) mod = [
1074
+ 'json',
1075
+ 'str',
1076
+ 'bin'
1077
+ ];
1078
+ const err = '无法识别该文件,请手动指定格式!';
1069
1079
  const parseJSON = (json)=>{
1070
1080
  try {
1071
1081
  if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
@@ -1087,63 +1097,68 @@ class UniPool {
1087
1097
  } catch {}
1088
1098
  };
1089
1099
  const parseStr = (file)=>{
1090
- try {
1100
+ if (mod.includes('json')) try {
1091
1101
  if (isJSON(file)) {
1092
1102
  const json = src_JSON.parse(file);
1093
1103
  return parseJSON(json);
1094
1104
  }
1095
1105
  } catch {}
1096
- try {
1097
- const xmlParser = new XMLParser({
1098
- ignoreAttributes: false
1099
- });
1100
- const xml = xmlParser.parse(file);
1101
- if (xml?.i?.d) return {
1102
- pool: this.fromBiliXML(file, options),
1103
- fmt: 'bili.xml'
1104
- };
1105
- } catch {}
1106
- try {
1107
- return {
1108
- pool: this.fromASS(file, options),
1109
- fmt: 'common.ass'
1110
- };
1111
- } catch {}
1106
+ if (mod.includes('str')) {
1107
+ try {
1108
+ const xmlParser = new XMLParser({
1109
+ ignoreAttributes: false
1110
+ });
1111
+ const xml = xmlParser.parse(file);
1112
+ if (xml?.i?.d) return {
1113
+ pool: this.fromBiliXML(file, options),
1114
+ fmt: 'bili.xml'
1115
+ };
1116
+ } catch {}
1117
+ try {
1118
+ return {
1119
+ pool: this.fromASS(file, options),
1120
+ fmt: 'common.ass'
1121
+ };
1122
+ } catch {}
1123
+ }
1112
1124
  };
1113
1125
  let errmesg;
1114
- if (isObject(file)) if (file instanceof ArrayBuffer || file instanceof Uint8Array) {
1115
- try {
1116
- return {
1117
- pool: this.fromPb(file),
1118
- fmt: 'danuni.pb.bin'
1119
- };
1120
- } catch {}
1121
- try {
1122
- return {
1123
- pool: this.fromBiliGrpc(file),
1124
- fmt: 'bili.pb.bin'
1125
- };
1126
- } catch {}
1127
- try {
1128
- return {
1129
- pool: this.fromBiliCommandGrpc(file),
1130
- fmt: 'bili.cmd.pb.bin'
1131
- };
1132
- } catch {}
1133
- try {
1134
- const fileStr = new TextDecoder().decode(file);
1135
- const prStr = parseStr(fileStr);
1136
- if (prStr) return prStr;
1137
- errmesg = `${err}(\u{5B9A}\u{4F4D}: bin->string)`;
1138
- } catch {}
1139
- } else {
1140
- const prJSON = parseJSON(file);
1141
- if (!prJSON) throw new Error(`${err}(\u{5B9A}\u{4F4D}: json)`);
1142
- return prJSON;
1143
- }
1144
- else if (isString(file)) {
1126
+ if (isObject(file)) {
1127
+ if (file instanceof ArrayBuffer || file instanceof Uint8Array) {
1128
+ if (mod.includes('bin')) {
1129
+ try {
1130
+ return {
1131
+ pool: this.fromPb(file),
1132
+ fmt: 'danuni.pb.bin'
1133
+ };
1134
+ } catch {}
1135
+ try {
1136
+ return {
1137
+ pool: this.fromBiliGrpc(file),
1138
+ fmt: 'bili.pb.bin'
1139
+ };
1140
+ } catch {}
1141
+ try {
1142
+ return {
1143
+ pool: this.fromBiliCommandGrpc(file),
1144
+ fmt: 'bili.cmd.pb.bin'
1145
+ };
1146
+ } catch {}
1147
+ }
1148
+ try {
1149
+ const fileStr = new TextDecoder().decode(file);
1150
+ const prStr = parseStr(fileStr);
1151
+ if (prStr) return prStr;
1152
+ errmesg = `${err}(定位: bin->string)`;
1153
+ } catch {}
1154
+ } else if (mod.includes('json')) {
1155
+ const prJSON = parseJSON(file);
1156
+ if (!prJSON) throw new Error(`${err}(定位: json)`);
1157
+ return prJSON;
1158
+ }
1159
+ } else if (isString(file)) {
1145
1160
  const prStr = parseStr(file);
1146
- if (!prStr) throw new Error(`${err}(\u{5B9A}\u{4F4D}: string)`);
1161
+ if (!prStr) throw new Error(`${err}(定位: string)`);
1147
1162
  return prStr;
1148
1163
  }
1149
1164
  throw new Error(errmesg ?? err);
@@ -1241,7 +1256,7 @@ class UniPool {
1241
1256
  };
1242
1257
  if (options?.avoidSenderIDWithAt) {
1243
1258
  const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
1244
- if (!ok) throw new Error("\u5B58\u5728\u5176\u4ED6\u6765\u6E90\u7684senderID\uFF0C\u8BF7\u5173\u95ED\u8BE5\u529F\u80FD\u518D\u8BD5\uFF01");
1259
+ if (!ok) throw new Error('存在其他来源的senderID,请关闭该功能再试!');
1245
1260
  }
1246
1261
  const builder = new XMLBuilder({
1247
1262
  ignoreAttributes: false
@@ -1376,14 +1391,16 @@ class UniPool {
1376
1391
  static fromASS(ass, options) {
1377
1392
  return parseAssRawField(ass, options);
1378
1393
  }
1379
- toASS(canvasCtx, options = {
1380
- substyle: {}
1381
- }) {
1394
+ toASS(canvasCtx, options) {
1395
+ const defaultOptions = {
1396
+ substyle: {}
1397
+ };
1398
+ const finalOptions = options ?? defaultOptions;
1382
1399
  const fn = this.shared.SOID;
1383
1400
  return generateASS(this, {
1384
1401
  filename: fn,
1385
1402
  title: fn,
1386
- ...options
1403
+ ...finalOptions
1387
1404
  }, canvasCtx);
1388
1405
  }
1389
1406
  }
@@ -1495,7 +1512,7 @@ const splitGrids = ({ fontSize, padding, playResY, bottomSpace })=>{
1495
1512
  };
1496
1513
  };
1497
1514
  const measureTextWidthConstructor = (canvasContext)=>{
1498
- const supportTextMeasure = !!canvasContext.measureText("\u4E2D");
1515
+ const supportTextMeasure = !!canvasContext.measureText('中');
1499
1516
  if (supportTextMeasure) return (fontName, fontSize, bold, text)=>{
1500
1517
  canvasContext.font = `${bold ? 'bold' : 'normal'} ${fontSize}px ${fontName}`;
1501
1518
  const textWidth = canvasContext.measureText(text).width;
@@ -1573,7 +1590,7 @@ const initializeLayout = (config, canvasCtx)=>{
1573
1590
  const layoutDanmaku = (inputList, config, canvasCtx)=>{
1574
1591
  const list = [
1575
1592
  ...UniPool2DanmakuLists(inputList)
1576
- ].sort((x, y)=>x.time - y.time);
1593
+ ].toSorted((x, y)=>x.time - y.time);
1577
1594
  const layout = initializeLayout(config, canvasCtx);
1578
1595
  return DanmakuList2UniPool(list.map(layout).filter((danmaku)=>!!danmaku));
1579
1596
  };
@@ -1587,7 +1604,7 @@ const formatTime = (seconds)=>{
1587
1604
  const minorSecond = Math.floor((seconds - integer) * 100);
1588
1605
  return `${hour}:${pad(minute)}:${pad(second)}.${minorSecond}`;
1589
1606
  };
1590
- const encode = (text)=>text.toString().replaceAll('{', "\uFF5B").replaceAll('}', "\uFF5D").replaceAll(/\r|\n/g, '');
1607
+ const encode = (text)=>text.toString().replaceAll('{', '{').replaceAll('}', '}').replaceAll(/\r|\n/g, '');
1591
1608
  const scrollCommand = ({ start, end, top })=>`\\move(${start},${top},${end},${top})`;
1592
1609
  const fixCommand = ({ top, left })=>`\\an8\\pos(${left},${top})`;
1593
1610
  const colorCommand = (color)=>`\\c${formatColor(color)}`;
@@ -1656,7 +1673,7 @@ const calculateDanmakuPosition = (danmaku, config)=>{
1656
1673
  throw new Error(`Unknown danmaku type: ${danmaku.type}`);
1657
1674
  }
1658
1675
  };
1659
- const ass_event = (list, config)=>{
1676
+ const event_event = (list, config)=>{
1660
1677
  const content = [
1661
1678
  '[Events]',
1662
1679
  'Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text',
@@ -1667,11 +1684,11 @@ const ass_event = (list, config)=>{
1667
1684
  ];
1668
1685
  return content.join('\n');
1669
1686
  };
1670
- const ass_info = ({ playResX, playResY }, { filename, title })=>{
1687
+ const info_info = ({ playResX, playResY }, { filename, title })=>{
1671
1688
  const content = [
1672
1689
  '[Script Info]',
1673
1690
  `Title: ${title}`,
1674
- `Original Script: \u{6839}\u{636E} ${filename} \u{7684}\u{5F39}\u{5E55}\u{4FE1}\u{606F}\u{FF0C}\u{7531} ${package_namespaceObject.e8} \u{751F}\u{6210}`,
1691
+ `Original Script: 根据 ${filename} 的弹幕信息,由 ${package_namespaceObject.TB} 生成`,
1675
1692
  'ScriptType: v4.00+',
1676
1693
  'Collisions: Reverse',
1677
1694
  `PlayResX: ${playResX}`,
@@ -1680,17 +1697,17 @@ const ass_info = ({ playResX, playResY }, { filename, title })=>{
1680
1697
  ];
1681
1698
  return content.join('\n');
1682
1699
  };
1683
- const compressTypes = [
1700
+ const compressTypes = new Set([
1684
1701
  'brotli',
1685
1702
  'gzip'
1686
- ];
1687
- const baseTypes = [
1703
+ ]);
1704
+ const baseTypes = new Set([
1688
1705
  'base64',
1689
1706
  'base18384'
1690
- ];
1707
+ ]);
1691
1708
  function fromUint16Array(array) {
1692
1709
  let result = '';
1693
- for (const element of array)result += String.fromCharCode(element);
1710
+ for (const element of array)result += String.fromCodePoint(element);
1694
1711
  return result;
1695
1712
  }
1696
1713
  function raw_raw(list, config, context, compressType = 'brotli', baseType = 'base18384') {
@@ -1713,14 +1730,14 @@ function deRaw(ass) {
1713
1730
  {
1714
1731
  let compressType = lineCompressType.replace(';RawCompressType: ', '').trim();
1715
1732
  let baseType = lineBaseType.replace(';RawBaseType: ', '').trim();
1716
- if (!compressTypes.includes(compressType)) compressType = 'gzip';
1717
- if (!baseTypes.includes(baseType)) baseType = 'base64';
1733
+ if (!compressTypes.has(compressType)) compressType = 'gzip';
1734
+ if (!baseTypes.has(baseType)) baseType = 'base64';
1718
1735
  const text = lineRaw.replace(';Raw: ', '').trim();
1719
- const buffer = 'base64' === baseType ? Buffer.from(text, 'base64') : Buffer.from(decode(Buffer.from(text, 'utf-8').toString('utf-8')));
1736
+ const buffer = 'base64' === baseType ? Buffer.from(text, 'base64') : Buffer.from(decode(Buffer.from(text, 'utf8').toString('utf8')));
1720
1737
  let decompress;
1721
1738
  decompress = 'brotli' === compressType ? brotliDecompressSync(buffer) : gunzipSync(buffer);
1722
1739
  try {
1723
- return JSON.parse(decompress.toString('utf-8'));
1740
+ return JSON.parse(decompress.toString('utf8'));
1724
1741
  } catch {
1725
1742
  return;
1726
1743
  }
@@ -1767,21 +1784,22 @@ const style = ({ fontName, fontSize, color: configColor, outlineColor, backColor
1767
1784
  ];
1768
1785
  return content.join('\n');
1769
1786
  };
1770
- const ass_create = (list, rawList, config, context = {
1787
+ const default_context = {
1771
1788
  filename: 'unknown',
1772
1789
  title: 'unknown'
1773
- }, rawConfig)=>{
1790
+ };
1791
+ const create_ass = (list, rawList, config, context = default_context, rawConfig)=>{
1774
1792
  const Elist = UniPool2DanmakuLists(list);
1775
1793
  const ErawList = UniPool2DanmakuLists(rawList);
1776
1794
  const content = [
1777
- ass_info(config, context),
1795
+ info_info(config, context),
1778
1796
  style(config),
1779
- ass_event(Elist, config)
1797
+ event_event(Elist, config)
1780
1798
  ];
1781
1799
  if (config.includeRaw) content.push(raw_raw(ErawList, config, context, rawConfig?.compressType, rawConfig?.baseType));
1782
1800
  return `${content.join('\n\n')}\n`;
1783
1801
  };
1784
- const ass_gen_config = (overrides = {})=>{
1802
+ const getConfig = (overrides = {})=>{
1785
1803
  const defaults = {
1786
1804
  fontSize: [
1787
1805
  25,
@@ -1817,10 +1835,10 @@ const ass_gen_config = (overrides = {})=>{
1817
1835
  return config;
1818
1836
  };
1819
1837
  function generateASS(danmaku, options, canvasCtx) {
1820
- const config = ass_gen_config(options.substyle);
1838
+ const config = getConfig(options.substyle);
1821
1839
  const mergedList = danmaku.merge(config.mergeIn);
1822
1840
  const layoutList = layoutDanmaku(mergedList, config, canvasCtx);
1823
- const content = ass_create(layoutList, danmaku, config, {
1841
+ const content = create_ass(layoutList, danmaku, config, {
1824
1842
  filename: options?.filename || 'unknown',
1825
1843
  title: options?.title || 'unknown'
1826
1844
  }, options.raw);
@@ -1828,15 +1846,15 @@ function generateASS(danmaku, options, canvasCtx) {
1828
1846
  }
1829
1847
  function parseAssRawField(ass, options) {
1830
1848
  const raw = deRaw(ass);
1831
- if (!raw) return UniPool.create();
1832
- return DanmakuList2UniPool(raw.list, options);
1849
+ if (raw) return DanmakuList2UniPool(raw.list, options);
1850
+ return UniPool.create();
1833
1851
  }
1834
1852
  const src_JSON_0 = json_bigint({
1835
1853
  useNativeBigInt: true
1836
1854
  });
1837
1855
  const src_DanUniConvertTipTemplate = {
1838
1856
  meassage: 'Converted by DanUni!',
1839
- version: `JS/TS ${package_namespaceObject.u2} (v${package_namespaceObject.i8})`
1857
+ version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
1840
1858
  };
1841
1859
  class src_UniPool {
1842
1860
  constructor(dans, options = {}, info = {
@@ -1883,7 +1901,7 @@ class src_UniPool {
1883
1901
  return stats;
1884
1902
  }
1885
1903
  getMost(key) {
1886
- return this.getStat(key).sort((a, b)=>b.count - a.count)[0];
1904
+ return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
1887
1905
  }
1888
1906
  get most() {
1889
1907
  return {
@@ -1945,7 +1963,7 @@ class src_UniPool {
1945
1963
  }
1946
1964
  merge(lifetime = 0) {
1947
1965
  if (!this.shared.SOID) {
1948
- console.error("\u672C\u529F\u80FD\u4EC5\u652F\u6301\u540C\u5F39\u5E55\u5E93\u5185\u4F7F\u7528\uFF0C\u53EF\u5148 .split('SOID') \u5728\u5206\u522B\u4F7F\u7528");
1966
+ console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
1949
1967
  return this;
1950
1968
  }
1951
1969
  if (lifetime <= 0) return this;
@@ -2048,8 +2066,13 @@ class src_UniPool {
2048
2066
  minify() {
2049
2067
  return this.dans.map((d)=>d.minify());
2050
2068
  }
2051
- static import(file, options) {
2052
- const err = "\u65E0\u6CD5\u8BC6\u522B\u8BE5\u6587\u4EF6\uFF0C\u8BF7\u624B\u52A8\u6307\u5B9A\u683C\u5F0F\uFF01";
2069
+ static import(file, options, mod) {
2070
+ if (!mod) mod = [
2071
+ 'json',
2072
+ 'str',
2073
+ 'bin'
2074
+ ];
2075
+ const err = '无法识别该文件,请手动指定格式!';
2053
2076
  const parseJSON = (json)=>{
2054
2077
  try {
2055
2078
  if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
@@ -2071,63 +2094,68 @@ class src_UniPool {
2071
2094
  } catch {}
2072
2095
  };
2073
2096
  const parseStr = (file)=>{
2074
- try {
2097
+ if (mod.includes('json')) try {
2075
2098
  if (isJSON(file)) {
2076
2099
  const json = src_JSON_0.parse(file);
2077
2100
  return parseJSON(json);
2078
2101
  }
2079
2102
  } catch {}
2080
- try {
2081
- const xmlParser = new XMLParser({
2082
- ignoreAttributes: false
2083
- });
2084
- const xml = xmlParser.parse(file);
2085
- if (xml?.i?.d) return {
2086
- pool: this.fromBiliXML(file, options),
2087
- fmt: 'bili.xml'
2088
- };
2089
- } catch {}
2090
- try {
2091
- return {
2092
- pool: this.fromASS(file, options),
2093
- fmt: 'common.ass'
2094
- };
2095
- } catch {}
2103
+ if (mod.includes('str')) {
2104
+ try {
2105
+ const xmlParser = new XMLParser({
2106
+ ignoreAttributes: false
2107
+ });
2108
+ const xml = xmlParser.parse(file);
2109
+ if (xml?.i?.d) return {
2110
+ pool: this.fromBiliXML(file, options),
2111
+ fmt: 'bili.xml'
2112
+ };
2113
+ } catch {}
2114
+ try {
2115
+ return {
2116
+ pool: this.fromASS(file, options),
2117
+ fmt: 'common.ass'
2118
+ };
2119
+ } catch {}
2120
+ }
2096
2121
  };
2097
2122
  let errmesg;
2098
- if (isObject(file)) if (file instanceof ArrayBuffer || file instanceof Uint8Array) {
2099
- try {
2100
- return {
2101
- pool: this.fromPb(file),
2102
- fmt: 'danuni.pb.bin'
2103
- };
2104
- } catch {}
2105
- try {
2106
- return {
2107
- pool: this.fromBiliGrpc(file),
2108
- fmt: 'bili.pb.bin'
2109
- };
2110
- } catch {}
2111
- try {
2112
- return {
2113
- pool: this.fromBiliCommandGrpc(file),
2114
- fmt: 'bili.cmd.pb.bin'
2115
- };
2116
- } catch {}
2117
- try {
2118
- const fileStr = new TextDecoder().decode(file);
2119
- const prStr = parseStr(fileStr);
2120
- if (prStr) return prStr;
2121
- errmesg = `${err}(\u{5B9A}\u{4F4D}: bin->string)`;
2122
- } catch {}
2123
- } else {
2124
- const prJSON = parseJSON(file);
2125
- if (!prJSON) throw new Error(`${err}(\u{5B9A}\u{4F4D}: json)`);
2126
- return prJSON;
2127
- }
2128
- else if (isString(file)) {
2123
+ if (isObject(file)) {
2124
+ if (file instanceof ArrayBuffer || file instanceof Uint8Array) {
2125
+ if (mod.includes('bin')) {
2126
+ try {
2127
+ return {
2128
+ pool: this.fromPb(file),
2129
+ fmt: 'danuni.pb.bin'
2130
+ };
2131
+ } catch {}
2132
+ try {
2133
+ return {
2134
+ pool: this.fromBiliGrpc(file),
2135
+ fmt: 'bili.pb.bin'
2136
+ };
2137
+ } catch {}
2138
+ try {
2139
+ return {
2140
+ pool: this.fromBiliCommandGrpc(file),
2141
+ fmt: 'bili.cmd.pb.bin'
2142
+ };
2143
+ } catch {}
2144
+ }
2145
+ try {
2146
+ const fileStr = new TextDecoder().decode(file);
2147
+ const prStr = parseStr(fileStr);
2148
+ if (prStr) return prStr;
2149
+ errmesg = `${err}(定位: bin->string)`;
2150
+ } catch {}
2151
+ } else if (mod.includes('json')) {
2152
+ const prJSON = parseJSON(file);
2153
+ if (!prJSON) throw new Error(`${err}(定位: json)`);
2154
+ return prJSON;
2155
+ }
2156
+ } else if (isString(file)) {
2129
2157
  const prStr = parseStr(file);
2130
- if (!prStr) throw new Error(`${err}(\u{5B9A}\u{4F4D}: string)`);
2158
+ if (!prStr) throw new Error(`${err}(定位: string)`);
2131
2159
  return prStr;
2132
2160
  }
2133
2161
  throw new Error(errmesg ?? err);
@@ -2225,7 +2253,7 @@ class src_UniPool {
2225
2253
  };
2226
2254
  if (options?.avoidSenderIDWithAt) {
2227
2255
  const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
2228
- if (!ok) throw new Error("\u5B58\u5728\u5176\u4ED6\u6765\u6E90\u7684senderID\uFF0C\u8BF7\u5173\u95ED\u8BE5\u529F\u80FD\u518D\u8BD5\uFF01");
2256
+ if (!ok) throw new Error('存在其他来源的senderID,请关闭该功能再试!');
2229
2257
  }
2230
2258
  const builder = new XMLBuilder({
2231
2259
  ignoreAttributes: false
@@ -2360,14 +2388,16 @@ class src_UniPool {
2360
2388
  static fromASS(ass, options) {
2361
2389
  return parseAssRawField(ass, options);
2362
2390
  }
2363
- toASS(canvasCtx, options = {
2364
- substyle: {}
2365
- }) {
2391
+ toASS(canvasCtx, options) {
2392
+ const defaultOptions = {
2393
+ substyle: {}
2394
+ };
2395
+ const finalOptions = options ?? defaultOptions;
2366
2396
  const fn = this.shared.SOID;
2367
2397
  return generateASS(this, {
2368
2398
  filename: fn,
2369
2399
  title: fn,
2370
- ...options
2400
+ ...finalOptions
2371
2401
  }, canvasCtx);
2372
2402
  }
2373
2403
  }